{"version":3,"file":"js/chunk-vendors.1e245944.js","mappings":"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EAAKxI,QAAQmT,EAAS,CACpB1/P,UAAW,gBAEb,CACEA,UAAW,cACXovP,MAAO,SAETU,EACAiF,EAAKhF,uBAIHO,EAAa,CACjBtwP,UAAW,QACXovP,MAAO0T,EAASG,GAAgBlO,EAAKpG,SACrCU,UAAW,GAGPkU,EAAiBT,EAASG,GAAgBlO,EAAKpG,SAAW,UAE1D6U,EAAmB,CACvB,OACA,QACA,OACA,SACA,OACA,OACA,MACA,OACA,MACA,OACA,QACA,OACA,UACA,QACA,OACA,QACA,WACA,QACA,OACA,QACA,QACA,SACA,MACA,MACA,OACA,SACA,WACA,WACA,gBACA,SACA,SACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WACA,UACA,UACA,OACA,QACA,QACA,MACA,SACA,UACA,SACA,SACA,SACA,SACA,OACA,MACA,SACA,UACA,OACA,QACA,OACA,MACA,WACA,UACA,OACA,SACA,SACA,SACA,SACA,SACA,UACA,SACA,UACA,UACA,UACA,UACA,UACA,SACA,SACA,OACA,MACA,gBACA,qBACA,qBACA,iBACA,YACA,QACA,aACA,QACA,YACA,MACA,OACA,WACA,UACA,WACA,OACA,mBACA,aACA,UACA,YACA,MACA,SACA,UACA,MACA,OACA,OACA,OACA,QACA,SACA,SACA,eACA,gBACA,iBAGIC,EAAe,CACnB7R,QAAS,y0BAYToO,SAAU,4BACV0D,iBAAkBF,EAClBzD,QAAS,2BAGL4D,EAAoB,CACxB3jQ,UAAW,oBACXqvP,UAAW,EACX2B,SAAUyS,EACVrU,MAAO/3O,EACL,KACA,eACA,SACA,UACA,YACA09O,EAAKpG,SACLkU,EAAU,WAGRe,EAAsB,CAC1BD,EACAL,EACAF,EACAtT,EACAiF,EAAKhF,qBACL0P,EACAC,GAIImE,EAAqB,CAIzBlP,SAAU,CACR,CACEvF,MAAO,IACPr9O,IAAK,KAEP,CACEq9O,MAAO,KACPr9O,IAAK,MAEP,CACE++O,cAAe,wBACf/+O,IAAK,MAGTi/O,SAAUyS,EACV79L,SAAUg+L,EAAoBvsP,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T,CACEA,MAAO,iBAIPqT,EAAW,8FACX5qJ,EAAS,CACb73G,UAAW,SACX4lE,SAAU,CAACmvL,EAAKxF,kBAChBoF,SAAU,CACR,CACEvF,MAAO,cACPr9O,IAAK,MACLs9O,UAAW,IAEb,CACED,MAAO,cACPr9O,IAAK,MACLs9O,UAAW,IAEb,CACED,MAAO,YACPr9O,IAAK,IACLs9O,UAAW,IAEb,CACED,MAAO,YACPr9O,IAAK,IACLs9O,UAAW,IAEb,CACED,MAAO,UACPr9O,IAAK,KAEP,CACEq9O,MAAO,UACPr9O,IAAK,KAEPgjP,EAAKvF,iBACLuF,EAAKrF,oBAGT,MAAO,CACLzkP,KAAM,MACN+lP,SAAU,CACRY,QAAS6Q,GAEX78L,SAAU,CACRy/L,EACAxtJ,EACAk9I,EAAK1E,YACL0E,EAAK/E,kBACL+E,EAAK9E,cAKXz/E,EAAOC,QAAU+0F,G,kBC/DjB,SAASC,EAAO1Q,GACd,MAAM2Q,EAAoB,CACxB,UACA,UACA,OACA,OACA,YACA,OACA,SACA,OACA,OACA,MACA,QACA,OACA,OACA,QACA,MACA,cACA,OAGIC,EAAmB,CACvB,UACA,QACA,OACA,QAGIC,EAAkB,CACtB,WACA,KACA,MACA,MACA,QACA,aACA,KACA,QACA,OACA,QACA,gBACA,QACA,SACA,SACA,SACA,QACA,WACA,QACA,eACA,WACA,cACA,OACA,UACA,MACA,KACA,OACA,OACA,eACA,SACA,UACA,QACA,UACA,YACA,YACA,aACA,cACA,eACA,gBACA,QACA,MACA,gBACA,kBACA,oBACA,mBACA,YACA,OACA,eACA,QACA,OACA,KACA,aACA,KACA,QACA,mBACA,YACA,WACA,KACA,OACA,OACA,QACA,QACA,MACA,YACA,MACA,OACA,UACA,YACA,iBACA,QACA,QACA,kBACA,QACA,UACA,YACA,SACA,WACA,iBACA,QACA,SACA,UACA,SACA,SACA,UACA,SACA,MACA,QACA,SACA,OACA,QACA,MACA,WACA,WACA,YACA,YACA,mBACA,QACA,iBACA,OACA,QACA,SAGInD,EAAW,CACf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,MAAO,wFAGXC,UAAW,GAGPiU,EAAe,CACnBtjQ,UAAW,OACXovP,MAAO,eACPr9O,IAAK,IACLi/O,SAAU,CACR,eACE,0FAGJprL,SAAU,CACR,CACEwpL,MAAO,OACPC,UAAW,GAEb0F,EAAKxI,QAAQmT,EAAS,CACpB1/P,UAAW,gBAEb,CACEA,UAAW,cACXovP,MAAO,SAETU,EACAiF,EAAKhF,uBAIHO,EAAa,CACjBtwP,UAAW,QACXovP,MAAO0T,EAASG,GAAgBlO,EAAKpG,SACrCU,UAAW,GAGPkU,EAAiBT,EAASG,GAAgBlO,EAAKpG,SAAW,UAE1D6U,EAAmB,CACvB,OACA,QACA,OACA,SACA,OACA,OACA,MACA,OACA,MACA,OACA,QACA,OACA,UACA,QACA,OACA,QACA,WACA,QACA,OACA,QACA,QACA,SACA,MACA,MACA,OACA,SACA,WACA,WACA,gBACA,SACA,SACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WACA,UACA,UACA,OACA,QACA,QACA,MACA,SACA,UACA,SACA,SACA,SACA,SACA,OACA,MACA,SACA,UACA,OACA,QACA,OACA,MACA,WACA,UACA,OACA,SACA,SACA,SACA,SACA,SACA,UACA,SACA,UACA,UACA,UACA,UACA,UACA,SACA,SACA,OACA,MACA,gBACA,qBACA,qBACA,iBACA,YACA,QACA,aACA,QACA,YACA,MACA,OACA,WACA,UACA,WACA,OACA,mBACA,aACA,UACA,YACA,MACA,SACA,UACA,MACA,OACA,OACA,OACA,QACA,SACA,SACA,eACA,gBACA,iBAGIC,EAAe,CACnB7R,QAAS,y0BAYToO,SAAU,4BACV0D,iBAAkBF,EAClBzD,QAAS,2BAGL4D,EAAoB,CACxB3jQ,UAAW,oBACXqvP,UAAW,EACX2B,SAAUyS,EACVrU,MAAO/3O,EACL,KACA,eACA,SACA,UACA,YACA09O,EAAKpG,SACLkU,EAAU,WAGRe,EAAsB,CAC1BD,EACAL,EACAF,EACAtT,EACAiF,EAAKhF,qBACL0P,EACAC,GAIImE,EAAqB,CAI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F,OAAQ6T,GAEJC,EAAmB,CACvBF,EACAvwJ,EACAowJ,EACAC,EACAtY,EACAuY,EACAH,EACAlwJ,EACA0nJ,EACAK,GAGI/Z,EAAS,CACbgL,cAAegX,EACf9T,QAAS6T,EACT91P,IAAK,gCACL6zD,SAAU,CACR,CACE5lE,UAAW,QACXovP,MAAOyY,EACPxY,UAAW,EACXqK,YAAY,EAEZb,YAAY,IAEdxhP,OAAOixP,IAaX,OAVAF,EAAKxiM,SAAW,CACdmvL,EAAKnF,QAAQ,UAAW,IACxB9J,EACA/xD,EACAs0E,GAEFA,EAAKziM,SAAW0iM,EAChBN,EAAWpiM,SAAW0iM,EACtBJ,EAAStiM,SAAW,CAAEoiM,GAEf,CACL/8P,KAAM,UACN0rP,QAAS,CAAE,OACXlH,QAAS,KACT7pL,SAAU,CACRwiM,EACAvwJ,EACAowJ,EACAC,EACAtY,EACAuY,EACAH,EACAlwJ,EACA0nJ,IAKNhvF,EAAOC,QAAUk3F,G,kBCrJjB,SAASY,EAAMxT,GACb,MAAO,CACL9pP,KAAM,QACN0rP,QAAS,CAAC,YACVxE,kBAAkB,EAClBnB,SAAU,CACRY,QAEE,woEAkCJhsL,SAAU,CACR,CACE5lE,UAAW,WACXovP,MAAO,OACPr9O,IAAK,MAEPgjP,EAAK/E,kBACL+E,EAAKrF,kBACLqF,EAAK9E,cAKXz/E,EAAOC,QAAU83F,G,iBC/DjB,MAAM9F,EAAW,CACf,KACA,KACA,KACA,KACA,MACA,QACA,UACA,MACA,MACA,WACA,KACA,SACA,OACA,OACA,QACA,QACA,aACA,OACA,QACA,OACA,UACA,MACA,SACA,WACA,SACA,SACA,MACA,QACA,QACA,QAIA,WACA,QACA,QACA,SACA,SACA,OACA,SACA,WAEIqE,EAAW,CACf,OACA,QACA,OACA,YACA,MACA,YAGIh2C,EAAQ,CACZ,OACA,WACA,SACA,OACA,OACA,SACA,SACA,SACA,WACA,UACA,QACA,SACA,MACA,MACA,UACA,UACA,QACA,UACA,OACA,UACA,eACA,aACA,aACA,YACA,cACA,cACA,eACA,QACA,aACA,oBACA,cACA,gBACA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IP4T,EAAmB,qBACnBC,EAAe,kBACfC,EAAuB,WACvBC,EAAmB,IACvBH,EAAmB,IACnBF,EAASG,GACT,gBAAkBH,EAASI,GAC7B,IACME,EAAsB,CAC1BpjQ,UAAW,UACXovP,MAAO,sBAKHiU,EAAoB,uDACpB3D,EAAU,CACd1/P,UAAW,SACX20P,SAAU,CACR,CACEvF,MAAO,cACPr9O,IAAK,IACL09O,QAAS,MACT7pL,SAAU,CAAEmvL,EAAKxF,mBAEnB,CACEH,MAAO,eAAkBiU,EAAoB,MAC7CtxP,IAAK,IACL09O,QAAS,KAEXsF,EAAKtE,kBAAkB,CACrBrB,MAAO,mCACPr9O,IAAK,0BAKL0tP,EAAU,CACdz/P,UAAW,SACX20P,SAAU,CACR,CACEvF,MAAO,iBAET,CACEA,MAAO,yFAET,CACEA,MAAO,wFAGXC,UAAW,GAGPiU,EAAe,CACnBtjQ,UAAW,OACXovP,MAAO,eACPr9O,IAAK,IACLi/O,SAAU,CACR,eACE,0FAGJprL,SAAU,CACR,CACEwpL,MAAO,OACPC,UAAW,GAEb0F,EAAKxI,QAAQmT,EAAS,CACpB1/P,UAAW,gBAEb,CACEA,UAAW,cACXovP,MAAO,SAETU,EACAiF,EAAKhF,uBAIHO,EAAa,CACjBtwP,UAAW,QACXovP,MAAO0T,EAASG,GAAgBlO,EAAKpG,SACrCU,UAAW,GAGPkU,EAAiBT,EAASG,GAAgBlO,EAAKpG,SAAW,UAE1D6U,EAAmB,CACvB,OACA,QACA,OACA,SACA,OACA,OACA,MACA,OACA,MACA,OACA,QACA,OACA,UACA,QACA,OACA,QACA,WACA,QACA,OACA,QACA,QACA,SACA,MACA,MACA,OACA,SACA,WACA,WACA,gBACA,SACA,SACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WACA,UACA,UACA,OACA,QACA,QACA,MACA,SACA,UACA,SACA,SACA,SACA,SACA,OACA,MACA,SACA,UACA,OACA,QACA,OACA,MACA,WACA,UACA,OACA,SACA,SACA,SACA,SACA,SACA,UACA,SACA,UACA,UACA,UACA,UACA,UACA,SACA,SACA,OACA,MACA,gBACA,qBACA,qBACA,iBACA,YACA,QACA,aACA,QACA,YACA,MACA,OACA,WACA,UACA,WACA,OACA,mBACA,aACA,UACA,YACA,MACA,SACA,UACA,MACA,OACA,OACA,OACA,QACA,SACA,SACA,eACA,gBACA,iBAGIC,EAAe,CACnB7R,QAAS,y0BAYToO,SAAU,4BACV0D,iBAAkBF,EAClBzD,QAAS,2BAGL4D,EAAoB,CACxB3jQ,UAAW,oBACXqvP,UAAW,EACX2B,SAAUyS,EACVrU,MAAO/3O,EACL,KACA,eACA,SACA,UACA,YACA09O,EAAKpG,SACLkU,EAAU,WAGRe,EAAsB,CAC1BD,EACAL,EACAF,EACAtT,EACAiF,EAAKhF,qBACL0P,EACAC,GAIImE,EAAqB,CAIzBlP,SAAU,CACR,CACEvF,MAAO,IACPr9O,IAAK,KAEP,CACEq9O,MAAO,KACPr9O,IAAK,MAEP,CACE++O,cAAe,wBACf/+O,IAAK,MAGTi/O,SAAUyS,EACV79L,SAAUg+L,EAAoBvsP,OAAO,CACnC,CACE+3O,MAAO,KACPr9O,IAAK,KACLi/O,SAAUyS,EACV79L,SAAUg+L,EAAoBvsP,OAAO,CAAE,SACvCg4O,UAAW,KAGfA,UAAW,GAGPyU,EAAuB,CAC3B9jQ,UAAW,WACXovP,MAAO,IAAM+T,EAAmB,eAAiBI,EACjDlK,aAAa,EACbtnP,IAAK,QACL2nP,YAAY,EACZ1I,SAAUyS,EACVhU,QAAS,iBACT7pL,SAAU,CACR,CACEwpL,MAAO4T,EACPhS,SAAUyS,EACVpU,UAAW,GAEb,CACED,MAAOmU,EACPlK,aAAa,EACbzzL,SAAU,CAAE0qL,GACZjB,UAAW,GAIb,CACED,MAAO,KACPC,UAAW,GAGb,CACED,MAAO,IACPgF,gBAAgB,EAChBxuL,SAAU,CACR85L,EACAD,IAGJ,CACEz/P,UAAW,SACXovP,MAAO,KACPr9O,IAAK,KACLi/O,SAAUyS,EACVpU,UAAW,EACXzpL,SAAU,CACRkqL,EACAiF,EAAKhF,qBACL2P,EACAD,EACA2D,EAEA,CACEhU,MAAO,KACPr9O,IAA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,WACA,YACA,WACA,QACA,SACA,WACA,SACA,UACA,MACA,SACA,WAEIlF,EAAmB,CACvB,UACA,QACA,OACA,QAEIC,EAAkB,CACtB,WACA,KACA,OACA,QACA,OACA,QACA,QACA,WACA,KACA,OACA,QACA,WACA,SACA,UACA,QACA,MACA,UACA,OACA,KACA,WACA,KACA,YACA,WACA,KACA,OACA,YACA,MACA,WACA,MACA,WACA,SACA,UACA,YACA,SACA,WACA,SACA,MACA,SACA,SACA,SACA,aACA,SACA,SACA,SACA,OACA,QACA,MACA,SACA,YACA,SACA,QACA,UACA,OACA,WACA,SAEIkF,EAAsB,CAC1B,MACA,QACA,MACA,YACA,QACA,QACA,KACA,aACA,SACA,OACA,MACA,SACA,QACA,OACA,OACA,OACA,MACA,SACA,MACA,UACA,KACA,KACA,UACA,UACA,SACA,SACA,MACA,YACA,UACA,MACA,OACA,QACA,OACA,SAGIrI,EAAW,CACf7Q,QAASgU,EAAgBvuP,OAAOyzP,GAChC9K,SAAU0F,EACV3F,QAAS4F,GAELrV,EAAayE,EAAKxI,QAAQwI,EAAKzE,WAAY,CAC/ClB,MAAO,uBAEHqQ,EAAU,CACdz/P,UAAW,SACX20P,SAAU,CACR,CACEvF,MAAO,iBAET,CACEA,MAAO,mEAET,CACEA,MAAO,wFAGXC,UAAW,GAEP0b,EAAkB,CACtB/qQ,UAAW,SACXovP,MAAO,KACPr9O,IAAK,IACL6zD,SAAU,CACR,CACEwpL,MAAO,QAIP4b,EAAwBjW,EAAKxI,QAAQwe,EAAiB,CAC1Dtb,QAAS,OAELiT,EAAQ,CACZ1iQ,UAAW,QACXovP,MAAO,KACPr9O,IAAK,KACLi/O,SAAUyR,GAENwI,EAAclW,EAAKxI,QAAQmW,EAAO,CACtCjT,QAAS,OAELyb,EAAsB,CAC1BlrQ,UAAW,SACXovP,MAAO,MACPr9O,IAAK,IACL09O,QAAS,KACT7pL,SAAU,CACR,CACEwpL,MAAO,QAET,CACEA,MAAO,QAET2F,EAAKxF,iBACL0b,IAGEE,EAA+B,CACnCnrQ,UAAW,SACXovP,MAA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gBACXovP,MAAO,KACPr9O,IAAK,KACL09O,QAAS,IACT7pL,SAAU,CACRmvL,EAAKvF,iBACLuF,EAAKrF,sBAMPkc,EAAO,CACX,IACA,OACA,UACA,UACA,QACA,QACA,IACA,aACA,OACA,SACA,SACA,UACA,OACA,OACA,KACA,MACA,UACA,MACA,MACA,KACA,KACA,KACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,SACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,OACA,OACA,MACA,SACA,KACA,IACA,IACA,QACA,OACA,UACA,OACA,SACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,KACA,KACA,MACA,SAGIC,EAAiB,CACrB,YACA,cACA,eACA,QACA,cACA,cACA,sBACA,gBACA,eACA,eACA,gBACA,OACA,SACA,QACA,kBACA,aACA,cACA,iBACA,kBACA,UACA,uBACA,mBACA,yBACA,+BACA,aACA,OACA,YACA,SACA,QAEA,YACA,YACA,aACA,cAIIC,EAAiB,CACrB,SACA,WACA,QACA,UACA,UACA,UACA,UACA,MACA,WACA,OACA,QACA,UACA,QACA,cACA,gBACA,aACA,SACA,QACA,gBACA,eACA,MACA,OACA,eACA,QACA,gBACA,WACA,UACA,KACA,OACA,aACA,eACA,OACA,OACA,aACA,MACA,YACA,UACA,iBACA,eACA,mBACA,cACA,aACA,eACA,WACA,eACA,OACA,oBACA,YACA,aACA,WACA,QACA,OACA,QACA,SACA,gBACA,eACA,QACA,UACA,SAIIC,EAAkB,CACtB,QACA,WACA,SACA,MACA,aACA,eACA,aACA,gBACA,SACA,OACA,cACA,YACA,UACA,kBAGIC,EAAa,CACjB,gBACA,cACA,aACA,YACA,kBACA,sBACA,qBACA,sBACA,4BACA,iBACA,uBACA,4BACA,OACA,sBACA,aACA,wBACA,kBACA,mBACA,mBACA,oBACA,sBACA,oBACA,kBACA,SACA,gBACA,sBACA,4BACA,6BACA,sBACA,sBACA,kBACA,eACA,eACA,sBACA,sBACA,qBACA,sBACA,qBACA,cACA,oBACA,oBACA,oBACA,gBACA,eACA,qBACA,qBACA,qBACA,iBACA,eACA,aACA,mBACA,yBACA,0BACA,mBACA,mBACA,eACA,SACA,uBACA,aACA,aACA,cACA,eACA,eACA,eACA,QACA,OACA,YACA,QACA,eACA,cACA,aACA,cACA,oBACA,oBACA,oBACA,cACA,eACA,UACA,UACA,oBACA,gBACA,SACA,YACA,UACA,cACA,SACA,OACA,aACA,iBACA,YACA,YACA,cACA,YACA,QACA,OACA,eACA,cACA,wBACA,eACA,yBACA,YACA,mBACA,iBACA,eACA,aACA,eACA,yBACA,0BACA,cACA,SACA,UACA,OACA,oBACA,kBACA,mBACA,WACA,UACA,UACA,kBACA,OACA,iBACA,cACA,aACA,mBACA,sBACA,kBACA,SACA,gBACA,cACA,eACA,aACA,QACA,OACA,aACA,YACA,aACA,YACA,WACA,YACA,WACA,YACA,SACA,OACA,SACA,aACA,kBACA,UACA,QACA,UACA,UACA,gBACA,iBACA,gBACA,gBACA,WACA,gBACA,aACA,aACA,UACA,iBACA,eACA,gBACA,cACA,mBACA,oBACA,oBACA,cACA,qBACA,iBACA,WACA,SACA,SACA,QACA,MACA,WACA,eACA,aACA,kBACA,kBACA,wBACA,uBACA,wBACA,cACA,gBACA,iBACA,cACA,iBACA,0BACA,MACA,YACA,mBACA,kBACA,aACA,mBACA,sBACA,sBACA,6BACA,eACA,iBACA,aACA,cACA,SACA,QACA,aACA,eACA,YACA,WAGA3vP,UAWF,SAAS5T,EAAOulP,GACd,OAAKA,EACa,kBAAPA,EAAwBA,EAE5BA,EAAGvlP,OAHM,KAUlB,SAASo6P,EAAU7U,GACjB,OAAO32O,EAAO,MAAO22O,EAAI,KAO3B,SAAS32O,KAAUizF,GACjB,MAAM2jJ,EAAS3jJ,EAAKrpG,KAAK4M,GAAMpF,EAAOoF,KAAIvH,KAAK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UACA,MACA,MACA,WACA,KACA,SACA,OACA,OACA,QACA,QACA,aACA,OACA,QACA,OACA,UACA,MACA,SACA,WACA,SACA,SACA,MACA,QACA,QACA,QAIA,WACA,QACA,QACA,SACA,SACA,OACA,SACA,WAEIqE,EAAW,CACf,OACA,QACA,OACA,YACA,MACA,YAGIh2C,EAAQ,CACZ,OACA,WACA,SACA,OACA,OACA,SACA,SACA,SACA,WACA,UACA,QACA,SACA,MACA,MACA,UACA,UACA,QACA,UACA,OACA,UACA,eACA,aACA,aACA,YACA,cACA,cACA,eACA,QACA,aACA,oBACA,cACA,gBACA,iBACA,UAGI03C,EAAc,CAClB,YACA,gBACA,aACA,iBACA,cACA,YACA,YAGIC,EAAmB,CACvB,cACA,aACA,gBACA,eAEA,UACA,UAEA,OACA,WACA,QACA,aACA,WACA,YACA,qBACA,YACA,qBACA,SACA,YAGIC,EAAqB,CACzB,YACA,OACA,QACA,UACA,SACA,WACA,eACA,SACA,UAGIC,EAAY,GAAGtxP,OACnBoxP,EACAC,EACA53C,EACA03C,GAYF,SAAS//P,EAAOulP,GACd,OAAKA,EACa,kBAAPA,EAAwBA,EAE5BA,EAAGvlP,OAHM,KAUlB,SAASo6P,EAAU7U,GACjB,OAAO32O,EAAO,MAAO22O,EAAI,KAO3B,SAAS32O,KAAUizF,GACjB,MAAM2jJ,EAAS3jJ,EAAKrpG,KAAK4M,GAAMpF,EAAOoF,KAAIvH,KAAK,IAC/C,OAAO2nP,EAWT,SAAS8xB,EAAWhrB,GAQlB,MAAMirB,EAAgB,CAACx5Q,GAASquD,YAC9B,MAAMp6B,EAAM,KAAOj0B,EAAM,GAAG0sC,MAAM,GAC5B0pC,EAAMp2E,EAAM0sF,MAAM7rF,QAAQozB,EAAKo6B,GACrC,OAAgB,IAAT+nB,GAGHqjM,EAAatxB,EACbuxB,EAAW,CACf9wB,MAAO,KACPr9O,IAAK,OAEDouQ,EAAU,CACd/wB,MAAO,sBACPr9O,IAAK,4BAKLquQ,kBAAmB,CAAC55Q,EAAOknC,KACzB,MAAM2yO,EAAkB75Q,EAAM,GAAGhE,O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Q,SAASzoH,GAChC8gK,EAAMvvN,KAAKyuD,MAEN,CACL/kD,KAAM,OACN26D,SAAUkrJ,EACVkgC,SAAU8V,EACVrX,QAAS,OAIbj/E,EAAOC,QAAUxuG,G,kBCtCjB,SAASo/M,EAAUtsB,GACjB,MAAO,CACL9pP,KAAM,aACN26D,SAAU,CACR,CACE5lE,UAAW,OACXovP,MAAO,UACPC,UAAW,GACXmF,OAAQ,CAGNziP,IAAK,cACLwmP,YAAa,SAOjB5B,QAAS,CAAC,gBAMhBnmF,EAAOC,QAAU4wG,G,kBCzCjB,SAASC,EAAMvsB,GAOb,IAAIwsB,EAAmB,uDAYnBC,EAAe,CACjB,aACA,QACA,QACA,QACA,QACA,QACA,WACA,KACA,OACA,SACA,MACA,SACA,QACA,UACA,MACA,WACA,SACA,KACA,SACA,KACA,MACA,MACA,QACA,QACA,SACA,QACA,SACA,OACA,MACA,QACA,QACA,SAkBEC,EAAe,CACjB,OACA,SACA,aACA,aACA,MACA,MACA,QACA,QACA,QACA,gBACA,YACA,YACA,MACA,QACA,QACA,QACA,eACA,YACA,YACA,gBACA,eACA,uBACA,qBACA,cACA,UACA,YACA,UACA,QACA,KACA,UACA,UACA,KACA,SACA,QACA,SACA,OACA,QACA,IACA,KAkBEC,EAAgB,CAClB,gBACA,kBACA,eACA,eACA,kBACA,gBACA,qBACA,iBACA,gBACA,cACA,iBACA,oBACA,mBACA,iBACA,MACA,gBACA,QACA,iBACA,WACA,SACA,WACA,YACA,SACA,YACA,OACA,cACA,oBACA,iBACA,mBACA,QACA,UACA,SACA,UACA,OACA,OACA,YACA,QACA,YACA,MACA,QACA,UACA,aACA,aACA,aACA,qBACA,YACA,aACA,SACA,UACA,WACA,UACA,SACA,QACA,aACA,SACA,aACA,UACA,QACA,WACA,WACA,WACA,aACA,cACA,gBACA,cACA,OACA,oBACA,OACA,cACA,cACA,WACA,OACA,iBACA,YACA,qBACA,OACA,UACA,UACA,UACA,WACA,YACA,OACA,KACA,WACA,YACA,WACA,SACA,iBACA,cACA,aACA,eACA,YACA,MACA,SACA,QACA,QACA,QACA,OACA,UACA,qBACA,wBACA,aACA,WACA,WACA,iBACA,gBACA,YACA,OACA,SACA,SACA,cACA,UACA,mBACA,SACA,SACA,aACA,UACA,SACA,eACA,mBACA,gBACA,OACA,mBACA,oBACA,OACA,yBACA,MACA,YACA,WACA,QACA,sBACA,OACA,gBACA,MACA,QACA,aACA,eACA,oBACA,MACA,SACA,OACA,qBACA,YACA,eACA,eACA,gBACA,kBACA,gBACA,SACA,mBACA,WACA,YACA,qBACA,SACA,cACA,OACA,sBACA,OACA,cACA,QACA,QACA,OACA,YACA,UACA,OACA,UACA,SACA,SACA,SACA,QACA,mBACA,oBACA,gBACA,gBACA,QACA,WACA,YACA,WACA,MACA,SACA,aACA,WACA,SACA,gBACA,cACA,WAGEjf,EAAW,CACb1O,SAAUwtB,EACV3vB,QAAS4vB,EACTzhB,QAAS0hB,EACTzhB,SAAU0hB,GAIRjiC,EAAU,CACZuR,SAAUyR,EAAUhT,QAAS,OAI3B33I,EAAS,CACX93G,UAAW,SAQXovP,MAAO,qIACPC,UAAW,GAGToiB,EAAO,CACTzxQ,UAAW,SACXovP,MAAO,8BAGLuyB,EAAgB,CAClB3hR,UAAW,QACXovP,MAAO,OAAQr9O,IAAK,KACpBi/O,SAAUyR,GAGRmf,EAAwB,CAC1B5hR,UAAW,WACXovP,MAAO,MAAQmyB,GAIb1pK,EAAS,CACX73G,UAAW,SACX4lE,SAAU,CAACmvL,EAAKxF,iBAAkBoyB,EAAeC,GACjDjtB,SAAU,CACR,CAAEvF,MAAO,SAAUr9O,IAAK,SAAUs9O,UAAW,IAC7C,CAAED,MAAO,OAAQr9O,IAAK,UAItB8vQ,EAAU,CACZ7hR,UAAW,SACX4lE,SAAU,CAACmvL,EAAKxF,iBAAkBoyB,EAAeC,GACjDxyB,MAAO,IAAKr9O,IAAK,KAGf+vQ,EAAY,CACd9hR,UAAW,OACXovP,MAAO,IAAMmyB,GAGX3xB,EAAU,CACZ5vP,UAAW,UACX20P,SAAU,CACR,CAAEvF,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vB5+E,EAAOC,QAAUo0G,G,kBChDjB,MAAMl0B,EAASoE,IACN,CACL0W,UAAW,CACTzrQ,UAAW,OACXovP,MAAO,cAETsc,SAAU,CACR1rQ,UAAW,SACXovP,MAAO,oCAETuc,wBAAyB,CACvB3rQ,UAAW,gBACXovP,MAAO,KACPr9O,IAAK,KACL09O,QAAS,IACT7pL,SAAU,CACRmvL,EAAKvF,iBACLuF,EAAKrF,sBAMPkc,EAAO,CACX,IACA,OACA,UACA,UACA,QACA,QACA,IACA,aACA,OACA,SACA,SACA,UACA,OACA,OACA,KACA,MACA,UACA,MACA,MACA,KACA,KACA,KACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,SACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,OACA,OACA,MACA,SACA,KACA,IACA,IACA,QACA,OACA,UACA,OACA,SACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,KACA,KACA,MACA,SAGIC,EAAiB,CACrB,YACA,cACA,eACA,QACA,cACA,cACA,sBACA,gBACA,eACA,eACA,gBACA,OACA,SACA,QACA,kBACA,aACA,cACA,iBACA,kBACA,UACA,uBACA,mBACA,yBACA,+BACA,aACA,OACA,YACA,SACA,QAEA,YACA,YACA,aACA,cAIIC,EAAiB,CACrB,SACA,WACA,QACA,UACA,UACA,UACA,UACA,MACA,WACA,OACA,QACA,UACA,QACA,cACA,gBACA,aACA,SACA,QACA,gBACA,eACA,MACA,OACA,eACA,QACA,gBACA,WACA,UACA,KACA,OACA,aACA,eACA,OACA,OACA,aACA,MACA,YACA,UACA,iBACA,eACA,mBACA,cACA,aACA,eACA,WACA,eACA,OACA,oBACA,YACA,aACA,WACA,QACA,OACA,QACA,SACA,gBACA,eACA,QACA,UACA,SAIIC,EAAkB,CACtB,QACA,WACA,SACA,MACA,aACA,eACA,aACA,gBACA,SACA,OACA,cACA,YACA,UACA,kBAGIC,EAAa,CACjB,gBACA,cACA,aACA,YACA,kBACA,sBACA,qBACA,sBACA,4BACA,iBACA,uBACA,4BACA,OACA,sBACA,aACA,wBACA,kBACA,mBACA,mBACA,oBACA,sBACA,oBACA,kBACA,SACA,gBACA,sBACA,4BACA,6BACA,sBACA,sBACA,kBACA,eACA,eACA,sBACA,sBACA,qBACA,sBACA,qBACA,cACA,oBACA,oBACA,oBACA,gBACA,eACA,qBACA,qBACA,qBACA,iBACA,eACA,aACA,mBACA,yBACA,0BACA,mBACA,mBACA,eACA,SACA,uBACA,aACA,aACA,cACA,eACA,eACA,eACA,QACA,OACA,YACA,QACA,eACA,cACA,aACA,cACA,oBACA,oBACA,oBACA,cACA,eACA,UACA,UACA,oBACA,gBACA,SACA,YACA,UACA,cACA,SACA,OACA,aACA,iBACA,YACA,YACA,cACA,YACA,QACA,OACA,eACA,cACA,wBACA,eACA,yBACA,YACA,mBACA,iBACA,eACA,aACA,eACA,yBACA,0BACA,cACA,SACA,UACA,OACA,oBACA,kBACA,mBACA,WACA,UACA,UACA,kBACA,OACA,iBACA,cACA,aACA,mBACA,sBACA,kBACA,SACA,gBACA,cACA,eACA,aACA,QACA,OACA,aACA,YACA,aACA,YACA,WACA,YACA,WACA,YACA,SACA,OACA,SACA,aACA,kBACA,UACA,QACA,UACA,UACA,gBACA,iBACA,gBACA,gBACA,WACA,gBACA,aACA,aACA,UACA,iBACA,eACA,gBACA,cACA,mBACA,oBACA,oBACA,cACA,qBACA,iBACA,WACA,SACA,SACA,QACA,MACA,WACA,eACA,aACA,kBACA,kBACA,wBACA,uBACA,wBACA,cACA,gBACA,iBACA,cACA,iBACA,0BACA,MACA,YACA,mBACA,kBACA,aACA,mBACA,sBACA,sBACA,6BACA,eACA,iBACA,aACA,cACA,SACA,QACA,aACA,eACA,YACA,WAGA3vP,UAGIyoQ,EAAmBhZ,EAAez0P,OAAO00P,GAW/C,SAASgZ,EAAKhwB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A,KACA,KACA,KACA,MACA,QACA,UACA,MACA,MACA,WACA,KACA,SACA,OACA,OACA,QACA,QACA,aACA,OACA,QACA,OACA,UACA,MACA,SACA,WACA,SACA,SACA,MACA,QACA,QACA,QAIA,WACA,QACA,QACA,SACA,SACA,OACA,SACA,WAEIqE,EAAW,CACf,OACA,QACA,OACA,YACA,MACA,YAGIh2C,EAAQ,CACZ,OACA,WACA,SACA,OACA,OACA,SACA,SACA,SACA,WACA,UACA,QACA,SACA,MACA,MACA,UACA,UACA,QACA,UACA,OACA,UACA,eACA,aACA,aACA,YACA,cACA,cACA,eACA,QACA,aACA,oBACA,cACA,gBACA,iBACA,UAGI03C,EAAc,CAClB,YACA,gBACA,aACA,iBACA,cACA,YACA,YAGIC,EAAmB,CACvB,cACA,aACA,gBACA,eAEA,UACA,UAEA,OACA,WACA,QACA,aACA,WACA,YACA,qBACA,YACA,qBACA,SACA,YAGIC,EAAqB,CACzB,YACA,OACA,QACA,UACA,SACA,WACA,eACA,SACA,UAGIC,EAAY,GAAGtxP,OACnBoxP,EACAC,EACA53C,EACA03C,GAaF,SAASme,EAAW5xB,GAClB,MAAM6xB,EAAuB,CAC3B,MACA,SAEIC,EAAsB,CAC1B,MACA,KACA,KACA,MACA,KACA,OACA,QAEIC,EAAsB,CAC1B,OACA,SACA,QACA,OACA,KACA,KACA,OACA,MACA,KACA,KACA,OACA,MACA,KACA,OACA,YACA,OACA,KACA,MACA,cACA,OACA,OACA,SACA,OACA,MACA,YACA,YACA,UACA,SACA,aAEI3d,EAAa,CACjBvX,QAAS6Q,EAASprP,OAAOyvQ,GACzB/mB,QAAS+G,EAASzvP,OAAOwvQ,GACzB7mB,SAAU2I,EAAUtxP,OAAOuvQ,IAEvBxd,EAAc,8CACdllC,EAAQ6wB,EAAKxI,QAAQwI,EAAKzE,WAAY,CAC1ClB,MAAOga,IAEH1G,EAAQ,CACZ1iQ,UAAW,QACXovP,MAAO,MACPr9O,IAAK,KACLi/O,SAAUmY,GAEN4d,EAAe,CACnB/mR,UAAW,QAC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IAAK,WAILu2Q,EAAS,CACbtoR,UAAW,WACX4lE,SAAU,GACV+uL,SAAU,CACR,CACEvF,MAAO,WACPr9O,IAAK,MAEP,CACEq9O,MAAO,SACPr9O,IAAK,IACLs9O,UAAW,KAIjBg5B,EAAKziN,SAASrkE,KAAK+mR,GACnBA,EAAO1iN,SAASrkE,KAAK8mR,GAErB,IAAIE,EAAc,CAChBP,EACAI,GAGFC,EAAKziN,SAAWyiN,EAAKziN,SAASvuD,OAAOkxQ,GACrCD,EAAO1iN,SAAW0iN,EAAO1iN,SAASvuD,OAAOkxQ,GAEzCA,EAAcA,EAAYlxQ,OAAOgxQ,EAAMC,GAEvC,MAAMvS,EAAS,CACb/1Q,UAAW,UACX20P,SAAU,CACR,CACEvF,MAAO,UACPr9O,IAAK,IACL6zD,SAAU2iN,GAEZ,CACEn5B,MAAO,uBACPxpL,SAAU,CACR,CACEwpL,MAAO,WAET,CACEA,MAAO,IACPr9O,IAAK,MACL6zD,SAAU2iN,OAOdC,EAAa,CACjBxoR,UAAW,QACXovP,MAAO,SACPxpL,SAAU2iN,EACVx2Q,IAAK,KAGP,MAAO,CACL9G,KAAM,WACN0rP,QAAS,CACP,KACA,SACA,OAEF/wL,SAAU,CACRmwM,EACAiS,EACA5f,EACAigB,EACAC,EACAE,EACAP,EACAzjB,EACA4jB,EACAF,IAKN13G,EAAOC,QAAUs3G,G,kBCjQjB,MAAMU,EAAiB,CACrB,cACA,eACA,QACA,eACA,eACA,qBACA,QACA,MACA,SACA,aACA,WACA,sBACA,8BACA,uBACA,kBACA,mBACA,kBACA,oBACA,oBACA,eACA,iBACA,sBACA,iBACA,aACA,WACA,eACA,cACA,aACA,gBACA,uBACA,WACA,SACA,uBACA,6BACA,aACA,mBACA,yBACA,cACA,gBACA,gBACA,WACA,QACA,mBACA,WACA,iBACA,gBACA,kBACA,oBACA,gBACA,uBACA,2BACA,6BACA,kBACA,cACA,wBACA,kBACA,QACA,wBACA,mBACA,eACA,cACA,kBACA,qBACA,SACA,cACA,aACA,SACA,cACA,aACA,oBACA,kBACA,6BACA,sBACA,4BACA,uBACA,iBACA,qBACA,aACA,iBACA,YACA,kBACA,iBACA,MACA,oBACA,8BACA,kCACA,oBACA,wBACA,eACA,kBACA,kBACA,mBACA,4BACA,oBACA,yBACA,yBACA,qBACA,UACA,WACA,kBACA,iBACA,eACA,iBACA,uBACA,mBACA,wBACA,eACA,iBACA,eACA,oBACA,gBACA,WACA,cACA,cACA,gBACA,mBACA,iBACA,iBACA,MACA,sBACA,SACA,gBACA,eACA,YACA,cACA,cACA,eACA,UACA,uBACA,4BACA,qBACA,uBACA,gBACA,uBACA,mBACA,mBACA,qBACA,WACA,cACA,qBACA,mBACA,WACA,aACA,mBACA,iBACA,kBACA,kBACA,UACA,aACA,UACA,mBACA,kBACA,0BACA,YACA,eACA,uBACA,gBACA,uBACA,WACA,WACA,YACA,UACA,QACA,kBACA,cACA,aACA,qBACA,kBACA,WACA,SACA,cACA,cACA,WACA,QACA,aACA,SACA,UACA,SACA,UACA,SACA,UACA,eACA,cACA,YACA,SACA,UACA,SACA,qBACA,UACA,SACA,UACA,OACA,MACA,SACA,SACA,iBACA,eACA,0BACA,cACA,SACA,gBACA,YACA,QACA,kBACA,aACA,cACA,eACA,YACA,WACA,YACA,SACA,gBACA,eACA,aACA,SACA,QACA,aACA,WACA,aACA,cACA,MACA,YACA,aACA,aACA,SACA,aACA,cACA,WACA,qBACA,cACA,mBACA,SACA,cACA,cACA,oBACA,iBACA,eACA,oBACA,sBACA,WACA,cACA,mBACA,aACA,wBACA,kBACA,uBACA,oBACA,yBACA,sBACA,iBACA,sBACA,0BACA,oBACA,wBACA,kBACA,gBACA,eACA,yBACA,oBACA,OACA,kBACA,YACA,yBACA,WACA,QACA,iBACA,aACA,QACA,eACA,gBACA,wBACA,gBACA,eACA,yBACA,sBACA,kBACA,gBACA,uBACA,YACA,aACA,cACA,cACA,gBACA,gBACA,YACA,sBACA,iBACA,gBACA,mBACA,cACA,iBACA,iBACA,YACA,aACA,cACA,yBACA,eACA,gBACA,oBACA,iBACA,oBACA,eACA,WACA,WACA,iBACA,aACA,kBACA,YACA,YACA,SACA,cACA,eACA,gBACA,cACA,eACA,kBACA,mBACA,8BACA,aACA,YACA,cACA,eACA,mBACA,cACA,YACA,YACA,sBACA,+BACA,eACA,iBACA,uBACA,aACA,eACA,yBACA,WACA,sBACA,aACA,qBACA,uBACA,aACA,qBACA,kBACA,eACA,YACA,YACA,qBACA,2BACA,uBACA,oBACA,mBACA,sBACA,gBACA,aACA,oBACA,cACA,aACA,cACA,mBACA,iBACA,iBACA,OACA,WACA,YACA,aACA,YACA,kBACA,OACA,oBACA,OACA,aACA,uBACA,0BACA,YACA,mBACA,WACA,OACA,OACA,iBACA,iBACA,kCACA,WACA,aACA,eACA,mBACA,sBACA,YACA,2BACA,UACA,YACA,aACA,qBACA,iBACA,aACA,aACA,WACA,WACA,mBACA,YACA,sBACA,0BACA,YACA,oBACA,uBACA,uBACA,6BACA,uBACA,6BACA,UACA,uBACA,OACA,SACA,QACA,oBACA,iCACA,eACA,QACA,QACA,QACA,sBACA,qBACA,+BACA,gCACA,aACA,wBACA,6BACA,mBACA,iBACA,oBACA,UACA,UACA,cACA,UACA,UACA,cACA,OACA,2BACA,mBACA,mCACA,wBACA,kBACA,UACA,wBACA,oBACA,cACA,mBACA,0BACA,iBACA,wBACA,iBACA,kBACA,WACA,oBACA,iBACA,eACA,eACA,aACA,iBACA,kBACA,cACA,YACA,WACA,WACA,uBACA,kBACA,uBACA,4BACA,kBACA,yBACA,qBACA,+BACA,SACA,WACA,SACA,YACA,SACA,QACA,SACA,eACA,gBACA,SACA,mBACA,sBACA,QACA,uBACA,wBACA,iBACA,QACA,YACA,oBACA,gBACA,QACA,QACA,wBACA,iBACA,sBACA,0BACA,iBACA,gBACA,sBACA,gBACA,sBACA,wBACA,4BACA,4BACA,8BACA,WACA,cACA,gBACA,oBACA,OACA,OACA,WACA,eACA,OACA,OACA,YACA,WACA,QACA,YACA,QACA,6BACA,iBACA,0BACA,kBACA,eACA,kBACA,kBACA,kBACA,WACA,gBACA,WACA,iBACA,eACA,mBACA,mBACA,0BACA,SACA,qBACA,6BACA,2BACA,eACA,qBACA,sBACA,gBACA,iBACA,iBACA,SACA,MACA,mBACA,UACA,gBACA,QACA,QACA,UACA,qBACA,WACA,QACA,aACA,YACA,YACA,YACA,cACA,mBACA,WACA,kBACA,MACA,gBACA,SACA,qBACA,mBACA,QACA,aACA,qBACA,uBACA,QACA,oBACA,wBACA,kBACA,eACA,eACA,oBACA,2BACA,kBACA,yBACA,kBACA,iBACA,sBACA,6BACA,cACA,gBACA,cACA,cACA,eACA,cACA,eACA,iBACA,yBACA,SACA,YACA,YACA,mBACA,aACA,iBACA,aACA,kBACA,mBACA,cACA,iBACA,gBACA,kBACA,aACA,iBACA,eACA,cACA,yBACA,OACA,YACA,kBACA,aACA,oBACA,YACA,eACA,IACA,cACA,gBACA,mBACA,kBACA,eACA,eACA,UACA,gBACA,eACA,aACA,mBACA,SACA,eACA,mBACA,iBACA,sBACA,yBACA,gBACA,iCACA,2BACA,aACA,kBACA,MACA,UACA,uBACA,aACA,eACA,iBACA,uBACA,oBACA,mBACA,eACA,QACA,gBACA,WACA,aACA,UACA,gBACA,QACA,0BACA,WACA,gBACA,qBACA,eACA,cACA,MACA,YACA,iBACA,aACA,UACA,kBACA,OACA,oBACA,eACA,kBACA,qBACA,kBACA,eACA,cACA,cACA,wBACA,oBACA,0BACA,sBACA,aACA,0BACA,yBACA,yBACA,mBACA,YACA,iBACA,wBACA,kBACA,mBACA,YACA,gBACA,eACA,oBACA,0BACA,SACA,YACA,sBACA,mBACA,uBACA,iBACA,oBACA,cACA,aACA,WACA,YACA,aACA,QACA,WACA,YACA,WACA,oBACA,uBACA,YACA,SACA,cACA,YACA,iBACA,gBACA,kCACA,cACA,mBACA,gBACA,QACA,qBACA,gBACA,cACA,sBACA,iBACA,uBACA,gBACA,kBACA,mBACA,sBACA,gBACA,yBACA,0BACA,cACA,qBACA,mBACA,YACA,kBACA,oBACA,yBACA,yBACA,2BACA,gBACA,qBACA,iBACA,aACA,iBACA,mBACA,2BACA,uBACA,gBACA,cACA,cACA,eACA,aACA,wBACA,wBACA,oBACA,aACA,aACA,QACA,aACA,WACA,WACA,cACA,cACA,qBACA,eACA,qBACA,kBACA,mBACA,wBACA,gBACA,eACA,wBACA,OACA,mBACA,qBACA,sBACA,SACA,YACA,YACA,cACA,aACA,eACA,gBACA,cACA,iBACA,uCACA,uCACA,iCACA,uCACA,oCACA,eACA,WACA,qBACA,wBACA,yBACA,+BACA,WACA,cACA,QACA,WACA,kBACA,eACA,mBACA,mBACA,gBACA,YACA,OACA,oBACA,WACA,gBACA,aACA,kBACA,YACA,QACA,aACA,2BACA,QACA,SACA,eACA,sBACA,UACA,kBACA,eACA,oBACA,mBACA,YACA,eACA,mBACA,cACA,iBACA,kBACA,gBACA,cACA,kBACA,mBACA,gBACA,WACA,cACA,mBACA,cACA,yBACA,6BACA,wBACA,eACA,qBACA,eACA,WACA,uBACA,YACA,aACA,cACA,cACA,eACA,cACA,kBACA,+BACA,uBACA,iBACA,YACA,SACA,oBACA,cACA,oBACA,oBACA,kBACA,mBACA,iBACA,UACA,QACA,YACA,eACA,eACA,eACA,gBACA,YACA,oBACA,cACA,gBACA,gBACA,uBACA,WACA,cACA,cACA,mBACA,SACA,gBACA,eACA,aACA,wBACA,gBACA,cACA,iBACA,wBACA,cACA,aACA,aACA,mBACA,SACA,mBACA,oBACA,aACA,cACA,eACA,iBACA,eACA,sBACA,mBACA,YACA,2BACA,YACA,kBACA,aACA,cACA,yBACA,qBACA,kBACA,uBACA,cACA,kBACA,qBACA,oBACA,UACA,WACA,uBACA,mBACA,kBACA,aACA,0BACA,gBACA,iBACA,mBACA,wBACA,UACA,qBACA,YACA,gBACA,kBACA,qBACA,kBACA,cACA,gBACA,oBACA,oBACA,oBACA,wBACA,2BACA,UACA,cACA,gBACA,aACA,cACA,kBACA,qBACA,8BACA,yBACA,yBACA,WACA,iBACA,mBACA,qBACA,YACA,wBACA,cACA,OACA,UACA,kBACA,kBACA,sBACA,oBACA,eACA,gBACA,YACA,kBACA,uBACA,qBACA,oBACA,YACA,qBACA,cACA,UACA,sBACA,2BACA,kBACA,0BACA,8BACA,qBACA,qBACA,iCACA,+BACA,eACA,cACA,iBACA,uBACA,WACA,gBACA,qBACA,gBACA,oBACA,kBACA,YACA,qBACA,oBACA,iBACA,iBACA,YACA,aACA,cACA,cACA,kBACA,eACA,eACA,sBACA,0BACA,gBACA,iBACA,sBACA,oBACA,cACA,UACA,cACA,WACA,oBACA,eACA,WACA,oBACA,qBACA,mBACA,0BACA,iBACA,uBACA,wBACA,6BACA,gBACA,kBACA,kBACA,gBACA,eACA,cACA,gBACA,WACA,iBACA,mBACA,eACA,qBACA,uBACA,UACA,gBACA,mBACA,0BACA,yBACA,wBACA,4BACA,qBACA,qBACA,wBACA,4BACA,oBACA,uBACA,mBACA,iBACA,kBACA,mBACA,oBACA,cACA,cACA,oBACA,kBACA,wBACA,sBACA,4BACA,iBACA,iBACA,oBACA,mBACA,WACA,iBACA,iBACA,iBACA,iBACA,UACA,wBACA,6BACA,mBACA,wBACA,sBACA,yBACA,sBACA,0BACA,WACA,YACA,qBACA,WACA,cACA,gBACA,WACA,UACA,kBACA,eACA,kBACA,cACA,sBACA,sBACA,kBACA,MACA,OACA,eACA,iBACA,eACA,cACA,MACA,OACA,QACA,gBACA,kBACA,qBACA,aACA,oBACA,kCACA,mBACA,kBACA,oBACA,eACA,0BACA,aACA,cACA,SACA,WACA,aACA,8BACA,qBACA,qBACA,0BACA,WACA,cACA,qBACA,gBACA,eACA,gBACA,wBACA,gBACA,sBACA,wBACA,eACA,kBACA,iBACA,aACA,gCACA,iCACA,iBACA,sBACA,gBACA,sBACA,yBACA,sBACA,oBACA,oBACA,kBACA,aACA,eACA,oBACA,+BACA,+BACA,kBACA,QACA,wBACA,gBACA,iBACA,kBACA,cACA,MACA,OACA,eACA,OACA,WACA,SACA,SACA,YACA,WACA,6BACA,MACA,SACA,OACA,mBACA,aACA,kBACA,cACA,eACA,0BACA,uBACA,qBACA,eACA,QACA,eACA,sBACA,cACA,OACA,aACA,uBACA,SACA,cACA,aACA,WACA,cACA,2BACA,IACA,oBACA,UACA,6BACA,gBACA,SACA,SACA,UACA,kBACA,qBACA,oBACA,UACA,aACA,gBACA,WACA,gBACA,kBACA,mBACA,YACA,eACA,UACA,sBACA,gBACA,iBACA,OACA,aACA,QACA,iBACA,iBACA,YACA,aACA,eACA,gBACA,eACA,WACA,kBACA,eACA,mBACA,aACA,cACA,gBACA,cACA,WACA,YACA,gBACA,aACA,kBACA,YACA,cACA,oBACA,oBACA,UACA,WACA,qBACA,gBACA,YACA,YACA,UACA,qBACA,UACA,WACA,WACA,gBACA,mBACA,QACA,WACA,eACA,UACA,cACA,sBACA,iBACA,YACA,qBACA,YACA,UACA,cACA,cACA,qBACA,UACA,mBACA,mBACA,kBACA,gBACA,eACA,0BACA,4BACA,kBACA,iBACA,wBACA,wBACA,cACA,wBACA,oBACA,4BACA,oBACA,yBACA,wBACA,0BACA,yBACA,oBACA,mBACA,yBACA,sBACA,4BACA,kBACA,iBACA,0BACA,wBACA,eACA,0BACA,wBACA,8BACA,oBACA,sBACA,eACA,gBACA,QACA,iBACA,0BACA,2BACA,yBACA,aACA,SACA,mBACA,0BACA,sBACA,6BACA,eACA,eACA,mBACA,MACA,eACA,UACA,YACA,SACA,kBACA,yBACA,cACA,gBACA,wBACA,iBACA,kBACA,mBACA,qBACA,aACA,gBACA,eACA,uBACA,oBACA,wBACA,kBACA,qBACA,kBACA,iBACA,oBACA,YACA,qBACA,oBACA,aACA,mBACA,aACA,cACA,kBACA,mBACA,cACA,gBACA,qBACA,SACA,WACA,QACA,iBACA,aACA,mBACA,aACA,uBACA,eACA,yBACA,MACA,cACA,kBACA,gBACA,4BACA,eACA,aACA,cACA,aACA,mBACA,mBACA,iBACA,uBACA,UACA,gBACA,cACA,oBACA,mBACA,yBACA,WACA,wBACA,iBACA,kBACA,SACA,eACA,cACA,cACA,iBACA,eACA,eACA,gBACA,UACA,gBACA,oBACA,mBACA,kBACA,kBACA,kBACA,qBACA,iBACA,uBACA,cACA,gBACA,mBACA,yBACA,uBACA,mBACA,aACA,oBACA,iBACA,aACA,SACA,gBACA,gBACA,WACA,0BACA,4BACA,kBACA,2BACA,qBACA,aACA,YACA,aACA,eACA,gBACA,gBACA,iBACA,mBACA,YACA,YACA,YACA,gBACA,aACA,iBACA,gBACA,qBACA,qBACA,oBACA,wBACA,eACA,aACA,kBACA,qBACA,kBACA,4BACA,oBACA,qBACA,0BACA,mBACA,gBACA,4BACA,oBACA,gBACA,2BACA,2BACA,wBACA,wBACA,mBACA,mBACA,eACA,iBACA,gBACA,uBACA,gBACA,qBACA,8BACA,oBACA,sBACA,iCACA,2BACA,qBACA,mBACA,eACA,YACA,cACA,OACA,UACA,aACA,cACA,WACA,YACA,8BACA,UACA,kBACA,mBACA,0BACA,cACA,kBACA,gBACA,eACA,uBACA,gBACA,mBACA,cACA,iBACA,sBACA,mBACA,iBACA,oBACA,aACA,cACA,sBACA,wBACA,oBACA,qBACA,sBACA,mCACA,yBACA,YACA,MACA,aACA,SACA,WACA,WACA,cACA,YACA,WACA,eACA,aACA,UACA,YACA,KACA,cACA,oBACA,+BACA,mCACA,qBACA,mBACA,yBACA,eACA,gCACA,iBACA,gBACA,MACA,YACA,WACA,WACA,eACA,SACA,sBACA,wBACA,kBACA,kBACA,uBACA,gBACA,sBACA,2BACA,uBACA,mBACA,iBACA,gBACA,oBACA,oBACA,iBACA,OACA,YACA,eACA,mBACA,sBACA,oBACA,iBACA,oBACA,qBACA,kBACA,qBACA,aACA,UACA,eACA,aACA,cACA,YACA,iBACA,kBACA,OACA,eACA,SACA,cACA,KACA,wBACA,iBACA,mBACA,UACA,WACA,iBACA,WACA,UACA,aACA,oBACA,2BACA,qBACA,eACA,kBACA,gBACA,mBACA,0BACA,sBACA,sBACA,cACA,mBACA,mBACA,iBACA,kBACA,iBACA,oBACA,2BACA,IACA,kBACA,iBACA,yBACA,OACA,eACA,cACA,UACA,4BACA,eACA,cACA,YACA,mBACA,eACA,WACA,YACA,aACA,kBACA,cACA,aACA,aACA,WACA,YACA,eACA,eACA,aACA,iBACA,WACA,cACA,QACA,wBACA,YACA,oBACA,YACA,kBACA,mBACA,WACA,gBACA,aACA,qBACA,WACA,qBACA,uBACA,eACA,oBACA,cACA,cACA,wBACA,eACA,UACA,cACA,mBACA,cACA,YACA,mBACA,YACA,YACA,cACA,mBACA,YACA,sBACA,YACA,cACA,gBACA,aACA,6BACA,gBACA,qBACA,YACA,eACA,kBACA,iBACA,kBACA,YACA,wBACA,wBACA,QACA,cACA,cACA,2BACA,UACA,SACA,UACA,kBACA,cACA,MACA,SACA,kBACA,+BACA,cACA,YACA,YACA,cACA,aACA,oBACA,kBACA,QACA,wBACA,kBACA,SACA,cACA,kBACA,eACA,iBACA,cACA,iBACA,aACA,iBACA,mBACA,iBACA,sBACA,iBACA,cACA,eACA,iBACA,mBACA,cACA,UACA,gBACA,cACA,SACA,iBACA,QACA,eACA,YACA,aACA,UACA,YACA,cACA,yBACA,aACA,MACA,OACA,OACA,UACA,UACA,qBACA,UACA,WACA,kBACA,YACA,cACA,uBACA,eACA,sBACA,wBACA,mBACA,iBACA,qBACA,oBACA,cACA,sBACA,SACA,aACA,iBACA,cACA,WACA,cACA,WACA,YACA,iBACA,wBACA,gBACA,iBACA,6BACA,iBACA,qBACA,wBACA,iBACA,oBACA,qBACA,mBACA,kBACA,YACA,iBACA,QACA,YACA,iBACA,eACA,kBACA,cACA,cACA,sBACA,eACA,qBACA,cACA,SACA,gBACA,gBACA,6BACA,cACA,aACA,kBACA,SACA,OACA,aACA,gBACA,MACA,SACA,YACA,oBACA,iBACA,kBACA,cACA,eACA,gBACA,uBACA,eACA,gBACA,iBACA,WACA,mBACA,0BACA,oBACA,gCACA,2BACA,+BACA,mBACA,eACA,SACA,yBACA,kBACA,aACA,eACA,eACA,aACA,iBACA,kBACA,mBACA,iBACA,YACA,sBACA,cACA,YACA,wBACA,gBACA,aACA,iBACA,eACA,gCACA,mBACA,mBACA,uBACA,qBACA,iBACA,kBACA,wBACA,mBACA,sBACA,0BACA,qBACA,wBACA,qBACA,wBACA,wBACA,gBACA,UACA,iBACA,eACA,uBACA,2BACA,YACA,WACA,YACA,iBACA,iBACA,SACA,iBACA,YACA,aACA,kBACA,oCACA,iBACA,gBACA,aACA,mBACA,uBACA,cACA,kBACA,OACA,UACA,gBACA,sBACA,WACA,QACA,gBACA,gBACA,kBACA,iBACA,oBACA,mBACA,2BACA,eACA,iBACA,mBACA,qBACA,eACA,8BACA,oBACA,iBACA,sBACA,eACA,6BACA,kBACA,YACA,aACA,0BACA,YACA,iBACA,cACA,YACA,OACA,eACA,gBACA,cACA,WACA,cACA,gBACA,aACA,cACA,WACA,kBACA,WACA,gBACA,yBACA,eACA,gBACA,eACA,YACA,iBACA,gBACA,eACA,YACA,WACA,gBACA,iBACA,eACA,oBACA,WACA,cACA,iBACA,wBACA,UACA,eACA,mBACA,sBACA,cACA,gBACA,gBACA,sBACA,qBACA,OACA,gBACA,aACA,aACA,eACA,aACA,eACA,cACA,gBACA,YACA,cACA,mBACA,6BACA,gBACA,gBACA,cACA,2BACA,sBACA,oBACA,yBACA,YACA,WACA,UACA,cACA,wBACA,yBACA,kBACA,2BACA,yBACA,uBACA,uBACA,qBACA,uBACA,sBACA,yBACA,gBACA,yBACA,2BACA,eACA,wBACA,YACA,cACA,YACA,YACA,cACA,uBACA,WACA,oBACA,cACA,iBACA,kBACA,eACA,kBACA,cACA,sBACA,iBACA,eACA,2BACA,WACA,YACA,kBACA,kBACA,wBACA,aACA,WACA,uBACA,eACA,mBACA,mBACA,mBACA,6BACA,oBACA,gBACA,sBACA,kBACA,gBACA,6BACA,OACA,gBACA,0BACA,mBACA,kBACA,QACA,YACA,+BACA,gBACA,mBACA,mBACA,wBACA,mCACA,kBACA,sBACA,MACA,SACA,oBACA,cACA,aACA,aACA,iBACA,iBACA,OACA,UACA,YACA,eACA,gBACA,WACA,QACA,iBACA,yBACA,OACA,WACA,WACA,eACA,kBACA,OACA,YACA,aACA,WACA,WACA,cACA,qBACA,iBACA,iBACA,WACA,YACA,oBACA,eACA,iBACA,aACA,MACA,SACA,sBACA,SACA,cACA,aACA,wBACA,eACA,UACA,iBACA,cACA,eACA,qBACA,aACA,WACA,YACA,cACA,gBACA,cACA,UACA,kBACA,UACA,qBACA,wBACA,mBACA,sBACA,aACA,mBACA,mBACA,aACA,mBACA,gBACA,oBACA,2BACA,gBACA,wBACA,mBACA,sBACA,mBACA,oBACA,kCACA,iCACA,iBACA,cACA,qBACA,eACA,QACA,WACA,kBACA,SACA,aACA,aACA,YACA,eACA,YACA,aACA,aACA,kBACA,qBACA,sBACA,QACA,qBACA,gCACA,WACA,WACA,WACA,WACA,SACA,kBACA,iBACA,mBACA,oBACA,uBACA,wBACA,WACA,aACA,UACA,aACA,iBACA,mBACA,uBACA,mBACA,2BACA,eACA,QACA,4BACA,uBACA,kBACA,iBACA,mBACA,yBACA,oBACA,gBACA,uBACA,qBACA,kBACA,iBACA,mBACA,OACA,WACA,iBACA,WACA,eACA,iCACA,cACA,aACA,eACA,WACA,kBACA,wBACA,iCACA,+BACA,8BACA,iBACA,iBACA,wBACA,iBACA,gBACA,gBACA,0BACA,cACA,cACA,eACA,cACA,mBACA,aACA,cACA,QACA,oBACA,mBACA,aACA,eACA,sBACA,SACA,WACA,2BACA,iBACA,4BACA,iBACA,kBACA,cACA,eACA,aACA,iBACA,mBACA,iBACA,uCACA,uCACA,oCACA,iBACA,MACA,cACA,UACA,4BACA,4BACA,qBACA,gBACA,2BACA,qBACA,2BACA,mBACA,sBACA,8BACA,wBACA,uBACA,mCACA,uBACA,qBACA,uBACA,yBACA,sBACA,UACA,kCACA,aACA,eACA,cACA,UACA,eACA,gBACA,iBACA,YACA,kBACA,iBACA,YACA,YACA,iBACA,iBACA,kBACA,mBACA,kBACA,kBACA,iBACA,cACA,eACA,UACA,kBACA,cACA,kBACA,mBACA,cACA,cACA,sBACA,6BACA,eACA,oBACA,kBACA,eACA,sBACA,kBACA,sBACA,gBACA,WACA,gBACA,wBACA,eACA,cACA,WACA,YACA,YACA,cACA,cACA,uBACA,uBACA,YACA,qBACA,iCACA,wBACA,gBACA,sBACA,wBACA,iBACA,0BACA,+BACA,sCACA,6BACA,oCACA,WACA,aACA,UACA,cACA,iBACA,iBACA,gBACA,oBACA,WACA,kBACA,qBACA,gBACA,cACA,YACA,qBACA,gBACA,aACA,0BACA,aACA,YACA,eACA,gBACA,eACA,mBACA,2BACA,aACA,eACA,iBACA,oBACA,MACA,2BACA,aACA,iBACA,cACA,+BACA,gCACA,iBACA,gCACA,WACA,8BACA,oBACA,gBACA,OACA,cACA,cACA,8BACA,eACA,sBACA,0BACA,OACA,OACA,WACA,iBACA,4BACA,eACA,eACA,eACA,QACA,UACA,qBACA,yBACA,cACA,kBACA,YACA,eACA,gBACA,kBACA,qBACA,gBACA,sBACA,mBACA,iBACA,iBACA,sBACA,WACA,WACA,aACA,gBACA,uBACA,gBACA,mBACA,cACA,qBACA,gBACA,iBACA,kBACA,uBACA,8BACA,qBACA,4BACA,mBACA,eACA,eACA,kBACA,gBACA,qBACA,4BACA,mBACA,0BACA,mBACA,yBACA,cACA,kBACA,gBACA,oBACA,cACA,sBACA,iBACA,YACA,cACA,aACA,4BACA,SACA,cACA,mBACA,YACA,aACA,aACA,OACA,YACA,UACA,eACA,mBACA,mBACA,mBACA,iBACA,cACA,oBACA,cACA,eACA,QACA,gBACA,OACA,eACA,UACA,mBACA,oBACA,kBACA,eACA,kBACA,mBACA,iBACA,kBACA,uBACA,qBACA,0BACA,YACA,mBACA,YACA,YACA,iBACA,gBACA,kBACA,UACA,mBACA,uBACA,uBACA,gBACA,gBACA,qBACA,kBACA,YACA,2BACA,cACA,aACA,uBACA,yBACA,kBACA,uBACA,wBACA,8BACA,oBACA,eACA,eACA,qBACA,cACA,iBACA,WACA,yBACA,YACA,YACA,kBACA,oBACA,kBACA,gBACA,mBACA,uBACA,WACA,WACA,eACA,kBACA,oBACA,aACA,sBACA,cACA,eACA,qBACA,iBACA,OACA,eACA,eACA,YACA,iBACA,OACA,cACA,kBACA,mBACA,wBACA,cACA,aACA,cACA,QACA,kBACA,cACA,iBACA,cACA,WACA,oBACA,sBACA,sBACA,OACA,uBACA,WACA,mBACA,0BACA,UACA,QACA,aACA,QACA,aACA,QACA,aACA,QACA,aACA,QACA,aACA,uBACA,aACA,gBACA,uBACA,cACA,sBACA,gBACA,cACA,iBACA,iBACA,gBACA,iBACA,oBACA,eACA,gBACA,gBACA,YACA,cACA,wBACA,gBACA,qBACA,kCACA,uBACA,mBACA,iBACA,qBACA,YACA,aACA,iBACA,OACA,UACA,kBACA,eACA,YACA,WACA,cACA,WACA,kBACA,gBACA,WACA,aACA,iBACA,kBACA,2BACA,aACA,aACA,+BACA,mBACA,WACA,oBACA,eACA,cACA,kBACA,eACA,MACA,kBACA,eACA,YACA,kBACA,cACA,yBACA,iBACA,+BACA,iBACA,oBACA,+BACA,oBACA,+BACA,oBACA,+BACA,6BACA,oBACA,+BACA,kBACA,YACA,kBACA,4BACA,aACA,cACA,qBACA,8BACA,qBACA,IACA,WACA,UACA,iBACA,YACA,cACA,WACA,iBACA,KACA,aACA,mBACA,oBACA,mBACA,mBACA,KACA,QACA,UACA,oBACA,gBACA,kBACA,WACA,cACA,aACA,aACA,oBACA,mBACA,gBACA,yBACA,qBACA,aACA,kBACA,eACA,uBACA,aACA,gBACA,YACA,eACA,kBACA,eACA,iBACA,gBACA,gBACA,oBACA,eACA,iBACA,2BACA,YACA,YACA,kBACA,gBACA,kBACA,kBACA,qBACA,gBACA,cACA,uBACA,oBACA,iBACA,kBACA,gBACA,cACA,oBACA,2BACA,uBACA,6BACA,gBACA,iBACA,gBACA,iBACA,iBACA,cACA,eACA,cACA,aACA,eACA,cACA,eACA,oBACA,YACA,gBACA,cACA,WACA,eACA,iBACA,mBACA,iCACA,gBACA,uBACA,eACA,oBACA,SACA,kBACA,eACA,eACA,cACA,cACA,kBACA,eACA,cACA,eACA,sBACA,cACA,YACA,YACA,kBACA,iBACA,uBACA,eACA,gBACA,YACA,sBACA,YACA,YACA,aACA,sBACA,gBACA,iBACA,UACA,SACA,yBACA,kBACA,gBACA,eACA,wBACA,KACA,aACA,WACA,iBACA,gBACA,kBACA,uBACA,uBACA,qBACA,qBACA,uBACA,wBACA,mBACA,qBACA,yBACA,cACA,oBACA,uBACA,sBACA,qBACA,YACA,oBACA,SACA,2BACA,oBACA,mBACA,sBACA,8BACA,kBACA,2BACA,wBACA,gBACA,yBACA,uBACA,UACA,uBACA,aACA,WACA,aACA,iBACA,iBACA,iBACA,eACA,eACA,gBACA,WACA,QACA,kBACA,kBACA,cACA,kBACA,sBACA,YACA,eACA,8BACA,2BACA,iBACA,qBACA,+BACA,4BACA,wBACA,sBACA,aACA,iBACA,2BACA,0BACA,cACA,QACA,eACA,kBACA,UACA,QACA,eACA,mBACA,wBACA,aACA,gBACA,uBACA,YACA,gBACA,kBACA,gBACA,cACA,gBACA,cACA,cACA,oBACA,uBACA,SACA,oBACA,uBACA,mBACA,gBACA,QACA,aACA,oBACA,WACA,kBACA,WACA,UACA,iBACA,6BACA,WACA,UACA,gBACA,kBACA,gBACA,cACA,cACA,oBACA,WACA,iBACA,WACA,gBACA,WACA,YACA,cACA,0BACA,aACA,eACA,kCACA,wBACA,0BACA,gBACA,qBACA,sBACA,yBACA,iBACA,oBACA,2BACA,yBACA,cACA,oBACA,qBACA,YACA,oBACA,yBACA,gBACA,eACA,WACA,uBACA,kBACA,uBACA,kBACA,iBACA,gBACA,OACA,UACA,yBACA,aACA,+BACA,oCACA,2BACA,uBACA,aACA,cACA,iBACA,6BACA,kCACA,6BACA,0BACA,kBACA,mBACA,2BACA,0BACA,8BACA,sBACA,yBACA,mBACA,sBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,0BACA,yBACA,qBACA,eACA,wBACA,gBACA,0BACA,qBACA,0BACA,2BACA,0BACA,sBACA,mCACA,oBACA,YACA,uBACA,iBACA,YACA,yBACA,aACA,oBACA,mBACA,cACA,SACA,OACA,kBACA,UACA,iBACA,sBACA,WACA,YACA,aACA,uBACA,kBACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,eACA,aACA,eACA,eACA,eACA,eACA,oBACA,sBACA,OACA,aACA,SACA,cACA,iBACA,wBACA,WACA,sBACA,2BACA,aACA,oBACA,yBACA,eACA,iBACA,IACA,YACA,qBACA,eACA,kBACA,eACA,6BACA,WACA,iBACA,kBACA,gBACA,2BACA,uBACA,sBACA,YACA,YACA,YACA,YACA,aACA,iBACA,gBACA,iBACA,4BACA,eACA,UACA,MACA,MACA,uBACA,gBACA,UACA,cACA,aACA,WACA,kBACA,SACA,aACA,mBACA,OACA,YACA,UACA,YACA,UACA,WACA,cACA,kBACA,WACA,cACA,iBACA,kBACA,kBACA,gBACA,kBACA,WACA,aACA,YACA,wBACA,iBACA,8BACA,mBACA,kBACA,aACA,0BACA,WACA,iBACA,6BACA,yBACA,WACA,QACA,UACA,gBACA,mBACA,eACA,aACA,kBACA,YACA,WACA,mBACA,WACA,aACA,gBACA,qBACA,WACA,mBACA,eACA,mBACA,kBACA,sBACA,mBACA,YACA,kBACA,0BACA,QACA,SACA,OACA,WACA,oBACA,cACA,gBACA,SACA,gBACA,mBACA,oBACA,oBACA,WACA,MACA,aACA,YACA,YACA,oBACA,sBACA,eACA,0BACA,eACA,2BACA,OACA,YACA,eACA,sBACA,oBACA,iBACA,oBACA,iBACA,kBACA,UACA,eACA,gBACA,eACA,kBACA,oBACA,mBACA,kBACA,eACA,kBACA,aACA,gBACA,mBACA,WACA,iBACA,cACA,eACA,gBACA,gBACA,mBACA,YACA,YACA,eACA,SACA,cACA,WACA,OACA,YACA,mBACA,gBACA,gBACA,cACA,WACA,iBACA,WACA,YACA,kBACA,eACA,eACA,UACA,QACA,aACA,mBACA,mBACA,gBACA,kBACA,kBACA,uBACA,6BACA,sBACA,wBACA,cACA,gBACA,YACA,oBACA,0BACA,YACA,aACA,YACA,UACA,YACA,aACA,WACA,gBACA,eACA,cACA,YACA,cACA,WACA,eACA,cACA,aACA,QACA,oBACA,0BACA,sBACA,OACA,YACA,mBACA,eACA,+BACA,4BACA,sBACA,gCACA,cACA,iBACA,uBACA,qBACA,oBACA,mBACA,cACA,sBACA,UACA,iBACA,YACA,uBACA,iBACA,8BACA,kBACA,YACA,YACA,aACA,wBACA,8BACA,+BACA,aACA,cACA,cACA,gBACA,eACA,YACA,cACA,iBACA,aACA,YACA,YACA,eACA,WACA,gBACA,aACA,WACA,aACA,WACA,cACA,eACA,eACA,qBACA,WACA,eACA,aACA,QACA,cACA,YACA,gBACA,kBACA,OACA,WACA,cACA,kBACA,oBACA,eACA,gBACA,oBACA,iBACA,kBACA,oBACA,SACA,aACA,+BACA,oBACA,kCACA,eACA,oBACA,iBACA,cACA,aACA,gBACA,0BACA,uBACA,WACA,WACA,aACA,kBACA,gBACA,QACA,yBACA,yBACA,wBACA,eACA,wBACA,iBACA,oBACA,wBACA,iBACA,mBACA,iBACA,UACA,gBACA,wBACA,aACA,6BACA,sBACA,oBACA,cACA,eACA,kCACA,cACA,cACA,YACA,gBACA,0BACA,eACA,UACA,oBACA,aACA,oBACA,mBACA,cACA,iBACA,wBACA,gBACA,SACA,MACA,QACA,OACA,aACA,WACA,uBACA,gBACA,cACA,uBACA,kBACA,gBACA,gBACA,gBACA,0BACA,aACA,6BACA,wBACA,UACA,cACA,wBACA,YACA,UACA,wBACA,iCACA,2BACA,oCACA,eACA,yBACA,WACA,YACA,gBACA,qBACA,iBACA,2BACA,SACA,WACA,iBACA,UACA,eACA,aACA,iBACA,kBACA,qBACA,yBACA,gBACA,mBACA,eACA,yBACA,mBACA,qBACA,SACA,uBACA,kBACA,eACA,WACA,gBACA,eACA,YACA,cACA,iBACA,mBACA,2BACA,UACA,gBACA,UACA,wBACA,cACA,aACA,WACA,uBACA,uBACA,aACA,oBACA,uBACA,eACA,YACA,wBACA,WACA,YACA,iBACA,YACA,6BACA,4BACA,yBACA,wBACA,8BACA,uBACA,oBACA,iBACA,oBACA,aACA,cACA,yBACA,kBACA,mBACA,SACA,MACA,SACA,QACA,aACA,YACA,YACA,8BACA,UACA,qBACA,qBACA,qBACA,uBACA,0BACA,UACA,wBACA,kBACA,kBACA,SACA,WACA,2BACA,sBACA,WACA,yBACA,yBACA,gCACA,gBACA,kBACA,kBACA,kBACA,kBACA,kBACA,WACA,gBACA,aACA,aACA,WACA,YACA,aACA,iBACA,YACA,2BACA,aACA,cACA,6BACA,UACA,aACA,sBACA,MACA,UACA,iBACA,mBACA,UACA,YACA,cACA,qBACA,qBACA,yBACA,cACA,YACA,YACA,WACA,WACA,gBACA,WACA,gBACA,oBACA,qBACA,gBACA,YACA,eACA,wBACA,kBACA,WACA,cACA,oBACA,WACA,sBACA,aACA,qBACA,OACA,wBACA,aACA,4BACA,yBACA,gBACA,aACA,oBACA,qBACA,YACA,kBACA,uBACA,SACA,kBACA,eACA,kBACA,SACA,UACA,gBACA,sBACA,iBACA,kBACA,UACA,kBACA,oBACA,mBACA,cACA,aACA,OACA,iBACA,iBACA,gBACA,WACA,WACA,aACA,mBACA,YACA,WACA,QACA,mBACA,kBACA,wBACA,yBACA,OACA,mBACA,gBACA,oBACA,gBACA,gBACA,iBACA,kBACA,kBACA,YACA,wBACA,gBACA,wBACA,kBACA,gBACA,iBACA,kBACA,YACA,yBACA,aACA,cACA,cACA,YACA,UACA,gBACA,cACA,cACA,gBACA,iBACA,gBACA,WACA,mBACA,iBACA,kBACA,mBACA,SACA,gBACA,oBACA,eACA,WACA,MACA,mBACA,UACA,YACA,cACA,YACA,YACA,oBACA,yBACA,WACA,uBACA,kBACA,wBACA,WACA,SACA,kBACA,SACA,eACA,UACA,wBACA,QACA,YACA,WACA,UACA,kBACA,oBACA,mBACA,WACA,gBACA,eACA,sBACA,iBACA,qBACA,cACA,iBACA,aACA,qBACA,YACA,sBACA,MACA,QACA,OACA,UACA,iBACA,gBACA,SACA,UACA,YACA,WACA,oBACA,sBACA,gBACA,iBACA,kBACA,eACA,iBACA,mBACA,YACA,oBACA,gBACA,SACA,YACA,gBACA,iBACA,2BACA,kBACA,SACA,UACA,eACA,gBACA,gBACA,YACA,eACA,gBACA,wBACA,4BACA,0BACA,2BACA,qBACA,yBACA,yBACA,gBACA,OACA,eACA,kBACA,kBACA,qBACA,eACA,YACA,mBACA,gBACA,YACA,gBACA,YACA,eACA,oBACA,cACA,iBACA,cACA,qBACA,qBACA,mBACA,oBACA,cACA,0BACA,0BACA,sBACA,eACA,gBACA,iBACA,yCACA,kCACA,4BACA,IACA,uBACA,QACA,QACA,eACA,sBACA,OACA,UACA,UACA,cACA,kBACA,sBACA,SACA,gBACA,gBACA,UACA,eACA,UACA,kBACA,mBACA,uBACA,YACA,aACA,mCACA,mCACA,4BACA,QACA,WACA,+BACA,0BACA,mBACA,kCACA,oBACA,gBACA,8BACA,mBACA,oBACA,OACA,uBACA,iBACA,oBACA,YACA,WACA,YACA,gBACA,YACA,2BACA,WACA,aACA,YACA,UACA,aACA,oBACA,aACA,aACA,kBACA,iBACA,WACA,iBACA,gBACA,YACA,wBACA,UACA,iBACA,uBACA,kBACA,WACA,kBACA,2BACA,UACA,kBACA,aACA,YACA,aACA,iBACA,iBACA,iBACA,UACA,WACA,wBACA,uBACA,yBACA,+BACA,qBACA,eACA,gBACA,gBACA,gBACA,gBACA,oBACA,eACA,OACA,WACA,WACA,YACA,wBACA,WACA,aACA,YACA,mBACA,cACA,kBACA,aACA,YACA,YACA,YACA,YACA,mBACA,iBACA,6BACA,kCACA,+BACA,iCACA,yBACA,eACA,iCACA,OACA,WACA,oBACA,2BACA,sBACA,cACA,sBACA,uBACA,mBACA,cACA,sBACA,uBACA,mBACA,MACA,WACA,OACA,SACA,qBACA,iBACA,qBACA,YACA,aACA,qCACA,gBACA,kBACA,eACA,MACA,eACA,YACA,uBACA,WACA,gBACA,mBACA,gBACA,0BACA,iBACA,6BACA,kBACA,iBACA,oBACA,4BACA,mBACA,uBACA,mBACA,eACA,2BACA,cACA,qCACA,gCACA,iBACA,sBACA,0BACA,iBACA,iBACA,eACA,2BACA,eACA,gBACA,cACA,0BACA,eACA,8BACA,YACA,eACA,iBACA,oBACA,uCACA,gBACA,mBACA,gBACA,aACA,gBACA,YACA,aACA,kBACA,sBACA,oBACA,iBACA,uBACA,kBACA,UACA,kBACA,eACA,uBACA,kBACA,qBACA,uBACA,UACA,eACA,mBACA,iBACA,cACA,oBACA,eACA,0BACA,oBACA,cACA,mBACA,wBACA,mBACA,oBACA,mBACA,sBACA,wBACA,kBACA,uBACA,oBACA,yBACA,YACA,iBACA,cACA,mBACA,wBACA,mBACA,cACA,mBACA,WACA,gBACA,oBACA,gBACA,iBACA,MACA,eACA,eACA,WACA,kBACA,SACA,SACA,OACA,YACA,uBACA,qBACA,OACA,cACA,YACA,YACA,SACA,gBACA,kBACA,eACA,yBACA,0BACA,8BACA,2BACA,iCACA,uBACA,0BACA,uBACA,aACA,eACA,iBACA,cACA,mBACA,gBACA,cACA,UACA,kBACA,cACA,eACA,YACA,uBACA,iBACA,gBACA,eACA,gBACA,mBACA,kBACA,WACA,gBACA,UACA,mBACA,cACA,IACA,uBACA,sBACA,0BACA,mBACA,YACA,aACA,OACA,MACA,SACA,UACA,KACA,cACA,OACA,cACA,UACA,kBACA,yBACA,OACA,aACA,SACA,YACA,mBACA,aACA,8BACA,UACA,WACA,qBACA,gBACA,YACA,UACA,kBACA,kBACA,kBACA,WACA,kBACA,0BACA,UACA,UACA,gBACA,iBACA,cACA,iBACA,wBACA,KACA,SACA,QACA,oBACA,WACA,WACA,aACA,gBACA,YACA,2BACA,2BACA,gBACA,oBACA,MACA,QACA,eACA,kBACA,sBACA,8BACA,2BACA,aACA,iBACA,iBACA,2BACA,mBACA,iBACA,kBACA,eACA,OACA,UACA,UACA,WACA,UACA,WACA,UACA,aACA,oBACA,aACA,gBACA,uBACA,YACA,aACA,kBACA,QACA,YACA,UACA,gBACA,aACA,oBACA,qBACA,sBACA,wBACA,wBACA,gBACA,eACA,aACA,mBACA,oBACA,gBACA,sBACA,eACA,eACA,gBACA,aACA,mBACA,qBACA,cACA,uBACA,mBACA,kBACA,eACA,aACA,UACA,eACA,cACA,kBACA,UACA,WACA,iBACA,iBACA,kBACA,kBACA,cACA,kBACA,cACA,aACA,qBACA,YACA,YACA,aACA,iBACA,kBACA,wBACA,cACA,cACA,kBACA,cACA,cACA,OACA,UACA,iBACA,QACA,WACA,kBACA,UACA,eACA,kBACA,yBACA,aACA,qBACA,kBACA,mBACA,gBACA,kBACA,aACA,iBACA,mBACA,kBACA,cACA,cACA,gBACA,gBACA,kBACA,iBACA,cACA,gBACA,cACA,YACA,qBACA,+BACA,qBACA,qBACA,oBACA,yBACA,iBACA,mBACA,sBACA,mBACA,YACA,aACA,gBACA,kBACA,aACA,eACA,aACA,iBACA,qBACA,6BACA,WACA,OACA,eACA,6BACA,WACA,0BACA,eACA,YACA,uBACA,cACA,cACA,YACA,eACA,iBACA,eACA,qBACA,iBACA,eACA,QACA,2BACA,0BACA,cACA,OACA,YACA,aACA,UACA,iBACA,kBACA,cACA,cACA,cACA,QACA,aACA,MACA,aACA,aACA,uBACA,yBACA,sBACA,cACA,gBACA,iBACA,kBACA,YACA,4BACA,wBACA,cACA,mBACA,YACA,cACA,mBACA,0BACA,oBACA,iBACA,kBACA,oBACA,qBACA,mBACA,oBACA,kBACA,mBACA,iBACA,iBACA,mBACA,mBACA,qBACA,qBACA,eACA,qBACA,UACA,oBACA,gBACA,wBACA,sBACA,kBACA,mBACA,oBACA,kBACA,aACA,mBACA,gBACA,eACA,aACA,qBACA,KACA,OACA,UACA,sBACA,iBACA,UACA,YACA,kBACA,WACA,aACA,cACA,kBACA,WACA,OACA,iBACA,WACA,mBACA,aACA,sBACA,SACA,cACA,qBACA,QACA,cACA,cACA,eACA,qBACA,iBACA,oBACA,aACA,YACA,OACA,YACA,OACA,SACA,cACA,eACA,aACA,YACA,aACA,aACA,cACA,cACA,aACA,YACA,oBACA,2BACA,mBACA,aACA,YACA,YACA,YACA,OACA,YACA,aACA,YACA,WACA,QACA,aACA,oBACA,WACA,kBACA,mBACA,cACA,YACA,4BACA,sBACA,iBACA,gBACA,YACA,kBACA,iBACA,YACA,aACA,kBACA,0BACA,YACA,UACA,eACA,sBACA,kBACA,eACA,aACA,oBACA,qBACA,uBACA,mBACA,uBACA,eACA,aACA,kBACA,wBACA,iBACA,0BACA,kBACA,UACA,wBACA,iBACA,gBACA,gBACA,gBACA,cACA,qBACA,8BACA,mBACA,sBACA,cACA,eACA,YACA,eACA,sBACA,YACA,cACA,WACA,gBACA,WACA,0BACA,mBACA,oBACA,gBACA,8BACA,gBACA,UACA,aACA,QACA,oBACA,cACA,WACA,eACA,aACA,uBACA,wBACA,2BACA,aACA,iBACA,WACA,gBACA,qBACA,gBACA,YACA,gBACA,eACA,UACA,iBACA,oBACA,uBACA,wBACA,8BACA,iBACA,kBACA,SACA,eACA,UACA,eACA,YACA,qBACA,gBACA,uBACA,WACA,eACA,eACA,yBACA,qBACA,QACA,UACA,aACA,UACA,cACA,SACA,SACA,aACA,uBACA,gBACA,oBACA,sBACA,iBACA,QACA,kBACA,cACA,YACA,iBACA,kBACA,oBACA,6BACA,2BACA,aACA,sBACA,iBACA,iBACA,QACA,WACA,kBACA,qBACA,2BACA,qBACA,yBACA,aACA,yBACA,eACA,cACA,0BACA,kBACA,gBACA,uBACA,iBACA,oBACA,mBACA,qBACA,YACA,mBACA,qBACA,gBACA,8BACA,oBACA,qBACA,gBACA,oBACA,UACA,sBACA,aACA,oBACA,uBACA,8BACA,aACA,SACA,aACA,cACA,aACA,WACA,eACA,gBACA,aACA,eACA,UACA,YACA,cACA,UACA,gBACA,4BACA,YACA,cACA,aACA,uBACA,SACA,MACA,YACA,UACA,aACA,oBACA,YACA,aACA,SACA,qBACA,eACA,cACA,aACA,kBACA,uBACA,wBACA,WACA,eACA,WACA,gBACA,uBACA,eACA,oBACA,YACA,eACA,mBACA,gCACA,6BACA,6BACA,mCACA,WACA,oBACA,YACA,mBACA,QACA,yBACA,kBACA,kBACA,QACA,OACA,WACA,oBACA,sBACA,sBACA,aACA,oBACA,cACA,iBACA,iBACA,wBACA,QACA,iBACA,eACA,gBACA,oBACA,gBACA,OACA,SACA,eACA,cACA,gBACA,eACA,iBACA,oBACA,cACA,cACA,iBACA,gBACA,oBACA,cACA,gBACA,mBACA,cACA,aACA,eACA,aACA,gBACA,gBACA,oBACA,aACA,QACA,cACA,qBACA,YACA,YACA,mBACA,SACA,WACA,cACA,qBACA,cACA,YACA,mBACA,YACA,aACA,WACA,oBACA,cACA,YACA,SACA,WACA,WACA,UACA,YACA,uBACA,KACA,OACA,gBACA,WACA,WACA,gBACA,aACA,OACA,UACA,wBACA,aACA,eACA,QACA,WACA,OACA,oBACA,mBACA,uBACA,SACA,cACA,mBACA,YACA,eACA,sBACA,iBACA,mBACA,8BACA,mBACA,kBACA,sBACA,MACA,SACA,SACA,qBACA,mBACA,uBACA,SACA,mBACA,sBACA,UACA,cACA,SACA,iBACA,iBACA,sBACA,eACA,iBACA,mBACA,kBACA,iBACA,iBACA,yBACA,2BACA,cACA,qBACA,iBACA,cACA,qBACA,gBACA,eACA,uBACA,eACA,gBACA,wBACA,aACA,eACA,gBACA,UACA,eACA,aACA,4BACA,cACA,eACA,4BACA,oBACA,iBACA,oBACA,iBACA,OACA,aACA,WACA,YACA,YACA,qBACA,gBACA,UACA,cACA,0BACA,cACA,aACA,6BACA,gBACA,yBACA,aACA,YACA,mBACA,SACA,qBACA,yBACA,oBACA,mBACA,wBACA,2BACA,UACA,mBACA,0BACA,2BACA,iBACA,sBACA,cACA,oBACA,kBACA,aACA,YACA,mBACA,iBACA,aACA,aACA,WACA,eACA,iBACA,iBACA,mBACA,UACA,aACA,kBACA,oBACA,cACA,cACA,oBACA,kBACA,iBACA,6BACA,aACA,0BACA,mBACA,UACA,qBACA,iBACA,mBACA,qBACA,eACA,UACA,cACA,UACA,kBACA,eACA,mBACA,iBACA,mBACA,iBACA,iBACA,2BACA,iBACA,qBACA,qBACA,iBACA,kBACA,eACA,OACA,kBACA,aACA,YACA,eACA,SACA,oBACA,yBACA,wBACA,eACA,wBACA,mBACA,UACA,iBACA,mCACA,iBACA,qBACA,eACA,cACA,gBACA,uBACA,iBACA,mBACA,WACA,eACA,mBACA,cACA,WACA,qBACA,iBACA,YACA,SACA,QACA,aACA,gBACA,sBACA,mBACA,2BACA,qBACA,kBACA,qBACA,WACA,gBACA,iBACA,gBACA,mBACA,qBACA,oBACA,mBACA,gBACA,mBACA,cACA,iBACA,4BACA,0BACA,8BACA,qBACA,qBACA,eACA,OACA,kBACA,gBACA,gBACA,iBACA,eACA,aACA,QACA,UACA,SACA,cACA,aACA,cACA,iBACA,cACA,qBACA,iBACA,oBACA,QACA,eACA,iBACA,MACA,gBACA,iBACA,SACA,aACA,WACA,eACA,YACA,YACA,cACA,SACA,cACA,eACA,kBACA,OACA,gBACA,cACA,WACA,WACA,aACA,MACA,aACA,mBACA,aACA,oBACA,iBACA,0BACA,QACA,WACA,qBACA,qBACA,cACA,uBACA,mBACA,aACA,iBACA,gBACA,eACA,cACA,gBACA,sBACA,0BACA,eACA,WACA,OACA,WACA,iBACA,iBACA,kBACA,sBACA,eACA,QACA,SACA,iBACA,sBACA,cACA,eACA,cACA,kBACA,mBACA,gBACA,mBACA,OACA,gBACA,uBACA,2BACA,+BACA,sBACA,iBACA,qBACA,iBACA,8BACA,WACA,gBACA,WACA,gBACA,kBACA,yBACA,uBACA,aACA,cACA,gBACA,cACA,wBACA,aACA,mBACA,iBACA,mBACA,oBACA,gBACA,oBACA,qBACA,MACA,OACA,mBACA,8BACA,kBACA,cACA,gBACA,eACA,gBACA,2BACA,4BACA,aACA,SACA,aACA,mBACA,gBACA,mBACA,cACA,YACA,mBACA,gBACA,0BACA,4BACA,2BACA,sBACA,uBACA,yBACA,oBACA,8BACA,gBACA,uBACA,oBACA,qBACA,YACA,gBACA,iBACA,uBACA,yBACA,kCACA,2BACA,WACA,cACA,WACA,oBACA,yBACA,gBACA,gBACA,eACA,mBACA,eACA,eACA,oBACA,oBACA,mBACA,kBACA,4BACA,kBACA,oBACA,uBACA,gBACA,SACA,oBACA,aACA,iBACA,iBACA,oBACA,iBACA,gBACA,iBACA,kBACA,gBACA,gBACA,cACA,MACA,cACA,kBACA,gBACA,WACA,wBACA,oBACA,aACA,aACA,eACA,iBACA,wBACA,cACA,wBACA,wBACA,aACA,mBACA,iBACA,eACA,cACA,8BACA,sBACA,oBACA,oBACA,4BACA,oBACA,iBACA,mBACA,SACA,YACA,YACA,mBACA,UACA,WACA,WACA,UACA,UACA,iBACA,kBACA,QACA,cACA,UACA,iBACA,oBACA,cACA,mBACA,8BACA,wBACA,QACA,iBACA,WACA,gBACA,uBACA,iBACA,kBACA,mBACA,uBACA,eACA,OACA,kBACA,qBACA,iBACA,kBACA,gBACA,eACA,qBACA,iBACA,eACA,eACA,oBACA,yBACA,kBACA,0BACA,iBACA,0BACA,gBACA,mBACA,wBACA,uBACA,mBACA,iBACA,wBACA,eACA,cACA,kBACA,kBACA,iBACA,OACA,YACA,iBACA,uBACA,oBACA,cACA,WACA,kBACA,cACA,eACA,iBACA,oBACA,UACA,WACA,MACA,OACA,2BACA,mBACA,sBACA,oBACA,6BACA,oBACA,oBACA,iBACA,OACA,eACA,cACA,aACA,WACA,oBACA,sBACA,WACA,yBACA,YACA,OACA,qBACA,qBACA,oBACA,oBACA,SACA,WACA,cACA,qBACA,YACA,mBACA,YACA,OACA,eACA,QACA,cACA,UACA,qBACA,wBACA,0BACA,yBACA,kBACA,oBACA,2BACA,eACA,UACA,iBACA,kBACA,SACA,gBACA,eACA,iBACA,eACA,aACA,oBACA,eACA,UACA,gBACA,iBACA,eACA,2BACA,eACA,yBACA,aACA,YACA,eACA,QACA,cACA,eACA,OACA,SACA,WACA,oBACA,QACA,mBACA,YACA,cACA,aACA,MACA,QACA,iBACA,YACA,SACA,WACA,OACA,kBACA,wBACA,gBACA,eACA,eACA,oBACA,cACA,cACA,qBACA,gBACA,cACA,2BACA,gBACA,6BACA,QACA,gBACA,kBACA,mBACA,cACA,cACA,kBACA,mBACA,cACA,mBACA,cACA,cACA,oBACA,kBACA,mBACA,qBACA,yBACA,uBACA,2BACA,kBACA,4BACA,SACA,YACA,eACA,mBACA,mBACA,oBACA,oBACA,qBACA,kBACA,kBACA,iBACA,uBACA,0BACA,eACA,oBACA,eACA,oBACA,yBACA,eACA,oBACA,eACA,oBACA,SACA,sBACA,eACA,eACA,cACA,gBACA,QACA,UACA,eACA,OACA,UACA,iBACA,SACA,2BACA,cACA,qBACA,gBACA,yBACA,WACA,eACA,oBACA,iBACA,sBACA,cACA,aACA,cACA,mBACA,wBACA,qBACA,QACA,aACA,gBACA,sBACA,kBACA,eACA,eACA,yBACA,oBACA,0BACA,eACA,cACA,eACA,oBACA,sBACA,OACA,kBACA,WACA,YACA,wBACA,uBACA,mBACA,cACA,gBACA,eACA,qBACA,eACA,kBACA,kBACA,qBACA,uBACA,gBACA,kBACA,wBACA,sBACA,+BACA,yBACA,mCACA,6BACA,aACA,mBACA,cACA,0BACA,iBACA,iBACA,aACA,aACA,uBACA,oBACA,oBACA,kBACA,sBACA,sBACA,6BACA,oBACA,gBACA,aACA,eACA,iBACA,UACA,cACA,cACA,SACA,cACA,kBACA,cACA,kBACA,cACA,eACA,aACA,cACA,mBACA,gBACA,aACA,eACA,cACA,eACA,aACA,eACA,eACA,gBACA,iBACA,aACA,kBACA,iBACA,UACA,eACA,gBACA,oBACA,oBACA,gBACA,eACA,mBACA,oBACA,iBACA,cACA,gBACA,aACA,iBACA,oBACA,iBACA,aACA,aACA,eACA,oBACA,aACA,uBACA,kBACA,uBACA,sBACA,UACA,UACA,OACA,uBACA,QACA,WACA,qBACA,YACA,mBACA,YACA,aACA,kBACA,mBACA,0BACA,aACA,aACA,iBACA,YACA,eACA,WACA,WACA,UACA,mCACA,0BACA,gBACA,YACA,eACA,sBACA,cACA,eACA,SACA,cACA,cACA,cACA,YACA,iBACA,UACA,gBACA,UACA,UACA,qBACA,iBACA,oBACA,2BACA,mBACA,iBACA,WACA,eACA,gBACA,YACA,WACA,gBACA,qBACA,gBACA,UACA,WACA,MACA,iBACA,iBACA,SACA,cACA,UACA,SACA,cACA,aACA,gBACA,YACA,cACA,iBACA,wBACA,WACA,gBACA,YACA,OACA,WACA,oBACA,cACA,eACA,cACA,kBACA,uBACA,mBACA,gBACA,mBACA,gBACA,qBACA,iBACA,eACA,SACA,SACA,aACA,gBACA,YACA,iBACA,eACA,mBACA,sBACA,qBACA,aACA,mBACA,wBACA,iCACA,mCACA,yBACA,4BACA,sBACA,WACA,SACA,aACA,oBACA,eACA,eACA,UACA,0BACA,mBACA,uBACA,sBACA,uBACA,8BACA,oBACA,kBACA,YACA,iBACA,oBACA,wBACA,gBACA,cACA,gBACA,sBACA,uBACA,gCACA,kBACA,+BACA,yBACA,eACA,sBACA,iCACA,4BACA,aACA,gBACA,oBACA,kBACA,0BACA,oBACA,+BACA,qBACA,yBACA,sBACA,8BACA,qBACA,wBACA,oBACA,oBACA,8BACA,4BACA,mCACA,mCACA,aACA,aACA,MACA,aACA,QACA,kBACA,aACA,kBACA,YACA,gBACA,eACA,YACA,eACA,yBACA,uBACA,sBACA,cACA,UACA,aACA,oBACA,SACA,aACA,gBACA,eACA,SACA,gBACA,WACA,WACA,OACA,WACA,cACA,gBACA,WACA,eACA,iBACA,YACA,QACA,MACA,OACA,eACA,kBACA,eACA,cACA,YACA,cACA,aACA,aACA,aACA,QACA,cACA,WACA,aACA,mBACA,gBACA,iBACA,cACA,qBACA,mBACA,qBACA,aACA,iBACA,mBACA,eACA,uBACA,sBACA,mBACA,eACA,eACA,qBACA,YACA,oBACA,iBACA,mBACA,eACA,gBACA,UACA,aACA,eACA,iBACA,kBACA,cACA,SACA,aACA,mBACA,mBACA,cACA,iBACA,wBACA,UACA,UACA,OACA,YACA,mBACA,gBACA,WACA,kBACA,UACA,YACA,WACA,oBACA,eACA,WACA,cACA,WACA,WACA,oBACA,WACA,aACA,gBACA,eACA,gBACA,aACA,mBACA,gBACA,aACA,gBACA,YACA,kBACA,UACA,4BACA,2BACA,YACA,YACA,oBACA,mBACA,QACA,YACA,OACA,WACA,WACA,kBACA,SACA,iBACA,eACA,YACA,UACA,QACA,YACA,YACA,WACA,QACA,aACA,WACA,QACA,aACA,iBACA,aACA,kBACA,iBACA,gBACA,aACA,WACA,eACA,aACA,cACA,gBACA,QACA,UACA,aACA,sBACA,qBACA,mBACA,0BACA,gBACA,sBACA,kBACA,qBACA,qBACA,oBACA,kBACA,mBACA,mBACA,WACA,YACA,4BACA,sBACA,WACA,kBACA,iBACA,SACA,OACA,gBACA,aACA,UACA,kBACA,UACA,wBACA,SACA,QACA,sBACA,WACA,iBACA,eACA,aACA,WACA,SACA,cACA,UACA,aACA,aACA,oBACA,mBACA,yBACA,aACA,YACA,cACA,WACA,gBACA,SACA,UACA,aACA,oBACA,eACA,eACA,cACA,MACA,kBACA,qBACA,kBACA,aACA,UACA,yBACA,WACA,QACA,cACA,aACA,uBACA,aACA,gBACA,sBACA,8BACA,cACA,KACA,QACA,aACA,cACA,gBACA,aACA,cACA,eACA,gBACA,aACA,WACA,UACA,gBACA,aACA,YACA,iBACA,mBACA,yBACA,eACA,kBACA,8BACA,sBACA,mBACA,gCACA,2BACA,+BACA,4BACA,4BACA,yBACA,yBACA,yBACA,yBACA,wBACA,wBACA,4BACA,wBACA,sBACA,yBACA,0BACA,uBACA,0BACA,mBACA,qBACA,oBACA,sBACA,qBACA,mBACA,yBACA,2BACA,YACA,qBACA,uBACA,gBACA,cACA,mBACA,YACA,iBACA,gBACA,mBACA,uBACA,iBACA,qBACA,eACA,aACA,WACA,YACA,aACA,WACA,aACA,WACA,iBACA,oBACA,sBACA,eACA,yBACA,kBACA,OACA,aACA,aACA,iBACA,UACA,aACA,YACA,cACA,kBACA,oBACA,OACA,QACA,wBACA,sBACA,kCACA,+BACA,QACA,OACA,qBACA,4BACA,UACA,iBACA,sBACA,6BACA,UACA,0BACA,cACA,aACA,SACA,aACA,gBACA,kBACA,aACA,QACA,gBACA,SACA,aACA,0BACA,YACA,WACA,YACA,aACA,kBACA,qBACA,4BACA,cACA,iBACA,wBACA,sBACA,iBACA,kBACA,mBACA,cACA,uBACA,UACA,YACA,cACA,sBACA,2BACA,oBACA,yBACA,YACA,QACA,qBACA,YACA,SACA,iBACA,UACA,cACA,iBACA,UACA,eACA,eACA,WACA,aACA,eACA,aACA,kBACA,kBACA,oBACA,iBACA,WACA,YACA,8BACA,UACA,mBACA,QACA,cACA,qBACA,KACA,UACA,aACA,mBACA,SACA,uBACA,kCACA,iBACA,oBACA,oBACA,cACA,gBACA,aACA,iBACA,kBACA,qBACA,yBACA,WACA,QACA,eACA,QACA,aACA,OACA,WACA,MACA,WACA,YACA,gBACA,cACA,oBACA,YACA,aACA,YACA,WACA,uBACA,WACA,iBACA,iBACA,UACA,kBACA,UACA,sBACA,aACA,YACA,mBACA,qBACA,QACA,gBACA,kBACA,QACA,uBACA,mBACA,gBACA,QACA,WACA,kBACA,kBACA,YACA,6BACA,SACA,SACA,aACA,YACA,WACA,0BACA,4BACA,4BACA,eACA,cACA,eACA,oBACA,sBACA,6BACA,oBACA,kBACA,gBACA,qBACA,aACA,kBACA,gBACA,aACA,eACA,eACA,UACA,cACA,UACA,cACA,gBACA,cACA,cACA,MACA,WACA,UACA,mCACA,mBACA,oBACA,mBACA,yBACA,sBACA,uBACA,6BACA,kBACA,wBACA,UACA,uBACA,gBACA,YACA,iBACA,eACA,kBACA,qBACA,iBACA,wBACA,oBACA,8BACA,yBACA,cACA,eACA,wBACA,eACA,eACA,uBACA,qBACA,oBACA,iBACA,cACA,0BACA,iBACA,eACA,mBACA,aACA,gBACA,qBACA,kBACA,UACA,0BACA,gBACA,cACA,sBACA,aACA,cACA,2BACA,eACA,uBACA,WACA,cACA,eACA,gBACA,oBACA,iBACA,gBACA,QACA,gBACA,qBACA,iBACA,gBACA,aACA,YACA,SACA,YACA,cACA,eACA,kBACA,cACA,YACA,YACA,aACA,aACA,YACA,4BACA,WACA,iBACA,YACA,aACA,eACA,mBACA,UACA,cACA,iBACA,oBACA,cACA,SACA,uBACA,cACA,UACA,uBACA,WACA,YACA,qBACA,sCACA,yBACA,wBACA,kBACA,sBACA,oBACA,iCACA,mBACA,4BACA,mBACA,kBACA,oBACA,oBACA,aACA,aACA,eACA,mBACA,mBACA,4BACA,iCACA,wBACA,mBACA,cACA,sBACA,iBACA,mBACA,SACA,aACA,WACA,iBACA,YACA,mBACA,cACA,kBACA,QACA,YACA,sBACA,gBACA,gBACA,gBACA,kBACA,kBACA,kBACA,yBACA,0BACA,0BACA,0BACA,yBACA,yBACA,wBACA,eACA,oBACA,mBACA,kBACA,yBACA,0BACA,eACA,iBACA,UACA,cACA,aACA,YACA,QACA,QACA,QACA,oBACA,aACA,aACA,sBACA,aACA,aACA,eACA,gBACA,UACA,+BACA,eACA,iBACA,gBACA,kBACA,SACA,aACA,oBACA,eACA,iBACA,oBACA,iBACA,iBACA,cACA,sBACA,gBACA,gBACA,gBACA,yBACA,iBACA,aACA,mBACA,cACA,iBACA,cACA,gBACA,iBACA,iBACA,qBACA,4BACA,OACA,eACA,mBACA,uBACA,qBACA,sBACA,OACA,eACA,gBACA,YACA,YACA,aACA,WACA,iBACA,gBACA,oBACA,WACA,kBACA,aACA,wBACA,iBACA,eACA,WACA,kBACA,mBACA,aACA,QACA,YACA,cACA,YACA,aACA,YACA,cACA,OACA,MACA,WACA,SACA,YACA,oBACA,WACA,gBACA,WACA,iBACA,OACA,WACA,cACA,mBACA,aACA,aACA,QACA,aACA,WACA,qBACA,iBACA,4BACA,mBACA,oBACA,iCACA,iBACA,kBACA,eACA,oBACA,iBACA,iBACA,qBACA,sBACA,iBACA,wBACA,cACA,eACA,kBACA,YACA,gBACA,sBACA,YACA,eACA,qBACA,sBACA,oBACA,aACA,kBACA,mBACA,yBACA,mBACA,uBACA,yBACA,sBACA,sBACA,mBACA,eACA,iBACA,gBACA,sBACA,mCACA,eACA,qBACA,iBACA,qBACA,WACA,eACA,wBACA,WACA,eACA,gBACA,eACA,eACA,qBACA,kBACA,oBACA,2BACA,4BACA,eACA,mBACA,wBACA,oBACA,kBACA,2BACA,eACA,qBACA,gCACA,WACA,mBACA,uBACA,qBACA,QACA,yBACA,sBACA,gBACA,UACA,uBACA,yBACA,yBACA,iBACA,2BACA,uBACA,UACA,uBACA,gBACA,cACA,YACA,mBACA,kBACA,eACA,mBACA,sBACA,wBACA,qBACA,iBACA,iBACA,mBACA,eACA,eACA,aACA,wBACA,mBACA,iBACA,kBACA,iBACA,wBACA,oBACA,kBACA,0BACA,SACA,iBACA,sBACA,aACA,oBACA,yBACA,wBACA,oBACA,kBACA,eACA,YACA,YACA,mBACA,eACA,yBACA,aACA,oBACA,iBACA,uBACA,eACA,QACA,UACA,iBACA,eACA,aACA,mBACA,oBACA,iBACA,kBACA,kBACA,aACA,eACA,oBACA,eACA,qBACA,uBACA,0BACA,oBACA,aACA,qBACA,gBACA,iBACA,iBACA,eACA,mBACA,YACA,oBACA,aACA,sBACA,gBACA,eACA,gBACA,oBACA,qBACA,kBACA,cACA,aACA,8BACA,aACA,WACA,eACA,OACA,mBACA,UACA,eACA,mBACA,uBACA,YACA,cACA,mBACA,gBACA,gBACA,QACA,qBACA,mBACA,eACA,wBACA,mBACA,mBACA,iBACA,aACA,QACA,OACA,wBACA,qBACA,YACA,WACA,cACA,gBACA,uBACA,aACA,kBACA,iBACA,sBACA,eACA,eACA,eACA,kBACA,2BACA,sBACA,iBACA,oBACA,sBACA,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AAO,oBAET2F,EAAK7E,gBAKX1/E,EAAOC,QAAU+7G,G,kBC/CjB,SAAS/jR,EAAOulP,GACd,OAAKA,EACa,kBAAPA,EAAwBA,EAE5BA,EAAGvlP,OAHM,KAUlB,SAAS4O,KAAUizF,GACjB,MAAM2jJ,EAAS3jJ,EAAKrpG,KAAK4M,GAAMpF,EAAOoF,KAAIvH,KAAK,IAC/C,OAAO2nP,EAUT,SAASC,KAAU5jJ,GACjB,MAAM2jJ,EAAS,IAAM3jJ,EAAKrpG,KAAK4M,GAAMpF,EAAOoF,KAAIvH,KAAK,KAAO,IAC5D,OAAO2nP,EAWT,SAASy+B,EAAK33B,GACZ,MAAM0N,EAAW,CACf,MACA,SACA,QACA,MACA,QACA,OACA,UACA,QACA,QACA,SACA,QACA,QACA,QACA,OACA,QACA,MACA,SACA,QACA,WACA,UACA,WACA,MACA,QACA,WACA,UACA,UACA,SACA,MACA,KACA,OACA,OACA,OACA,QACA,WACA,aACA,YACA,cACA,WACA,aACA,MACA,OACA,OACA,SACA,OACA,MACA,QACA,SACA,QACA,MACA,UACA,OACA,SACA,WACA,OACA,WACA,WACA,WACA,gBACA,gBACA,aACA,WACA,eACA,eACA,YACA,cACA,UACA,cACA,iBACA,mBACA,cACA,WACA,WACA,WACA,gBACA,gBACA,aACA,cACA,aACA,QACA,OACA,SACA,OACA,OACA,KACA,MACA,KACA,QACA,MACA,QACA,OACA,OACA,OACA,OACA,KACA,UACA,SACA,OACA,SACA,QACA,YACA,MACA,QACA,KACA,KACA,MACA,QACA,SACA,SACA,SACA,SACA,KACA,KACA,OACA,KACA,MACA,MACA,OACA,UACA,KACA,MACA,MACA,OACA,UACA,OACA,MACA,MACA,QACA,SACA,YACA,OACA,MACA,KACA,YACA,KACA,KACA,OACA,OACA,UACA,WACA,WACA,WACA,OACA,OACA,MACA,SACA,UACA,QACA,SACA,UACA,YACA,SACA,QACA,MACA,SACA,OACA,UACA,SACA,SACA,SACA,QACA,OACA,WACA,aACA,YACA,UACA,cACA,cACA,WACA,aACA,aACA,QACA,SACA,SACA,UACA,WACA,WACA,MACA,QACA,SACA,aACA,OACA,SACA,QACA,UACA,OACA,QACA,OACA,QACA,QACA,MACA,SACA,UACA,UACA,UACA,UACA,UACA,SACA,WACA,OACA,UACA,MACA,OACA,OACA,QACA,KACA,WACA,KACA,UACA,QACA,QACA,SACA,SACA,SACA,UACA,QACA,QACA,MACA,QACA,SACA,MACA,OACA,UACA,YACA,OACA,OACA,QACA,QACA,MACA,MACA,OAIIkqB,EAAkB,uBAClBC,EAAgB,CACpB74B,SAAU,SACVnC,QAAS6Q,EAASn8P,KAAK,MAEnBo8P,EAAQ,CACZ1iQ,UAAW,QACXovP,MAAO,UACPr9O,IAAK,MACLi/O,SAAU47B,GAENlb,EAAS,CACbtiB,MAAO,OACPr9O,IAAK,MAGD+zP,EAAM,CACVnR,SAAU,CACR,CACEvF,MAAO,QAET,CACEA,MAAO/3O,EACL,iDAGA,0BAGJ,CACE+3O,MAAO,gBACPC,UAAW,KAIXw9B,EAAkB,CACtB93B,EAAKxF,iBACLmT,EACAoD,GAEIgnB,EAAe,CACnB,IACA,KACA,KACA,KACA,IACA,IACA,KAOIC,EAAmB,CAAC9tO,EAAQvd,EAAMsf,EAAQ,SAC9C,MAAMgsO,EAAoB,QAAVhsO,EACZA,EACA3pC,EAAO2pC,EAAOtf,GAClB,OAAOrqB,EACLA,EAAO,MAAO4nC,EAAQ,KACtBvd,EACA,oBACAsrP,EACA,oBACAhsO,EACA2rO,IAQEM,EAAY,CAAChuO,EAAQvd,EAAMsf,IACxB3pC,EACLA,EAAO,MAAO4nC,EAAQ,KACtBvd,EACA,oBACAsf,EACA2rO,GAGEO,EAAwB,CAC5BpnB,EACA/Q,EAAK/E,kBACL+E,EAAKnF,QACH,OACA,OACA,CACEwE,gBAAgB,IAGpBsd,EACA,CACE1xQ,UAAW,SACX4lE,SAAUinN,EACVl4B,SAAU,CACR,CACEvF,MAAO,kBACPr9O,IAAK,MACLs9O,UAAW,GAEb,CACED,MAAO,kBACPr9O,IAAK,MACLs9O,UAAW,GAEb,CACED,MAAO,k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,SAGIvoB,EAAY,CAChB,aACA,MACA,MACA,MACA,QACA,MACA,OACA,aACA,YACA,QACA,WACA,MACA,cACA,UACA,UACA,UACA,OACA,MACA,SACA,YACA,OACA,OACA,SACA,QACA,SACA,YACA,UACA,UACA,UACA,OACA,OACA,MACA,KACA,QACA,MACA,aACA,aACA,OACA,MACA,OACA,SACA,MACA,MACA,aACA,MACA,OACA,SACA,MACA,OACA,MACA,MACA,QACA,WACA,QACA,OACA,WACA,QACA,MACA,UACA,QACA,SACA,eACA,MACA,MACA,QACA,QACA,OACA,OACA,OAGI7B,EAAW,CACf,YACA,WACA,QACA,OACA,iBACA,QAMIh2C,EAAQ,CACZ,MACA,WACA,YACA,OACA,OACA,UACA,UACA,WACA,WACA,MACA,QACA,OACA,SAGI2xC,EAAW,CACf1O,SAAU,sBACVnC,QAASs/B,EACTlxB,SAAU2I,EACV5I,QAAS+G,EACT//P,KAAM+pN,GAGFqgE,EAAS,CACbnxR,UAAW,OACXovP,MAAO,kBAGHsT,EAAQ,CACZ1iQ,UAAW,QACXovP,MAAO,KACPr9O,IAAK,KACLi/O,SAAUyR,EACVhT,QAAS,KAGL2hC,EAAkB,CACtBhiC,MAAO,OACPC,UAAW,GAGPx3I,EAAS,CACb73G,UAAW,SACX4lE,SAAU,CAAEmvL,EAAKxF,kBACjBoF,SAAU,CACR,CACEvF,MAAO,yCACPr9O,IAAK,MACL6zD,SAAU,CACRmvL,EAAKxF,iBACL4hC,GAEF9hC,UAAW,IAEb,CACED,MAAO,yCACPr9O,IAAK,MACL6zD,SAAU,CACRmvL,EAAKxF,iBACL4hC,GAEF9hC,UAAW,IAEb,CACED,MAAO,8BACPr9O,IAAK,MACL6zD,SAAU,CACRmvL,EAAKxF,iBACL4hC,EACAC,EACA1uB,IAGJ,CACEtT,MAAO,8BACPr9O,IAAK,MACL6zD,SAAU,CACRmvL,EAAKxF,iBACL4hC,EACAC,EACA1uB,IAGJ,CACEtT,MAAO,eACPr9O,IAAK,IACLs9O,UAAW,IAEb,CACED,MAAO,eACPr9O,IAAK,IACLs9O,UAAW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K,QAGT6zD,SAAU,CACR0vN,EACAvhG,EACAs0E,IAcJ,OAVAA,EAAKziM,SAAW,CACd45L,EACA1nJ,EACAD,EACAsuK,EACAkP,EACAhP,EACAje,GACA/wP,OAAO0vP,GAEF,CACL97P,KAAM,SACNwkP,QAAS,KACT7pL,SAAU,CACRmvL,EAAK9F,UACLn3I,EACAD,EACAw9K,EACAhP,EACAje,GACA/wP,OAAO0vP,IAIbv2F,EAAOC,QAAUwkH,G,kBCrMjB,SAASM,EAAOxgC,GACd,MAAMygC,EAAkB,CACtBzgC,EAAK7E,cACL,CACElwP,UAAW,SACXovP,MAAO,OACPr9O,IAAK,OACL6zD,SAAU,CAAEmvL,EAAKxF,iBACf,CACEH,MAAO,SAKf,MAAO,CACLnkP,KAAM,SACN0rP,QAAS,CAAE,OACX3F,SAAU,CACR+C,SAAU,QACVnC,QAAS,wIAETmO,QACE,6CACFC,SACC,4bAOHvQ,QAAS,uBACT7pL,SAAU,CACR,CACE5lE,UAAW,WACX8wP,cAAe,WACf/+O,IAAK,IACL6zD,SAAU,CACRmvL,EAAKxE,sBACL,CACEvwP,UAAW,SACXovP,MAAO,MACPr9O,IAAK,SAMX,CACEq9O,MAAO,gCACPC,UAAW,GAEb,CACED,MAAO,MACPr9O,IAAK,aACLs9O,UAAW,EACXzpL,SAAU4vN,GAEZzgC,EAAKnF,QAAQ,KAAM,MACnBv4O,OAAOm+Q,IAIbhlH,EAAOC,QAAU8kH,G,kBCxEjB,MAAM5kC,EAASoE,IACN,CACL0W,UAAW,CACTzrQ,UAAW,OACXovP,MAAO,cAETsc,SAAU,CACR1rQ,UAAW,SACXovP,MAAO,oCAETuc,wBAAyB,CACvB3rQ,UAAW,gBACXovP,MAAO,KACPr9O,IAAK,KACL09O,QAAS,IACT7pL,SAAU,CACRmvL,EAAKvF,iBACLuF,EAAKrF,sBAMPkc,EAAO,CACX,IACA,OACA,UACA,UACA,QACA,QACA,IACA,aACA,OACA,SACA,SACA,UACA,OACA,OACA,KACA,MACA,UACA,MACA,MACA,KACA,KACA,KACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,SACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,OACA,OACA,MACA,SACA,KACA,IACA,IACA,QACA,OACA,UACA,OACA,SACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,KACA,KACA,MACA,SAGIC,EAAiB,CACrB,YACA,cACA,eACA,QACA,cACA,cACA,sBACA,gBACA,eACA,eACA,gBACA,OACA,SACA,QACA,kBACA,aACA,cACA,iBACA,kBACA,UACA,uBACA,mBACA,yBACA,+BACA,aACA,OACA,YACA,SACA,QAEA,YACA,YACA,aACA,cAIIC,EAAiB,CACrB,SACA,WACA,QACA,UACA,UACA,UACA,UACA,MACA,WACA,OACA,QACA,UACA,QACA,cACA,gBACA,aACA,SACA,QACA,gBACA,eACA,MACA,OACA,eACA,QACA,gBACA,WACA,UACA,KACA,OACA,aACA,eACA,OACA,OACA,aACA,MACA,YACA,UACA,iBACA,eACA,mBACA,cACA,aACA,eACA,WACA,eACA,OACA,oBACA,YACA,aACA,WACA,QACA,OACA,QACA,SACA,gBACA,eACA,QACA,UACA,SAIIC,EAAkB,CACtB,QACA,WACA,SACA,MACA,aACA,eACA,aACA,gBACA,SACA,OACA,cACA,YACA,UACA,kBAGIC,EAAa,CACjB,gBACA,cACA,aACA,YACA,kBACA,sBACA,qBACA,sBACA,4BACA,iBACA,uBACA,4BACA,OACA,sBACA,aACA,wBACA,kBACA,mBACA,mBACA,oBACA,sBACA,oBACA,kBACA,SACA,gBACA,sBACA,4BACA,6BACA,sBACA,sBACA,kBACA,eACA,eACA,sBACA,sBACA,qBACA,sBACA,qBACA,cACA,oBACA,oBACA,oBACA,gBACA,eACA,qBACA,qBACA,qBACA,iBACA,eACA,aACA,mBACA,yBACA,0BACA,mBACA,mBACA,eACA,SACA,uBACA,aACA,aACA,cACA,eACA,eACA,eACA,QACA,OACA,YACA,QACA,eACA,cACA,aACA,cACA,oBACA,oBACA,oBACA,cACA,eACA,UACA,UACA,oBACA,gBACA,SACA,YACA,UACA,cACA,SACA,OACA,aACA,iBACA,YACA,YACA,cACA,YACA,QACA,OACA,eACA,cACA,wBACA,eACA,yBACA,YACA,mBACA,iBACA,eACA,aACA,eACA,yBACA,0BACA,cACA,SACA,UACA,OACA,oBACA,kBACA,mBACA,WACA,UACA,UACA,kBACA,OACA,iBACA,cACA,aACA,mBACA,sBACA,kBACA,SACA,gBACA,cACA,eACA,aACA,QACA,OACA,aACA,YACA,aACA,YACA,WACA,YACA,WACA,YACA,SACA,OACA,SACA,aACA,kBACA,UACA,QACA,UACA,UACA,gBACA,iBACA,gBACA,gBACA,WACA,gBACA,aACA,aACA,UACA,iBACA,eACA,gBACA,cACA,mBACA,oBACA,oBACA,cACA,qBACA,iBACA,WACA,SACA,SACA,QACA,MACA,WACA,eACA,aACA,kBACA,kBACA,wBACA,uBACA,wBACA,cACA,gBACA,iBACA,cACA,iBACA,0BACA,MACA,YACA,mBACA,kBACA,aACA,mBACA,sBACA,sBACA,6BACA,eACA,iBACA,aACA,cACA,SACA,QACA,aACA,eACA,YACA,WAGA3vP,UAWF,SAASo5Q,EAAK1gC,GACZ,MAAMkX,EAAQtb,EAAMoE,GACd2gC,EAAoB3pB,EACpB4pB,EAAmB7pB,EAEnBP,EAAgB,WAChBY,EAAe,kBACfxd,EAAW,0BACX0W,EAAW,CACfrlQ,UAAW,WACXovP,MAAO,OAAST,EAAW,QAG7B,MAAO,CACL1jP,KAAM,OACNknP,kBAAkB,EAClB1C,QAAS,SACT7pL,SAAU,CACRmvL,EAAKjF,oBACLiF,EAAKhF,qBACL,CACE/vP,UAAW,cACXovP,MAAO,kBACPC,UAAW,GAEb,CACErvP,UAAW,iBACXovP,MAAO,oBACPC,UAAW,GAEb4c,EAAMN,wBACN,CACE3rQ,UAAW,eACXovP,MAAO,OAASwc,EAAKtlQ,KAAK,KAAO,OAEjC+oP,UAAW,GAEb,CACErvP,UAAW,kBACXovP,MAAO,KAAOumC,EAAiBrvR,KAAK,KAAO,KAE7C,CACEtG,UAAW,kBACXovP,MAAO,MAAQsmC,EAAkBpvR,KAAK,KAAO,KAE/C++P,EACA,CACEjW,MAAO,KACPr9O,IAAK,KACL6zD,SAAU,CAAEmvL,EAAK3E,kBAEnB,CACEpwP,UAAW,YACXovP,MAAO,OAAS4c,EAAW1lQ,KAAK,KAAO,QAEzC,CACE8oP,MAAO,8oCAET,CACEA,MAAO,IACPr9O,IAAK,IACL6zD,SAAU,CACRy/L,EACA4G,EAAMP,SACN3W,EAAK3E,gBACL2E,EAAKrF,kBACLqF,EAAKvF,iBACLyc,EAAMR,YAMV,CACErc,MAAO,oBACP4E,QAASuX,EACTva,SAAU,oBAEZ,CACE5B,MAAO,IACPr9O,IAAK,OACLsnP,aAAa,EACbrI,SAAU,CACR+C,SAAU,UACVnC,QAASua,EACT74O,UAAWu4O,EAAevlQ,KAAK,MAEjCs/D,SAAU,CACR,CACEwpL,MAAOmc,EACPvrQ,UAAW,WAEb,CACEovP,MAAO,eACPpvP,UAAW,aAEbqlQ,EACAtQ,EAAKrF,kBACLqF,EAAKvF,iBACLyc,EAAMP,SACN3W,EAAK3E,oBAOf5/E,EAAOC,QAAUglH,G,kBCvhBjB,SAASG,EAAM7gC,GACb,MAAO,CACL9pP,KAAM,gBACN0rP,QAAS,CAAE,WACX/wL,SAAU,CACR,CACE5lE,UAAW,OAIXovP,MAAO,iCACPoF,OAAQ,CACNziP,IAAK,gBACLwmP,YAAa,WAOvB/nF,EAAOC,QAAUmlH,G,kBCtBjB,SAASC,EAAM9gC,GACb,MAAM+gC,EAAuB,CAC3B,MACA,MACA,MACA,OACA,OACA,QACA,MACA,SACA,QACA,OACA,KACA,MACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,SACA,MACA,MACA,OACA,MACA,QACA,OACA,OAEIC,EAAwB,CAC5B,OACA,OACA,QACA,QACA,UACA,OACA,SACA,UACA,UACA,OACA,WACA,SACA,OACA,UACA,SACA,OACA,UAEIC,EAAiB,CACrB,YACA,cACA,WACA,QACA,YACA,SACA,UACA,YACA,S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CAvF,EACAJ,EACA4D,GAEF7T,QAAS,UAIbj/E,EAAOC,QAAU2lH,G,kBCtbjB,SAAS3tR,EAAOulP,GACd,OAAKA,EACa,kBAAPA,EAAwBA,EAE5BA,EAAGvlP,OAHM,KAUlB,SAAS4O,KAAUizF,GACjB,MAAM2jJ,EAAS3jJ,EAAKrpG,KAAK4M,GAAMpF,EAAOoF,KAAIvH,KAAK,IAC/C,OAAO2nP,EAUT,SAASC,KAAU5jJ,GACjB,MAAM2jJ,EAAS,IAAM3jJ,EAAKrpG,KAAK4M,GAAMpF,EAAOoF,KAAIvH,KAAK,KAAO,IAC5D,OAAO2nP,EAST,SAASooC,EAAIthC,GACX,MAAMw4B,EAAex4B,EAAKnF,QAAQ,KAAM,KAClC/3I,EAAS,CACb73G,UAAW,SACX20P,SAAU,CACR,CACEvF,MAAO,IACPr9O,IAAK,IACL6zD,SAAU,CACR,CAACwpL,MAAO,UAKVknC,EAAoB,CACxBlnC,MAAO,IACPr9O,IAAK,IACL6zD,SAAU,CAAE,CAAEwpL,MAAO,QAGjB0X,EAAW,CACf,OACA,QAGA,WAGIyvB,EAAmB,CACvB,mBACA,eACA,gBACA,oBAGIzlE,EAAQ,CACZ,SACA,SACA,OACA,UACA,OACA,YACA,OACA,OACA,MACA,WACA,UACA,QACA,MACA,UACA,WACA,QACA,QACA,WACA,UACA,OACA,MACA,WACA,OACA,YACA,UACA,UACA,aAGI0lE,EAAqB,CACzB,MACA,MACA,YACA,OACA,QACA,QACA,OACA,QAIItF,EAAiB,CACrB,MACA,OACA,MACA,WACA,QACA,MACA,MACA,MACA,QACA,YACA,wBACA,KACA,aACA,OACA,aACA,KACA,OACA,SACA,gBACA,MACA,QACA,cACA,kBACA,UACA,SACA,SACA,OACA,UACA,OACA,KACA,OACA,SACA,cACA,WACA,OACA,OACA,OACA,UACA,OACA,cACA,YACA,mBACA,QACA,aACA,OACA,QACA,WACA,UACA,UACA,SACA,SACA,YACA,UACA,aACA,WACA,UACA,OACA,OACA,gBACA,MACA,OACA,QACA,YACA,aACA,SACA,QACA,OACA,YACA,UACA,kBACA,eACA,kCACA,eACA,eACA,cACA,iBACA,eACA,oBACA,eACA,eACA,mCACA,eACA,SACA,QACA,OACA,MACA,aACA,MACA,UACA,WACA,UACA,UACA,SACA,SACA,aACA,QACA,WACA,gBACA,aACA,WACA,SACA,OACA,UACA,OACA,UACA,OACA,QACA,MACA,YACA,gBACA,WACA,SACA,SACA,QACA,SACA,OACA,UACA,SACA,MACA,WACA,UACA,QACA,QACA,SACA,cACA,QACA,QACA,MACA,UACA,YACA,OACA,OACA,OACA,WACA,SACA,MACA,SACA,QACA,QACA,WACA,SACA,SACA,OACA,OACA,WACA,KACA,YACA,UACA,QACA,QACA,cACA,SACA,MACA,UACA,YACA,eACA,WACA,OACA,KACA,OACA,aACA,gBACA,cACA,cACA,iBACA,aACA,aACA,uBACA,aACA,MACA,WACA,QACA,aACA,UACA,OACA,UACA,OACA,OACA,aACA,UACA,KACA,QACA,YACA,iBACA,MACA,QACA,QACA,QACA,eACA,kBACA,UACA,MACA,SACA,QACA,SACA,MACA,SACA,MACA,WACA,SACA,QACA,WACA,WACA,UACA,QACA,QACA,MACA,KACA,OACA,YACA,MACA,YACA,QACA,OACA,SACA,UACA,eACA,oBACA,KACA,SACA,MACA,OACA,KACA,MACA,OACA,OACA,KACA,QACA,MACA,QACA,OACA,WACA,UACA,YACA,YACA,UACA,MACA,UACA,eACA,kBACA,kBACA,SACA,UACA,WACA,iBACA,QACA,WACA,YACA,UACA,UACA,YACA,MACA,QACA,OACA,QACA,OACA,YACA,MACA,aACA,cACA,YACA,YACA,aACA,iBACA,UACA,aACA,WACA,WACA,WACA,UACA,SACA,SACA,UACA,SACA,QACA,WACA,SACA,MACA,aACA,OACA,UACA,YACA,QACA,SACA,SACA,SACA,OACA,SACA,YACA,eACA,MACA,OACA,UACA,MACA,OACA,OACA,WACA,OACA,WACA,eACA,MACA,eACA,WACA,aACA,OACA,QACA,SACA,aACA,cACA,cACA,SACA,YACA,kBACA,WACA,MACA,YACA,SACA,cACA,cACA,QACA,cACA,MACA,OACA,OACA,OACA,YACA,gBACA,kBACA,KACA,WACA,YACA,kBACA,cACA,QACA,UACA,OACA,aACA,OACA,WACA,UACA,QACA,SACA,UACA,SACA,YACA,QACA,OACA,QACA,QACA,SACA,WACA,UACA,WACA,YACA,UACA,UACA,aACA,OACA,WACA,QACA,eACA,SACA,OACA,SACA,UACA,QAMIuF,EAAqB,CACzB,MACA,OACA,YACA,OACA,OACA,MACA,OACA,OACA,UACA,WACA,OACA,MACA,OACA,QACA,YACA,aACA,YACA,aACA,QACA,UACA,MACA,UACA,cACA,QACA,aACA,gBACA,cACA,cACA,iBACA,aACA,aACA,uBACA,aACA,MACA,aACA,OACA,UACA,KACA,MACA,QACA,QACA,MACA,MACA,MACA,YACA,QACA,SACA,eACA,kBACA,kBACA,WACA,iBACA,QACA,OACA,YACA,YACA,aACA,iBACA,UACA,aACA,WACA,WACA,WACA,aACA,MACA,OACA,OACA,aACA,cACA,YACA,kBACA,MACA,MACA,OACA,YACA,kBACA,QACA,OACA,aACA,SACA,QACA,WACA,UACA,WACA,gBAIIC,EAA0B,CAC9B,kBACA,eACA,kCACA,eACA,eACA,iBACA,mCACA,eACA,eACA,cACA,cACA,eACA,YACA,oBACA,kBAKIC,EAAS,CACb,eACA,cACA,cACA,cACA,WACA,cACA,iBACA,gBACA,cACA,gBACA,gBACA,eACA,cACA,aACA,cACA,iBAGIrX,EAAYmX,EAEZh0B,EAAW,IAAIyuB,KAAmBsF,GAAoB3mQ,QAAQ+hO,IAC1D6kC,EAAmBryC,SAASwN,KAGhCyT,EAAW,CACfrlQ,UAAW,WACXovP,MAAO,cAGH63B,EAAW,CACfjnR,UAAW,WACXovP,MAAO,gDACPC,UAAW,GAGP0hB,EAAgB,CACpB3hB,MAAO/3O,EAAO,KAAM62O,KAAUoxB,GAAY,SAC1CtuB,SAAU,CACRgP,SAAUsf,IAKd,SAASsX,EAAgBv1R,GAAM,WAACqjP,EAAU,KAAEmyC,GAAQ,IAClD,MAAMC,EAAYD,EAElB,OADAnyC,EAAaA,GAAc,GACpBrjP,EAAKJ,KAAKY,GACXA,EAAK2E,MAAM,WAAak+O,EAAWN,SAASviP,GACvCA,EACEi1R,EAAUj1R,GACZ,GAAGA,MAEHA,IAKb,MAAO,CACLoJ,KAAM,MACNknP,kBAAkB,EAElB1C,QAAS,WACTuB,SAAU,CACR+C,SAAU,YACVnC,QACEglC,EAAgBn0B,EAAU,CAAEo0B,KAAOhpR,GAAMA,EAAErL,OAAS,IACtDu9P,QAAS+G,EACT//P,KAAM+pN,EACNkvC,SAAU02B,GAEZ9wN,SAAU,CACR,CACEwpL,MAAOlB,KAAUyoC,GACjB3lC,SAAU,CACR+C,SAAU,UACVnC,QAAS6Q,EAASprP,OAAOs/Q,GACzB52B,QAAS+G,EACT//P,KAAM+pN,IAGV,CACE9wN,UAAW,OACXovP,MAAOlB,KAAUqoC,IAEnBxlB,EACA1L,EACAxtJ,EACAy+K,EACAvhC,EAAK7E,cACL6E,EAAKhF,qBACLw9B,EACAtG,IAKNz2G,EAAOC,QAAU4lH,G,kBCxqBjB,SAASU,EAAShiC,GAChB,IAAIw4B,EAAex4B,EAAKnF,QAAQ,KAAM,KACtC,MAAO,CACL3kP,KAAM,aACN0rP,QAAS,CAAC,QAAS,UACnBK,mBAAmB,EACnB7E,kBAAkB,EAClB1C,QAAS,UACT7pL,SAAU,CACR,CACEkrL,cACE,gYAKF/+O,IAAK,IAAKqiP,gBAAgB,EAC1BpD,SAAU,CACR+C,SAAU,UACVnC,QACE,uyVA8GFmO,QACE,0BACFC,SACE,0NAGJp6L,SAAU,CACR,CACE5lE,UAAW,SACXovP,MAAO,IAAMr9O,IAAK,IAClB6zD,SAAU,CAAC,CAACwpL,MAAO,QAErB,CACEpvP,UAAW,SACXovP,MAAO,IAAKr9O,IAAK,IACjB6zD,SAAU,CAAC,CAACwpL,MAAO,QAErB,CACEpvP,UAAW,SACXovP,MAAO,IAAKr9O,IAAK,KAEnBgjP,EAAK7E,cACL6E,EAAKhF,qBACLw9B,EACAx4B,EAAK/E,oBAGT+E,EAAKhF,qBACLw9B,EACAx4B,EAAK/E,oBAKXx/E,EAAOC,QAAUsmH,G,kBC9KjB,SAASC,EAAKjiC,GAEZ,MAAMkiC,EAAS,CACb,YACA,QACA,OACA,aACA,aACA,cACA,aAEIzD,EAAa,CACjB,MACA,KACA,KACA,OACA,QACA,QACA,WACA,UAEI0D,EAAoB,CACxB,QACA,SACA,wBACA,mBACA,wBACA,uBACA,kBAEIC,EAAY,CAChB,MACA,OACA,SACA,UACA,mBACA,UACA,cACA,aACA,SACA,0BACA,yBACA,iBACA,gBACA,QAEI7X,EAAY,CAChB,MACA,aACA,MACA,OACA,QACA,iBACA,eACA,aACA,aACA,OACA,QACA,OACA,QACA,QACA,gBACA,kBACA,iBACA,uBACA,sBACA,iBACA,gBACA,oBACA,qBACA,oBACA,sBACA,qBACA,qBACA,oBACA,WACA,aACA,YACA,YACA,WACA,kBACA,eACA,2BACA,iBACA,gBACA,sBACA,gBACA,eACA,QACA,yBACA,wBACA,mBACA,kBACA,aACA,eACA,cACA,cACA,aACA,OACA,OACA,iBACA,mBACA,kBACA,kBACA,iBACA,qBACA,SACA,MACA,OACA,sBACA,mBACA,MACA,OACA,eACA,YACA,gBACA,gBACA,gBACA,0BACA,sBACA,iBACA,cACA,cACA,qBACA,oBACA,WACA,UACA,OACA,iBACA,gBACA,WACA,cACA,WACA,yBACA,2BACA,0BACA,0BACA,yBACA,IACA,kBACA,mBACA,MACA,OACA,MACA,OACA,qBACA,uBACA,sBACA,sBACA,qBACA,QACA,kBACA,oBACA,mBACA,mBACA,kBACA,OACA,oBACA,OACA,QACA,MACA,OACA,OACA,OACA,cACA,gBACA,eACA,eACA,cACA,YACA,cACA,aACA,aACA,UACA,UACA,YACA,wBACA,SACA,aACA,eACA,cACA,cACA,aACA,OACA,sBACA,qBACA,QACA,WACA,WACA,gBACA,oBACA,qBACA,MACA,UACA,qBACA,uBACA,sBACA,sBACA,qBACA,cACA,gBACA,kBACA,iBACA,iBACA,gBACA,YACA,WACA,aACA,mBACA,kBACA,UACA,cACA,SACA,SACA,QACA,UACA,SACA,yBACA,wBACA,gBACA,eACA,UACA,YACA,MACA,QACA,QACA,YACA,kBACA,QACA,YACA,OACA,kBACA,eACA,wBACA,gBACA,UACA,uBACA,cACA,cACA,eACA,iBACA,gBACA,gBACA,eACA,QACA,gBACA,kBACA,iBACA,iBACA,gBACA,oBACA,aACA,MACA,mBACA,uBACA,oBACA,wBACA,OACA,MACA,6BACA,8BACA,yBACA,gBACA,6BACA,4BACA,oBACA,yBACA,mBACA,uBACA,sBACA,mBACA,kBACA,eACA,oCACA,qBACA,uBACA,sBACA,0BACA,yBACA,sBACA,qBACA,mBACA,qBACA,oBACA,oBACA,mBACA,oBACA,aACA,eACA,cACA,cACA,aACA,eACA,eACA,wBACA,uBACA,UACA,aACA,eACA,cACA,cACA,aACA,oBACA,sBACA,qBACA,qBACA,oBACA,KACA,cACA,gBACA,eACA,mBACA,kBACA,eACA,cACA,oBACA,MACA,QACA,OACA,OACA,OACA,YACA,iBACA,gBACA,OACA,eACA,iBACA,gBACA,gBACA,eACA,SACA,YACA,aACA,iBACA,aACA,mBACA,QACA,MACA,OACA,mBACA,gBACA,4BACA,8BACA,6BACA,6BACA,4BACA,KACA,UACA,MACA,kBACA,OACA,OACA,kBACA,oBACA,mBACA,mBACA,kBACA,UACA,WACA,YACA,mBACA,oBACA,OACA,QACA,SACA,mBACA,OACA,gBACA,kBACA,iBACA,iBACA,gBACA,UACA,UACA,MACA,OACA,MACA,OACA,SACA,aACA,SACA,cACA,cACA,YACA,gBACA,YACA,QACA,sBACA,kBACA,WACA,QACA,cACA,gBACA,eACA,eACA,cACA,WACA,iBACA,gBACA,cACA,gBACA,eACA,eACA,cACA,cACA,eACA,eAEI8X,EAAgB,CACpB,YACA,kBACA,OACA,gBACA,WACA,iBACA,cACA,oBACA,SACA,aACA,YACA,qBACA,iBACA,cACA,UACA,QACA,mBACA,SACA,iBACA,iBACA,YACA,cACA,WACA,oBACA,WACA,YACA,WACA,oBACA,eACA,wBACA,oBACA,kBACA,cACA,eACA,iBACA,qBACA,SACA,mBACA,SACA,gBACA,UACA,cACA,WACA,wBACA,cACA,YACA,UACA,YACA,UACA,SACA,WAGF,MAAO,CACLnsR,KAAM,OACN0rP,QAAS,CAAE,aACX3F,SAAU,CACR+C,SAAUgB,EAAKpG,SACfzxN,MAAO+5P,EACPrlC,QAAS4hC,EAAWn8Q,OAAO8/Q,GAAW9/Q,OAAO6/Q,GAC7Cl3B,SAAUsf,GAEZ15M,SAAU,CACRmvL,EAAKjF,oBACLiF,EAAKnF,QACH,IACA,IACA,CACEP,UAAW,EACX2B,SAAU,CACR,eAAgB,aAItB+D,EAAKnF,QACH,OACA,OACA,CACEP,UAAW,EAEXzpL,SAAU,CACR,CACE5lE,UAAW,SACXovP,MAAO,sBAKf,CAEEA,MAAO,gBACP4B,SAAU,SAEZ,CAGE5B,MAAO,mBACP4B,SAAU,SAEZ,CACEhxP,UAAW,UACXovP,MAAO,iBACPC,UAAW,IAEb,CACED,MAAO,SAAW2F,EAAKpG,SAAW,WAClCqC,SAAUomC,GAEZ,CACEp3R,UAAW,SACX20P,SAAU,CACR,CACEvF,MAAO,oCAET,CACEA,MAAO,6BAGXC,UAAW,GAEb,CACErvP,UAAW,SACXovP,MAAO,IACPr9O,IAAK,IACLs9O,UAAW,KAMnB7+E,EAAOC,QAAUumH,G,kBCthBjB,SAASK,EAAMtiC,GACb,MAAO,CACL9pP,KAAM,QACN0rP,QAAS,CACP,KACA,OAEFxE,kBAAkB,EAClBnB,SAAU,4/cACVprL,SAAU,CACR,CACE5lE,UAAW,SACXovP,MAAO,mBAET,CACEpvP,UAAW,WACXovP,MAAO,yBAET,CACEpvP,UAAW,SACX20P,SAAU,CACR,CACEvF,MAAO,kBAET,CACEA,MAAO,iBAKb,CACEpvP,UAAW,WACX20P,SAAU,CACR,CACEvF,MAAO,q5CAKb2F,EAAKnF,QAAQ,iBAAiB,GAC9BmF,EAAKjF,oBACLiF,EAAKhF,uBAKXv/E,EAAOC,QAAU4mH,G,kBCpDjB,SAASC,EAAOviC,GACd,MAAMwiC,EAAkB,oBAClBC,EAAkB,CACtBzjC,SAAUwjC,EACV3lC,QAAS,sBAEL6lC,EAAe,CACnBz3R,UAAW,OACXovP,MAAO,gBACPC,UAAW,IAEPqoC,EAAe,CACnB13R,UAAW,OACXovP,MAAO,oBACPC,UAAW,IAGb,MAAO,CACLpkP,KAAM,eACN0rP,QAAS,CACP,MACA,OACA,OAEFxE,kBAAkB,EAClBnB,SAAUwmC,EACV5xN,SAAU,CACR6xN,EACAC,EACA3iC,EAAKjF,oBACLiF,EAAKhF,qBACLgF,EAAKnF,QAAQ,WAAY,QACzBmF,EAAK7E,cACL6E,EAAKxI,QAAQwI,EAAKvF,iBAAkB,CAClCC,QAAS,OAEXsF,EAAKxI,QAAQwI,EAAKrF,kBAAmB,CACnCD,QAAS,OAEX,CACEzvP,UAAW,SACXovP,MAAO,IACPr9O,IAAK,KAEP,CACE/R,UAAW,SACX20P,SAAU,CACR,CACEvF,MAAO,IACPr9O,IAAK,OACL09O,QAAS,WAQrBj/E,EAAOC,QAAU6mH,G,kBCjEjB,MAAM3mC,EAASoE,IACN,CACL0W,UAAW,CACTzrQ,UAAW,OACXovP,MAAO,cAETsc,SAAU,CACR1rQ,UAAW,SACXovP,MAAO,oCAETuc,wBAAyB,CACvB3rQ,UAAW,gBACXovP,MAAO,KACPr9O,IAAK,KACL09O,QAAS,IACT7pL,SAAU,CACRmvL,EAAKvF,iBACLuF,EAAKrF,sBAMPkc,EAAO,CACX,IACA,OACA,UACA,UACA,QACA,QACA,IACA,aACA,OACA,SACA,SACA,UACA,OACA,OACA,KACA,MACA,UACA,MACA,MACA,KACA,KACA,KACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,SACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,OACA,OACA,MACA,SACA,KACA,IACA,IACA,QACA,OACA,UACA,OACA,SACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,KACA,KACA,MACA,SAGIC,EAAiB,CACrB,YACA,cACA,eACA,QACA,cACA,cACA,sBACA,gBACA,eACA,eACA,gBACA,OACA,SACA,QACA,kBACA,aACA,cACA,iBACA,kBACA,UACA,uBACA,mBACA,yBACA,+BACA,aACA,OACA,YACA,SACA,QAEA,YACA,YACA,aACA,cAIIC,EAAiB,CACrB,SACA,WACA,QACA,UACA,UACA,UACA,UACA,MACA,WACA,OACA,QACA,UACA,QACA,cACA,gBACA,aACA,SACA,QACA,gBACA,eACA,MACA,OACA,eACA,QACA,gBACA,WACA,UACA,KACA,OACA,aACA,eACA,OACA,OACA,aACA,MACA,YACA,UACA,iBACA,eACA,mBACA,cACA,aACA,eACA,WACA,eACA,OACA,oBACA,YACA,aACA,WACA,QACA,OACA,QACA,SACA,gBACA,eACA,QACA,UACA,SAIIC,EAAkB,CACtB,QACA,WACA,SACA,MACA,aACA,eACA,aACA,gBACA,SACA,OACA,cACA,YACA,UACA,kBAGIC,EAAa,CACjB,gBACA,cACA,aACA,YACA,kBACA,sBACA,qBACA,sBACA,4BACA,iBACA,uBACA,4BACA,OACA,sBACA,aACA,wBACA,kBACA,mBACA,mBACA,oBACA,sBACA,oBACA,kBACA,SACA,gBACA,sBACA,4BACA,6BACA,sBACA,sBACA,kBACA,eACA,eACA,sBACA,sBACA,qBACA,sBACA,qBACA,cACA,oBACA,oBACA,oBACA,gBACA,eACA,qBACA,qBACA,qBACA,iBACA,eACA,aACA,mBACA,yBACA,0BACA,mBACA,mBACA,eACA,SACA,uBACA,aACA,aACA,cACA,eACA,eACA,eACA,QACA,OACA,YACA,QACA,eACA,cACA,aACA,cACA,oBACA,oBACA,oBACA,cACA,eACA,UACA,UACA,oBACA,gBACA,SACA,YACA,UACA,cACA,SACA,OACA,aACA,iBACA,YACA,YACA,cACA,YACA,QACA,OACA,eACA,cACA,wBACA,eACA,yBACA,YACA,mBACA,iBACA,eACA,aACA,eACA,yBACA,0BACA,cACA,SACA,UACA,OACA,oBACA,kBACA,mBACA,WACA,UACA,UACA,kBACA,OACA,iBACA,cACA,aACA,mBACA,sBACA,kBACA,SACA,gBACA,cACA,eACA,aACA,QACA,OACA,aACA,YACA,aACA,YACA,WACA,YACA,WACA,YACA,SACA,OACA,SACA,aACA,kBACA,UACA,QACA,UACA,UACA,gBACA,iBACA,gBACA,gBACA,WACA,gBACA,aACA,aACA,UACA,iBACA,eACA,gBACA,cACA,mBACA,oBACA,oBACA,cACA,qBACA,iBACA,WACA,SACA,SACA,QACA,MACA,WACA,eACA,aACA,kBACA,kBACA,wBACA,uBACA,wBACA,cACA,gBACA,iBACA,cACA,iBACA,0BACA,MACA,YACA,mBACA,kBACA,aACA,mBACA,sBACA,sBACA,6BACA,eACA,iBACA,aACA,cACA,SACA,QACA,aACA,eACA,YACA,WAGA3vP,UAWF,SAASs7Q,EAAO5iC,GACd,MAAMkX,EAAQtb,EAAMoE,GAEdoX,EAAe,kBACf9G,EAAW,CACfrlQ,UAAW,WACXovP,MAAO,MAAQ2F,EAAKpG,UAGhB22B,EAAc,CAClB,UACA,MACA,QACA,SACA,YACA,MACA,SACA,UACA,YACA,QACA,QACA,OACA,OACA,SAGIsS,EAAoB,oBAGpBC,EAAU,CACd,MACA,iBACA,cACA,cACA,cACA,IACA,OACA,SACA,SACA,MACA,KAGF,MAAO,CACL5sR,KAAM,SACN0rP,QAAS,CAAE,QACXxE,kBAAkB,EAClBnB,SAAU,iBACVvB,QAAS,IAAMooC,EAAQvxR,KAAK,KAAO,IACnCs/D,SAAU,CAGRmvL,EAAKrF,kBACLqF,EAAKvF,iBAGLuF,EAAKjF,oBACLiF,EAAKhF,qBAGLkc,EAAMP,SAGN,CACEtc,MAAO,4BAA8BwoC,EACrC53R,UAAW,kBAIb,CACEovP,MAAO,0BAA4BwoC,EACnC53R,UAAW,eAIb,CACEovP,MAAO,OAASwc,EAAKtlQ,KAAK,KAAO,IAAMsxR,EACvC53R,UAAW,gBAIb,CACEA,UAAW,kBACXovP,MAAO,OAAS0c,EAAexlQ,KAAK,KAAO,IAAMsxR,GAEnD,CACE53R,UAAW,kBACXovP,MAAO,QAAU2c,EAAgBzlQ,KAAK,KAAO,IAAMsxR,GAGrD3rB,EAAMN,wBAEN,CACE3rQ,UAAW,UACXovP,MAAO,SACPoF,OAAQ,CACNziP,IAAK,QACLi/O,SAAU,CACR+C,SAAU,UACVnC,QAASua,EACT74O,UAAWu4O,EAAevlQ,KAAK,MAEjCs/D,SAAU,CAAEmvL,EAAK3E,mBAKrB,CACEpwP,UAAW,UACXovP,MAAO,4BAA+Bk2B,EAAYh/Q,KAAK,KAAO,SAIhE++P,EAGAtQ,EAAK3E,gBAIL,CACEpwP,UAAW,WACXovP,MAAO,kCACPK,QAAS,QACT4J,aAAa,EACbzzL,SAAU,CACR,CACE5lE,UAAW,QACXovP,MAAO,6BAET,CACEpvP,UAAW,SACXovP,MAAO,KACPr9O,IAAK,KACL6zD,SAAU,CACRqmM,EAAMP,SACNrG,EACAtQ,EAAKvF,iBACLuF,EAAK3E,gBACL2E,EAAKrF,sBASb,CACE1vP,UAAW,YACXovP,MAAO,OAAS4c,EAAW1lQ,KAAK,KAAO,OACvCkuP,OAAQ,CAENziP,IAAK,MACL6zD,SAAU,CACRqmM,EAAMP,SACNrG,EACAtQ,EAAKvF,iBACLuF,EAAKrF,kBACLqF,EAAK3E,gBACL2E,EAAKhF,qBACLkc,EAAMR,WAERhc,QAAS,KACTJ,UAAW,MAOrB7+E,EAAOC,QAAUknH,G,kBC1lBjB,SAASG,EAAQ/iC,GACf,MAAMgjC,EAAU,CACd/3R,UAAW,SACXovP,MAAO,oBACPr9O,IAAK,SAEDimR,EAAO,CACXh4R,UAAW,SACXovP,MAAO,wDAEH6oC,EAAgB,CACpBj4R,UAAW,SACXovP,MAAO,eAEHqT,EAAW,CACfziQ,UAAW,UACXqvP,UAAW,GACXsF,SAAU,CACR,CACEvF,MAAO,wFAET,CACEA,MAAO,mCAET,CACEA,MAAO,UAET,CACEA,MAAO,YAIb,MAAO,CACLnkP,KAAM,UACNknP,kBAAkB,EAClBvsL,SAAU,CACRmyN,EACAC,EACAC,EACAx1B,IAKNjyF,EAAOC,QAAUqnH,G,kBCzCjB,SAASrvR,EAAOulP,GACd,OAAKA,EACa,kBAAPA,EAAwBA,EAE5BA,EAAGvlP,OAHM,KAUlB,SAASo6P,EAAU7U,GACjB,OAAO32O,EAAO,MAAO22O,EAAI,KAO3B,SAAS32O,KAAUizF,GACjB,MAAM2jJ,EAAS3jJ,EAAKrpG,KAAK4M,GAAMpF,EAAOoF,KAAIvH,KAAK,IAC/C,OAAO2nP,EAUT,SAASC,KAAU5jJ,GACjB,MAAM2jJ,EAAS,IAAM3jJ,EAAKrpG,KAAK4M,GAAMpF,EAAOoF,KAAIvH,KAAK,KAAO,IAC5D,OAAO2nP,EAGT,MAAMiqC,EAAiBtmC,GAAWv6O,EAChC,KACAu6O,EACA,MAAMjtL,KAAKitL,GAAW,KAAO,MAIzBumC,EAAc,CAClB,WACA,QACAl3R,IAAIi3R,GAGAE,EAAsB,CAC1B,OACA,QACAn3R,IAAIi3R,GAGAG,EAAe,CACnB,MACA,QAIIrnC,EAAW,CAIf,iBACA,QACA,QACA,OACA,MACA,KACA,QACA,OACA,QACA,QACA,WACA,cACA,UACA,QACA,SACA,SACA,KACA,UACA,OACA,OACA,YACA,cACA,qBACA,cACA,QACA,MACA,OACA,MACA,QACA,KACA,SACA,WACA,QACA,SACA,QACA,QACA,kBACA,WACA,KACA,KACA,OACA,MACA,WACA,cACA,cACA,OACA,WACA,WACA,WACA,UACA,kBACA,SACA,iBACA,UACA,WACA,gBACA,SACA,SACA,WACA,WACA,SACA,MACA,OACA,SACA,SACA,YACA,QACA,SACA,SACA,QACA,QACA,OACA,MACA,YACA,kBACA,oBACA,UACA,MACA,OACA,QACA,QACA,WAOIsnC,EAAW,CACf,QACA,MACA,QAIIC,EAA0B,CAC9B,aACA,gBACA,aACA,OACA,YACA,OACA,SAKIC,EAAqB,CACzB,gBACA,UACA,aACA,QACA,UACA,SACA,SACA,QACA,UACA,eACA,YACA,YACA,MACA,gBACA,WACA,QACA,YACA,kBACA,2BACA,YAIIC,EAAW,CACf,MACA,MACA,MACA,SACA,mBACA,aACA,OACA,aACA,YACA,4BACA,MACA,MACA,cACA,eACA,eACA,eACA,sBACA,QACA,WACA,gBACA,WACA,SACA,OACA,oCACA,YACA,OACA,gBACA,iBACA,uBACA,2BACA,oBACA,aACA,0BACA,OAIIC,EAAexqC,EACnB,oBACA,kBACA,iBACA,iBACA,iBACA,mCACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,YAIIyqC,EAAoBzqC,EACxBwqC,EACA,kBACA,kBACA,kBACA,kBACA,mBAMIjpM,EAAWp4E,EAAOqhR,EAAcC,EAAmB,KAGnDC,EAAiB1qC,EACrB,YACA,uDACA,yDACA,yDACA,kBACA,+DACA,yDACA,+BACA,yDACA,yDACA,gCASI2qC,EAAsB3qC,EAC1B0qC,EACA,KACA,0DAIIz5M,EAAa9nE,EAAOuhR,EAAgBC,EAAqB,KAGzDC,EAAiBzhR,EAAO,QAASwhR,EAAqB,KAItDE,EAAoB,CACxB,cACA1hR,EAAO,eAAgB62O,EAAO,QAAS,QAAS,KAAM,MACtD,oBACA,kBACA,sBACA,WACA,SACA,gBACA,WACA,eACA,gBACA,WACA,gBACA,YACA,OACA,UACA,oBACA,YACA,YACA72O,EAAO,SAAU8nE,EAAY,MAC7B,OACA,cACA,kBACA,iCACA,WACA,oBACA,UACA,oBAII65M,EAAuB,CAC3B,MACA,0BACA,QACA,4BACA,cACA,kCACA,UACA,8BACA,OACA,2BACA,SAaF,SAASC,EAAMlkC,GACb,MAAMmkC,EAAa,CACjB1yR,MAAO,MACP6oP,UAAW,GAGP8pC,EAAgBpkC,EAAKnF,QACzB,OACA,OACA,CACEhqL,SAAU,CAAE,UAGV+5L,EAAW,CACf5K,EAAKjF,oBACLqpC,GAKIC,EAAc,CAClBp5R,UAAW,UACXovP,MAAO/3O,EAAO,KAAMwrP,EAAU3U,KAAUiqC,KAAgBC,KACxDrmR,IAAKm8O,KAAUiqC,KAAgBC,GAC/Bh/B,cAAc,GAEVigC,EAAgB,CAEpB7yR,MAAO6Q,EAAO,KAAM62O,KAAU8C,IAC9B3B,UAAW,GAEPiqC,EAAiBtoC,EACpBnhO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PgjP,EAAK7E,cACL,CACElwP,UAAW,WACXovP,MAAO,sBAMf5+E,EAAOC,QAAU8qH,G,kBCrFjB,SAASK,EAAK7mC,GACZ,IAAIoN,EAAS,CACXniQ,UAAW,SACXovP,MAAO,MAAOr9O,IAAK,OAGjB8pR,EAAiB,2GAGjBvc,EAAY,CACdxuB,cAAe+qC,EACf7qC,SAAU,CAAC/lP,KAAM4wR,GACjBxsC,UAAW,EACXzpL,SAAU,CACRu8L,IAIAmM,EAAS,CACXlf,MAAO,iBACP4B,SACE,4SAIFprL,SAAU,CACR05M,IAIA1T,EAAO,iIAKX,OAFAA,EAAOA,EAAO,IAAMA,EAAKhxO,MAAM,KAAK35B,KAAI,SAASyzE,GAAG,MAAO,MAAQA,KAAIpuE,KAAK,KAErE,CACL2E,KAAM,OACN0rP,QAAS,CAAC,YACVxE,kBAAkB,EAClBoG,YAAa,MACb3yL,SAAU,CACRmvL,EAAKnF,QAAQ,MAAO,OACpB,CACE5vP,UAAW,eACXovP,MAAO,MAAOr9O,IAAK,MACnB6zD,SAAU,CACR,CACE5lE,UAAW,OACXovP,MAAO,MACP4B,SAAU4a,EACVpX,OAAQ,CACNJ,gBAAgB,EAChBxuL,SAAU,CAAC0oM,EAAQgR,GACnBjwB,UAAW,MAKnB,CACErvP,UAAW,oBACXovP,MAAO,OAAQr9O,IAAK,OACpB6zD,SAAU,CAAC,OAAQ0oM,EAAQgR,MAMnC9uG,EAAOC,QAAUmrH,G,kBC5EjB,MAAMjtC,EAAW,2BACX8T,EAAW,CACf,KACA,KACA,KACA,KACA,MACA,QACA,UACA,MACA,MACA,WACA,KACA,SACA,OACA,OACA,QACA,QACA,aACA,OACA,QACA,OACA,UACA,MACA,SACA,WACA,SACA,SACA,MACA,QACA,QACA,QAIA,WACA,QACA,QACA,SACA,SACA,OACA,SACA,WAEIqE,EAAW,CACf,OACA,QACA,OACA,YACA,MACA,YAGIh2C,EAAQ,CACZ,OACA,WACA,SACA,OACA,OACA,SACA,SACA,SACA,WACA,UACA,QACA,SACA,MACA,MACA,UACA,UACA,QACA,UACA,OACA,UACA,eACA,aACA,aACA,YACA,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","sources":["webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/Base.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/Component.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/Container.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/DataItem.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/Options.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/Registry.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/Sprite.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/SpriteEvents.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/SpriteState.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/System.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/data/CSVParser.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/data/DataLoader.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/data/DataParser.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/data/DataSource.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/data/JSONParser.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/defs/SVGDefaults.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/3d/Cone.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/3d/Rectangle3D.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/3d/Slice3D.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/Button.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/Circle.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/Ellipse.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/Label.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/Line.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/Modal.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/PointedRectangle.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/PointedShape.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/Polyline.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/Polyspline.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/PopupCSS.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/Popup.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/Rectangle.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/ResizeButton.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/RoundedRectangle.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/Scrollbar.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/Slice.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/TextLink.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/Tooltip.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/Trapezoid.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/Triangle.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/WavedCircle.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/WavedLine.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/WavedRectangle.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/ZoomOutButton.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/export/Export.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/export/ExportCSS.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/export/ExportMenu.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/formatters/DateFormatter.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/formatters/DurationFormatter.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/formatters/NumberFormatter.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/formatters/TextFormatter.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/interaction/Inertia.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/interaction/Interaction.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/interaction/InteractionKeyboardObject.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/interaction/InteractionObject.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/interaction/InteractionObjectEvents.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/interaction/Mouse.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/rendering/AMElement.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/rendering/Group.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/rendering/Paper.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/rendering/Path.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/ResizeSensor.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/rendering/SVGContainer.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/rendering/Smoothing.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/ColorModifier.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/GradientModifier.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/LinearGradient.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/LinearGradientModifier.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/Pattern.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/RadialGradient.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/rendering/filters/DesaturateFilter.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/rendering/filters/DropShadowFilter.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/rendering/filters/Filter.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/rendering/filters/LightenFilter.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/Adapter.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/Animation.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/Array.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/AsyncPending.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/Browser.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/Cache.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/Color.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/ColorSet.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/Colors.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/DOM.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/Dictionary.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/Disposer.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/Ease.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/EventDispatcher.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/InterfaceColorSet.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/Iterator.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/Keyboard.js","webpack://comparador/./node_modules/@amcharts/amcharts4/lang/en.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/Language.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/List.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/Log.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/Math.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/Net.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/Number.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/Object.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/Order.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/Percent.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/Responsive.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/SortedList.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/String.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/Strings.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/Time.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/Type.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/Utils.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/Validatable.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/Grip.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/Chart.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/elements/Bullet.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/Legend.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/series/Series.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/types/SerialChart.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisBreak.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/axes/Axis.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisLine.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisFill.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/axes/Grid.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisLabel.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/elements/Tick.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisTick.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisRenderer.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisBullet.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisRendererY.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/axes/ValueAxisBreak.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/axes/ValueAxis.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/axes/DateAxisBreak.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/axes/DateAxis.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisRendererX.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/axes/CategoryAxisBreak.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/axes/CategoryAxis.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/series/XYSeries.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/elements/XYChartScrollbar.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/types/XYChart.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/series/LineSeriesSegment.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/axes/DurationAxis.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/series/LineSeries.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/series/RadarSeries.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisFillCircular.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/axes/GridCircular.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisLabelCircular.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisRendererCircular.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisRendererRadial.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/types/RadarChart.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/elements/ClockHand.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/types/GaugeChart.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/series/PercentSeries.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/types/PercentChart.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/elements/PieTick.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/series/PieSeries.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/types/PieChart.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/series/PieSeries3D.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/types/PieChart3D.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/types/SlicedChart.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/elements/FlowDiagramNode.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/elements/FlowDiagramLink.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/types/FlowDiagram.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/elements/LabelBullet.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/elements/SankeyNode.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/elements/SankeyLink.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/types/SankeyDiagram.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/elements/ChordNode.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/QuadraticCurve.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/elements/ChordLink.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/types/ChordDiagram.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/elements/Column.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/series/ColumnSeries.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/series/TreeMapSeries.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/types/TreeMap.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisRendererX3D.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisRendererY3D.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/elements/Column3D.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/series/ColumnSeries3D.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/types/XYChart3D.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/elements/HeatLegend.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/elements/Candlestick.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/series/CandlestickSeries.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/elements/OHLC.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/series/OHLCSeries.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/series/StepLineSeriesSegment.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/series/StepLineSeries.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/elements/RadarColumn.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/series/RadarColumnSeries.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/elements/FunnelSlice.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/elements/FunnelTick.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/series/FunnelSeries.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/series/PyramidSeries.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/series/PictorialStackedSeries.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/elements/ConeColumn.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/series/ConeSeries.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/elements/CurvedColumn.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/series/CurvedColumnSeries.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/elements/CircleBullet.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/elements/ErrorBullet.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/elements/NavigationBar.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/cursors/Cursor.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/cursors/XYCursor.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/charts/cursors/RadarCursor.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/Image.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/Polyarc.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/Morpher.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/Polygon.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/Preloader.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/CloseButton.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/SwitchButton.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/Slider.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/PlayButton.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/RadialGradientModifier.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/LinePattern.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/CirclePattern.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/RectPattern.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/rendering/filters/ColorizeFilter.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/rendering/filters/BlurFilter.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/rendering/filters/FocusFilter.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/PatternSet.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/Plugin.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/elements/AmChartsLogo.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/core/utils/Instance.js","webpack://comparador/./node_modules/@amcharts/amcharts4/lang/pt_BR.js","webpack://comparador/./node_modules/@amcharts/amcharts4/node_modules/tslib/tslib.es6.js","webpack://comparador/./node_modules/@amcharts/amcharts4/.internal/themes/animated.js","webpack://comparador/./node_modules/@netcz/vue-pikaday/dist/vue-pikaday.js","webpack://comparador/./node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js","webpack://comparador/./node_modules/axios/index.js","webpack://comparador/./node_modules/axios/lib/adapters/xhr.js","webpack://comparador/./node_modules/axios/lib/axios.js","webpack://comparador/./node_modules/axios/lib/cancel/Cancel.js","webpack://comparador/./node_modules/axios/lib/cancel/CancelToken.js","webpack://comparador/./node_modules/axios/lib/cancel/isCancel.js","webpack://comparador/./node_modules/axios/lib/core/Axios.js","webpack://comparador/./node_modules/axios/lib/core/InterceptorManager.js","webpack://comparador/./node_modules/axios/lib/core/buildFullPath.js","webpack://comparador/./node_modules/axios/lib/core/createError.js","webpack://comparador/./node_modules/axios/lib/core/dispatchRequest.js","webpack://comparador/./node_modules/axios/lib/core/enhanceError.js","webpack://comparador/./node_modules/axios/lib/core/mergeConfig.js","webpack://comparador/./node_modules/axios/lib/core/settle.js","webpack://comparador/./node_modules/axios/lib/core/transformData.js","webpack://comparador/./node_modules/axios/lib/defaults.js","webpack://comparador/./node_modules/axios/lib/helpers/bind.js","webpack://comparador/./node_modules/axios/lib/helpers/buildURL.js","webpack://comparador/./node_modules/axios/lib/helpers/combineURLs.js","webpack://comparador/./node_modules/axios/lib/helpers/cookies.js","webpack://comparador/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://comparador/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://comparador/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://comparador/./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://comparador/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://comparador/./node_modules/axios/lib/helpers/spread.js","webpack://comparador/./node_modules/axios/lib/helpers/validator.js","webpack://comparador/./node_modules/axios/lib/utils.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/vue.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/env.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/warn.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/array.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/object.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/clone-deep.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/get.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/memoize.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/inspect.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/config.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/plugins.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/dom.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/modal/helpers/modal-manager.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/bv-event.class.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/modal/helpers/bv-modal-event.class.js","webpack://comparador/./node_modules/vue-functional-data-merge/dist/lib.esm.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/identity.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/pluck-props.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/to-string.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/router.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/link/link.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/button/button.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/normalize-slot.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/button/button-close.js","webpack://comparador/./node_modules/bootstrap-vue/es/mixins/id.js","webpack://comparador/./node_modules/bootstrap-vue/es/mixins/listen-on-root.js","webpack://comparador/./node_modules/bootstrap-vue/es/mixins/normalize-slot.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/bv-transition.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/key-codes.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/observe-dom.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/safe-types.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/transporter.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/html.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/modal/modal.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/modal/helpers/bv-modal.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/toast/toaster.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/toast/toast.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/toast/helpers/bv-toast.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/alert/alert.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/alert/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/badge/badge.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/badge/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/breadcrumb/breadcrumb-link.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/breadcrumb/breadcrumb-item.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/breadcrumb/breadcrumb.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/breadcrumb/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/button/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/button-group/button-group.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/button-group/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/button-toolbar/button-toolbar.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/button-toolbar/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/input-group/input-group-text.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/input-group/input-group-addon.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/input-group/input-group-prepend.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/input-group/input-group-append.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/input-group/input-group.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/input-group/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/upper-first.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/prefix-prop-name.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/lower-first.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/unprefix-prop-name.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/copy-props.js","webpack://comparador/./node_modules/bootstrap-vue/es/mixins/card-mixin.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/card/card-title.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/card/card-sub-title.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/card/card-body.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/card/card-header.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/card/card-footer.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/card/card-img.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/card/card.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/image/img.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/image/img-lazy.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/card/card-img-lazy.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/card/card-text.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/card/card-group.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/card/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/noop.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/carousel/carousel.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/carousel/carousel-slide.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/carousel/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/layout/container.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/layout/row.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/suffix-prop-name.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/layout/col.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/layout/form-row.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/layout/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/collapse/collapse.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/loose-equal.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/target.js","webpack://comparador/./node_modules/bootstrap-vue/es/directives/toggle/toggle.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/collapse/index.js","webpack://comparador/./node_modules/popper.js/dist/esm/popper.js","webpack://comparador/./node_modules/bootstrap-vue/es/mixins/click-out.js","webpack://comparador/./node_modules/bootstrap-vue/es/mixins/focus-in.js","webpack://comparador/./node_modules/bootstrap-vue/es/mixins/dropdown.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/dropdown/dropdown.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/dropdown/dropdown-item.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/dropdown/dropdown-item-button.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/dropdown/dropdown-header.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/dropdown/dropdown-divider.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/form/form.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/dropdown/dropdown-form.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/dropdown/dropdown-text.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/dropdown/dropdown-group.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/dropdown/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/embed/embed.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/embed/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/mixins/form-options.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/form/form-datalist.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/form/form-text.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/form/form-invalid-feedback.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/form/form-valid-feedback.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/form/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/mixins/form-state.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/form-group/form-group.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/form-group/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/loose-index-of.js","webpack://comparador/./node_modules/bootstrap-vue/es/mixins/form.js","webpack://comparador/./node_modules/bootstrap-vue/es/mixins/form-radio-check.js","webpack://comparador/./node_modules/bootstrap-vue/es/mixins/form-size.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/form-checkbox/form-checkbox.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/form-radio/form-radio.js","webpack://comparador/./node_modules/bootstrap-vue/es/mixins/form-radio-check-group.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/form-checkbox/form-checkbox-group.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/form-checkbox/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/form-radio/form-radio-group.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/form-radio/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/mixins/form-text.js","webpack://comparador/./node_modules/bootstrap-vue/es/mixins/form-selection.js","webpack://comparador/./node_modules/bootstrap-vue/es/mixins/form-validity.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/form-input/form-input.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/form-input/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/form-textarea/form-textarea.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/form-textarea/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/mixins/form-custom.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/form-file/form-file.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/form-file/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/form-select/form-select.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/form-select/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/image/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/jumbotron/jumbotron.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/jumbotron/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/link/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/list-group/list-group.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/list-group/list-group-item.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/list-group/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/media/media-body.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/media/media-aside.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/media/media.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/media/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/directives/modal/modal.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/modal/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/nav/nav.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/nav/nav-item.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/nav/nav-text.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/nav/nav-form.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/nav/nav-item-dropdown.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/nav/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/navbar/navbar.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/navbar/navbar-nav.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/navbar/navbar-brand.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/navbar/navbar-toggle.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/navbar/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/range.js","webpack://comparador/./node_modules/bootstrap-vue/es/mixins/pagination.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/pagination/pagination.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/pagination/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/pagination-nav/pagination-nav.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/pagination-nav/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/tooltip.class.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/popover.class.js","webpack://comparador/./node_modules/bootstrap-vue/es/mixins/toolpop.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/popover/popover.js","webpack://comparador/./node_modules/bootstrap-vue/es/directives/popover/popover.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/popover/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/progress/progress-bar.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/progress/progress.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/progress/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/spinner/spinner.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/spinner/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/startcase.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/table/helpers/constants.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/table/helpers/normalize-fields.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/table/helpers/mixin-items.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/table/helpers/sanitize-row.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/table/helpers/stringify-object-values.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/table/helpers/stringify-record-values.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/table/helpers/mixin-filtering.js","webpack://comparador/./node_modules/bootstrap-vue/es/utils/stable-sort.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/table/helpers/default-sort-compare.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/table/helpers/mixin-sorting.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/table/helpers/mixin-pagination.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/table/helpers/mixin-caption.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/table/helpers/mixin-colgroup.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/table/helpers/filter-event.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/table/helpers/text-selection-active.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/table/helpers/mixin-thead.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/table/helpers/mixin-tfoot.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/table/helpers/mixin-tbody-row.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/table/helpers/mixin-empty.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/table/helpers/mixin-top-row.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/table/helpers/mixin-bottom-row.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/table/helpers/mixin-tbody.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/table/helpers/mixin-busy.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/table/helpers/mixin-selectable.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/table/helpers/mixin-provider.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/table/table.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/table/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/tabs/tabs.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/tabs/tab.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/tabs/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/toast/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/tooltip/tooltip.js","webpack://comparador/./node_modules/bootstrap-vue/es/directives/tooltip/tooltip.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/tooltip/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/components/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/directives/toggle/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/directives/modal/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/directives/scrollspy/scrollspy.class.js","webpack://comparador/./node_modules/bootstrap-vue/es/directives/scrollspy/scrollspy.js","webpack://comparador/./node_modules/bootstrap-vue/es/directives/scrollspy/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/directives/tooltip/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/directives/popover/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/directives/index.js","webpack://comparador/./node_modules/bootstrap-vue/es/index.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/fn/array/from.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/fn/array/is-array.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/fn/object/assign.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/fn/object/is.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_a-function.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_an-object.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_array-includes.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_classof.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_cof.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_core.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_create-property.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_ctx.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_defined.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_descriptors.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_dom-create.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_enum-bug-keys.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_export.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_fails.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_global.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_has.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_hide.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_html.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_ie8-dom-define.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_iobject.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_is-array-iter.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_is-array.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_is-object.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_iter-call.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_iter-create.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_iter-define.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_iter-detect.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_iterators.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_library.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_object-assign.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_object-create.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_object-dp.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_object-dps.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_object-gops.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_object-gpo.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_object-keys-internal.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_object-keys.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_object-pie.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_property-desc.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_redefine.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_same-value.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_set-to-string-tag.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_shared-key.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_shared.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_string-at.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_to-absolute-index.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_to-integer.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_to-iobject.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_to-length.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_to-object.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_to-primitive.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_uid.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/_wks.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/core.get-iterator-method.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/es6.array.from.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/es6.array.is-array.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/es6.object.assign.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/es6.object.is.js","webpack://comparador/./node_modules/bootstrap-vue/node_modules/core-js/library/modules/es6.string.iterator.js","webpack://comparador/./node_modules/core-js/internals/a-callable.js","webpack://comparador/./node_modules/core-js/internals/add-to-unscopables.js","webpack://comparador/./node_modules/core-js/internals/an-object.js","webpack://comparador/./node_modules/core-js/internals/array-includes.js","webpack://comparador/./node_modules/core-js/internals/classof-raw.js","webpack://comparador/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://comparador/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://comparador/./node_modules/core-js/internals/create-property-descriptor.js","webpack://comparador/./node_modules/core-js/internals/define-built-in.js","webpack://comparador/./node_modules/core-js/internals/define-global-property.js","webpack://comparador/./node_modules/core-js/internals/descriptors.js","webpack://comparador/./node_modules/core-js/internals/document-create-element.js","webpack://comparador/./node_modules/core-js/internals/engine-user-agent.js","webpack://comparador/./node_modules/core-js/internals/engine-v8-version.js","webpack://comparador/./node_modules/core-js/internals/enum-bug-keys.js","webpack://comparador/./node_modules/core-js/internals/export.js","webpack://comparador/./node_modules/core-js/internals/fails.js","webpack://comparador/./node_modules/core-js/internals/function-bind-native.js","webpack://comparador/./node_modules/core-js/internals/function-call.js","webpack://comparador/./node_modules/core-js/internals/function-name.js","webpack://comparador/./node_modules/core-js/internals/function-uncurry-this.js","webpack://comparador/./node_modules/core-js/internals/get-built-in.js","webpack://comparador/./node_modules/core-js/internals/get-method.js","webpack://comparador/./node_modules/core-js/internals/global.js","webpack://comparador/./node_modules/core-js/internals/has-own-property.js","webpack://comparador/./node_modules/core-js/internals/hidden-keys.js","webpack://comparador/./node_modules/core-js/internals/html.js","webpack://comparador/./node_modules/core-js/internals/ie8-dom-define.js","webpack://comparador/./node_modules/core-js/internals/indexed-object.js","webpack://comparador/./node_modules/core-js/internals/inspect-source.js","webpack://comparador/./node_modules/core-js/internals/internal-state.js","webpack://comparador/./node_modules/core-js/internals/is-callable.js","webpack://comparador/./node_modules/core-js/internals/is-forced.js","webpack://comparador/./node_modules/core-js/internals/is-object.js","webpack://comparador/./node_modules/core-js/internals/is-pure.js","webpack://comparador/./node_modules/core-js/internals/is-symbol.js","webpack://comparador/./node_modules/core-js/internals/length-of-array-like.js","webpack://comparador/./node_modules/core-js/internals/make-built-in.js","webpack://comparador/./node_modules/core-js/internals/math-trunc.js","webpack://comparador/./node_modules/core-js/internals/native-symbol.js","webpack://comparador/./node_modules/core-js/internals/native-weak-map.js","webpack://comparador/./node_modules/core-js/internals/object-create.js","webpack://comparador/./node_modules/core-js/internals/object-define-properties.js","webpack://comparador/./node_modules/core-js/internals/object-define-property.js","webpack://comparador/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://comparador/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://comparador/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://comparador/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://comparador/./node_modules/core-js/internals/object-keys-internal.js","webpack://comparador/./node_modules/core-js/internals/object-keys.js","webpack://comparador/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://comparador/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://comparador/./node_modules/core-js/internals/own-keys.js","webpack://comparador/./node_modules/core-js/internals/require-object-coercible.js","webpack://comparador/./node_modules/core-js/internals/shared-key.js","webpack://comparador/./node_modules/core-js/internals/shared-store.js","webpack://comparador/./node_modules/core-js/internals/shared.js","webpack://comparador/./node_modules/core-js/internals/to-absolute-index.js","webpack://comparador/./node_modules/core-js/internals/to-indexed-object.js","webpack://comparador/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://comparador/./node_modules/core-js/internals/to-length.js","webpack://comparador/./node_modules/core-js/internals/to-object.js","webpack://comparador/./node_modules/core-js/internals/to-primitive.js","webpack://comparador/./node_modules/core-js/internals/to-property-key.js","webpack://comparador/./node_modules/core-js/internals/try-to-string.js","webpack://comparador/./node_modules/core-js/internals/uid.js","webpack://comparador/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://comparador/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://comparador/./node_modules/core-js/internals/well-known-symbol.js","webpack://comparador/./node_modules/core-js/modules/es.array.includes.js","webpack://comparador/./node_modules/highlight.js/lib/core.js","webpack://comparador/./node_modules/highlight.js/lib/index.js","webpack://comparador/./node_modules/highlight.js/lib/languages/1c.js","webpack://comparador/./node_modules/highlight.js/lib/languages/abnf.js","webpack://comparador/./node_modules/highlight.js/lib/languages/accesslog.js","webpack://comparador/./node_modules/highlight.js/lib/languages/actionscript.js","webpack://comparador/./node_modules/highlight.js/lib/languages/ada.js","webpack://comparador/./node_modules/highlight.js/lib/languages/angelscript.js","webpack://comparador/./node_modules/highlight.js/lib/languages/apache.js","webpack://comparador/./node_modules/highlight.js/lib/languages/applescript.js","webpack://comparador/./node_modules/highlight.js/lib/languages/arcade.js","webpack://comparador/./node_modules/highlight.js/lib/languages/arduino.js","webpack://comparador/./node_modules/highlight.js/lib/languages/armasm.js","webpack://comparador/./node_modules/highlight.js/lib/languages/asciidoc.js","webpack://comparador/./node_modules/highlight.js/lib/languages/aspectj.js","webpack://comparador/./node_modules/highlight.js/lib/languages/autohotkey.js","webpack://comparador/./node_modules/highlight.js/lib/languages/autoit.js","webpack://comparador/./node_modules/highlight.js/lib/languages/avrasm.js","webpack://comparador/./node_modules/highlight.js/lib/languages/awk.js","webpack://comparador/./node_modules/highlight.js/lib/languages/axapta.js","webpack://comparador/./node_modules/highlight.js/lib/languages/bash.js","webpack://comparador/./node_modules/highlight.js/lib/languages/basic.js","webpack://comparador/./node_modules/highlight.js/lib/languages/bnf.js","webpack://comparador/./node_modules/highlight.js/lib/languages/brainfuck.js","webpack://comparador/./node_modules/highlight.js/lib/languages/c-like.js","webpack://comparador/./node_modules/highlight.js/lib/languages/c.js","webpack://comparador/./node_modules/highlight.js/lib/languages/cal.js","webpack://comparador/./node_modules/highlight.js/lib/languages/capnproto.js","webpack://comparador/./node_modules/highlight.js/lib/languages/ceylon.js","webpack://comparador/./node_modules/highlight.js/lib/languages/clean.js","webpack://comparador/./node_modules/highlight.js/lib/languages/clojure-repl.js","webpack://comparador/./node_modules/highlight.js/lib/languages/clojure.js","webpack://comparador/./node_modules/highlight.js/lib/languages/cmake.js","webpack://comparador/./node_modules/highlight.js/lib/languages/coffeescript.js","webpack://comparador/./node_modules/highlight.js/lib/languages/coq.js","webpack://comparador/./node_modules/highlight.js/lib/languages/cos.js","webpack://comparador/./node_modules/highlight.js/lib/languages/cpp.js","webpack://comparador/./node_modules/highlight.js/lib/languages/crmsh.js","webpack://comparador/./node_modules/highlight.js/lib/languages/crystal.js","webpack://comparador/./node_modules/highlight.js/lib/languages/csharp.js","webpack://comparador/./node_modules/highlight.js/lib/languages/csp.js","webpack://comparador/./node_modules/highlight.js/lib/languages/css.js","webpack://comparador/./node_modules/highlight.js/lib/languages/d.js","webpack://comparador/./node_modules/highlight.js/lib/languages/dart.js","webpack://comparador/./node_modules/highlight.js/lib/languages/delphi.js","webpack://comparador/./node_modules/highlight.js/lib/languages/diff.js","webpack://comparador/./node_modules/highlight.js/lib/languages/django.js","webpack://comparador/./node_modules/highlight.js/lib/languages/dns.js","webpack://comparador/./node_modules/highlight.js/lib/languages/dockerfile.js","webpack://comparador/./node_modules/highlight.js/lib/languages/dos.js","webpack://comparador/./node_modules/highlight.js/lib/languages/dsconfig.js","webpack://comparador/./node_modules/highlight.js/lib/languages/dts.js","webpack://comparador/./node_modules/highlight.js/lib/languages/dust.js","webpack://comparador/./node_modules/highlight.js/lib/languages/ebnf.js","webpack://comparador/./node_modules/highlight.js/lib/languages/elixir.js","webpack://comparador/./node_modules/highlight.js/lib/languages/elm.js","webpack://comparador/./node_modules/highlight.js/lib/languages/erb.js","webpack://comparador/./node_modules/highlight.js/lib/languages/erlang-repl.js","webpack://comparador/./node_modules/highlight.js/lib/languages/erlang.js","webpack://comparador/./node_modules/highlight.js/lib/languages/excel.js","webpack://comparador/./node_modules/highlight.js/lib/languages/fix.js","webpack://comparador/./node_modules/highlight.js/lib/languages/flix.js","webpack://comparador/./node_modules/highlight.js/lib/languages/fortran.js","webpack://comparador/./node_modules/highlight.js/lib/languages/fsharp.js","webpack://comparador/./node_modules/highlight.js/lib/languages/gams.js","webpack://comparador/./node_modules/highlight.js/lib/languages/gauss.js","webpack://comparador/./node_modules/highlight.js/lib/languages/gcode.js","webpack://comparador/./node_modules/highlight.js/lib/languages/gherkin.js","webpack://comparador/./node_modules/highlight.js/lib/languages/glsl.js","webpack://comparador/./node_modules/highlight.js/lib/languages/gml.js","webpack://comparador/./node_modules/highlight.js/lib/languages/go.js","webpack://comparador/./node_modules/highlight.js/lib/languages/golo.js","webpack://comparador/./node_modules/highlight.js/lib/languages/gradle.js","webpack://comparador/./node_modules/highlight.js/lib/languages/groovy.js","webpack://comparador/./node_modules/highlight.js/lib/languages/haml.js","webpack://comparador/./node_modules/highlight.js/lib/languages/handlebars.js","webpack://comparador/./node_modules/highlight.js/lib/languages/haskell.js","webpack://comparador/./node_modules/highlight.js/lib/languages/haxe.js","webpack://comparador/./node_modules/highlight.js/lib/languages/hsp.js","webpack://comparador/./node_modules/highlight.js/lib/languages/htmlbars.js","webpack://comparador/./node_modules/highlight.js/lib/languages/http.js","webpack://comparador/./node_modules/highlight.js/lib/languages/hy.js","webpack://comparador/./node_modules/highlight.js/lib/languages/inform7.js","webpack://comparador/./node_modules/highlight.js/lib/languages/ini.js","webpack://comparador/./node_modules/highlight.js/lib/languages/irpf90.js","webpack://comparador/./node_modules/highlight.js/lib/languages/isbl.js","webpack://comparador/./node_modules/highlight.js/lib/languages/java.js","webpack://comparador/./node_modules/highlight.js/lib/languages/javascript.js","webpack://comparador/./node_modules/highlight.js/lib/languages/jboss-cli.js","webpack://comparador/./node_modules/highlight.js/lib/languages/json.js","webpack://comparador/./node_modules/highlight.js/lib/languages/julia-repl.js","webpack://comparador/./node_modules/highlight.js/lib/languages/julia.js","webpack://comparador/./node_modules/highlight.js/lib/languages/kotlin.js","webpack://comparador/./node_modules/highlight.js/lib/languages/lasso.js","webpack://comparador/./node_modules/highlight.js/lib/languages/latex.js","webpack://comparador/./node_modules/highlight.js/lib/languages/ldif.js","webpack://comparador/./node_modules/highlight.js/lib/languages/leaf.js","webpack://comparador/./node_modules/highlight.js/lib/languages/less.js","webpack://comparador/./node_modules/highlight.js/lib/languages/lisp.js","webpack://comparador/./node_modules/highlight.js/lib/languages/livecodeserver.js","webpack://comparador/./node_modules/highlight.js/lib/languages/livescript.js","webpack://comparador/./node_modules/highlight.js/lib/languages/llvm.js","webpack://comparador/./node_modules/highlight.js/lib/languages/lsl.js","webpack://comparador/./node_modules/highlight.js/lib/languages/lua.js","webpack://comparador/./node_modules/highlight.js/lib/languages/makefile.js","webpack://comparador/./node_modules/highlight.js/lib/languages/markdown.js","webpack://comparador/./node_modules/highlight.js/lib/languages/mathematica.js","webpack://comparador/./node_modules/highlight.js/lib/languages/matlab.js","webpack://comparador/./node_modules/highlight.js/lib/languages/maxima.js","webpack://comparador/./node_modules/highlight.js/lib/languages/mel.js","webpack://comparador/./node_modules/highlight.js/lib/languages/mercury.js","webpack://comparador/./node_modules/highlight.js/lib/languages/mipsasm.js","webpack://comparador/./node_modules/highlight.js/lib/languages/mizar.js","webpack://comparador/./node_modules/highlight.js/lib/languages/mojolicious.js","webpack://comparador/./node_modules/highlight.js/lib/languages/monkey.js","webpack://comparador/./node_modules/highlight.js/lib/languages/moonscript.js","webpack://comparador/./node_modules/highlight.js/lib/languages/n1ql.js","webpack://comparador/./node_modules/highlight.js/lib/languages/nginx.js","webpack://comparador/./node_modules/highlight.js/lib/languages/nim.js","webpack://comparador/./node_modules/highlight.js/lib/languages/nix.js","webpack://comparador/./node_modules/highlight.js/lib/languages/node-repl.js","webpack://comparador/./node_modules/highlight.js/lib/languages/nsis.js","webpack://comparador/./node_modules/highlight.js/lib/languages/objectivec.js","webpack://comparador/./node_modules/highlight.js/lib/languages/ocaml.js","webpack://comparador/./node_modules/highlight.js/lib/languages/openscad.js","webpack://comparador/./node_modules/highlight.js/lib/languages/oxygene.js","webpack://comparador/./node_modules/highlight.js/lib/languages/parser3.js","webpack://comparador/./node_modules/highlight.js/lib/languages/perl.js","webpack://comparador/./node_modules/highlight.js/lib/languages/pf.js","webpack://comparador/./node_modules/highlight.js/lib/languages/pgsql.js","webpack://comparador/./node_modules/highlight.js/lib/languages/php-template.js","webpack://comparador/./node_modules/highlight.js/lib/languages/php.js","webpack://comparador/./node_modules/highlight.js/lib/languages/plaintext.js","webpack://comparador/./node_modules/highlight.js/lib/languages/pony.js","webpack://comparador/./node_modules/highlight.js/lib/languages/powershell.js","webpack://comparador/./node_modules/highlight.js/lib/languages/processing.js","webpack://comparador/./node_modules/highlight.js/lib/languages/profile.js","webpack://comparador/./node_modules/highlight.js/lib/languages/prolog.js","webpack://comparador/./node_modules/highlight.js/lib/languages/properties.js","webpack://comparador/./node_modules/highlight.js/lib/languages/protobuf.js","webpack://comparador/./node_modules/highlight.js/lib/languages/puppet.js","webpack://comparador/./node_modules/highlight.js/lib/languages/purebasic.js","webpack://comparador/./node_modules/highlight.js/lib/languages/python-repl.js","webpack://comparador/./node_modules/highlight.js/lib/languages/python.js","webpack://comparador/./node_modules/highlight.js/lib/languages/q.js","webpack://comparador/./node_modules/highlight.js/lib/languages/qml.js","webpack://comparador/./node_modules/highlight.js/lib/languages/r.js","webpack://comparador/./node_modules/highlight.js/lib/languages/reasonml.js","webpack://comparador/./node_modules/highlight.js/lib/languages/rib.js","webpack://comparador/./node_modules/highlight.js/lib/languages/roboconf.js","webpack://comparador/./node_modules/highlight.js/lib/languages/routeros.js","webpack://comparador/./node_modules/highlight.js/lib/languages/rsl.js","webpack://comparador/./node_modules/highlight.js/lib/languages/ruby.js","webpack://comparador/./node_modules/highlight.js/lib/languages/ruleslanguage.js","webpack://comparador/./node_modules/highlight.js/lib/languages/rust.js","webpack://comparador/./node_modules/highlight.js/lib/languages/sas.js","webpack://comparador/./node_modules/highlight.js/lib/languages/scala.js","webpack://comparador/./node_modules/highlight.js/lib/languages/scheme.js","webpack://comparador/./node_modules/highlight.js/lib/languages/scilab.js","webpack://comparador/./node_modules/highlight.js/lib/languages/scss.js","webpack://comparador/./node_modules/highlight.js/lib/languages/shell.js","webpack://comparador/./node_modules/highlight.js/lib/languages/smali.js","webpack://comparador/./node_modules/highlight.js/lib/languages/smalltalk.js","webpack://comparador/./node_modules/highlight.js/lib/languages/sml.js","webpack://comparador/./node_modules/highlight.js/lib/languages/sqf.js","webpack://comparador/./node_modules/highlight.js/lib/languages/sql.js","webpack://comparador/./node_modules/highlight.js/lib/languages/sql_more.js","webpack://comparador/./node_modules/highlight.js/lib/languages/stan.js","webpack://comparador/./node_modules/highlight.js/lib/languages/stata.js","webpack://comparador/./node_modules/highlight.js/lib/languages/step21.js","webpack://comparador/./node_modules/highlight.js/lib/languages/stylus.js","webpack://comparador/./node_modules/highlight.js/lib/languages/subunit.js","webpack://comparador/./node_modules/highlight.js/lib/languages/swift.js","webpack://comparador/./node_modules/highlight.js/lib/languages/taggerscript.js","webpack://comparador/./node_modules/highlight.js/lib/languages/tap.js","webpack://comparador/./node_modules/highlight.js/lib/languages/tcl.js","webpack://comparador/./node_modules/highlight.js/lib/languages/thrift.js","webpack://comparador/./node_modules/highlight.js/lib/languages/tp.js","webpack://comparador/./node_modules/highlight.js/lib/languages/twig.js","webpack://comparador/./node_modules/highlight.js/lib/languages/typescript.js","webpack://comparador/./node_modules/highlight.js/lib/languages/vala.js","webpack://comparador/./node_modules/highlight.js/lib/languages/vbnet.js","webpack://comparador/./node_modules/highlight.js/lib/languages/vbscript-html.js","webpack://comparador/./node_modules/highlight.js/lib/languages/vbscript.js","webpack://comparador/./node_modules/highlight.js/lib/languages/verilog.js","webpack://comparador/./node_modules/highlight.js/lib/languages/vhdl.js","webpack://comparador/./node_modules/highlight.js/lib/languages/vim.js","webpack://comparador/./node_modules/highlight.js/lib/languages/x86asm.js","webpack://comparador/./node_modules/highlight.js/lib/languages/xl.js","webpack://comparador/./node_modules/highlight.js/lib/languages/xml.js","webpack://comparador/./node_modules/highlight.js/lib/languages/xquery.js","webpack://comparador/./node_modules/highlight.js/lib/languages/yaml.js","webpack://comparador/./node_modules/highlight.js/lib/languages/zephir.js","webpack://comparador/./node_modules/json2mq/index.js","webpack://comparador/./node_modules/mobile-device-detect/dist/index.js","webpack://comparador/./node_modules/moment/locale/af.js","webpack://comparador/./node_modules/moment/locale/ar-dz.js","webpack://comparador/./node_modules/moment/locale/ar-kw.js","webpack://comparador/./node_modules/moment/locale/ar-ly.js","webpack://comparador/./node_modules/moment/locale/ar-ma.js","webpack://comparador/./node_modules/moment/locale/ar-sa.js","webpack://comparador/./node_modules/moment/locale/ar-tn.js","webpack://comparador/./node_modules/moment/locale/ar.js","webpack://comparador/./node_modules/moment/locale/az.js","webpack://comparador/./node_modules/moment/locale/be.js","webpack://comparador/./node_modules/moment/locale/bg.js","webpack://comparador/./node_modules/moment/locale/bm.js","webpack://comparador/./node_modules/moment/locale/bn-bd.js","webpack://comparador/./node_modules/moment/locale/bn.js","webpack://comparador/./node_modules/moment/locale/bo.js","webpack://comparador/./node_modules/moment/locale/br.js","webpack://comparador/./node_modules/moment/locale/bs.js","webpack://comparador/./node_modules/moment/locale/ca.js","webpack://comparador/./node_modules/moment/locale/cs.js","webpack://comparador/./node_modules/moment/locale/cv.js","webpack://comparador/./node_modules/moment/locale/cy.js","webpack://comparador/./node_modules/moment/locale/da.js","webpack://comparador/./node_modules/moment/locale/de-at.js","webpack://comparador/./node_modules/moment/locale/de-ch.js","webpack://comparador/./node_modules/moment/locale/de.js","webpack://comparador/./node_modules/moment/locale/dv.js","webpack://comparador/./node_modules/moment/locale/el.js","webpack://comparador/./node_modules/moment/locale/en-au.js","webpack://comparador/./node_modules/moment/locale/en-ca.js","webpack://comparador/./node_modules/moment/locale/en-gb.js","webpack://comparador/./node_modules/moment/locale/en-ie.js","webpack://comparador/./node_modules/moment/locale/en-il.js","webpack://comparador/./node_modules/moment/locale/en-in.js","webpack://comparador/./node_modules/moment/locale/en-nz.js","webpack://comparador/./node_modules/moment/locale/en-sg.js","webpack://comparador/./node_modules/moment/locale/eo.js","webpack://comparador/./node_modules/moment/locale/es-do.js","webpack://comparador/./node_modules/moment/locale/es-mx.js","webpack://comparador/./node_modules/moment/locale/es-us.js","webpack://comparador/./node_modules/moment/locale/es.js","webpack://comparador/./node_modules/moment/locale/et.js","webpack://comparador/./node_modules/moment/locale/eu.js","webpack://comparador/./node_modules/moment/locale/fa.js","webpack://comparador/./node_modules/moment/locale/fi.js","webpack://comparador/./node_modules/moment/locale/fil.js","webpack://comparador/./node_modules/moment/locale/fo.js","webpack://comparador/./node_modules/moment/locale/fr-ca.js","webpack://comparador/./node_modules/moment/locale/fr-ch.js","webpack://comparador/./node_modules/moment/locale/fr.js","webpack://comparador/./node_modules/moment/locale/fy.js","webpack://comparador/./node_modules/moment/locale/ga.js","webpack://comparador/./node_modules/moment/locale/gd.js","webpack://comparador/./node_modules/moment/locale/gl.js","webpack://comparador/./node_modules/moment/locale/gom-deva.js","webpack://comparador/./node_modules/moment/locale/gom-latn.js","webpack://comparador/./node_modules/moment/locale/gu.js","webpack://comparador/./node_modules/moment/locale/he.js","webpack://comparador/./node_modules/moment/locale/hi.js","webpack://comparador/./node_modules/moment/locale/hr.js","webpack://comparador/./node_modules/moment/locale/hu.js","webpack://comparador/./node_modules/moment/locale/hy-am.js","webpack://comparador/./node_modules/moment/locale/id.js","webpack://comparador/./node_modules/moment/locale/is.js","webpack://comparador/./node_modules/moment/locale/it-ch.js","webpack://comparador/./node_modules/moment/locale/it.js","webpack://comparador/./node_modules/moment/locale/ja.js","webpack://comparador/./node_modules/moment/locale/jv.js","webpack://comparador/./node_modules/moment/locale/ka.js","webpack://comparador/./node_modules/moment/locale/kk.js","webpack://comparador/./node_modules/moment/locale/km.js","webpack://comparador/./node_modules/moment/locale/kn.js","webpack://comparador/./node_modules/moment/locale/ko.js","webpack://comparador/./node_modules/moment/locale/ku.js","webpack://comparador/./node_modules/moment/locale/ky.js","webpack://comparador/./node_modules/moment/locale/lb.js","webpack://comparador/./node_modules/moment/locale/lo.js","webpack://comparador/./node_modules/moment/locale/lt.js","webpack://comparador/./node_modules/moment/locale/lv.js","webpack://comparador/./node_modules/moment/locale/me.js","webpack://comparador/./node_modules/moment/locale/mi.js","webpack://comparador/./node_modules/moment/locale/mk.js","webpack://comparador/./node_modules/moment/locale/ml.js","webpack://comparador/./node_modules/moment/locale/mn.js","webpack://comparador/./node_modules/moment/locale/mr.js","webpack://comparador/./node_modules/moment/locale/ms-my.js","webpack://comparador/./node_modules/moment/locale/ms.js","webpack://comparador/./node_modules/moment/locale/mt.js","webpack://comparador/./node_modules/moment/locale/my.js","webpack://comparador/./node_modules/moment/locale/nb.js","webpack://comparador/./node_modules/moment/locale/ne.js","webpack://comparador/./node_modules/moment/locale/nl-be.js","webpack://comparador/./node_modules/moment/locale/nl.js","webpack://comparador/./node_modules/moment/locale/nn.js","webpack://comparador/./node_modules/moment/locale/oc-lnc.js","webpack://comparador/./node_modules/moment/locale/pa-in.js","webpack://comparador/./node_modules/moment/locale/pl.js","webpack://comparador/./node_modules/moment/locale/pt-br.js","webpack://comparador/./node_modules/moment/locale/pt.js","webpack://comparador/./node_modules/moment/locale/ro.js","webpack://comparador/./node_modules/moment/locale/ru.js","webpack://comparador/./node_modules/moment/locale/sd.js","webpack://comparador/./node_modules/moment/locale/se.js","webpack://comparador/./node_modules/moment/locale/si.js","webpack://comparador/./node_modules/moment/locale/sk.js","webpack://comparador/./node_modules/moment/locale/sl.js","webpack://comparador/./node_modules/moment/locale/sq.js","webpack://comparador/./node_modules/moment/locale/sr-cyrl.js","webpack://comparador/./node_modules/moment/locale/sr.js","webpack://comparador/./node_modules/moment/locale/ss.js","webpack://comparador/./node_modules/moment/locale/sv.js","webpack://comparador/./node_modules/moment/locale/sw.js","webpack://comparador/./node_modules/moment/locale/ta.js","webpack://comparador/./node_modules/moment/locale/te.js","webpack://comparador/./node_modules/moment/locale/tet.js","webpack://comparador/./node_modules/moment/locale/tg.js","webpack://comparador/./node_modules/moment/locale/th.js","webpack://comparador/./node_modules/moment/locale/tk.js","webpack://comparador/./node_modules/moment/locale/tl-ph.js","webpack://comparador/./node_modules/moment/locale/tlh.js","webpack://comparador/./node_modules/moment/locale/tr.js","webpack://comparador/./node_modules/moment/locale/tzl.js","webpack://comparador/./node_modules/moment/locale/tzm-latn.js","webpack://comparador/./node_modules/moment/locale/tzm.js","webpack://comparador/./node_modules/moment/locale/ug-cn.js","webpack://comparador/./node_modules/moment/locale/uk.js","webpack://comparador/./node_modules/moment/locale/ur.js","webpack://comparador/./node_modules/moment/locale/uz-latn.js","webpack://comparador/./node_modules/moment/locale/uz.js","webpack://comparador/./node_modules/moment/locale/vi.js","webpack://comparador/./node_modules/moment/locale/x-pseudo.js","webpack://comparador/./node_modules/moment/locale/yo.js","webpack://comparador/./node_modules/moment/locale/zh-cn.js","webpack://comparador/./node_modules/moment/locale/zh-hk.js","webpack://comparador/./node_modules/moment/locale/zh-mo.js","webpack://comparador/./node_modules/moment/locale/zh-tw.js","webpack://comparador/./node_modules/moment/moment.js","webpack://comparador/./node_modules/pikaday/pikaday.js","webpack://comparador/./node_modules/portal-vue/dist/portal-vue.common.js","webpack://comparador/./node_modules/string-convert/camel2hyphen.js","webpack://comparador/./node_modules/sweet-modal-vue/src/components/SweetModal.vue?8a12","webpack://comparador/node_modules/sweet-modal-vue/src/components/SweetModal.vue","webpack://comparador/./node_modules/sweet-modal-vue/src/components/SweetModal.vue?afab","webpack://comparador/./node_modules/sweet-modal-vue/src/components/SweetModal.vue","webpack://comparador/./node_modules/sweet-modal-vue/src/components/SweetModalTab.vue?f6ed","webpack://comparador/node_modules/sweet-modal-vue/src/components/SweetModalTab.vue","webpack://comparador/./node_modules/sweet-modal-vue/src/components/SweetModalTab.vue?c63e","webpack://comparador/./node_modules/sweet-modal-vue/src/components/SweetModalTab.vue","webpack://comparador/./node_modules/sweet-modal-vue/src/plugin.js","webpack://comparador/./node_modules/vee-validate/dist/locale/pt_BR.js","webpack://comparador/./node_modules/vee-validate/dist/vee-validate.esm.js","webpack://comparador/./node_modules/vue-highlightjs/index.js","webpack://comparador/./node_modules/vue-inline-svg/dist/vue-inline-svg.js","webpack://comparador/./node_modules/vue-loading-overlay/dist/vue-loading.min.js","webpack://comparador/./node_modules/vue-mq/dist/vue-mq.es.js","webpack://comparador/./node_modules/vue-multiselect/dist/vue-multiselect.min.js","webpack://comparador/./node_modules/vue-notification/dist/index.js","webpack://comparador/./node_modules/vue-router/dist/vue-router.esm.js","webpack://comparador/./node_modules/vue/dist/vue.esm.js","webpack://comparador/./node_modules/vuex-persistedstate/dist/vuex-persistedstate.es.js","webpack://comparador/./node_modules/vuex/dist/vuex.esm.js","webpack://comparador/./node_modules/@babel/runtime/helpers/esm/defineProperty.js"],"sourcesContent":["/**\r\n * Base functionality\r\n*/\r\nimport { __extends } from \"tslib\";\r\nimport { List, ListTemplate } from \"./utils/List\";\r\nimport { OrderedListTemplate, SortedListTemplate } from \"./utils/SortedList\";\r\nimport { Dictionary, DictionaryTemplate } from \"./utils/Dictionary\";\r\nimport { Disposer } from \"./utils/Disposer\";\r\nimport { EventDispatcher } from \"./utils/EventDispatcher\";\r\nimport { Adapter } from \"./utils/Adapter\";\r\nimport { Color, color } from \"./utils/Color\";\r\nimport { Percent, percent } from \"./utils/Percent\";\r\nimport { registry } from \"./Registry\";\r\nimport { cache } from \"./utils/Cache\";\r\nimport * as $array from \"./utils/Array\";\r\nimport * as $object from \"./utils/Object\";\r\nimport * as $type from \"./utils/Type\";\r\n//import * as $debug from \"./utils/Debug\";\r\n/**\r\n * Provides base functionality for all derivative objects, like generating ids,\r\n * handling cache, etc.\r\n */\r\nvar BaseObject = /** @class */ (function () {\r\n //protected _classes: { [index: string]: any } = {};\r\n /**\r\n * Constructor\r\n * * Sets class name\r\n */\r\n function BaseObject() {\r\n /**\r\n * Indicates if this object has already been deleted. Any\r\n * destruction/disposal code should take this into account when deciding\r\n * wheter to run potentially costly disposal operations if they already have\r\n * been run.\r\n */\r\n this._disposed = false;\r\n /**\r\n * List of IDisposer which will be disposed when the BaseObject is disposed.\r\n */\r\n this._disposers = [];\r\n this.className = \"BaseObject\";\r\n //this.debug();\r\n }\r\n BaseObject.prototype.debug = function () {\r\n //$debug.debug(this);\r\n };\r\n Object.defineProperty(BaseObject.prototype, \"uid\", {\r\n /**\r\n * Returns object's internal unique ID.\r\n *\r\n * @return Unique ID\r\n */\r\n get: function () {\r\n if (!this._uid) {\r\n this._uid = registry.getUniqueId();\r\n registry.map.setKey(this._uid, this);\r\n }\r\n return this._uid;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(BaseObject.prototype, \"id\", {\r\n /**\r\n * @return Id\r\n */\r\n get: function () {\r\n return this._id;\r\n },\r\n /**\r\n * Sets the user-defined id of the element.\r\n *\r\n * @param value Id\r\n */\r\n set: function (value) {\r\n //registry.map.setKey(value, this); // registry.map only stores by uid\r\n this._id = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(BaseObject.prototype, \"map\", {\r\n /**\r\n * Returns a universal collection for mapping ids with objects.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Map collection\r\n */\r\n get: function () {\r\n if (!this._map) {\r\n this._map = new Dictionary();\r\n }\r\n return this._map;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(BaseObject.prototype, \"delayedMap\", {\r\n /**\r\n * Returns mapping for objects referenced by id in JSON config that are not yet\r\n * available at processing time.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Map collection\r\n */\r\n get: function () {\r\n if (!this._delayedMap) {\r\n this._delayedMap = new Dictionary();\r\n }\r\n return this._delayedMap;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Logs an id and property of the target element that is not yet available\r\n * for later assignment.\r\n *\r\n * @ignore\r\n * @param property Property to set\r\n * @param id ID of the target element\r\n */\r\n BaseObject.prototype.addDelayedMap = function (property, id) {\r\n var map = this.delayedMap;\r\n if (!map.hasKey(id)) {\r\n map.setKey(id, []);\r\n }\r\n var list = map.getKey(id);\r\n list.push({\r\n property: property,\r\n target: this\r\n });\r\n };\r\n /**\r\n * Processes delayed JSON config items.\r\n *\r\n * @ignore\r\n */\r\n BaseObject.prototype.processDelayedMap = function () {\r\n var _this = this;\r\n this.delayedMap.each(function (id, list) {\r\n if (_this.map.hasKey(id)) {\r\n var target_1 = _this.map.getKey(id);\r\n $array.each(list, function (item) {\r\n item.target[item.property] = target_1;\r\n });\r\n _this.delayedMap.removeKey(id);\r\n }\r\n });\r\n };\r\n /**\r\n * Applies properties from all assigned themes.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n BaseObject.prototype.applyTheme = function () {\r\n var _this = this;\r\n // TODO is this needed ?\r\n if (registry) {\r\n var themes = this.getCurrentThemes();\r\n // TODO is this needed ?\r\n if (themes) {\r\n $array.each(themes, function (theme, index) {\r\n theme(_this);\r\n });\r\n }\r\n }\r\n };\r\n Object.defineProperty(BaseObject.prototype, \"themes\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return An array of themes\r\n */\r\n get: function () {\r\n return this._themes;\r\n },\r\n /**\r\n * A list of themes to be used for this element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value An array of themes\r\n */\r\n set: function (value) {\r\n this._themes = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a list of themes that should be applied to this element. It could\r\n * either be a list of themes set explicitly on this element, or system-wide.\r\n *\r\n * @return List of themes\r\n */\r\n BaseObject.prototype.getCurrentThemes = function () {\r\n return this.themes || registry.themes;\r\n };\r\n /**\r\n * Returns if this object has been already been disposed.\r\n *\r\n * @return Is disposed?\r\n */\r\n BaseObject.prototype.isDisposed = function () {\r\n return this._disposed;\r\n };\r\n /**\r\n * Destroys this object and all related data.\r\n */\r\n BaseObject.prototype.dispose = function () {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n var a = this._disposers;\r\n this._disposers = null;\r\n while (a.length !== 0) {\r\n var disposer = a.shift();\r\n disposer.dispose();\r\n }\r\n // Clear cache\r\n this.clearCache();\r\n // remove from clones list\r\n if (this.clonedFrom) {\r\n this.clonedFrom.clones.removeValue(this);\r\n }\r\n var uid = this._uid;\r\n if (uid != null) {\r\n registry.map.removeKey(uid);\r\n }\r\n }\r\n };\r\n /**\r\n * Adds an IDisposer, which will be disposed when this object is disposed.\r\n *\r\n * @param target Object to dispose\r\n * @ignore Exclude from docs\r\n */\r\n BaseObject.prototype.addDisposer = function (target) {\r\n this._disposers.push(target);\r\n };\r\n /**\r\n * Disposes disposable object and removes it from `_disposers`.\r\n *\r\n * @param target Object to dispose\r\n * @ignore Exclude from docs\r\n */\r\n BaseObject.prototype.removeDispose = function (target) {\r\n //if(target){\r\n if (!this._disposed) {\r\n var index = $array.indexOf(this._disposers, target);\r\n if (index > -1) {\r\n this._disposers.splice(index, 1);\r\n }\r\n }\r\n target.dispose();\r\n //}\r\n };\r\n /**\r\n * Makes a copy of this object and returns the clone. Try to avoid cloning complex objects like chart, create new instances if you need them.\r\n *\r\n * @param cloneId An id to use for clone (if not set a unique id will be generated)\r\n * @returns Clone\r\n */\r\n BaseObject.prototype.clone = function (cloneId) {\r\n if (!cloneId) {\r\n cloneId = \"clone-\" + registry.getUniqueId();\r\n }\r\n var newObject = new this.constructor();\r\n newObject.cloneId = cloneId;\r\n newObject.copyFrom(this);\r\n // add to clones list\r\n // this.clones.push(newObject); // moved this to copyFrom\r\n return newObject;\r\n };\r\n Object.defineProperty(BaseObject.prototype, \"clones\", {\r\n /**\r\n * Returns a collection of object's clones.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Clones\r\n */\r\n get: function () {\r\n if (!this._clones) {\r\n this._clones = new List();\r\n }\r\n return this._clones;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies all properties and related data from different element.\r\n *\r\n * @param object Source element\r\n */\r\n BaseObject.prototype.copyFrom = function (object) {\r\n object.clones.push(this); // do not moveValue, as it is expensive! even if there will be several items in clones list, it's not that bad.\r\n this.clonedFrom = object;\r\n };\r\n Object.defineProperty(BaseObject.prototype, \"className\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Class name\r\n */\r\n get: function () {\r\n return this._className;\r\n },\r\n /**\r\n * Element's class name. (a class that was used to instantiate the element)\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Class name\r\n */\r\n set: function (value) {\r\n this._className = value;\r\n /*if (registry) {\r\n registry.registeredClasses[value] = typeof this;\r\n }*/\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Caches value in object's cache.\r\n *\r\n * @ignore Exclude from docs\r\n * @param key Key\r\n * @param value Value\r\n * @param ttl TTL in seconds\r\n */\r\n BaseObject.prototype.setCache = function (key, value, ttl) {\r\n cache.set(this.uid, key, value, ttl);\r\n };\r\n /**\r\n * Retrieves cached value.\r\n *\r\n * If optional second padarameter is specified, it will return that value\r\n * if cache is not available or is expired.\r\n *\r\n * @ignore Exclude from docs\r\n * @param key Key\r\n * @param value Value to return if cache is not available\r\n * @return Value\r\n */\r\n BaseObject.prototype.getCache = function (key, value) {\r\n if (value === void 0) { value = undefined; }\r\n return cache.get(this.uid, key, value);\r\n };\r\n /**\r\n * Clears object's local cache.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n BaseObject.prototype.clearCache = function () {\r\n cache.clear(this.uid);\r\n };\r\n /**\r\n * Creates [[Disposer]] for `setTimeout` function call. This ensures that all\r\n * timeouts created by the object will be cleared when object itself is\r\n * disposed.\r\n *\r\n * @ignore Exclude from docs\r\n * @param fn Callback function\r\n * @param delay Timeout (ms)\r\n * @return Disposer for timeout\r\n */\r\n BaseObject.prototype.setTimeout = function (fn, delay) {\r\n var _this = this;\r\n var id = setTimeout(function () {\r\n _this.removeDispose(disposer);\r\n fn();\r\n }, delay);\r\n var disposer = new Disposer(function () {\r\n clearTimeout(id);\r\n });\r\n this._disposers.push(disposer);\r\n return disposer;\r\n };\r\n /**\r\n * Creates [[Disposer]] for `setInterval` function call. This ensures that all\r\n * timeouts created by the object will be cleared when object itself is\r\n * disposed.\r\n *\r\n * @ignore Exclude from docs\r\n * @param fn Callback function\r\n * @param delay Timeout (ms)\r\n * @return Disposer for timeout\r\n */\r\n BaseObject.prototype.setInterval = function (fn, delay) {\r\n var _this = this;\r\n var id = setInterval(function () {\r\n _this.removeDispose(disposer);\r\n fn();\r\n }, delay);\r\n var disposer = new Disposer(function () {\r\n clearTimeout(id);\r\n });\r\n this._disposers.push(disposer);\r\n return disposer;\r\n };\r\n Object.defineProperty(BaseObject.prototype, \"config\", {\r\n /**\r\n * ==========================================================================\r\n * JSON-BASED CONFIG PROCESSING\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Use this property to set JSON-based config. When set, triggers processing\r\n * routine, which will go through all properties, and try to apply values,\r\n * create instances, etc.\r\n *\r\n * Use this with caution, as it is a time-consuming process. It's used for\r\n * initialchart setup only, not routine operations.\r\n *\r\n * @param json JSON config\r\n */\r\n set: function (config) {\r\n try {\r\n this.processConfig(config);\r\n }\r\n catch (e) {\r\n /*if (this instanceof Sprite) {\r\n this.raiseCriticalError(e);\r\n }*/\r\n this.raiseCriticalError(e);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Processes the JSON config.\r\n *\r\n * @param json JSON config\r\n * @ignore Exclude from docs\r\n */\r\n BaseObject.prototype.processConfig = function (config) {\r\n var _this = this;\r\n if (!config) {\r\n return;\r\n }\r\n // Get target\r\n var target = this;\r\n // Iterate through all of the items\r\n $object.eachOrdered(config, function (configKey, value) {\r\n var configValue = value;\r\n // Is this a callback?\r\n if (configKey == \"callback\" && typeof value == \"function\") {\r\n value.call(target);\r\n }\r\n // Check if there's a property in target\r\n if (_this.hasProperty(configKey)) {\r\n var item_1;\r\n // Do we have instructions to create an object?\r\n // We create a new object if \"type\" key is set, but only if the\r\n // target object is of different type.\r\n if ($type.isObject(configValue)\r\n && $type.hasValue(configValue[\"type\"])\r\n && (!$type.isObject(target[configKey])\r\n || !$type.hasValue(target[configKey].className)\r\n || configValue[\"forceCreate\"]\r\n || target[configKey].className != configValue[\"type\"])\r\n && !_this.asIs(configKey)) {\r\n item_1 = _this.createClassInstance(configValue[\"type\"]);\r\n // Create new instance\r\n if (item_1) {\r\n target[configKey] = item_1;\r\n }\r\n else {\r\n item_1 = target[configKey];\r\n }\r\n }\r\n else {\r\n // Get item from the object\r\n item_1 = target[configKey];\r\n }\r\n /**\r\n * It is...\r\n * --------------------------------------------------------------------\r\n */\r\n if (item_1 instanceof Adapter) {\r\n // ... an Adapter, try to add handlers to it\r\n // ------------------------------------------------------------------\r\n _this.processAdapters(item_1, configValue);\r\n }\r\n else if (item_1 instanceof EventDispatcher) {\r\n // ... an EventDispatcher, try to add handlers to it\r\n // ------------------------------------------------------------------\r\n _this.processEvents(item_1, configValue);\r\n }\r\n else if (configKey == \"locale\" && $type.isString(configValue)) {\r\n // ... a locale specified as string, e.g. \"fr_FR\"\r\n // ------------------------------------------------------------------\r\n if (window[\"am4lang_\" + configValue]) {\r\n target[configKey] = window[\"am4lang_\" + configValue];\r\n }\r\n }\r\n else if (configKey == \"parent\" && $type.isString(configValue)) {\r\n // ... a parent referred via its it\r\n // ------------------------------------------------------------------\r\n var parent_1 = _this.map.getKey(configValue);\r\n if (parent_1) {\r\n target[configKey] = parent_1;\r\n }\r\n else {\r\n _this.addDelayedMap(\"parent\", configValue);\r\n }\r\n }\r\n else if (_this.asIs(configKey)) {\r\n // ... a special field, just set it to new value\r\n // ------------------------------------------------------------------\r\n // (no need to add each indvidual item)\r\n target[configKey] = configValue;\r\n }\r\n else if (_this.asFunction(configKey) && $type.isString(configValue)) {\r\n // ... a field indicating function name to look for in registry\r\n // ------------------------------------------------------------------\r\n if ($type.hasValue(registry.registeredClasses[configValue])) {\r\n target[configKey] = registry.registeredClasses[configValue];\r\n }\r\n else {\r\n throw Error(\"Invalid easing function: \" + configValue);\r\n }\r\n }\r\n else if (configValue instanceof BaseObject) {\r\n // ... a BaseObject object, we just going to use it as it is\r\n // ------------------------------------------------------------------\r\n target[configKey] = configValue;\r\n }\r\n else if (item_1 instanceof BaseObject) {\r\n // ... another child BaseObject\r\n // ------------------------------------------------------------------\r\n // Let's just pass in config part in and let itself deal with it\r\n item_1.config = configValue;\r\n }\r\n else if (item_1 instanceof ListTemplate || item_1 instanceof OrderedListTemplate || item_1 instanceof SortedListTemplate) {\r\n // ... a list with template\r\n // ------------------------------------------------------------------\r\n // Let's see what we can do with it\r\n if ($type.isArray(configValue)) {\r\n // It's an array.\r\n // Create a list item for entry, or try to apply properties to an\r\n // existing entry if possible and it is present.\r\n if (item_1 instanceof ListTemplate) {\r\n _this.processListTemplate(configValue, item_1);\r\n }\r\n else {\r\n _this.processOrderedTemplate(configValue, item_1);\r\n }\r\n }\r\n else if ($type.isObject(configValue)) {\r\n // It's a single oject.\r\n // Treat it as a template.\r\n if (configValue instanceof BaseObject) {\r\n // Item is already a BaseObject, no need to process it further\r\n item_1.template = configValue;\r\n }\r\n else {\r\n // Now let's find out if the whole object if a template, or we\r\n // need to get it from `template` key\r\n var templateValue = void 0;\r\n if ($type.hasValue(configValue.template)) {\r\n templateValue = configValue.template;\r\n }\r\n else {\r\n templateValue = configValue;\r\n }\r\n if (item_1.template instanceof BaseObject) {\r\n // Template is a BaseObject so we will just let its config\r\n // deal with the configuration\r\n item_1.template.config = templateValue;\r\n }\r\n else {\r\n $object.each(templateValue, function (entryKey, entryValue) {\r\n var listItem = item_1.template[entryKey];\r\n if (listItem instanceof Adapter) {\r\n _this.processAdapters(listItem, entryValue);\r\n }\r\n else if (listItem instanceof EventDispatcher) {\r\n _this.processEvents(listItem, entryValue);\r\n }\r\n else if (listItem instanceof DictionaryTemplate) {\r\n _this.processDictionaryTemplate(listItem, entryValue);\r\n }\r\n else if (item_1.template[entryKey] instanceof BaseObject) {\r\n // Template is a BaseObject. Let it deal with its own config.\r\n item_1.template[entryKey].config = entryValue;\r\n }\r\n else if ($type.isObject(entryValue) && $type.hasValue(entryValue[\"type\"])) {\r\n listItem = _this.createClassInstance(entryValue[\"type\"]);\r\n if (listItem) {\r\n if (listItem instanceof BaseObject) {\r\n listItem.config = entryValue;\r\n }\r\n item_1.template[entryKey] = listItem;\r\n }\r\n else {\r\n item_1.template[entryKey] = entryValue;\r\n }\r\n }\r\n else if (listItem instanceof List) {\r\n // It's List, process it\r\n _this.processList(entryValue, listItem);\r\n }\r\n else {\r\n // Aything else. Just assing and be done with it.\r\n item_1.template[entryKey] = _this.maybeColorOrPercent(entryValue);\r\n }\r\n });\r\n }\r\n // Check maybe there are `values` to insert\r\n if ($type.hasValue(configValue.values)) {\r\n if (item_1 instanceof ListTemplate) {\r\n _this.processListTemplate(configValue.values, item_1);\r\n }\r\n else {\r\n _this.processOrderedTemplate(configValue.values, item_1);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n // Something else?\r\n // Not sure what to do with it on a list - ignore\r\n }\r\n }\r\n else if (item_1 instanceof List) {\r\n // ... a list\r\n // ------------------------------------------------------------------\r\n if (configKey == \"children\") {\r\n _this.processList(configValue, item_1, _this);\r\n }\r\n else {\r\n _this.processList(configValue, item_1);\r\n }\r\n }\r\n else if (item_1 instanceof DictionaryTemplate) {\r\n // ... a dictionary with template\r\n // ------------------------------------------------------------------\r\n _this.processDictionaryTemplate(item_1, configValue);\r\n }\r\n else if (item_1 instanceof Dictionary) {\r\n // ... a dictionary\r\n // ------------------------------------------------------------------\r\n _this.processDictionary(item_1, configValue);\r\n }\r\n else if (item_1 instanceof Color || item_1 instanceof Percent) {\r\n // ... it's a Color or Percent\r\n // ------------------------------------------------------------------\r\n target[configKey] = _this.maybeColorOrPercent(configValue);\r\n }\r\n else if ($type.isObject(item_1) && $type.isObject(configValue)) {\r\n // ... a regular object\r\n // ------------------------------------------------------------------\r\n $object.copyAllProperties(configValue, item_1);\r\n }\r\n else {\r\n // ... something else - probably a simple property or object\r\n // ------------------------------------------------------------------\r\n // Maybe convert to `Percent` or `Color`?\r\n configValue = _this.maybeColorOrPercent(configValue);\r\n // Assign\r\n target[configKey] = configValue;\r\n }\r\n }\r\n else if (!_this.isReserved(configKey)) {\r\n // Doesn't have property set. But we're going to assume JSON config\r\n // creator knows what he/she is doing and set it anyway.\r\n target[configKey] = configValue;\r\n }\r\n }, this.configOrder);\r\n // Any errors?\r\n if (this.processingErrors.length) {\r\n var errors = this.processingErrors.join(\"\\n\");\r\n this._processingErrors = [];\r\n throw Error(errors);\r\n }\r\n };\r\n /**\r\n * Tries to detect if value is color or percent and converts to proper object\r\n * if necessary.\r\n *\r\n * Returns the same source value if no color/percent detected\r\n *\r\n * @param value Source value\r\n * @return Converted value\r\n */\r\n BaseObject.prototype.maybeColorOrPercent = function (value) {\r\n if ($type.isString(value)) {\r\n if (value.match(/^[\\-]?[0-9.]+\\%$/)) {\r\n return percent($type.toNumber(value));\r\n }\r\n else if (value.match(/^\\#[0-9abcdef]{3,}$/i)) {\r\n return color(value);\r\n }\r\n }\r\n return value;\r\n };\r\n BaseObject.prototype.processAdapters = function (item, config) {\r\n var _this = this;\r\n if ($type.isArray(config)) {\r\n $array.each(config, function (entry, index) {\r\n item.add(entry.key, entry.callback, entry.priority || 0, _this);\r\n });\r\n }\r\n else if ($type.isObject(config)) {\r\n $object.each(config, function (key, entry) {\r\n if (!item.has(key, entry)) {\r\n item.add(key, entry);\r\n }\r\n });\r\n }\r\n };\r\n BaseObject.prototype.processEvents = function (item, config) {\r\n var _this = this;\r\n if ($type.isArray(config)) {\r\n $array.each(config, function (entry, index) {\r\n item.on(entry.type, entry.callback, _this);\r\n });\r\n }\r\n else if ($type.isObject(config)) {\r\n $object.each(config, function (key, entry) {\r\n if (!item.has(key, entry)) {\r\n item.on(key, entry);\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * Processes JSON config for a [[DictionaryTemplate]] item.\r\n *\r\n * @todo Description\r\n * @param item Item\r\n * @param config Config\r\n */\r\n BaseObject.prototype.processDictionaryTemplate = function (item, config) {\r\n // We can only process object\r\n // Not sure what to do with other types - ignore\r\n if ($type.isObject(config)) {\r\n // Create an entry for each item, or override properties for\r\n // existing one.\r\n $object.each(config, function (entryKey, entryValue) {\r\n var listItem;\r\n // Get existing one, or create a new one\r\n if (entryKey == \"template\") {\r\n listItem = item.template;\r\n }\r\n else if (item.hasKey(entryKey)) {\r\n listItem = item.getKey(entryKey);\r\n }\r\n else {\r\n listItem = item.create(entryKey);\r\n }\r\n // Set data\r\n if (listItem instanceof BaseObject) {\r\n listItem.config = entryValue;\r\n }\r\n else if ($type.isObject(listItem) && $type.isObject(entryValue)) {\r\n $object.copyAllProperties(entryValue, listItem);\r\n }\r\n else {\r\n listItem.setKey(entryKey, entryValue);\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * Processes JSON config for a [[Dictionary]] item.\r\n *\r\n * @todo Description\r\n * @param item Item\r\n * @param config Config\r\n */\r\n BaseObject.prototype.processDictionary = function (item, config) {\r\n // We can only process object\r\n // Not sure what to do with other types - ignore\r\n if ($type.isObject(config)) {\r\n // Create an entry for each item, or override properties for\r\n // existing one.\r\n // @todo support for non-basic types\r\n $object.each(config, function (entryKey, entryValue) {\r\n item.setKey(entryKey, entryValue);\r\n });\r\n }\r\n };\r\n /**\r\n * Processes [[ListTemplate]].\r\n *\r\n * @param configValue Config value\r\n * @param item Item\r\n */\r\n BaseObject.prototype.processListTemplate = function (configValue, item) {\r\n var _this = this;\r\n $array.each(configValue, function (entry, index) {\r\n var type = _this.getConfigEntryType(entry);\r\n var listItem;\r\n if (item.hasIndex(index) && !entry[\"forceCreate\"]) {\r\n listItem = item.getIndex(index);\r\n }\r\n else if (entry instanceof BaseObject) {\r\n // Item is already a BaseObject, no need to process it further\r\n item.push(entry);\r\n return;\r\n }\r\n else if (type) {\r\n listItem = item.create(type);\r\n }\r\n else {\r\n listItem = item.create();\r\n }\r\n if (entry === listItem) {\r\n // It's already the same item, do nothing\r\n }\r\n else {\r\n if ($type.isObject(entry)) {\r\n // If the list item is BaseObject, we just need to let it\r\n // deal if its own config\r\n if (listItem instanceof BaseObject) {\r\n listItem.config = entry;\r\n }\r\n else if ($type.isObject(listItem) && $type.isObject(entry)) {\r\n $object.copyAllProperties(entry, listItem);\r\n }\r\n else {\r\n item.setIndex(item.indexOf(listItem), entry);\r\n }\r\n }\r\n }\r\n });\r\n // Truncate the list if it contains less items than the config\r\n // array\r\n while (configValue.length > item.length) {\r\n item.pop();\r\n }\r\n };\r\n /**\r\n * Processes [[OrdererListTemplate]] or [[SortedListTemplate]].\r\n *\r\n * @param configValue Config value\r\n * @param item Item\r\n */\r\n BaseObject.prototype.processOrderedTemplate = function (configValue, item) {\r\n var _this = this;\r\n $array.each(configValue, function (entry, index) {\r\n var type = _this.getConfigEntryType(entry);\r\n var listItem;\r\n if (type) {\r\n listItem = item.create(type);\r\n }\r\n else {\r\n listItem = item.create();\r\n }\r\n if ($type.isObject(entry)) {\r\n // If the list item is BaseObject, we just need to let it\r\n // deal if its own config\r\n if (listItem instanceof BaseObject) {\r\n listItem.config = entry;\r\n }\r\n else if ($type.isObject(listItem) && $type.isObject(entry)) {\r\n $object.copyAllProperties(entry, listItem);\r\n }\r\n else {\r\n item.insert(entry);\r\n }\r\n }\r\n });\r\n };\r\n /**\r\n * Processes [[List]].\r\n *\r\n * @param configValue Config value\r\n * @param item Item\r\n */\r\n BaseObject.prototype.processList = function (configValue, item, parent) {\r\n var _this = this;\r\n // Convert to array if necessary\r\n if (!$type.isArray(configValue)) {\r\n configValue = [configValue];\r\n }\r\n // It's an array\r\n // Create a list item for entry\r\n var itemCount = item.length;\r\n var extraCount = 0;\r\n $array.each(configValue, function (entry, index) {\r\n if ($type.isObject(entry)) {\r\n // An object.\r\n //\r\n // Let's see if we can instantiate a class out of it, or we need\r\n // to push it into list as it is.\r\n //\r\n // If there are items already at the specified index in the list,\r\n // apply properties rather than create a new one.\r\n var listItem = void 0;\r\n if ((index < itemCount) && !entry[\"forceCreate\"]) {\r\n listItem = item.getIndex(index);\r\n }\r\n else if (entry instanceof BaseObject) {\r\n // Item is already a BaseObject, no need to process it further\r\n item.push(entry);\r\n return;\r\n }\r\n else {\r\n extraCount++;\r\n listItem = _this.createEntryInstance(entry);\r\n if (parent) {\r\n listItem.parent = parent;\r\n }\r\n else {\r\n item.push(listItem);\r\n }\r\n }\r\n // If the list item is BaseObject, we just need to let it\r\n // deal if its own config\r\n if (listItem instanceof BaseObject) {\r\n listItem.config = entry;\r\n }\r\n else if ($type.isObject(listItem) && $type.isObject(entry)) {\r\n $object.copyAllProperties(entry, listItem);\r\n }\r\n }\r\n else {\r\n // Basic value.\r\n // Just push it into list, or override existing value\r\n if (item.hasIndex(index)) {\r\n item.setIndex(index, entry);\r\n }\r\n else {\r\n item.push(entry);\r\n }\r\n }\r\n });\r\n // Truncate the list if it contains less items than the config\r\n // array\r\n while ((configValue.length + extraCount) < item.length) {\r\n item.pop();\r\n }\r\n };\r\n /**\r\n * This function is used to sort element's JSON config properties, so that\r\n * some properties that absolutely need to be processed last, can be put at\r\n * the end.\r\n *\r\n * @ignore Exclude from docs\r\n * @param a Element 1\r\n * @param b Element 2\r\n * @return Sorting number\r\n */\r\n BaseObject.prototype.configOrder = function (a, b) {\r\n if (a == b) {\r\n return 0;\r\n }\r\n // Language must come first, so it's all set up when the rest of the\r\n // elements are being instantiated\r\n else if (a == \"language\") {\r\n return -1;\r\n }\r\n else if (b == \"language\") {\r\n return 1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n };\r\n /**\r\n * Checks if field should be just assigned as is, without any checking when\r\n * processing JSON config.\r\n *\r\n * Extending functions can override this function to do their own checks.\r\n *\r\n * @param field Field name\r\n * @return Assign as is?\r\n */\r\n BaseObject.prototype.asIs = function (field) {\r\n return $array.indexOf([\"locale\"], field) != -1;\r\n };\r\n /**\r\n * Checks if field needs to be converted to function, if it is specified\r\n * as string.\r\n *\r\n * @param field Field name\r\n * @return Assign as function?\r\n */\r\n BaseObject.prototype.asFunction = function (field) {\r\n return false;\r\n };\r\n /**\r\n * Creates a relevant class instance if such class definition exists.\r\n *\r\n * @ignore Exclude from docs\r\n * @param className Class name\r\n * @return Instance\r\n */\r\n BaseObject.prototype.createClassInstance = function (className) {\r\n if ($type.hasValue(registry.registeredClasses[className])) {\r\n return new registry.registeredClasses[className]();\r\n }\r\n else {\r\n throw Error(\"Invalid type: \\\"\" + className + \"\\\".\");\r\n }\r\n };\r\n /**\r\n * Creates a class instance for a config entry using it's type. (as set in\r\n * `type` property)\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config part\r\n * @return Instance\r\n */\r\n BaseObject.prototype.createEntryInstance = function (config) {\r\n var res;\r\n if ($type.hasValue(config[\"type\"])) {\r\n res = this.createClassInstance(config[\"type\"]);\r\n }\r\n if (!res) {\r\n return config;\r\n }\r\n return res;\r\n };\r\n /**\r\n * Determines config object type.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config part\r\n * @return Type\r\n */\r\n BaseObject.prototype.getConfigEntryType = function (config) {\r\n if ($type.hasValue(config[\"type\"])) {\r\n if ($type.hasValue(registry.registeredClasses[config[\"type\"]])) {\r\n return registry.registeredClasses[config[\"type\"]];\r\n }\r\n else {\r\n throw Error(\"Invalid type: \\\"\" + config[\"type\"] + \"\\\".\");\r\n }\r\n }\r\n return;\r\n };\r\n /**\r\n * Checks if this element has a property.\r\n *\r\n * @ignore Exclude from docs\r\n * @param prop Property name\r\n * @return Has property?\r\n */\r\n BaseObject.prototype.hasProperty = function (prop) {\r\n return prop in this ? true : false;\r\n };\r\n /**\r\n * Checkes whether JSON key is a reserved keyword.\r\n *\r\n * @param key Key\r\n * @return Reserved\r\n */\r\n BaseObject.prototype.isReserved = function (key) {\r\n return [\"type\", \"forceCreate\"].indexOf(key) !== -1;\r\n };\r\n Object.defineProperty(BaseObject.prototype, \"processingErrors\", {\r\n /**\r\n * A list of errors that happened during JSON processing.\r\n *\r\n * @return Errors\r\n */\r\n get: function () {\r\n if (!this._processingErrors) {\r\n this._processingErrors = [];\r\n }\r\n return this._processingErrors;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return BaseObject;\r\n}());\r\nexport { BaseObject };\r\n;\r\n/**\r\n * A version of [[BaseObject]] with events properties and methods.\r\n * Classes that use [[EventDispatcher]] should extend this instead of\r\n * [[BaseObject]] directly.\r\n */\r\nvar BaseObjectEvents = /** @class */ (function (_super) {\r\n __extends(BaseObjectEvents, _super);\r\n /**\r\n * Constructor\r\n */\r\n function BaseObjectEvents() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"BaseObjectEvents\";\r\n return _this;\r\n }\r\n Object.defineProperty(BaseObjectEvents.prototype, \"events\", {\r\n /**\r\n * An [[EventDispatcher]] instance\r\n */\r\n get: function () {\r\n if (!this._eventDispatcher) {\r\n this._eventDispatcher = new EventDispatcher();\r\n this._disposers.push(this._eventDispatcher);\r\n }\r\n return this._eventDispatcher;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n //public set events(value:EventDispatcher>){\r\n //\tthis._eventDispatcher = value;\r\n //}\r\n /**\r\n * Dispatches an event using own event dispatcher. Will automatically\r\n * populate event data object with event type and target (this element).\r\n * It also checks if there are any handlers registered for this sepecific\r\n * event.\r\n *\r\n * @param eventType Event type (name)\r\n * @param data Data to pass into event handler(s)\r\n */\r\n BaseObjectEvents.prototype.dispatch = function (eventType, data) {\r\n // @todo Implement proper type check\r\n if (this._eventDispatcher) {\r\n if (this.events.isEnabled(eventType)) {\r\n if (data) {\r\n data.type = eventType;\r\n data.target = data.target || this;\r\n this.events.dispatch(eventType, {\r\n type: eventType,\r\n target: this\r\n });\r\n }\r\n else {\r\n this.events.dispatch(eventType, {\r\n type: eventType,\r\n target: this\r\n });\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Works like `dispatch`, except event is triggered immediately, without\r\n * waiting for the next frame cycle.\r\n *\r\n * @param eventType Event type (name)\r\n * @param data Data to pass into event handler(s)\r\n */\r\n BaseObjectEvents.prototype.dispatchImmediately = function (eventType, data) {\r\n // @todo Implement proper type check\r\n if (this._eventDispatcher) {\r\n if (this.events.isEnabled(eventType)) {\r\n if (data) {\r\n data.type = eventType;\r\n data.target = data.target || this;\r\n this.events.dispatchImmediately(eventType, data);\r\n }\r\n else {\r\n this.events.dispatchImmediately(eventType, {\r\n type: eventType,\r\n target: this\r\n });\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Copies all parameters from another [[Sprite]].\r\n *\r\n * @param source Source object\r\n */\r\n BaseObjectEvents.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n if (source._eventDispatcher) {\r\n this.events.copyFrom(source._eventDispatcher);\r\n }\r\n };\r\n return BaseObjectEvents;\r\n}(BaseObject));\r\nexport { BaseObjectEvents };\r\n//# sourceMappingURL=Base.js.map","import { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"./Container\";\r\nimport { List, ListDisposer } from \"./utils/List\";\r\nimport { OrderedListTemplate } from \"./utils/SortedList\";\r\nimport { Dictionary } from \"./utils/Dictionary\";\r\nimport { Disposer, MultiDisposer } from \"./utils/Disposer\";\r\nimport { DataSource } from \"./data/DataSource\";\r\nimport { Responsive } from \"./utils/Responsive\";\r\nimport { system } from \"./System\";\r\nimport { DataItem } from \"./DataItem\";\r\nimport { registry } from \"./Registry\";\r\nimport * as $math from \"./utils/Math\";\r\nimport * as $array from \"./utils/Array\";\r\nimport * as $ease from \"./utils/Ease\";\r\nimport * as $utils from \"./utils/Utils\";\r\nimport * as $iter from \"./utils/Iterator\";\r\nimport * as $object from \"./utils/Object\";\r\nimport * as $type from \"./utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A Component represents an independent functional element or control, that\r\n * can have it's own behavior, children, data, etc.\r\n *\r\n * A few examples of a Component: [[Legend]], [[Series]], [[Scrollbar]].\r\n *\r\n * @see {@link IComponentEvents} for a list of available events\r\n * @see {@link IComponentAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar Component = /** @class */ (function (_super) {\r\n __extends(Component, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Component() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Holds data field names.\r\n *\r\n * Data fields define connection beween [[DataItem]] and actual properties\r\n * in raw data.\r\n */\r\n _this.dataFields = {};\r\n /**\r\n * A list of [[DataSource]] definitions of external data source.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._dataSources = {};\r\n /**\r\n * This is used when only new data is invalidated (if added using `addData`\r\n * method).\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._parseDataFrom = 0;\r\n /**\r\n * Holds the disposers for the dataItems and dataUsers\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._dataDisposers = [];\r\n /**\r\n * Currently selected \"data set\".\r\n *\r\n * If it's set to `\"\"`, main data set (unaggregated data) is used.\r\n */\r\n _this._currentDataSetId = \"\";\r\n /**\r\n * [_start description]\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._start = 0;\r\n /**\r\n * [_end description]\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._end = 1;\r\n /**\r\n * If set to `true`, changing data range in element will not trigger\r\n * `daterangechanged` event.\r\n */\r\n _this.skipRangeEvent = false;\r\n /**\r\n * Whenever selected scope changes (chart is zoomed or panned), for example\r\n * by interaction from a Scrollbar, or API, a chart needs to reposition\r\n * its contents.\r\n *\r\n * `rangeChangeDuration` influences how this is performed.\r\n *\r\n * If set to zero (0), the change will happen instantenously.\r\n *\r\n * If set to non-zero value, the chart will gradually animate into new\r\n * position for the set amount of milliseconds.\r\n *\r\n * @default 0\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n */\r\n _this.rangeChangeDuration = 0;\r\n /**\r\n * An easing function to use for range change animation.\r\n *\r\n * @see {@link Ease}\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n */\r\n _this.rangeChangeEasing = $ease.cubicOut;\r\n /**\r\n * A duration (ms) of each data parsing step. A Component parses its data in\r\n * chunks in order to avoid completely freezing the machine when large data\r\n * sets are used. This setting will control how many milliseconds should pass\r\n * when parsing data until parser stops for a brief moment to let other\r\n * processes catch up.\r\n */\r\n _this.parsingStepDuration = 50;\r\n /**\r\n * [dataInvalid description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n _this.dataInvalid = false;\r\n /**\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this.rawDataInvalid = false;\r\n /**\r\n * [dataRangeInvalid description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n _this.dataRangeInvalid = false;\r\n /**\r\n * [dataItemsInvalid description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n _this.dataItemsInvalid = false;\r\n /**\r\n * If set to a non-zero number the element will \"animate\" data values of its\r\n * children.\r\n *\r\n * This will happen on first load and whenever data values change.\r\n *\r\n * Enabling interpolation will mean that elements will transit smoothly into\r\n * new values rather than updating instantly.\r\n *\r\n * @default 0\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n */\r\n _this.interpolationDuration = 0;\r\n /**\r\n * An easing function to use for interpolating values when transiting from\r\n * one source value to another.\r\n *\r\n * @default cubicOut\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n * @see {@link Ease}\r\n */\r\n _this.interpolationEasing = $ease.cubicOut;\r\n /**\r\n * Indicates whether transition between data item's values should start and\r\n * play out all at once, or with a small delay (as defined by\r\n * `sequencedInterpolationDelay`) for each subsequent data item.\r\n *\r\n * @default true\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n */\r\n _this.sequencedInterpolation = true;\r\n /**\r\n * A delay (ms) to wait between animating each subsequent data item's\r\n * interpolation animation.\r\n *\r\n * Relative only if `sequencedInterpolation = true`.\r\n *\r\n * @default 0\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n */\r\n _this.sequencedInterpolationDelay = 0;\r\n /**\r\n * A progress (0-1) for the data validation process.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this.dataValidationProgress = 0;\r\n _this._addAllDataItems = true;\r\n _this._usesData = true;\r\n _this.className = \"Component\";\r\n _this.minZoomCount = 1;\r\n _this.maxZoomCount = 0;\r\n _this._dataItems = new OrderedListTemplate(_this.createDataItem());\r\n _this._dataItems.events.on(\"inserted\", _this.handleDataItemAdded, _this, false);\r\n _this._dataItems.events.on(\"removed\", _this.handleDataItemRemoved, _this, false);\r\n _this._disposers.push(new ListDisposer(_this._dataItems));\r\n _this._disposers.push(_this._dataItems.template);\r\n _this.invalidateData();\r\n // TODO what about remove ?\r\n _this.dataUsers.events.on(\"inserted\", _this.handleDataUserAdded, _this, false);\r\n // Set up disposers\r\n _this._disposers.push(new MultiDisposer(_this._dataDisposers));\r\n _this._start = 0;\r\n _this._end = 1;\r\n _this.maxZoomDeclination = 1;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n Component.prototype.createDataItem = function () {\r\n return new DataItem();\r\n };\r\n /**\r\n * [handleDataUserAdded description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param event Event object\r\n */\r\n Component.prototype.handleDataUserAdded = function (event) {\r\n var dataUser = event.newValue;\r\n dataUser.dataProvider = this;\r\n };\r\n /**\r\n * [handleDataItemValueChange description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n Component.prototype.handleDataItemValueChange = function (dataItem, name) {\r\n if (!this.dataItemsInvalid) {\r\n this.invalidateDataItems();\r\n }\r\n };\r\n /**\r\n * [handleDataItemWorkingValueChange description]\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.handleDataItemWorkingValueChange = function (dataItem, name) {\r\n };\r\n /**\r\n * [handleDataItemWorkingLocationChange description]\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.handleDataItemWorkingLocationChange = function (dataItem, name) {\r\n };\r\n /**\r\n * [handleDataItemCalculatedValueChange description]\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.handleDataItemCalculatedValueChange = function (dataItem, name) {\r\n };\r\n /**\r\n * [handleDataItemPropertyChange description]\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.handleDataItemPropertyChange = function (dataItem, name) {\r\n };\r\n /**\r\n * Populates a [[DataItem]] width data from data source.\r\n *\r\n * Loops through all the fields and if such a field is found in raw data\r\n * object, a corresponding value on passed in `dataItem` is set.\r\n *\r\n * @ignore Exclude from docs\r\n * @param item\r\n */\r\n Component.prototype.processDataItem = function (dataItem, dataContext) {\r\n var _this = this;\r\n if (dataItem) {\r\n if (!dataContext) {\r\n dataContext = {};\r\n }\r\n // store reference to original data item\r\n dataItem.dataContext = dataContext;\r\n var hasSomeValues_1 = false;\r\n $object.each(this.dataFields, function (key, fieldValue) {\r\n var fieldName = key;\r\n var value = dataContext[fieldValue];\r\n // Apply adapters to a retrieved value\r\n if (_this._adapterO) {\r\n if (_this._adapterO.isEnabled(\"dataContextValue\")) {\r\n value = _this._adapterO.apply(\"dataContextValue\", {\r\n field: fieldName,\r\n value: value,\r\n dataItem: dataItem\r\n }).value;\r\n }\r\n }\r\n if ($type.hasValue(value)) {\r\n hasSomeValues_1 = true;\r\n if (dataItem.hasChildren[fieldName]) {\r\n var template = _this.createDataItem();\r\n template.copyFrom(_this.mainDataSet.template);\r\n var children = new OrderedListTemplate(template);\r\n children.events.on(\"inserted\", _this.handleDataItemAdded, _this, false);\r\n children.events.on(\"removed\", _this.handleDataItemRemoved, _this, false);\r\n _this._dataDisposers.push(new ListDisposer(children));\r\n var count = value.length;\r\n for (var i = 0; i < count; i++) {\r\n var rawDataItem = value[i];\r\n var childDataItem = children.create();\r\n childDataItem.parent = dataItem;\r\n _this.processDataItem(childDataItem, rawDataItem);\r\n }\r\n var anyDataItem = dataItem;\r\n anyDataItem[fieldName] = children;\r\n }\r\n else {\r\n // data is converted to numbers/dates in each dataItem\r\n dataItem[fieldName] = value;\r\n }\r\n }\r\n });\r\n $object.each(this.propertyFields, function (key, fieldValue) {\r\n var f = key;\r\n var value = dataContext[fieldValue];\r\n if ($type.hasValue(value)) {\r\n hasSomeValues_1 = true;\r\n dataItem.setProperty(f, value);\r\n }\r\n });\r\n // @todo we might need some flag which would tell whether we should create empty data items or not.\r\n if (!this._addAllDataItems && !hasSomeValues_1) {\r\n this.mainDataSet.remove(dataItem);\r\n }\r\n }\r\n };\r\n /**\r\n *\r\n * When validating raw data, instead of processing data item, we update it\r\n *\r\n * @ignore Exclude from docs\r\n * @param item\r\n */\r\n Component.prototype.updateDataItem = function (dataItem) {\r\n var _this = this;\r\n if (dataItem) {\r\n var dataContext_1 = dataItem.dataContext;\r\n $object.each(this.dataFields, function (key, fieldValue) {\r\n var fieldName = key;\r\n var value = dataContext_1[fieldValue];\r\n // Apply adapters to a retrieved value\r\n if (_this._adapterO) {\r\n value = _this._adapterO.apply(\"dataContextValue\", {\r\n field: fieldName,\r\n value: value,\r\n dataItem: dataItem\r\n }).value;\r\n }\r\n if ($type.hasValue(value)) {\r\n if (dataItem.hasChildren[fieldName]) {\r\n var anyDataItem = dataItem;\r\n var children = (anyDataItem[fieldName]);\r\n children.each(function (child) {\r\n _this.updateDataItem(child);\r\n });\r\n }\r\n else {\r\n // data is converted to numbers/dates in each dataItem\t\t\t\t\t\r\n dataItem[fieldName] = value;\r\n }\r\n }\r\n });\r\n $object.each(this.propertyFields, function (key, fieldValue) {\r\n var f = key;\r\n var value = dataContext_1[fieldValue];\r\n if ($type.hasValue(value)) {\r\n dataItem.setProperty(f, value);\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * [validateDataElements description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n Component.prototype.validateDataElements = function () {\r\n var count = this.endIndex;\r\n for (var i = this.startIndex; i < count; i++) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n // TODO is this correct\r\n if (dataItem) {\r\n this.validateDataElement(dataItem);\r\n }\r\n }\r\n };\r\n /**\r\n * Validates this element and its related elements.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.validate = function () {\r\n this.validateDataElements();\r\n _super.prototype.validate.call(this);\r\n };\r\n /**\r\n * [validateDataElement description]\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem [description]\r\n */\r\n Component.prototype.validateDataElement = function (dataItem) {\r\n };\r\n /**\r\n * Adds one or several (array) of data items to the existing data.\r\n *\r\n * @param rawDataItem One or many raw data item objects\r\n */\r\n Component.prototype.addData = function (rawDataItem, removeCount, skipRaw) {\r\n var _this = this;\r\n // need to check if data is invalid, as addData might be called multiple times\r\n if (!this.dataInvalid && this.inited) {\r\n this._parseDataFrom = this.data.length; // save length of parsed data\r\n }\r\n if (!skipRaw) {\r\n if (rawDataItem instanceof Array) {\r\n // can't use concat because new array is returned\r\n $array.each(rawDataItem, function (dataItem) {\r\n _this.data.push(dataItem);\r\n });\r\n }\r\n else {\r\n this.data.push(rawDataItem); // add to raw data array\r\n }\r\n }\r\n if (this.inited) {\r\n this.removeData(removeCount, skipRaw);\r\n }\r\n else {\r\n if ($type.isNumber(removeCount)) {\r\n while (removeCount > 0) {\r\n this.data.shift();\r\n removeCount--;\r\n }\r\n }\r\n }\r\n this.invalidateData();\r\n };\r\n /**\r\n * Removes elements from the beginning of data\r\n *\r\n * @param count number of elements to remove\r\n */\r\n Component.prototype.removeData = function (count, skipRaw) {\r\n if ($type.isNumber(count) && count > 0) {\r\n while (count > 0) {\r\n var dataItem = this.mainDataSet.getIndex(0);\r\n if (dataItem) {\r\n this.mainDataSet.remove(dataItem);\r\n }\r\n this.dataUsers.each(function (dataUser) {\r\n if (!dataUser.data || dataUser.data.length == 0) {\r\n var dataItem_1 = dataUser.mainDataSet.getIndex(0);\r\n if (dataItem_1) {\r\n dataUser.mainDataSet.remove(dataItem_1);\r\n }\r\n }\r\n });\r\n if (!skipRaw) {\r\n this.data.shift();\r\n }\r\n if (this._parseDataFrom > 0) {\r\n this._parseDataFrom--;\r\n }\r\n count--;\r\n }\r\n // changed from invalidateData since 4.7.19 to solve #51551\r\n this.invalidateDataItems();\r\n }\r\n };\r\n /**\r\n * Triggers a data (re)parsing.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.invalidateData = function () {\r\n if (this.disabled || this.isTemplate) {\r\n return;\r\n }\r\n //if(!this.dataInvalid){\r\n registry.addToInvalidComponents(this);\r\n system.requestFrame();\r\n this.dataInvalid = true;\r\n $iter.each(this.dataUsers.iterator(), function (x) {\r\n x.invalidateDataItems();\r\n });\r\n //}\r\n };\r\n /**\r\n * [invalidateDataUsers description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n Component.prototype.invalidateDataUsers = function () {\r\n $iter.each(this.dataUsers.iterator(), function (x) {\r\n x.invalidate();\r\n });\r\n };\r\n /**\r\n * Invalidates data values. When data array is not changed, but values within\r\n * it changes, we invalidate data so that component would process changes.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.invalidateDataItems = function () {\r\n if (this.disabled || this.isTemplate) {\r\n return;\r\n }\r\n //if(!this.dataItemsInvalid){\r\n $array.move(registry.invalidDataItems, this);\r\n system.requestFrame();\r\n this.dataItemsInvalid = true;\r\n $iter.each(this.dataUsers.iterator(), function (x) {\r\n x.invalidateDataItems();\r\n });\r\n //}\r\n };\r\n /**\r\n * Invalidates data range. This is done when data which must be shown\r\n * changes (chart is zoomed for example).\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.invalidateDataRange = function () {\r\n if (this.disabled || this.isTemplate) {\r\n return;\r\n }\r\n //if(!this.dataRangeInvalid){\r\n this.dataRangeInvalid = true;\r\n $array.move(registry.invalidDataRange, this);\r\n system.requestFrame();\r\n //}\r\n };\r\n /**\r\n * Processes data range.\r\n *\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.validateDataRange = function () {\r\n $array.remove(registry.invalidDataRange, this);\r\n this.dataRangeInvalid = false;\r\n if (this.startIndex != this._prevStartIndex || this.endIndex != this._prevEndIndex) {\r\n this.rangeChangeUpdate();\r\n this.appendDataItems();\r\n this.invalidate();\r\n this.dispatchImmediately(\"datarangechanged\");\r\n }\r\n };\r\n /**\r\n * [sliceData description]\r\n *\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.sliceData = function () {\r\n this._workingStartIndex = this.startIndex;\r\n this._workingEndIndex = this.endIndex;\r\n };\r\n /**\r\n * [rangeChangeUpdate description]\r\n *\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.rangeChangeUpdate = function () {\r\n this.sliceData();\r\n this._prevStartIndex = this.startIndex;\r\n this._prevEndIndex = this.endIndex;\r\n };\r\n /**\r\n * [appendDataItems description]\r\n *\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.appendDataItems = function () {\r\n // TODO use an iterator instead\r\n var count = this.endIndex;\r\n for (var i = this.startIndex; i < count; i++) {\r\n // data item\r\n var dataItem = this.dataItems.getIndex(i);\r\n if (dataItem) {\r\n dataItem.__disabled = false;\r\n }\r\n }\r\n for (var i = 0; i < this.startIndex; i++) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n if (dataItem) {\r\n dataItem.__disabled = true;\r\n }\r\n }\r\n for (var i = this.endIndex; i < this.dataItems.length; i++) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n if (dataItem) {\r\n dataItem.__disabled = true;\r\n }\r\n }\r\n };\r\n /**\r\n * If you want to have a smooth transition from one data values to another, you change your raw data and then you must call this method.\r\n * then instead of redrawing everything, the chart will check raw data and smoothly transit from previous to new data\r\n */\r\n Component.prototype.invalidateRawData = function () {\r\n if (this.disabled || this.isTemplate) {\r\n return;\r\n }\r\n //if(!this.rawDataInvalid){\r\n $array.move(registry.invalidRawDatas, this);\r\n system.requestFrame();\r\n this.rawDataInvalid = true;\r\n $iter.each(this.dataUsers.iterator(), function (x) {\r\n x.invalidateRawData();\r\n });\r\n //}\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Component.prototype.validateRawData = function () {\r\n var _this = this;\r\n $array.remove(registry.invalidRawDatas, this);\r\n $iter.each(this.mainDataSet.iterator(), function (dataItem) {\r\n if (dataItem) {\r\n _this.updateDataItem(dataItem);\r\n }\r\n });\r\n };\r\n /**\r\n * Destroys this object and all related data.\r\n */\r\n Component.prototype.dispose = function () {\r\n var _this = this;\r\n this.mainDataSet.template.clones.clear();\r\n $object.each(this._dataSources, function (key, source) {\r\n _this.removeDispose(source);\r\n });\r\n _super.prototype.dispose.call(this);\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Component.prototype.disposeData = function () {\r\n this.mainDataSet.template.clones.clear();\r\n $array.each(this._dataDisposers, function (x) {\r\n x.dispose();\r\n });\r\n // and for all components\r\n $iter.each(this.dataUsers.iterator(), function (dataUser) {\r\n dataUser.disposeData();\r\n });\r\n this._dataDisposers.length = 0;\r\n this._startIndex = undefined;\r\n this._endIndex = undefined;\r\n // dispose old\r\n this.mainDataSet.clear();\r\n this.mainDataSet.template.clones.clear();\r\n if (this._dataSets) {\r\n this._dataSets.clear();\r\n }\r\n };\r\n Component.prototype.getDataItem = function (dataContext) {\r\n return this.mainDataSet.create();\r\n };\r\n /**\r\n * Validates (processes) data.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.validateData = function () {\r\n this.dispatchImmediately(\"beforedatavalidated\");\r\n this.dataInvalid = false;\r\n registry.removeFromInvalidComponents(this);\r\n if (this.__disabled) {\r\n return;\r\n }\r\n this.dataValidationProgress = 0;\r\n // need this to slice new data\r\n this._prevStartIndex = undefined;\r\n this._prevEndIndex = undefined;\r\n // todo: this needs some overthinking, maybe some extra settings like zoomOotonDataupdate like in v3 or so. some charts like pie chart probably should act like this always\r\n this._startIndex = undefined;\r\n this._endIndex = undefined;\r\n if (this.dataFields.data && this.dataItem) {\r\n var dataContext = this.dataItem.dataContext;\r\n this._data = dataContext[this.dataFields.data];\r\n }\r\n // data items array is reset only if all data is validated, if _parseDataFrom is not 0, we append new data only\r\n // check heatmap demo if uncommented\r\n // fixed both issues by adding && this.data.length > 0\r\n // check adding series example if changed\r\n if (this._parseDataFrom === 0 && this.data.length > 0) {\r\n this.disposeData();\r\n }\r\n if (this.data.length > 0) {\r\n var preloader = this.preloader;\r\n // and for all components\r\n $iter.each(this.dataUsers.iterator(), function (dataUser) {\r\n // todo: this needs some overthinking, maybe some extra settings like zoomOUtonDataupdate like in v3 or so. some charts like pie chart probably should act like this always\r\n dataUser._startIndex = undefined;\r\n dataUser._endIndex = undefined;\r\n });\r\n var counter = 0;\r\n var startTime = Date.now();\r\n // parse data\r\n var i = this._parseDataFrom;\r\n var n = this.data.length;\r\n var _loop_1 = function () {\r\n var rawDataItem = this_1.data[i];\r\n if (this_1._usesData) {\r\n var dataItem = this_1.getDataItem(rawDataItem);\r\n this_1.processDataItem(dataItem, rawDataItem);\r\n }\r\n this_1.dataUsers.each(function (dataUser) {\r\n if (dataUser.data.length == 0) { // checking if data is not set directly\r\n var dataUserDataItem = dataUser.getDataItem(rawDataItem);\r\n dataUser.processDataItem(dataUserDataItem, rawDataItem);\r\n }\r\n });\r\n counter++;\r\n // show preloader if this takes too many time\r\n if (counter == 100) { // no need to check it on each data item\r\n counter = 0;\r\n var elapsed = Date.now() - startTime;\r\n if (elapsed > this_1.parsingStepDuration) {\r\n if (i < this_1.data.length - 10) {\r\n this_1._parseDataFrom = i + 1;\r\n // update preloader\r\n if (preloader) {\r\n if (i / this_1.data.length > 0.5 && !preloader.visible) {\r\n // do not start showing\r\n }\r\n else {\r\n preloader.progress = i / this_1.data.length;\r\n }\r\n }\r\n this_1.dataValidationProgress = i / this_1.data.length;\r\n i = this_1.data.length; // stops cycle\r\n this_1.invalidateData();\r\n return { value: void 0 };\r\n }\r\n }\r\n }\r\n };\r\n var this_1 = this;\r\n for (i; i < n; i++) {\r\n var state_1 = _loop_1();\r\n if (typeof state_1 === \"object\")\r\n return state_1.value;\r\n }\r\n if (preloader) {\r\n preloader.progress = 1;\r\n }\r\n this.dataUsers.each(function (dataUser) {\r\n if (dataUser.hidden) {\r\n dataUser.hide(0);\r\n }\r\n });\r\n }\r\n this.dataValidationProgress = 1;\r\n this._parseDataFrom = 0; // reset this index, it is set to dataItems.length if addData() method was used.\r\n this.invalidateDataItems();\r\n if (!this._internalDefaultsApplied) {\r\n this.applyInternalDefaults();\r\n }\r\n this.dispatch(\"datavalidated\"); // can't zoom chart if dispatched immediately\r\n };\r\n /**\r\n * Validates (processes) data items.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.validateDataItems = function () {\r\n $array.remove(registry.invalidDataItems, this);\r\n this.dataItemsInvalid = false;\r\n this.invalidateDataRange();\r\n this.invalidate();\r\n this.dispatch(\"dataitemsvalidated\");\r\n };\r\n Object.defineProperty(Component.prototype, \"data\", {\r\n /**\r\n * Returns element's source (raw) data.\r\n *\r\n * @return Data\r\n */\r\n get: function () {\r\n if (!this._data) {\r\n this._data = [];\r\n }\r\n if (!this._adapterO) {\r\n return this._data;\r\n }\r\n else {\r\n return this._adapterO.apply(\"data\", this._data);\r\n }\r\n },\r\n /**\r\n * Sets source (raw) data for the element. The \"data\" is always an `Array`\r\n * of objects.\r\n *\r\n * IMPORTANT: The order of data items in `data` array is important as it\r\n * might affect chart look and behavior. [More details](https://www.amcharts.com/docs/v4/concepts/data/#Order_of_data_items).\r\n *\r\n * @param value Data\r\n */\r\n set: function (value) {\r\n this.setData(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Component.prototype.setData = function (value) {\r\n // array might be the same, but there might be items added\r\n // todo: check if array changed, toString maybe?\r\n if (!this.isDisposed()) {\r\n this._parseDataFrom = 0;\r\n this.disposeData();\r\n this._data = value;\r\n if (value && value.length > 0) {\r\n this.invalidateData();\r\n }\r\n else {\r\n this.dispatchImmediately(\"beforedatavalidated\");\r\n this.dispatch(\"datavalidated\");\r\n }\r\n }\r\n };\r\n /**\r\n * Returns (creates if necessary) a [[DataSource]] bound to any specific\r\n * property.\r\n *\r\n * For example if I want to bind `data` to an external JSON file, I'd create\r\n * a DataSource for it.\r\n *\r\n * @param property Property to bind external data to\r\n * @return A DataSource for property\r\n */\r\n Component.prototype.getDataSource = function (property) {\r\n var _this = this;\r\n if (!$type.hasValue(this._dataSources[property])) {\r\n this._dataSources[property] = new DataSource();\r\n this._dataSources[property].component = this;\r\n this.setDataSourceEvents(this._dataSources[property], property);\r\n this._dataSources[property].adapter.add(\"dateFields\", function (val) {\r\n return _this.dataSourceDateFields(val);\r\n });\r\n this._dataSources[property].adapter.add(\"numberFields\", function (val) {\r\n return _this.dataSourceNumberFields(val);\r\n });\r\n this.events.on(\"inited\", function () {\r\n _this.loadData(property);\r\n }, this, false);\r\n }\r\n return this._dataSources[property];\r\n };\r\n Object.defineProperty(Component.prototype, \"dataSource\", {\r\n /**\r\n * @return Data source\r\n */\r\n get: function () {\r\n if (!this._dataSources[\"data\"]) {\r\n this.getDataSource(\"data\");\r\n }\r\n return this._dataSources[\"data\"];\r\n },\r\n /**\r\n *A [[DataSource]] to be used for loading Component's data.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/loading-external-data/} for more on loading external data\r\n * @param value Data source\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n if (this._dataSources[\"data\"]) {\r\n this.removeDispose(this._dataSources[\"data\"]);\r\n }\r\n this._dataSources[\"data\"] = value;\r\n this._dataSources[\"data\"].component = this;\r\n this.events.on(\"inited\", function () {\r\n _this.loadData(\"data\");\r\n }, this, false);\r\n this.setDataSourceEvents(value, \"data\");\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Initiates loading of the external data via [[DataSource]].\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.loadData = function (property) {\r\n this._dataSources[property].load();\r\n };\r\n /**\r\n * This function is called by the [[DataSource]]'s `dateFields` adapater\r\n * so that particular chart types can popuplate this setting with their\r\n * own type-specific data fields so they are parsed properly.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Array of date fields\r\n * @return Array of date fields populated with chart's date fields\r\n */\r\n Component.prototype.dataSourceDateFields = function (value) {\r\n return value;\r\n };\r\n /**\r\n * This function is called by the [[DataSource]]'s `numberFields` adapater\r\n * so that particular chart types can popuplate this setting with their\r\n * own type-specific data fields so they are parsed properly.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Array of number fields\r\n * @return Array of number fields populated with chart's number fields\r\n */\r\n Component.prototype.dataSourceNumberFields = function (value) {\r\n return value;\r\n };\r\n /**\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param list [description]\r\n * @param dataFields [description]\r\n * @param targetList [description]\r\n * @return [description]\r\n */\r\n Component.prototype.populateDataSourceFields = function (list, dataFields, targetList) {\r\n $array.each(targetList, function (value) {\r\n if (dataFields[value] && $array.indexOf(list, dataFields[value]) === -1) {\r\n list.push(dataFields[value]);\r\n }\r\n });\r\n return list;\r\n };\r\n /**\r\n * Sets events on a [[DataSource]].\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.setDataSourceEvents = function (ds, property) {\r\n var _this = this;\r\n ds.events.on(\"started\", function (ev) {\r\n var preloader = _this.preloader;\r\n if (preloader) {\r\n preloader.progress = 0;\r\n //preloader.label.text = this.language.translate(\"Loading\");\r\n }\r\n }, undefined, false);\r\n ds.events.on(\"loadstarted\", function (ev) {\r\n var preloader = _this.preloader;\r\n if (preloader) {\r\n preloader.progress = 0.25;\r\n }\r\n }, undefined, false);\r\n ds.events.on(\"loadended\", function (ev) {\r\n var preloader = _this.preloader;\r\n if (preloader) {\r\n preloader.progress = 0.5;\r\n }\r\n }, undefined, false);\r\n ds.events.on(\"parseended\", function (ev) {\r\n var preloader = _this.preloader;\r\n if (preloader) {\r\n preloader.progress = 0.75;\r\n }\r\n }, undefined, false);\r\n ds.events.on(\"ended\", function (ev) {\r\n var preloader = _this.preloader;\r\n if (preloader) {\r\n preloader.progress = 1;\r\n }\r\n }, undefined, false);\r\n ds.events.on(\"error\", function (ev) {\r\n var preloader = _this.preloader;\r\n if (preloader) {\r\n preloader.progress = 1;\r\n }\r\n _this.openModal(ev.message);\r\n }, undefined, false);\r\n if (property) {\r\n ds.events.on(\"done\", function (ev) {\r\n var preloader = _this.preloader;\r\n if (preloader) {\r\n preloader.progress = 1;\r\n }\r\n if (property == \"data\" && !$type.isArray(ev.data)) {\r\n ev.data = [ev.data];\r\n }\r\n if (ds.incremental && property == \"data\" && _this.data.length) {\r\n _this.addData(ev.data, ds.keepCount ? ev.data.length : 0);\r\n }\r\n else if (ds.updateCurrentData && property == \"data\" && _this.data.length) {\r\n // cycle through existing data items\r\n $array.each(_this.data, function (item, index) {\r\n if ($type.hasValue(ev.data[index])) {\r\n $object.each(item, function (key, val) {\r\n if ($type.hasValue(ev.data[index][key])) {\r\n item[key] = ev.data[index][key];\r\n }\r\n });\r\n }\r\n });\r\n _this.invalidateRawData();\r\n }\r\n else {\r\n _this[property] = ev.data;\r\n }\r\n });\r\n }\r\n };\r\n Object.defineProperty(Component.prototype, \"responsive\", {\r\n /**\r\n * @return Responsive rules handler\r\n */\r\n get: function () {\r\n if (!this._responsive) {\r\n this._responsive = new Responsive();\r\n this._responsive.component = this;\r\n }\r\n return this._responsive;\r\n },\r\n /**\r\n * A [[Responsive]] instance to be used when applying conditional\r\n * property values.\r\n *\r\n * NOTE: Responsive features are currently in development and may not work\r\n * as expected, if at all.\r\n *\r\n * @param value Responsive rules handler\r\n */\r\n set: function (value) {\r\n this._responsive = value;\r\n this._responsive.component = this;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets current zoom.\r\n *\r\n * The range uses relative values from 0 to 1, with 0 marking beginning and 1\r\n * marking end of the available data range.\r\n *\r\n * This method will not have any effect when called on a chart object.\r\n * Since the chart can have a number of axes and series, each with its own\r\n * data, the meaning of \"range\" is very ambiguous.\r\n *\r\n * To zoom the chart use `zoom*` methods on its respective axes.\r\n *\r\n * @param range Range\r\n * @param skipRangeEvent Should rangechanged event not be triggered?\r\n * @param instantly Do not animate?\r\n * @return Actual modidied range (taking `maxZoomFactor` into account)\r\n */\r\n Component.prototype.zoom = function (range, skipRangeEvent, instantly, declination) {\r\n var _this = this;\r\n if (skipRangeEvent === void 0) { skipRangeEvent = false; }\r\n if (instantly === void 0) { instantly = false; }\r\n var start = range.start;\r\n var end = range.end;\r\n var priority = range.priority;\r\n if (range.start == range.end) {\r\n range.start = range.start - 0.5 / this.maxZoomFactor;\r\n range.end = range.end + 0.5 / this.maxZoomFactor;\r\n }\r\n if (priority == \"end\" && end == 1 && start != 0) {\r\n if (start < this.start) {\r\n priority = \"start\";\r\n }\r\n }\r\n if (priority == \"start\" && start == 0) {\r\n if (end > this.end) {\r\n priority = \"end\";\r\n }\r\n }\r\n if (!$type.isNumber(declination)) {\r\n declination = this.maxZoomDeclination;\r\n }\r\n if (!$type.isNumber(start) || !$type.isNumber(end)) {\r\n return { start: this.start, end: this.end };\r\n }\r\n if (this._finalStart != start || this._finalEnd != end) {\r\n var maxZoomFactor = this.maxZoomFactor / this.minZoomCount;\r\n var minZoomFactor = this.maxZoomFactor / this.maxZoomCount;\r\n // most likely we are dragging left scrollbar grip here, so we tend to modify end\r\n if (priority == \"start\") {\r\n if (this.maxZoomCount > 0) {\r\n // add to the end\r\n if (1 / (end - start) < minZoomFactor) {\r\n end = start + 1 / minZoomFactor;\r\n }\r\n }\r\n // add to the end\r\n if (1 / (end - start) > maxZoomFactor) {\r\n end = start + 1 / maxZoomFactor;\r\n }\r\n //unless end is > 0\r\n if (end > 1 && end - start < 1 / maxZoomFactor) {\r\n //end = 1;\r\n start = end - 1 / maxZoomFactor;\r\n }\r\n }\r\n // most likely we are dragging right, so we modify left\r\n else {\r\n if (this.maxZoomCount > 0) {\r\n // add to the end\r\n if (1 / (end - start) < minZoomFactor) {\r\n start = end - 1 / minZoomFactor;\r\n }\r\n }\r\n // remove from start\r\n if (1 / (end - start) > maxZoomFactor) {\r\n start = end - 1 / maxZoomFactor;\r\n }\r\n if (start < 0 && end - start < 1 / maxZoomFactor) {\r\n //start = 0;\r\n end = start + 1 / maxZoomFactor;\r\n }\r\n }\r\n if (start < -declination) {\r\n start = -declination;\r\n }\r\n if (1 / (end - start) > maxZoomFactor) {\r\n end = start + 1 / maxZoomFactor;\r\n }\r\n if (end > 1 + declination) {\r\n end = 1 + declination;\r\n }\r\n if (1 / (end - start) > maxZoomFactor) {\r\n start = end - 1 / maxZoomFactor;\r\n }\r\n this._finalEnd = end;\r\n this._finalStart = start;\r\n this.skipRangeEvent = skipRangeEvent;\r\n this.dispatchImmediately(\"rangechangestarted\");\r\n if (this.rangeChangeDuration > 0 && !instantly) {\r\n // todo: maybe move this to Animation\r\n var rangeChangeAnimation = this.rangeChangeAnimation;\r\n if (rangeChangeAnimation && rangeChangeAnimation.progress < 1) {\r\n var options = rangeChangeAnimation.animationOptions;\r\n if (options.length > 1) {\r\n if (options[0].to == start && options[1].to == end) {\r\n return { start: start, end: end };\r\n }\r\n else {\r\n if (!rangeChangeAnimation.isDisposed()) {\r\n rangeChangeAnimation.stop();\r\n }\r\n }\r\n }\r\n }\r\n if (this.rangeChangeAnimation) {\r\n this.rangeChangeAnimation.kill();\r\n }\r\n rangeChangeAnimation = this.animate([{ property: \"start\", to: start }, { property: \"end\", to: end }], this.rangeChangeDuration, this.rangeChangeEasing);\r\n this.rangeChangeAnimation = rangeChangeAnimation;\r\n if (rangeChangeAnimation && !rangeChangeAnimation.isFinished()) {\r\n rangeChangeAnimation.events.on(\"animationended\", function () {\r\n _this.dispatchImmediately(\"rangechangeended\");\r\n });\r\n }\r\n else {\r\n this.dispatchImmediately(\"rangechangeended\");\r\n }\r\n }\r\n else {\r\n this.start = start;\r\n this.end = end;\r\n this.dispatch(\"rangechangeended\");\r\n }\r\n }\r\n return { start: start, end: end };\r\n };\r\n /**\r\n * Zooms to specific data items using their index in data.\r\n *\r\n * This method will not have any effect when called on a chart object.\r\n * Since the chart can have a number of axes and series, each with its own\r\n * data, the meaning of \"index\" is very ambiguous.\r\n *\r\n * To zoom the chart use `zoom*` methods on its respective axes.\r\n *\r\n * @param startIndex Index of the starting data item\r\n * @param endIndex Index of the ending data item\r\n * @param skipRangeEvent Should rangechanged event not be triggered?\r\n * @param instantly Do not animate?\r\n */\r\n Component.prototype.zoomToIndexes = function (startIndex, endIndex, skipRangeEvent, instantly) {\r\n if (!$type.isNumber(startIndex) || !$type.isNumber(endIndex)) {\r\n return;\r\n }\r\n var start = startIndex / this.dataItems.length;\r\n var end = endIndex / this.dataItems.length;\r\n this.zoom({ start: start, end: end }, skipRangeEvent, instantly);\r\n };\r\n Object.defineProperty(Component.prototype, \"zoomFactor\", {\r\n /**\r\n * A current zoom factor (0-1). 1 meaning fully zoomed out. (showing all of\r\n * the available data)\r\n *\r\n * @return Zoom factor\r\n */\r\n get: function () {\r\n return $math.fitToRange(1 / (this.end - this.start), 1, this.maxZoomFactor);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Component.prototype, \"maxZoomFactor\", {\r\n /**\r\n * @return Maximum zoomFactor\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxZoomFactor\");\r\n },\r\n /**\r\n * Max available `zoomFactor`.\r\n *\r\n * The element will not allow zoom to occur beyond this factor.\r\n *\r\n * [[DateAxis]] and [[CategoryAxis]] calculate this atutomatically so that\r\n * category axis could be zoomed to one category and date axis allows to be\r\n * zoomed up to one base interval.\r\n *\r\n * In case you want to restrict category or date axis to be zoomed to more\r\n * than one category or more than one base interval, use `minZoomCount`\r\n * property (set it to `> 1`).\r\n *\r\n * Default value of [[ValueAxis]]'s `maxZoomFactor` is `1000`.\r\n *\r\n * Feel free to modify it to allow bigger zoom or to restrict zooming.\r\n *\r\n * @param value Maximum zoomFactor\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"maxZoomFactor\", value)) {\r\n if (value == 1) {\r\n this.maxZoomDeclination = 0;\r\n }\r\n this.invalidateDataRange();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Component.prototype, \"maxZoomDeclination\", {\r\n /**\r\n * @ignore\r\n * @return Maximum zoom declination\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxZoomDeclination\");\r\n },\r\n /**\r\n * Max zoom declination.\r\n *\r\n * @ignore\r\n * @default 1\r\n * @param value Maximum zoom declination\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"maxZoomDeclination\", value)) {\r\n this.invalidateDataRange();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Component.prototype, \"startIndex\", {\r\n /**\r\n * Current starting index.\r\n *\r\n * @return Start index\r\n */\r\n get: function () {\r\n if (!$type.isNumber(this._startIndex)) {\r\n this._startIndex = 0;\r\n }\r\n return this._startIndex;\r\n },\r\n /**\r\n * Sets current starting index.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Start index\r\n */\r\n set: function (value) {\r\n this._startIndex = $math.fitToRange(Math.round(value), 0, this.dataItems.length);\r\n //this._workingStartIndex = this._startIndex; // not good, breaks adjusted working start index of line series\r\n this.start = this.indexToPosition(this._startIndex);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n * @todo:review description\r\n * returns item's relative position by the index of the item\r\n * @param index\r\n */\r\n Component.prototype.indexToPosition = function (index) {\r\n return index / this.dataItems.length;\r\n };\r\n Object.defineProperty(Component.prototype, \"endIndex\", {\r\n /**\r\n * Current ending index.\r\n *\r\n * @return End index\r\n */\r\n get: function () {\r\n var count = this.dataItems.length;\r\n if (!$type.isNumber(this._endIndex) || this._endIndex > count) {\r\n this._endIndex = count;\r\n }\r\n return this._endIndex;\r\n },\r\n /**\r\n * Sets current ending index.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value End index\r\n */\r\n set: function (value) {\r\n this._endIndex = $math.fitToRange(Math.round(value), 0, this.dataItems.length);\r\n //this._workingEndIndex = this._endIndex; // not good, breaks adjusted workingend index of line series\r\n this.end = this.indexToPosition(this._endIndex);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Component.prototype, \"start\", {\r\n /**\r\n * @return Start (0-1)\r\n */\r\n get: function () {\r\n if (!this._adapterO) {\r\n return this._start;\r\n }\r\n else {\r\n return this._adapterO.apply(\"start\", this._start);\r\n }\r\n },\r\n /**\r\n * Start of the current data range (zoom).\r\n *\r\n * These are relative values from 0 (beginning) to 1 (end).\r\n *\r\n * @param value Start (0-1)\r\n */\r\n set: function (value) {\r\n // value = $math.round(value, 10); not good\r\n //if (1 / (this.end - value) > this.maxZoomFactor) {\r\n //\tvalue = this.end - 1 / this.maxZoomFactor;\r\n //}\r\n if (this._start != value) {\r\n this._start = value;\r\n var startIndex = Math.max(0, Math.floor(this.dataItems.length * value) || 0);\r\n this._startIndex = Math.min(startIndex, this.dataItems.length);\r\n this.invalidateDataRange();\r\n this.invalidate();\r\n this.dispatchImmediately(\"startchanged\");\r\n this.dispatch(\"startendchanged\");\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Component.prototype, \"end\", {\r\n /**\r\n * @return End (0-1)\r\n */\r\n get: function () {\r\n if (!this._adapterO) {\r\n return this._end;\r\n }\r\n else {\r\n return this._adapterO.apply(\"end\", this._end);\r\n }\r\n },\r\n /**\r\n * End of the current data range (zoom).\r\n *\r\n * These are relative values from 0 (beginning) to 1 (end).\r\n *\r\n * @param value End (0-1)\r\n */\r\n set: function (value) {\r\n // value = $math.round(value, 10); // not good\r\n //if (1 / (value - this.start) > this.maxZoomFactor) {\r\n //\tvalue = 1 / this.maxZoomFactor + this.start;\r\n //}\r\n if (this._end != value) {\r\n this._end = value;\r\n this._endIndex = Math.min(this.dataItems.length, Math.ceil(this.dataItems.length * value) || 0);\r\n this.invalidateDataRange();\r\n this.invalidate();\r\n this.dispatchImmediately(\"endchanged\");\r\n this.dispatch(\"startendchanged\");\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * [removeFromInvalids description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n Component.prototype.removeFromInvalids = function () {\r\n _super.prototype.removeFromInvalids.call(this);\r\n registry.removeFromInvalidComponents(this);\r\n $array.remove(registry.invalidDataItems, this);\r\n $array.remove(registry.invalidDataRange, this);\r\n $array.remove(registry.invalidRawDatas, this);\r\n };\r\n Object.defineProperty(Component.prototype, \"dataItems\", {\r\n /**\r\n * Returns a list of source [[DataItem]] objects currently used in the chart.\r\n *\r\n * @return List of data items\r\n */\r\n get: function () {\r\n if (this._currentDataSetId != \"\") {\r\n var dataItems = this.dataSets.getKey(this._currentDataSetId);\r\n if (dataItems) {\r\n return dataItems;\r\n }\r\n }\r\n return this._dataItems;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Component.prototype, \"dataSets\", {\r\n /**\r\n * Holds data items for data sets (usually aggregated data).\r\n *\r\n * @ignore\r\n * @since 4.7.0\r\n * @return Data sets\r\n */\r\n get: function () {\r\n if (!this._dataSets) {\r\n this._dataSets = new Dictionary();\r\n }\r\n return this._dataSets;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Makes the chart use particular data set.\r\n *\r\n * If `id` is not provided or there is no such data set, main data will be\r\n * used.\r\n *\r\n * @ignore\r\n * @since 4.7.0\r\n * @param id Data set id\r\n */\r\n Component.prototype.setDataSet = function (id) {\r\n if (this._currentDataSetId != id) {\r\n var dataSet = this.dataSets.getKey(id);\r\n if (!dataSet) {\r\n if (this._currentDataSetId != \"\") {\r\n this.dataItems.each(function (dataItem) {\r\n dataItem.__disabled = true;\r\n });\r\n this._currentDataSetId = \"\";\r\n this.invalidateDataRange();\r\n this._prevStartIndex = undefined;\r\n this.dataItems.each(function (dataItem) {\r\n dataItem.__disabled = false;\r\n });\r\n return true;\r\n }\r\n }\r\n else {\r\n this.dataItems.each(function (dataItem) {\r\n dataItem.__disabled = true;\r\n });\r\n this._currentDataSetId = id;\r\n this.invalidateDataRange();\r\n this._prevStartIndex = undefined;\r\n this.dataItems.each(function (dataItem) {\r\n dataItem.__disabled = false;\r\n });\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n Object.defineProperty(Component.prototype, \"currentDataSetId\", {\r\n /**\r\n * Returns id of the currently used data set, or `undefined` if main data set\r\n * is in use.\r\n *\r\n * @since 4.7.0\r\n * @return Current data set id\r\n */\r\n get: function () {\r\n return this._currentDataSetId;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Component.prototype, \"mainDataSet\", {\r\n /**\r\n * Returns reference to \"main\" data set (unaggregated data as it was supplied\r\n * in `data`).\r\n *\r\n * @since 4.7.0\r\n * @return Main data set\r\n */\r\n get: function () {\r\n return this._dataItems;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Updates the indexes for the dataItems\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype._updateDataItemIndexes = function (startIndex) {\r\n var dataItems = this.mainDataSet.values;\r\n var length = dataItems.length;\r\n for (var i = startIndex; i < length; ++i) {\r\n dataItems[i]._index = i;\r\n }\r\n };\r\n /**\r\n * Processes newly added [[DataItem]] as well as triggers data re-validation.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event [description]\r\n */\r\n Component.prototype.handleDataItemAdded = function (event) {\r\n event.newValue.component = this;\r\n this._updateDataItemIndexes(event.index);\r\n if (!this.dataItemsInvalid) {\r\n this.invalidateDataItems();\r\n }\r\n };\r\n /**\r\n * removes [[DataItem]] as well as triggers data re-validation.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event [description]\r\n */\r\n Component.prototype.handleDataItemRemoved = function (event) {\r\n //\t\tevent.oldValue.component = undefined; // not good, as some items might be not removed from component lists\r\n this._updateDataItemIndexes(event.index);\r\n if (!this.dataItemsInvalid) {\r\n this.invalidateDataItems();\r\n }\r\n };\r\n /**\r\n * Binds a data element's field to a specific field in raw data.\r\n * For example, for the very basic column chart you'd want to bind a `value`\r\n * field to a field in data, such as `price`.\r\n *\r\n * Some more advanced Components, like [[CandlestickSeries]] need several\r\n * data fields bound to data, such as ones for open, high, low and close\r\n * values.\r\n *\r\n * @todo Example\r\n * @param field Field name\r\n * @param value Field name in data\r\n */\r\n Component.prototype.bindDataField = function (field, value) {\r\n this.dataFields[field] = value;\r\n this.invalidateDataRange();\r\n };\r\n /**\r\n * Invalidates processed data.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype.invalidateProcessedData = function () {\r\n this.resetProcessedRange();\r\n this.invalidateDataRange();\r\n };\r\n /**\r\n * [resetProcessedRange description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n Component.prototype.resetProcessedRange = function () {\r\n this._prevEndIndex = null;\r\n this._prevStartIndex = null;\r\n };\r\n Object.defineProperty(Component.prototype, \"dataUsers\", {\r\n /**\r\n * Returns all other [[Component]] objects that are using this element's\r\n * data.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @return [description]\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._dataUsers) {\r\n this._dataUsers = new List();\r\n //this._disposers.push(new ListDisposer(this._dataUsers));\r\n // TODO better way of handling this? e.g. move into another module ?\r\n this._disposers.push(new Disposer(function () {\r\n // TODO clear the list ?\r\n $iter.each(_this._dataUsers.iterator(), function (x) {\r\n x.dispose();\r\n });\r\n }));\r\n }\r\n return this._dataUsers;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a clone of this element.\r\n *\r\n * @return Clone\r\n */\r\n Component.prototype.clone = function () {\r\n var component = _super.prototype.clone.call(this);\r\n component.dataFields = $utils.copyProperties(this.dataFields, {});\r\n return component;\r\n };\r\n /**\r\n * Copies all parameters from another [[Component]].\r\n *\r\n * @param source Source Component\r\n */\r\n Component.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.data = source.data;\r\n this.sequencedInterpolation = source.sequencedInterpolation;\r\n this.sequencedInterpolationDelay = source.sequencedInterpolationDelay;\r\n this.interpolationDuration = source.interpolationDuration;\r\n this.interpolationEasing = source.interpolationEasing;\r\n };\r\n /**\r\n * Invalidates the whole element, including all its children, causing\r\n * complete re-parsing of data and redraw.\r\n *\r\n * Use sparingly!\r\n */\r\n Component.prototype.reinit = function () {\r\n this._inited = false;\r\n this.deepInvalidate();\r\n };\r\n /**\r\n * Add an adapter for data.\r\n *\r\n * @return Exporting\r\n */\r\n Component.prototype.getExporting = function () {\r\n var _export = _super.prototype.getExporting.call(this);\r\n if (!_export.adapter.has(\"data\", this._exportData, -1, this)) {\r\n _export.adapter.add(\"data\", this._exportData, -1, this);\r\n this.events.on(\"datavalidated\", function (ev) {\r\n _export.handleDataUpdated();\r\n });\r\n }\r\n return _export;\r\n };\r\n Component.prototype._exportData = function (arg) {\r\n arg.data = this.data;\r\n return arg;\r\n };\r\n Component.prototype.setDisabled = function (value) {\r\n var changed = _super.prototype.setDisabled.call(this, value);\r\n if (changed) {\r\n this.invalidateData();\r\n }\r\n return changed;\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Component.prototype.setShowOnInit = function (value) {\r\n if (value != this.getPropertyValue(\"showOnInit\")) {\r\n if (value && !this.inited && !this.hidden) {\r\n this._showOnInitDisposer2 = this.events.once(\"dataitemsvalidated\", this.hideInitially, this, false);\r\n this._disposers.push(this._showOnInitDisposer2);\r\n }\r\n else {\r\n if (this._showOnInitDisposer2) {\r\n this.removeDispose(this._showOnInitDisposer2);\r\n }\r\n }\r\n }\r\n // important order here\r\n _super.prototype.setShowOnInit.call(this, value);\r\n };\r\n Component.prototype.setBaseId = function (value) {\r\n if (value != this._baseId) {\r\n if (this.dataInvalid) {\r\n this.dataInvalid = false;\r\n registry.removeFromInvalidComponents(this);\r\n this._baseId = value;\r\n this.invalidateData();\r\n }\r\n }\r\n _super.prototype.setBaseId.call(this, value);\r\n };\r\n Object.defineProperty(Component.prototype, \"minZoomCount\", {\r\n /**\r\n * @return Min zoom count\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minZoomCount\");\r\n },\r\n /**\r\n * Use this for [[CategoryAxis]] or [[DateAxis]].\r\n *\r\n * Allows restricting zoom in beyond certain number of categories or base\r\n * intervals.\r\n *\r\n * @default 1\r\n * @param value Min zoom count\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"minZoomCount\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Component.prototype, \"maxZoomCount\", {\r\n /**\r\n * @return Max zoom count\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxZoomCount\");\r\n },\r\n /**\r\n * Use this for [[CategoryAxis]] or [[DateAxis]].\r\n *\r\n * Limits how many categories or base intervals can be shown at the same\r\n * time.\r\n *\r\n * If there are more items in the chart, the chart will auto-zoom.\r\n *\r\n * @default 0 (no limit)\r\n * @since 4.6.2\r\n * @param value Max zoom count\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"maxZoomCount\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Called during the System.update method\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Component.prototype._systemCheckIfValidate = function () {\r\n if (this.dataInvalid || (this.dataProvider && this.dataProvider.dataInvalid)) {\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n };\r\n /**\r\n * Adds easing functions to \"function\" fields.\r\n *\r\n * @param field Field name\r\n * @return Assign as function?\r\n */\r\n Component.prototype.asFunction = function (field) {\r\n return field == \"interpolationEasing\" || field == \"rangeChangeEasing\" || _super.prototype.asIs.call(this, field);\r\n };\r\n return Component;\r\n}(Container));\r\nexport { Component };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Component\"] = Component;\r\n//# sourceMappingURL=Component.js.map","/**\r\n * Container module\r\n * @todo Needs description\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"./Sprite\";\r\nimport { SpriteState } from \"./SpriteState\";\r\nimport { List } from \"./utils/List\";\r\nimport { MultiDisposer } from \"./utils/Disposer\";\r\nimport { Dictionary, DictionaryDisposer } from \"./utils/Dictionary\";\r\nimport { getInteraction } from \"./interaction/Interaction\";\r\nimport { Rectangle } from \"./elements/Rectangle\";\r\nimport { Percent } from \"./utils/Percent\";\r\nimport { registry } from \"./Registry\";\r\nimport { InterfaceColorSet } from \"../core/utils/InterfaceColorSet\";\r\nimport * as $iter from \"./utils/Iterator\";\r\nimport * as $array from \"./utils/Array\";\r\nimport * as $math from \"./utils/Math\";\r\nimport * as $type from \"./utils/Type\";\r\nimport * as $dom from \"./utils/DOM\";\r\nimport { system } from \"./System\";\r\nimport { options } from \"./Options\";\r\n;\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Container can contain multiple sprites and arrange them in various layouts.\r\n *\r\n * @see {@link IContainerEvents} for a list of available events\r\n * @see {@link IContainerAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar Container = /** @class */ (function (_super) {\r\n __extends(Container, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Container() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Container children. (sorted by layout)\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._childrenByLayout = [];\r\n /**\r\n * Container's disposers for its child elements.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._childrenDisposers = new Dictionary();\r\n /**\r\n * Indicates if this container contains any focused elements, including\r\n * itself.\r\n */\r\n _this.hasFocused = false;\r\n /**\r\n * An array of references to elements the state should be set, when it is set\r\n * on this element.\r\n */\r\n _this.setStateOnSprites = [];\r\n /*\r\n * @ignore\r\n */\r\n _this.layoutInvalid = false;\r\n _this._absoluteWidth = 0;\r\n _this._absoluteHeight = 0;\r\n /**\r\n * An array of child Sprites that should be ready before this object can\r\n * fire a \"ready\" event.\r\n */\r\n _this._shouldBeReady = [];\r\n /**\r\n * Enables touch tap protection.\r\n */\r\n _this._tapToActivate = false;\r\n /**\r\n * If `tapToActivate` is used, this setting will determine how long the chart\r\n * will stay in \"active\" mode.\r\n *\r\n * @default 3000\r\n * @since 4.4.0\r\n */\r\n _this.tapTimeout = 3000;\r\n _this.className = \"Container\";\r\n _this._element = _this.paper.addGroup(\"g\");\r\n _this.group.add(_this.element);\r\n _this.setPropertyValue(\"pixelPerfect\", false);\r\n _this.setPropertyValue(\"layout\", \"absolute\");\r\n _this.setPropertyValue(\"fixedWidthGrid\", false);\r\n _this.setPropertyValue(\"verticalCenter\", \"none\");\r\n _this.setPropertyValue(\"horizontalCenter\", \"none\");\r\n _this._positionPrecision = 4;\r\n _this._disposers.push(new DictionaryDisposer(_this._childrenDisposers));\r\n _this.children.events.on(\"inserted\", _this.handleChildAdded, _this);\r\n _this.children.events.on(\"removed\", _this.handleChildRemoved, _this);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Handles adding of a new child into `children`. Adding new children might\r\n * affect the whole layout so it needs to be revalidated.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event object\r\n * @todo Throw an exception on adding a disposed object. Of course it's better NOT TO add disposed objects, so that what we should focus on.\r\n */\r\n Container.prototype.handleChildAdded = function (event) {\r\n this.processChild(event.newValue);\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Container.prototype.processChild = function (child) {\r\n // try solves the problem when somedy adds child directly to children\r\n try {\r\n this._childrenDisposers.insertKey(child.uid, new MultiDisposer([\r\n // it's not enough to listen to POSITION_CHANGED only, as some extra redrawals will happen.\r\n child.events.on(\"transformed\", this.handleChildTransform, this),\r\n child.events.on(\"zIndexChanged\", this.sortAndAdd, this)\r\n ]));\r\n }\r\n catch (err) {\r\n // void\r\n }\r\n if (this.element) {\r\n var group = this.element;\r\n group.add(child.group);\r\n }\r\n child.parent = this;\r\n child.paper = this.paper;\r\n this.dispatchImmediately(\"childadded\", { type: \"childadded\", newValue: child });\r\n this.invalidate();\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Container.prototype.sortAndAdd = function () {\r\n this.sortChildren();\r\n this.addChildren();\r\n };\r\n /**\r\n * Handles child removal. Changing size of the child may change the\r\n * whole layout of the Container, hence layout needs to be invalidated.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event object\r\n */\r\n Container.prototype.handleChildRemoved = function (event) {\r\n var child = event.oldValue;\r\n // TODO figure out why the key sometimes doesn't exist\r\n this._childrenDisposers.removeKey(child.uid);\r\n if (this.element) {\r\n var group = this.element;\r\n group.removeElement(child.group);\r\n }\r\n if (child.isMeasured) {\r\n this.invalidateLayout();\r\n }\r\n this.dispatchImmediately(\"childremoved\", { type: \"childremoved\", oldValue: child });\r\n };\r\n /**\r\n * Handles child transformation. Changing size of the child may change the\r\n * whole layout of the Container, hence layout needs to be invalidated.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event object\r\n */\r\n Container.prototype.handleChildTransform = function (event) {\r\n var child = event.target;\r\n if (child.isMeasured) { // && this.layout != \"none\" && this.layout != \"absolute\") {\r\n this.invalidateLayout();\r\n }\r\n };\r\n /**\r\n * Invalidates Container's layout, causing it to be re-evaluated again.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.invalidateLayout = function () {\r\n if (this.layoutInvalid || this.disabled || this.isTemplate || this.layout == \"none\" || this.__disabled) {\r\n return;\r\n }\r\n this.layoutInvalid = true;\r\n registry.addToInvalidLayouts(this);\r\n system.requestFrame();\r\n };\r\n /**\r\n * Invalidates element.\r\n *\r\n * Object will be redrawn during the next update cycle.\r\n *\r\n * Please note that in most cases elements will auto-invalidate when needed. If\r\n * everything works, DO NOT use this method. Use it only if some changes do\r\n * not take otherwise.\r\n */\r\n Container.prototype.invalidate = function () {\r\n _super.prototype.invalidate.call(this);\r\n this.invalidateLayout();\r\n };\r\n /**\r\n * Invalidates the whole element, including layout AND all its child\r\n * elements.\r\n *\r\n * As this will essentially force all elements to redraw, use only if\r\n * absolutely necessary.\r\n */\r\n Container.prototype.deepInvalidate = function () {\r\n _super.prototype.invalidate.call(this);\r\n //this.sortChildren();\r\n $array.each(this._childrenByLayout, function (child) {\r\n if (child instanceof Container) {\r\n child.deepInvalidate();\r\n }\r\n else {\r\n child.invalidate();\r\n }\r\n });\r\n this.invalidateLayout();\r\n };\r\n Object.defineProperty(Container.prototype, \"children\", {\r\n /**\r\n * Returns a list of the child [[Sprite]] elements contained in this\r\n * Container.\r\n *\r\n * @return List of child elements (Sprites)\r\n */\r\n get: function () {\r\n // @todo Review if we can add all children to disposers\r\n if (!this._children) {\r\n this._children = new List();\r\n //this._disposers.push(new ListDisposer(this._children));\r\n }\r\n return this._children;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Container.prototype, \"minWidth\", {\r\n /**\r\n * @return Width (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minWidth\");\r\n },\r\n /**\r\n * Minimum width (px) for the Container. A container will not\r\n * auto-shrink beyond this value, even if child elements are smaller.\r\n *\r\n * @param value Width (px)\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"minWidth\", value)) {\r\n this.invalidateLayout();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Container.prototype, \"minHeight\", {\r\n /**\r\n * @return Height (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minHeight\");\r\n },\r\n /**\r\n * Minimum height (px) for the Container. A container will not\r\n * auto-shrink beyond this value, even if child elements are smaller.\r\n *\r\n * @param value Height (px)\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"minHeight\", value)) {\r\n this.invalidateLayout();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Overrides the original `removeElement` so that Container's actual element\r\n * is not removed. We do not need to remove element of a Container.\r\n *\r\n * We do this because remove element each time will fail the `getBBox`.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.removeElement = function () {\r\n };\r\n /**\r\n * Sorts Container's children: the ones with variable width and height are\r\n * put at the end of the list (depending on layout type), so that fixed-width\r\n * ones can be drawn first.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.sortChildren = function () {\r\n var _this = this;\r\n this._childrenByLayout = [];\r\n if (this.layout == \"none\" || this.layout == \"absolute\" || !this.layout) {\r\n //$iter.each(this.children.iterator(), (child) => {\r\n //\tthis._childrenByLayout.push(child);\r\n //});\r\n this._childrenByLayout = this.children.values;\r\n }\r\n else {\r\n // Assemble fixed-size and relative lists\r\n var fixed_1 = [];\r\n var relative_1 = [];\r\n $iter.each(this.children.iterator(), function (child) {\r\n if (_this.layout == \"horizontal\" || _this.layout == \"grid\") {\r\n if (!$type.isNumber(child.percentWidth)) {\r\n fixed_1.push(child);\r\n }\r\n else {\r\n relative_1.push(child);\r\n }\r\n }\r\n else if (_this.layout == \"vertical\") {\r\n if (!$type.isNumber(child.percentHeight)) {\r\n fixed_1.push(child);\r\n }\r\n else {\r\n relative_1.push(child);\r\n }\r\n }\r\n else {\r\n fixed_1.push(child);\r\n }\r\n });\r\n // Concat everything into list\r\n this._childrenByLayout = fixed_1.concat(relative_1);\r\n }\r\n this.calculateRelativeSize();\r\n };\r\n /**\r\n * Calculates relative sizes for all Container's children.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Make it protected?\r\n */\r\n Container.prototype.calculateRelativeSize = function () {\r\n var _this = this;\r\n var totalRelativeWidth = 0;\r\n var totalRelativeHeight = 0;\r\n $array.each(this._childrenByLayout, function (child) {\r\n // if child is not measured, we do not care about it at all.\r\n if (child.isMeasured) {\r\n if ($type.isNumber(child.percentWidth)) {\r\n totalRelativeWidth += child.percentWidth;\r\n }\r\n if ($type.isNumber(child.percentHeight)) {\r\n totalRelativeHeight += child.percentHeight;\r\n }\r\n }\r\n });\r\n $array.each(this._childrenByLayout, function (child) {\r\n if (child.isMeasured) {\r\n if (_this.layout == \"horizontal\") {\r\n if ($type.isNumber(child.percentWidth)) {\r\n child.relativeWidth = child.percentWidth / totalRelativeWidth;\r\n }\r\n if ($type.isNumber(child.percentHeight)) {\r\n child.relativeHeight = child.percentHeight / 100;\r\n }\r\n }\r\n if (_this.layout == \"vertical\") {\r\n if ($type.isNumber(child.percentHeight)) {\r\n child.relativeHeight = child.percentHeight / totalRelativeHeight;\r\n }\r\n if ($type.isNumber(child.percentWidth)) {\r\n child.relativeWidth = child.percentWidth / 100;\r\n }\r\n }\r\n if (_this.layout == \"grid\") {\r\n if ($type.isNumber(child.percentHeight)) {\r\n child.relativeHeight = child.percentHeight / 100;\r\n }\r\n if ($type.isNumber(child.percentWidth)) {\r\n child.relativeWidth = child.percentWidth / 100;\r\n }\r\n }\r\n }\r\n if (_this.layout == \"absolute\" || !child.isMeasured) {\r\n if ($type.isNumber(child.percentWidth)) {\r\n child.relativeWidth = child.percentWidth / 100;\r\n }\r\n if ($type.isNumber(child.percentHeight)) {\r\n child.relativeHeight = child.percentHeight / 100;\r\n }\r\n }\r\n });\r\n };\r\n /**\r\n * Adds all children to Container's SVG element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.addChildren = function () {\r\n /*\r\n Need this check because a child might be assigned to parent even before element is created, for example a theme\r\n access scrollbar.thumb\r\n */\r\n if (this.element) {\r\n var zindexed = $array.copy(this.children.values); // not children by layout!\r\n var sortArray = zindexed.map(function (data, idx) {\r\n return { idx: idx, data: data };\r\n });\r\n sortArray.sort(function (a, b) {\r\n var ai = (a.data.zIndex || 0);\r\n var bi = (b.data.zIndex || 0);\r\n if (ai < bi) {\r\n return -1;\r\n }\r\n if (ai > bi) {\r\n return 1;\r\n }\r\n return a.idx - b.idx;\r\n });\r\n zindexed = sortArray.map(function (val) {\r\n return val.data;\r\n });\r\n var group_1 = this.element;\r\n // check, maybe the order is good already\r\n var isCorrect = true;\r\n if (group_1.node && group_1.node.childNodes) {\r\n for (var i = 0, len = group_1.node.childNodes.length; i < len; i++) {\r\n if (group_1.node.childNodes[i] != zindexed[i].group.node) {\r\n isCorrect = false;\r\n break;\r\n }\r\n }\r\n }\r\n if (!isCorrect) {\r\n $array.each(zindexed, function (child) {\r\n if (child.group) {\r\n group_1.add(child.group);\r\n }\r\n });\r\n if (this._background) {\r\n this.group.addToBack(this._background.group);\r\n }\r\n this.invalidateLayout();\r\n }\r\n }\r\n };\r\n /**\r\n * Creates a new element of specific type and assigns as a child to the\r\n * Container.\r\n *\r\n * @param Class type for the new element\r\n * @return New element\r\n */\r\n Container.prototype.createChild = function (classType) {\r\n var sprite = new classType();\r\n sprite.parent = this;\r\n return sprite;\r\n };\r\n /**\r\n * Removes all Container's children without actually destroying them.\r\n *\r\n * To destroy children use `disposeChildren()` instead.\r\n */\r\n Container.prototype.removeChildren = function () {\r\n // remove all children\r\n // TODO use iteration instead\r\n while (this.children.length > 0) {\r\n var child = this.children.getIndex(0);\r\n child.parent = undefined;\r\n this.children.removeValue(child);\r\n }\r\n };\r\n /**\r\n * Removes and destroys all Container's children.\r\n *\r\n * To remove children from Container without destroying them, use\r\n * `removeChildren()`.\r\n */\r\n Container.prototype.disposeChildren = function () {\r\n // TODO use iteration instead\r\n while (this.children.length > 0) {\r\n var child = this.children.getIndex(0);\r\n child.dispose();\r\n this.children.removeValue(child);\r\n }\r\n };\r\n Object.defineProperty(Container.prototype, \"background\", {\r\n /**\r\n * @return Background element\r\n */\r\n get: function () {\r\n if (!this._background) {\r\n this._background = this.createBackground();\r\n this.processBackground();\r\n }\r\n return this._background;\r\n },\r\n /**\r\n * An element to use as container background.\r\n *\r\n * @param background Background element\r\n */\r\n set: function (background) {\r\n if (this._background && this.background != background) {\r\n this.removeDispose(this._background);\r\n }\r\n if (background) {\r\n this._background = background;\r\n this._disposers.push(background);\r\n this.processBackground();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Handles the situation where parent element is resized.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.handleGlobalScale = function () {\r\n _super.prototype.handleGlobalScale.call(this);\r\n this.children.each(function (child) {\r\n child.handleGlobalScale();\r\n });\r\n };\r\n /**\r\n * Creates and returns a [[Rectangle]] to use as a background for Container.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Background Rectangle element\r\n */\r\n Container.prototype.createBackground = function () {\r\n return new Rectangle();\r\n };\r\n /**\r\n * Decorates background element with required properties.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.processBackground = function () {\r\n var background = this._background;\r\n if (background) {\r\n background.isMeasured = false;\r\n this._background.fill = new InterfaceColorSet().getFor(\"background\");\r\n background.parent = this;\r\n background.isMeasured = false;\r\n this.children.removeValue(background);\r\n this._disposers.push(background);\r\n this.group.addToBack(this._background.group);\r\n }\r\n };\r\n /**\r\n * Measures the size of container and informs its children of how much size\r\n * they can occupy, by setting their relative `maxWidth` and `maxHeight`\r\n * properties.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.validateLayout = function () {\r\n var _this = this;\r\n registry.removeFromInvalidLayouts(this);\r\n this.layoutInvalid = false;\r\n // prevents from drawing if topparent is 0x0\r\n /*\r\n let topParent = this.topParent;\r\n if (topParent) {\r\n if (!topParent.maxWidth || !topParent.maxHeight) {\r\n this._disposers.push(topParent.events.once(\"maxsizechanged\", this.invalidateLayout, this));\r\n }\r\n }*/\r\n this._availableWidth = this.innerWidth;\r\n this._availableHeight = this.innerHeight;\r\n var measuredWidth = 0;\r\n var measuredHeight = 0;\r\n var allValid = true;\r\n if (this.children) {\r\n this.sortChildren();\r\n // we itterate through list of children, sorted by layout priority. sprites which width non-relative width/height will go first, so we will reduce available width before proceeding to sprites with relative width/height\r\n $array.each(this._childrenByLayout, function (child) {\r\n var maxWidth;\r\n var maxHeight;\r\n if ($type.isNumber(child.relativeWidth)) {\r\n maxWidth = $math.round(_this._availableWidth * child.relativeWidth, 2);\r\n if (_this.layout == \"horizontal\") { // || this.layout == \"absolute\") {\r\n maxWidth -= child.pixelMarginRight + child.pixelMarginLeft;\r\n }\r\n }\r\n else {\r\n if (_this.layout == \"horizontal\") {\r\n if (child.invalid) {\r\n child.validate();\r\n }\r\n }\r\n }\r\n if ($type.isNumber(child.relativeHeight)) {\r\n maxHeight = $math.round(_this._availableHeight * child.relativeHeight, 2);\r\n if (_this.layout == \"vertical\") { // || this.layout == \"absolute\") {\r\n maxHeight -= child.pixelMarginTop + child.pixelMarginBottom;\r\n }\r\n }\r\n else {\r\n if (_this.layout == \"vertical\") {\r\n if (child.invalid) {\r\n child.validate();\r\n }\r\n }\r\n }\r\n // if child is valid\r\n if (child.invalid == false) {\r\n if ($type.isNumber(child.relativeWidth)) {\r\n child.maxWidth = maxWidth;\r\n }\r\n if ($type.isNumber(child.relativeHeight)) {\r\n child.maxHeight = maxHeight;\r\n }\r\n if (child.isMeasured) {\r\n // reduce available width if this is horizontal layout\r\n if (_this.layout == \"horizontal\") {\r\n if (!$type.isNumber(child.percentWidth)) {\r\n if (child.measuredWidth > 0) {\r\n _this._availableWidth -= child.measuredWidth + child.pixelMarginLeft + child.pixelMarginRight;\r\n }\r\n }\r\n }\r\n // reduce available height if this is vertical layout\r\n if (_this.layout == \"vertical\") {\r\n if (!$type.isNumber(child.percentHeight)) {\r\n if (child.measuredHeight > 0) {\r\n _this._availableHeight -= child.measuredHeight + child.pixelMarginTop + child.pixelMarginBottom;\r\n }\r\n }\r\n }\r\n var childMeasuredWidth = child.measuredWidth;\r\n var childMeasuredHeight = child.measuredHeight;\r\n if (child.align != \"none\") {\r\n childMeasuredWidth += child.pixelMarginLeft + child.pixelMarginRight;\r\n }\r\n if (child.valign != \"none\") {\r\n childMeasuredHeight += child.pixelMarginTop + child.pixelMarginBottom;\r\n }\r\n measuredWidth = Math.max(measuredWidth, childMeasuredWidth);\r\n measuredHeight = Math.max(measuredHeight, childMeasuredHeight);\r\n }\r\n }\r\n // if child is not valid\r\n else {\r\n // tell child what maximum width/ height it can occupy\r\n if (child.isMeasured) {\r\n if ($type.isNumber(child.relativeWidth)) {\r\n if (child.maxWidth != maxWidth) { // need to check this because of allValid\r\n child.maxWidth = maxWidth;\r\n allValid = false;\r\n }\r\n }\r\n if ($type.isNumber(child.relativeHeight)) {\r\n if (child.maxHeight != maxHeight) { // need to check this because of allValid\r\n child.maxHeight = maxHeight;\r\n allValid = false;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n this._absoluteWidth = measuredWidth;\r\n this._absoluteHeight = measuredHeight;\r\n // arrange after measuring, only if all children are valid already\r\n if (allValid) {\r\n this.arrange();\r\n }\r\n };\r\n /**\r\n * Arranges children according to layout specs and available space / child\r\n * sizes.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.arrange = function () {\r\n var _this = this;\r\n var children = this.children;\r\n /*\r\n in this method we not only arrange children but also find out the size of the container\r\n it might seem it would be easier to get container size using sprite's measure method,\r\n however it would return only actual size of the bbox. However as each child meight have\r\n margins set, we need to check each child - we do it here.\r\n\r\n This method doesn't do anything with DOM, so it's not expensive\r\n */\r\n var measuredWidth = 0;\r\n var measuredHeight = 0;\r\n //let innerWidth: number = this.innerWidth; //$math.max(this.innerWidth, this._measuredWidth - paddingLeft - paddingRight);\r\n //let innerHeight: number = this.innerHeight; //$math.max(this.innerHeight, this._measuredHeight - paddingTop - paddingBottom);\r\n // above is wrong, as if a w/h is not specified, it is 0 and alignment doesn't work at all.\r\n var innerWidth = $math.max(this.innerWidth, this._absoluteWidth);\r\n var innerHeight = $math.max(this.innerHeight, this._absoluteHeight);\r\n var left; // = 0;\r\n var right; // = innerWidth;\r\n var top; // = 0;\r\n var bottom; // = innerHeight;\r\n var paddingLeft = this.pixelPaddingLeft;\r\n var paddingRight = this.pixelPaddingRight;\r\n var paddingTop = this.pixelPaddingTop;\r\n var paddingBottom = this.pixelPaddingBottom;\r\n var nextX = 0;\r\n var nextY = 0;\r\n var row = 0;\r\n var column = 0;\r\n var columnWidth = [];\r\n var rowHeight = [];\r\n var maxCellWidth;\r\n var minCellWidth;\r\n var columnCount;\r\n var maxWidth = this.maxWidth;\r\n var maxHeight = this.maxHeight;\r\n var minWidth = this.minWidth;\r\n var minHeight = this.minHeight;\r\n var childrenCopy = $array.copy(children.values);\r\n if (this.reverseOrder) {\r\n childrenCopy.reverse();\r\n }\r\n // GRID PRECALCULATIONS\r\n if (this.layout == \"grid\") {\r\n minCellWidth = maxWidth;\r\n maxCellWidth = 1;\r\n for (var i = 0, len = childrenCopy.length; i < len; i++) {\r\n var child = childrenCopy[i];\r\n if (child.isMeasured && !child.disabled && !child.__disabled) {\r\n var childMeasuredWidth = child.measuredWidth;\r\n if (childMeasuredWidth < minCellWidth) {\r\n minCellWidth = childMeasuredWidth;\r\n }\r\n if (childMeasuredWidth > maxCellWidth) {\r\n maxCellWidth = childMeasuredWidth;\r\n }\r\n }\r\n }\r\n minCellWidth = $math.fitToRange(minCellWidth, 1, maxWidth);\r\n maxCellWidth = $math.fitToRange(maxCellWidth, 1, maxWidth);\r\n if (this.fixedWidthGrid) {\r\n columnCount = maxWidth / maxCellWidth;\r\n }\r\n else {\r\n columnCount = maxWidth / minCellWidth; // predicted number of columns, yes it is usually much more than real number, but we fix that later\r\n }\r\n columnCount = $math.max(1, Math.floor(columnCount));\r\n columnCount = $math.min(this.maxColumns, columnCount);\r\n columnWidth = this.getColumnWidth(childrenCopy, columnCount, maxCellWidth);\r\n }\r\n var contentLeft;\r\n var contentRight;\r\n var contentTop;\r\n var contentBottom;\r\n // we itterate through array of children\r\n // TODO use iterator instead\r\n for (var i = 0, len = childrenCopy.length; i < len; i++) {\r\n var child = childrenCopy[i];\r\n if (child.isMeasured && !child.disabled && !child.__disabled) {\r\n var x = undefined; //child.pixelX; // must reset\r\n var y = undefined; //child.pixelY; // must reset\r\n var childMarginLeft = child.pixelMarginLeft;\r\n var childMarginRight = child.pixelMarginRight;\r\n var childMarginTop = child.pixelMarginTop;\r\n var childMarginBottom = child.pixelMarginBottom;\r\n var childWidth = child.measuredWidth;\r\n var childHeight = child.measuredHeight;\r\n var childLeft = void 0;\r\n var childRight = void 0;\r\n var childTop = void 0;\r\n var childBottom = void 0;\r\n switch (this.layout) {\r\n case \"none\":\r\n break;\r\n // absolute layout\r\n case \"absolute\":\r\n // horizontal alignment\r\n switch (child.align) {\r\n case \"left\":\r\n x = childMarginLeft - child.maxLeft;\r\n break;\r\n case \"center\":\r\n x = (innerWidth - childWidth) / 2 - child.maxLeft;\r\n break;\r\n case \"right\":\r\n x = innerWidth - childMarginRight - child.maxRight;\r\n break;\r\n default:\r\n if (!(child.x instanceof Percent)) {\r\n x = child.pixelX;\r\n }\r\n break;\r\n }\r\n // vertical alignment\r\n switch (child.valign) {\r\n case \"top\":\r\n y = childMarginTop - child.maxTop;\r\n break;\r\n case \"middle\":\r\n y = (innerHeight - childHeight) / 2 - child.maxTop;\r\n break;\r\n case \"bottom\":\r\n y = innerHeight - childMarginBottom - child.maxBottom;\r\n break;\r\n default:\r\n if (!(child.y instanceof Percent)) {\r\n y = child.pixelY;\r\n }\r\n break;\r\n }\r\n break;\r\n // vertical layout\r\n case \"vertical\":\r\n //if ($type.isNumber(child.relativeHeight)) {\r\n //\tchildHeight = child.maxHeight;\r\n //}\r\n switch (child.align) {\r\n case \"left\":\r\n x = childMarginLeft - child.maxLeft;\r\n break;\r\n case \"center\":\r\n x = (innerWidth - childWidth) / 2 - child.maxLeft;\r\n break;\r\n case \"right\":\r\n x = innerWidth - childMarginRight - child.maxRight;\r\n break;\r\n default:\r\n x = child.pixelX;\r\n break;\r\n }\r\n y = nextY + childMarginTop - child.maxTop;\r\n nextY = y + child.maxBottom + childMarginBottom;\r\n break;\r\n // horizontal layout\r\n case \"horizontal\":\r\n //if ($type.isNumber(child.relativeHeight)) {\r\n //\tchildHeight = child.maxHeight;\r\n //}\r\n switch (child.valign) {\r\n case \"top\":\r\n y = childMarginTop - child.maxTop;\r\n break;\r\n case \"middle\":\r\n y = (innerHeight - childHeight) / 2 - child.maxTop;\r\n break;\r\n case \"bottom\":\r\n y = innerHeight - childMarginBottom - child.maxBottom;\r\n break;\r\n default:\r\n y = child.pixelY;\r\n break;\r\n }\r\n x = nextX + childMarginLeft - child.maxLeft;\r\n nextX = x + child.maxRight + childMarginRight;\r\n break;\r\n case \"grid\":\r\n x = nextX + childMarginLeft - child.maxLeft;\r\n switch (child.valign) {\r\n case \"top\":\r\n y = nextY + childMarginTop - child.maxTop;\r\n break;\r\n case \"middle\":\r\n y = nextY + (innerHeight - childHeight) / 2 - child.maxTop;\r\n break;\r\n case \"bottom\":\r\n y = nextY + innerHeight - childMarginBottom - child.maxBottom;\r\n break;\r\n default:\r\n y = nextY - child.maxTop;\r\n break;\r\n }\r\n nextX += columnWidth[column];\r\n rowHeight[row] = $math.max(rowHeight[row], childHeight);\r\n column++;\r\n var nextColumnWidth = columnWidth[column];\r\n if (!$type.isNumber(nextColumnWidth)) {\r\n nextColumnWidth = maxCellWidth;\r\n }\r\n if (nextX > $math.min(this.innerWidth, maxWidth) - nextColumnWidth + 1 && column < columnCount) {\r\n columnCount = column;\r\n nextX = 0;\r\n nextY = 0;\r\n row = 0;\r\n column = 0;\r\n columnWidth = this.getColumnWidth(childrenCopy, columnCount, maxCellWidth);\r\n rowHeight = [];\r\n i = -1;\r\n continue;\r\n }\r\n if (column >= columnCount) {\r\n column = 0;\r\n nextY += rowHeight[row];\r\n row++;\r\n nextX = 0;\r\n }\r\n break;\r\n }\r\n if (this.layout !== \"none\") {\r\n child.moveTo({ x: x, y: y }); // must use moveTo, otherwise x/y set in percent won't work\r\n childLeft = x + child.maxLeft - childMarginLeft;\r\n childRight = x + child.maxRight + childMarginRight;\r\n childTop = y + child.maxTop - childMarginTop;\r\n childBottom = y + child.maxBottom + childMarginBottom;\r\n if (childRight > right || !$type.isNumber(right)) {\r\n right = childRight;\r\n }\r\n if (childLeft < left || !$type.isNumber(left)) {\r\n left = childLeft;\r\n }\r\n if (childTop < top || !$type.isNumber(top)) {\r\n top = childTop;\r\n }\r\n if (childBottom > bottom || !$type.isNumber(bottom)) {\r\n bottom = childBottom;\r\n }\r\n if (childRight > contentRight || !$type.isNumber(contentRight)) {\r\n contentRight = childRight;\r\n }\r\n if (childLeft < contentLeft || !$type.isNumber(contentLeft)) {\r\n contentLeft = childLeft;\r\n }\r\n if (childTop < contentTop || !$type.isNumber(contentTop)) {\r\n contentTop = childTop;\r\n }\r\n if (childBottom > contentBottom || !$type.isNumber(contentBottom)) {\r\n contentBottom = contentBottom;\r\n }\r\n }\r\n }\r\n else {\r\n child.validatePosition();\r\n }\r\n }\r\n if (this.layout == \"none\") {\r\n var noneBBox = this.bbox;\r\n left = noneBBox.x;\r\n right = noneBBox.x + noneBBox.width;\r\n top = noneBBox.y;\r\n bottom = noneBBox.y + noneBBox.height;\r\n }\r\n if (!$type.isNumber(left)) {\r\n left = 0;\r\n contentLeft = 0;\r\n }\r\n if (!$type.isNumber(right)) {\r\n right = this._availableWidth;\r\n contentRight = right;\r\n }\r\n if (!$type.isNumber(top)) {\r\n top = 0;\r\n contentTop = 0;\r\n }\r\n if (!$type.isNumber(bottom)) {\r\n bottom = this._availableHeight;\r\n contentBottom = bottom;\r\n }\r\n if (!$type.isNumber(contentTop)) {\r\n contentTop = 0;\r\n }\r\n if (!$type.isNumber(contentBottom)) {\r\n contentBottom = contentTop;\r\n }\r\n if (!$type.isNumber(contentLeft)) {\r\n contentLeft = 0;\r\n }\r\n if (!$type.isNumber(contentRight)) {\r\n contentRight = contentLeft;\r\n }\r\n measuredWidth = right - left;\r\n measuredHeight = bottom - top;\r\n if ($type.isNumber(this.relativeWidth)) {\r\n measuredWidth = maxWidth - paddingLeft - paddingRight;\r\n left = 0;\r\n right = measuredWidth;\r\n }\r\n if ($type.isNumber(this.relativeHeight)) {\r\n measuredHeight = maxHeight - paddingTop - paddingBottom;\r\n top = 0;\r\n bottom = measuredHeight;\r\n }\r\n if ($type.isNumber(this._pixelWidth)) {\r\n left = 0;\r\n measuredWidth = this._pixelWidth - paddingLeft - paddingRight;\r\n }\r\n if ($type.isNumber(minWidth) && measuredWidth < minWidth) {\r\n left = 0;\r\n measuredWidth = this.minWidth - paddingLeft - paddingRight;\r\n }\r\n if ($type.isNumber(this._pixelHeight)) {\r\n top = 0;\r\n measuredHeight = this._pixelHeight - paddingTop - paddingBottom;\r\n }\r\n if ($type.isNumber(minHeight) && measuredHeight < minHeight) {\r\n top = 0;\r\n measuredHeight = minHeight - paddingTop - paddingBottom;\r\n }\r\n var measuredContentWidth = contentRight - contentLeft;\r\n var measuredContentHeight = contentBottom - contentTop;\r\n /// handle content alignment\r\n if (this.layout != \"none\" && (this.contentAlign || this.contentValign) && children.length > 0) {\r\n var dx_1;\r\n var dy_1;\r\n var mwa = measuredWidth;\r\n var mha = measuredHeight;\r\n if (mwa < measuredContentWidth) {\r\n mwa = measuredContentWidth;\r\n }\r\n if (mha < measuredContentHeight) {\r\n mha = measuredContentHeight;\r\n }\r\n if (this.contentAlign == \"center\") {\r\n dx_1 = (mwa - measuredContentWidth) / 2;\r\n }\r\n if (this.contentAlign == \"right\") {\r\n dx_1 = mwa - measuredContentWidth;\r\n }\r\n if (this.contentValign == \"middle\") {\r\n dy_1 = (mha - measuredContentHeight) / 2;\r\n }\r\n if (this.contentValign == \"bottom\") {\r\n dy_1 = mha - measuredContentHeight;\r\n }\r\n if ($type.isNumber(dx_1)) {\r\n $iter.each(children.iterator(), function (child) {\r\n var childLeft = child.maxLeft;\r\n var ddx = dx_1;\r\n if (_this.layout == \"horizontal\") {\r\n child.x = child.pixelX + ddx;\r\n }\r\n // individual grid elements can not be aligned vertically, that's why it's different from horizontal\r\n if (_this.layout == \"grid\") {\r\n child.x = child.pixelX + ddx;\r\n }\r\n if (_this.layout == \"vertical\") {\r\n ddx += child.pixelMarginLeft;\r\n if (child.align == \"none\") {\r\n child.x = ddx - childLeft;\r\n }\r\n }\r\n if (_this.layout == \"absolute\") {\r\n ddx += child.pixelMarginLeft;\r\n if (child.align == \"none\") {\r\n child.x = ddx - childLeft;\r\n }\r\n }\r\n });\r\n }\r\n if ($type.isNumber(dy_1)) {\r\n $iter.each(children.iterator(), function (child) {\r\n var childTop = child.maxTop;\r\n var ddy = dy_1;\r\n if (_this.layout == \"horizontal\") {\r\n ddy += child.pixelMarginTop;\r\n if (child.valign == \"none\") {\r\n child.y = ddy - childTop;\r\n }\r\n }\r\n // individual grid elements can not be aligned vertically, that's why it's different from horizontal\r\n if (_this.layout == \"grid\") {\r\n ddy += child.pixelMarginTop;\r\n child.y = ddy - childTop;\r\n }\r\n if (_this.layout == \"vertical\") {\r\n child.y = child.pixelY + ddy;\r\n }\r\n if (_this.layout == \"absolute\") {\r\n ddy += child.pixelMarginTop;\r\n if (child.valign == \"none\") {\r\n child.y = ddy - childTop;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n var oldBBox = this.bbox;\r\n // this will mess up maxw/maxh set by container layout, we need a separate min/maxwidth for users\r\n // this prevents invalidating layout in such cases as scrolling category axis, when labels go outside bounds and results transformed event\r\n // todo: need to check if this doesn't cause other problems.\r\n //if (this.maxWidth > 0) {\r\n //measuredWidth = $math.min(measuredWidth, this.maxWidth);\r\n //measuredWidth = $math.max(measuredWidth, this.minWidth);\r\n //}\r\n //if (this.maxHeight > 0) {\r\n //measuredHeight = $math.min(measuredHeight, this.maxHeight);\r\n //measuredHeight = $math.max(measuredHeight, this.minHeight);\r\n //}\r\n measuredWidth = $math.max(measuredWidth, minWidth);\r\n measuredHeight = $math.max(measuredHeight, minHeight);\r\n this.contentWidth = measuredWidth;\r\n this.contentHeight = measuredHeight;\r\n // new\r\n measuredWidth = $math.min(measuredWidth, maxWidth);\r\n measuredHeight = $math.min(measuredHeight, maxHeight);\r\n this._bbox = { x: left, y: top, width: measuredWidth, height: measuredHeight };\r\n var prevLeft = this.maxLeft;\r\n var prevTop = this.maxTop;\r\n var prevBotttom = this.maxBottom;\r\n var prevRight = this.maxRight;\r\n this.measure();\r\n if (prevLeft != this.maxLeft || prevRight != this.maxRight || prevTop != this.maxTop || prevBotttom != this.maxBottom) {\r\n if (this.events.isEnabled(\"transformed\")) {\r\n var event_1 = {\r\n type: \"transformed\",\r\n target: this\r\n };\r\n if (oldBBox) {\r\n event_1.dummyData = oldBBox.width + \" \" + measuredWidth + \" \" + oldBBox.height + \" \" + measuredHeight;\r\n }\r\n this.events.dispatchImmediately(\"transformed\", event_1);\r\n }\r\n }\r\n this.dispatchImmediately(\"layoutvalidated\");\r\n };\r\n /**\r\n * Positions element according its center settings.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.updateCenter = function () {\r\n _super.prototype.updateCenter.call(this);\r\n this.updateBackground();\r\n };\r\n /**\r\n * Update the background to fit into specific dimensions.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Make it protected?\r\n */\r\n Container.prototype.updateBackground = function () {\r\n var background = this._background; // accessing protected, as getter creates instance if it doesn't exist\r\n if (background) {\r\n background.x = this.maxLeft;\r\n background.y = this.maxTop;\r\n background.width = this.maxRight - this.maxLeft;\r\n background.height = this.maxBottom - this.maxTop;\r\n }\r\n };\r\n /**\r\n * Returns widths of all columns in a horizontal Container layout.\r\n *\r\n * @ignore Exclude from docs\r\n * @param columnCount Number of columns\r\n * @param maxCellWidth Maximum width of one grid cell\r\n * @return An array of column widths\r\n */\r\n Container.prototype.getColumnWidth = function (children, columnCount, maxCellWidth) {\r\n var _this = this;\r\n var columnWidth = [];\r\n var column = 0;\r\n $array.each(children, function (child) {\r\n if (child.isMeasured && !child.disabled && !child.__disabled) {\r\n if (_this.fixedWidthGrid) {\r\n columnWidth[column] = maxCellWidth;\r\n }\r\n else {\r\n columnWidth[column] = $math.max(columnWidth[column], child.measuredWidth + child.pixelMarginRight + child.pixelMarginLeft);\r\n }\r\n column++;\r\n if (column == columnCount) {\r\n column = 0;\r\n }\r\n }\r\n });\r\n return columnWidth;\r\n };\r\n Object.defineProperty(Container.prototype, \"layout\", {\r\n /**\r\n * @return Layout\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"layout\");\r\n },\r\n /**\r\n * Container layout.\r\n *\r\n * Options: \"absolute\" (default), \"vertical\", \"horizontal\", \"grid\", \"none\". \"none\" is quite the same as \"absolute\" - the objects will\r\n * be positioned at their x, y coordinates, the difference is that with \"absolute\" you can still use align/valign for children and with \"none\" you can not.\r\n * Use \"none\" as much as you can as it's most cpu-saving layout.\r\n *\r\n * @default \"absolute\"\r\n * @param value Layout\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"layout\", value)) {\r\n this.invalidateLayout();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Container.prototype, \"contentValign\", {\r\n /**\r\n * @return Vertical alignment\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"contentValign\");\r\n },\r\n /**\r\n * Vertical alignment of the elements for the vertical Container.\r\n *\r\n * This is used when Container is larger than the height of all its children.\r\n *\r\n * @param value vertical alignment\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"contentValign\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Container.prototype, \"contentAlign\", {\r\n /**\r\n * @return Horizontal alignment\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"contentAlign\");\r\n },\r\n /**\r\n * Horizontal alignment of the elements for the horizontal Container.\r\n *\r\n * This is used when Container is larger than the height of all its children.\r\n *\r\n * @param value Horizontal alignment\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"contentAlign\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Container.prototype, \"fixedWidthGrid\", {\r\n /**\r\n * @return Should use fixed width grid?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"fixedWidthGrid\");\r\n },\r\n /**\r\n * Controls if the grid of the Container should use fixed width. Fixed width\r\n * grid will divide available space to all its columns/rows equally, without\r\n * adapting to actual child sizes or size requirements.\r\n *\r\n * @default false\r\n * @param value Should use fixed width grid?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"fixedWidthGrid\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Container.prototype, \"maxColumns\", {\r\n /**\r\n * @return Should use fixed width grid?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxColumns\");\r\n },\r\n /**\r\n * Maximum number of columns (when using `\"grid\"` layout).\r\n *\r\n * @param value Should use fixed width grid?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"maxColumns\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Container.prototype, \"reverseOrder\", {\r\n /**\r\n * @return Reverse children?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"reverseOrder\");\r\n },\r\n /**\r\n * If set to `true`, the children of the container will be drawn in reverse\r\n * order.\r\n *\r\n * @default false\r\n * @param value Reverse children?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"reverseOrder\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Container.prototype, \"setStateOnChildren\", {\r\n /**\r\n * @return Set state on children\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"setStateOnChildren\");\r\n },\r\n /**\r\n * Specifies if, when state is applied on this container, the same state\r\n * should be applied to container's children as well as `background`.\r\n *\r\n * @default false\r\n * @param value Set state on children\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"setStateOnChildren\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Checks if point is within bounds of a container.\r\n *\r\n * @param point A coordinate to check\r\n * @return `true` if it fits within container\r\n */\r\n Container.prototype.fitsToBounds = function (point) {\r\n var x = point.x;\r\n var y = point.y;\r\n var deviation = 0.5; // sometimes coordinates are rounded to numbers like .999 so we add deviation here\r\n if (x >= -deviation && x <= this.pixelWidth + deviation && y >= -deviation && y <= this.pixelHeight + deviation) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n /**\r\n * Copies all properties from different Container, including background\r\n * clone.\r\n *\r\n * @param source Source Container to copy from\r\n */\r\n Container.prototype.copyFrom = function (source) {\r\n var _this = this;\r\n _super.prototype.copyFrom.call(this, source);\r\n this.layout = source.layout;\r\n this.setStateOnChildren = source.setStateOnChildren;\r\n if (source._background) {\r\n this.background = source._background.clone();\r\n this.background.copyFrom(source._background); // won't work without this\r\n }\r\n $iter.each(source.children.iterator(), function (child) {\r\n if (child.shouldClone) {\r\n var clonedChild = child.clone();\r\n clonedChild.parent = _this;\r\n }\r\n });\r\n };\r\n Object.defineProperty(Container.prototype, \"preloader\", {\r\n /**\r\n * @return Preloader instance\r\n */\r\n get: function () {\r\n var preloader = this._preloader;\r\n if (preloader) {\r\n return preloader;\r\n }\r\n else if (this.parent) {\r\n return this.parent.preloader;\r\n }\r\n },\r\n /**\r\n * A [[Preloader]] instance to be used when Container is busy.\r\n *\r\n * @param preloader Preloader instance\r\n */\r\n set: function (preloader) {\r\n if (this._preloader) {\r\n this.removeDispose(this._preloader);\r\n }\r\n this._preloader = preloader;\r\n if (preloader) {\r\n preloader.parent = this.tooltipContainer;\r\n this._disposers.push(preloader);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets [[Paper]] instance to use to draw elements.\r\n * @ignore\r\n * @param paper Paper\r\n * @return true if paper was changed, false, if it's the same\r\n */\r\n Container.prototype.setPaper = function (paper) {\r\n var _this = this;\r\n var changed = _super.prototype.setPaper.call(this, paper);\r\n if (changed) {\r\n if (this._background) {\r\n this._background.paper = paper;\r\n this._background.topParent = this.topParent;\r\n }\r\n this.children.each(function (child) {\r\n child.setPaper(paper);\r\n child.topParent = _this.topParent;\r\n });\r\n }\r\n return changed;\r\n };\r\n /**\r\n * Removes Container from the system-wide list of invalid Containers.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.removeFromInvalids = function () {\r\n _super.prototype.removeFromInvalids.call(this);\r\n registry.removeFromInvalidLayouts(this);\r\n };\r\n /**\r\n * Sets a [[DataItem]] to be used as data for the Container.\r\n *\r\n * @todo Description\r\n * @param dataItem DataItem\r\n */\r\n Container.prototype.setDataItem = function (dataItem) {\r\n // this place is potentially dangerous, as if we set datItem for some dummy container, all children dataItems will be overriden\r\n // the main reason for doing this is that we need a setDataItem code to be called for each sprite, otherwise property fields won't be\r\n // applied. Also, getting dataItem from parent all the time is more expensive than saving value.\r\n if (this._dataItem != dataItem) {\r\n $iter.each(this.children.iterator(), function (child) {\r\n child.dataItem = dataItem;\r\n });\r\n if (this._background) {\r\n this._background.dataItem = dataItem;\r\n }\r\n }\r\n _super.prototype.setDataItem.call(this, dataItem);\r\n };\r\n /**\r\n * Measures the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype.measureElement = function () {\r\n if (this.disabled || this.isTemplate || this.layout == \"none\" || this.__disabled) {\r\n // void\r\n }\r\n else {\r\n this.validateLayout();\r\n }\r\n };\r\n Object.defineProperty(Container.prototype, \"fontFamily\", {\r\n /**\r\n * @return Font family\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"fontFamily\");\r\n },\r\n /**\r\n * Font family to be used for the text.\r\n *\r\n * Parts of the text may override this setting using in-line formatting.\r\n *\r\n * @param value Font family value\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"fontFamily\", value, true)) {\r\n this.setSVGAttribute({ \"font-family\": value });\r\n this.invalidateLabels();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Container.prototype, \"fontSize\", {\r\n /**\r\n * @return Font size\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"fontSize\");\r\n },\r\n /**\r\n * Font size to be used for the text. The size can either be numeric, in\r\n * pixels, or other measurements.\r\n *\r\n * Parts of the text may override this setting using in-line formatting.\r\n *\r\n * @param value Font size value\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"fontSize\", value, true)) {\r\n this.setSVGAttribute({ \"font-size\": value });\r\n this.invalidateLabels();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * When fontSize of fontFamily changes we need to hard-invalidate all Labels of this container to position them properly.\r\n */\r\n Container.prototype.invalidateLabels = function () {\r\n this.children.each(function (child) {\r\n // can't import Label because of Circular dependencies\r\n if (child[\"hardInvalidate\"]) {\r\n child[\"hardInvalidate\"]();\r\n // this fixes firefox and viewport issue\r\n child.events.once(\"validated\", child.handleValidate, child, false);\r\n }\r\n else if (child instanceof Container) {\r\n child.invalidateLabels();\r\n }\r\n });\r\n };\r\n Object.defineProperty(Container.prototype, \"fontWeight\", {\r\n /**\r\n * @return Font weight\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"fontWeight\");\r\n },\r\n /**\r\n * Font weight to use for text.\r\n *\r\n * Parts of the text may override this setting using in-line formatting.\r\n *\r\n * @param value Font weight\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"fontWeight\", value);\r\n this.setSVGAttribute({ \"font-weight\": value });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Container.prototype, \"textDecoration\", {\r\n /**\r\n * @return Decoration\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"textDecoration\");\r\n },\r\n /**\r\n * A text decoration to use for text.\r\n *\r\n * Parts of the text may override this setting using in-line formatting.\r\n *\r\n * @param value Decoration\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"textDecoration\", value);\r\n this.setSVGAttribute({ \"text-decoration\": value });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Disposes (destroys) the element and all its children.\r\n */\r\n Container.prototype.dispose = function () {\r\n if (this._background) {\r\n this._background.dispose();\r\n }\r\n this._shouldBeReady = [];\r\n this.disposeChildren();\r\n _super.prototype.dispose.call(this);\r\n };\r\n /**\r\n * Applies a [[SpriteState]] on this element.\r\n *\r\n * The first parameter can either be a name of the state or a [[SpriteState]]\r\n * instance.\r\n *\r\n * When run, this method will apply SVG properties defined in a\r\n * [[SpriteState]], but only those that are relevant to this particular\r\n * element, that is are listed in its respective `properties` array.\r\n *\r\n * @see {@link SpriteState}\r\n * @param value A state - name key or instance\r\n * @param transitionDuration Duration of the transition between current and new state\r\n * @param easing An easing function\r\n */\r\n Container.prototype.setState = function (value, transitionDuration, easing) {\r\n var stateName = value;\r\n if (value instanceof SpriteState) {\r\n stateName = value.name;\r\n }\r\n if (this.setStateOnChildren) {\r\n $iter.each(this.children.iterator(), function (child) {\r\n child.setState(stateName, transitionDuration, easing);\r\n // not good to set it in child setState\r\n if (stateName != \"active\") {\r\n child.isActive = false;\r\n }\r\n });\r\n }\r\n if (this._background) {\r\n this._background.setState(stateName);\r\n }\r\n if (this.setStateOnSprites.length) {\r\n $array.each(this.setStateOnSprites, function (item) {\r\n item.setState(stateName, transitionDuration, easing);\r\n });\r\n }\r\n return _super.prototype.setState.call(this, value, transitionDuration, easing);\r\n };\r\n // otherwise isActive won't work properly with background\r\n Container.prototype.setActive = function (value) {\r\n _super.prototype.setActive.call(this, value);\r\n if (this._background) {\r\n this._background.isActive = value;\r\n }\r\n };\r\n /**\r\n * Dispatches ready event. Dispatches when all children are ready.\r\n */\r\n Container.prototype.dispatchReady = function () {\r\n var _this = this;\r\n if (!this.isReady() && !this.isDisposed()) {\r\n var allReady_1 = true;\r\n $iter.eachContinue(this.children.iterator(), function (sprite) {\r\n if (!sprite.__disabled && !sprite.disabled && !sprite.isReady()) {\r\n allReady_1 = false;\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n });\r\n $array.eachContinue(this._shouldBeReady, function (sprite) {\r\n if (!sprite.__disabled && !sprite.disabled && !sprite.isReady()) {\r\n allReady_1 = false;\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n });\r\n if (allReady_1) {\r\n _super.prototype.dispatchReady.call(this);\r\n }\r\n else {\r\n registry.events.once(\"exitframe\", function () {\r\n _this.dispatchReady();\r\n system.requestFrame();\r\n }, undefined, false);\r\n }\r\n }\r\n };\r\n /**\r\n * Called during the System.update method\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype._systemUpdate = function (skippedSprites) {\r\n this.children.each(function (child) {\r\n if (child.invalid) {\r\n if (!child._systemCheckIfValidate()) {\r\n skippedSprites.push(child);\r\n }\r\n else if (child.dataItem && child.dataItem.component && child.dataItem.component.dataInvalid) {\r\n skippedSprites.push(child);\r\n }\r\n else {\r\n child.validate();\r\n }\r\n }\r\n });\r\n _super.prototype._systemUpdate.call(this, skippedSprites);\r\n };\r\n /**\r\n * Called during the System.validatePositions method\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype._systemValidatePositions = function () {\r\n this.children.each(function (sprite) {\r\n if (sprite.positionInvalid) {\r\n sprite.validatePosition();\r\n }\r\n });\r\n _super.prototype._systemValidatePositions.call(this);\r\n };\r\n /**\r\n * Called during the System.validateLayouts method\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Container.prototype._systemValidateLayouts = function () {\r\n if (this.layoutInvalid && !this.isDisposed()) {\r\n this.validateLayout();\r\n }\r\n };\r\n Object.defineProperty(Container.prototype, \"tapToActivate\", {\r\n /**\r\n * @return Enable touch protection?\r\n */\r\n get: function () {\r\n return this._tapToActivate;\r\n },\r\n /**\r\n * If set to `true` the chart's regular touch functionality will be suspended\r\n * so that the whole page it is located in remains scrollable, even when\r\n * swiping over the chart's body.\r\n *\r\n * User will need to tap the chart in order to activate its regular touch\r\n * functionality.\r\n *\r\n * The chart will remain \"active\" as long as user keeps interacting with the\r\n * chart. After `tapTimeout` milliseconds the chart will return to its\r\n * \"protected\" mode.\r\n *\r\n * @default false\r\n * @since 4.4.0\r\n * @param value Enable touch protection?\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/touch/} For more information.\r\n */\r\n set: function (value) {\r\n if (this._tapToActivate != value) {\r\n this.setTapToActivate(value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Container.prototype.setTapToActivate = function (value) {\r\n var _this = this;\r\n this._tapToActivate = value;\r\n this.interactions.isTouchProtected = value;\r\n // setEventDisposer will also remove listeners if value == false\r\n if (value) {\r\n this.interactions.setEventDisposer(\"container-tapToActivate\", value, function () { return new MultiDisposer([\r\n _this.events.on(\"hit\", _this.handleTapToActivate, _this, false),\r\n _this.events.on(\"down\", _this.initTapTimeout, _this, false),\r\n _this.events.on(\"track\", _this.initTapTimeout, _this, false),\r\n //this.events.on(\"drag\", this.initTapTimeout, this, false),\r\n getInteraction().body.events.on(\"down\", function (ev) {\r\n if (!getInteraction().isLocalElement(ev.pointer, _this.paper.svg, _this.uid)) {\r\n _this.handleTapToActivateDeactivation();\r\n }\r\n }, _this, false)\r\n ]); });\r\n }\r\n getInteraction();\r\n };\r\n /**\r\n * @todo Ignore on non-touch events\r\n */\r\n Container.prototype.handleTapToActivate = function () {\r\n this.interactions.isTouchProtected = false;\r\n this.initTapTimeout();\r\n };\r\n Container.prototype.handleTapToActivateDeactivation = function () {\r\n this.interactions.isTouchProtected = true;\r\n };\r\n Container.prototype.initTapTimeout = function () {\r\n var _this = this;\r\n if (this._tapToActivateTimeout) {\r\n this._tapToActivateTimeout.dispose();\r\n }\r\n if (this.tapToActivate && !this.interactions.isTouchProtected && this.tapTimeout) {\r\n this._tapToActivateTimeout = this.setTimeout(function () {\r\n _this.handleTapToActivateDeactivation();\r\n }, this.tapTimeout);\r\n }\r\n };\r\n /**\r\n * Moves the whole chart to other HTML container.\r\n *\r\n * `htmlElement` can either be a reference to a DOM element, or an id of\r\n * such element.\r\n *\r\n * @since 4.9.24\r\n * @param htmlElement Target element\r\n */\r\n Container.prototype.moveHtmlContainer = function (htmlElement) {\r\n var newContainer = $dom.getElement(htmlElement);\r\n if (newContainer) {\r\n this.htmlContainer = newContainer;\r\n var svgDiv = this.svgContainer;\r\n svgDiv.htmlElement = newContainer;\r\n svgDiv.htmlElement.appendChild(svgDiv.SVGContainer);\r\n svgDiv.initSensor();\r\n svgDiv.measure();\r\n }\r\n else if ($type.isString(htmlElement) && htmlElement != \"\") {\r\n system.log(\"html container '\" + htmlElement + \"' not found\");\r\n //throw new Error(\"html container not found\");\r\n }\r\n };\r\n /**\r\n * @ignore\r\n * @return Has license?\r\n */\r\n Container.prototype.hasLicense = function () {\r\n if (options.commercialLicense) {\r\n return true;\r\n }\r\n for (var i = 0; i < options.licenses.length; i++) {\r\n if (options.licenses[i].match(/^CH.{5,}/i)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n return Container;\r\n}(Sprite));\r\nexport { Container };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Container\"] = Container;\r\n//# sourceMappingURL=Container.js.map","/**\r\n * Defines functionality for \"Data Item\"\r\n *\r\n * A Data Item can be any object that can hold data. For example [[LineSeries]]\r\n * holds a number of values, that comprise a line graph. Each of those values\r\n * (data points) is a {DataItem}.\r\n *\r\n * Furthermore the [[LineSeries]] itself can be represented as a entry in the\r\n * legend. Since legend needs access to Line Series' value, a DataItem is\r\n * created for the series.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObjectEvents } from \"./Base\";\r\nimport { Adapter } from \"./utils/Adapter\";\r\nimport { Animation, AnimationDisposer } from \"./utils/Animation\";\r\nimport * as $utils from \"./utils/Utils\";\r\nimport * as $array from \"./utils/Array\";\r\n//import * as $object from \"./utils/Object\";\r\nimport * as $type from \"./utils/Type\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * DataItem represents single element in data, for example a data point in a\r\n * Serial Chart Series, e.g. a column.\r\n *\r\n * DataItem defines relationship between structured data, required for specific\r\n * chart type or task, and raw source data.\r\n *\r\n * It also implements required calculations, updates related visual elements,\r\n * etc.\r\n *\r\n * @todo Description\r\n * @important\r\n */\r\nvar DataItem = /** @class */ (function (_super) {\r\n __extends(DataItem, _super);\r\n /**\r\n * Constructor\r\n * @todo Adding events to disposers produces errors in some cases, which means that chart is using disposed Data Items which is not right\r\n */\r\n function DataItem() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * This Data Item is currently disabled.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._disabled = false;\r\n /**\r\n * Indicates whether Data Item has any properties set.\r\n *\r\n * If it does not have any, the code can use this property to check whether\r\n * they need to apply costly operation of re-applying properties, whenever\r\n * Data Item-related element is redrawn, e.g. series.\r\n */\r\n _this.hasProperties = false;\r\n /**\r\n * An object containing calculated values.\r\n */\r\n _this.values = {};\r\n /**\r\n * An object container current working values.\r\n */\r\n //public readonly workingValues: { [index: string]: { [index: string]: number } } = {};\r\n /**\r\n * An object containing categories.\r\n */\r\n _this.categories = {};\r\n /**\r\n * An object containing dates.\r\n */\r\n _this.dates = {};\r\n /**\r\n * An object containing locations for the Data Item.\r\n *\r\n * A location is a position within date or category, or, in some other cases,\r\n * where there is no single point but rather some period.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/series/#Data_item_locations} for info how data item locations work\r\n */\r\n _this.locations = {};\r\n /**\r\n * Current working locations.\r\n */\r\n _this.workingLocations = {};\r\n /**\r\n * An object containing Data Item specific appearance properties in key-value\r\n * pairs.\r\n *\r\n * Sometimes a single Data Item needs to apply different properties than the\r\n * rest of the data [[Series]] it is part of. E.g. a single column,\r\n * represented by a Data Item needs to be filled with a different color than\r\n * the reset of the [[ColumnSeries]] it belongs to.\r\n *\r\n * That's where Data Item's `properties` come into play.\r\n *\r\n * Please note that you should set Data Item-specific properties using\r\n * `setProperty()` method, rather than access `properties` object directly.\r\n */\r\n _this.properties = {};\r\n /**\r\n * A list of [[Sprite]] elements that are associated with this Data Item.\r\n *\r\n * E.g. an [[Axis]] Data Item has several separate elements associated with\r\n * it, like [[AxisTick]], [[AxisLabel]], and [[Grid]].\r\n *\r\n * Data Item keeps track of all of them, so it can toggle all related visual\r\n * elements when it itself is toggled.\r\n */\r\n _this.sprites = [];\r\n /**\r\n * Identifies if this object is a \"template\" and should not be treated as\r\n * real object that is drawn or actually used in the chart.\r\n */\r\n _this.isTemplate = false;\r\n /**\r\n * The current index within the dataItems\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._index = null;\r\n /**\r\n * Is Data Item currently visible?\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._visible = true;\r\n /**\r\n * Is Data Item currently hidden?\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._hidden = false;\r\n /**\r\n * Should this Data Item be used when calculating data ranges and scales?\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._ignoreMinMax = false;\r\n /**\r\n * Some of the Data Item's data fields may contain an array of children. This\r\n * property contains an object indicating which fields hold an array, so that\r\n * they can be processed properly.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this.hasChildren = {};\r\n /**\r\n * Indicates whether Data Item is currently animiting from visible to hidden\r\n * state.\r\n */\r\n _this.isHiding = false;\r\n /**\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._valueAnimations = {};\r\n /**\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._locationAnimations = {};\r\n _this.className = \"DataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(DataItem.prototype, \"adapter\", {\r\n /**\r\n * Holds Adapter.\r\n */\r\n get: function () {\r\n if (!this._adapterO) {\r\n this._adapterO = new Adapter(this);\r\n }\r\n return this._adapterO;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataItem.prototype, \"index\", {\r\n /**\r\n * Data Item's position index in Component's data.\r\n *\r\n * @return Index\r\n */\r\n get: function () {\r\n if (this.component) {\r\n if (this._index != null) {\r\n return this._index;\r\n }\r\n else {\r\n return -1;\r\n }\r\n }\r\n else {\r\n return -1;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataItem.prototype, \"animations\", {\r\n /**\r\n * A list of [[Animations]] objects currently mutating Data Item's values.\r\n *\r\n * @return [description]\r\n */\r\n get: function () {\r\n if (!this._animations) {\r\n this._animations = [];\r\n this._disposers.push(new AnimationDisposer(this._animations));\r\n }\r\n return this._animations;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataItem.prototype, \"visible\", {\r\n /**\r\n * Returns `true` if this Data Item is currently visible.\r\n *\r\n * @return Visible?\r\n */\r\n get: function () {\r\n if (this._hidden) {\r\n return false;\r\n }\r\n return this._visible;\r\n },\r\n /**\r\n * Sets visibility of the Data Item.\r\n *\r\n * @param value Visible?\r\n */\r\n set: function (value) {\r\n if (value) {\r\n this.hidden = false;\r\n }\r\n if (this._visible != value) {\r\n this.setVisibility(value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataItem.prototype, \"hidden\", {\r\n /**\r\n * Returns `true` if this Data Item is currently hidden.\r\n *\r\n * @return Hidden?\r\n */\r\n get: function () {\r\n return this._hidden;\r\n },\r\n /**\r\n * Sets hidden flag for data item. Mostly used to initially hide data item.\r\n *\r\n * @param value Hidden?\r\n */\r\n set: function (value) {\r\n if (this._hidden != value) {\r\n this._hidden = value;\r\n if (value) {\r\n this.setVisibility(false);\r\n }\r\n else {\r\n this.setVisibility(true, true);\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataItem.prototype, \"__disabled\", {\r\n /**\r\n * Is this Data Item currently disabled?\r\n *\r\n * @ignore Exclude from docs\r\n * @param {boolean}\r\n */\r\n get: function () {\r\n return this._disabled;\r\n },\r\n /**\r\n * Disables all Sprites associated with this Data Item.\r\n *\r\n * @ignore Exclude from docs\r\n * @param {boolean}\r\n */\r\n set: function (value) {\r\n //\tif (this._disabled != value) { // not good\r\n this._disabled = value;\r\n $array.each(this.sprites, function (sprite) {\r\n sprite.__disabled = value;\r\n });\r\n //\t}\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets visibility of the Data Item.\r\n *\r\n * @param value Data Item\r\n */\r\n DataItem.prototype.setVisibility = function (value, noChangeValues) {\r\n $array.each(this.sprites, function (sprite) {\r\n if (value) {\r\n sprite.visible = sprite.defaultState.properties.visible;\r\n }\r\n else {\r\n if (sprite.hiddenState) {\r\n sprite.visible = sprite.hiddenState.properties.visible;\r\n }\r\n else {\r\n sprite.visible = false;\r\n }\r\n }\r\n });\r\n this._visible = value;\r\n if (this._eventDispatcher && !this.__disabled) {\r\n if (this.events.isEnabled(\"visibilitychanged\")) {\r\n var event_1 = {\r\n type: \"visibilitychanged\",\r\n target: this,\r\n visible: value\r\n };\r\n this.events.dispatchImmediately(\"visibilitychanged\", event_1);\r\n }\r\n }\r\n };\r\n /**\r\n * Shows the Data Item and related visual elements.\r\n *\r\n * @param duration Animation duration (ms)\r\n * @param delay Delay animation (ms)\r\n * @param fields A list of fields to set values of\r\n */\r\n DataItem.prototype.show = function (duration, delay, fields) {\r\n var _this = this;\r\n if (!this.hidden) {\r\n this.setVisibility(true, true);\r\n this.isHiding = false;\r\n if (this._hideDisposer) {\r\n this.removeDispose(this._hideDisposer);\r\n }\r\n var animation_1;\r\n if (fields) {\r\n $array.each(fields, function (field) {\r\n animation_1 = _this.setWorkingValue(field, _this.values[field].value, duration, delay);\r\n });\r\n }\r\n $array.each(this.sprites, function (sprite) {\r\n var animation = sprite.show(duration);\r\n if (animation != null && !animation.isFinished()) {\r\n _this._disposers.push(animation);\r\n if (delay != null && delay > 0) {\r\n animation.delay(delay);\r\n }\r\n }\r\n });\r\n return animation_1;\r\n }\r\n };\r\n /**\r\n * Destroys this object and all related data.\r\n */\r\n DataItem.prototype.dispose = function () {\r\n _super.prototype.dispose.call(this);\r\n $array.each(this.sprites, function (sprite) {\r\n sprite.dispose();\r\n });\r\n this.sprites = [];\r\n };\r\n /**\r\n * Hides the Data Item and related visual elements.\r\n *\r\n * @param duration Animation duration (ms)\r\n * @param delay Delay animation (ms)\r\n * @param toValue A value to set to `fields` when hiding\r\n * @param fields A list of data fields to set value to `toValue`\r\n */\r\n DataItem.prototype.hide = function (duration, delay, toValue, fields) {\r\n var _this = this;\r\n this.isHiding = true;\r\n $array.each(this.sprites, function (sprite) {\r\n var animation = sprite.hide(duration);\r\n if (animation != null && !animation.isFinished()) {\r\n _this._disposers.push(animation);\r\n if (delay != null && delay > 0) {\r\n animation.delay(delay);\r\n }\r\n }\r\n });\r\n if ($type.isNumber(toValue) && fields) {\r\n var animation_2;\r\n $array.each(fields, function (field) {\r\n var anim = _this.setWorkingValue(field, toValue, duration, delay);\r\n if (anim) {\r\n animation_2 = anim;\r\n }\r\n });\r\n if (animation_2 && !animation_2.isFinished()) {\r\n this._hideDisposer = animation_2.events.on(\"animationended\", function () {\r\n _this.setVisibility(false, true);\r\n _this.isHiding = false;\r\n });\r\n this._disposers.push(this._hideDisposer);\r\n return animation_2;\r\n }\r\n else {\r\n this.isHiding = false;\r\n this.setVisibility(false, true);\r\n }\r\n }\r\n else {\r\n this.isHiding = false;\r\n this.setVisibility(false);\r\n }\r\n };\r\n /**\r\n * Returns a duration (ms) the Data Item should take to animate from one\r\n * value to another.\r\n *\r\n * If the duration is not specified via parameter, this method will try to\r\n * request a default duration from the related `Component`.\r\n *\r\n * @param duration Default duration (ms)\r\n * @return Duration (ms)\r\n */\r\n DataItem.prototype.getDuration = function (duration) {\r\n if (!$type.isNumber(duration)) {\r\n var component = this.component;\r\n if (component) {\r\n duration = component.interpolationDuration;\r\n }\r\n }\r\n if (duration != null) {\r\n if (!this._adapterO) {\r\n return duration;\r\n }\r\n else {\r\n return this._adapterO.apply(\"duration\", duration);\r\n }\r\n }\r\n };\r\n /**\r\n * Returns a numeric value for specific data field.\r\n *\r\n * If `calculated` is not set, it will return a raw value, as it is in\r\n * source data.\r\n *\r\n * If `calculated` is set, it will return a pre-calculated specific value.\r\n *\r\n * @param name Data field name\r\n * @param calculated A calculated value name\r\n * @return Value\r\n */\r\n DataItem.prototype.getValue = function (name, calculated) {\r\n if (name && this.component) {\r\n if (!calculated) {\r\n calculated = this.component.dataFields[name + \"Show\"];\r\n if (!calculated) {\r\n calculated = \"value\";\r\n }\r\n }\r\n var value = this.values[name][calculated];\r\n if (this._adapterO && this._adapterO.isEnabled(\"value\")) {\r\n return this._adapterO.apply(\"value\", {\r\n value: value,\r\n field: name\r\n }).value;\r\n }\r\n else {\r\n return value;\r\n }\r\n }\r\n };\r\n /**\r\n * Returns a current working value for a specific data field.\r\n *\r\n * The actual value may differ from the one returned by `getValue()`. The\r\n * latter returns static values from the data source.\r\n *\r\n * `getWorkingValue()` returns current value, which is usually different if\r\n * Data Item is animating from one state to another.\r\n *\r\n * @param name Data field name\r\n * @return Value\r\n */\r\n DataItem.prototype.getWorkingValue = function (name) {\r\n if (name && this.component) {\r\n var realName = this.component.dataFields[name + \"Show\"];\r\n if (!realName) {\r\n realName = \"workingValue\";\r\n }\r\n if (this._adapterO) {\r\n return this._adapterO.apply(\"workingValue\", {\r\n workingValue: this.values[name][realName],\r\n field: name\r\n }).workingValue;\r\n }\r\n else {\r\n return this.values[name][realName];\r\n }\r\n }\r\n };\r\n /**\r\n * @ignore\r\n * @return Value\r\n */\r\n DataItem.prototype.getActualWorkingValue = function (name) {\r\n return this.values[name].workingValue;\r\n };\r\n /**\r\n * Sets a numeric value for specific data field.\r\n *\r\n * @param name Data field name\r\n * @param value Value\r\n * @param calculated Calculated data field name\r\n * @param duration Duration (ms) to animate to new value to\r\n * @param delay Delay animation (ms)\r\n */\r\n DataItem.prototype.setValue = function (name, value, duration, delay) {\r\n var currentValue = this.values[name].value;\r\n var newDuration = this.getDuration(duration);\r\n value = $type.toNumber(value);\r\n if (currentValue !== value) {\r\n this.values[name].value = value;\r\n if (this._eventDispatcher && !this.__disabled) {\r\n if (this.events.isEnabled(\"valuechanged\")) {\r\n var event_2 = {\r\n type: \"valuechanged\",\r\n target: this,\r\n property: name\r\n };\r\n this.events.dispatchImmediately(\"valuechanged\", event_2);\r\n }\r\n }\r\n if (this.component) {\r\n this.component.handleDataItemValueChange(this, name);\r\n }\r\n }\r\n this.setWorkingValue(name, value, newDuration, delay);\r\n };\r\n DataItem.prototype.setCalculatedValue = function (name, value, calculated) {\r\n var currentValue = this.values[name][calculated];\r\n if (currentValue !== value && $type.isNumber(value)) {\r\n this.values[name][calculated] = value;\r\n if (this._eventDispatcher && !this.__disabled) {\r\n if (this.events.isEnabled(\"calculatedvaluechanged\")) {\r\n var event_3 = {\r\n type: \"calculatedvaluechanged\",\r\n target: this,\r\n property: name\r\n };\r\n this.events.dispatchImmediately(\"calculatedvaluechanged\", event_3);\r\n }\r\n }\r\n if (this.component) {\r\n this.component.handleDataItemCalculatedValueChange(this, name);\r\n }\r\n }\r\n };\r\n /**\r\n * Set current working numeric value for a specific data field.\r\n *\r\n * @param name Data field name\r\n * @param value Value\r\n * @param calculated Calculated data field name\r\n * @param duration Duration (ms) to animate to new value to\r\n * @param delay Delay animation (ms)\r\n * @return An [[Animation]] object used for transition to new values\r\n */\r\n DataItem.prototype.setWorkingValue = function (name, value, duration, delay) {\r\n if ($type.isNumber(this.values[name].value)) {\r\n var newDuration = this.getDuration(duration);\r\n var workingValue = this.values[name].workingValue;\r\n if (newDuration != null && newDuration > 0 && $type.isNumber(workingValue) && this.component) { // sometimes NaN is passed, so only change this to != null if all cases of NaN are handled, otherwise animation won't stop\r\n if (workingValue != value) {\r\n var animation = this.animate({ childObject: this.values[name], property: \"workingValue\", from: workingValue, to: value, dummyData: name }, newDuration, this.component.interpolationEasing);\r\n if (delay != null) {\r\n animation.delay(delay);\r\n }\r\n animation.events.on(\"animationstarted\", this.handleInterpolationProgress, this);\r\n animation.events.on(\"animationprogress\", this.handleInterpolationProgress, this);\r\n animation.events.on(\"animationended\", this.handleInterpolationProgress, this);\r\n this._valueAnimations[name] = animation;\r\n return animation;\r\n }\r\n else {\r\n var valueAnimation = this._valueAnimations[name];\r\n if (valueAnimation) {\r\n valueAnimation.stop();\r\n }\r\n this.values[name].workingValue = value;\r\n }\r\n }\r\n else {\r\n var valueAnimation = this._valueAnimations[name];\r\n if (valueAnimation) {\r\n valueAnimation.stop();\r\n }\r\n this.values[name].workingValue = value;\r\n if (this._eventDispatcher && !this.__disabled) {\r\n if (this.events.isEnabled(\"workingvaluechanged\")) {\r\n var event_4 = {\r\n type: \"workingvaluechanged\",\r\n target: this,\r\n property: name\r\n };\r\n this.events.dispatchImmediately(\"workingvaluechanged\", event_4);\r\n }\r\n }\r\n if (this.component) {\r\n this.component.handleDataItemWorkingValueChange(this, name);\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Sets a relative location for a data field.\r\n *\r\n * A location is always relative on a 0 to 1 scale, with 0 being beginning,\r\n * 0.5 middle and 1 end.\r\n *\r\n * @todo Rewiew description\r\n * @param name Data field name\r\n * @param value Location (0-1)\r\n * @param duration Duration (ms) to animate to new value to\r\n * @param delay Delay animation (ms)\r\n */\r\n DataItem.prototype.setLocation = function (name, value, duration, delay) {\r\n var currentLocation = this.locations[name];\r\n if (currentLocation !== value) {\r\n this.locations[name] = value;\r\n if (this._eventDispatcher && !this.__disabled) {\r\n if (this.events.isEnabled(\"locationchanged\")) {\r\n var event_5 = {\r\n type: \"locationchanged\",\r\n target: this,\r\n property: name\r\n };\r\n this.events.dispatchImmediately(\"locationchanged\", event_5);\r\n }\r\n }\r\n if (this.component) {\r\n this.component.handleDataItemValueChange(this, name); // correct\r\n }\r\n this.setWorkingLocation(name, value, duration, delay);\r\n }\r\n };\r\n /**\r\n * Sets a current working location for a data field.\r\n *\r\n * @todo Rewiew description\r\n * @param name Data field name\r\n * @param value Location (0-1)\r\n * @param duration Duration (ms) to animate to new value to\r\n * @param delay Delay animation (ms)\r\n */\r\n DataItem.prototype.setWorkingLocation = function (name, value, duration, delay) {\r\n var newDuration = this.getDuration(duration);\r\n var workingLocation = this.workingLocations[name];\r\n if (newDuration != null && newDuration > 0 && $type.isNumber(workingLocation) && this.component) { // sometimes NaN is passed, so only change this to != null if all cases of NaN are handled, otherwise animation won't stop\r\n if (workingLocation != value) {\r\n var animation = this.animate({ childObject: this.workingLocations, property: name, from: workingLocation, to: value, dummyData: name }, newDuration, this.component.interpolationEasing);\r\n if (delay != null) {\r\n animation.delay(delay);\r\n }\r\n animation.events.on(\"animationstarted\", this.handleInterpolationProgress, this);\r\n animation.events.on(\"animationprogress\", this.handleInterpolationProgress, this);\r\n animation.events.on(\"animationended\", this.handleInterpolationProgress, this);\r\n this._locationAnimations[name] = animation;\r\n return animation;\r\n }\r\n else {\r\n var locationAnimation = this._locationAnimations[name];\r\n if (locationAnimation) {\r\n locationAnimation.stop();\r\n }\r\n this.workingLocations[name] = value;\r\n }\r\n }\r\n else {\r\n var locationAnimation = this._locationAnimations[name];\r\n if (locationAnimation) {\r\n locationAnimation.stop();\r\n }\r\n this.workingLocations[name] = value;\r\n if (this._eventDispatcher && !this.__disabled) {\r\n if (this.events.isEnabled(\"workinglocationchanged\")) {\r\n var event_6 = {\r\n type: \"workinglocationchanged\",\r\n target: this,\r\n property: name\r\n };\r\n this.events.dispatchImmediately(\"workinglocationchanged\", event_6);\r\n }\r\n }\r\n if (this.component) {\r\n this.component.handleDataItemWorkingLocationChange(this, name);\r\n }\r\n }\r\n };\r\n /**\r\n * Sets Date value to a data field.\r\n *\r\n * @param name Data field name\r\n * @param date Date object\r\n * @param duration Duration (ms) to animate to new value to\r\n */\r\n DataItem.prototype.setDate = function (name, date, duration) {\r\n if (!$type.isDate(date) && this.component) {\r\n date = this.component.dateFormatter.parse(date);\r\n }\r\n var currentDate = this.dates[name];\r\n if (currentDate !== date) {\r\n this.dates[name] = date;\r\n this.setValue(name, date.getTime(), duration);\r\n }\r\n };\r\n /**\r\n * Returns a Date value of the data field.\r\n *\r\n * @param name Data field name\r\n * @return Date object\r\n */\r\n DataItem.prototype.getDate = function (name) {\r\n if (this._adapterO) {\r\n return this._adapterO.apply(\"date\", {\r\n date: this.dates[name],\r\n field: name\r\n }).date;\r\n }\r\n else {\r\n return this.dates[name];\r\n }\r\n };\r\n /**\r\n * Sets a Data Item-specific visual properties to apply to related elements.\r\n *\r\n * @param name Property name\r\n * @param value Property value\r\n */\r\n DataItem.prototype.setProperty = function (name, value) {\r\n if (this.properties[name] !== value) {\r\n this.hasProperties = true;\r\n this.properties[name] = value;\r\n if (this._eventDispatcher && !this.__disabled) {\r\n if (this.events.isEnabled(\"propertychanged\")) {\r\n var event_7 = {\r\n type: \"propertychanged\",\r\n target: this,\r\n property: name,\r\n value: value\r\n };\r\n this.events.dispatchImmediately(\"propertychanged\", event_7);\r\n }\r\n }\r\n if (this.component) {\r\n this.component.handleDataItemPropertyChange(this, name);\r\n }\r\n }\r\n };\r\n /**\r\n * Sets a related category for this Data Item.\r\n *\r\n * @todo Review description\r\n * @param name Data field name\r\n * @param value Category\r\n */\r\n DataItem.prototype.setCategory = function (name, value) {\r\n if (!$type.isString(value)) {\r\n value = $type.castString(value);\r\n }\r\n if (this.categories[name] !== value) {\r\n this.categories[name] = value;\r\n }\r\n };\r\n /**\r\n * Clones the Data Item, including all related data.\r\n *\r\n * @return New Data Item clone\r\n */\r\n //public clone(cloneId?: string): this {\r\n //\tlet dataItem: this = super.clone(cloneId);\r\n //\tdataItem.copyFrom(this);\r\n //\treturn dataItem;\r\n //}\r\n /**\r\n * Copies all properties and related data from different data item.\r\n *\r\n * @param object Source data item\r\n */\r\n DataItem.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n if (source.dataContext) {\r\n this.dataContext = $utils.copy(source.dataContext, {});\r\n }\r\n $utils.copyProperties(source.locations, this.locations);\r\n /*\r\n $utils.copyProperties(source.properties, this.properties);\r\n $utils.copyProperties(source.categories, this.categories);\r\n $utils.copyProperties(source.values, this.values);\r\n $utils.copyProperties(source.dates, this.dates);\r\n\r\n $object.each(source.values, (name, value) => {\r\n this.values[name] = $object.copy(value);\r\n });*/\r\n if (source._adapterO) {\r\n this.adapter.copyFrom(source._adapterO);\r\n }\r\n //this.events.copyFrom(source.events); // because copied in Base\r\n this.component = source.component;\r\n };\r\n Object.defineProperty(DataItem.prototype, \"opacity\", {\r\n /**\r\n * Sets opacity for all Data Item's related elements (Sprites).\r\n *\r\n * @param value Opacity (0-1)\r\n */\r\n set: function (value) {\r\n $array.each(this.sprites, function (sprite) {\r\n sprite.opacity = value;\r\n });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataItem.prototype, \"ignoreMinMax\", {\r\n /**\r\n * Exclude from min/max calculations?\r\n * @return Exclude from min/max calculations?\r\n */\r\n get: function () {\r\n return this._ignoreMinMax;\r\n },\r\n /**\r\n * Sets whether this data point should not be included in the scale and\r\n * minimum/maximum calculations.\r\n *\r\n * E.g. some we may want to exclude a particular data point from influencing\r\n * [[ValueAxis]] scale.\r\n *\r\n * @param value Exclude from min/max calculations?\r\n */\r\n set: function (value) {\r\n this._ignoreMinMax = value;\r\n if (this._eventDispatcher && !this.__disabled) {\r\n if (this.events.isEnabled(\"propertychanged\")) {\r\n var event_8 = {\r\n type: \"propertychanged\",\r\n target: this,\r\n property: \"ignoreMinMax\",\r\n value: value\r\n };\r\n this.events.dispatchImmediately(\"propertychanged\", event_8);\r\n }\r\n }\r\n if (this.component) {\r\n this.component.handleDataItemPropertyChange(this, \"ignoreMinMax\");\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates and starts an [[Animation]] to interpolate (morph) Data Item's\r\n * properties and/or values.\r\n *\r\n * @see {@link Animation}\r\n * @param animationOptions Animation options\r\n * @param duration Animation duration (ms)\r\n * @param easing Easing function\r\n * @return Animation\r\n */\r\n DataItem.prototype.animate = function (animationOptions, duration, easing) {\r\n return new Animation(this, animationOptions, duration, easing).start();\r\n };\r\n /**\r\n * Handles intermediate steps when Data Item is interpolating (morphing) from\r\n * one value to another.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event object\r\n */\r\n DataItem.prototype.handleInterpolationProgress = function (event) {\r\n var animation = event.target;\r\n // it's always only one options, no need cycle\r\n var animationOptions = animation.animationOptions[0];\r\n if (animationOptions) {\r\n if (this._eventDispatcher && !this.__disabled) {\r\n if (this.events.isEnabled(\"workingvaluechanged\")) {\r\n var event_9 = {\r\n type: \"workingvaluechanged\",\r\n target: this,\r\n property: animationOptions.dummyData\r\n };\r\n this.events.dispatchImmediately(\"workingvaluechanged\", event_9);\r\n }\r\n }\r\n if (this.component) {\r\n this.component.handleDataItemWorkingValueChange(this, animationOptions.dummyData);\r\n }\r\n }\r\n };\r\n /**\r\n * Checks whether Data Item has values set for all of the data fields,\r\n * supplied via argument.\r\n *\r\n * @ignore Exclude from docs\r\n * @param fields Field list to check\r\n * @return Has values for all fields?\r\n */\r\n DataItem.prototype.hasValue = function (fields) {\r\n // todo: what about categories?\r\n for (var i = 0, len = fields.length; i < len; i++) {\r\n var values = this.values[fields[i]];\r\n if (!values || !$type.hasValue(values.value)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n Object.defineProperty(DataItem.prototype, \"depth\", {\r\n /**\r\n * Depth of the Data Item.\r\n *\r\n * In nested data structures, like TreeMap, this indicates the level this\r\n * data point is at, in relation to the parent Data Item.\r\n *\r\n * @return Depth\r\n */\r\n get: function () {\r\n if (!this.parent) {\r\n return 0;\r\n }\r\n else {\r\n return this.parent.depth + 1;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataItem.prototype, \"dataContext\", {\r\n /**\r\n * Sets to a reference to an original object from Component's data.\r\n *\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this._dataContext;\r\n },\r\n /**\r\n * A reference to an original object in Component's data, that this Data Item\r\n * is derived from.\r\n *\r\n * @param value Original data object\r\n */\r\n set: function (value) {\r\n this._dataContext = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * adds a sprite to dataItem.sprites array\r\n * @ignore\r\n */\r\n DataItem.prototype.addSprite = function (sprite) {\r\n if (sprite.dataItem && sprite.dataItem != this) {\r\n $array.remove(sprite.dataItem.sprites, sprite);\r\n }\r\n if (!this.visible) {\r\n sprite.hide(0);\r\n }\r\n if (this.isHiding) {\r\n sprite.hide();\r\n }\r\n this.sprites.push(sprite);\r\n sprite.dataItem = this;\r\n };\r\n return DataItem;\r\n}(BaseObjectEvents));\r\nexport { DataItem };\r\n//# sourceMappingURL=DataItem.js.map","/**\r\n * Global options.\r\n */\r\nexport var options = {\r\n verbose: true,\r\n commercialLicense: false,\r\n classNamePrefix: \"amcharts-\",\r\n autoSetClassName: false,\r\n minPolylineStep: 0.5,\r\n onlyShowOnViewport: false,\r\n queue: false,\r\n autoDispose: false,\r\n licenses: [],\r\n suppressErrors: false,\r\n suppressWarnings: false,\r\n animationsEnabled: true,\r\n nonce: \"\",\r\n deferredDelay: 100,\r\n disableHoverOnTransform: \"never\",\r\n pixelPerfectPrecision: 0\r\n};\r\n//# sourceMappingURL=Options.js.map","import { EventDispatcher } from \"./utils/EventDispatcher\";\r\nimport { Dictionary } from \"./utils/Dictionary\";\r\nimport { cache } from \"./utils/Cache\";\r\nimport * as $type from \"./utils/Type\";\r\nimport * as $string from \"./utils/String\";\r\nimport * as $array from \"./utils/Array\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Registry is used to store miscellaneous system-wide information, like ids,\r\n * maps, themes, and registered classes.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nvar Registry = /** @class */ (function () {\r\n function Registry() {\r\n var _this = this;\r\n /**\r\n * Event dispacther.\r\n */\r\n this.events = new EventDispatcher();\r\n /**\r\n * All currently applied themes. All new chart instances created will\r\n * automatically inherit and retain System's themes.\r\n */\r\n this.themes = [];\r\n /**\r\n * List of all loaded available themes.\r\n *\r\n * Whenever a theme loads, it registers itself in System's `loadedThemes`\r\n * collection.\r\n */\r\n this.loadedThemes = {};\r\n /**\r\n * An indeternal counter used to generate unique IDs.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n this._uidCount = 0;\r\n /**\r\n * Keeps register of class references so that they can be instnatiated using\r\n * string key.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n this.registeredClasses = {};\r\n /**\r\n * Holds all generated placeholders.\r\n */\r\n this._placeholders = {};\r\n /**\r\n * A list of invalid(ated) [[Sprite]] objects that need to be re-validated\r\n * during next cycle.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n this.invalidSprites = {};\r\n /**\r\n * Components are added to this list when their data provider changes to\r\n * a new one or data is added/removed from their data provider.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n this.invalidDatas = {};\r\n /**\r\n * Components are added to this list when values of their raw data change.\r\n * Used when we want a smooth animation from one set of values to another.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n this.invalidRawDatas = [];\r\n /**\r\n * Components are added to this list when values of their data changes\r\n * (but not data provider itself).\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n this.invalidDataItems = [];\r\n /**\r\n * Components are added to this list when their data range (selection) is\r\n * changed, e.g. zoomed.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n this.invalidDataRange = [];\r\n /**\r\n * A list of [[Sprite]] objects that have invalid(ated) positions, that need\r\n * to be recalculated.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n this.invalidPositions = {};\r\n /**\r\n * A list of [[Container]] objects with invalid(ated) layouts.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n this.invalidLayouts = {};\r\n /**\r\n * An array holding all active (non-disposed) top level elemens.\r\n *\r\n * When, for example, a new chart is created, its instance will be added to\r\n * this array, and will be removed when the chart is disposed.\r\n */\r\n this.baseSprites = [];\r\n /**\r\n * An UID-based map of base sprites (top-level charts).\r\n */\r\n this.baseSpritesByUid = {};\r\n /**\r\n * Queued charts (waiting for their turn) to initialize.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/performance/#Daisy_chaining_multiple_charts} for more information\r\n */\r\n this.queue = [];\r\n /**\r\n * An array of deferred charts that haven't been created yet.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/performance/#Deferred_daisy_chained_instantiation} for more information\r\n * @since 4.10.0\r\n */\r\n this.deferred = [];\r\n this.uid = this.getUniqueId();\r\n this.invalidSprites.noBase = [];\r\n this.invalidDatas.noBase = [];\r\n this.invalidLayouts.noBase = [];\r\n this.invalidPositions.noBase = [];\r\n // This is needed for Angular Universal SSR\r\n if (typeof addEventListener !== \"undefined\") {\r\n // This is needed to prevent charts from being cut off when printing\r\n addEventListener(\"beforeprint\", function () {\r\n $array.each(_this.baseSprites, function (sprite) {\r\n var svg = sprite.paper.svg;\r\n svg.setAttribute(\"viewBox\", \"0 0 \" + svg.clientWidth + \" \" + svg.clientHeight);\r\n });\r\n });\r\n addEventListener(\"afterprint\", function () {\r\n $array.each(_this.baseSprites, function (sprite) {\r\n var svg = sprite.paper.svg;\r\n svg.removeAttribute(\"viewBox\");\r\n });\r\n });\r\n }\r\n }\r\n /**\r\n * Generates a unique chart system-wide ID.\r\n *\r\n * @return Generated ID\r\n */\r\n Registry.prototype.getUniqueId = function () {\r\n var uid = this._uidCount;\r\n this._uidCount += 1;\r\n return \"id-\" + uid;\r\n };\r\n Object.defineProperty(Registry.prototype, \"map\", {\r\n /**\r\n * Returns a universal collection for mapping ids with objects.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Map collection\r\n */\r\n get: function () {\r\n if (!this._map) {\r\n this._map = new Dictionary();\r\n }\r\n return this._map;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Caches value in object's cache.\r\n *\r\n * @ignore Exclude from docs\r\n * @param key Key\r\n * @param value Value\r\n * @param ttl TTL in seconds\r\n */\r\n Registry.prototype.setCache = function (key, value, ttl) {\r\n cache.set(this.uid, key, value, ttl);\r\n };\r\n /**\r\n * Retrieves cached value.\r\n *\r\n * @ignore Exclude from docs\r\n * @param key Key\r\n * @param value Value to return if cache is not available\r\n * @return Value\r\n */\r\n Registry.prototype.getCache = function (key, value) {\r\n if (value === void 0) { value = undefined; }\r\n return cache.get(this.uid, key, value);\r\n };\r\n /**\r\n * Dispatches an event using own event dispatcher. Will automatically\r\n * populate event data object with event type and target (this element).\r\n * It also checks if there are any handlers registered for this sepecific\r\n * event.\r\n *\r\n * @param eventType Event type (name)\r\n * @param data Data to pass into event handler(s)\r\n */\r\n Registry.prototype.dispatch = function (eventType, data) {\r\n // @todo Implement proper type check\r\n if (this.events.isEnabled(eventType)) {\r\n if (data) {\r\n data.type = eventType;\r\n data.target = data.target || this;\r\n this.events.dispatch(eventType, {\r\n type: eventType,\r\n target: this\r\n });\r\n }\r\n else {\r\n this.events.dispatch(eventType, {\r\n type: eventType,\r\n target: this\r\n });\r\n }\r\n }\r\n };\r\n /**\r\n * Works like `dispatch`, except event is triggered immediately, without\r\n * waiting for the next frame cycle.\r\n *\r\n * @param eventType Event type (name)\r\n * @param data Data to pass into event handler(s)\r\n */\r\n Registry.prototype.dispatchImmediately = function (eventType, data) {\r\n // @todo Implement proper type check\r\n if (this.events.isEnabled(eventType)) {\r\n if (data) {\r\n data.type = eventType;\r\n data.target = data.target || this;\r\n this.events.dispatchImmediately(eventType, data);\r\n }\r\n else {\r\n this.events.dispatchImmediately(eventType, {\r\n type: eventType,\r\n target: this\r\n });\r\n }\r\n }\r\n };\r\n /**\r\n * Returns a unique placeholder suitable for the key.\r\n *\r\n * @param key Key\r\n * @return Random string to be used as placeholder\r\n */\r\n Registry.prototype.getPlaceholder = function (key) {\r\n if ($type.hasValue(this._placeholders[key])) {\r\n return this._placeholders[key];\r\n }\r\n this._placeholders[key] = \"__amcharts_\" + key + \"_\" + $string.random(8) + \"__\";\r\n return this._placeholders[key];\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Registry.prototype.addToInvalidComponents = function (component) {\r\n if (component.baseId) {\r\n $array.move(this.invalidDatas[component.baseId], component);\r\n }\r\n else {\r\n $array.move(this.invalidDatas[\"noBase\"], component);\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Registry.prototype.removeFromInvalidComponents = function (component) {\r\n if (component.baseId) {\r\n $array.remove(this.invalidDatas[component.baseId], component);\r\n }\r\n $array.remove(this.invalidDatas[\"noBase\"], component);\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Registry.prototype.addToInvalidSprites = function (sprite) {\r\n if (sprite.baseId) {\r\n $array.add(this.invalidSprites[sprite.baseId], sprite);\r\n }\r\n else {\r\n $array.add(this.invalidSprites[\"noBase\"], sprite);\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Registry.prototype.removeFromInvalidSprites = function (sprite) {\r\n if (sprite.baseId) {\r\n $array.remove(this.invalidSprites[sprite.baseId], sprite);\r\n }\r\n $array.remove(this.invalidSprites[\"noBase\"], sprite);\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Registry.prototype.addToInvalidPositions = function (sprite) {\r\n if (sprite.baseId) {\r\n $array.add(this.invalidPositions[sprite.baseId], sprite);\r\n }\r\n else {\r\n $array.add(this.invalidPositions[\"noBase\"], sprite);\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Registry.prototype.removeFromInvalidPositions = function (sprite) {\r\n if (sprite.baseId) {\r\n $array.remove(this.invalidPositions[sprite.baseId], sprite);\r\n }\r\n $array.remove(this.invalidPositions[\"noBase\"], sprite);\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Registry.prototype.addToInvalidLayouts = function (sprite) {\r\n if (sprite.baseId) {\r\n $array.add(this.invalidLayouts[sprite.baseId], sprite);\r\n }\r\n else {\r\n $array.add(this.invalidLayouts[\"noBase\"], sprite);\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Registry.prototype.removeFromInvalidLayouts = function (sprite) {\r\n if (sprite.baseId) {\r\n $array.remove(this.invalidLayouts[sprite.baseId], sprite);\r\n }\r\n $array.remove(this.invalidLayouts[\"noBase\"], sprite);\r\n };\r\n return Registry;\r\n}());\r\nexport { Registry };\r\n/**\r\n * A singleton global instance of [[Registry]].\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport var registry = new Registry();\r\n/**\r\n * Returns `true` if object is an instance of the class. It's the same as `instanceof` except it doesn't need to import the class.\r\n *\r\n * @param object Object\r\n * @param name Class name\r\n * @return Is instance of class\r\n */\r\nexport function is(object, name) {\r\n var x = registry.registeredClasses[name];\r\n return x != null && object instanceof x;\r\n}\r\n//# sourceMappingURL=Registry.js.map","/**\r\n * This is the main class that encapsulates every object on the chart.\r\n *\r\n * If it's an element that is to be displayed on the screen at some point, its\r\n * class must extend [[Sprite]] class.\r\n */\r\nimport { __extends, __values } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { SpriteState } from \"./SpriteState\";\r\nimport { SpriteEventDispatcher } from \"./SpriteEvents\";\r\nexport { SpriteEventDispatcher };\r\nimport { BaseObjectEvents } from \"./Base\";\r\nimport { Adapter, globalAdapter } from \"./utils/Adapter\";\r\nimport { Dictionary, DictionaryTemplate, DictionaryDisposer } from \"./utils/Dictionary\";\r\nimport { ListDisposer, List } from \"./utils/List\";\r\nimport { MultiDisposer, Disposer, MutableValueDisposer } from \"./utils/Disposer\";\r\nimport { Animation, AnimationDisposer } from \"./utils/Animation\";\r\nimport { getGhostPaper } from \"./rendering/Paper\";\r\nimport { Container } from \"./Container\";\r\nimport { Pattern } from \"./rendering/fills/Pattern\";\r\nimport { LinearGradient } from \"./rendering/fills/LinearGradient\";\r\nimport { RadialGradient } from \"./rendering/fills/RadialGradient\";\r\nimport { Color, color, toColor } from \"./utils/Color\";\r\nimport { getInteraction } from \"./interaction/Interaction\";\r\nimport { MouseCursorStyle } from \"./interaction/Mouse\";\r\nimport { options } from \"./Options\";\r\nimport { registry } from \"./Registry\";\r\nimport { NumberFormatter } from \"./formatters/NumberFormatter\";\r\nimport { DateFormatter } from \"./formatters/DateFormatter\";\r\nimport { DurationFormatter } from \"./formatters/DurationFormatter\";\r\nimport { getTextFormatter } from \"./formatters/TextFormatter\";\r\nimport { Language } from \"./utils/Language\";\r\nimport { Export } from \"./export/Export\";\r\nimport * as $utils from \"./utils/Utils\";\r\nimport * as $math from \"./utils/Math\";\r\nimport * as $strings from \"./utils/Strings\";\r\nimport * as $array from \"./utils/Array\";\r\nimport * as $object from \"./utils/Object\";\r\nimport * as $type from \"./utils/Type\";\r\nimport * as $iter from \"./utils/Iterator\";\r\nimport { system } from \"./System\";\r\nimport { Percent, percent } from \"./utils/Percent\";\r\n/**\r\n * Defines list ofvisual properties\r\n */\r\nexport var visualProperties = [\"fill\", \"fillOpacity\", \"stroke\", \"strokeOpacity\", \"strokeWidth\", \"strokeDasharray\", \"strokeDashoffset\", \"strokeLinecap\", \"strokeLinejoin\"]; // do not add opacity here, as it is used for showing/hiding\r\n;\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Sprite represents any displayable element.\r\n *\r\n * This is the main class that encapsulates every object on the chart.\r\n *\r\n * If it's an element that is to be displayed on the screen at some point, its\r\n * class must extend [[Sprite]] class.\r\n *\r\n * [[Sprite]] class represents the a hierarchical structure. Every object that\r\n * extends [[Sprite]] can have children, that would inherit their properties,\r\n * such as language, formatters, etc.\r\n *\r\n * @see {@link SpriteState}\r\n * @see {@link ISpriteEvents} for a list of available events\r\n * @see {@link ISpriteAdapters} for a list of available Adapters\r\n *\r\n * @todo Review child elements that need to go into `_disposers`\r\n * @important\r\n */\r\nvar Sprite = /** @class */ (function (_super) {\r\n __extends(Sprite, _super);\r\n /**\r\n * Constructor:\r\n * * Creates initial node\r\n * * Sets default properties\r\n * * Creates required default states\r\n * * Inits accessibility\r\n */\r\n function Sprite() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Holds values for Sprite's properties.\r\n */\r\n _this.properties = {};\r\n /**\r\n * @ignore\r\n */\r\n _this._eventDispatcher = new SpriteEventDispatcher(_this);\r\n /**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n _this._bindings = {};\r\n /**\r\n * Holds indicator if this Sprite is a \"template\" to be used for creating\r\n * other Sprites from and should not be treated as full-fledged element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._isTemplate = false;\r\n _this._isPath = false;\r\n /**\r\n * Holds indicator whether this sprite was already initialized.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._inited = false;\r\n /**\r\n * Holds indicator whether this sprite was already initialized and ready.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._ready = false;\r\n /**\r\n * If `sprite.hide()` is called and we have \"hidden\" state and\r\n * `transitionDuration > 0`, we set `isHiding` flag to `true` in order to\r\n * avoid restarting animations in case `hide()` method is called multiple\r\n * times.\r\n */\r\n _this.isHiding = false;\r\n /**\r\n * If `sprite.hide()` is called, we set isHidden to true when sprite is hidden.\r\n * This was added becaus hidden state might have visibility set to true and so\r\n * there would not be possible to find out if a sprite is technically hidden or not.\r\n */\r\n _this._isHidden = false;\r\n /**\r\n * This property indicates if Sprite is currently being revealed from hidden\r\n * state. This is used to prevent multiple calls to `sprite.show()` to\r\n * restart reveal animation. (if enabled)\r\n */\r\n _this.isShowing = false;\r\n /**\r\n * Indicates if this element is a standalone instance. A \"standalone\r\n * instance\" means this is a autonomous object which maintains its own\r\n * set of controls like Preloader, Export, etc.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this.isStandaloneInstance = false;\r\n /**\r\n * Indicates if togglable Sprite is currently active (toggled on).\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._isActive = false;\r\n /**\r\n * A Sprite element to use as a mask for this Sprite.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._mask = new MutableValueDisposer();\r\n /**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n _this._positionPrecision = 3;\r\n /**\r\n * An instance of [[Language]].\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._language = new MutableValueDisposer();\r\n /**\r\n * Holds [[Export]] object.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._exporting = new MutableValueDisposer();\r\n /**\r\n * Should this Sprite be included when exporting?\r\n */\r\n _this._exportable = true;\r\n /**\r\n * Defines bounding box (square) for this element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._bbox = { x: 0, y: 0, width: 0, height: 0 };\r\n /**\r\n * Indicates if this element is invalid and should be re-validated (redrawn).\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this.invalid = false;\r\n /**\r\n * Indicates if this elements position is invalid and should be repositioned\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this.positionInvalid = false;\r\n /**\r\n * A collection of key/value pairs that can be used to bind specific Sprite\r\n * properties to [[DataItem]].\r\n *\r\n * For example: `fill` property can be bound to `myCustomColor` field in\r\n * DataItem. The Sprite will automatically get the value for `fill` from its\r\n * DataItem.\r\n *\r\n * Can be set for each [[SpriteState]] individually to override default\r\n * bindings.\r\n *\r\n * @see {@link SpriteState}\r\n */\r\n _this.propertyFields = {};\r\n /**\r\n * Specifies if property changes on this object should be propagated to the\r\n * objects cloned from this object.\r\n *\r\n * This setting affects property changes *after* cloning, since at the moment\r\n * of cloning all of properties from source object are copied to the clone\r\n * anyway.\r\n *\r\n * @default false\r\n */\r\n _this.applyOnClones = false;\r\n // unrotated unscaled\r\n _this._measuredWidthSelf = 0;\r\n _this._measuredHeightSelf = 0;\r\n // read only, sprite extreme coordinates\r\n /**\r\n * @ignore\r\n */\r\n _this.maxLeft = 0;\r\n /**\r\n * @ignore\r\n */\r\n _this.maxRight = 0;\r\n /**\r\n * @ignore\r\n */\r\n _this.maxTop = 0;\r\n /**\r\n * @ignore\r\n */\r\n _this.maxBottom = 0;\r\n // not rotated and not scaled\r\n /**\r\n * @ignore\r\n */\r\n _this.maxLeftSelf = 0;\r\n /**\r\n * @ignore\r\n */\r\n _this.maxRightSelf = 0;\r\n /**\r\n * @ignore\r\n */\r\n _this.maxTopSelf = 0;\r\n /**\r\n * @ignore\r\n */\r\n _this.maxBottomSelf = 0;\r\n _this._isDragged = false;\r\n _this._isResized = false;\r\n /**\r\n * @deprecated Moved to [[SpriteProperties]]\r\n */\r\n _this._disabled = false;\r\n _this._internalDisabled = false;\r\n _this._updateDisabled = false;\r\n _this._internalDefaultsApplied = false;\r\n /**\r\n * Time in milliseconds after which rollout event happens when user rolls-out of the sprite. This helps to avoid flickering in some cases.\r\n */\r\n _this.rollOutDelay = 0;\r\n /**\r\n * This flag is set to `true` for the initial sprite you create and place\r\n * to the div so that we could clear all additional\r\n * sprites/containers when this sprite is disposed.\r\n *\r\n * @ignore\r\n */\r\n _this.isBaseSprite = false;\r\n /**\r\n * Indicates whether this sprite should be cloned when cloning its parent\r\n * container. We set this to `false` in those cases when a sprite is created\r\n * by the class, so that when cloning a duplicate sprite would not appear.\r\n */\r\n _this.shouldClone = true;\r\n /**\r\n * A read-only flag which indicates if a sprite has completed its initial\r\n * animation (if `showOnInit = true`).\r\n *\r\n * In case `showOnInit = false`, `appeared` is set to `true` on init.\r\n *\r\n * @readonly\r\n */\r\n _this.appeared = false;\r\n /**\r\n * [ex description]\r\n *\r\n * @todo Description\r\n * @ignore\r\n */\r\n _this.ex = 0;\r\n /**\r\n * [ey description]\r\n *\r\n * @todo Description\r\n * @ignore\r\n */\r\n _this.ey = 0;\r\n /**\r\n * Indicates if the sprite can be moved around when resizing it with two fingers (will only work if draggable = false)\r\n * @ignore\r\n */\r\n _this.dragWhileResize = false;\r\n /**\r\n * @ignore\r\n */\r\n _this.measureFailed = false;\r\n /**\r\n * If this flag is set to true, calling show() will not reveal the sprite.\r\n *\r\n * @ignore\r\n */\r\n _this.preventShow = false;\r\n /**\r\n * When cloning a sprite, if the template has it's own tooltip assigned, this tooltip is also cloned by default.\r\n * This is not good for cpu and sometimes you might only need one single tooltip for all clones. Set this to false in order not to clone tooltip.\r\n */\r\n _this.cloneTooltip = true;\r\n _this.className = \"Sprite\";\r\n _this._disposers.push(_this._eventDispatcher);\r\n // Generate a unique ID\r\n $utils.used(_this.uid);\r\n // Create SVG group to hold everything in\r\n _this.group = _this.paper.addGroup(\"g\");\r\n // Set defaults\r\n // it is better to set defauls like this in order to save invaliation calls and events\r\n _this.setPropertyValue(\"scale\", 1);\r\n _this.setPropertyValue(\"rotation\", 0);\r\n _this.setPropertyValue(\"align\", \"none\");\r\n _this.setPropertyValue(\"valign\", \"none\");\r\n _this.setPropertyValue(\"pixelPerfect\", false);\r\n _this.setPropertyValue(\"visible\", true);\r\n _this.setPropertyValue(\"tooltipPosition\", \"fixed\");\r\n _this.setPropertyValue(\"verticalCenter\", \"none\");\r\n _this.setPropertyValue(\"horizontalCenter\", \"none\");\r\n _this.setPropertyValue(\"tooltipX\", percent(50));\r\n _this.setPropertyValue(\"tooltipX\", percent(50));\r\n _this.setPropertyValue(\"marginTop\", 0);\r\n _this.setPropertyValue(\"marginBottom\", 0);\r\n _this.setPropertyValue(\"marginLeft\", 0);\r\n _this.setPropertyValue(\"marginRight\", 0);\r\n _this.setPropertyValue(\"dx\", 0);\r\n _this.setPropertyValue(\"dy\", 0);\r\n _this.setPropertyValue(\"paddingTop\", 0);\r\n _this.setPropertyValue(\"paddingBottom\", 0);\r\n _this.setPropertyValue(\"paddingRight\", 0);\r\n _this.setPropertyValue(\"paddingLeft\", 0);\r\n _this.setPropertyValue(\"togglable\", false);\r\n _this.setPropertyValue(\"hidden\", false);\r\n _this.setPropertyValue(\"urlTarget\", \"_self\");\r\n _this.setPropertyValue(\"alwaysShowTooltip\", false);\r\n _this.setPropertyValue(\"showTooltipOn\", \"hover\");\r\n _this._prevMeasuredWidth = 0;\r\n _this._prevMeasuredHeight = 0;\r\n _this._measuredWidth = 0;\r\n _this._measuredHeight = 0;\r\n _this._isMeasured = true;\r\n // Invalidate the Sprite so that renderer knows it needs to be drawn\r\n _this.invalidate();\r\n //this.states.create(\"default\").properties.opacity = 1;\r\n // Apply the theme\r\n _this.applyTheme();\r\n //this._disposers.push(this._clickable);\r\n // Decorate adapter with events so that we can apply its settings whenever\r\n // it is modified\r\n // @todo Think what to do here. We can't just apply the adapter value to\r\n // property since not all of those are for properties. Commented out for\r\n // now.\r\n /*this.adapter.events.on(\"inserted\", (ev: any) => {\r\n (this)[ev.newValue.key] = (this)[ev.newValue.key];\r\n });\r\n this.adapter.events.on(\"removed\", (ev: any) => {\r\n (this)[ev.newValue.key] = (this)[ev.newValue.key];\r\n });*/\r\n // Add disposable dependencies to `_disposers` so they are automatically\r\n // disposed of when this object is disposed\r\n _this._disposers.push(_this.events);\r\n _this._disposers.push(_this.group);\r\n _this._disposers.push(_this._mask);\r\n _this._disposers.push(_this._language);\r\n _this._disposers.push(_this._exporting);\r\n //this._disposers.push(this._parent);\r\n //this._disposers.push(this._modal);\r\n _this._disposers.push(new Disposer(function () {\r\n $object.each(_this._bindings, function (key, value) {\r\n value.dispose();\r\n });\r\n }));\r\n _this.setPropertyValue(\"interactionsEnabled\", true);\r\n return _this;\r\n }\r\n Object.defineProperty(Sprite.prototype, \"events\", {\r\n /**\r\n * Event dispatcher.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/event-listeners/} for more info about Events\r\n */\r\n get: function () {\r\n return this._eventDispatcher;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"adapter\", {\r\n /**\r\n * Holds Adapter.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/adapters/} for more info about Adapters\r\n */\r\n get: function () {\r\n if (!this._adapterO) {\r\n this._adapterO = new Adapter(this);\r\n }\r\n return this._adapterO;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * ==========================================================================\r\n * ELEMENT VALIDATION, INIT, AND DRAWING STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Applies properties from all assigned themes.\r\n *\r\n * We do this here so that we can apply class names as well.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.applyTheme = function () {\r\n _super.prototype.applyTheme.call(this);\r\n if (options.autoSetClassName) {\r\n this.setClassName();\r\n }\r\n };\r\n /**\r\n * Returns theme(s) used by this object either set explicitly on this\r\n * element, inherited from parent, or inherited from [[System]].\r\n *\r\n * @return An array of theme references\r\n */\r\n Sprite.prototype.getCurrentThemes = function () {\r\n var themes = this._themes;\r\n if (themes) {\r\n return themes;\r\n }\r\n else {\r\n var parent_1 = this._parent;\r\n if (parent_1) {\r\n return parent_1.getCurrentThemes();\r\n }\r\n else {\r\n return registry.themes;\r\n }\r\n }\r\n };\r\n /**\r\n * Called just before element's validation, this function allows setting\r\n * defaults.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.applyInternalDefaults = function () {\r\n // Nothing here, but extending classes might override this function\r\n // so that they can set their defaults\r\n this._internalDefaultsApplied = true;\r\n };\r\n /**\r\n * Invalidates element.\r\n *\r\n * Object will be redrawn during the next update cycle.\r\n *\r\n * Please note that in most cases elements will auto-invalidate when needed. If\r\n * everything works, DO NOT use this method. Use it only if some changes do\r\n * not take otherwise.\r\n */\r\n Sprite.prototype.invalidate = function () {\r\n if (this.disabled || this._isTemplate || this.__disabled) {\r\n return;\r\n }\r\n // We no longer reset this on each invalidate, so that they are applied\r\n // only once, and do not overwrite user-defined settings\r\n //this._internalDefaultsApplied = false;\r\n if (!this.invalid) {\r\n this.invalid = true;\r\n registry.addToInvalidSprites(this);\r\n system.requestFrame();\r\n }\r\n };\r\n /**\r\n * Validates element:\r\n * * Triggers events\r\n * * Redraws the element\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.validate = function () {\r\n this.dispatchImmediately(\"beforevalidated\");\r\n // prevents from drawing if topparent is 0x0\r\n /*\r\n let topParent = this.topParent;\r\n\r\n if (topParent) {\r\n if (!topParent.maxWidth || !topParent.maxHeight) {\r\n this._disposers.push(topParent.events.once(\"maxsizechanged\", this.invalidate, this));\r\n }\r\n }*/\r\n // Set internal defaults\r\n if (!this._internalDefaultsApplied) {\r\n this.applyInternalDefaults();\r\n }\r\n this.beforeDraw();\r\n this.draw();\r\n this.invalid = false;\r\n registry.removeFromInvalidSprites(this);\r\n this.afterDraw();\r\n };\r\n /**\r\n * Invalidates element's position.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.invalidatePosition = function () {\r\n if (this.disabled || this._isTemplate) {\r\n return;\r\n }\r\n if (!this.positionInvalid) {\r\n this.positionInvalid = true;\r\n registry.addToInvalidPositions(this);\r\n system.requestFrame();\r\n }\r\n };\r\n /**\r\n * Transforms the element.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.validatePosition = function () {\r\n var pixelX = this.pixelX;\r\n var pixelY = this.pixelY;\r\n var dx = this.dx;\r\n var dy = this.dy;\r\n var x = pixelX + dx;\r\n var y = pixelY + dy;\r\n if (this._updateDisabled) {\r\n if (this._internalDisabled) {\r\n this.group.attr({ \"display\": \"none\" });\r\n }\r\n else {\r\n if (!this.disabled) {\r\n this.removeSVGAttribute(\"display\");\r\n }\r\n }\r\n this._updateDisabled = false;\r\n }\r\n var sizeChanged = this.measure();\r\n //if (!this.invalid) {\r\n var prevGroupTransform = this.group.transformString;\r\n this.group.moveTo({ x: x, y: y });\r\n this.group.rotation = this.rotation;\r\n if (this.nonScaling) {\r\n this.group.scale = this.scale / this.globalScale;\r\n }\r\n else {\r\n this.group.scale = this.scale;\r\n }\r\n if (prevGroupTransform != this.group.transformString || sizeChanged) {\r\n // not yet sure, this is to avoid many transforms=>container layout invalidation on initial buid\r\n if (prevGroupTransform == null) {\r\n this.dispatch(\"transformed\");\r\n }\r\n else {\r\n this.dispatchImmediately(\"transformed\");\r\n }\r\n // TODO clear existing positionchanged dispatches ?\r\n this.dispatch(\"positionchanged\");\r\n if (this.showTooltipOn == \"hit\" || this.showTooltipOn == \"always\") {\r\n this.updateTooltipPosition();\r\n }\r\n }\r\n //}\r\n // it might happen that x and y changed again, so we only remove if they didn't\r\n if (pixelX + dx == x && pixelY + dy == y) {\r\n registry.removeFromInvalidPositions(this);\r\n this.positionInvalid = false;\r\n }\r\n var maskRectangle = this._maskRectangle;\r\n // todo: verify this\r\n if (maskRectangle) {\r\n this._clipElement.moveTo({ x: maskRectangle.x - pixelX, y: maskRectangle.y - pixelY });\r\n }\r\n };\r\n /**\r\n * A placeholder method that is called **before** element begins to be drawn.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.beforeDraw = function () {\r\n };\r\n /**\r\n * A placeholder method that draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.draw = function () {\r\n };\r\n /**\r\n * A placeholder method that is called **after** element finishes drawing\r\n * itself.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.afterDraw = function () {\r\n var e_1, _a;\r\n if (this.isMeasured || this.horizontalCenter !== \"none\" || this.verticalCenter !== \"none\") {\r\n this.measureElement();\r\n }\r\n //this.applyMask();\r\n if (!this._inited) {\r\n if (this._adapterO) {\r\n try {\r\n // used to be applySVGAttrbutes here, this is more efficient\r\n for (var _b = __values(this._adapterO.keys()), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var key = _c.value;\r\n switch (key) {\r\n case \"mask\":\r\n case \"fill\":\r\n case \"opacity\":\r\n case \"fillOpacity\":\r\n case \"stroke\":\r\n case \"strokeOpacity\":\r\n case \"strokeWidth\":\r\n case \"shapeRendering\":\r\n case \"strokeDasharray\":\r\n case \"strokeDashoffset\":\r\n case \"strokeLinecap\":\r\n case \"strokeLinejoin\":\r\n case \"textDecoration\":\r\n case \"fontSize\":\r\n case \"fontFamily\":\r\n case \"fontWeight\":\r\n //case \"focusable\":\r\n //case \"tabindex\":\r\n //case \"role\":\r\n this[key] = this[key];\r\n break;\r\n }\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n }\r\n this.applyFilters();\r\n this.visible = this.visible;\r\n this.interactionsEnabled = this.getPropertyValue(\"interactionsEnabled\"); // can't use .interactionsEnabled as it get's parent's\r\n this._inited = true;\r\n if (!this.showOnInit) {\r\n this.appeared = true;\r\n }\r\n if (this.hidden) {\r\n this.hide(0);\r\n }\r\n this.applyMask();\r\n this.dispatch(\"validated\");\r\n this.dispatch(\"inited\");\r\n this.dispatchReady();\r\n }\r\n else {\r\n this.dispatch(\"validated\");\r\n }\r\n if (this.showTooltipOn == \"always\") {\r\n if (this.visible && !this.disabled && !this.__disabled) {\r\n this.showTooltip();\r\n }\r\n else {\r\n this.hideTooltip(0);\r\n }\r\n }\r\n };\r\n /**\r\n * Dispatches `\"ready\"` event. Sprite dispatches it right after `\"inited\"` event.\r\n *\r\n * @ignore\r\n */\r\n Sprite.prototype.dispatchReady = function () {\r\n if (!this.isReady()) {\r\n this._ready = true;\r\n this.dispatch(\"ready\");\r\n }\r\n };\r\n /**\r\n * Triggers a re-initialization of this element.\r\n *\r\n * Will result in complete redrawing of the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.reinit = function () {\r\n this._inited = false;\r\n this.setState(this.defaultState);\r\n this.invalidate();\r\n };\r\n /**\r\n * Handles the situation where parent element is resized.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.handleGlobalScale = function () {\r\n this.dispatch(\"globalscalechanged\");\r\n if (this.nonScalingStroke) {\r\n this.strokeWidth = this.strokeWidth;\r\n }\r\n if (this.nonScaling) {\r\n this.validatePosition();\r\n }\r\n this.updateFilterScale();\r\n };\r\n /**\r\n * Updates filter properties which might depend on scale\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.updateFilterScale = function () {\r\n var _this = this;\r\n $iter.each(this.filters.iterator(), function (filter) {\r\n filter.scale = _this.globalScale;\r\n });\r\n };\r\n /**\r\n * Removes itself from system's invalid lists.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.removeFromInvalids = function () {\r\n registry.removeFromInvalidSprites(this);\r\n registry.removeFromInvalidPositions(this);\r\n };\r\n /**\r\n * Copies all parameters from another [[Sprite]].\r\n *\r\n * @param source Source Sprite\r\n */\r\n Sprite.prototype.copyFrom = function (source) {\r\n var _this = this;\r\n _super.prototype.copyFrom.call(this, source);\r\n this.isMeasured = source.isMeasured;\r\n this.states.copyFrom(source.states);\r\n if (source.filters.length > 0) {\r\n source.filters.each(function (filter) {\r\n _this.filters.push(filter.clone());\r\n });\r\n }\r\n if (source._adapterO) {\r\n this.adapter.copyFrom(source._adapterO);\r\n }\r\n //helps to avoid calling getter which creates instance\r\n if (source[\"_interaction\"]) {\r\n this.interactions.copyFrom(source.interactions);\r\n }\r\n if (source[\"_plugins\"]) {\r\n this.plugins.copyFrom(source.plugins);\r\n }\r\n this.configField = source.configField;\r\n this.applyOnClones = source.applyOnClones;\r\n // this.numberFormatter = source.numberFormatter; // todo: this creates loose number formatter and copies it to all clones. somehow we need to know if source had numberFormatter explicitly created and not just because a getter was called.\r\n //this.mask = source.mask; need to think about this, generally this causes a lot of problems\r\n this.disabled = source.disabled;\r\n this.virtualParent = source.virtualParent;\r\n this.exportable = source.exportable;\r\n //@todo: create tooltip if it's on source but not on this?\r\n //const tooltip = this._tooltip;\r\n //if (tooltip) {\r\n //\ttooltip.copyFrom(source.tooltip);\r\n //}\r\n if (source._tooltip) {\r\n if (this._tooltip) {\r\n this._tooltip.copyFrom(source.tooltip);\r\n }\r\n else {\r\n if (source.cloneTooltip) {\r\n this.tooltip = source.tooltip.clone();\r\n }\r\n else {\r\n this._tooltip = source.tooltip;\r\n }\r\n }\r\n }\r\n //if ((source)[\"_tooltip\"] && !this._tooltip) {\r\n //\tthis._tooltip = (source)[\"_tooltip\"];\r\n //}\r\n this._showSystemTooltip = source.showSystemTooltip;\r\n $utils.copyProperties(source.propertyFields, this.propertyFields);\r\n $utils.copyProperties(source.properties, this);\r\n if (source.fillModifier) {\r\n this.fillModifier = source.fillModifier.clone();\r\n }\r\n if (source.strokeModifier) {\r\n this.strokeModifier = source.strokeModifier.clone();\r\n }\r\n };\r\n /**\r\n * Destroys this object and all related data.\r\n */\r\n Sprite.prototype.dispose = function () {\r\n if (!this.isDisposed()) {\r\n if (this.showTooltipOn == \"always\" && this.tooltip) {\r\n this.tooltip.hide();\r\n }\r\n this.dispatchImmediately(\"beforedisposed\");\r\n if (this.isBaseSprite) {\r\n if (this.htmlContainer) {\r\n while (this.htmlContainer.childNodes.length > 0) {\r\n this.htmlContainer.removeChild(this.htmlContainer.firstChild);\r\n }\r\n }\r\n this.isBaseSprite = false;\r\n }\r\n _super.prototype.dispose.call(this);\r\n // Clear adapters\r\n if (this._adapterO) {\r\n this._adapterO.clear();\r\n }\r\n if (this.applyOnClones) {\r\n if (this._clones) {\r\n for (var i = this._clones.length - 1; i >= 0; i--) {\r\n var clone = this._clones.getIndex(i);\r\n clone.dispose();\r\n }\r\n }\r\n }\r\n if (this._svgContainer) {\r\n this._svgContainer.dispose();\r\n }\r\n if (this._interactionDisposer) {\r\n this._interactionDisposer.dispose();\r\n this._interactionDisposer = undefined;\r\n }\r\n if (this._urlDisposer) {\r\n this._urlDisposer.dispose();\r\n }\r\n this.removeFromInvalids();\r\n if (this.element) {\r\n this.element.dispose();\r\n }\r\n if (this.group) {\r\n this.group.dispose();\r\n }\r\n if (this._numberFormatter) {\r\n this._numberFormatter.dispose();\r\n }\r\n if (this._focusFilter) {\r\n this._focusFilter.dispose();\r\n }\r\n var stroke = this.stroke;\r\n if (stroke && !(stroke instanceof Color) && stroke.dispose) {\r\n if (this.clonedFrom && this.clonedFrom.stroke == stroke) {\r\n // do nothing\r\n }\r\n else {\r\n stroke.dispose();\r\n }\r\n }\r\n // TODO a bit hacky\r\n var fill = this.fill;\r\n if (fill && !(fill instanceof Color) && fill.dispose) {\r\n if (this.clonedFrom && this.clonedFrom.fill == fill) {\r\n // do nothing\r\n }\r\n else {\r\n fill.dispose();\r\n }\r\n }\r\n // remove from map\r\n if ($type.hasValue(this.id)) {\r\n this.map.removeKey(this.id);\r\n }\r\n this.parent = undefined;\r\n if (this._filters) {\r\n while (this._filters.length > 0) {\r\n var filter = this._filters.getIndex(0);\r\n filter.dispose();\r\n this._filters.removeValue(filter);\r\n }\r\n }\r\n this._alwaysShowDisposers = undefined;\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"isTemplate\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Is template?\r\n */\r\n get: function () {\r\n return this._isTemplate;\r\n },\r\n /**\r\n * Indicates if this element is a \"template\".\r\n *\r\n * Template Sprites act only as a holders for config for other \"real\"\r\n * elements to be cloned from.\r\n *\r\n * Templates are treated differently, as they are not validated, redrawn, or\r\n * otherwise are processed.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Is template?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (this._isTemplate != value) {\r\n this._isTemplate = value;\r\n if (this instanceof Container) {\r\n $iter.each(this.children.iterator(), function (child) {\r\n child.isTemplate = value;\r\n });\r\n }\r\n if (value) {\r\n this.parent = this._parent;\r\n this.removeFromInvalids();\r\n }\r\n else {\r\n this.invalidate();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"showSystemTooltip\", {\r\n /**\r\n * @return Show system tooltip?\r\n */\r\n get: function () {\r\n if (!$type.hasValue(this._showSystemTooltip)) {\r\n if (this.virtualParent) {\r\n return this.virtualParent.showSystemTooltip;\r\n }\r\n else if (this._parent) {\r\n return this._parent.showSystemTooltip;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n return this._showSystemTooltip;\r\n },\r\n /**\r\n * Indicates whether the element should attempt to construct itself in a way\r\n * so that system tooltip is shown if its `readerTitle` is set.\r\n *\r\n * @param value Show system tooltip?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (this._showSystemTooltip != value) {\r\n this._showSystemTooltip = value;\r\n this.applyAccessibility();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"topParent\", {\r\n /**\r\n * ==========================================================================\r\n * HIERARCHY AND STRUCTURE RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Sprites's top-level [[Container]].\r\n *\r\n * Please note that in most cases it won't be the chart element.\r\n *\r\n * To access base chart element, use `baseSprite` instead.\r\n *\r\n * @return Top-level ascendant\r\n */\r\n get: function () {\r\n if (this._topParent) {\r\n return this._topParent;\r\n }\r\n else {\r\n if (this._parent) {\r\n return this._parent.topParent;\r\n }\r\n }\r\n },\r\n /**\r\n * @ignore\r\n * @param value {Container} top parent of a sprite\r\n */\r\n set: function (value) {\r\n this._topParent = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"parent\", {\r\n /**\r\n * @return Parent container\r\n */\r\n get: function () {\r\n return this._parent;\r\n },\r\n /**\r\n * Elements' parent [[Container]].\r\n *\r\n * @param parent Parent container\r\n */\r\n set: function (parent) {\r\n if (this._isTemplate) {\r\n return;\r\n }\r\n // TODO is this needed ?\r\n $utils.used(this.paper);\r\n var oldParent = this._parent;\r\n if (oldParent != parent) {\r\n if (oldParent) {\r\n oldParent.children.removeValue(this);\r\n }\r\n this._parent = parent;\r\n if (parent) {\r\n this.topParent = parent.topParent;\r\n if (parent.isTemplate) {\r\n this.isTemplate = true;\r\n }\r\n this.baseId = parent.baseId;\r\n parent.children.push(this);\r\n // insert handler at Container invalidates + invalidatesLayout + adds to group\r\n if (this._tooltip && !this._tooltipContainer) {\r\n this._tooltip.parent = parent.tooltipContainer;\r\n }\r\n if (!this._dataItem) {\r\n this.dataItem = parent.dataItem;\r\n }\r\n this.handleAlwaysShowTooltip();\r\n if (this.dataItem) {\r\n // No need to apply accessibility if there's no data item\r\n // The whole reason of applying it here is to populate data\r\n // placesholders, and if tehre's no data item, it won't work anyway\r\n this.applyAccessibility();\r\n }\r\n this.dispatchImmediately(\"parentset\");\r\n }\r\n else {\r\n this.topParent = undefined;\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n Sprite.prototype.handleAlwaysShow = function () {\r\n this.showTooltip();\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Sprite.prototype.handleAlwaysShowTooltip = function () {\r\n var sprite = this;\r\n var oldDisposers = this._alwaysShowDisposers;\r\n if (oldDisposers) {\r\n $array.each(oldDisposers, function (oldDisposer) {\r\n oldDisposer.dispose();\r\n });\r\n }\r\n this._alwaysShowDisposers = [];\r\n if (this.showTooltipOn == \"always\") {\r\n while (sprite != undefined) {\r\n var disposer = sprite.events.on(\"visibilitychanged\", this.handleAlwaysShow, this, false);\r\n this.addDisposer(disposer);\r\n this._alwaysShowDisposers.push(disposer);\r\n sprite = sprite.parent;\r\n }\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"virtualParent\", {\r\n /**\r\n * @return Virtual parent\r\n */\r\n get: function () {\r\n return this._virtualParent;\r\n },\r\n /**\r\n * Element's \"virtual\" parent.\r\n *\r\n * This is required in ordere to maintain proper inheritance (like\r\n * formatters).\r\n *\r\n * Sometimes an element is a \"logical\" parent, even though it's not a direct\r\n * ascendant.\r\n *\r\n * Example: a bullet is not a child of the axis, but it would make sense\r\n * for it to inherit series' formatters.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Virtual parent\r\n */\r\n set: function (value) {\r\n this._virtualParent = value;\r\n if (this.dataItem) {\r\n // No need to apply accessibility if there's no data item\r\n // The whole reason of applying it here is to populate data\r\n // placesholders, and if tehre's no data item, it won't work anyway\r\n this.applyAccessibility();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Moves `` to correct place in DOM.\r\n *\r\n * Some elements are initially created in \"ghost\" container. When moving\r\n * those into proper place in DOM, their respective `` need to be moved\r\n * as well.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.appendDefs = function () {\r\n if (this.filterElement) {\r\n this.paper.appendDef(this.filterElement);\r\n }\r\n var fill = this.fill;\r\n if (fill && fill.element) {\r\n this.paper.appendDef(fill.element);\r\n }\r\n var stroke = this.stroke;\r\n if (stroke && stroke.element) {\r\n this.paper.appendDef(stroke.element);\r\n }\r\n if (this.fillModifier && this.fill instanceof Color) {\r\n var fill_1 = this.fillModifier.modify(this.fill);\r\n if (fill_1 && fill_1.element) {\r\n this.paper.appendDef(fill_1.element);\r\n }\r\n }\r\n if (this.strokeModifier && this.stroke instanceof Color) {\r\n var stroke_1 = this.strokeModifier.modify(this.stroke);\r\n if (stroke_1 && stroke_1.element) {\r\n this.paper.appendDef(stroke_1.element);\r\n }\r\n }\r\n if (this._clipPath) {\r\n this.paper.appendDef(this._clipPath);\r\n }\r\n if (this._exportable === false) {\r\n this.exportable = false;\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"map\", {\r\n /**\r\n * Returns a [[Dictionary]] which maps object ids with their respective\r\n * objects.\r\n *\r\n * Can be used to retrieve any object by id, e.g.:\r\n *\r\n * ```TypeScript\r\n * console.log(mySprite.map.getKey(\"myid\"));\r\n * ```\r\n * ```JavaScript\r\n * console.log(mySprite.map.getKey(\"myid\"));\r\n * ```\r\n *\r\n * @return Map collection\r\n */\r\n get: function () {\r\n var top = this.topParent;\r\n if (top) {\r\n return top.map;\r\n }\r\n else if (!this._map) {\r\n this._map = new Dictionary();\r\n }\r\n return this._map;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"delayedMap\", {\r\n /**\r\n * @ignore\r\n * @return Map collection\r\n */\r\n get: function () {\r\n var top = this.topParent;\r\n if (top) {\r\n return top.delayedMap;\r\n }\r\n else if (!this._delayedMap) {\r\n this._delayedMap = new Dictionary();\r\n }\r\n return this._delayedMap;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"id\", {\r\n /**\r\n * @return ID\r\n */\r\n get: function () {\r\n return this._id;\r\n },\r\n /**\r\n * Element's user-defined ID.\r\n *\r\n * Will throw an Error if there already is an object with the same ID.\r\n *\r\n * Please note that above check will be performed withing the scope of the\r\n * current chart instance. It will not do checks across other chart instances\r\n * or in globally in DOM.\r\n *\r\n * Make sure the IDs are unique.\r\n *\r\n * @param value ID\r\n */\r\n set: function (value) {\r\n if (this._id != value) {\r\n this._id = value;\r\n if (this.map.hasKey(value)) {\r\n throw Error(\"Duplicate id (\" + value + \") used on multiple objects.\");\r\n }\r\n else {\r\n this.map.setKey(value, this);\r\n }\r\n if (options.autoSetClassName) {\r\n this.setClassName();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"dom\", {\r\n /**\r\n * ==========================================================================\r\n * ELEMENT AND DOM TREE MANIPULATION AND MEASURING\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Returns DOM element reference associated with this element.\r\n *\r\n * @readonly\r\n * @return DOM element\r\n */\r\n get: function () {\r\n return this.group.node;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"paper\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Paper\r\n */\r\n get: function () {\r\n if (this._paper) {\r\n return this._paper;\r\n }\r\n else {\r\n var parent_2 = this._parent;\r\n if (parent_2) {\r\n return parent_2.paper;\r\n }\r\n }\r\n return getGhostPaper();\r\n },\r\n /**\r\n * A [[Paper]] instance to place elements on.\r\n *\r\n * If there's no Paper set for this element, it goes up the ascendant tree\r\n * until it finds one.\r\n *\r\n * This method is used by important `addChild()` method, so it's essential\r\n * to have a [[Paper]] instance.\r\n *\r\n * If this element has a separate `htmlContainer` set, it will have a\r\n * [[Paper]] instance itself.\r\n *\r\n * @ignore Exclude from docs\r\n * @param paper Paper\r\n */\r\n set: function (paper) {\r\n this.setPaper(paper);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets [[Paper]] instance to use to draw elements.\r\n * @ignore\r\n * @param paper Paper\r\n * @return true if paper was changed, false, if it's the same\r\n */\r\n Sprite.prototype.setPaper = function (paper) {\r\n var oldPaper = this._paper;\r\n if (oldPaper != paper) {\r\n this._paper = paper;\r\n this.appendDefs();\r\n return true;\r\n }\r\n return false;\r\n };\r\n Object.defineProperty(Sprite.prototype, \"htmlContainer\", {\r\n /**\r\n * @return HTML element\r\n */\r\n get: function () {\r\n if (this._htmlContainer) {\r\n return this._htmlContainer;\r\n }\r\n else {\r\n var parent_3 = this._parent;\r\n if (parent_3) {\r\n return parent_3.htmlContainer;\r\n }\r\n }\r\n },\r\n /**\r\n * An HTML element to be used when placing wrapper element (`
`)\r\n * for the whole chart.\r\n *\r\n * This is the same for **all** elements within the same chart.\r\n *\r\n * @param htmlContainer HTML element\r\n */\r\n set: function (htmlContainer) {\r\n this._htmlContainer = htmlContainer;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"titleElement\", {\r\n /**\r\n * Creates (if not yet created) and returns element's `` element.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Title element\r\n */\r\n get: function () {\r\n if (!this._titleElement) {\r\n this._titleElement = this.paper.add(\"title\");\r\n this.group.add(this._titleElement);\r\n }\r\n return this._titleElement;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"descriptionElement\", {\r\n /**\r\n * Creates (if not yet created) and returns element's `<desc>` element.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Desc element\r\n */\r\n get: function () {\r\n if (!this._descriptionElement) {\r\n this._descriptionElement = this.paper.add(\"desc\");\r\n this.group.add(this._descriptionElement);\r\n }\r\n return this._descriptionElement;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"filters\", {\r\n /**\r\n * Returns list of SVG filters (effects) applied to element. If the filter\r\n * list is not yet initilized, creates and returns an empty one.\r\n * Note, not all filters combine well with one another. We recommend using one filter per sprite.\r\n *\r\n * @return List of filters\r\n */\r\n get: function () {\r\n if (!this._filters) {\r\n this._filters = new List();\r\n // TODO only add certain events ?\r\n this._disposers.push(this._filters.events.onAll(this.applyFilters, this));\r\n this._disposers.push(new ListDisposer(this._filters));\r\n }\r\n return this._filters;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets required SVG attributes. Must be called every time an element is\r\n * redrawn so that attributes are (re)applied.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.setSVGAttributes = function () {\r\n this.fill = this.fill;\r\n this.opacity = this.opacity;\r\n this.fillOpacity = this.fillOpacity;\r\n this.stroke = this.stroke;\r\n this.strokeOpacity = this.strokeOpacity;\r\n this.shapeRendering = this.shapeRendering;\r\n this.strokeDasharray = this.strokeDasharray;\r\n this.strokeDashoffset = this.strokeDashoffset;\r\n this.strokeLinecap = this.strokeLinecap;\r\n this.strokeLinejoin = this.strokeLinejoin;\r\n this.focusable = this.focusable;\r\n this.tabindex = this.tabindex;\r\n this.role = this.role;\r\n };\r\n /**\r\n * Sets an attribute directly on an SVG element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param attribute Attribute object\r\n */\r\n Sprite.prototype.setSVGAttribute = function (attribute) {\r\n this.group.attr(attribute);\r\n };\r\n /**\r\n * Removes an attribute directly from SVG element.\r\n *\r\n * @param attribute Attribute key to remove\r\n */\r\n Sprite.prototype.removeSVGAttribute = function (attribute) {\r\n this.group.removeAttr(attribute);\r\n };\r\n /**\r\n * Sets `class` attribute of the elements SVG node.\r\n *\r\n * Uses `am4core.options.classNamePrefix`.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.setClassName = function () {\r\n var className = this.className;\r\n var classNamePrefix = options.classNamePrefix;\r\n if (this.element) {\r\n this.element.addClass(classNamePrefix + className);\r\n }\r\n this.group.addClass(classNamePrefix + className + \"-group\");\r\n if ($type.hasValue(this.id)) {\r\n this.group.addClass(classNamePrefix + this.id);\r\n }\r\n if (this.userClassName) {\r\n this.group.addClass(this.userClassName);\r\n }\r\n };\r\n /**\r\n * Adds an `id` attribute the the element and returns the id.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Element's ID\r\n */\r\n Sprite.prototype.uidAttr = function () {\r\n this.setSVGAttribute({ \"id\": this.uid });\r\n return this.uid;\r\n };\r\n /**\r\n * [updateClipPath description]\r\n *\r\n * @todo Description\r\n */\r\n Sprite.prototype.updateClipPath = function () {\r\n var element = this._clipElement;\r\n if (element) {\r\n element.moveTo({ x: this.mask.pixelX, y: this.mask.pixelY });\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Sprite.prototype.createClipPath = function () {\r\n if (!this._clipPath) {\r\n this._clipPath = this.paper.addGroup(\"clipPath\");\r\n this.paper.appendDef(this._clipPath);\r\n this._disposers.push(this._clipPath);\r\n var id = registry.getUniqueId();\r\n this._clipPath.attr({ \"id\": id });\r\n this.group.attr({ \"clip-path\": \"url(\\\"\" + $utils.getBaseURI() + id + \"\\\")\" });\r\n }\r\n };\r\n /**\r\n * Applies the mask Sprite.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.applyMask = function () {\r\n var mask = this.mask;\r\n if (this._clipPath && mask) {\r\n // Container\r\n if (mask instanceof Container) {\r\n this._clipElement.attr({ \"width\": $math.max(0, mask.pixelWidth), \"height\": $math.max(0, mask.pixelHeight) });\r\n var point = $utils.spritePointToSprite({ x: mask.pixelX, y: mask.pixelY }, mask.parent, this);\r\n this._clipPath.x = point.x;\r\n this._clipPath.y = point.y;\r\n }\r\n // Sprite\r\n else {\r\n if (mask.element && mask.element != this._clipElement) {\r\n this._clipElement = mask.element;\r\n this._clipPath.add(this._clipElement);\r\n }\r\n this._clipPath.scale = mask.scale;\r\n this._clipPath.x = mask.pixelX;\r\n this._clipPath.y = mask.pixelY;\r\n this._clipPath.rotation = mask.rotation;\r\n }\r\n }\r\n };\r\n /**\r\n * Applies filters to the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.applyFilters = function () {\r\n var _this = this;\r\n // we create a separate filter for each sprite as otherwise it would be impossible to animate filter.\r\n // svg doesn't support multiple filters applied to one element, so we put all the primitives to one filterElement of a sprite.\r\n if (this._filters && this._filters.length > 0) {\r\n var width_1 = 100;\r\n var height_1 = 100;\r\n if (!this.filterElement) {\r\n this.filterElement = this.paper.addGroup(\"filter\");\r\n this._disposers.push(this.filterElement);\r\n }\r\n else {\r\n this.filterElement.removeChildNodes();\r\n }\r\n this.paper.appendDef(this.filterElement);\r\n var id = \"filter-\" + this.uid;\r\n this.filterElement.attr({ \"id\": id });\r\n $iter.each(this.filters.iterator(), function (filter) {\r\n filter.sprite = _this;\r\n filter.paper = _this.paper;\r\n _this.filterElement.attr({ filterUnits: filter.filterUnits });\r\n filter.appendPrimitives(_this.filterElement);\r\n if (filter.width > width_1) {\r\n width_1 = filter.width;\r\n }\r\n if (filter.height > height_1) {\r\n height_1 = filter.height;\r\n }\r\n filter.scale = _this.globalScale;\r\n });\r\n var w = width_1 + \"%\";\r\n var h = height_1 + \"%\";\r\n /* temporarily removed as it is breaking tooltips on Safari @todo come back to this\r\n if (this._measuredHeight <= 1) {\r\n h = height + \"\";\r\n }\r\n\r\n if (this._measuredWidth <= 1) {\r\n h = width + \"\";\r\n }*/\r\n this.filterElement.attr({ \"width\": w, \"height\": h, \"x\": -(width_1 - 100) / 2 + \"%\", \"y\": -(height_1 - 100) / 2 + \"%\" });\r\n this.group.attr({ \"filter\": \"url(\\\"\" + $utils.getBaseURI() + id + \"\\\")\" });\r\n }\r\n else if (this.filterElement) {\r\n this.group.removeAttr(\"filter\");\r\n this.filterElement.removeChildNodes();\r\n }\r\n };\r\n /**\r\n * [removeClipPath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n Sprite.prototype.removeClipPath = function () {\r\n if (this._clipPath) {\r\n //this._clipPath.dispose();\r\n this.removeDispose(this._clipPath);\r\n this._clipPath = undefined;\r\n }\r\n };\r\n /**\r\n * [setElement description]\r\n *\r\n * @ignore\r\n * @todo Description\r\n * @param element [description]\r\n */\r\n Sprite.prototype.setElement = function (element) {\r\n this.element = element;\r\n this.setSVGAttributes();\r\n this.applyAccessibility();\r\n };\r\n Object.defineProperty(Sprite.prototype, \"element\", {\r\n /**\r\n * @return Element\r\n */\r\n get: function () {\r\n return this._element;\r\n },\r\n /**\r\n * The main element for this Sprite, usually an SVG `<g>`.\r\n *\r\n * All other sub-elements are created in it.\r\n *\r\n * @param element Element\r\n */\r\n set: function (element) {\r\n // Destroy previous element if there was one before\r\n this.removeElement();\r\n // Set new element\r\n this._element = element;\r\n // Add element to group\r\n // Since we are adding Element to group, which is already in the\r\n // `.disposers` it will be removed automatically when Sprite is disposed\r\n // of\r\n this.group.add(element);\r\n if (element.node instanceof SVGPathElement) {\r\n this._isPath = true;\r\n }\r\n // This is needed if someone is setting element not in draw method but\r\n // from outside\r\n if (!this.invalid) {\r\n this.validate();\r\n }\r\n if (options.autoSetClassName) {\r\n this.setClassName();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"svgContainer\", {\r\n /**\r\n * HTML container (`<div>`) which is used to place chart's `<svg>` element\r\n * in.\r\n *\r\n * @return Container for chart elements\r\n */\r\n get: function () {\r\n if (this._svgContainer) {\r\n return this._svgContainer;\r\n }\r\n else if (this._parent) {\r\n return this._parent.svgContainer;\r\n }\r\n },\r\n /**\r\n * Sets HTML container to add SVG and other chart elements to.\r\n *\r\n * @param svgContainer Container for chart elements\r\n */\r\n set: function (svgContainer) {\r\n this._svgContainer = svgContainer;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Measures main element.\r\n *\r\n * Saves measurements into private `_bbox` property.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.measureElement = function () {\r\n if (this.element) {\r\n if (this.definedBBox) {\r\n this._bbox = this.definedBBox;\r\n }\r\n else {\r\n var svgBBox = this.element.getBBox();\r\n this._bbox = { x: svgBBox.x, y: svgBBox.y, width: svgBBox.width, height: svgBBox.height };\r\n }\r\n }\r\n };\r\n /**\r\n * Positions element according its center settings.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.updateCenter = function () {\r\n if (this.element) {\r\n var prevElementTransform = this.element.transformString;\r\n var bbox = this.bbox;\r\n var ex = 0;\r\n var ey = 0;\r\n var elementX = bbox.x;\r\n var elementY = bbox.y;\r\n var elementWidth = bbox.width;\r\n var elementHeigth = bbox.height;\r\n var pixelPaddingLeft = this.pixelPaddingLeft;\r\n var pixelPaddingRight = this.pixelPaddingRight;\r\n var pixelPaddingTop = this.pixelPaddingTop;\r\n var pixelPaddingBottom = this.pixelPaddingBottom;\r\n // add padding to the measured size\r\n var measuredWidth = $math.max(elementWidth + pixelPaddingLeft + pixelPaddingRight, this.pixelWidth);\r\n var measuredHeight = $math.max(elementHeigth + pixelPaddingTop + pixelPaddingBottom, this.pixelHeight);\r\n // extremes\r\n var left = bbox.x;\r\n var right = bbox.x + measuredWidth;\r\n var top_1 = bbox.y;\r\n var bottom = bbox.y + measuredHeight;\r\n var horizontalCenter = this.horizontalCenter;\r\n var verticalCenter = this.verticalCenter;\r\n switch (horizontalCenter) {\r\n case \"none\":\r\n ex = elementX + pixelPaddingLeft;\r\n break;\r\n case \"left\":\r\n ex = pixelPaddingLeft;\r\n break;\r\n case \"middle\":\r\n ex = pixelPaddingLeft - (elementWidth + pixelPaddingRight + pixelPaddingLeft) / 2;\r\n break;\r\n case \"right\":\r\n ex = -pixelPaddingRight - elementWidth;\r\n break;\r\n }\r\n switch (verticalCenter) {\r\n case \"none\":\r\n ey = elementY + pixelPaddingTop;\r\n break;\r\n case \"top\":\r\n ey = pixelPaddingTop;\r\n break;\r\n case \"middle\":\r\n ey = pixelPaddingTop - (elementHeigth + pixelPaddingBottom + pixelPaddingTop) / 2;\r\n break;\r\n case \"bottom\":\r\n ey = -pixelPaddingBottom - elementHeigth;\r\n break;\r\n }\r\n this._measuredHeight = measuredHeight;\r\n this._measuredWidth = measuredWidth;\r\n var x = $math.round(ex - elementX, this._positionPrecision, true);\r\n var y = $math.round(ey - elementY, this._positionPrecision, true);\r\n this.ex = x - pixelPaddingLeft;\r\n this.ey = y - pixelPaddingTop;\r\n this.maxLeft = left + x - pixelPaddingLeft;\r\n this.maxRight = right + x - pixelPaddingLeft;\r\n this.maxTop = top_1 + y - pixelPaddingTop;\r\n this.maxBottom = bottom + y - pixelPaddingTop;\r\n if (this.pixelPerfect && options.pixelPerfectPrecision == 0) {\r\n x -= 0.5;\r\n y -= 0.5;\r\n }\r\n this.element.moveTo({ x: x, y: y });\r\n if (prevElementTransform != this.element.transformString) {\r\n this.dispatchImmediately(\"transformed\");\r\n }\r\n }\r\n };\r\n /**\r\n * Measures the whole element.\r\n *\r\n * Returns `true` if the size has changed from the last measurement.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Did the size changed from the last measurement?\r\n */\r\n Sprite.prototype.measure = function () {\r\n this.updateCenter();\r\n var measuredWidth = this._measuredWidth;\r\n var measuredHeight = this._measuredHeight;\r\n // extremes\r\n var left = this.maxLeft;\r\n var right = this.maxRight;\r\n var top = this.maxTop;\r\n var bottom = this.maxBottom;\r\n // non-parent wise size\r\n this._measuredWidthSelf = measuredWidth;\r\n this._measuredHeightSelf = measuredHeight;\r\n var positionPrecision = this._positionPrecision;\r\n this.maxLeftSelf = this.maxLeft;\r\n this.maxRightSelf = this.maxRight;\r\n this.maxTopSelf = this.maxTop;\r\n this.maxBottomSelf = this.maxBottom;\r\n // if a sprite is rotated or scaled, calculate measured size after transformations\r\n if (this.rotation !== 0 || this.scale !== 1 || this.nonScaling) {\r\n // not good to handleGlobalScale here.\r\n if (this.nonScalingStroke) {\r\n this.strokeWidth = this.strokeWidth;\r\n }\r\n var svg = this.paper.svg;\r\n var matrix = svg.createSVGMatrix();\r\n var rotation = this.rotation;\r\n var scale = this.scale;\r\n if (this.nonScaling) {\r\n scale = this.scale / this.globalScale;\r\n }\r\n matrix.a = $math.cos(rotation) * scale;\r\n matrix.c = -$math.sin(rotation) * scale;\r\n matrix.e = 0;\r\n matrix.b = $math.sin(rotation) * scale;\r\n matrix.d = $math.cos(rotation) * scale;\r\n matrix.f = 0;\r\n var p1 = svg.createSVGPoint();\r\n p1.x = left;\r\n p1.y = top;\r\n var p2 = svg.createSVGPoint();\r\n p2.x = right;\r\n p2.y = top;\r\n var p3 = svg.createSVGPoint();\r\n p3.x = right;\r\n p3.y = bottom;\r\n var p4 = svg.createSVGPoint();\r\n p4.x = left;\r\n p4.y = bottom;\r\n var pt1 = p1.matrixTransform(matrix);\r\n var pt2 = p2.matrixTransform(matrix);\r\n var pt3 = p3.matrixTransform(matrix);\r\n var pt4 = p4.matrixTransform(matrix);\r\n left = Math.min(pt1.x, pt2.x, pt3.x, pt4.x);\r\n right = Math.max(pt1.x, pt2.x, pt3.x, pt4.x);\r\n top = Math.min(pt1.y, pt2.y, pt3.y, pt4.y);\r\n bottom = Math.max(pt1.y, pt2.y, pt3.y, pt4.y);\r\n measuredWidth = right - left;\r\n measuredHeight = bottom - top;\r\n this.maxLeft = $math.round(left, positionPrecision, true);\r\n this.maxRight = $math.round(right, positionPrecision, true);\r\n this.maxTop = $math.round(top, positionPrecision, true);\r\n this.maxBottom = $math.round(bottom, positionPrecision, true);\r\n }\r\n this._measuredWidth = $math.round(measuredWidth, positionPrecision, true);\r\n this._measuredHeight = $math.round(measuredHeight, positionPrecision, true);\r\n // dispatch event\r\n if (this._measuredWidth != this._prevMeasuredWidth || this._measuredHeight != this._prevMeasuredHeight) {\r\n this._prevMeasuredHeight = this._measuredHeight;\r\n this._prevMeasuredWidth = this._measuredWidth;\r\n // TODO clear existing sizechanged dispatches ?\r\n this.dispatch(\"sizechanged\");\r\n if ((this.isHover || this.showTooltipOn == \"hit\" || this.showTooltipOn == \"always\") && this.tooltip && this.tooltip.visible && ($type.hasValue(this.tooltipText) || $type.hasValue(this.tooltipHTML))) {\r\n this.updateTooltipPosition();\r\n }\r\n return true;\r\n }\r\n return false;\r\n };\r\n /**\r\n * Insert this element before sibling element.\r\n *\r\n * @param sprite Target element\r\n * @return This element\r\n */\r\n Sprite.prototype.insertBefore = function (sprite) {\r\n var parent = this._parent;\r\n if (parent) {\r\n var index = parent.children.indexOf(sprite);\r\n if (index !== -1) {\r\n parent.children.moveValue(this, index);\r\n parent.sortChildren();\r\n }\r\n }\r\n return this;\r\n };\r\n /**\r\n * Insert this element after sibling element.\r\n *\r\n * @param sprite Target element\r\n * @return This element\r\n */\r\n Sprite.prototype.insertAfter = function (sprite) {\r\n var parent = this._parent;\r\n if (parent) {\r\n var index = parent.children.indexOf(sprite);\r\n if (index !== -1) {\r\n parent.children.moveValue(this, index + 1);\r\n parent.sortChildren();\r\n }\r\n }\r\n return this;\r\n };\r\n /**\r\n * Removes the main SVG element.\r\n *\r\n * This does not destroy the whole Sprite element. To do that use\r\n * `dispose()` instead.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.removeElement = function () {\r\n // remove visual element\r\n if (this._element) {\r\n this.removeDispose(this._element);\r\n this._element = undefined;\r\n }\r\n };\r\n /**\r\n * Returns relative (percent) value of the X coordindate within this element.\r\n *\r\n * A relative value is a hundredth of a percent. So 100% would result in a 1\r\n * as relative value.\r\n *\r\n * @param value Absolute or relative X coordinate\r\n * @return Relative value\r\n */\r\n Sprite.prototype.getRelativeX = function (value) {\r\n if (value instanceof Percent) {\r\n return value.value;\r\n }\r\n else if (this._parent) {\r\n return value / this._parent.innerWidth;\r\n }\r\n return 0;\r\n };\r\n /**\r\n * Returns relative (percent) value of the Y coordindate within this element.\r\n *\r\n * A relative value is a hundredth of a percent. So 100% would result in a 1\r\n * as relative value.\r\n *\r\n * @param value Absolute or relative Y coordinate\r\n * @return Relative value\r\n */\r\n Sprite.prototype.getRelativeY = function (value) {\r\n if (value instanceof Percent) {\r\n return value.value;\r\n }\r\n else if (this._parent) {\r\n return value / this._parent.innerHeight;\r\n }\r\n return 0;\r\n };\r\n /**\r\n * Returns an X coordinate in pixel within the element.\r\n *\r\n * If number is passed in as parameter, the same number will be returned\r\n * back.\r\n *\r\n * If [[Percent]] is passed in, it will be recalculated to pixels.\r\n *\r\n * @param value Absolute or relative X coordinate\r\n * @return X coordinate in pixels\r\n */\r\n Sprite.prototype.getPixelX = function (value) {\r\n // we don't use $utils.valueToRelative as this would mean that we should access parent.innerWidth\r\n // all the time and this would result chain of the same actions and will slow down the system a lot\r\n var pixel = 0;\r\n if ($type.isNumber(value)) {\r\n pixel = value;\r\n }\r\n else if (value instanceof Percent) {\r\n var relative = value.value;\r\n if (this._parent) {\r\n pixel = $math.round(this._parent.innerWidth * relative, this._positionPrecision, true);\r\n }\r\n }\r\n return pixel;\r\n };\r\n /**\r\n * Returns an Y coordinate in pixel within the element.\r\n *\r\n * If number is passed in as parameter, the same number will be returned\r\n * back.\r\n *\r\n * If [[Percent]] is passed in, it will be recalculated to pixels.\r\n *\r\n * @param value Absolute or relative Y coordinate\r\n * @return Y coordinate in pixels\r\n */\r\n Sprite.prototype.getPixelY = function (value) {\r\n // we don't use $utils.valueToRelative as this would mean that we should access parent.innerWidth\r\n // all the time and this would result chain of the same actions and will slow down the system a lot\r\n var pixel = 0;\r\n if ($type.isNumber(value)) {\r\n pixel = value;\r\n }\r\n else if (value instanceof Percent) {\r\n var relative = value.value;\r\n if (this._parent) {\r\n pixel = $math.round(this._parent.innerHeight * relative, this._positionPrecision, true);\r\n }\r\n }\r\n return pixel;\r\n };\r\n /**\r\n * Moves the element to a specified coordinates.\r\n *\r\n * Using this method is preferred method of moving element, as it saves some\r\n * CPU processing power over setting `x` and `y` properties separately.\r\n *\r\n * The method respects element's center settings. The element will be\r\n * positioned so that `point` coordinates come in whatever \"center\" of the\r\n * element is, as set in `horizontalCenter` and `verticalCenter`.\r\n *\r\n * Besides moving the element, you can also at the same time scale and\r\n * rotate the element.\r\n *\r\n * @param point New coordinates\r\n * @param rotation New rotation\r\n * @param scale New Scale\r\n */\r\n Sprite.prototype.moveTo = function (point, rotation, scale, isDragged) {\r\n if (this.isDragged && !isDragged) {\r\n return;\r\n }\r\n if (point) {\r\n if ($type.isNumber(point.x)) {\r\n this.setPropertyValue(\"x\", $math.round(point.x, this._positionPrecision, true));\r\n }\r\n if ($type.isNumber(point.y)) {\r\n this.setPropertyValue(\"y\", $math.round(point.y, this._positionPrecision, true));\r\n }\r\n }\r\n if ($type.isNumber(rotation)) {\r\n this.rotation = rotation;\r\n }\r\n if ($type.isNumber(scale)) {\r\n this.scale = scale;\r\n }\r\n // must leave this\r\n this.invalidatePosition();\r\n };\r\n Object.defineProperty(Sprite.prototype, \"mask\", {\r\n /**\r\n * Returns [[Sprite]] element currently used as mask for this element.\r\n *\r\n * @ignore Exclude from docs\r\n * @return A [[Sprite]] to use as mask\r\n */\r\n get: function () {\r\n if (!this._adapterO) {\r\n return this._mask.get();\r\n }\r\n else {\r\n return this._adapterO.apply(\"mask\", this._mask.get());\r\n }\r\n },\r\n /**\r\n * Sets another [[Sprite]] element as this elements mask.\r\n *\r\n * @ignore Exclude from docs\r\n * @param mask A [[Sprite]] to use as mask\r\n */\r\n set: function (mask) {\r\n var _this = this;\r\n if (this._mask.get() !== mask) {\r\n // this is good\r\n if (mask) {\r\n this.createClipPath();\r\n if (!(mask instanceof Container)) {\r\n mask.isMeasured = false;\r\n if (mask.element) {\r\n this._clipElement = mask.element;\r\n }\r\n }\r\n else {\r\n this._clipElement = this.paper.add(\"rect\");\r\n }\r\n if (this._clipElement) {\r\n this._clipPath.add(this._clipElement);\r\n }\r\n this._mask.set(mask, new MultiDisposer([\r\n //mask.addEventListener(SpriteEvent.TRANSFORMED, this.applyMask, false, this);\r\n mask.events.on(\"maxsizechanged\", function () { if (_this.inited) {\r\n _this.applyMask();\r\n } }, undefined, false),\r\n mask.events.on(\"validated\", this.applyMask, this, false),\r\n mask.events.on(\"positionchanged\", this.applyMask, this, false)\r\n ]));\r\n this.applyMask();\r\n }\r\n else {\r\n this._mask.reset();\r\n this.group.removeAttr(\"clip-path\");\r\n this.removeClipPath();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"maskRectangle\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Mask Rectangle\r\n */\r\n get: function () {\r\n return this._maskRectangle;\r\n },\r\n // you can set IRectangle as a mask instead o a sprite. Note, the changes of the object won't be monitored\r\n /**\r\n * Instead of creating a [[Sprite]] for mask, you can just use a\r\n * [[Rectangle]] by setting this accessor.\r\n *\r\n * Please note that the element will not monitor any changes to the mask\r\n * rectangle.\r\n *\r\n * @ignore Exclude from docs\r\n * @param rect Mask Rectangle\r\n */\r\n set: function (rect) {\r\n if (rect) {\r\n this.createClipPath();\r\n if (!this._clipElement) {\r\n this._clipElement = this.paper.add(\"rect\");\r\n this._clipPath.add(this._clipElement);\r\n }\r\n this._clipElement.attr({ \"width\": rect.width, \"height\": rect.height });\r\n }\r\n else {\r\n this.removeClipPath();\r\n this._clipElement = undefined;\r\n }\r\n this._maskRectangle = rect;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"isMeasured\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Was element already measured?\r\n */\r\n get: function () {\r\n return this._isMeasured;\r\n },\r\n /**\r\n * Indicates if this element was already measured.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Was element already measured?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (!value) {\r\n this._measuredWidth = 0;\r\n this._measuredHeight = 0;\r\n //this._pixelHeight = 0;\r\n //this._pixelWidth = 0;\r\n }\r\n if (this._isMeasured != value) {\r\n this._isMeasured = value;\r\n this.invalidatePosition();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Checks if the this element has any of its parts overlapping with another\r\n * element.\r\n *\r\n * @todo Description (review)\r\n * @param sprite Second element to test again\r\n * @return Overlapping?\r\n */\r\n Sprite.prototype.hitTest = function (sprite) {\r\n // validate, otherwise we will not know measuredWidth and measuredHeight\r\n if (this.invalid) {\r\n this.validate();\r\n }\r\n if (sprite.invalid) {\r\n sprite.validate();\r\n }\r\n var ax1 = this.pixelX + this.maxLeft;\r\n var ay1 = this.pixelY + this.maxTop;\r\n var ax2 = ax1 + this.maxRight;\r\n var ay2 = ay1 + this.maxBottom;\r\n var bx1 = sprite.pixelX + sprite.maxLeft;\r\n var by1 = sprite.pixelY + sprite.maxTop;\r\n var bx2 = bx1 + sprite.maxRight;\r\n var by2 = by1 + sprite.maxBottom;\r\n return !(bx1 > ax2 || bx2 < ax1 || by1 > ay2 || by2 < ay1);\r\n };\r\n Object.defineProperty(Sprite.prototype, \"inited\", {\r\n /**\r\n * ==========================================================================\r\n * STATE-RELATED\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Returns `true` if Sprite has already finished initializing.\r\n *\r\n * @return Initialized?\r\n */\r\n get: function () {\r\n return this._inited;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns `true` if Sprite has already finished initializing and is ready.\r\n *\r\n * If this object is a [[Container]] it will wait for all of its children\r\n * are ready before becoming ready itself and firing a `\"ready\"` event.\r\n *\r\n * @return is ready?\r\n */\r\n Sprite.prototype.isReady = function () {\r\n return this._ready;\r\n };\r\n Object.defineProperty(Sprite.prototype, \"states\", {\r\n /**\r\n * Returns a collection of element's available [[SpriteState]] entries.\r\n *\r\n * @see {@link SpriteState}\r\n * @return States\r\n */\r\n get: function () {\r\n if (!this._states) {\r\n var state = new SpriteState();\r\n // works\r\n this._states = new DictionaryTemplate(state);\r\n // TODO what about removeKey ?\r\n this._disposers.push(this._states.events.on(\"insertKey\", this.processState, this, false));\r\n this._disposers.push(this._states.events.on(\"setKey\", this.processState, this, false));\r\n this._disposers.push(new DictionaryDisposer(this._states));\r\n this._disposers.push(state);\r\n }\r\n return this._states;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"hiddenState\", {\r\n /**\r\n * Returns a [[SpriteState]] object for \"hidden\" state.\r\n *\r\n * This is a shortcut to `this.states.getKey(\"hidden\")`.\r\n *\r\n * @return Hidden state\r\n */\r\n get: function () {\r\n if (!this.states.getKey(\"hidden\")) {\r\n var hiddenState = this.states.create(\"hidden\");\r\n hiddenState.properties.opacity = 0;\r\n hiddenState.properties.visible = false;\r\n }\r\n return this.states.getKey(\"hidden\");\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"defaultState\", {\r\n /**\r\n * Returns a [[SpriteState]] object for \"default\" state.\r\n *\r\n * This is a shortcut to `this.states.getKey(\"default\")`.\r\n *\r\n * @return Hidden state\r\n */\r\n get: function () {\r\n if (!this.states.getKey(\"default\")) {\r\n var defaultState = this.states.create(\"default\");\r\n defaultState.properties.opacity = 1;\r\n }\r\n return this.states.getKey(\"default\");\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Checks if some key states are defined and updates Sprite properties\r\n * accordingly.\r\n *\r\n * For example if there's a state \"down\" defined for Sprite, we automatically\r\n * make it \"clickable\".\r\n *\r\n * @ignore Exclude from docs\r\n * @param event An event which caused state list update\r\n */\r\n Sprite.prototype.processState = function (event) {\r\n var state = event.newValue;\r\n state.sprite = this;\r\n state.name = event.key;\r\n if (this.states.hasKey(\"hover\") || (this.showTooltipOn == \"hover\" && ($type.hasValue(this.tooltipHTML) || $type.hasValue(this.tooltipText)))) {\r\n this.hoverable = true;\r\n }\r\n if (this.states.hasKey(\"down\") || (this.showTooltipOn == \"hover\" && ($type.hasValue(this.tooltipHTML) || $type.hasValue(this.tooltipText)))) {\r\n this.clickable = true;\r\n }\r\n if (this.states.hasKey(\"focus\")) {\r\n this.focusable = true;\r\n }\r\n // Propagate the new state to clones\r\n if (this.applyOnClones) {\r\n var clones = this.clones.values;\r\n var length_1 = clones.length;\r\n for (var i = 0; i < length_1; ++i) {\r\n var clone = clones[i];\r\n if (!clone.isDisposed()) {\r\n clone.states.setKey(state.name, state);\r\n }\r\n }\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"animations\", {\r\n /**\r\n * Returns a list elements's animations currently being played.\r\n *\r\n * If the list has not been initialized it is created.\r\n *\r\n * @return List of animations\r\n */\r\n get: function () {\r\n if (!this._animations) {\r\n this._animations = [];\r\n this._disposers.push(new AnimationDisposer(this._animations));\r\n }\r\n return this._animations;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts element's local coordinates to the coordinates within the main\r\n * chart container.\r\n *\r\n * @param point Local point\r\n * @return Global point\r\n */\r\n Sprite.prototype.getSvgPoint = function (point) {\r\n try {\r\n // Calculate SVG point\r\n var bbox = this.htmlContainer.getBoundingClientRect();\r\n return {\r\n \"x\": point.x - bbox.left,\r\n \"y\": point.y - bbox.top\r\n };\r\n }\r\n catch (e) {\r\n return point;\r\n }\r\n };\r\n /**\r\n * Creates and starts an [[Animation]] with given `animationOptions`.\r\n *\r\n * @see {@link Animation} for additional information about available options\r\n * @param animationOptions Animation options\r\n * @param duration Duration in milliseconds\r\n * @param easing Easing function\r\n * @return Animation instance\r\n */\r\n Sprite.prototype.animate = function (animationOptions, duration, easing) {\r\n return new Animation(this, animationOptions, duration, easing).start();\r\n };\r\n /**\r\n * Applies a [[SpriteState]] on this element.\r\n *\r\n * The first parameter can either be a name state or a [[SpriteState]]\r\n * instance.\r\n *\r\n * When run, this method will apply SVG properties defined in a\r\n * [[SpriteState]], but only those that are relevant to this particular\r\n * element, i.e. are in the `properties` array.\r\n *\r\n * @see {@link SpriteState}\r\n * @param value A state - name key or instance\r\n * @param transitionDuration Duration of the transition between current and new state\r\n * @param easing An easing function\r\n */\r\n Sprite.prototype.setState = function (value, transitionDuration, easing) {\r\n var state;\r\n if (value instanceof SpriteState) {\r\n this.states.setKey(value.name, value);\r\n state = value;\r\n }\r\n else {\r\n state = this.states.getKey(value);\r\n if (!state) {\r\n return;\r\n }\r\n }\r\n // stop previous transition\r\n // not good - foe expample, we are animating to some \"active\" state and in them middle \"hover\" state happens. then \"active\" stat won't be applied\r\n //if (this._transition) {\r\n //this._transition.stop();\r\n //}\r\n if (state.name == \"hover\") {\r\n if (this.isHidden) {\r\n return;\r\n }\r\n this.isHover = true;\r\n }\r\n if (state.name == \"hidden\") {\r\n this.isHiding = true;\r\n }\r\n else {\r\n if (!this.visible) {\r\n this.setVisibility(state.properties.visible || this.defaultState.properties.visible);\r\n }\r\n }\r\n if (state.name == \"active\") {\r\n this.isActive = true;\r\n }\r\n // we do not set isActive = false here if it's not active, but container does that if setStateOnChildren = true\r\n if (!$type.isNumber(transitionDuration)) {\r\n transitionDuration = state.transitionDuration;\r\n }\r\n if (!$type.hasValue(easing)) {\r\n easing = state.transitionEasing;\r\n }\r\n return this.transitTo(state, transitionDuration, easing);\r\n };\r\n /**\r\n * Applies proper state based on the condition of the element. A condition is\r\n * deducted in this order:\r\n * * \"hover\" if Sprite has currently any pointers over it\r\n * * \"down\" if Sprite has any pointers (touch or mouse) currently pressed over it\r\n * * \"focus\" if Sprite has currently got focus (accessibility)\r\n * * \"hidden\" if Sprite is currently hidden\r\n *\r\n * Returns an [[Animation]] object, which is handling gradual transition from\r\n * current values of properties, to the new target state(s).\r\n *\r\n * @param duration Duration for the animation (ms)\r\n * @return [[Animation]] object which is handling the transition\r\n */\r\n Sprite.prototype.applyCurrentState = function (duration) {\r\n //if (!this.isHidden) { // this was done for hover state not to take effect if \"hidden\" is actually visible, need to think about it.\r\n var animation = this.setState(this.defaultState, duration);\r\n if (this.isHover) {\r\n animation = this.setState(\"hover\", duration);\r\n }\r\n if (this.isDown && this.interactions.downPointers.length) {\r\n animation = this.setState(\"down\", duration);\r\n }\r\n this.isFocused = this.isFocused;\r\n if (this.isActive) {\r\n animation = this.setState(\"active\", duration);\r\n if (this.isHover && this.states.hasKey(\"hoverActive\")) {\r\n animation = this.setState(\"hoverActive\", duration);\r\n }\r\n }\r\n return animation;\r\n //}\r\n };\r\n /**\r\n * Starts an [[Animation]] of the properties to specific values as they are\r\n * set in `state`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param state Target State\r\n * @param duration Duration in milliseconds\r\n * @param easing Easing function\r\n * @return Transition Animation\r\n */\r\n Sprite.prototype.transitTo = function (state, duration, easing) {\r\n var _this = this;\r\n // Init\r\n var options = [], propValues = state.allValues, transition;\r\n // todo: do this for numeric/color properties only?\r\n // @todo use state.getPropertyValue instead\r\n $object.each(propValues, function (propertyName, finalValue) {\r\n var currentValue = _this[propertyName];\r\n // save current value to default state. this solves a big problem where values must be set both on sprite and default state\r\n if (finalValue != currentValue && _this.defaultState.properties[propertyName] == undefined) {\r\n _this.defaultState.properties[propertyName] = currentValue;\r\n }\r\n //if (finalValue != currentValue && $type.hasValue(finalValue)) {\r\n if (finalValue != \"__unset\") {\r\n var option = { from: currentValue, to: finalValue, property: propertyName };\r\n options.push(option);\r\n }\r\n });\r\n if (options.length > 0) {\r\n transition = this.animate(options, duration, easing);\r\n if (transition && !transition.isFinished()) {\r\n // TODO should this use events.once ?\r\n // TODO push onto _disposers array ?\r\n this._disposers.push(transition.events.on(\"animationended\", function () {\r\n _this.dispatchImmediately(\"transitionended\");\r\n }));\r\n }\r\n else {\r\n this.dispatchImmediately(\"transitionended\");\r\n }\r\n }\r\n // apply filters if set\r\n if (state.filters.length > 0) {\r\n var newFilters_1 = [];\r\n // check for the same filters\r\n $iter.each(state.filters.iterator(), function (stateFilter) {\r\n var newFilter = stateFilter.clone();\r\n newFilters_1.push(newFilter);\r\n var animationOptions = [];\r\n $iter.each(_this.filters.iterator(), function (currentFilter) {\r\n // if we have the same filters\r\n if (currentFilter.className == newFilter.className) {\r\n if (!$iter.contains(_this.defaultState.filters.iterator(), function (x) { return x.className === newFilter.className; })) {\r\n _this.defaultState.filters.push(currentFilter);\r\n }\r\n $object.each(newFilter.properties, function (propertyName, newValue) {\r\n var currentValue = currentFilter.properties[propertyName];\r\n // if values are not the same, push to animation options array\r\n if (currentValue != newValue) {\r\n animationOptions.push({ property: propertyName, from: currentValue, to: newValue });\r\n }\r\n });\r\n }\r\n });\r\n // animate to new value\r\n newFilter.animate(animationOptions, duration, easing);\r\n });\r\n this.filters.clear();\r\n this.filters.pushAll(newFilters_1);\r\n }\r\n return transition;\r\n };\r\n /**\r\n * Returns `true` if Sprite is currently transiting from one state/value to\r\n * another.\r\n *\r\n * @return Is in transition?\r\n */\r\n Sprite.prototype.isInTransition = function () {\r\n return this.animations.length > 0;\r\n };\r\n Object.defineProperty(Sprite.prototype, \"isHover\", {\r\n /**\r\n * @return Is hovered?\r\n */\r\n get: function () {\r\n if (this.isInteractive()) {\r\n return this.interactions.isHover;\r\n }\r\n return false;\r\n },\r\n /**\r\n * Indicates if this element has a mouse pointer currently hovering\r\n * over it, or if it has any touch pointers pressed on it.\r\n *\r\n * You can force element to be \"hovered\" manually, by setting this property\r\n * to `true`.\r\n *\r\n * @param value Is hovered?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (value !== this.isHover) {\r\n if (this.isInteractive()) {\r\n this.interactions.isHover = value;\r\n if (value) {\r\n this.handleOver();\r\n }\r\n else {\r\n this.interactions.isRealHover = false;\r\n this.handleOut();\r\n }\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"isDragged\", {\r\n /**\r\n * Returns indicator if this element is being dragged at the moment.\r\n *\r\n * @return Is dragged?\r\n */\r\n get: function () {\r\n return this._isDragged;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"isResized\", {\r\n /**\r\n * Returns indicator if this element is being resized at the moment.\r\n *\r\n * @return Is resized?\r\n */\r\n get: function () {\r\n return this._isResized;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"isDown\", {\r\n /**\r\n * @return Is down?\r\n */\r\n get: function () {\r\n if (this.isInteractive()) {\r\n return this.interactions.isDown;\r\n }\r\n return false;\r\n },\r\n /**\r\n * Indicates if this element has any pointers (mouse or touch) pressing down\r\n * on it.\r\n *\r\n * @param value Is down?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (this.isInteractive() && this.isDown != value) {\r\n this.interactions.isDown = value;\r\n if (value) {\r\n this.handleDown();\r\n }\r\n else {\r\n this.handleUp();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"isFocused\", {\r\n /**\r\n * @return Is focused?\r\n */\r\n get: function () {\r\n if (this.isInteractive()) {\r\n return this.interactions.isFocused;\r\n }\r\n return false;\r\n },\r\n /**\r\n * Indicates if this element is focused (possibly by tab navigation).\r\n *\r\n * @param value Is focused?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (this.focusable && this.isFocused != value) {\r\n if (this.isInteractive()) {\r\n this.interactions.isFocused = value;\r\n if (value === true) {\r\n this.handleFocus();\r\n }\r\n else {\r\n this.handleBlur();\r\n }\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"isActive\", {\r\n /**\r\n * @return Is active?\r\n */\r\n get: function () {\r\n return this._isActive;\r\n },\r\n /**\r\n * Indicates if this element is currently active (toggled on) or not\r\n * (toggled off).\r\n *\r\n * @param value Is active?\r\n */\r\n set: function (value) {\r\n this.setActive(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Sprite.prototype.setActive = function (value) {\r\n value = $type.toBoolean(value);\r\n if (this._isActive !== value) {\r\n this._isActive = value;\r\n if (value && this.states.hasKey(\"active\")) {\r\n this.setState(\"active\");\r\n if (this.isHover && this.states.hasKey(\"hoverActive\")) {\r\n this.setState(\"hoverActive\");\r\n }\r\n }\r\n else {\r\n this.applyCurrentState();\r\n }\r\n this.dispatchImmediately(\"toggled\");\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"disabled\", {\r\n /**\r\n * @return Disabled?\r\n */\r\n get: function () {\r\n //if(this._internalDisabled){\r\n //\treturn true;\r\n //}\r\n var current = this.getPropertyValue(\"disabled\");\r\n if ($type.hasValue(current)) {\r\n return current;\r\n }\r\n else {\r\n if (this.virtualParent) {\r\n return this.virtualParent.disabled;\r\n }\r\n if (this._parent) {\r\n return this._parent.disabled;\r\n }\r\n }\r\n return false;\r\n },\r\n /**\r\n * Controls if element is disabled.\r\n *\r\n * A disabled element is hidden, and is removed from any processing, layout\r\n * calculations, and generally treated as if it does not exist.\r\n *\r\n * The element itself is not destroyed, though. Setting this back to `false`,\r\n * will \"resurrect\" the element.\r\n *\r\n * @param value Disabled?\r\n */\r\n set: function (value) {\r\n this.setDisabled(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Sprite.prototype.setDisabled = function (value) {\r\n value = $type.toBoolean(value);\r\n var current = this.getPropertyValue(\"disabled\");\r\n if (current != value) {\r\n this.setPropertyValue(\"disabled\", value, true);\r\n if (value) {\r\n this.parent = this._parent;\r\n this.removeFromInvalids();\r\n this.group.attr({ \"display\": \"none\" });\r\n this.dispatch(\"disabled\");\r\n }\r\n else {\r\n if (this._parent) {\r\n var group = this._parent.element;\r\n if (!group.hasChild(this.group)) {\r\n group.add(this.group);\r\n }\r\n }\r\n if (this instanceof Container) {\r\n this.deepInvalidate();\r\n if (this._background) {\r\n this._background.invalidate();\r\n }\r\n }\r\n else {\r\n this.invalidate();\r\n }\r\n if (!this.__disabled) {\r\n this.removeSVGAttribute(\"display\");\r\n }\r\n this.dispatch(\"enabled\");\r\n }\r\n this.dispatch(\"transformed\");\r\n system.requestFrame();\r\n return true;\r\n }\r\n return false;\r\n };\r\n Object.defineProperty(Sprite.prototype, \"__disabled\", {\r\n /**\r\n * @ignore\r\n * @return Disabled?\r\n */\r\n get: function () {\r\n return this._internalDisabled;\r\n },\r\n /**\r\n * Internal disable method.\r\n *\r\n * Do not use it for disabling elements. Use `disabled` accessor instead.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Disabled?\r\n */\r\n set: function (value) {\r\n if (this._internalDisabled != value) {\r\n this._internalDisabled = value;\r\n this._updateDisabled = true;\r\n this.invalidatePosition(); // better use this instead of invalidate()\r\n if (!value) {\r\n this.invalidate();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"numberFormatter\", {\r\n /**\r\n * @return A [[NumberFormatter]] instance to be used\r\n */\r\n get: function () {\r\n if (this._numberFormatter) {\r\n return this._numberFormatter;\r\n }\r\n else if (this.virtualParent) {\r\n return this.virtualParent.numberFormatter;\r\n }\r\n else if (this._parent) {\r\n return this._parent.numberFormatter;\r\n }\r\n this._numberFormatter = new NumberFormatter();\r\n this._numberFormatter.language = this.language;\r\n return this.numberFormatter;\r\n },\r\n /**\r\n * ==========================================================================\r\n * FORMATTERS AND OTHER EXTERNAL HELPERS\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * A [[NumberFormatter]] instance.\r\n *\r\n * This is used to format numbers.\r\n *\r\n * ```TypeScript\r\n * chart.numberFormatter.numberFormat = \"#,###.#####\";\r\n * ```\r\n * ```JavaScript\r\n * chart.numberFormatter.numberFormat = \"#,###.#####\";\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"numberFormatter\": {\r\n * \"numberFormat\": \"#,###.#####\"\r\n * }\r\n * }\r\n * ```\r\n *\r\n * You can set a separate instance of formatter for each\r\n * individual element. However that would be unnecessary overhead as\r\n * all elements would automatically inherit formatter from their parents,\r\n * all the way up to the chart itself.\r\n *\r\n *\r\n * @see {@link NumberFormatter} for more info on formatting numbers\r\n * @param value An instance of NumberFormatter\r\n */\r\n set: function (value) {\r\n this._numberFormatter = value;\r\n this._numberFormatter.language = this.language;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"dateFormatter\", {\r\n /**\r\n * @return An instance of DateFormatter\r\n */\r\n get: function () {\r\n if (this._dateFormatter) {\r\n return this._dateFormatter;\r\n }\r\n else if (this.virtualParent) {\r\n return this.virtualParent.dateFormatter;\r\n }\r\n else if (this._parent) {\r\n return this._parent.dateFormatter;\r\n }\r\n this._dateFormatter = new DateFormatter();\r\n this._dateFormatter.language = this.language;\r\n return this.dateFormatter;\r\n },\r\n /**\r\n * A [[DateFormatter]] instance.\r\n *\r\n * This is used to format dates, e.g. on a date axes, balloons, etc.\r\n *\r\n * ```TypeScript\r\n * chart.dateFormatter.dateFormat = \"yyyy-MM-dd\";\r\n * ```\r\n * ```JavaScript\r\n * chart.dateFormatter.dateFormat = \"yyyy-MM-dd\";\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"dateFormatter\": {\r\n * \"dateFormat\": \"yyyy-MM-dd\"\r\n * }\r\n * }\r\n * ```\r\n *\r\n * You can set a separate instance of formatter for each\r\n * individual element. However that would be unnecessary overhead as\r\n * all elements would automatically inherit formatter from their parents,\r\n * all the way up to the chart itself.\r\n *\r\n * @see {@link DateFormatter} for more info on dates formatting\r\n * @param value An instance of DateFormatter\r\n */\r\n set: function (value) {\r\n this._dateFormatter = value;\r\n this._dateFormatter.language = this.language;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"durationFormatter\", {\r\n /**\r\n * @return An instance of DurationFormatter\r\n */\r\n get: function () {\r\n if (this._durationFormatter) {\r\n return this._durationFormatter;\r\n }\r\n else if (this.virtualParent) {\r\n return this.virtualParent.durationFormatter;\r\n }\r\n else if (this._parent) {\r\n return this._parent.durationFormatter;\r\n }\r\n this._durationFormatter = new DurationFormatter();\r\n this._durationFormatter.language = this.language;\r\n return this.durationFormatter;\r\n },\r\n /**\r\n * A [[DurationFormatter]] instance.\r\n *\r\n * This is used to format numbers as durations, e.g. on a value axes.\r\n *\r\n * You can set a separate instance of formatter for each\r\n * individual element. However that would be unnecessary overhead as\r\n * all elements would automatically inherit formatter from their parents,\r\n * all the way up to the chart itself.\r\n *\r\n * @see {@link DurationFormatter} for more info on durations\r\n * @param value An instance of DurationFormatter\r\n */\r\n set: function (value) {\r\n this._durationFormatter = value;\r\n this._durationFormatter.language = this.language;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"language\", {\r\n /**\r\n * @return An instance of Language\r\n */\r\n get: function () {\r\n var language = this._language.get();\r\n if (language) {\r\n return language;\r\n }\r\n else if (this.virtualParent) {\r\n return this.virtualParent.language;\r\n }\r\n else if (this._parent) {\r\n return this._parent.language;\r\n }\r\n language = new Language();\r\n this.language = language;\r\n return language;\r\n },\r\n /**\r\n * A [[Language]] instance to use for translations.\r\n *\r\n * Normally it is enough to set language for the top-most element - chart.\r\n *\r\n * All other element child elements will automatically re-use that language\r\n * object.\r\n *\r\n * @param value An instance of Language\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n if (this._language.get() !== value) {\r\n this._language.set(value, value.events.on(\"localechanged\", function (ev) {\r\n if (_this._numberFormatter) {\r\n _this._numberFormatter.language = _this.language;\r\n }\r\n if (_this._dateFormatter) {\r\n _this._dateFormatter.language = _this.language;\r\n }\r\n if (_this._durationFormatter) {\r\n _this._durationFormatter.language = _this.language;\r\n }\r\n if (_this._exporting.get()) {\r\n var exporting = _this._exporting.get();\r\n exporting.numberFormatter.language = _this.language;\r\n exporting.dateFormatter.language = _this.language;\r\n exporting.durationFormatter.language = _this.language;\r\n exporting.language = _this.language;\r\n }\r\n if (_this instanceof Container) {\r\n _this.deepInvalidate();\r\n }\r\n }));\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * ==========================================================================\r\n * DATA-RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Parses the string for meta tags `{tag}` and replaces them with a real\r\n * value. Supports straight up tags referring to the field in data, i.e.\r\n * `{value}` or tags with additional formatting info. E.g.:\r\n *\r\n * ```Text\r\n * {myfield.formatDate(\"yyyy-MM-dd\")}\r\n * {myfield.formatDate()}\r\n * {myfield.formatNumber(\"#,####.00\")}\r\n * {myfield.formatNumber()}\r\n * {myField.formatDuration(\"mm:ss\")}\r\n * ```\r\n *\r\n * Etc.\r\n *\r\n * This method Will automatically detect and use proper formatter for the\r\n * value.\r\n *\r\n * The source value will be looked up in various places: (in order)\r\n * * Sprite's own `dataItem`\r\n * * Sprite's properties\r\n * * Parent's `dataItem`\r\n * * Parent's properties\r\n *\r\n * @ignore Exclude from docs\r\n * @param string A string to format\r\n * @param dataItem DataItem\r\n * @return Formatted string\r\n */\r\n Sprite.prototype.populateString = function (string, dataItem) {\r\n if ($type.hasValue(string)) {\r\n string = $type.castString(string);\r\n string = getTextFormatter().escape(string);\r\n var tags = string.match(/\\{([^}]+)\\}/g);\r\n var i = void 0;\r\n if (tags) {\r\n for (i = 0; i < tags.length; i++) {\r\n var tag = tags[i].replace(/\\{([^}]+)\\}/, \"$1\");\r\n var value = this.getTagValue(tag, \"\", dataItem);\r\n if (!$type.hasValue(value)) {\r\n value = \"\";\r\n }\r\n string = string.split(tags[i]).join(value);\r\n }\r\n }\r\n string = getTextFormatter().unescape(string);\r\n }\r\n else {\r\n string = \"\";\r\n }\r\n if (!this._adapterO) {\r\n return string;\r\n }\r\n else {\r\n return this._adapterO.apply(\"populateString\", string);\r\n }\r\n };\r\n /**\r\n * Gets the value from data item and formats it according to specified format.\r\n *\r\n * If `format` is specified, it will use its contents to choose formatter for\r\n * the value. Otherwise it will select formatter accordingly to actual value\r\n * type.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Ability to force certain formatter on known numeric and date values\r\n * @see {@link NumberFormatter}\r\n * @see {@link DateFormatter}\r\n * @see {@link DurationFormatter}\r\n * @param tagName Tag name to replace\r\n * @param format Format to use\r\n * @param dataItem DataItem\r\n * @return Formatted value\r\n */\r\n Sprite.prototype.getTagValue = function (tagName, format, dataItem) {\r\n var value;\r\n if (!$type.hasValue(dataItem)) {\r\n dataItem = this.dataItem;\r\n }\r\n // Parse parts\r\n var parts = [];\r\n var reg = /([^.]+)\\(([^)]*)\\)|([^.]+)/g;\r\n ;\r\n var matches;\r\n while (true) {\r\n matches = reg.exec(tagName);\r\n if (matches === null) {\r\n break;\r\n }\r\n if (matches[3]) {\r\n // Simple property\r\n parts.push({\r\n prop: matches[3]\r\n });\r\n }\r\n else {\r\n // Method\r\n // Parse parameters\r\n var params = [];\r\n if ($utils.trim(matches[2]) != \"\") {\r\n var reg2 = /'([^']*)'|\"([^\"]*)\"|([0-9\\-]+)/g;\r\n var matches2 = void 0;\r\n while (true) {\r\n matches2 = reg2.exec(matches[2]);\r\n if (matches2 === null) {\r\n break;\r\n }\r\n params.push(matches2[1] || matches2[2] || matches2[3]);\r\n }\r\n }\r\n parts.push({\r\n method: matches[1],\r\n params: params\r\n });\r\n }\r\n }\r\n // Check if we can retrieve the value from data item\r\n if (dataItem) {\r\n // Check values\r\n value = this.getTagValueFromObject(parts, dataItem.values);\r\n // Check properties\r\n if (!$type.hasValue(value) || $type.isObject(value)) { // isObject helps to solve problem with date axis, as for example dateX will get dateX from values object and won't get to the dateX date.\r\n value = this.getTagValueFromObject(parts, dataItem);\r\n }\r\n // Check data context\r\n var dataContext = dataItem.dataContext;\r\n if (!$type.hasValue(value) && dataContext) {\r\n value = this.getTagValueFromObject(parts, dataItem.dataContext);\r\n // Maybe it's a literal dot-separated name of the key in dataContext?\r\n if (!$type.hasValue(value)) {\r\n value = this.getTagValueFromObject([{\r\n prop: tagName\r\n }], dataContext);\r\n }\r\n // scond data context level sometimes exist (tree map)\r\n if (!$type.hasValue(value) && dataContext.dataContext) {\r\n value = this.getTagValueFromObject(parts, dataContext.dataContext);\r\n }\r\n }\r\n // Check component's data item\r\n if (!$type.hasValue(value) && dataItem.component && dataItem.component.dataItem !== dataItem) {\r\n value = dataItem.component.getTagValue(tagName, format);\r\n }\r\n }\r\n // Check sprite's properties\r\n if (!$type.hasValue(value)) {\r\n value = this.getTagValueFromObject(parts, this.populateStringFrom || this);\r\n }\r\n // Finally, check the parent\r\n if (!$type.hasValue(value) && this._parent) {\r\n value = this._parent.getTagValue(tagName, format);\r\n }\r\n return value;\r\n };\r\n /**\r\n * Tries to retrieve values from properties of any object, then applies\r\n * proper formatting to it.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (improve)\r\n * @param parts Properties ant methods to access\r\n * @param object Source object\r\n * @param format A specific format to apply\r\n * @return Formatted value\r\n */\r\n Sprite.prototype.getTagValueFromObject = function (parts, object, format) {\r\n var current = object;\r\n var formatApplied = false;\r\n for (var i = 0, len = parts.length; i < len; i++) {\r\n var part = parts[i];\r\n if (part.prop) {\r\n // Regular property\r\n current = current[part.prop];\r\n if (!$type.hasValue(current)) {\r\n // Not set, return undefined\r\n return;\r\n }\r\n }\r\n else {\r\n // Method\r\n switch (part.method) {\r\n case \"formatNumber\":\r\n var numberValue = $utils.anyToNumber(current);\r\n if ($type.hasValue(numberValue)) {\r\n current = this.numberFormatter.format(numberValue, format || part.params[0] || undefined);\r\n formatApplied = true;\r\n }\r\n break;\r\n case \"formatDate\":\r\n var dateValue = void 0;\r\n if ($type.isString(current)) {\r\n dateValue = this.dateFormatter.parse(current);\r\n }\r\n else {\r\n dateValue = $utils.anyToDate(current);\r\n }\r\n if (!$type.isDate(dateValue) || $type.isNaN(dateValue.getTime())) {\r\n // Was not able to get date out of value, quitting and letting\r\n // calling method try another value\r\n return;\r\n }\r\n if ($type.hasValue(dateValue)) {\r\n current = this.dateFormatter.format(dateValue, format || part.params[0] || undefined);\r\n formatApplied = true;\r\n }\r\n break;\r\n case \"formatDuration\":\r\n var durationValue = $utils.anyToNumber(current);\r\n if ($type.hasValue(durationValue)) {\r\n current = this.durationFormatter.format(durationValue, format || part.params[0] || undefined, part.params[1] || undefined);\r\n formatApplied = true;\r\n }\r\n break;\r\n case \"urlEncode\":\r\n case \"encodeURIComponent\":\r\n current = encodeURIComponent(current);\r\n break;\r\n default:\r\n if (current[part.method]) {\r\n current[part.method].apply(this, part.params);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n // Apply default format if it wasn't applied explicitly\r\n if (!formatApplied) {\r\n var formatParts = [{\r\n method: \"\",\r\n params: format\r\n }];\r\n if (!$type.hasValue(format)) {\r\n // Format is not set\r\n // Determine from the type of the value\r\n if ($type.isNumber(current)) {\r\n formatParts[0].method = \"formatNumber\";\r\n formatParts[0].params = \"\";\r\n }\r\n else if ($type.isDate(current)) {\r\n formatParts[0].method = \"formatDate\";\r\n formatParts[0].params = \"\";\r\n }\r\n }\r\n else {\r\n // Format set\r\n // Try to determine formatter based on the format\r\n var formatterType = $utils.getFormat(format);\r\n // format\r\n if (formatterType === $strings.NUMBER) {\r\n formatParts[0].method = \"formatNumber\";\r\n }\r\n else if (formatterType === $strings.DATE) {\r\n formatParts[0].method = \"formatDate\";\r\n }\r\n else if (formatterType === $strings.DURATION) {\r\n formatParts[0].method = \"formatDuration\";\r\n }\r\n }\r\n // Apply format\r\n if (formatParts[0].method) {\r\n current = this.getTagValueFromObject(formatParts, current);\r\n }\r\n }\r\n return current;\r\n };\r\n Object.defineProperty(Sprite.prototype, \"dataItem\", {\r\n /**\r\n * @return [[DataItem]]\r\n */\r\n get: function () {\r\n if (!this._dataItem) {\r\n if (this.virtualParent) {\r\n return this.virtualParent.dataItem;\r\n }\r\n if (this._parent) {\r\n return this._parent.dataItem;\r\n }\r\n }\r\n return this._dataItem;\r\n },\r\n /**\r\n * A [[DataItem]] to use as element's data source.\r\n *\r\n * @todo Review type\r\n * @param dataItem DataItem\r\n */\r\n set: function (dataItem) {\r\n //an not use this[\"_dataItem\"] here, as we return parent data item if this sprite doesn't have one.\r\n // @todo:think about it\r\n this.setDataItem(dataItem);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets currently used [[DataItem]].\r\n *\r\n * If the element has also `configField` set, it will also look for any\r\n * config in DataItem's data context to apply to this element.\r\n *\r\n * @param dataItem DataItem\r\n */\r\n Sprite.prototype.setDataItem = function (dataItem) {\r\n var _this = this;\r\n if (this._dataItem != dataItem) {\r\n this._dataItem = dataItem;\r\n if (dataItem) {\r\n if (this.configField) {\r\n var dataContext_1 = dataItem.dataContext;\r\n if (dataContext_1) {\r\n this.config = dataContext_1[this.configField];\r\n if (!this.config && dataContext_1.dataContext) {\r\n this.config = dataContext_1.dataContext[this.configField];\r\n }\r\n }\r\n }\r\n var dataContext_2 = dataItem.dataContext;\r\n if (dataContext_2) {\r\n var dataContext2_1 = dataContext_2.dataContext;\r\n $object.each(this.propertyFields, function (propertyName, fieldValue) {\r\n if ($type.hasValue(dataContext_2[fieldValue])) {\r\n var anyThis = _this;\r\n anyThis[propertyName] = dataContext_2[fieldValue];\r\n }\r\n else {\r\n if (dataContext2_1) {\r\n var value = dataContext2_1[fieldValue];\r\n if ($type.hasValue(value)) {\r\n var anyThis = _this;\r\n anyThis[propertyName] = value;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n this.invalidate();\r\n }\r\n };\r\n /**\r\n * ==========================================================================\r\n * PROPERTY UTILITIES\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Returns element's property value.\r\n *\r\n * Will check if there are any bindings with [[DataItem]].\r\n *\r\n * Will also apply any adapters bound to `propertyName`.\r\n *\r\n * @param propertyName Property name\r\n * @return Property value\r\n */\r\n Sprite.prototype.getPropertyValue = function (propertyName) {\r\n var propValue = this.properties[propertyName];\r\n // Apply adapter\r\n if (!this._isTemplate) {\r\n if (this._adapterO) {\r\n propValue = this._adapterO.apply(propertyName, propValue);\r\n }\r\n propValue = globalAdapter.applyAll(this, propertyName, propValue);\r\n }\r\n return propValue;\r\n };\r\n Sprite.prototype.setColorProperty = function (property, value, invalidate) {\r\n var currentValue = this.properties[property];\r\n if (value instanceof Color && currentValue instanceof Color && value.toString() == currentValue.toString()) {\r\n return false;\r\n }\r\n else {\r\n return this.setPropertyValue(property, value, invalidate);\r\n }\r\n };\r\n Sprite.prototype.setPercentProperty = function (property, value, invalidate, transform, precision, floor) {\r\n value = $type.toNumberOrPercent(value);\r\n if ($type.isNumber(value)) {\r\n if ($type.isNumber(precision)) {\r\n value = $math.round(value, precision, floor);\r\n }\r\n return this.setPropertyValue(property, value, invalidate, transform);\r\n }\r\n else {\r\n var currentValue = this.properties[property];\r\n if (value instanceof Percent && currentValue instanceof Percent && value.value == currentValue.value) {\r\n return false;\r\n }\r\n else {\r\n return this.setPropertyValue(property, value, invalidate, transform);\r\n }\r\n }\r\n };\r\n /**\r\n * Sets elements's property value. Will also propagate the same property value\r\n * on all element's clones.\r\n *\r\n * @param property Property\r\n * @param value Value\r\n * @param invalidate Should the sprite be invalidated, cause it's re-rendering\r\n * @param transform Re-apply positioning of the element\r\n * @return Did the value change? It will return `true` if the new value and the old value of the property are not the same\r\n * @todo Review propagation to clones. Right now we simply check if clone is disposed before setting the same property on it. It's better to remove from clone list altogether.\r\n */\r\n Sprite.prototype.setPropertyValue = function (property, value, invalidate, transform) {\r\n if (this.properties[property] !== value && !this.isDisposed()) {\r\n this.properties[property] = value;\r\n if (this.events.isEnabled(\"propertychanged\")) {\r\n var event_1 = {\r\n type: \"propertychanged\",\r\n target: this,\r\n property: property\r\n };\r\n this.events.dispatchImmediately(\"propertychanged\", event_1);\r\n }\r\n if (invalidate) {\r\n this.invalidate();\r\n }\r\n if (transform) {\r\n this.invalidatePosition();\r\n }\r\n if (this.applyOnClones) {\r\n var clones = this.clones.values;\r\n var length_2 = clones.length;\r\n for (var i = 0; i < length_2; ++i) {\r\n var clone = clones[i];\r\n if (!clone.isDisposed()) {\r\n //(<Sprite>clone).setPropertyValue(<any>property, value, invalidate, transform);\r\n clone[property] = value;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n return false;\r\n };\r\n Sprite.prototype.bind = function (property, source, bindToProperty, modifier) {\r\n var _this = this;\r\n if (bindToProperty === void 0) { bindToProperty = property; }\r\n if ($type.hasValue(this._bindings[property])) {\r\n this._bindings[property].dispose();\r\n }\r\n // set current value\r\n this[property] = source[bindToProperty];\r\n //source.addEventListener(AMEvent.PROPERTY_CHANGED, this.handleBindings, false, this);\r\n this._bindings[property] = source.events.on(\"propertychanged\", function (event) {\r\n if (event.property === bindToProperty) {\r\n var value = source[bindToProperty];\r\n if (modifier) {\r\n value = modifier(value);\r\n }\r\n // TODO clonesById\r\n _this[property] = value;\r\n }\r\n });\r\n };\r\n /**\r\n * Sets up and obeserver function to monitor changes in particular property\r\n * or properties.\r\n *\r\n * @ignore Exclude from docs\r\n * @param property Element's property name\r\n * @param listener Handler function\r\n * @param context Context for handler function\r\n * @returns Event Disposer\r\n */\r\n Sprite.prototype.observe = function (property, listener, context, shouldClone) {\r\n var _this = this;\r\n return new MultiDisposer($array.map($array.toArray(property), function (prop) {\r\n return _this.events.on(\"propertychanged\", function (e) {\r\n if (e.property === prop) {\r\n listener.call(context, e);\r\n }\r\n }, context, shouldClone);\r\n }));\r\n };\r\n /**\r\n * ==========================================================================\r\n * ACCESSIBILITY-RELATED PROPERTIES\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Applies accessibility to the SVG element.\r\n *\r\n * Adds `<title>` and `<description>` elements as well as `aria-labelledby`\r\n * and `role` properties.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.applyAccessibility = function () {\r\n // Check if we need to add label and description\r\n var title = this.readerTitle, description = this.readerDescription, role = this.role, hidden = this.readerHidden, checked = this.readerChecked, controls = this.readerControls, live = this.readerLive, orientation = this.readerOrientation, valueNow = this.readerValueNow, valueText = this.readerValueText;\r\n // Init label/describe ids\r\n var labelledByIds = [];\r\n var describedByIds = [];\r\n var labelledBy = this.readerLabelledBy;\r\n if (labelledBy) {\r\n labelledByIds.push(labelledBy);\r\n }\r\n var describedBy = this.readerDescribedBy;\r\n if (describedBy) {\r\n describedByIds.push(describedBy);\r\n }\r\n // Add arial-label attribute if present\r\n // If not readerTitle and labelledBy is set we will use <title> element\r\n // instead of aria-label\r\n // TODO: should we check agains this.showSystemTooltip?\r\n if (title) {\r\n if (labelledByIds.length || this.showSystemTooltip) {\r\n var titleElement = this.titleElement;\r\n var titleId = this.uid + \"-title\";\r\n if (titleElement.node.textContent != title) {\r\n titleElement.node.textContent = title;\r\n titleElement.attr({ id: titleId });\r\n }\r\n labelledByIds.push(titleId);\r\n }\r\n else {\r\n if (this._titleElement) {\r\n this.group.removeElement(this._titleElement);\r\n this._titleElement = undefined;\r\n }\r\n this.setSVGAttribute({\r\n \"aria-label\": title\r\n });\r\n }\r\n }\r\n else {\r\n this.removeSVGAttribute(\"aria-label\");\r\n if (this._titleElement) {\r\n this.group.removeElement(this._titleElement);\r\n this._titleElement = undefined;\r\n }\r\n }\r\n // Add description\r\n if (description) {\r\n var descriptionElement = this.descriptionElement;\r\n var descriptionId = this.uid + \"-description\";\r\n if (descriptionElement.node.textContent != description) {\r\n descriptionElement.node.textContent = description;\r\n descriptionElement.attr({ id: descriptionId });\r\n }\r\n describedByIds.push(descriptionId);\r\n }\r\n else if (this._descriptionElement) {\r\n this.group.removeElement(this._descriptionElement);\r\n this._descriptionElement = undefined;\r\n }\r\n // Add label and described properties\r\n if (labelledByIds.length) {\r\n this.setSVGAttribute({ \"aria-labelledby\": labelledByIds.join(\" \") });\r\n }\r\n else {\r\n this.removeSVGAttribute(\"aria-labelledby\");\r\n }\r\n if (describedByIds.length) {\r\n this.setSVGAttribute({ \"aria-describedby\": describedByIds.join(\" \") });\r\n }\r\n else {\r\n this.removeSVGAttribute(\"aria-describedby\");\r\n }\r\n // Apply role\r\n if (role) {\r\n this.setSVGAttribute({ \"role\": role });\r\n }\r\n else {\r\n this.removeSVGAttribute(\"role\");\r\n }\r\n // Apply aria-hidden\r\n if (hidden) {\r\n this.setSVGAttribute({ \"aria-hidden\": \"true\" });\r\n }\r\n else {\r\n this.removeSVGAttribute(\"aria-hidden\");\r\n }\r\n // Apply aria-checked\r\n if (checked) {\r\n this.setSVGAttribute({ \"aria-checked\": \"true\" });\r\n }\r\n else if (checked === false) {\r\n this.setSVGAttribute({ \"aria-checked\": \"false\" });\r\n }\r\n else {\r\n this.removeSVGAttribute(\"aria-checked\");\r\n }\r\n // Apply aria-controls\r\n if (controls) {\r\n this.setSVGAttribute({ \"aria-controls\": controls });\r\n }\r\n else {\r\n this.removeSVGAttribute(\"aria-controls\");\r\n }\r\n // Apply aria-live\r\n if (live) {\r\n this.setSVGAttribute({ \"aria-live\": live });\r\n }\r\n else {\r\n this.removeSVGAttribute(\"aria-live\");\r\n }\r\n // Apply aria-orientation\r\n if (orientation) {\r\n this.setSVGAttribute({ \"aria-orientation\": orientation });\r\n }\r\n else {\r\n this.removeSVGAttribute(\"aria-orientation\");\r\n }\r\n // Apply aria-valuenow\r\n if (valueNow) {\r\n this.setSVGAttribute({ \"aria-valuenow\": valueNow });\r\n }\r\n else {\r\n this.removeSVGAttribute(\"aria-valuenow\");\r\n }\r\n // Apply aria-valuetext\r\n if (valueText) {\r\n this.setSVGAttribute({ \"aria-valuetext\": valueText });\r\n }\r\n else {\r\n this.removeSVGAttribute(\"aria-valuetext\");\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"readerTitle\", {\r\n /**\r\n * @return Title\r\n */\r\n get: function () {\r\n var title = this.getPropertyValue(\"readerTitle\");\r\n if ($type.hasValue(title) && this.dataItem) {\r\n return this.populateString(title);\r\n }\r\n return title;\r\n },\r\n /**\r\n * Screen reader title of the element.\r\n *\r\n * @param value Title\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"readerTitle\", value)) {\r\n this.applyAccessibility();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"readerDescription\", {\r\n /**\r\n * @return Description\r\n */\r\n get: function () {\r\n var description = this.getPropertyValue(\"readerDescription\");\r\n if ($type.hasValue(description) && this.dataItem) {\r\n return this.populateString(description);\r\n }\r\n return this.getPropertyValue(\"readerDescription\");\r\n },\r\n /**\r\n * Screen reader description of the element.\r\n *\r\n * @param value Description\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"readerDescription\", value)) {\r\n this.applyAccessibility();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"role\", {\r\n /**\r\n * @return Role\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"role\");\r\n },\r\n /**\r\n * A WAI-ARIA role for the element.\r\n *\r\n * @see {@link https://www.w3.org/TR/wai-aria-1.1/#role_definitions} for more information on WAI-ARIA roles\r\n * @param value Role\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"role\", value)) {\r\n this.applyAccessibility();\r\n if (value == \"slider\") {\r\n this.setSVGAttribute({ \"aria-valuemin\": \"0\" });\r\n this.setSVGAttribute({ \"aria-valuemax\": \"100\" });\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"readerHidden\", {\r\n /**\r\n * @return Hidden?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"readerHidden\");\r\n },\r\n /**\r\n * Controls if element should be hidden from screen readers.\r\n *\r\n * @see {@link https://www.w3.org/TR/wai-aria-1.1/#aria-hidden} for more information\r\n * @param value Hidden?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (this.setPropertyValue(\"readerHidden\", value)) {\r\n this.applyAccessibility();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"readerChecked\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Checked?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"readerChecked\");\r\n },\r\n /**\r\n * Controls if element is currently marked as \"checked\".\r\n *\r\n * @ignore Exclude from docs\r\n * @see {@link https://www.w3.org/TR/wai-aria-1.1/#aria-checked} for more information\r\n * @param value Checked?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (this.setPropertyValue(\"readerChecked\", value)) {\r\n this.applyAccessibility();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"readerControls\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Setting value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"readerControls\");\r\n },\r\n /**\r\n * A `uid` of an element this element controls.\r\n *\r\n * @ignore Exclude from docs\r\n * @see {@link https://www.w3.org/TR/wai-aria-1.1/#aria-controls} for more information\r\n * @param value Setting value\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"readerControls\", value)) {\r\n this.applyAccessibility();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"readerLive\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Setting value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"readerLive\");\r\n },\r\n /**\r\n * Controls accessibility setting \"aria-live\" for the element.\r\n *\r\n * @ignore Exclude from docs\r\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Live_Regions} for more information\r\n * @param value Setting value\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"readerLive\", value)) {\r\n this.applyAccessibility();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"readerLabelledBy\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Target element\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"readerLabelledBy\");\r\n },\r\n /**\r\n * A `uid` of an element that describes this element.\r\n *\r\n * @ignore Exclude from docs\r\n * @see {@link https://www.w3.org/TR/wai-aria-1.1/#aria-labelledby} for more information\r\n * @param value Target element\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"readerLabelledBy\", value)) {\r\n this.applyAccessibility();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"readerDescribedBy\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Target element\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"readerDescribedBy\");\r\n },\r\n /**\r\n * A `uid` of an element that describes this element.\r\n *\r\n * @ignore Exclude from docs\r\n * @see {@link https://www.w3.org/TR/wai-aria-1.1/#aria-describedby} for more information\r\n * @param value Target element\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"readerDescribedBy\", value)) {\r\n this.applyAccessibility();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"readerOrientation\", {\r\n /**\r\n * @return Orientation\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"readerOrientation\");\r\n },\r\n /**\r\n * Orientation of the element.\r\n *\r\n * @since 4.7.16\r\n * @param value Orientation\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"readerOrientation\", value)) {\r\n this.applyAccessibility();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"readerValueNow\", {\r\n /**\r\n * @return Current value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"readerValueNow\");\r\n },\r\n /**\r\n * Current value of the element.\r\n *\r\n * @since 4.7.16\r\n * @param value Current value\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"readerValueNow\", value)) {\r\n this.applyAccessibility();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"readerValueText\", {\r\n /**\r\n * @return Current value (text)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"readerValueText\");\r\n },\r\n /**\r\n * Text representation of the current value of the element.\r\n *\r\n * @since 4.7.16\r\n * @param value Current value (text)\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"readerValueText\", value)) {\r\n this.applyAccessibility();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"keyboardOptions\", {\r\n /**\r\n * ==========================================================================\r\n * USER INTERACTIONS\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Returns elements keyboard options.\r\n *\r\n * @return Keyboard options\r\n */\r\n get: function () {\r\n if (!this.interactions.keyboardOptions) {\r\n if (this.virtualParent) {\r\n return this.virtualParent.keyboardOptions;\r\n }\r\n if (this._parent) {\r\n return this._parent.keyboardOptions;\r\n }\r\n }\r\n return this.interactions.keyboardOptions;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"mouseOptions\", {\r\n /**\r\n * Mouse options.\r\n *\r\n * Enables controlling options related to the mouse, for example sensitivity\r\n * of its mouse wheel.\r\n *\r\n * E.g. the below will reduce chart's wheel-zoom speed to half its default\r\n * speed:\r\n *\r\n * ```TypeScript\r\n * chart.plotContainer.mouseOptions.sensitivity = 0.5;\r\n * ```\r\n * ```JavaScript\r\n * chart.plotContainer.mouseOptions.sensitivity = 0.5;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"plotContainer\": {\r\n * \"mouseOptions\": {\r\n * \"sensitivity\": 0.5\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * @return Mouse options\r\n */\r\n get: function () {\r\n if (!this.interactions.mouseOptions) {\r\n if (this.virtualParent) {\r\n return this.virtualParent.mouseOptions;\r\n }\r\n if (this._parent) {\r\n return this._parent.mouseOptions;\r\n }\r\n }\r\n return this.interactions.mouseOptions;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"interactions\", {\r\n /**\r\n * Returns (creates if necessary) an [[InteractionObject]] associated with\r\n * this element.\r\n *\r\n * [[InteractionObject]] is used to attach all kinds of user-interactions to\r\n * the element, e.g. click/touch, dragging, hovering, and similar events.\r\n *\r\n * @return Interaction object\r\n */\r\n get: function () {\r\n if (!this._interaction) {\r\n var interaction = getInteraction().getInteraction(this.dom);\r\n this._interaction = interaction;\r\n this._interaction.clickable = this.clickable;\r\n this._interaction.hoverable = this.hoverable;\r\n this._interaction.trackable = this.trackable;\r\n this._interaction.draggable = this.draggable;\r\n this._interaction.swipeable = this.swipeable;\r\n this._interaction.resizable = this.resizable;\r\n this._interaction.wheelable = this.wheelable;\r\n this._interaction.contextMenuDisabled = this.contextMenuDisabled;\r\n this._interaction.inert = this.inert;\r\n this._interaction.sprite = this;\r\n this._disposers.push(this._interaction);\r\n }\r\n return this._interaction;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns true if interactions object was created. Mostly used just to avoid creating interactions object if not needed.\r\n * @return Is Sprite interactive?\r\n */\r\n Sprite.prototype.isInteractive = function () {\r\n if (this._interaction) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"focusable\", {\r\n /**\r\n * @return Can element be focused?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"focusable\");\r\n },\r\n /**\r\n * ==========================================================================\r\n * ELEMENT FOCUS-RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Controls if the element can gain focus.\r\n *\r\n * Focusable element will be selectable via TAB key.\r\n *\r\n * Please note, clicking it with a mouse or touching will not add focus to\r\n * it.\r\n *\r\n * Focused element will show a system-specific highlight, which might ruin\r\n * the overal look. This is why we don't focus element on click/touch.\r\n *\r\n * A default setting varies for different elements. By default all elements\r\n * are not focusable, except certain items like buttons, legend items, etc.\r\n *\r\n * @default undefined (auto)\r\n * @param value Can element be focused?\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n value = $type.toBoolean(value);\r\n if (this.setPropertyValue(\"focusable\", value)) {\r\n if (!value && !this.isInteractive()) {\r\n }\r\n else {\r\n this.interactions.focusable = value;\r\n if (value) {\r\n this.setSVGAttribute({ \"focusable\": value });\r\n if (!this._tabindex) {\r\n this.tabindex = 0;\r\n }\r\n }\r\n else {\r\n this.removeSVGAttribute(\"focusable\");\r\n this.tabindex = undefined;\r\n }\r\n // Set focus events that would apply \"focus\" state\r\n // setEventDisposer will also remove listeners if value == false\r\n this.interactions.setEventDisposer(\"sprite-focusable\", value, function () { return new MultiDisposer([\r\n _this.events.on(\"blur\", _this.handleBlur, _this, false),\r\n _this.events.on(\"focus\", _this.handleFocus, _this, false)\r\n ]); });\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Applies filters (if set) when element gains focus.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Original event\r\n */\r\n Sprite.prototype.handleFocus = function (ev) {\r\n if (this.focusable) {\r\n if (this.topParent) {\r\n this.topParent.hasFocused = true;\r\n this.topParent.focusedElement = this;\r\n }\r\n if (this.focusFilter) {\r\n // Any `filters` manipulation will trigger `applyFilters()` so we don't\r\n // need to call it here\r\n this.filters.push(this.focusFilter);\r\n }\r\n if (this.hoverOnFocus) {\r\n // Trigger a hover event as well\r\n this.isHover = true;\r\n this.handleOver();\r\n }\r\n }\r\n };\r\n /**\r\n * Removes focus filter (if set) when elementloses focus.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Original event\r\n */\r\n Sprite.prototype.handleBlur = function (ev) {\r\n if (this.focusable) {\r\n if (this.topParent) {\r\n this.topParent.hasFocused = false;\r\n this.topParent.focusedElement = undefined;\r\n }\r\n if (this.focusFilter) {\r\n // Any `filters` manipulation will trigger `applyFilters()` so we don't\r\n // need to call it here\r\n this.filters.removeValue(this.focusFilter);\r\n }\r\n if (this.hoverOnFocus) {\r\n // Trigger a out event as well\r\n this.isHover = false;\r\n this.handleOut();\r\n }\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"focusFilter\", {\r\n /**\r\n * A reference to a [[Filter]] to apply to element when it gains focus.\r\n *\r\n * Normally, browsers will draw a default ugly square around focused element,\r\n * which totally makes sense because its purpose is to help identify active\r\n * element for visually impaired people.\r\n *\r\n * However, if you would rather apply a filter, so you can modify how focused\r\n * element looks like, use `focusFilter`.\r\n *\r\n * Simply set it to an anstance of [[FocusFilter]], or any other filter\r\n * object.\r\n *\r\n * ```TypeScript\r\n * chart.focusFilter = new am4core.FocusFilter();\r\n * ```\r\n * ```JavaScript\r\n * chart.focusFilter = new am4core.FocusFilter();\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"focusFilter\": {\r\n * \"type\": \"FocusFilter\"\r\n * },\r\n * // ...\r\n * }\r\n * ```\r\n *\r\n * @see {@link Filter}\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/accessibility/} more about accessibility\r\n * @see {@link https://www.amcharts.com/docs/v4/tutorials/changing-appearance-of-focused-items/} cusomizing focus appearance\r\n * @ignore Exclude from docs\r\n * @return Focused element filter\r\n */\r\n get: function () {\r\n /*if (!this._focusFilter) {\r\n this._focusFilter = new FocusFilter();\r\n this._disposers.push(this._focusFilter);\r\n }*/\r\n //return this._focusFilter;\r\n var focusFilter = this._focusFilter;\r\n if (focusFilter) {\r\n return focusFilter;\r\n }\r\n if (this.virtualParent) {\r\n return this.virtualParent.focusFilter;\r\n }\r\n else if (this._parent) {\r\n return this._parent.focusFilter;\r\n }\r\n //this._focusFilter = new FocusFilter();\r\n //this._disposers.push(this._focusFilter);\r\n },\r\n /**\r\n * @see {@link Filter}\r\n * @ignore Exclude from docs\r\n * @todo This is still experimental, don't use it\r\n */\r\n set: function (value) {\r\n this._focusFilter = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"hoverOnFocus\", {\r\n /**\r\n * @return Trigger hover on focus?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"hoverOnFocus\");\r\n },\r\n /**\r\n * If set to `true`, this element will also trigger `\"over\"` event with all\r\n * the related consequences, like \"hover\" state being applied and tooltip\r\n * being shown.\r\n *\r\n * Useful as an accessibility feature to display rollover tooltips on items\r\n * selected via keyboard.\r\n *\r\n * @param value Trigger hover on focus?\r\n * @default false\r\n */\r\n set: function (value) {\r\n if (value !== this.hoverOnFocus) {\r\n this.setPropertyValue(\"hoverOnFocus\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"tabindex\", {\r\n /**\r\n * @return TAB index\r\n */\r\n get: function () {\r\n var index = this._tabindex;\r\n if (index != null) {\r\n return index;\r\n }\r\n else if (this.virtualParent) {\r\n return this.virtualParent.tabindex;\r\n }\r\n else if (this._parent) {\r\n return this._parent.tabindex;\r\n }\r\n },\r\n /**\r\n * Sets or returns TAB index.\r\n *\r\n * Tab index maintains the order in which focusable elements gain focus when\r\n * TAB key is pressed.\r\n *\r\n * Please note, tab index is not local to the chart. It affects the whole\r\n * of the page, including non-SVG elements. Maintain extreme causion when\r\n * setting tab indexes, as it affects the user experience for the whole\r\n * web page.\r\n *\r\n * @param value TAB index\r\n */\r\n set: function (value) {\r\n value = $type.toNumber(value);\r\n if (this.setPropertyValue(\"tabindex\", value) && $type.isNumber(value)) {\r\n this.interactions.tabindex = value;\r\n this.setSVGAttribute({ \"tabindex\": value });\r\n this._tabindex = value;\r\n if (value > -1) {\r\n this.focusable = true;\r\n }\r\n else {\r\n this.focusable = undefined;\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"inertiaOptions\", {\r\n /**\r\n * ==========================================================================\r\n * DRAGGING AND RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Returns element's options to be used for inertia. This setting is\r\n * inheritable, meaning that if not set directly, it will search in all its\r\n * ascendants until very top.\r\n *\r\n * Inertia is used only if element's `inert` is set to `true`.\r\n *\r\n * \"Inert\" element, when dragged and released, will carry the momentum of the\r\n * movement, and will continue moving in the same drag direction, gradually\r\n * reducing in speed until finally stops.\r\n *\r\n * Check [[IInertiaOptions]] for how you tweak inertia animations.\r\n *\r\n * @return Inertia options\r\n */\r\n get: function () {\r\n if (!this.interactions.inertiaOptions) {\r\n if (this._parent) {\r\n return this._parent.inertiaOptions;\r\n }\r\n }\r\n return this.interactions.inertiaOptions;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"draggable\", {\r\n /**\r\n * @return `true` if element can be dragged\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"draggable\");\r\n },\r\n /**\r\n * Controls if the element is draggable.\r\n *\r\n * @param value `true` if element can be dragged\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n value = $type.toBoolean(value);\r\n if (this.setPropertyValue(\"draggable\", value)) {\r\n if (!value && !this.isInteractive()) {\r\n }\r\n else {\r\n this.applyCursorStyle();\r\n this.interactions.draggable = value;\r\n //interaction.processDraggable(this);\r\n // Add events\r\n // @todo Maybe attach to InteractionObject's multidisposer so that\r\n // sprites events get disposed together with them?\r\n // this.interactions.disposers.getItem(\"movable\")\r\n // setEventDisposer will also remove listeners if value == false\r\n this.interactions.setEventDisposer(\"sprite-draggable\", value, function () { return new MultiDisposer([\r\n _this.events.on(\"down\", _this.handleDown, _this, false),\r\n _this.events.on(\"dragstart\", _this.handleDragStart, _this, false),\r\n _this.events.on(\"drag\", _this.handleDragMove, _this, false),\r\n _this.events.on(\"dragstop\", _this.handleDragStop, _this, false)\r\n ]); });\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Executes when dragged element is being started to drag.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.handleDragStart = function (ev) {\r\n if (!this.interactions.isTouchProtected || !ev.touch) {\r\n this.interactions.originalPosition = {\r\n x: this.pixelX,\r\n y: this.pixelY\r\n };\r\n this._isDragged = true;\r\n this.hideTooltip(0);\r\n }\r\n };\r\n /**\r\n * Tell this element to start being dragged. This is useful if you want to\r\n * drag items by interactions performed not directly on the target element.\r\n *\r\n * Parameter `pointer` is highly recommended. By passing in the Pointer you\r\n * will ensure that movement is tracked for the pointer that you want. If not\r\n * supplied, the system will try to determine the most logical pointer.\r\n *\r\n * However this may fail if you have more than one pointer active, which\r\n * might happen if you have several objects being dragged on a touch device.\r\n *\r\n * @ignore Exclude from docs\r\n * @param pointer Pointer to use for movement\r\n */\r\n Sprite.prototype.dragStart = function (pointer) {\r\n //this.dragStop(pointer);\r\n //this.draggable = true;\r\n this._isDragged = true;\r\n getInteraction().dragStart(this.interactions, pointer);\r\n };\r\n /**\r\n * Executes when dragged element is being dropped.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype.handleDragStop = function (ev) {\r\n if (!this.interactions.isTouchProtected || !ev.touch) {\r\n this._isDragged = false;\r\n this.showTooltip();\r\n this.interactions.originalPosition = undefined;\r\n }\r\n };\r\n /**\r\n * Stops manually initiated dragging of the element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param pointer Pointer to use as a reference\r\n */\r\n Sprite.prototype.dragStop = function (pointer, cancelled) {\r\n //this.draggable = false;\r\n this._isDragged = false;\r\n getInteraction().dragStop(this.interactions, pointer, cancelled);\r\n //this.handleDragStop();\r\n };\r\n /**\r\n * Executes when {Sprite} is being dragged.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event object\r\n * @todo Implement parent position offset calculation\r\n */\r\n Sprite.prototype.handleDragMove = function (ev) {\r\n if (!this.interactions.isTouchProtected || !ev.touch) {\r\n var point = this.interactions.originalPosition;\r\n if (point && this._isDragged) {\r\n var globalScale = this._parent.globalScale * this.svgContainer.cssScale;\r\n this.moveTo({ x: point.x + ev.shift.x / globalScale, y: point.y + ev.shift.y / globalScale }, undefined, undefined, true);\r\n }\r\n this.dispatchImmediately(\"dragged\", ev);\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"inert\", {\r\n /**\r\n * @return `true` if element should use inertia when animated\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"inert\");\r\n },\r\n /**\r\n * Controls if the element should use inertia when interacted with.\r\n *\r\n * \"Inert\" element, when dragged and released, will carry the momentum of the\r\n * movement, and will continue moving in the same drag direction, gradually\r\n * reducing in speed until finally stops.\r\n *\r\n * @default false\r\n * @param value `true` if element should use inertia when animated\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (this.setPropertyValue(\"inert\", value)) {\r\n if (!value && !this.isInteractive()) {\r\n // void\r\n }\r\n else {\r\n this.interactions.inert = value;\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"hoverOptions\", {\r\n /**\r\n * ==========================================================================\r\n * HOVERING\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Returns Sprite's hover options.\r\n *\r\n * @see {@link IHoverOptions} for available options.\r\n * @return Options\r\n */\r\n get: function () {\r\n if (!this.interactions.hoverOptions) {\r\n if (this.virtualParent) {\r\n return this.virtualParent.hoverOptions;\r\n }\r\n if (this._parent) {\r\n return this._parent.hoverOptions;\r\n }\r\n }\r\n return this.interactions.hoverOptions;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"hoverable\", {\r\n /**\r\n * @return `true` if element is hoverable\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"hoverable\");\r\n },\r\n /**\r\n * Controls if the element is hoverable (hover events are registered).\r\n *\r\n * Use `over` and `out` events, to watch for those respective actions.\r\n *\r\n * @default false\r\n * @param value `true` if element can be hovered\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n value = $type.toBoolean(value);\r\n if (this.setPropertyValue(\"hoverable\", value)) {\r\n if (!value && !this.isInteractive()) {\r\n // void\r\n }\r\n else {\r\n this.applyCursorStyle();\r\n this.interactions.hoverable = value;\r\n // setEventDisposer will also remove listeners if value == false\r\n this.interactions.setEventDisposer(\"sprite-hoverable\", value, function () { return new MultiDisposer([\r\n _this.events.on(\"over\", _this.handleOver, _this, false),\r\n _this.events.on(\"out\", _this.handleOut, _this, false),\r\n ]); });\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Handles tasks when element becomes hovered:\r\n * * Shows [[Tooltip]] if applicable\r\n * * Applies \"hover\" state\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event object\r\n */\r\n Sprite.prototype.handleOver = function (ev) {\r\n if (this._outTimeout) {\r\n this._outTimeout.dispose();\r\n }\r\n if (this.isHover) {\r\n if (this.states.hasKey(\"hover\")) {\r\n //this.setState(\"hover\");\r\n // This will check `isHover` and will set \"hover\" state\r\n if (!this.isHidden) {\r\n this.applyCurrentState();\r\n }\r\n }\r\n var point = void 0;\r\n if (ev && ev.pointer) {\r\n point = $utils.documentPointToSvg(ev.pointer.point, this.svgContainer.SVGContainer, this.svgContainer.cssScale);\r\n }\r\n if (this.showTooltipOn == \"hover\") {\r\n this.showTooltip(point);\r\n }\r\n }\r\n else {\r\n if (this.showTooltipOn == \"hover\") {\r\n this.hideTooltip();\r\n }\r\n if (!this.isHidden && this.states.hasKey(\"hover\")) {\r\n this.applyCurrentState();\r\n }\r\n }\r\n };\r\n /**\r\n * Handles tasks when element loses hover:\r\n *\r\n * * Hides [[Tooltip]]\r\n * * Applies default state\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev [description]\r\n */\r\n Sprite.prototype.handleOut = function (ev) {\r\n var _this = this;\r\n if (this.tooltip && this.tooltip.targetSprite == this && this.tooltip.keepTargetHover) {\r\n this._outTimeout = this.setTimeout(function () {\r\n if (!_this.tooltip.isHover) {\r\n if (_this.tooltip.targetSprite == _this) {\r\n _this.hideTooltip();\r\n }\r\n _this._outTimeout = _this.setTimeout(_this.handleOutReal.bind(_this), _this.rollOutDelay);\r\n }\r\n }, 10);\r\n return;\r\n }\r\n if (this.showTooltipOn == \"hover\") {\r\n this.hideTooltip();\r\n }\r\n this._outTimeout = this.setTimeout(this.handleOutReal.bind(this), this.rollOutDelay);\r\n };\r\n /**\r\n * [handleOutReal description]\r\n *\r\n * @ignore\r\n * @todo description\r\n */\r\n Sprite.prototype.handleOutReal = function () {\r\n if (!this.isHidden && !this.isHiding && this.states.hasKey(\"hover\")) {\r\n this.applyCurrentState();\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"hitOptions\", {\r\n /**\r\n * ==========================================================================\r\n * CLICKING/TAPPING AND TOGGLING STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Returns Sprite's click (hit) options.\r\n *\r\n * Click (hit) options control things like double-click, timeouts, etc.\r\n *\r\n * @see {@link IHitOptions} for available options.\r\n * @return Options\r\n */\r\n get: function () {\r\n if (!this.interactions.hitOptions) {\r\n if (this.virtualParent) {\r\n return this.virtualParent.hitOptions;\r\n }\r\n if (this._parent) {\r\n return this._parent.hitOptions;\r\n }\r\n }\r\n return this.interactions.hitOptions;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Prepares element's after `down` event.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event\r\n */\r\n Sprite.prototype.handleDown = function (ev) {\r\n if (this.interactions.downPointers.length === 1) {\r\n this.interactions.originalPosition = {\r\n x: this.pixelX,\r\n y: this.pixelY\r\n };\r\n this.interactions.originalAngle = this.rotation;\r\n this.interactions.originalScale = this.scale;\r\n if (this.states.hasKey(\"down\")) {\r\n this.setState(\"down\");\r\n }\r\n }\r\n };\r\n /**\r\n * Prepares element's after `up` event.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event\r\n */\r\n Sprite.prototype.handleUp = function (ev) {\r\n var _this = this;\r\n /*if (!this.isDown) {\r\n this.interactions.originalPosition = null;\r\n this.interactions.originalAngle = null;\r\n this.interactions.originalScale = null;\r\n }*/\r\n this._isResized = false;\r\n if (this.states.hasKey(\"down\")) {\r\n this.applyCurrentState();\r\n }\r\n if (this.showTooltipOn == \"hit\") {\r\n this.updateTooltipPosition(ev.pointer ? ev.pointer.point : undefined);\r\n this._disposers.push(registry.events.once(\"exitframe\", function () {\r\n _this.showTooltip();\r\n }));\r\n this._disposers.push(getInteraction().body.events.once(\"down\", function (ev) {\r\n _this.hideTooltip();\r\n }));\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"clickable\", {\r\n /**\r\n * @return {boolean}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"clickable\");\r\n },\r\n /**\r\n * Indicates if the element is clickable.\r\n *\r\n * Some type of the elements, like buttons are clickable by default.\r\n *\r\n * Most of the elements are not clickable by default.\r\n *\r\n * Use `hit`, `doublehit`, `up`, `down`, `toggled` events to watch for\r\n * respective click/touch actions.\r\n *\r\n * @param value `true` if element can be clicked\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n value = $type.toBoolean(value);\r\n if (this.setPropertyValue(\"clickable\", value)) {\r\n if (!value && !this.isInteractive()) {\r\n // void\r\n }\r\n else {\r\n this.applyCursorStyle();\r\n this.interactions.clickable = value;\r\n // setEventDisposer will also remove listeners if value == false\r\n this.interactions.setEventDisposer(\"sprite-clickable\", value, function () { return new MultiDisposer([\r\n _this.events.on(\"down\", _this.handleDown, _this, false),\r\n _this.events.on(\"up\", _this.handleUp, _this, false)\r\n ]); });\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"togglable\", {\r\n /**\r\n * @return Is togglable?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"togglable\");\r\n },\r\n /**\r\n * Indicates if element can be toggled on and off by subsequent clicks/taps.\r\n *\r\n * Togglable element will alternate its `isActive` property between `true`\r\n * and `false` with each click.\r\n *\r\n * @param value Is togglable?\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n value = $type.toBoolean(value);\r\n if (this.setPropertyValue(\"togglable\", value)) {\r\n if (!value && !this.isInteractive()) {\r\n // void\r\n }\r\n else {\r\n // setEventDisposer will also remove listeners if value == false\r\n this.interactions.setEventDisposer(\"sprite-togglable\", value, function () { return _this.events.on(\"hit\", _this.handleToggle, _this, false); });\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Handles toggling of the element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event\r\n */\r\n Sprite.prototype.handleToggle = function (ev) {\r\n this.isActive = !this.isActive;\r\n };\r\n Object.defineProperty(Sprite.prototype, \"contextMenuDisabled\", {\r\n /**\r\n * @return Context menu disabled?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"contextMenuDisabled\");\r\n },\r\n /**\r\n * Should element prevent context menu to be displayed, e.g. when\r\n * right-clicked?\r\n *\r\n * @default false\r\n * @param value Context menu disabled?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (this.setPropertyValue(\"contextMenuDisabled\", value)) {\r\n this.interactions.contextMenuDisabled = value;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"url\", {\r\n /**\r\n * @return URL\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"url\");\r\n },\r\n /**\r\n * Click-through URL for this element.\r\n *\r\n * If set, clicking/tapping this element will open the new URL in a target\r\n * window/tab as set by `urlTarget`.\r\n *\r\n * Please note that URL will be parsed by data placeholders in curly\r\n * brackets, to be populated from data. E.g.:\r\n *\r\n * ```TypeScript\r\n * series.columns.template.url = \"https://www.google.com/search?q={category.urlEncode()}\";\r\n * ```\r\n * ```JavaScript\r\n * series.columns.template.url = \"https://www.google.com/search?q={category.urlEncode()}\";\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"columns\": {\r\n * \"url\": \"https://www.google.com/search?q={category.urlEncode()}\"\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @param value URL\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"url\", value)) {\r\n if (this._urlDisposer) {\r\n this._urlDisposer.dispose();\r\n }\r\n // If URL is not empty, set up events\r\n if ($utils.isNotEmpty(value)) {\r\n this._urlDisposer = this.events.on(\"hit\", this.urlHandler, this, false);\r\n // Set other required parameters\r\n this.clickable = true;\r\n this.cursorOverStyle = MouseCursorStyle.pointer;\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"baseId\", {\r\n /**\r\n * [baseId description]\r\n *\r\n * @ignore\r\n * @return [description]\r\n */\r\n get: function () {\r\n if (!this._baseId && this._parent) {\r\n this.baseId = this._parent.baseId;\r\n }\r\n return this._baseId;\r\n },\r\n /**\r\n * [baseId description]\r\n *\r\n * @ignore\r\n * @param value [description]\r\n */\r\n set: function (value) {\r\n this.setBaseId(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Sprite.prototype.setBaseId = function (value) {\r\n if (value != this._baseId) {\r\n if (this.invalid) {\r\n this.invalid = false;\r\n registry.removeFromInvalidSprites(this);\r\n this.invalidate();\r\n }\r\n this._baseId = value;\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"baseSprite\", {\r\n /**\r\n * Returns the mail chart object that this element belongs to.\r\n *\r\n * In most cases it will mean the chart object.\r\n *\r\n * Can be used to retrieve chart object in various events and adapters.\r\n *\r\n * ```TypeScript\r\n * chart.seriesContainer.events.on(\"hit\", function(ev) {\r\n * console.log(ev.target.baseSprite);\r\n * });\r\n * ```\r\n * ```JavaScript\r\n * chart.seriesContainer.events.on(\"hit\", function(ev) {\r\n * console.log(ev.target.baseSprite);\r\n * });\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"seriesContainer\": {\r\n * \"events\": {\r\n * \"hit\": function(ev) {\r\n * console.log(ev.target.baseSprite);\r\n * }\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * @readonly\r\n * @return Base chart object\r\n */\r\n get: function () {\r\n if (this.isBaseSprite) {\r\n return this;\r\n }\r\n else if (this._parent) {\r\n return this._parent.baseSprite;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"urlTarget\", {\r\n /**\r\n * @return URL target\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"urlTarget\");\r\n },\r\n /**\r\n * Target to use for URL clicks:\r\n *\r\n * * _blank\r\n * * _self (default)\r\n * * _parent\r\n * * _top\r\n * * Name of the window/frame\r\n *\r\n * Ignored if `url` is not set.\r\n *\r\n * @param value URL target\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"urlTarget\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Handles URL transition on element click.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev An event object\r\n */\r\n Sprite.prototype.urlHandler = function (ev) {\r\n // Is URL set?\r\n if ($utils.isNotEmpty(this.url)) {\r\n // Proceed to the URL\r\n var url = this.populateString(this.url);\r\n if (this.urlTarget === \"_self\") {\r\n window.location.href = url;\r\n }\r\n else {\r\n window.open(url, this.urlTarget);\r\n }\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"swipeOptions\", {\r\n /**\r\n * ==========================================================================\r\n * SWIPING GESTURE TRACKING\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Returns element's swipe gesture options.\r\n *\r\n * @return Swipe gesture options\r\n */\r\n get: function () {\r\n if (!this.interactions.swipeOptions) {\r\n if (this.virtualParent) {\r\n return this.virtualParent.swipeOptions;\r\n }\r\n if (this._parent) {\r\n return this._parent.swipeOptions;\r\n }\r\n }\r\n return this.interactions.swipeOptions;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"swipeable\", {\r\n /**\r\n * @return Element swipable?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"swipeable\");\r\n },\r\n /**\r\n * Controls if element is swipeable.\r\n *\r\n * Swipable element will invoke `swipe`, `swipeleft` and `swiperight` events,\r\n * when quick horizontal drag action is performed with either mouse or touch.\r\n *\r\n * Please note that combining swipe and drag is possible, however will incur\r\n * a slight but noticeable delay in drag start.\r\n *\r\n * @param value Element swipable?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (this.setPropertyValue(\"swipeable\", value)) {\r\n this.applyCursorStyle();\r\n if (!value && !this.isInteractive()) {\r\n // void\r\n }\r\n else {\r\n this.interactions.swipeable = value;\r\n }\r\n //interaction.processSwipeable(this);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"trackable\", {\r\n /**\r\n * @return Track cursor movement over element?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"trackable\");\r\n },\r\n /**\r\n * ==========================================================================\r\n * POINTER TRACKING\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Indicates if the element is trackable (mouse position over it is reported to\r\n * event listeners).\r\n *\r\n * Will invoke `track` events whenever pointer (cursor) changes position\r\n * while over element.\r\n *\r\n * Please note, touch devices will also invoke `track` events when touch\r\n * point is moved while holding down on a trackable element.\r\n *\r\n * @param value Track cursor movement over element?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (this.setPropertyValue(\"trackable\", value)) {\r\n if (!value && !this.isInteractive()) {\r\n // void\r\n }\r\n else {\r\n this.applyCursorStyle();\r\n this.interactions.trackable = value;\r\n }\r\n //interaction.processTrackable(this);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"wheelable\", {\r\n /**\r\n * @return Mouse wheel events enabled?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"wheelable\");\r\n },\r\n /**\r\n * ==========================================================================\r\n * MOUSE-WHEEL RELATED\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Indicates if the element can be interacted with mouse wheel.\r\n *\r\n * Will invoke `wheel`, `wheelup`, `wheeldown`, `wheelleft`, and `wheelright`\r\n * events when using mouse wheel over the element.\r\n *\r\n * @param value Mouse wheel events enabled?\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"wheelable\", value)) {\r\n if (!value && !this.isInteractive()) {\r\n // void\r\n }\r\n else {\r\n this.applyCursorStyle();\r\n this.interactions.wheelable = value;\r\n }\r\n //interaction.processWheelable(this);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"resizable\", {\r\n /**\r\n * @return Element resizable?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"resizable\");\r\n },\r\n /**\r\n * ==========================================================================\r\n * RESIZE\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Indicates if this element is resizable.\r\n *\r\n * Enabling resize will turn on various interactions on the element. Their\r\n * actual functionality will depend on other properties.\r\n *\r\n * If the element also `draggable`, resize will only happen with two points\r\n * of contact on a touch device.\r\n *\r\n * If the element is not draggable, resize can be performed with just one\r\n * point of contact, touch or mouse.\r\n *\r\n * Will invoke `resize` event every time the size of the element changes.\r\n *\r\n * @param value Element resizable?\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n value = $type.toBoolean(value);\r\n if (this.setPropertyValue(\"resizable\", value)) {\r\n if (!value && !this.isInteractive()) {\r\n // void\r\n }\r\n else {\r\n this.applyCursorStyle();\r\n this.interactions.resizable = value;\r\n // setEventDisposer will also remove listeners if value == false\r\n this.interactions.setEventDisposer(\"sprite-resizable\", value, function () { return new MultiDisposer([\r\n _this.events.on(\"down\", _this.handleDown, _this, false),\r\n _this.events.on(\"resize\", _this.handleResize, _this, false)\r\n ]); });\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Handles resize intermediate step.\r\n *\r\n * By default this method resizes actual element. Each element, can override\r\n * this method to implement their own resize logic.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event object\r\n */\r\n Sprite.prototype.handleResize = function (ev) {\r\n if (!this.interactions.isTouchProtected || !ev.touch) {\r\n this._isResized = true;\r\n this.scale = this.interactions.originalScale * ev.scale;\r\n this.validatePosition();\r\n /*center: (io.draggable\r\n ? $math.getMidPoint(point1, point2)\r\n : {\r\n \"x\": io.originalPosition.x,\r\n \"y\": io.originalPosition.y\r\n })*/\r\n //this.moveTo(this.originalPosition.x + ev.shift.x, this.originalPosition.y + ev.shift.y);\r\n if (this.draggable || this.dragWhileResize) {\r\n this._isDragged = false;\r\n var svgPoint1 = $utils.documentPointToSvg(ev.point1, this.htmlContainer, this.svgContainer.cssScale);\r\n var svgPoint2 = $utils.documentPointToSvg(ev.point2, this.htmlContainer, this.svgContainer.cssScale);\r\n var svgMidPoint = $math.getMidPoint(svgPoint1, svgPoint2);\r\n var parentPoint1 = $utils.documentPointToSprite(ev.startPoint1, this._parent);\r\n var parentPoint2 = $utils.documentPointToSprite(ev.startPoint2, this._parent);\r\n var originalPosition = this.interactions.originalPosition;\r\n var originalScale = this.interactions.originalScale;\r\n if (originalPosition) {\r\n var spritePoint1 = { x: (parentPoint1.x - originalPosition.x) / originalScale, y: (parentPoint1.y - originalPosition.y) / originalScale };\r\n var spritePoint2 = { x: (parentPoint2.x - originalPosition.x) / originalScale, y: (parentPoint2.y - originalPosition.y) / originalScale };\r\n var spriteMidPoint = $math.getMidPoint(spritePoint1, spritePoint2);\r\n var parentPoint = $utils.svgPointToSprite(svgMidPoint, this._parent);\r\n this.moveTo({ x: parentPoint.x - spriteMidPoint.x * this.scale, y: parentPoint.y - spriteMidPoint.y * this.scale }, undefined, undefined, true);\r\n }\r\n }\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"cursorOptions\", {\r\n /**\r\n * ==========================================================================\r\n * MOUSE-RELATED\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Returns element's cursor options.\r\n *\r\n * Cursor options usually define cursor style for various states of the\r\n * hovered element.\r\n *\r\n * Elements inherit `cursorOptions` from their parents if they don't have\r\n * them set explicitly.\r\n *\r\n * @see {@link ICursorOptions} for a list of available options\r\n * @return Cursor options\r\n */\r\n get: function () {\r\n if (!this.interactions.cursorOptions) {\r\n if (this.virtualParent) {\r\n return this.virtualParent.cursorOptions;\r\n }\r\n if (this._parent) {\r\n return this._parent.cursorOptions;\r\n }\r\n }\r\n return this.interactions.cursorOptions;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"cursorOverStyle\", {\r\n /**\r\n * A shortcut to setting mouse cursor on hover.\r\n *\r\n * Example:\r\n *\r\n * ```TypeScript\r\n * series.slices.template.cursorOverStyle = am4core.MouseCursorStyle.pointer;\r\n * ```\r\n * ```JavaScript\r\n * series.slices.template.cursorOverStyle = am4core.MouseCursorStyle.pointer;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": {\r\n * // ...\r\n * \"slices\": {\r\n * \"cursorOverStyle\": \"pointer\"\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * @param style An array of styles to apply onhover\r\n */\r\n set: function (style) {\r\n if (!this.cursorOptions.overStyle) {\r\n this.interactions.cursorOptions = {\r\n defaultStyle: this.cursorOptions.defaultStyle\r\n };\r\n }\r\n this.cursorOptions.overStyle = style;\r\n getInteraction().applyCursorOverStyle(this.interactions);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"cursorDownStyle\", {\r\n /**\r\n * A shortcut to setting mouse cursor when button is pressed down.\r\n *\r\n * Example:\r\n *\r\n * ```TypeScript\r\n * series.slices.template.cursorDownStyle = am4core.MouseCursorStyle.grabbing;\r\n * ```\r\n * ```JavaScript\r\n * series.slices.template.cursorDownStyle = am4core.MouseCursorStyle.grabbing;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": {\r\n * // ...\r\n * \"slices\": {\r\n * \"cursorDownStyle\": \"grabbing\"\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * @param style An array of styles to apply onhover\r\n */\r\n set: function (style) {\r\n this.cursorOptions.downStyle = style;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Applies default cursor styles for interactable elements.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Determine if this is necessary. Maybe let's not apply any cursor styles by default\r\n */\r\n Sprite.prototype.applyCursorStyle = function () {\r\n // Draggable styles\r\n /*if (this.draggable) {\r\n\r\n if (!$type.hasValue(this.cursorOptions.overStyle)) {\r\n this.cursorOptions.overStyle = MouseCursorStyle.grab;\r\n }\r\n\r\n if (!$type.hasValue(this.cursorOptions.downStyle)) {\r\n this.cursorOptions.downStyle = MouseCursorStyle.grabbing;\r\n }\r\n }*/\r\n };\r\n Object.defineProperty(Sprite.prototype, \"interactionsEnabled\", {\r\n /**\r\n * @return Is interaction enabled for this element?\r\n */\r\n get: function () {\r\n var value = this.getPropertyValue(\"interactionsEnabled\");\r\n if (value === false) {\r\n return false;\r\n }\r\n if (this.virtualParent) {\r\n return this.virtualParent.interactionsEnabled;\r\n }\r\n if (this._parent) {\r\n return this._parent.interactionsEnabled;\r\n }\r\n return true;\r\n },\r\n /**\r\n * Setting this to `false` will effectively disable all interactivity on the\r\n * element.\r\n *\r\n * @param value Is interaction enabled for this element?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (this.setPropertyValue(\"interactionsEnabled\", value)) {\r\n var pointerEvents = null; // must be null, not \"null\"!\r\n if (!value) {\r\n pointerEvents = \"none\";\r\n }\r\n else {\r\n // this is for IE\r\n this.group.node.style.pointerEvents = \"\";\r\n }\r\n this.group.node.style.pointerEvents = pointerEvents;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"exporting\", {\r\n /**\r\n * @return Export instance\r\n */\r\n get: function () {\r\n return this.getExporting();\r\n },\r\n /**\r\n * ==========================================================================\r\n * EXPORT-RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * An [[Export]] instance.\r\n *\r\n * Used to access API of the chart export functionality.\r\n *\r\n * If `exporting` is not set, the element inherits [[Export]] instance from\r\n * its parents.\r\n *\r\n * Upon request, if no parent has such instance, a new one is created, using\r\n * default settings, what in most cases is just enough.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/exporting/} for more info about exporting\r\n * @param exp Export\r\n */\r\n set: function (exp) {\r\n this._exporting.set(exp, exp);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * This is here as a method so that inheriting classes could override it.\r\n *\r\n * @return Export instance\r\n */\r\n Sprite.prototype.getExporting = function () {\r\n var _export = this._exporting.get();\r\n if (_export) {\r\n return _export;\r\n }\r\n else {\r\n if (this.isStandaloneInstance || !this._parent) {\r\n _export = new Export(this.svgContainer.SVGContainer);\r\n _export.sprite = this;\r\n _export.language = this.language;\r\n _export.numberFormatter = this.numberFormatter;\r\n _export.dateFormatter = this.dateFormatter;\r\n _export.durationFormatter = this.durationFormatter;\r\n this._exporting.set(_export, _export);\r\n }\r\n else {\r\n return this._parent.exporting;\r\n }\r\n }\r\n return _export;\r\n };\r\n Object.defineProperty(Sprite.prototype, \"exportable\", {\r\n /**\r\n * @return Export?\r\n */\r\n get: function () {\r\n return this._exportable;\r\n /*const svgContainer = this.svgContainer;\r\n return !svgContainer || $array.indexOf(svgContainer.nonExportableSprites, this) == -1;*/\r\n },\r\n /**\r\n * If set to `false` this element will be omitted when exporting the chart\r\n * to an image.\r\n *\r\n * @default true\r\n * @param value Export?\r\n */\r\n set: function (value) {\r\n var svgContainer = this.svgContainer;\r\n this._exportable = value;\r\n if (svgContainer) {\r\n if (value) {\r\n $array.remove(svgContainer.nonExportableSprites, this);\r\n }\r\n else if ($array.indexOf(svgContainer.nonExportableSprites, this) == -1) {\r\n svgContainer.nonExportableSprites.push(this);\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * ==========================================================================\r\n * MODAL/POPUP RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Private method to be used for \"classPrefix\" adapter for modals/popups.\r\n *\r\n * @param value Prefix\r\n */\r\n Sprite.prototype.modalPrefix = function (value) {\r\n value = options.classNamePrefix + value;\r\n return value;\r\n };\r\n Object.defineProperty(Sprite.prototype, \"modal\", {\r\n /**\r\n * Returns a [[Modal]] instance, associated with this chart.\r\n * (elements top parent)\r\n *\r\n * Accessing modal does not make it appear. To make a modal appear, use\r\n * `showModal()` method.\r\n *\r\n * @see {@link Modal} for more information about using Modal windows\r\n * @return Modal instance\r\n */\r\n get: function () {\r\n var svgContainer = this.svgContainer;\r\n if (svgContainer) {\r\n var modal = svgContainer.modal;\r\n if (!modal.adapter.has(\"classPrefix\", this.modalPrefix)) {\r\n modal.adapter.add(\"classPrefix\", this.modalPrefix);\r\n }\r\n return modal;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Opens a modal window with specific content (`text` parameter) and,\r\n * optionally, `title`.\r\n *\r\n * The `text` parameter can contain HTML content.\r\n *\r\n * @see {@link Modal} for more information about using Modal windows\r\n * @param text Modal contents\r\n * @param title Title for the modal window\r\n */\r\n Sprite.prototype.openModal = function (text, title) {\r\n var svgContainer = this.svgContainer;\r\n if (svgContainer) {\r\n return svgContainer.openModal(text, title);\r\n }\r\n };\r\n /**\r\n * Hides modal window if there is one currently open.\r\n */\r\n Sprite.prototype.closeModal = function () {\r\n var svgContainer = this.svgContainer;\r\n if (svgContainer) {\r\n svgContainer.closeModal();\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"popups\", {\r\n /**\r\n * A list of popups for this chart.\r\n *\r\n * @return Popups\r\n */\r\n get: function () {\r\n var svgContainer = this.svgContainer;\r\n if (svgContainer) {\r\n var popups = svgContainer.popups;\r\n popups.template.sprite = this;\r\n if (!popups.template.adapter.has(\"classPrefix\", this.modalPrefix)) {\r\n popups.template.adapter.add(\"classPrefix\", this.modalPrefix);\r\n }\r\n return popups;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates, opens, and returns a new [[Popup]] window.\r\n *\r\n * `text` can be any valid HTML.\r\n *\r\n * `title` is currently not supported.\r\n *\r\n * @param text Popup contents\r\n * @param title Popup title\r\n * @return Popup instance\r\n */\r\n Sprite.prototype.openPopup = function (text, title) {\r\n var svgContainer = this.svgContainer;\r\n if (svgContainer) {\r\n return svgContainer.openPopup(text, title);\r\n }\r\n };\r\n /**\r\n * Closes all currently open popup windows\r\n */\r\n Sprite.prototype.closeAllPopups = function () {\r\n var svgContainer = this.svgContainer;\r\n if (svgContainer) {\r\n svgContainer.closeAllPopups();\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"x\", {\r\n /**\r\n * @return X coordinate\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"x\");\r\n },\r\n /**\r\n * ==========================================================================\r\n * POSITIONAL PROPERTIES AND RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Element's absolute or relative X coordinate.\r\n *\r\n * If setting both X and Y, please consider using `moveTo()` method instead,\r\n * as it will be faster to set both coordinates at once.\r\n *\r\n * @param value X coordinate\r\n */\r\n set: function (value) {\r\n if (!this.isDragged) {\r\n this.setPercentProperty(\"x\", value, false, true, this._positionPrecision, true);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"pixelX\", {\r\n /**\r\n * Returns element's current absolute X coordinate in pixels.\r\n *\r\n * @readonly\r\n * @return X coordinate (px)\r\n */\r\n get: function () {\r\n var value = $math.fitToRange(this.getPixelX(this.x), this.minX, this.maxX);\r\n if (!this._adapterO) {\r\n return value;\r\n }\r\n else {\r\n return this._adapterO.apply(\"pixelX\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"relativeX\", {\r\n /**\r\n * Returns element's current relative X coordinate in [[Percent]].\r\n *\r\n * @return X coordinate ([[Percent]])\r\n */\r\n get: function () {\r\n if (!this._adapterO) {\r\n return this.getRelativeX(this.x);\r\n }\r\n else {\r\n return this._adapterO.apply(\"relativeX\", this.getRelativeX(this.x));\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"minX\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Min X (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minX\");\r\n },\r\n /**\r\n * The smallest allowable absolute X coordinate for this element.\r\n *\r\n * This is used to contain element movement within certain boundaries.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Min X (px)\r\n */\r\n set: function (value) {\r\n if ($type.isNumber(value)) {\r\n value = $math.round(value, this._positionPrecision, true);\r\n this.setPropertyValue(\"minX\", value, false, true);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"maxX\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Max X (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxX\");\r\n },\r\n /**\r\n * The biggest allowable absolute X coordinate for this element.\r\n *\r\n * This is used to contain element movement within certain boundaries.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Max X (px)\r\n */\r\n set: function (value) {\r\n if ($type.isNumber(value)) {\r\n value = $math.round(value, this._positionPrecision, true);\r\n this.setPropertyValue(\"maxX\", value, false, true);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"y\", {\r\n /**\r\n * @return Y coordinate\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"y\");\r\n },\r\n /**\r\n * Element's absolute or relative Y coordinate.\r\n *\r\n * If setting both X and Y, please consider using `moveTo()` method instead,\r\n * as it will be faster to set both coordinates at once.\r\n *\r\n * @param value Y coordinate\r\n */\r\n set: function (value) {\r\n if (!this.isDragged) {\r\n this.setPercentProperty(\"y\", value, false, true, this._positionPrecision, true);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"pixelY\", {\r\n /**\r\n * Returns element's current absolute Y coordinate in pixels.\r\n *\r\n * @readonly\r\n * @return Y coordinate (px)\r\n */\r\n get: function () {\r\n var value = $math.fitToRange(this.getPixelY(this.y), this.minY, this.maxY);\r\n if (!this._adapterO) {\r\n return value;\r\n }\r\n else {\r\n return this._adapterO.apply(\"pixelY\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"relativeY\", {\r\n /**\r\n * Returns element's current relative Y coordinate in [[Percent]].\r\n *\r\n * @readonly\r\n * @return Y coordinate ([[Percent]])\r\n */\r\n get: function () {\r\n if (!this._adapterO) {\r\n return this.getRelativeX(this.y);\r\n }\r\n else {\r\n return this._adapterO.apply(\"relativeY\", this.getRelativeX(this.y));\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"minY\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Min Y (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minY\");\r\n },\r\n /**\r\n * The smallest allowable absolute Y coordinate for this element.\r\n *\r\n * This is used to contain element movement within certain boundaries.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Min Y (px)\r\n */\r\n set: function (value) {\r\n if ($type.isNumber(value)) {\r\n value = $math.round(value, this._positionPrecision, true);\r\n this.setPropertyValue(\"minY\", value, false, true);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"maxY\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Max Y (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxY\");\r\n },\r\n /**\r\n * The biggest allowable absolute Y coordinate for this element.\r\n *\r\n * This is used to contain element movement within certain boundaries.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Max Y (px)\r\n */\r\n set: function (value) {\r\n if ($type.isNumber(value)) {\r\n value = $math.round(value, this._positionPrecision, true);\r\n this.setPropertyValue(\"maxY\", value, false, true);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"dx\", {\r\n /**\r\n * @return Horizontal offset (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"dx\");\r\n },\r\n /**\r\n * A horizontal offset for the element in pixels.\r\n *\r\n * Can be negative value for offset to the left.\r\n *\r\n * @param value Horizontal offset (px)\r\n */\r\n set: function (value) {\r\n if ($type.isNumber(value)) {\r\n value = $math.round(value, this._positionPrecision, true);\r\n this.setPropertyValue(\"dx\", value, false, true);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"dy\", {\r\n /**\r\n * @return Vertical offset (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"dy\");\r\n },\r\n /**\r\n * A vertical offset for the element in pixels.\r\n *\r\n * Can be negative value for offset upwards.\r\n *\r\n * @param value Vertical offset (px)\r\n */\r\n set: function (value) {\r\n if ($type.isNumber(value)) {\r\n value = $math.round(value, this._positionPrecision, true);\r\n this.setPropertyValue(\"dy\", value, false, true);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"rotation\", {\r\n /**\r\n * @return Rotation (0-360)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"rotation\");\r\n },\r\n /**\r\n * Rotation of the element in degrees. (0-360)\r\n *\r\n * Note: For convenience purposes, negative values (for counter-clockwise\r\n * rotation) and values exceeding 360 can also be used.\r\n *\r\n * @param value Rotation (0-360)\r\n */\r\n set: function (value) {\r\n value = $type.toNumber(value);\r\n if (!$type.isNumber(value)) {\r\n value = 0;\r\n }\r\n this.setPropertyValue(\"rotation\", value, false, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"align\", {\r\n /**\r\n * @return Horizontal align\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"align\");\r\n },\r\n /**\r\n * Controls horizontal alignment of the element.\r\n *\r\n * This is used by parent [[Container]] when layouting its children.\r\n *\r\n * @param value Horizontal align\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"align\", value)) {\r\n if (this._parent) {\r\n this._parent.invalidateLayout();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"valign\", {\r\n /**\r\n * @return Vertical align\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"valign\");\r\n },\r\n /**\r\n * Controls vertical alignment of the element.\r\n *\r\n * This is used by parent [[Container]] when layouting its children.\r\n *\r\n * @param value Vertical align\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"valign\", value)) {\r\n if (this._parent) {\r\n this._parent.invalidateLayout();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"horizontalCenter\", {\r\n /**\r\n * @return Horizontal center\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"horizontalCenter\");\r\n },\r\n /**\r\n * Controls which part of the element to treat as a horizontal center.\r\n *\r\n * The setting will be used when positioning, resizing and rotating the\r\n * element.\r\n *\r\n * @param value Horizontal center\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"horizontalCenter\", value)) {\r\n this.updateCenter();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"verticalCenter\", {\r\n /**\r\n * @return Vertical center\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"verticalCenter\");\r\n },\r\n /**\r\n * Controls which part of the element to treat as a vertical center.\r\n *\r\n * The setting will be used when positioning, resizing and rotating the\r\n * element.\r\n *\r\n * @param value Vertical center\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"verticalCenter\", value)) {\r\n this.updateCenter();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"maxWidth\", {\r\n /**\r\n * @return Maximum width (px)\r\n */\r\n get: function () {\r\n var maxWidth = this.getPropertyValue(\"maxWidth\");\r\n if (!$type.isNumber(maxWidth)) {\r\n if (this._parent) {\r\n var parentWidth = this._parent.maxWidth;\r\n if (this._parent.layout != \"absolute\" && this.align != \"none\" && this.align != undefined) {\r\n parentWidth = parentWidth - this.pixelMarginLeft - this.pixelMarginRight;\r\n }\r\n return parentWidth;\r\n }\r\n }\r\n return maxWidth;\r\n },\r\n /**\r\n * ==========================================================================\r\n * DIMENSIONAL PROPERTIES AND RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Maximum allowed width for the element in pixels.\r\n *\r\n * @param value Maximum width (px)\r\n */\r\n set: function (value) {\r\n this.setMaxWidth(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Sprite.prototype.setMaxWidth = function (value) {\r\n var prevWidth = this.maxWidth;\r\n var prevHeight = this.maxHeight;\r\n if (this.setPropertyValue(\"maxWidth\", value)) {\r\n if ($type.isNumber(this.relativeWidth)) {\r\n this.invalidate();\r\n }\r\n var event_2 = {\r\n type: \"maxsizechanged\",\r\n target: this,\r\n previousWidth: prevWidth,\r\n previousHeight: prevHeight\r\n };\r\n this.dispatchImmediately(\"maxsizechanged\", event_2);\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"maxHeight\", {\r\n /**\r\n * @return Maximum height (px)\r\n */\r\n get: function () {\r\n var maxHeight = this.getPropertyValue(\"maxHeight\");\r\n if (!$type.isNumber(maxHeight)) {\r\n if (this._parent) {\r\n var parentHeight = this._parent.maxHeight;\r\n if (this._parent.layout != \"absolute\" && this.valign != \"none\" && this.valign != undefined) {\r\n parentHeight = parentHeight - this.pixelMarginTop - this.pixelMarginBottom;\r\n }\r\n return parentHeight;\r\n }\r\n }\r\n return maxHeight;\r\n },\r\n /**\r\n * Maximum allowed height for the element in pixels.\r\n *\r\n * @param value Maximum height (px)\r\n */\r\n set: function (value) {\r\n this.setMaxHeight(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Sprite.prototype.setMaxHeight = function (value) {\r\n var prevWidth = this.maxWidth;\r\n var prevHeight = this.maxHeight;\r\n if (this.setPropertyValue(\"maxHeight\", value)) {\r\n if ($type.isNumber(this.relativeHeight)) {\r\n this.invalidate();\r\n }\r\n var event_3 = {\r\n type: \"maxsizechanged\",\r\n target: this,\r\n previousWidth: prevWidth,\r\n previousHeight: prevHeight\r\n };\r\n this.dispatchImmediately(\"maxsizechanged\", event_3);\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"minWidth\", {\r\n /**\r\n * @return Minimum width (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minWidth\");\r\n },\r\n /**\r\n * Minimum width of the element in pixels.\r\n *\r\n * Set to `undefined` to remove the limit.\r\n *\r\n * @param value Minimum width (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"minWidth\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"minHeight\", {\r\n /**\r\n * @return Minimum height (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minHeight\");\r\n },\r\n /**\r\n * Minimum height for the element in pixels.\r\n *\r\n * Set to `undefined` to remove the limit.\r\n *\r\n * @param value Minimum height (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"minHeight\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"width\", {\r\n /**\r\n * @return Width (absolute or relative)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"width\");\r\n },\r\n /**\r\n * Element's absolute or relative width.\r\n *\r\n * The width can either be absolute, set in numeric pixels, or relative, set\r\n * in [[Percent]].\r\n *\r\n * Relative width will be calculated using closest measured ancestor\r\n * [[Container]].\r\n *\r\n * NOTE: `width` is an accessor, which allows setting width in pixels or\r\n * percent. It is a sort of a \"shortcut\" for the users. Actual renderer does\r\n * not ever use it. It uses either `pixelWidth` or `percentWidth`, so if\r\n * you need to add an adapter for width add it for either of the two\r\n * properties - whichever suits your requirements.\r\n *\r\n * @param value Width (numeric in pixels or relative)\r\n */\r\n set: function (value) {\r\n var changed = this.setPercentProperty(\"width\", value, true, false, this._positionPrecision, true);\r\n if (changed) {\r\n this.percentWidth = undefined;\r\n this.relativeWidth = undefined;\r\n if (value instanceof Percent) {\r\n this.percentWidth = value.percent;\r\n if ($type.isNumber(this._pixelWidth)) {\r\n this.maxWidth = undefined;\r\n }\r\n this._pixelWidth = undefined;\r\n }\r\n else {\r\n this._pixelWidth = Number(value);\r\n //this._measuredWidth = this._pixelWidth;\r\n this.maxWidth = this._pixelWidth;\r\n }\r\n this.invalidatePosition();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"height\", {\r\n /**\r\n * @return height (absolute or relative)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"height\");\r\n },\r\n /**\r\n * Element's absolute or relative height.\r\n *\r\n * The height can either be absolute, set in numeric pixels, or relative, set\r\n * in [[Percent]].\r\n *\r\n * Relative height will be calculated using closest measured ancestor\r\n * [[Container]].\r\n *\r\n * NOTE: `height` is an accessor, which allows setting height in pixels or\r\n * percent. It is a sort of a \"shortcut\" for the users. Actual renderer does\r\n * not ever use it. It uses either `pixelHeight` or `percentHeight`, so if\r\n * you need to add an adapter for height add it for either of the two\r\n * properties - whichever suits your requirements.\r\n *\r\n * @param value Height (numeric in pixels or relative)\r\n */\r\n set: function (value) {\r\n var changed = this.setPercentProperty(\"height\", value, true, false, this._positionPrecision, true);\r\n if (changed) {\r\n this.percentHeight = undefined;\r\n this._relativeHeight = undefined;\r\n if (value instanceof Percent) {\r\n this.percentHeight = value.percent;\r\n if ($type.isNumber(this._pixelHeight)) {\r\n this.maxHeight = undefined;\r\n }\r\n this._pixelHeight = undefined;\r\n }\r\n else {\r\n this._pixelHeight = Number(value);\r\n //this._measuredHeight = this._pixelHeight;\r\n this.maxHeight = this._pixelHeight; // yes, we reset maxWidth\r\n }\r\n this.invalidatePosition();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"pixelWidth\", {\r\n /**\r\n * Returns element's width in pixels, if width was set. For actual width use measuredWidth property.\r\n *\r\n * @readonly\r\n * @return Width (px)\r\n */\r\n get: function () {\r\n var width;\r\n if ($type.isNumber(this.percentWidth)) {\r\n width = this.maxWidth;\r\n }\r\n else if ($type.isNumber(this._pixelWidth)) {\r\n width = this._pixelWidth;\r\n }\r\n else {\r\n width = 0;\r\n }\r\n var minWidth = this.minWidth;\r\n if (minWidth != null && width < minWidth) {\r\n width = minWidth;\r\n }\r\n var value = $math.round(width, this._positionPrecision, true);\r\n if (!this._adapterO) {\r\n return value;\r\n }\r\n else {\r\n return this._adapterO.apply(\"pixelWidth\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"pixelHeight\", {\r\n /**\r\n * Returns element's height in pixels. For actual height use measuredHeight property.\r\n *\r\n * @readonly\r\n * @return Height (px)\r\n */\r\n get: function () {\r\n var height;\r\n if ($type.isNumber(this.percentHeight)) {\r\n height = this.maxHeight;\r\n }\r\n else if ($type.isNumber(this._pixelHeight)) {\r\n height = this._pixelHeight;\r\n }\r\n else {\r\n height = 0; //this._measuredHeightSelf;\r\n }\r\n var minHeight = this.minHeight;\r\n if (minHeight != null && height < minHeight) {\r\n height = minHeight;\r\n }\r\n var value = $math.round(height, this._positionPrecision, true);\r\n if (!this._adapterO) {\r\n return value;\r\n }\r\n else {\r\n return this._adapterO.apply(\"pixelHeight\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"relativeWidth\", {\r\n /**\r\n * @return Relative width\r\n * @ignore\r\n */\r\n get: function () {\r\n var relativeWidth = this._relativeWidth;\r\n if ($type.isNumber(relativeWidth)) {\r\n if (!this._adapterO) {\r\n return relativeWidth;\r\n }\r\n else {\r\n return this._adapterO.apply(\"relativeWidth\", relativeWidth);\r\n }\r\n }\r\n },\r\n /**\r\n * Element's relative width in [[Percent]].\r\n * @ignore\r\n *\r\n * @param value Relative width\r\n */\r\n set: function (value) {\r\n if (this._relativeWidth != value) {\r\n this._relativeWidth = value;\r\n //\t\t\tthis.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"relativeHeight\", {\r\n /**\r\n * @return Relative height\r\n * @ignore\r\n */\r\n get: function () {\r\n var relativeHeight = this._relativeHeight;\r\n if ($type.isNumber(relativeHeight)) {\r\n if (!this._adapterO) {\r\n return relativeHeight;\r\n }\r\n else {\r\n return this._adapterO.apply(\"relativeHeight\", relativeHeight);\r\n }\r\n }\r\n },\r\n /**\r\n * Element's relative height in [[Percent]].\r\n *\r\n * @param value Relative height\r\n * @ignore\r\n */\r\n set: function (value) {\r\n if (this._relativeHeight != value) {\r\n this._relativeHeight = value;\r\n //\t\t\tthis.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"measuredWidth\", {\r\n /**\r\n * Returns element's measured width in pixels.\r\n *\r\n * A measured width is actual width of contents plus `paddingRight` and* `paddingLeft`, relative to sprite parent, meaning that\r\n * rotation and scale is taken into account.\r\n *\r\n * @readonly\r\n * @return Width (px)\r\n */\r\n get: function () {\r\n if (this.disabled || this.__disabled) {\r\n return 0;\r\n }\r\n if (!this._adapterO) {\r\n return this._measuredWidth;\r\n }\r\n else {\r\n return this._adapterO.apply(\"measuredWidth\", this._measuredWidth);\r\n }\r\n // it's not good to fit to min/max range as then rotations and scale won't be taken into account\r\n //return this.adapter.apply(\"measuredWidth\", $math.fitToRange(this._measuredWidth, this.minWidth, this.maxWidth));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"measuredHeight\", {\r\n /**\r\n * Returns elements's measured height in pixels.\r\n *\r\n * A measured height is actual height of contents plus `paddingTop` and `paddingBottom`, relative to sprite parent, meaning that\r\n * rotation and scale taken into account.\r\n *\r\n * @readonly\r\n * @return Height (px)\r\n */\r\n get: function () {\r\n if (this.disabled || this.__disabled) {\r\n return 0;\r\n }\r\n // it's not good to fit to min/max range as then rotations and scale won't be taken into account\r\n //return this.adapter.apply(\"measuredHeight\", $math.fitToRange(this._measuredHeight, this.minHeight, this.maxHeight));\r\n if (!this._adapterO) {\r\n return this._measuredHeight;\r\n }\r\n else {\r\n return this._adapterO.apply(\"measuredHeight\", this._measuredHeight);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"outerWidth\", {\r\n /**\r\n * Returns element's measured width plus its left and right margins in\r\n * pixels.\r\n *\r\n * @readonly\r\n * @return Outer width (px)\r\n */\r\n get: function () {\r\n var value = this.pixelWidth + this.pixelMarginRight + this.pixelMarginLeft;\r\n if (!this._adapterO) {\r\n return value;\r\n }\r\n else {\r\n return this._adapterO.apply(\"outerWidth\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"outerHeight\", {\r\n /**\r\n * Returns element's measured height plus its top and bottom margins in\r\n * pixels.\r\n *\r\n * @readonly\r\n * @return Outer height (px)\r\n */\r\n get: function () {\r\n var value = this.pixelHeight + this.pixelMarginTop + this.pixelMarginBottom;\r\n if (!this._adapterO) {\r\n return value;\r\n }\r\n else {\r\n return this._adapterO.apply(\"outerHeight\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"innerWidth\", {\r\n /**\r\n * Returns element's measured inner width in pixels.\r\n *\r\n * Inner width is actual available space for content, e.g. element's width\r\n * minus horizontal padding.\r\n *\r\n * @readonly\r\n * @return Inner width (px)\r\n */\r\n get: function () {\r\n var value = Math.max(0, this.pixelWidth - this.pixelPaddingRight - this.pixelPaddingLeft);\r\n if (!this._adapterO) {\r\n return value;\r\n }\r\n else {\r\n return this._adapterO.apply(\"innerWidth\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"innerHeight\", {\r\n /**\r\n * Returns element's measured inner height in pixels.\r\n *\r\n * Inner height is actual available space for content, e.g. element's height\r\n * minus vertical padding.\r\n *\r\n * @readonly\r\n * @return Inner height (px)\r\n */\r\n get: function () {\r\n var value = Math.max(0, this.pixelHeight - this.pixelPaddingTop - this.pixelPaddingBottom);\r\n if (!this._adapterO) {\r\n return value;\r\n }\r\n else {\r\n return this._adapterO.apply(\"innerHeight\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"globalScale\", {\r\n /**\r\n * Returns element's current \"global\" scale.\r\n *\r\n * Scale values accumulate over hierarchy of elements.\r\n *\r\n * E.g. if a [[Container]] has `scale = 2` and it's child has a `scale = 2`,\r\n * the child's `globalScale` will be 4. (a multitude of `2 x 2`)\r\n *\r\n * @readonly\r\n * @return Global scale\r\n */\r\n get: function () {\r\n var scale = this.scale;\r\n if (this._parent) {\r\n scale = scale * this._parent.globalScale;\r\n }\r\n if (!this._adapterO) {\r\n return scale;\r\n }\r\n else {\r\n return this._adapterO.apply(\"globalScale\", scale);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"scale\", {\r\n /**\r\n * @return Scale (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"scale\");\r\n },\r\n /**\r\n * Scale of the element.\r\n *\r\n * The scale is set from 0 (element reduced to nothing) to 1 (default size).\r\n * * 2 will mean element is increased twice.\r\n * * 0.5 - reduced by 50%.\r\n *\r\n * Etc.\r\n *\r\n * @param value Scale (0-1)\r\n */\r\n set: function (value) {\r\n value = $type.toNumber(value);\r\n if (value < 0) {\r\n value = 0;\r\n }\r\n if (value != this.getPropertyValue(\"scale\")) {\r\n this.setPropertyValue(\"scale\", value, false, true);\r\n this.handleGlobalScale();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets all four margins for the element at once.\r\n *\r\n * Margins are set in pixels.\r\n *\r\n * @param top Top margin\r\n * @param right Right margin\r\n * @param bottom Bottom margin\r\n * @param left Left margin\r\n * @return Current element\r\n */\r\n Sprite.prototype.margin = function (top, right, bottom, left) {\r\n this.marginTop = top;\r\n this.marginRight = right;\r\n this.marginBottom = bottom;\r\n this.marginLeft = left;\r\n return this;\r\n };\r\n Object.defineProperty(Sprite.prototype, \"marginLeft\", {\r\n /**\r\n * @return Margin value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"marginLeft\");\r\n },\r\n /**\r\n * Left margin - absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Margin value\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"marginLeft\", value, true, true, this._positionPrecision, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"marginRight\", {\r\n /**\r\n * @return Margin value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"marginRight\");\r\n },\r\n /**\r\n * Right margin - absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Margin value\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"marginRight\", value, true, true, this._positionPrecision, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"marginTop\", {\r\n /**\r\n * @return Margin value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"marginTop\");\r\n },\r\n /**\r\n * Top margin - absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Margin value\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"marginTop\", value, true, true, this._positionPrecision, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"marginBottom\", {\r\n /**\r\n * @return Margin value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"marginBottom\");\r\n },\r\n /**\r\n * Bottom margin - absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Margin value\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"marginBottom\", value, true, true, this._positionPrecision, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"pixelMarginRight\", {\r\n /**\r\n * Returns current right margin in pixels.\r\n *\r\n * @readonly\r\n * @return Right margin (px)\r\n */\r\n get: function () {\r\n var value = this.getPixelX(this.marginRight);\r\n if (!this._adapterO) {\r\n return value;\r\n }\r\n else {\r\n return this._adapterO.apply(\"pixelMarginRight\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"relativeMarginRight\", {\r\n /**\r\n * Returns current relative right margin.\r\n *\r\n * @readonly\r\n * @return Relative right margin\r\n */\r\n get: function () {\r\n // @todo Maybe use [[Percent]]?\r\n var value = this.getRelativeX(this.marginRight);\r\n if (!this._adapterO) {\r\n return value;\r\n }\r\n else {\r\n return this._adapterO.apply(\"relativeMarginRight\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"pixelMarginLeft\", {\r\n /**\r\n * Returns current left margin in pixels.\r\n *\r\n * @readonly\r\n * @return Left margin (px)\r\n */\r\n get: function () {\r\n var value = this.getPixelX(this.marginLeft);\r\n if (!this._adapterO) {\r\n return value;\r\n }\r\n else {\r\n return this._adapterO.apply(\"pixelMarginLeft\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"relativeMarginLeft\", {\r\n /**\r\n * Returns current relative left margin.\r\n *\r\n * @readonly\r\n * @return Relative left margin\r\n */\r\n get: function () {\r\n //@todo Maybe use [[Percent]]?\r\n var value = this.getRelativeX(this.marginLeft);\r\n if (!this._adapterO) {\r\n return value;\r\n }\r\n else {\r\n return this._adapterO.apply(\"relativeMarginLeft\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"pixelMarginTop\", {\r\n /**\r\n * Returns current top margin in pixels.\r\n *\r\n * @readonly\r\n * @return Top margin (px)\r\n */\r\n get: function () {\r\n var value = this.getPixelY(this.marginTop);\r\n if (!this._adapterO) {\r\n return value;\r\n }\r\n else {\r\n return this._adapterO.apply(\"pixelMarginTop\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"relativeMarginTop\", {\r\n /**\r\n * Returns current relative top margin.\r\n *\r\n * @readonly\r\n * @return Relative top margin\r\n */\r\n get: function () {\r\n // @todo Maybe use [[Percent]]?\r\n var value = this.getRelativeY(this.marginTop);\r\n if (!this._adapterO) {\r\n return value;\r\n }\r\n else {\r\n return this._adapterO.apply(\"relativeMarginTop\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"pixelMarginBottom\", {\r\n /**\r\n * Returns current bottom margin in pixels.\r\n *\r\n * @readonly\r\n * @return Bottom margin (px)\r\n */\r\n get: function () {\r\n var value = this.getPixelY(this.marginBottom);\r\n if (!this._adapterO) {\r\n return value;\r\n }\r\n else {\r\n return this._adapterO.apply(\"pixelMarginBottom\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"relativeMarginBottom\", {\r\n /**\r\n * Returns current relative bottom margin.\r\n *\r\n * @readonly\r\n * @return Relative bottom margin\r\n */\r\n get: function () {\r\n // @todo Maybe use [[Percent]]?\r\n var value = this.getRelativeY(this.marginBottom);\r\n if (!this._adapterO) {\r\n return value;\r\n }\r\n else {\r\n return this._adapterO.apply(\"relativeMarginBottom\", value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets padding for the element in pixels.\r\n *\r\n * @param top Top padding (px)\r\n * @param right Right padding (px)\r\n * @param bottom Bottom padding (px)\r\n * @param left Left padding (px)\r\n * @return Element\r\n */\r\n Sprite.prototype.padding = function (top, right, bottom, left) {\r\n this.paddingTop = top;\r\n this.paddingRight = right;\r\n this.paddingBottom = bottom;\r\n this.paddingLeft = left;\r\n return this;\r\n };\r\n Object.defineProperty(Sprite.prototype, \"paddingLeft\", {\r\n /**\r\n * @return Padding value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"paddingLeft\");\r\n },\r\n /**\r\n * Left padding - absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Padding value\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"paddingLeft\", value, true, true, this._positionPrecision, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"paddingRight\", {\r\n /**\r\n * @return Padding value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"paddingRight\");\r\n },\r\n /**\r\n * Right padding - absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Padding value\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"paddingRight\", value, true, true, this._positionPrecision, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"paddingTop\", {\r\n /**\r\n * @return Padding value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"paddingTop\");\r\n },\r\n /**\r\n * Top padding - absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Padding value\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"paddingTop\", value, true, true, this._positionPrecision, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"paddingBottom\", {\r\n /**\r\n * @return Padding value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"paddingBottom\");\r\n },\r\n /**\r\n * Bottom padding - absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Padding value\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"paddingBottom\", value, true, true, this._positionPrecision, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"pixelPaddingRight\", {\r\n /**\r\n * Returns current right padding in pixels.\r\n *\r\n * @readonly\r\n * @return Right padding (px)\r\n */\r\n get: function () {\r\n return this.getPixelX(this.paddingRight);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"relativePaddingRight\", {\r\n /**\r\n * Returns current relative right padding.\r\n *\r\n * @readonly\r\n * @return Relative right padding\r\n */\r\n get: function () {\r\n // @todo Maybe use [[Percent]]?\r\n return this.getRelativeX(this.paddingRight);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"pixelPaddingLeft\", {\r\n /**\r\n * Returns current left padding in pixels.\r\n *\r\n * @readonly\r\n * @return Left padding (px)\r\n */\r\n get: function () {\r\n return this.getPixelX(this.paddingLeft);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"relativePaddingLeft\", {\r\n /**\r\n * Returns current relative left padding.\r\n *\r\n * @readonly\r\n * @return Relative left padding\r\n */\r\n get: function () {\r\n // @todo Maybe use [[Percent]]?\r\n return this.getRelativeX(this.paddingLeft);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"pixelPaddingTop\", {\r\n /**\r\n * Returns current top padding in pixels.\r\n *\r\n * @readonly\r\n * @return Top padding (px)\r\n */\r\n get: function () {\r\n return this.getPixelY(this.paddingTop);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"relativePaddingTop\", {\r\n /**\r\n * Returns current relative top padding.\r\n *\r\n * @readonly\r\n * @return Relative top padding\r\n */\r\n get: function () {\r\n // @todo Maybe use [[Percent]]?\r\n return this.getRelativeY(this.paddingTop);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"pixelPaddingBottom\", {\r\n /**\r\n * Returns current bottom padding in pixels.\r\n *\r\n * @readonly\r\n * @return Bottom padding (px)\r\n */\r\n get: function () {\r\n return this.getPixelY(this.paddingBottom);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"relativePaddingBottom\", {\r\n /**\r\n * Returns current relative bottom padding.\r\n *\r\n * @readonly\r\n * @return Relative bottom padding\r\n */\r\n get: function () {\r\n // @todo Maybe use [[Percent]]?\r\n return this.getRelativeY(this.paddingBottom);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"path\", {\r\n /**\r\n * @return Path of a Sprite element\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"path\");\r\n },\r\n /**\r\n * ==========================================================================\r\n * APPEARANCE-RELATED PROPERTIES AND RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Path of Sprite element\r\n */\r\n set: function (value) {\r\n this.setPath(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n Sprite.prototype.setPath = function (value) {\r\n if (this.setPropertyValue(\"path\", value)) {\r\n if (this._adapterO) {\r\n value = this._adapterO.apply(\"path\", value);\r\n }\r\n if (!this._isPath) {\r\n if (!this.element || (this.element.node && !(this.element.node instanceof SVGPathElement))) {\r\n this.element = this.paper.add(\"path\");\r\n }\r\n this._isPath = true;\r\n }\r\n if ($type.hasValue(value)) {\r\n this.element.attr({ \"d\": value });\r\n }\r\n else {\r\n this.element.removeAttr(\"d\");\r\n }\r\n this.invalidatePosition();\r\n // otherwise is 0x0\r\n if (!this.inited) {\r\n this.events.once(\"inited\", this.validatePosition, this, false);\r\n }\r\n return true;\r\n }\r\n return false;\r\n };\r\n Object.defineProperty(Sprite.prototype, \"fillModifier\", {\r\n /**\r\n * @return Fill color modifier\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"fillModifier\");\r\n },\r\n /**\r\n * [[ColorModifier]] that can be used to modify color and pattern of the\r\n * element's fill, e.g. create gradients.\r\n *\r\n * @param value Fill color modifiier\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"fillModifier\", value)) {\r\n this.setFill(this.fill);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"strokeModifier\", {\r\n /**\r\n * @return Stroke color modifier\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"strokeModifier\");\r\n },\r\n /**\r\n * [[ColorModifier]] that can be used to modify color and pattern of the\r\n * element's stroke (outline), e.g. create gradients.\r\n *\r\n * @param value Stroke color modifier\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"strokeModifier\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"fillOpacity\", {\r\n /**\r\n * @return Opacity (0-9)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"fillOpacity\");\r\n },\r\n /**\r\n * Element's fill opacity.\r\n *\r\n * Opacity ranges from 0 (fully transparent) to 1 (fully opaque).\r\n *\r\n * @param value Opacity (0-1)\r\n */\r\n set: function (value) {\r\n value = $math.toNumberRange(value, 0, 1);\r\n if (this.setPropertyValue(\"fillOpacity\", value)) {\r\n this.setSVGAttribute({ \"fill-opacity\": value });\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"fill\", {\r\n /**\r\n * @return Fill\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"fill\");\r\n },\r\n /**\r\n * Element's fill color or pattern.\r\n *\r\n * @param value Fill\r\n */\r\n set: function (value) {\r\n this.setFill(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets actual `fill` property on the SVG element, including applicable color\r\n * modifiers.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Fill\r\n */\r\n Sprite.prototype.setFill = function (value) {\r\n if (!$type.isObject(value) || \"r\" in value) {\r\n value = toColor(value);\r\n }\r\n if (this.setColorProperty(\"fill\", value) || this.fillModifier) {\r\n // this can not go into next if, as value is turned to Gradient\r\n if (value instanceof Color) {\r\n if (this.fillModifier) {\r\n value = this.fillModifier.modify(value);\r\n }\r\n }\r\n this.realFill = value;\r\n // todo: review this place when some Color type will be added\r\n if (value instanceof Color) {\r\n this.setSVGAttribute({ \"fill\": value.toString() });\r\n }\r\n else if (!$type.hasValue(value)) {\r\n this.removeSVGAttribute(\"fill\");\r\n }\r\n else if (value instanceof Pattern || value instanceof LinearGradient || value instanceof RadialGradient) {\r\n var fill = value;\r\n fill.paper = this.paper;\r\n this.setSVGAttribute({ \"fill\": \"url(\\\"\" + $utils.getBaseURI() + fill.id + \"\\\")\" });\r\n }\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"opacity\", {\r\n /**\r\n * @return Opacity (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"opacity\");\r\n },\r\n /**\r\n * Element's opacity.\r\n *\r\n * Opacity setting can range from 0 (fully transparent) to 1 (fully opaque).\r\n *\r\n * ATTENTION: It is highly not recommended to use `opacity` directly on the\r\n * element. The charts use `opacity` to hide/show elements, so your setting\r\n * might be lost if element is hidden and then later shown.\r\n *\r\n * Instead use methods `hide()` and `show()` to completely toggle off and on\r\n * the element.\r\n *\r\n * Or, use properties `fillOpacity` and `strokeOpacity`, if you need to make\r\n * the element semi-transparent.\r\n *\r\n * @param value Opacity (0-1)\r\n */\r\n set: function (value) {\r\n value = $math.toNumberRange(value, 0, 1);\r\n if (this.setPropertyValue(\"opacity\", value)) {\r\n this.setSVGAttribute({ \"opacity\": value });\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"stroke\", {\r\n /**\r\n * @return Stroke setting\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"stroke\");\r\n },\r\n /**\r\n * Element's stroke (outline) color or pattern.\r\n *\r\n * @param value Stroke setting\r\n */\r\n set: function (value) {\r\n this.setStroke(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets actual `stroke` property on the SVG element, including applicable\r\n * color modifiers.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Stroke setting\r\n */\r\n Sprite.prototype.setStroke = function (value) {\r\n if (!$type.isObject(value) || \"r\" in value) {\r\n value = toColor(value);\r\n }\r\n if (this.setColorProperty(\"stroke\", value) || this.strokeModifier) {\r\n // this can not go into next if, as value is turned to Gradient\r\n if (value instanceof Color) {\r\n if (this.strokeModifier) {\r\n value = this.strokeModifier.modify(value);\r\n }\r\n }\r\n this.realStroke = value;\r\n if (value instanceof Color) {\r\n if (value.hex == \"none\") {\r\n this.removeSVGAttribute(\"stroke\");\r\n }\r\n else {\r\n this.setSVGAttribute({ \"stroke\": value.toString() });\r\n }\r\n }\r\n else if (!$type.hasValue(value)) {\r\n this.removeSVGAttribute(\"stroke\");\r\n }\r\n else if (value instanceof Pattern || value instanceof LinearGradient || value instanceof RadialGradient) {\r\n var stroke = value;\r\n stroke.paper = this.paper;\r\n this.setSVGAttribute({ \"stroke\": \"url(\\\"\" + $utils.getBaseURI() + stroke.id + \"\\\")\" });\r\n }\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"strokeOpacity\", {\r\n /**\r\n * @return Opacity (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"strokeOpacity\");\r\n },\r\n /**\r\n * Stroke (outline) opacity.\r\n *\r\n * The values may range from 0 (fully transparent) to 1 (fully opaque).\r\n *\r\n * @param value Opacity (0-1)\r\n */\r\n set: function (value) {\r\n value = $math.toNumberRange(value, 0, 1);\r\n if (this.setPropertyValue(\"strokeOpacity\", value)) {\r\n this.setSVGAttribute({ \"stroke-opacity\": value });\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"nonScalingStroke\", {\r\n /**\r\n * @return Do not scale stroke (outline)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"nonScalingStroke\");\r\n },\r\n /**\r\n * Controls if the element's stroke (outline) should remain keep constant\r\n * thicnkess and do not scale when the whole element is resized.\r\n *\r\n * @param value Do not scale stroke (outline)\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (this.setPropertyValue(\"nonScalingStroke\", value)) {\r\n this.strokeWidth = this.strokeWidth;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"nonScaling\", {\r\n /**\r\n * @return Is element scaleable?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"nonScaling\");\r\n },\r\n /**\r\n * Controls if element should keep constant size and not scale even if there is\r\n * space available, or it does not fit.\r\n *\r\n * @param value Is element scaleable?\r\n */\r\n set: function (value) {\r\n // @todo Description (review)\r\n value = $type.toBoolean(value);\r\n this.setPropertyValue(\"nonScaling\", value, false, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"strokeWidth\", {\r\n /**\r\n * @return Thickness (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"strokeWidth\");\r\n },\r\n /**\r\n * Stroke (outline) thickness in pixels.\r\n *\r\n * @param value Thickness (px)\r\n */\r\n set: function (value) {\r\n value = $type.toNumber(value);\r\n this.setPropertyValue(\"strokeWidth\", value, true);\r\n if (this.nonScalingStroke) {\r\n if (!$type.isNumber(value)) {\r\n value = 1;\r\n }\r\n value = value / this.globalScale;\r\n }\r\n this.setSVGAttribute({ \"stroke-width\": value });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"strokeDasharray\", {\r\n /**\r\n * @return `stroke-dasharray`\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"strokeDasharray\");\r\n },\r\n /**\r\n * A `stroke-dasharray` for the stroke (outline).\r\n *\r\n * \"Dasharray\" allows setting rules to make lines dashed, dotted, etc.\r\n *\r\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray} for more info on `stroke-dasharray`\r\n * @param value `stroke-dasharray`\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"strokeDasharray\", value)) {\r\n this.setSVGAttribute({ \"stroke-dasharray\": value });\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"strokeDashoffset\", {\r\n /**\r\n * @return `stroke-dashoffset`\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"strokeDashoffset\");\r\n },\r\n /**\r\n * A `stroke-dashoffset` for the stroke (outline).\r\n *\r\n * \"Dashoffset\" allows setting the start position of the dashes if\r\n * `strokeDasharray` is used.\r\n *\r\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dashoffset} for more info on `stroke-dashoffset`\r\n * @param value `stroke-dashoffset`\r\n */\r\n set: function (value) {\r\n value = $type.toNumber(value);\r\n if (this.setPropertyValue(\"strokeDashoffset\", value)) {\r\n this.setSVGAttribute({ \"stroke-dashoffset\": value });\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"strokeLinecap\", {\r\n /**\r\n * @return `stroke-linecap`\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"strokeLinecap\");\r\n },\r\n /**\r\n * A `stroke-linecap` to indicate how line ends are drawn.\r\n *\r\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Fills_and_Strokes#Stroke} for more info on `stroke-linecap`\r\n * @param value `stroke-linecap`\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"strokeLinecap\", value)) {\r\n this.setSVGAttribute({ \"stroke-linecap\": value });\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"strokeLinejoin\", {\r\n /**\r\n * @return `stroke-linejoin`\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"strokeLinejoin\");\r\n },\r\n /**\r\n * A `stroke-linejoin` to indicate how line ends are drawn.\r\n *\r\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Fills_and_Strokes#Stroke} for more info on `stroke-linejoin`\r\n * @param value `stroke-linejoin`\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"strokeLinejoin\", value)) {\r\n this.setSVGAttribute({ \"stroke-linejoin\": value });\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"shapeRendering\", {\r\n /**\r\n * @return 'shape-rendering' value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"shapeRendering\");\r\n },\r\n /**\r\n * An SVG-specific `shape-rendering` value.\r\n *\r\n * `shape-rendering` controls how vector graphics are drawn and rendered.\r\n *\r\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/shape-rendering} for more information about `shape-rendering`\r\n * @default \"auto\"\r\n * @param value 'shape-rendering' value\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"shapeRendering\", value)) {\r\n this.setSVGAttribute({ \"shape-rendering\": value });\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"pixelPerfect\", {\r\n /**\r\n * @return Use pixel perfect?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"pixelPerfect\");\r\n },\r\n /**\r\n * Controls if SVG vectors should be drawn with \"pixel\" precision, producing\r\n * perfectly crisp lines on retina displays.\r\n *\r\n * Setting this to `true` might improve visual quality, but may have a\r\n * negative effect on performance.\r\n *\r\n * Different elements use different default setting for `pixelPerfect`.\r\n *\r\n * We recommend leaving this at their default settings, unless there's a\r\n * specific need.\r\n *\r\n * @param value Use pixel perfect?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (value) {\r\n this._positionPrecision = options.pixelPerfectPrecision;\r\n }\r\n else {\r\n this._positionPrecision = 3;\r\n }\r\n this.setPropertyValue(\"pixelPerfect\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"rtl\", {\r\n /**\r\n * @return RTL?\r\n */\r\n get: function () {\r\n if ($type.hasValue(this._rtl)) {\r\n return this._rtl;\r\n }\r\n else if (this._topParent) {\r\n return this._topParent.rtl;\r\n }\r\n //this.rtl = false;\r\n return false;\r\n },\r\n /**\r\n * An RTL (right-to-left) setting.\r\n *\r\n * RTL may affect alignment, text, and other visual properties.\r\n *\r\n * If you set this on a top-level chart object, it will be used for all\r\n * child elements, e.g. labels, unless they have their own `rtl` setting\r\n * set directly on them.\r\n *\r\n * @param value `true` for to use RTL\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (this.isBaseSprite) {\r\n this.topParent.rtl = value;\r\n }\r\n this._rtl = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * ==========================================================================\r\n * VISIBILITY AND ORDER PROPERTIES AND RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Reveals hidden element.\r\n *\r\n * Has no effect if element is already visible.\r\n *\r\n * If `duration` is not specified, it will use default.\r\n *\r\n * @param duration Fade in duration (ms)\r\n * @return Animation object if such object was created\r\n */\r\n Sprite.prototype.show = function (duration) {\r\n return this.showReal(duration);\r\n };\r\n /**\r\n * Performs actual operations to reveal this element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param duration Fade in duration (ms)\r\n * @return Fade in duration (ms)\r\n */\r\n Sprite.prototype.showReal = function (duration) {\r\n var _this = this;\r\n if (this.preventShow) {\r\n return;\r\n }\r\n var transition;\r\n var properties = this.defaultState.properties;\r\n if (!this.disabled && (this.isHidden || !this.visible || this.isHiding || (properties.opacity != null && this.opacity < properties.opacity && !this.isShowing)) && !this.isDisposed()) {\r\n // helps to avoid flicker, as show might change opacity or visibility but item might be at invalid state/position\r\n if (this.invalid) {\r\n this.validate();\r\n }\r\n if (this.positionInvalid) {\r\n this.validatePosition();\r\n }\r\n if (!$type.isNumber(duration)) {\r\n duration = this.defaultState.transitionDuration;\r\n }\r\n if (this._hideAnimation) {\r\n this._hideAnimation.kill();\r\n this._hideAnimation = undefined;\r\n }\r\n // Cancel hide handler just in case it was there\r\n if (this._showHideDisposer) {\r\n this.removeDispose(this._showHideDisposer);\r\n }\r\n this._isHidden = false;\r\n this.isHiding = false;\r\n this.isShowing = true;\r\n // Apply current state\r\n transition = this.applyCurrentState(duration);\r\n if (transition && !transition.isFinished()) {\r\n this._showHideDisposer = transition.events.on(\"animationended\", function () {\r\n _this.isShowing = false;\r\n });\r\n this._disposers.push(this._showHideDisposer);\r\n }\r\n else {\r\n this.isShowing = false;\r\n }\r\n // Make it visible\r\n var visible = this.defaultState.properties.visible;\r\n if (!$type.hasValue(visible)) {\r\n visible = true;\r\n }\r\n this.visible = visible;\r\n // Unhide from screen readers\r\n this.readerHidden = false;\r\n // Dispatch \"show\" event\r\n this.dispatchImmediately(\"shown\");\r\n }\r\n return transition;\r\n };\r\n /**\r\n * Initiates hiding of Sprite.\r\n * When called it will fade out the the Sprite to transparency, then make it\r\n * invisible.\r\n * @param duration Duration in millisecons\r\n */\r\n /**\r\n * Hides the element, by applying `hidden` state.\r\n *\r\n * Has no effect if element is already hidden.\r\n *\r\n * If `duration` is not specified, it will use default.\r\n *\r\n * While element is fading out, its `isHiding` property will resolve to\r\n * `true`.\r\n *\r\n * When element is hidden, its `visible` property will resolve to `false`.\r\n *\r\n * @param duration Fade out duration (ms)\r\n * @return hide Animation object if such object was created\r\n */\r\n Sprite.prototype.hide = function (duration) {\r\n return this.hideReal(duration);\r\n };\r\n /**\r\n * Hides actual SVG elements and handles hiding animations.\r\n *\r\n * @param duration Fade out duration (ms)\r\n * @return Fade out duration (ms)\r\n * @ignore\r\n */\r\n Sprite.prototype.hideReal = function (duration) {\r\n var _this = this;\r\n var transition;\r\n if (!this.isHiding && this.visible && !this.isDisposed()) {\r\n // added to solve 51375\r\n if (this.tooltip && this.tooltip.currentSprite == this) {\r\n this.hideTooltip(0);\r\n }\r\n if (this._hideAnimation) {\r\n this._hideAnimation.kill();\r\n this._hideAnimation = undefined;\r\n }\r\n this.isShowing = false;\r\n // Cancel hide handler just in case it was there\r\n if (this._showHideDisposer) {\r\n this.removeDispose(this._showHideDisposer);\r\n }\r\n // Get state\r\n var hiddenState_1 = this.hiddenState;\r\n // Transition to \"hidden\" state, provided Sprite has one set\r\n if (hiddenState_1) {\r\n // Yes, we have a \"hidden\" state\r\n // `setState` will return an `Animation` object which we can set\r\n // events on\r\n transition = this.setState(hiddenState_1, duration, undefined);\r\n if (transition && !transition.isFinished()) {\r\n this._hideAnimation = transition;\r\n this._showHideDisposer = transition.events.on(\"animationended\", function () {\r\n _this.isHiding = false;\r\n _this._isHidden = true;\r\n if (hiddenState_1.properties.visible == false) {\r\n _this.visible = false;\r\n }\r\n }, this);\r\n this._disposers.push(this._showHideDisposer);\r\n // Thrown everything into `_disposers` just in case Sprite gets\r\n // destroyed in the meantime\r\n this._disposers.push(transition);\r\n }\r\n else {\r\n this.isHiding = false;\r\n this._isHidden = true;\r\n }\r\n }\r\n else {\r\n // No hidden state, let's just set `visible` and call it a day\r\n this.visible = false;\r\n this.isHiding = false;\r\n this._isHidden = true;\r\n }\r\n // Hide from screen readers\r\n this.readerHidden = true;\r\n // Dispach \"hidden\" event\r\n this.dispatchImmediately(\"hidden\");\r\n this.invalidate(); // hide it at once to avoid flickers // validate() causes SO\r\n }\r\n if (!$type.isNumber(duration)) {\r\n duration = this.hiddenState.transitionDuration;\r\n }\r\n return transition;\r\n };\r\n Object.defineProperty(Sprite.prototype, \"visible\", {\r\n /**\r\n * @return Visible?\r\n */\r\n get: function () {\r\n return this.getVisibility();\r\n },\r\n /**\r\n * Indicates if element is current visible (`true`) or hidden (`false`).\r\n *\r\n * @param value Visible?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n this.setVisibility(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns visibility value\r\n * @ignore\r\n */\r\n Sprite.prototype.getVisibility = function () {\r\n var value = this.getPropertyValue(\"visible\");\r\n if (!$type.hasValue(value)) {\r\n value = true;\r\n }\r\n return value;\r\n };\r\n /**\r\n * Sets `visibility` property:\r\n *\r\n * * `true` - visible\r\n * * `false` - hidden\r\n *\r\n * @param value true - visible, false - hidden\r\n * @return Current visibility\r\n */\r\n Sprite.prototype.setVisibility = function (value) {\r\n if (this.setPropertyValue(\"visible\", value)) {\r\n if (value) {\r\n this.group.removeAttr(\"visibility\");\r\n }\r\n else {\r\n this.group.attr({ \"visibility\": \"hidden\" });\r\n }\r\n //this.invalidatePosition();\r\n if (this.events.isEnabled(\"visibilitychanged\")) {\r\n var event_4 = {\r\n type: \"visibilitychanged\",\r\n target: this,\r\n visible: value\r\n };\r\n this.events.dispatchImmediately(\"visibilitychanged\", event_4);\r\n }\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"zIndex\", {\r\n /**\r\n * @return zIndex\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"zIndex\");\r\n },\r\n /**\r\n * A \"zIndex\" of the element.\r\n *\r\n * \"zIndex\" determines the order of how elements are placed over each other.\r\n *\r\n * Higher \"zIndex\" will mean the element will be draw on top of elements\r\n * with lower \"zIndexes\".\r\n *\r\n * @param value zIndex\r\n */\r\n set: function (value) {\r\n value = $type.toNumber(value);\r\n if (this.setPropertyValue(\"zIndex\", value)) {\r\n this.dispatch(\"zIndexChanged\");\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Moves the element to the very top in element order, so that it appears\r\n * in front of other elements.\r\n */\r\n Sprite.prototype.toFront = function () {\r\n var parent = this._parent;\r\n if (parent && parent.children.indexOf(this) != parent.children.length - 1) {\r\n parent.children.moveValue(this, parent.children.length - 1);\r\n this.dispatch(\"zIndexChanged\");\r\n }\r\n };\r\n /**\r\n * Moves the element to the very bottom in the element order, so that it\r\n * appears behind other elements.\r\n */\r\n Sprite.prototype.toBack = function () {\r\n var parent = this._parent;\r\n if (parent && parent.children.indexOf(this) != 0) {\r\n parent.children.moveValue(this, 0);\r\n this.dispatch(\"zIndexChanged\");\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"userClassName\", {\r\n /**\r\n * @return Class name\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"userClassName\");\r\n },\r\n /**\r\n * A custom class name to set on the element.\r\n *\r\n * If set, the value will be added to element's `class` attribute.\r\n *\r\n * @since 4.9.11\r\n * @param value Class name\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"userClassName\", value)) {\r\n if (!value && this.userClassName) {\r\n this.group.removeClass(this.userClassName);\r\n }\r\n this.setClassName();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"tooltip\", {\r\n /**\r\n * @return Tooltip\r\n */\r\n get: function () {\r\n if (this._tooltip) {\r\n return this._tooltip;\r\n }\r\n else if (this.virtualParent) {\r\n return this.virtualParent.tooltip;\r\n }\r\n else if (this._parent) {\r\n return this._parent.tooltip;\r\n }\r\n },\r\n /**\r\n * ==========================================================================\r\n * TOOLTIP-RELATED PROPERTIES STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * A [[Tooltip]] object to be used when displayed rollover information for\r\n * the element.\r\n *\r\n * @param tooltip Tooltip\r\n */\r\n set: function (tooltip) {\r\n if (this._tooltip) {\r\n //this._tooltip.dispose();\r\n this.removeDispose(this._tooltip);\r\n }\r\n this._tooltip = tooltip;\r\n if (tooltip) {\r\n tooltip.parent = this.tooltipContainer;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"tooltipDataItem\", {\r\n /**\r\n * @return Tooltip data item\r\n */\r\n get: function () {\r\n var tooltipDataItem = this._tooltipDataItem;\r\n if (tooltipDataItem) {\r\n return tooltipDataItem;\r\n }\r\n else {\r\n return this.dataItem;\r\n }\r\n },\r\n /**\r\n * A [[DataItem]] to use when populating content for the element's\r\n * [[Tooltip]].\r\n *\r\n * @see {@link Tooltip}\r\n * @see {@link DataItem}\r\n * @param value Tooltip data item\r\n */\r\n set: function (value) {\r\n // important: do not dispose tooltip dataItem, as it is some actual data item from data!\r\n this._tooltipDataItem = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"tooltipColorSource\", {\r\n /**\r\n * @return Tooltip color source\r\n */\r\n get: function () {\r\n return this._tooltipColorSource;\r\n },\r\n /**\r\n * A [[Sprite]] or sprite template to use when getting colors for tooltip. If a template is set,\r\n * tooltip will look for a clone in tooltipDataItem.sprites. If no clone is found, then template colors will be used.\r\n *\r\n * @see {@link Tooltip}\r\n * @see {@link Sprite}\r\n * @param sprite Sprite\r\n */\r\n set: function (sprite) {\r\n this._tooltipColorSource = sprite;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Shows the element's [[Tooltip]].\r\n *\r\n * A tooltip will be populated using text templates in either `tooltipHTML` or\r\n * `tooltipText` as well as data in `tooltipDataItem`.\r\n *\r\n * @see {@link Tooltip}\r\n * @param optional point (sprite-related) to which tooltip must point.\r\n * @return returns true if the tooltip was shown and false if it wasn't (no text was found)\r\n */\r\n Sprite.prototype.showTooltip = function (point) {\r\n if (this.showTooltipOn == \"always\" && !this._tooltip && this.tooltip) {\r\n this._tooltip = this.tooltip.clone();\r\n }\r\n if (!point && this.tooltipPosition == \"pointer\" && this.isHover) {\r\n point = $utils.documentPointToSvg(getInteraction().lastPointer.point, this.svgContainer.SVGContainer, this.svgContainer.cssScale);\r\n }\r\n // do not show if hidden\r\n var sprite = this;\r\n while (sprite != undefined) {\r\n if (!sprite.visible || sprite.disabled || sprite.__disabled) {\r\n if (this._tooltip && this._tooltip.visible) {\r\n this._tooltip.hide(0);\r\n }\r\n return;\r\n }\r\n sprite = sprite.parent;\r\n }\r\n if ($type.hasValue(this.tooltipText) || $type.hasValue(this.tooltipHTML)) {\r\n var tooltip = this.tooltip;\r\n var tooltipDataItem = this.tooltipDataItem;\r\n if (tooltip) {\r\n tooltip.targetSprite = this;\r\n var colorSource_1 = this;\r\n var tooltipColorSource_1 = this.tooltipColorSource;\r\n if ((tooltip.getStrokeFromObject || tooltip.getFillFromObject) && tooltipColorSource_1) {\r\n if (tooltipColorSource_1.isTemplate) {\r\n if (tooltipDataItem) {\r\n $array.eachContinue(tooltipDataItem.sprites, function (sprite) {\r\n if (sprite.clonedFrom == tooltipColorSource_1) {\r\n colorSource_1 = sprite;\r\n return false;\r\n }\r\n return true;\r\n });\r\n }\r\n }\r\n else {\r\n colorSource_1 = tooltipColorSource_1;\r\n }\r\n }\r\n if (tooltip.getStrokeFromObject) {\r\n var stroke = this.stroke;\r\n var source = colorSource_1;\r\n while (source.parent != undefined) {\r\n stroke = source.stroke;\r\n if (stroke == undefined) {\r\n source = source.parent;\r\n }\r\n if (stroke != undefined) {\r\n break;\r\n }\r\n }\r\n if (stroke instanceof Color) {\r\n tooltip.background.animate({ property: \"stroke\", to: stroke }, tooltip.animationDuration);\r\n }\r\n else {\r\n tooltip.background.stroke = stroke;\r\n }\r\n }\r\n // Set data item\r\n tooltip.dataItem = tooltipDataItem;\r\n tooltip.label.populateStringFrom = this;\r\n if (tooltip.getFillFromObject) {\r\n var fill = this.fill;\r\n var source = colorSource_1;\r\n while (source.parent != undefined) {\r\n fill = source.fill;\r\n if (fill == undefined || (fill instanceof Color && fill.rgb == undefined)) {\r\n source = source.parent;\r\n }\r\n else if (fill != undefined) {\r\n break;\r\n }\r\n }\r\n if (fill == undefined) {\r\n fill = color(\"#000000\");\r\n }\r\n if (fill instanceof Color) {\r\n if (!tooltip.visible) {\r\n tooltip.background.fill = fill;\r\n }\r\n else {\r\n tooltip.background.animate({ property: \"fill\", to: fill }, tooltip.animationDuration);\r\n }\r\n }\r\n else {\r\n tooltip.background.fill = fill;\r\n }\r\n if (tooltip.autoTextColor && fill instanceof Color) {\r\n tooltip.label.fill = fill.alternative;\r\n }\r\n }\r\n // Apply tooltip text\r\n var text = \"\";\r\n if (this.tooltipHTML) {\r\n tooltip.html = this.tooltipHTML;\r\n text = this.tooltipHTML;\r\n }\r\n if (this.tooltipText) {\r\n tooltip.text = this.tooltipText;\r\n text = this.tooltipText;\r\n }\r\n if (this.updateTooltipPosition(point)) {\r\n // Set accessibility option\r\n tooltip.readerDescribedBy = this.uidAttr();\r\n // make label to render to be able to check currentText\r\n if (tooltip.label.invalid) {\r\n tooltip.label.validate();\r\n }\r\n if (text != undefined && text != \"\" && tooltip.label.currentText != \"\") {\r\n //@todo: think of how to solve this better\r\n if (tooltip && !tooltip.parent) {\r\n tooltip.parent = this.tooltipContainer;\r\n }\r\n // Reveal tooltip\r\n // showing it in 1 ms helps to avoid strange flickering in IE\r\n var duration = tooltip.defaultState.transitionDuration;\r\n if (duration <= 0) {\r\n duration = 1;\r\n }\r\n tooltip.show(duration);\r\n tooltip.currentSprite = this;\r\n return true;\r\n }\r\n else {\r\n this.hideTooltip(0);\r\n }\r\n }\r\n else {\r\n this.hideTooltip(0);\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Sprite.prototype.updateTooltipPosition = function (point) {\r\n var _this = this;\r\n if (this.tooltipPosition == \"pointer\") {\r\n if (this._interactionDisposer) {\r\n this._interactionDisposer.dispose();\r\n }\r\n this._interactionDisposer = getInteraction().body.events.on(\"track\", function (ev) {\r\n return _this.pointTooltipTo($utils.documentPointToSvg(ev.point, _this.svgContainer.SVGContainer, _this.svgContainer.cssScale), true);\r\n });\r\n if (point) {\r\n return this.pointTooltipTo(point, true);\r\n }\r\n }\r\n else {\r\n // Point to the X/Y of this Sprite\r\n var globalPoint = $utils.spritePointToSvg({\r\n \"x\": this.getTooltipX(),\r\n \"y\": this.getTooltipY()\r\n }, this);\r\n return this.pointTooltipTo(globalPoint);\r\n }\r\n };\r\n /**\r\n * Sets the point the [[Tooltip]] should point to.\r\n *\r\n * @param point Coordinates to point to\r\n * @param instantly Move instantly without animation\r\n */\r\n Sprite.prototype.pointTooltipTo = function (point, instantly) {\r\n var tooltip = this.tooltip;\r\n if (tooltip && this.topParent) {\r\n if (tooltip.showInViewport) {\r\n tooltip.pointTo(point, instantly);\r\n return true;\r\n }\r\n if ($math.isInRectangle(point, { x: 0, y: 0, width: this.topParent.maxWidth, height: this.topParent.maxHeight })) {\r\n tooltip.pointTo(point, instantly);\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n /**\r\n * Hides element's [[Tooltip]].\r\n *\r\n * @see {@link Tooltip}\r\n */\r\n Sprite.prototype.hideTooltip = function (duration) {\r\n if (this.showTooltipOn == \"always\") {\r\n return;\r\n }\r\n var tooltip = this.tooltip;\r\n if (tooltip) {\r\n if (tooltip.targetSprite == this) {\r\n tooltip.targetSprite = undefined;\r\n }\r\n tooltip.hide(duration);\r\n if (this._interactionDisposer) {\r\n this._interactionDisposer.dispose();\r\n this._interactionDisposer = undefined;\r\n }\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"tooltipHTML\", {\r\n /**\r\n * @return Tooltip HTML content template\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tooltipHTML\");\r\n },\r\n /**\r\n * An HTML template to be used to populate [[Tooltip]] contents.\r\n *\r\n * If element has `tooltipDataItem` or `dataItem` set, this will be parsed\r\n * for any data values to be replaced with the values from respective data\r\n * items.\r\n *\r\n * @param value Tooltip HTML content template\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n this.hoverable = true;\r\n if (this.setPropertyValue(\"tooltipHTML\", value)) {\r\n if (this.tooltip) {\r\n if (this.tooltip.visible) {\r\n this.showTooltip();\r\n }\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"tooltipText\", {\r\n /**\r\n * @return Tooltip content template\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tooltipText\");\r\n },\r\n /**\r\n * A text template to be used to populate Tooltip's contents.\r\n *\r\n * If element has `tooltipDataItem` or `dataItem` set, this will be parsed\r\n * for any data values to be replaced with the values from respective data\r\n * items.\r\n *\r\n * This template will also be parsed for any special formatting tags.\r\n *\r\n * @param value Tooltip content template\r\n * @see {@link TextFormatter}\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (value) {\r\n this.hoverable = true;\r\n }\r\n if (this.setPropertyValue(\"tooltipText\", value)) {\r\n if (this.tooltip) {\r\n if (this.tooltip.visible) {\r\n this.showTooltip();\r\n }\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"tooltipContainer\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Container\r\n */\r\n get: function () {\r\n if (this._tooltipContainer) {\r\n return this._tooltipContainer;\r\n }\r\n else if (this._parent) {\r\n return this._parent.tooltipContainer;\r\n }\r\n },\r\n /**\r\n * A container reference that should be used to place element's\r\n * [[Tooltip]] in.\r\n *\r\n * Will use parent's container if does not have one set.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Container\r\n * @todo Dispose of the old _tooltipContainer ?\r\n */\r\n set: function (value) {\r\n this._tooltipContainer = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"tooltipX\", {\r\n /**\r\n * @return Tooltip X (px)\r\n */\r\n get: function () {\r\n return this.getTooltipX();\r\n },\r\n /**\r\n * X coordinate the [[Tooltip]] should be shown at.\r\n *\r\n * @param value Tooltip X (px)\r\n */\r\n set: function (value) {\r\n if (this.setPercentProperty(\"tooltipX\", value) && this.tooltip) {\r\n this.tooltip.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"alwaysShowTooltip\", {\r\n /**\r\n * @return Always show tooltip?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"showTooltipOn\") == \"always\";\r\n },\r\n /**\r\n * DEPRECATION NOTICE: This setting is deprecated in favor of a more flexible\r\n * setting: `showTooltipOn`. Please use `showTooltipOn = \"always\"` instead.\r\n *\r\n * Indicates if this element should display a tooltip permanently.\r\n *\r\n * Useful, if you want to show permanent tooltips on some items.\r\n *\r\n * @default false\r\n * @since 4.5.4\r\n * @deprecated Use `showTooltipOn = \"always\"` instead\r\n * @param value Always show tooltip?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n if (value) {\r\n this.showTooltipOn = \"always\";\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"showTooltipOn\", {\r\n /**\r\n * @return When to show tooltip\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"showTooltipOn\");\r\n },\r\n /**\r\n * Indicates when tooltip needs to be shown on this element:\r\n *\r\n * * `\"hover\"` (default) - Tooltip will be shown when element is hovered on.\r\n * * `\"hit\"` - Tooltip will be shown when element is clicked/tapped. Tooltip will be hidden when clicked/tapped anywhere else.\r\n * * `\"always\"` - Tooltip will be shown on the element permanently.\r\n *\r\n * For example, if you would like to show tooltips on all of the columns of\r\n * a [[ColumnSeries]]:\r\n *\r\n * ```TypeScript\r\n * series.columns.template.showTooltipOn = \"always\";\r\n * ```\r\n * ```JavaScript\r\n * series.columns.template.showTooltipOn = \"always\";\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"columns\": {\r\n * \"showTooltipOn\": \"always\"\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * It can even be set to display on a selected columns via `propertyFields`:\r\n *\r\n * ```TypeScript\r\n * series.columns.template.propertyFields.showTooltipOn = \"tooltip\";\r\n * ```\r\n * ```JavaScript\r\n * series.columns.template.propertyFields.showTooltipOn = \"tooltip\";\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"columns\": {\r\n * \"propertyFields\": {\r\n * \"showTooltipOn\": \"tooltip\"\r\n * }\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @default \"hover\"\r\n * @since 4.7.9\r\n * @param value When to show tooltip\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"showTooltipOn\", value)) {\r\n if (value == \"hit\") {\r\n this.clickable = true;\r\n }\r\n if (this.tooltip) {\r\n if (value == \"always\") {\r\n this.showTooltip();\r\n }\r\n else {\r\n this.handleAlwaysShowTooltip();\r\n }\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"tooltipPosition\", {\r\n /**\r\n * Position\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tooltipPosition\");\r\n },\r\n /**\r\n * Specifies if [[Tooltip]] should follow the mouse or touch pointer or stay\r\n * at the fixed position.\r\n *\r\n * @param value Position\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"tooltipPosition\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"tooltipY\", {\r\n /**\r\n * @return Tooltip Y (px)\r\n */\r\n get: function () {\r\n return this.getTooltipY();\r\n },\r\n /**\r\n * Y coordinate the [[Tooltip]] should be shown at.\r\n *\r\n * @param value Tooltip Y (px)\r\n */\r\n set: function (value) {\r\n if (this.setPercentProperty(\"tooltipY\", value) && this.tooltip) {\r\n this.tooltip.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns Tooltip X coordinate if it's set, or middle of the element.\r\n *\r\n * @ignore Exclude from docs\r\n * @return X (px)\r\n */\r\n Sprite.prototype.getTooltipX = function () {\r\n var x = this.getPropertyValue(\"tooltipX\");\r\n if (!$type.hasValue(x)) {\r\n x = percent(50);\r\n }\r\n var value;\r\n if ($type.isNumber(x)) {\r\n value = x;\r\n }\r\n if (x instanceof Percent) {\r\n value = this.maxLeftSelf + this._measuredWidthSelf * x.value - this.pixelPaddingLeft - this.ex; // overflow is know only for measured items, so this is not always good\r\n }\r\n if (!$type.isNumber(value)) {\r\n value = 0;\r\n }\r\n return value;\r\n };\r\n /**\r\n * Returns Tooltip Y coordinate if it's set, or middle of the element.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Y (px)\r\n */\r\n Sprite.prototype.getTooltipY = function () {\r\n var y = this.getPropertyValue(\"tooltipY\");\r\n if (!$type.hasValue(y)) {\r\n y = percent(50);\r\n }\r\n var value;\r\n if ($type.isNumber(y)) {\r\n value = y;\r\n }\r\n if (y instanceof Percent) {\r\n value = this.maxTopSelf + this._measuredHeightSelf * y.value - this.pixelPaddingTop - this.ey; // overflow is know only for measured items, so this is not always good\r\n }\r\n if (!$type.isNumber(value)) {\r\n value = 0;\r\n }\r\n return value;\r\n };\r\n /**\r\n * Displays a modal or console message with error, and halts any further\r\n * processing of this item.\r\n *\r\n * @ignore Exclude from docs\r\n * @param e Error\r\n * @todo Implement from applying further actions to this item\r\n */\r\n Sprite.prototype.raiseCriticalError = function (e, closable) {\r\n if (this.svgContainer) {\r\n if (!this._adapterO) {\r\n this.modal.content = e.message;\r\n }\r\n else {\r\n this.modal.content = this._adapterO.apply(\"criticalError\", e).message;\r\n }\r\n if (!closable) {\r\n this.disabled = true;\r\n }\r\n else {\r\n this.modal.closable = true;\r\n }\r\n if (!options.suppressErrors) {\r\n this.modal.open();\r\n }\r\n }\r\n if (options.verbose) {\r\n console.log(e);\r\n }\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n Sprite.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Tooltip color source\r\n if ($type.hasValue(config.tooltipColorSource) && $type.isString(config.tooltipColorSource) && this.map.hasKey(config.tooltipColorSource)) {\r\n config.tooltipColorSource = this.map.getKey(config.tooltipColorSource);\r\n }\r\n // Cursor styles\r\n if ($type.hasValue(config.cursorOverStyle) && $type.isString(config.cursorOverStyle)) {\r\n config.cursorOverStyle = this.getCursorStyle(config.cursorOverStyle);\r\n }\r\n if ($type.hasValue(config.cursorDowntyle) && $type.isString(config.cursorDowntyle)) {\r\n config.cursorDowntyle = this.getCursorStyle(config.cursorDowntyle);\r\n }\r\n if ($type.hasValue(config.cursorOptions)) {\r\n if ($type.hasValue(config.cursorOptions.overStyle) && $type.isString(config.cursorOptions.overStyle)) {\r\n config.cursorOptions.overStyle = this.getCursorStyle(config.cursorOptions.overStyle);\r\n }\r\n if ($type.hasValue(config.cursorOptions.downStyle) && $type.isString(config.cursorOptions.downStyle)) {\r\n config.cursorOptions.downStyle = this.getCursorStyle(config.cursorOptions.downStyle);\r\n }\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n this.processDelayedMap();\r\n };\r\n /**\r\n * Converts string name of the cursor into actual [[MouseCursorStyle]].\r\n *\r\n * @param style Cursor type\r\n * @return Cursor definition\r\n */\r\n Sprite.prototype.getCursorStyle = function (style) {\r\n switch (style) {\r\n case \"grab\":\r\n return MouseCursorStyle.grab;\r\n case \"grabbing\":\r\n return MouseCursorStyle.grabbing;\r\n case \"pointer\":\r\n return MouseCursorStyle.pointer;\r\n case \"horizontalResize\":\r\n return MouseCursorStyle.horizontalResize;\r\n case \"verticalResize\":\r\n return MouseCursorStyle.verticalResize;\r\n default:\r\n return MouseCursorStyle.default;\r\n }\r\n };\r\n /**\r\n * This function is used to sort element's JSON config properties, so that\r\n * some properties that absolutely need to be processed last, can be put at\r\n * the end.\r\n *\r\n * @ignore Exclude from docs\r\n * @param a Element 1\r\n * @param b Element 2\r\n * @return Sorting number\r\n */\r\n Sprite.prototype.configOrder = function (a, b) {\r\n if (a == b) {\r\n return 0;\r\n }\r\n // Must come last\r\n else if (a == \"tooltipColorSource\") {\r\n return 1;\r\n }\r\n else if (b == \"tooltipColorSource\") {\r\n return -1;\r\n }\r\n else {\r\n return _super.prototype.configOrder.call(this, a, b);\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"isHidden\", {\r\n /**\r\n * If `sprite.hide()` is called, we set isHidden to true when sprite is hidden.\r\n * This was added becaus hidden state might have visibility set to true and so\r\n * there would not be possible to find out if a sprite is technically hidden or not.\r\n */\r\n get: function () {\r\n if (this._isHidden) {\r\n return this._isHidden;\r\n }\r\n else if (this._parent) {\r\n return this._parent.isHidden;\r\n }\r\n return false;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"showOnInit\", {\r\n /**\r\n * @return Show on init?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"showOnInit\");\r\n },\r\n /**\r\n * If this is set to `true`, Sprite, when inited will be instantly hidden\r\n * (\"hidden\" state applied) and then shown (\"default\" state applied).\r\n *\r\n * If your \"default\" state's `transitionDuration > 0` this will result in\r\n * initial animation from \"hidden\" state to \"default\" state.\r\n *\r\n * If you need a Sprite which has `showOnInit = true` not to be shown\r\n * initially, set `sprite.hidden = true`. Setting `sprite.visible = false`\r\n * will not prevent the animation and the sprite will be shown.\r\n *\r\n * @param value show on init?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n this.setShowOnInit(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n Sprite.prototype.setShowOnInit = function (value) {\r\n if (this.setPropertyValue(\"showOnInit\", value)) {\r\n if (!this.isTemplate) {\r\n if (value && !this.inited && !this.hidden) {\r\n this._showOnInitDisposer = new MultiDisposer([\r\n registry.events.once(\"enterframe\", this.hideInitially, this),\r\n this.events.once(\"beforevalidated\", this.hideInitially, this, false),\r\n this.events.on(\"inited\", this.appear, this, false)\r\n ]);\r\n this._disposers.push(this._showOnInitDisposer);\r\n }\r\n else {\r\n if (this._showOnInitDisposer) {\r\n this._showOnInitDisposer.dispose();\r\n }\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Sprite.prototype.hideInitially = function () {\r\n if (!this.isDisposed()) {\r\n this.appeared = false;\r\n //if (!this.hidden && !this._isHidden) { // not good for series, as on enterframe it doesn't have data items yet.\r\n if (!this.inited) {\r\n this.hide(0);\r\n }\r\n }\r\n };\r\n /**\r\n * Hides the chart instantly and then shows it. If defaultState.transitionDuration > 0, this will result an animation in which properties of hidden state will animate to properties of visible state.\r\n */\r\n Sprite.prototype.appear = function () {\r\n var _this = this;\r\n this.appeared = false;\r\n if (!this.hidden && !this.isHidden) {\r\n this.hide(0);\r\n }\r\n if (!this.hidden) {\r\n var animation = this.show();\r\n if (animation && !animation.isFinished()) {\r\n this.addDisposer(animation.events.on(\"animationended\", function () {\r\n _this.appeared = true;\r\n _this.dispatch(\"appeared\");\r\n }));\r\n }\r\n else {\r\n this.appeared = true;\r\n this.dispatch(\"appeared\");\r\n }\r\n }\r\n else {\r\n this.appeared = true;\r\n this.dispatch(\"appeared\");\r\n }\r\n };\r\n Object.defineProperty(Sprite.prototype, \"hidden\", {\r\n /**\r\n * @return Is initially hidden?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"hidden\");\r\n },\r\n /**\r\n * If a sprite has `showOnInit = true`, it will animate from \"hidden\" to\r\n * \"default\" state when initialized. To prevent this but keep\r\n * `showOnInit = true`, you can set `sprite.hidden = true`.\r\n *\r\n * @param value initially hidden?\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n this.setPropertyValue(\"hidden\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"bbox\", {\r\n /**\r\n * Returns bounding box (square) for this element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n get: function () {\r\n if (this.definedBBox) {\r\n return this.definedBBox;\r\n }\r\n return this._bbox;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sprite.prototype, \"plugins\", {\r\n /**\r\n * A list of plugins (objects that implement [[IPlugin]] interface) attached\r\n * to this object.\r\n *\r\n * @since 4.2.2\r\n * @return List of plugins\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._plugins) {\r\n this._plugins = new List();\r\n this._disposers.push(this._plugins.events.on(\"inserted\", function (ev) {\r\n ev.newValue.target = _this;\r\n ev.newValue.init();\r\n }));\r\n this._disposers.push(new ListDisposer(this._plugins));\r\n }\r\n return this._plugins;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Called during the System.update method\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype._systemUpdate = function (skippedSprites) {\r\n this.validate();\r\n };\r\n /**\r\n * Called during the System.update method\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype._systemCheckIfValidate = function () {\r\n return true;\r\n };\r\n /**\r\n * Called during the System.validatePositions method\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype._systemValidatePositions = function () {\r\n this.validatePosition();\r\n };\r\n /**\r\n * Called during the System.validateLayouts method\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Sprite.prototype._systemValidateLayouts = function () {\r\n };\r\n return Sprite;\r\n}(BaseObjectEvents));\r\nexport { Sprite };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Sprite\"] = Sprite;\r\n//# sourceMappingURL=Sprite.js.map","import { __extends } from \"tslib\";\r\nimport { Dictionary } from \"./utils/Dictionary\";\r\nimport { TargetedEventDispatcher } from \"./utils/EventDispatcher\";\r\nimport { MultiDisposer, CounterDisposer } from \"./utils/Disposer\";\r\nimport * as $utils from \"./utils/Utils\";\r\nimport * as $object from \"./utils/Object\";\r\n/**\r\n * An [[EventDispatcher]] for [[Sprite]].\r\n *\r\n * @important\r\n */\r\nvar SpriteEventDispatcher = /** @class */ (function (_super) {\r\n __extends(SpriteEventDispatcher, _super);\r\n function SpriteEventDispatcher() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n /**\r\n * [_interactionEvents description]\r\n *\r\n * @todo Description\r\n */\r\n _this._interactionEvents = new Dictionary();\r\n return _this;\r\n }\r\n /**\r\n * [_dispatchSpriteEvent description]\r\n *\r\n * @todo Description\r\n */\r\n SpriteEventDispatcher.prototype._dispatchSpriteEvent = function (ev) {\r\n if (this.target.disabled || this.target.isTemplate) {\r\n return;\r\n }\r\n // TODO remove this <any> later\r\n if (this.target.events.isEnabled(ev.type)) {\r\n var imev = $object.merge(ev, {\r\n target: this.target\r\n });\r\n this.target.events.dispatchImmediately(imev.type, imev);\r\n }\r\n };\r\n /**\r\n * [_dispatchSpritePointEvent description]\r\n *\r\n * @todo Description\r\n */\r\n SpriteEventDispatcher.prototype._dispatchSpritePointEvent = function (ev) {\r\n if (this.target.disabled || this.target.isTemplate) {\r\n return;\r\n }\r\n // TODO remove this <any> later\r\n if (this.target.events.isEnabled(ev.type)) {\r\n var imev = $object.merge(ev, {\r\n target: this.target,\r\n spritePoint: ev.point ? $utils.documentPointToSprite(ev.point, this.target) : undefined,\r\n svgPoint: this.target.getSvgPoint(ev.point)\r\n });\r\n this.target.events.dispatchImmediately(imev.type, imev);\r\n }\r\n };\r\n /**\r\n * [_addInteractionObjectEvent description]\r\n *\r\n * @todo Description\r\n */\r\n SpriteEventDispatcher.prototype._addInteractionObjectEvent = function (type, callback, context, shouldClone) {\r\n var _this = this;\r\n var key = shouldClone + \"-\" + type;\r\n var counter = this._interactionEvents.insertKeyIfEmpty(key, function () {\r\n var disposer = _this.target.interactions.events.on(type, callback, context, shouldClone);\r\n return new CounterDisposer(function () {\r\n _this._interactionEvents.removeKey(key);\r\n disposer.dispose();\r\n });\r\n });\r\n return counter.increment();\r\n };\r\n /**\r\n * [_on description]\r\n *\r\n * @todo Description\r\n */\r\n SpriteEventDispatcher.prototype._on = function (once, type, callback, context, shouldClone, dispatch) {\r\n var info = _super.prototype._on.call(this, once, type, callback, context, shouldClone, dispatch);\r\n var disposers = [info.disposer];\r\n /**\r\n * Catching Sprite-related events, converting them to [[SpriteEvent]] and\r\n * triggering them on sprite\r\n */\r\n switch (type) {\r\n case \"hit\":\r\n case \"track\":\r\n case \"doublehit\":\r\n case \"wheel\":\r\n case \"wheelup\":\r\n case \"wheeldown\":\r\n case \"wheelleft\":\r\n case \"wheelright\":\r\n disposers.push(this._addInteractionObjectEvent(type, this._dispatchSpritePointEvent, this, shouldClone));\r\n break;\r\n case \"rightclick\":\r\n case \"down\":\r\n //case \"hold\":\r\n case \"up\":\r\n case \"drag\":\r\n case \"dragged\":\r\n case \"dragstart\":\r\n case \"dragstop\":\r\n case \"over\":\r\n case \"out\":\r\n case \"swipe\":\r\n case \"swipeleft\":\r\n case \"swiperight\":\r\n case \"resize\":\r\n //case \"rotate\":\r\n case \"focus\":\r\n case \"blur\":\r\n case \"toggled\":\r\n disposers.push(this._addInteractionObjectEvent(type, this._dispatchSpriteEvent, this, shouldClone));\r\n break;\r\n }\r\n /**\r\n * Set functional properties based on events. For example if we add a\r\n * \"drag\" event handler, we want to make the Sprite draggable, even if we\r\n * don't explicitly set \"draggable\"\r\n */\r\n switch (type) {\r\n case \"hit\":\r\n case \"doublehit\":\r\n case \"rightclick\":\r\n case \"down\":\r\n case \"up\":\r\n this.target.clickable = true;\r\n break;\r\n case \"toggled\":\r\n this.target.togglable = true;\r\n break;\r\n case \"drag\":\r\n case \"dragstart\":\r\n case \"dragstop\":\r\n this.target.draggable = true;\r\n break;\r\n case \"track\":\r\n this.target.trackable = true;\r\n break;\r\n case \"resize\":\r\n this.target.resizable = true;\r\n break;\r\n case \"swipe\":\r\n case \"swipeleft\":\r\n case \"swiperight\":\r\n this.target.swipeable = true;\r\n break;\r\n case \"wheel\":\r\n case \"wheelup\":\r\n case \"wheeldown\":\r\n case \"wheelleft\":\r\n case \"wheelright\":\r\n this.target.wheelable = true;\r\n break;\r\n case \"over\":\r\n this.target.hoverable = true;\r\n case \"out\":\r\n this.target.hoverable = true;\r\n break;\r\n case \"focus\":\r\n case \"blur\":\r\n this.target.focusable = true;\r\n break;\r\n }\r\n info.disposer = new MultiDisposer(disposers);\r\n return info;\r\n };\r\n return SpriteEventDispatcher;\r\n}(TargetedEventDispatcher));\r\nexport { SpriteEventDispatcher };\r\n//# sourceMappingURL=SpriteEvents.js.map","/**\r\n * Module contains functionality related to [[Sprite]] states.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"./Base\";\r\nimport { registry } from \"./Registry\";\r\nimport { Adapter } from \"./utils/Adapter\";\r\nimport { List, ListDisposer } from \"./utils/List\";\r\nimport { toColor } from \"./utils/Color\";\r\nimport { percent } from \"./utils/Percent\";\r\nimport * as $utils from \"./utils/Utils\";\r\nimport * as $ease from \"./utils/Ease\";\r\nimport * as $object from \"./utils/Object\";\r\nimport * as $type from \"./utils/Type\";\r\n/**\r\n * Defines a state for [[Sprite]].\r\n *\r\n * A \"state\" is a special object that has all the same properties as the\r\n * [[Sprite]] of the same type, and which can be used to quickly apply a set\r\n * of property values. (set state)\r\n *\r\n * When [[Sprite]] (or any object that extends Sprite) is created it creates a\r\n * \"default\" state. You can modify the \"default\" state so that when the Sprite\r\n * returns to default state certain properties are added.\r\n *\r\n * Default state can be accessed using Sprite's `defaultState` getter.\r\n *\r\n * ```TypeScript\r\n * sprite.defaultState.properties.fillOpacity = 0.5;\r\n * ```\r\n * ```JavaScript\r\n * sprite.defaultState.properties.fillOpacity = 0.5;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"defaultState\": {\r\n * \"properties\": {\r\n * \"fillOpacity\": 0.5\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * If Sprite is \"hoverable\", it automatically adds a \"hover\" state, which is\r\n * applied when it has a cursor over it.\r\n *\r\n * ```TypeScript\r\n * let hoverstate = sprite.states.create(\"hover\");\r\n * hoverstate.properties.fillOpacity = 1;\r\n * ```\r\n * ```JavaScript\r\n * var hoverstate = sprite.states.create(\"hover\");\r\n * hoverstate.properties.fillOpacity = 1;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"states\": {\r\n * \"hover\": {\r\n * \"properties\": {\r\n * \"fillOpacity\": 0.5\r\n * }\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * The above will automatically apply \"hover\" state when the Sprite is hovered,\r\n * thus will set its `fillOpacity` property to 1, and will reset it to 0.5 when\r\n * it's no longer hovered.\r\n *\r\n * Every object that inherits from [[Sprite]] can and will add their own\r\n * properties to the available list.\r\n *\r\n * User can create their own states, and apply them as needed:\r\n *\r\n * ```TypeScript\r\n * let myCustomState = sprite.states.create(\"mystate\");\r\n * myCustomState.properties.fillOpacity = 0.5;\r\n * myCustomState.properties.strokeOpacity = 0.8;\r\n * sprite.setState(\"mystate\");\r\n * ```\r\n * ```JavaScript\r\n * var myCustomState = sprite.states.create(\"mystate\");\r\n * myCustomState.properties.fillOpacity = 0.5;\r\n * myCustomState.properties.strokeOpacity = 0.8;\r\n * sprite.setState(\"mystate\");\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/states/}\r\n * @important\r\n */\r\nvar SpriteState = /** @class */ (function (_super) {\r\n __extends(SpriteState, _super);\r\n /**\r\n * Constructor\r\n */\r\n function SpriteState() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Duration of the transition to this state. 0 means instantenous transition.\r\n * Any number means the [[Sprite]] will transit smoothly to this state,\r\n * animating all animatable properties.\r\n *\r\n * @default 0\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n */\r\n _this.transitionDuration = 0;\r\n /**\r\n * Easing function to use when transitioning to this state.\r\n *\r\n * @default cubicOut\r\n * @see {@link Ease}\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n */\r\n _this.transitionEasing = $ease.cubicOut;\r\n /**\r\n * Collection of properties and their values that should be applied to [[Sprite]]\r\n * when switching to this State.\r\n *\r\n * The property values set on a [[SpriteState]] will override the ones set\r\n * directly on a [[Sprite]].\r\n */\r\n _this.properties = {};\r\n /**\r\n * A collection of key/value pairs that can be used to bind specific Sprite\r\n * properties to [[DataItem]].\r\n *\r\n * For example: `fill` property can be bound to `myCustomColor` field in\r\n * DataItem. The Sprite will automatically get the value for `fill` from its\r\n * DataItem.\r\n *\r\n * SpriteState-specific binding will override binding set directly on\r\n * [[Sprite]]. I.e. you can make Sprite use different fill color on hover by\r\n * adding a `fill` binding to a different DataItem key for Sprite's \"hover\"\r\n * state object.\r\n *\r\n * @see {@link Sprite}\r\n */\r\n _this.propertyFields = {};\r\n //public propertyFields: Dictionary<keyof this[\"_properties\"], string> = new Dictionary<keyof this[\"_properties\"], string>();;\r\n /**\r\n * A list of [[Filter]] elements to be applied to the relative [[Sprite]]\r\n * when switching to this State.\r\n *\r\n * @param {List}\r\n */\r\n _this.filters = new List();\r\n /**\r\n * Identifies if this object is a \"template\" and should not be treated as\r\n * real object that is drawn or actually used in the chart.\r\n */\r\n _this.isTemplate = false;\r\n _this.className = \"SpriteState\";\r\n // Make filter list disposable\r\n _this._disposers.push(new ListDisposer(_this.filters));\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(SpriteState.prototype, \"adapter\", {\r\n /**\r\n * Holds Adapter.\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._adapterO) {\r\n this._adapterO = new Adapter(this);\r\n // Decorate adapter with events so that we can apply its settings whenever\r\n // it is modified\r\n this._adapterO.events.on(\"inserted\", function (ev) {\r\n _this[ev.newValue.key] = _this[ev.newValue.key];\r\n }, undefined, false);\r\n this._adapterO.events.on(\"removed\", function (ev) {\r\n _this[ev.newValue.key] = _this[ev.newValue.key];\r\n }, undefined, false);\r\n }\r\n return this._adapterO;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns [[Sprite]] element's property value.\r\n *\r\n * Will check if there are any bindings with [[DataItem]] and if there are\r\n * any method callbacks set up for the specific property.\r\n *\r\n * @param propertyName Property name\r\n * @return Property value\r\n */\r\n SpriteState.prototype.getPropertyValue = function (propertyName) {\r\n var propValue = this.properties[propertyName];\r\n var sprite = this.sprite;\r\n if (sprite) {\r\n var fieldName = this.propertyFields[propertyName];\r\n if ($type.hasValue(fieldName)) {\r\n if (sprite.dataItem) {\r\n propValue = sprite.dataItem.dataContext[fieldName];\r\n }\r\n if (propValue == undefined) {\r\n propValue = \"__unset\";\r\n }\r\n }\r\n // Apply adapters\r\n // If the value itself is undefined, we're going to pass in Sprite's\r\n // value to adapters\r\n // @todo get rid of <any>\r\n if (!$type.hasValue(propValue)) {\r\n var spriteValue = sprite.getPropertyValue(propertyName);\r\n if (this._adapterO) {\r\n propValue = this._adapterO.apply(propertyName, spriteValue);\r\n }\r\n else {\r\n propValue = spriteValue;\r\n }\r\n if (propValue == spriteValue) {\r\n propValue = undefined;\r\n }\r\n }\r\n else {\r\n if (this._adapterO) {\r\n propValue = this._adapterO.apply(propertyName, propValue);\r\n }\r\n }\r\n /*let method = this.propertyMethods.getKey(propertyName);\r\n if (method) {\r\n propValue = method(sprite, propertyName);\r\n }*/\r\n }\r\n return propValue;\r\n };\r\n /**\r\n * Copies all property and style values from another [[SpriteState]] object.\r\n *\r\n * @param source Source [[SpriteState]]\r\n */\r\n SpriteState.prototype.copyFrom = function (source) {\r\n if (source && source != this) {\r\n this.transitionDuration = source.transitionDuration;\r\n this.transitionEasing = source.transitionEasing;\r\n $utils.copyProperties(source.properties, this.properties);\r\n $utils.copyProperties(source.propertyFields, this.propertyFields);\r\n this.filters.copyFrom(source.filters);\r\n if (source._adapterO) {\r\n this.adapter.copyFrom(source._adapterO);\r\n }\r\n }\r\n };\r\n Object.defineProperty(SpriteState.prototype, \"allValues\", {\r\n /**\r\n * Returns all values that should be applied by the SpriteState.\r\n *\r\n * It takes adapters into account.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Properties\r\n * @todo Add adapter values\r\n * @todo proper type this[\"_properties\"]\r\n */\r\n get: function () {\r\n var _this = this;\r\n // Init return value\r\n var res = {};\r\n // Apply adapters to all values\r\n $object.each(this.properties, function (prop, value) {\r\n res[prop] = _this.getPropertyValue(prop);\r\n });\r\n // Cycle through all adapters and add values for missing properties\r\n if (this._adapterO) {\r\n var keys = this._adapterO.keys();\r\n $object.each(keys, function (_x, prop) {\r\n var value = _this.getPropertyValue(prop);\r\n res[prop] = value;\r\n });\r\n }\r\n // Cycle through all property fileds and add values for missing properties\r\n var propertyFields = this.propertyFields;\r\n $object.each(propertyFields, function (prop) {\r\n var value = _this.getPropertyValue(prop);\r\n res[prop] = value;\r\n });\r\n return res;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Resets the State to initial state - no values or Filters applied.\r\n */\r\n SpriteState.prototype.reset = function () {\r\n this.properties = {};\r\n this.filters.clear();\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n SpriteState.prototype.processConfig = function (config) {\r\n if ($type.hasValue(config) && $type.hasValue(config[\"properties\"])) {\r\n $object.each(config[\"properties\"], function (key, value) {\r\n if ($type.isString(value)) {\r\n if (value.match(/^[0-9.\\-]+\\%$/)) {\r\n config[\"properties\"][key] = percent($type.toNumber(value));\r\n }\r\n else if (value.match(/^\\#[0-9abcdef]{3,}$/i)) {\r\n config[\"properties\"][key] = toColor(value);\r\n }\r\n }\r\n });\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n /**\r\n * Adds easing functions to \"function\" fields.\r\n *\r\n * @param field Field name\r\n * @return Assign as function?\r\n */\r\n SpriteState.prototype.asFunction = function (field) {\r\n return field == \"transitionEasing\" || _super.prototype.asIs.call(this, field);\r\n };\r\n return SpriteState;\r\n}(BaseObject));\r\nexport { SpriteState };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"SpriteState\"] = SpriteState;\r\n//# sourceMappingURL=SpriteState.js.map","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { registry, is } from \"./Registry\";\r\nimport { Container } from \"./Container\";\r\nimport { raf } from \"./utils/AsyncPending\";\r\nimport { triggerIdle } from \"./utils/AsyncPending\";\r\nimport * as $array from \"./utils/Array\";\r\nimport * as $object from \"./utils/Object\";\r\nimport * as $log from \"./utils/Log\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * The main class that handles system-wide tasks, like caching, heartbeats, etc.\r\n * @important\r\n */\r\nvar System = /** @class */ (function () {\r\n /**\r\n * Performs initialization of the System object.\r\n *\r\n * Called when the first [[Sprite]] object is created.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n function System() {\r\n /**\r\n * A flag indicating if the system is on pause.\r\n */\r\n this._isPaused = false;\r\n /**\r\n * Holds the list of currently playing animations.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n this.animations = [];\r\n /**\r\n * Unique ID of the object.\r\n */\r\n this.uid = registry.getUniqueId();\r\n /**\r\n * @todo Description\r\n * @todo Needed?\r\n * @ignore Exclude from docs\r\n */\r\n this.dummyCounter = 0;\r\n this._frameRequested = false;\r\n this.updateStepDuration = 45;\r\n this.time = Date.now();\r\n }\r\n /**\r\n * Reports time elapsed since timer was reset.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Needed?\r\n * @param msg Message to report in console\r\n * @param reset Reset time counter\r\n */\r\n System.prototype.reportTime = function (msg, reset) {\r\n if (this.dummyCounter < 6) {\r\n //console.log(Date.now() - this.time, msg, this.dummyCounter2);\r\n }\r\n if (reset) {\r\n this.time = Date.now();\r\n }\r\n };\r\n /**\r\n * Performs \"heartbeat\" operations `frameRate` number of times per second.\r\n *\r\n * When the chart element is invalidated, it is not immediately redrawn.\r\n *\r\n * Instead it waits for the next `update()` cycle to be re-validated.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Maybe should be private?\r\n */\r\n System.prototype.update = function () {\r\n var _this = this;\r\n if (this._isPaused) {\r\n return;\r\n }\r\n this._frameRequested = false;\r\n var time = Date.now();\r\n registry.dispatchImmediately(\"enterframe\");\r\n //this.validateLayouts();\r\n //this.validatePositions();\r\n /*\r\n for (let key in registry.invalidLayouts) {\r\n this.validateLayouts(key);\r\n }\r\n for (let key in registry.invalidPositions) {\r\n this.validatePositions(key);\r\n }\r\n */\r\n var skippedComponents = [];\r\n // data objects first - do all calculations\r\n // only data is parsed in chunks, thats why we do for loop instead of a while like with other invalid items.\r\n // important to go backwards, as items are removed!\r\n // TODO use iterator instead\r\n for (var key in registry.invalidDatas) {\r\n if ($object.hasKey(registry.invalidDatas, key)) {\r\n var invalidData = registry.invalidDatas[key];\r\n while (invalidData.length > 0) {\r\n var component = invalidData[0];\r\n var dataProvider = component.dataProvider;\r\n if (!component.isDisposed()) {\r\n if (dataProvider && dataProvider.dataInvalid) {\r\n try {\r\n dataProvider.validateData();\r\n if (dataProvider.dataValidationProgress < 1) {\r\n break;\r\n }\r\n }\r\n catch (e) {\r\n $array.remove(invalidData, dataProvider);\r\n dataProvider.raiseCriticalError(e);\r\n }\r\n }\r\n else {\r\n try {\r\n component.validateData();\r\n if (component.dataValidationProgress < 1) {\r\n break;\r\n }\r\n }\r\n catch (e) {\r\n $array.remove(invalidData, component);\r\n component.raiseCriticalError(e);\r\n }\r\n }\r\n }\r\n else {\r\n $array.remove(invalidData, component);\r\n }\r\n }\r\n if (Date.now() - time > this.updateStepDuration) {\r\n break;\r\n }\r\n }\r\n }\r\n while (registry.invalidRawDatas.length > 0) {\r\n var component = registry.invalidRawDatas[0];\r\n if (!component.isDisposed()) {\r\n try {\r\n component.validateRawData();\r\n }\r\n catch (e) {\r\n $array.remove(registry.invalidRawDatas, component);\r\n component.raiseCriticalError(e);\r\n }\r\n }\r\n else {\r\n $array.remove(registry.invalidRawDatas, component);\r\n }\r\n }\r\n // TODO use iterator instead\r\n while (registry.invalidDataItems.length > 0) {\r\n var component = registry.invalidDataItems[0];\r\n var dataProvider = component.dataProvider;\r\n // this is needed to avoid partial value validation when data is parsed in chunks\r\n if (component.isDisposed() || component.dataInvalid || (dataProvider && dataProvider.dataInvalid)) {\r\n // void\r\n }\r\n else {\r\n try {\r\n component.validateDataItems();\r\n }\r\n catch (e) {\r\n $array.remove(registry.invalidDataItems, component);\r\n component.raiseCriticalError(e);\r\n }\r\n }\r\n // this might seem too much, as validateValues removes from invalidDataItems aswell, but just to be sure (in case validateData is overriden and no super is called)\r\n $array.remove(registry.invalidDataItems, component);\r\n }\r\n // TODO use iterator instead\r\n while (registry.invalidDataRange.length > 0) {\r\n var component = registry.invalidDataRange[0];\r\n var dataProvider = component.dataProvider;\r\n if (component.isDisposed() || component.dataInvalid || (dataProvider && dataProvider.dataInvalid)) {\r\n // void\r\n }\r\n else {\r\n try {\r\n component.validateDataRange();\r\n if (!component.skipRangeEvent) {\r\n component.dispatchImmediately(\"datarangechanged\");\r\n }\r\n component.skipRangeEvent = false;\r\n }\r\n catch (e) {\r\n $array.remove(registry.invalidDataRange, component);\r\n component.raiseCriticalError(e);\r\n }\r\n }\r\n // this might seem too much, as validateDataRange removes from invalidDataRange aswell, but just to be sure (in case validateData is overriden and no super is called)\r\n $array.remove(registry.invalidDataRange, component);\r\n }\r\n var skippedSprites = [];\r\n // display objects later\r\n // TODO use iterator instead\r\n $object.each(registry.invalidLayouts, function (key) {\r\n _this.validateLayouts(key);\r\n });\r\n $object.each(registry.invalidPositions, function (key) {\r\n _this.validatePositions(key);\r\n });\r\n var hasSkipped = false;\r\n time = Date.now();\r\n $object.each(registry.invalidSprites, function (key, invalidSprites) {\r\n var count = 0;\r\n while (invalidSprites.length > 0) {\r\n _this.validateLayouts(key);\r\n _this.validatePositions(key);\r\n count++;\r\n if (count == 5) {\r\n if (Date.now() - time > _this.updateStepDuration) {\r\n break;\r\n }\r\n count = 0;\r\n }\r\n var sprite = invalidSprites[invalidSprites.length - 1];\r\n // we need to check this, as validateLayout might validate sprite\r\n if (sprite && !sprite.isDisposed()) {\r\n if (!sprite._systemCheckIfValidate()) {\r\n // void\r\n skippedSprites.push(sprite);\r\n }\r\n else {\r\n if (!_this.checkIfValidate2(sprite)) {\r\n // void\r\n skippedSprites.push(sprite);\r\n }\r\n else {\r\n try {\r\n sprite._systemUpdate(skippedSprites);\r\n }\r\n catch (e) {\r\n sprite.invalid = false;\r\n $array.remove(invalidSprites, sprite);\r\n sprite.raiseCriticalError(e);\r\n }\r\n }\r\n }\r\n // this might seem too much, but it's ok\r\n sprite.invalid = false;\r\n }\r\n $array.remove(invalidSprites, sprite);\r\n }\r\n registry.invalidSprites[key] = registry.invalidSprites[key].concat(skippedSprites);\r\n });\r\n $object.each(registry.invalidSprites, function (key, value) {\r\n if (value.length > 0) {\r\n hasSkipped = true;\r\n }\r\n });\r\n $object.each(registry.invalidDatas, function (key, value) {\r\n if (value.length > 0) {\r\n hasSkipped = true;\r\n }\r\n });\r\n // TODO make this more efficient\r\n // TODO don't copy the array\r\n $array.each($array.copy(this.animations), function (x) {\r\n x.update();\r\n });\r\n //if(!hasSkipped){\r\n $object.each(registry.invalidLayouts, function (key) {\r\n _this.validateLayouts(key);\r\n });\r\n $object.each(registry.invalidPositions, function (key) {\r\n _this.validatePositions(key);\r\n });\r\n //}\r\n triggerIdle();\r\n $object.each(registry.invalidLayouts, function (key) {\r\n _this.validateLayouts(key);\r\n });\r\n $object.each(registry.invalidPositions, function (key) {\r\n _this.validatePositions(key);\r\n });\r\n registry.dispatchImmediately(\"exitframe\");\r\n if (hasSkipped || this.animations.length > 0 || skippedComponents.length > 0) {\r\n this.requestFrame();\r\n }\r\n if (this.updateStepDuration < 200) {\r\n var all0_1 = true;\r\n $object.each(registry.invalidDatas, function (key, value) {\r\n if (value.length > 0) {\r\n all0_1 = false;\r\n }\r\n });\r\n $object.each(registry.invalidSprites, function (key, value) {\r\n if (value.length > 0) {\r\n all0_1 = false;\r\n }\r\n });\r\n if (all0_1) {\r\n this.updateStepDuration = 200;\r\n }\r\n }\r\n };\r\n System.prototype.checkIfValidate2 = function (sprite) {\r\n if (sprite.dataItem && sprite.dataItem.component && sprite.dataItem.component.dataInvalid && !sprite.dataItem.component.isTemplate) {\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n };\r\n /**\r\n * Requests new animation frame\r\n */\r\n System.prototype.requestFrame = function () {\r\n var _this = this;\r\n if (!this._frameRequested) {\r\n raf(function () {\r\n _this.update();\r\n });\r\n this._frameRequested = true;\r\n }\r\n };\r\n /**\r\n * Call this method if you update data or config of a chart that is in\r\n * hidden container, after revealing the container, so that labels and\r\n * possibly other elements can correctly arrange themselves.\r\n *\r\n * @since 4.7.10\r\n * @param container Target container\r\n */\r\n System.prototype.softInvalidate = function (container) {\r\n var _this = this;\r\n container.children.each(function (child) {\r\n if (child instanceof Container) {\r\n _this.softInvalidate(child);\r\n }\r\n if (child.measureFailed) {\r\n if (is(child, \"Label\")) {\r\n child.hardInvalidate();\r\n }\r\n else {\r\n child.invalidate();\r\n }\r\n child.measureFailed = false;\r\n }\r\n });\r\n };\r\n /**\r\n * Triggers position re-validation on all [[Sprite]] elements that have\r\n * invalid(ated) positions.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Maybe should be private?\r\n */\r\n System.prototype.validatePositions = function (id) {\r\n // invalid positions\r\n // TODO use iterator instead\r\n var invalidPositions = registry.invalidPositions[id];\r\n while (invalidPositions.length > 0) {\r\n var sprite = invalidPositions[invalidPositions.length - 1];\r\n if (!sprite.isDisposed()) {\r\n try {\r\n sprite._systemValidatePositions();\r\n }\r\n catch (e) {\r\n sprite.positionInvalid = false;\r\n $array.remove(invalidPositions, sprite);\r\n sprite.raiseCriticalError(e);\r\n }\r\n }\r\n else {\r\n $array.remove(invalidPositions, sprite);\r\n }\r\n }\r\n };\r\n /**\r\n * Triggers position re-validation on all [[Container]] elements that have\r\n * invalid(ated) layouts.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Maybe should be private?\r\n */\r\n System.prototype.validateLayouts = function (id) {\r\n // invalid positions\r\n // TODO use iterator instead\r\n var invalidLayouts = registry.invalidLayouts[id];\r\n while (invalidLayouts.length > 0) {\r\n var container = invalidLayouts[invalidLayouts.length - 1];\r\n if (!container.isDisposed()) {\r\n try {\r\n container.children.each(function (sprite) {\r\n sprite._systemValidateLayouts();\r\n });\r\n container.validateLayout();\r\n }\r\n catch (e) {\r\n container.layoutInvalid = false;\r\n $array.remove(invalidLayouts, container);\r\n container.raiseCriticalError(e);\r\n }\r\n }\r\n else {\r\n $array.remove(invalidLayouts, container);\r\n }\r\n }\r\n };\r\n /**\r\n * Outputs string to console if `verbose` is `true`.\r\n *\r\n * @param value Message to output to console\r\n */\r\n System.prototype.log = function (value) {\r\n $log.log(value);\r\n };\r\n Object.defineProperty(System.prototype, \"isPaused\", {\r\n /**\r\n * @return Is system on pause?\r\n */\r\n get: function () {\r\n return this._isPaused;\r\n },\r\n /**\r\n * Pauses all the processes of all the amCharts objects on the page\r\n *\r\n * @return is paused?\r\n */\r\n set: function (value) {\r\n this._isPaused = value;\r\n if (!value) {\r\n this._frameRequested = false;\r\n this.requestFrame();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * amCharts Version.\r\n *\r\n * This follows npm's semver specification.\r\n *\r\n * @see {@link https://docs.npmjs.com/misc/semver}\r\n */\r\n System.VERSION = \"4.10.22\";\r\n return System;\r\n}());\r\nexport { System };\r\n/**\r\n * A singleton global instance of [[System]].\r\n *\r\n * All code should use this, rather than instantiating their\r\n * own System objects.\r\n */\r\nexport var system = new System();\r\n//# sourceMappingURL=System.js.map","/**\r\n * CSV parser.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { DataParser } from \"./DataParser\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $array from \"../utils/Array\";\r\n/**\r\n * Define possible separators.\r\n */\r\nvar separators = [\",\", \";\", \"\\t\"];\r\n/**\r\n * A parser for CSV format.\r\n *\r\n * @important\r\n */\r\nvar CSVParser = /** @class */ (function (_super) {\r\n __extends(CSVParser, _super);\r\n function CSVParser() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n /**\r\n * Content-type suitable for CSV format.\r\n */\r\n _this.contentType = \"text/csv\";\r\n /**\r\n * Parser options.\r\n *\r\n * @see {@link ICSVOptions} for description of each option\r\n */\r\n _this.options = {\r\n delimiter: \"\",\r\n reverse: false,\r\n skipRows: 0,\r\n skipEmpty: true,\r\n useColumnNames: false\r\n };\r\n return _this;\r\n }\r\n /**\r\n * Tests if the format is CSV.\r\n *\r\n * @param data Source data\r\n * @return Is it CSV?\r\n */\r\n CSVParser.isCSV = function (data) {\r\n return CSVParser.getDelimiterFromData(data) ? true : false;\r\n };\r\n /**\r\n * Tries to determine a column separator.\r\n *\r\n * @param data Source data\r\n * @return Separator\r\n */\r\n CSVParser.getDelimiterFromData = function (data) {\r\n // We're going to take first few lines of the CSV with different\r\n // possible separators and check if it results in same number of columns.\r\n // If it does, we're going to assume it's a CSV\r\n var lines = data.split(\"\\n\");\r\n var len = lines.length;\r\n var separator;\r\n $array.each(separators, function (sep) {\r\n var columns = 0, lineColums = 0;\r\n // TODO replace with iterators\r\n for (var i = 0; i < len; ++i) {\r\n // Get number of columns in a line\r\n columns = lines[i].split(sep).length;\r\n if (columns > 1) {\r\n // More than one column - possible candidate\r\n if (lineColums === 0) {\r\n // First line\r\n lineColums = columns;\r\n }\r\n else if (columns != lineColums) {\r\n // Incorrect number of columns, give up on this separator\r\n lineColums = 0;\r\n break;\r\n }\r\n }\r\n else {\r\n // Not this separator\r\n // Not point in continuing\r\n lineColums = 0;\r\n break;\r\n }\r\n }\r\n // Check if we have a winner\r\n if (lineColums) {\r\n separator = sep;\r\n }\r\n });\r\n return separator;\r\n };\r\n /**\r\n * Parses and returns data.\r\n *\r\n * @param data Unparsed data\r\n * @return Parsed data\r\n */\r\n CSVParser.prototype.parse = function (csv) {\r\n // Check if we have delimiter set\r\n if (!this.options.delimiter) {\r\n this.options.delimiter = CSVParser.getDelimiterFromData(csv);\r\n }\r\n // Get CSV data as array\r\n var data = this.CSVToArray(csv, this.options.delimiter);\r\n // Do we need to cast some fields to numbers?\r\n var empty = $type.hasValue(this.options.emptyAs);\r\n var numbers = this.parsableNumbers;\r\n var dates = this.parsableDates;\r\n // Init resuling array\r\n var res = [], cols = [], col, i;\r\n // Skip rows\r\n for (i = 0; i < this.options.skipRows; i++) {\r\n data.shift();\r\n }\r\n // First row holds column names?\r\n if (this.options.useColumnNames) {\r\n cols = data.shift();\r\n // Normalize column names\r\n for (var x = 0; x < cols.length; x++) {\r\n // trim\r\n col = $type.hasValue(cols[x]) ? cols[x].replace(/^\\s+|\\s+$/gm, \"\") : \"\";\r\n // Check for empty\r\n if (\"\" === col) {\r\n col = \"col\" + x;\r\n }\r\n cols[x] = col;\r\n }\r\n }\r\n // Iterate through the result set\r\n var row;\r\n while (true) {\r\n row = this.options.reverse ? data.pop() : data.shift();\r\n if (!row) {\r\n break;\r\n }\r\n if (this.options.skipEmpty && row.length === 1 && row[0] === \"\") {\r\n continue;\r\n }\r\n var dataPoint = {};\r\n for (i = 0; i < row.length; i++) {\r\n col = undefined === cols[i] ? \"col\" + i : cols[i];\r\n dataPoint[col] = row[i] === \"\" ? this.options.emptyAs : row[i];\r\n // Convert\r\n if (empty) {\r\n dataPoint[col] = this.maybeToEmpty(dataPoint[col]);\r\n }\r\n if (numbers) {\r\n dataPoint[col] = this.maybeToNumber(col, dataPoint[col]);\r\n }\r\n if (dates) {\r\n dataPoint[col] = this.maybeToDate(col, dataPoint[col]);\r\n }\r\n }\r\n res.push(dataPoint);\r\n }\r\n return res;\r\n };\r\n /**\r\n * Converts CSV into array.\r\n *\r\n * The functionality of this function is taken from here:\r\n * http://www.bennadel.com/blog/1504-ask-ben-parsing-csv-strings-with-javascript-exec-regular-expression-command.htm\r\n *\r\n * @param data Source data\r\n * @param delimiter Column delimiter\r\n * @return Parsed array\r\n */\r\n CSVParser.prototype.CSVToArray = function (data, delimiter) {\r\n // Check to see if the delimiter is defined. If not,\r\n // then default to comma.\r\n delimiter = (delimiter || ',');\r\n // Create a regular expression to parse the CSV values.\r\n var objPattern = new RegExp((\r\n // Delimiters.\r\n \"(\\\\\" + delimiter + \"|\\\\r?\\\\n|\\\\r|^)\" +\r\n // Quoted fields.\r\n \"(?:\\\"([^\\\"]*(?:\\\"\\\"[^\\\"]*)*)\\\"|\" +\r\n // Standard fields.\r\n \"([^\\\"\\\\\" + delimiter + \"\\\\r\\\\n]*))\"), \"gi\");\r\n // Create an array to hold our data. Give the array\r\n // a default empty first row.\r\n var arrData = [\r\n []\r\n ];\r\n // Create an array to hold our individual pattern\r\n // matching groups.\r\n var arrMatches = null;\r\n // Keep looping over the regular expression matches\r\n // until we can no longer find a match.\r\n while (true) {\r\n arrMatches = objPattern.exec(data);\r\n if (!arrMatches) {\r\n break;\r\n }\r\n // Get the delimiter that was found.\r\n var strMatchedDelimiter = arrMatches[1];\r\n // Check to see if the given delimiter has a length\r\n // (is not the start of string) and if it matches\r\n // field delimiter. If id does not, then we know\r\n // that this delimiter is a row delimiter.\r\n if (strMatchedDelimiter.length &&\r\n (strMatchedDelimiter !== delimiter)) {\r\n // Since we have reached a new row of data,\r\n // add an empty row to our data array.\r\n arrData.push([]);\r\n }\r\n // Now that we have our delimiter out of the way,\r\n // let's check to see which kind of value we\r\n // captured (quoted or unquoted).\r\n var strMatchedValue = void 0;\r\n if (arrMatches[2]) {\r\n // We found a quoted value. When we capture\r\n // this value, unescape any double quotes.\r\n strMatchedValue = arrMatches[2].replace(new RegExp(\"\\\"\\\"\", \"g\"), \"\\\"\");\r\n }\r\n else {\r\n // We found a non-quoted value.\r\n strMatchedValue = arrMatches[3];\r\n }\r\n // Now that we have our value string, let's add\r\n // it to the data array.\r\n arrData[arrData.length - 1].push(strMatchedValue);\r\n }\r\n // Return the parsed data.\r\n return (arrData);\r\n };\r\n return CSVParser;\r\n}(DataParser));\r\nexport { CSVParser };\r\n//# sourceMappingURL=CSVParser.js.map","/**\r\n * Data Loader is responsible for loading and parsing external data\r\n */\r\nimport { CSVParser } from \"./CSVParser\";\r\nimport { JSONParser } from \"./JSONParser\";\r\nimport { Adapter } from \"../utils/Adapter\";\r\nimport * as $net from \"../utils/Net\";\r\nimport * as $array from \"../utils/Array\";\r\n;\r\n/**\r\n * Data Loader is responsible for loading and parsing external data.\r\n *\r\n * There is just one instance of DataLoader per system. Unless you have a\r\n * speicific reason, do not instantiate additional instances.\r\n *\r\n * The global instance of Data Loader is accessible via:\r\n *\r\n * ```TypeScript\r\n * am4core.dataLoader;\r\n * ```\r\n * ```JavaScript\r\n * am4core.dataLoader;\r\n * ```\r\n *\r\n * A loading of specific data source is done via [[DataSource]].\r\n *\r\n Please refer to [[DataSource]] for information how to use it.\r\n *\r\n * @see {@link IDataLoaderAdapters} for a list of available Adapters\r\n */\r\nvar DataLoader = /** @class */ (function () {\r\n function DataLoader() {\r\n /**\r\n * Adapter.\r\n */\r\n this.adapter = new Adapter(this);\r\n }\r\n /**\r\n * Loads a supplied [[DataSource]] or an array of data sources, then calls\r\n * their respective `parse` methods.\r\n *\r\n * @param source A single data source or an array of multiple of data sources\r\n */\r\n DataLoader.prototype.load = function (source) {\r\n var sources = Array.isArray(source) ? source : [source];\r\n // Add each Source to the list to be loaded simultaneously\r\n var promises = $array.map(sources, function (x) {\r\n // Dispatch events\r\n x.dispatchImmediately(\"started\");\r\n x.dispatchImmediately(\"loadstarted\");\r\n return $net.load(x.url, x, x.requestOptions);\r\n });\r\n // Run all promises in parallel\r\n Promise.all(promises).then(function (res) {\r\n // Process each loaded source\r\n $array.each(res, function (result) {\r\n // Get Source\r\n var source = result.target;\r\n // Dispatch events\r\n source.dispatchImmediately(\"loadended\");\r\n if (result.error) {\r\n if (source.events.isEnabled(\"error\")) {\r\n source.events.dispatchImmediately(\"error\", {\r\n type: \"error\",\r\n code: result.xhr.status,\r\n message: source.language.translate(\"Unable to load file: %1\", null, source.url),\r\n target: source\r\n });\r\n }\r\n }\r\n else {\r\n // Initiate parsing of the loaded data\r\n source.processData(result.response, result.type);\r\n }\r\n source.dispatchImmediately(\"ended\");\r\n });\r\n }).catch(function (res) {\r\n if (res.target) {\r\n res.target.dispatchImmediately(\"loadended\");\r\n if (res.target.events.isEnabled(\"error\")) {\r\n res.target.events.dispatchImmediately(\"error\", {\r\n type: \"error\",\r\n code: res.xhr.status,\r\n message: res.target.language.translate(\"Unable to load file: %1\", null, res.target.url),\r\n target: res.target\r\n });\r\n }\r\n res.target.dispatchImmediately(\"ended\");\r\n }\r\n });\r\n };\r\n /**\r\n * Instantiates a [[DataParser]] object based on the data type.\r\n * Built-in parser types are as follows:\r\n *\r\n * * \"csv\" or \"text/csv\"\r\n * * \"json\" or \"application/json\"\r\n *\r\n * @param contentType A format type\r\n * @return A parser object\r\n */\r\n DataLoader.prototype.getParserByType = function (contentType) {\r\n // Let some plugin decide\r\n var parser = this.adapter.apply(\"getParserByType\", {\r\n parser: null,\r\n type: contentType\r\n }).parser;\r\n if (parser) {\r\n return parser;\r\n }\r\n if (contentType == \"csv\" || contentType == \"text/csv\" || contentType == \"application/vnd.ms-excel\") {\r\n return new CSVParser();\r\n }\r\n if (contentType == \"json\" || contentType == \"application/json\") {\r\n return new JSONParser();\r\n }\r\n return;\r\n };\r\n /**\r\n * Tries to determine a parser out of content type and/or actual data.\r\n *\r\n * @param data Data\r\n * @param contentType Content-type\r\n * @return Parser instance\r\n */\r\n DataLoader.prototype.getParserByData = function (data, contentType) {\r\n // Let some plugin decide\r\n var parser = this.adapter.apply(\"getParserByData\", {\r\n parser: null,\r\n data: data,\r\n type: contentType\r\n }).parser;\r\n // Check if we have parser from outside code\r\n if (!parser) {\r\n // No, let's try to figure it out\r\n parser = this.getParserByType(contentType);\r\n if (parser) {\r\n // We're able to figure out parser by content-type\r\n return parser;\r\n }\r\n else if (JSONParser.isJSON(data)) {\r\n return this.getParserByType(\"json\");\r\n }\r\n else if (CSVParser.isCSV(data)) {\r\n return this.getParserByType(\"csv\");\r\n }\r\n }\r\n return parser;\r\n };\r\n return DataLoader;\r\n}());\r\nexport { DataLoader };\r\n/**\r\n * Create instance of Data Loader\r\n */\r\nexport var dataLoader = new DataLoader();\r\n//# sourceMappingURL=DataLoader.js.map","/**\r\n * Data parser module.\r\n */\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { DateFormatter } from \"../formatters/DateFormatter\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $type from \"../utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Base class for the data parsers.\r\n */\r\nvar DataParser = /** @class */ (function () {\r\n function DataParser() {\r\n }\r\n /**\r\n * A \"placeholder\" function for real parsers to override.\r\n *\r\n * @ignore Exclude from docs\r\n * @param data Source data\r\n * @return Parsed data (empty)\r\n */\r\n DataParser.prototype.parse = function (data) {\r\n return [];\r\n };\r\n ;\r\n Object.defineProperty(DataParser.prototype, \"parsableNumbers\", {\r\n /**\r\n * Checks if there are any numeric fields that need to be converted to\r\n * numbers.\r\n *\r\n * @return Numeric fields?\r\n */\r\n get: function () {\r\n return this.options.numberFields && (this.options.numberFields.length > 0);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts a value to 'number' if it is in `numberFields`.\r\n *\r\n * @param field Field name\r\n * @param value Value\r\n * @return Parsed or original value\r\n */\r\n DataParser.prototype.maybeToNumber = function (field, value) {\r\n if (this.options.numberFields.indexOf(field) !== -1) {\r\n return $utils.anyToNumber(value);\r\n }\r\n return value;\r\n };\r\n Object.defineProperty(DataParser.prototype, \"parsableDates\", {\r\n /**\r\n * Checks if there are any date fields that need to be converted to `Date`\r\n * objects.\r\n *\r\n * @return Date fields?\r\n */\r\n get: function () {\r\n return this.options.dateFields && (this.options.dateFields.length > 0);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts a value to `Date` if it is in `dateFields`.\r\n *\r\n * @param field Field name\r\n * @param value Value\r\n * @return Parsed or original value\r\n */\r\n DataParser.prototype.maybeToDate = function (field, value) {\r\n if (this.options.dateFields.indexOf(field) !== -1) {\r\n return this.options.dateFormatter.parse(value, this.dateFormat);\r\n }\r\n return value;\r\n };\r\n /**\r\n * Replaces empty value with something else.\r\n *\r\n * @param value Source value\r\n * @return Source value or replacement\r\n */\r\n DataParser.prototype.maybeToEmpty = function (value) {\r\n if ((!$type.hasValue(value) || value == \"\") && $type.hasValue(this.options.emptyAs)) {\r\n return this.options.emptyAs;\r\n }\r\n return value;\r\n };\r\n Object.defineProperty(DataParser.prototype, \"dateFormatter\", {\r\n /**\r\n * [[DateFormatter]] object for date parsing.\r\n *\r\n * If there was not [[DateFormatter]] supplied in parser options, a new one\r\n * is created.\r\n *\r\n * @return Date formatter\r\n * @see {@link DateFormatter}\r\n */\r\n get: function () {\r\n if (!this.options.dateFormatter) {\r\n this.options.dateFormatter = new DateFormatter;\r\n if (this.options.dateFormat) {\r\n this.options.dateFormat = this.options.dateFormat;\r\n }\r\n }\r\n return this.options.dateFormatter;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataParser.prototype, \"dateFormat\", {\r\n /**\r\n * A date format to use when parsing dates.\r\n *\r\n * @return Date format\r\n * @see {@link DateFormatter}\r\n */\r\n get: function () {\r\n return this.options.dateFormat || this.dateFormatter.inputDateFormat;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return DataParser;\r\n}());\r\nexport { DataParser };\r\n//# sourceMappingURL=DataParser.js.map","import { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { dataLoader } from \"./DataLoader\";\r\nimport { JSONParser } from \"./JSONParser\";\r\nimport { CSVParser } from \"./CSVParser\";\r\nimport { BaseObjectEvents } from \"../Base\";\r\nimport { Adapter } from \"../utils/Adapter\";\r\nimport { Language } from \"../utils/Language\";\r\nimport { DateFormatter } from \"../formatters/DateFormatter\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $object from \"../utils/Object\";\r\n;\r\n;\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Represents a single data source - external file with all of its settings,\r\n * such as format, data parsing, etc.\r\n *\r\n * ```TypeScript\r\n * chart.dataSource.url = \"http://www.myweb.com/data.json\";\r\n * chart.dataSource.parser = am4core.JSONParser;\r\n * ```\r\n * ```JavaScript\r\n * chart.dataSource.url = \"http://www.myweb.com/data.json\";\r\n * chart.dataSource.parser = am4core.JSONParser;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"dataSource\": {\r\n * \"url\": \"http://www.myweb.com/data.json\",\r\n * \"parser\": \"JSONParser\"\r\n * },\r\n * // ...\r\n * }\r\n * ```\r\n *\r\n * @see {@link IDataSourceEvents} for a list of available events\r\n * @see {@link IDataSourceAdapters} for a list of available Adapters\r\n */\r\nvar DataSource = /** @class */ (function (_super) {\r\n __extends(DataSource, _super);\r\n /**\r\n * Constructor\r\n */\r\n function DataSource(url, parser) {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Adapter.\r\n */\r\n _this.adapter = new Adapter(_this);\r\n /**\r\n * Custom options for HTTP(S) request.\r\n */\r\n _this._requestOptions = {};\r\n /**\r\n * If set to `true`, any subsequent data loads will be considered incremental\r\n * (containing only new data points that are supposed to be added to existing\r\n * data).\r\n *\r\n * NOTE: this setting works only with element's `data` property. It won't\r\n * work with any other externally-loadable data property.\r\n *\r\n * @default false\r\n */\r\n _this._incremental = false;\r\n /**\r\n * A collection of key/value pairs to attach to a data source URL when making\r\n * an incremental request.\r\n */\r\n _this._incrementalParams = {};\r\n /**\r\n * This setting is used only when `incremental = true`. If set to `true`,\r\n * it will try to retain the same number of data items across each load.\r\n *\r\n * E.g. if incremental load yeilded 5 new records, then 5 items from the\r\n * beginning of data will be removed so that we end up with the same number\r\n * of data items.\r\n *\r\n * @default false\r\n */\r\n _this._keepCount = false;\r\n /**\r\n * If set to `true`, each subsequent load will be treated as an update to\r\n * currently loaded data, meaning that it will try to update values on\r\n * existing data items, not overwrite the whole data.\r\n *\r\n * This will work faster than complete update, and also will animate the\r\n * values to their new positions.\r\n *\r\n * Data sources across loads must contain the same number of data items.\r\n *\r\n * Loader will not truncate the data set if loaded data has fewer data items,\r\n * and if it is longer, the excess data items will be ignored.\r\n *\r\n * @default false\r\n * @since 4.5.5\r\n */\r\n _this._updateCurrentData = false;\r\n /**\r\n * Will show loading indicator when loading files.\r\n */\r\n _this.showPreloader = true;\r\n _this.className = \"DataSource\";\r\n // Set defaults\r\n if (url) {\r\n _this.url = url;\r\n }\r\n // Set parser\r\n if (parser) {\r\n if (typeof parser == \"string\") {\r\n _this.parser = dataLoader.getParserByType(parser);\r\n }\r\n else {\r\n _this.parser = parser;\r\n }\r\n }\r\n return _this;\r\n }\r\n /**\r\n * Processes the loaded data.\r\n *\r\n * @ignore Exclude from docs\r\n * @param data Raw (unparsed) data\r\n * @param contentType Content type of the loaded data (optional)\r\n */\r\n DataSource.prototype.processData = function (data, contentType) {\r\n // Parsing started\r\n this.dispatchImmediately(\"parsestarted\");\r\n // Check if parser is set\r\n if (!this.parser) {\r\n // Try to resolve from data\r\n this.parser = dataLoader.getParserByData(data, contentType);\r\n if (!this.parser) {\r\n // We have a problem - nobody knows what to do with the data\r\n // Raise error\r\n if (this.events.isEnabled(\"parseerror\")) {\r\n var event_1 = {\r\n type: \"parseerror\",\r\n message: this.language.translate(\"No parser available for file: %1\", null, this.url),\r\n target: this\r\n };\r\n this.events.dispatchImmediately(\"parseerror\", event_1);\r\n }\r\n this.dispatchImmediately(\"parseended\");\r\n return;\r\n }\r\n }\r\n // Apply options adapters\r\n this.parser.options = this.adapter.apply(\"parserOptions\", this.parser.options);\r\n this.parser.options.dateFields = this.adapter.apply(\"dateFields\", this.parser.options.dateFields || []);\r\n this.parser.options.numberFields = this.adapter.apply(\"numberFields\", this.parser.options.numberFields || []);\r\n // Check if we need to pass in date formatter\r\n if (this.parser.options.dateFields && !this.parser.options.dateFormatter) {\r\n this.parser.options.dateFormatter = this.dateFormatter;\r\n }\r\n // Parse\r\n this.data = this.adapter.apply(\"parsedData\", this.parser.parse(this.adapter.apply(\"unparsedData\", data)));\r\n // Check for parsing errors\r\n if (!$type.hasValue(this.data) && this.events.isEnabled(\"parseerror\")) {\r\n var event_2 = {\r\n type: \"parseerror\",\r\n message: this.language.translate(\"Error parsing file: %1\", null, this.url),\r\n target: this\r\n };\r\n this.events.dispatchImmediately(\"parseerror\", event_2);\r\n }\r\n // Wrap up\r\n this.dispatchImmediately(\"parseended\");\r\n if ($type.hasValue(this.data)) {\r\n this.dispatchImmediately(\"done\", {\r\n \"data\": this.data\r\n });\r\n }\r\n // The component is responsible for updating its own data vtriggered via\r\n // events.\r\n // Update last data load\r\n this.lastLoad = new Date();\r\n };\r\n Object.defineProperty(DataSource.prototype, \"url\", {\r\n /**\r\n * @return URL\r\n */\r\n get: function () {\r\n // Get URL\r\n var url = this.disableCache\r\n ? this.timestampUrl(this._url)\r\n : this._url;\r\n // Add incremental params\r\n if (this.incremental && this.component.data.length) {\r\n url = this.addUrlParams(url, this.incrementalParams);\r\n }\r\n return this.adapter.apply(\"url\", url);\r\n },\r\n /**\r\n * URL of the data source.\r\n *\r\n * @param value URL\r\n */\r\n set: function (value) {\r\n this._url = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataSource.prototype, \"requestOptions\", {\r\n /**\r\n * @return Options\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"requestOptions\", this._requestOptions);\r\n },\r\n /**\r\n * Custom options for HTTP(S) request.\r\n *\r\n * At this moment the only option supported is: `requestHeaders`, which holds\r\n * an array of objects for custom request headers, e.g.:\r\n *\r\n * ```TypeScript\r\n * chart.dataSource.requestOptions.requestHeaders = [{\r\n * \"key\": \"x-access-token\",\r\n * \"value\": \"123456789\"\r\n * }];\r\n * ``````JavaScript\r\n * chart.dataSource.requestOptions.requestHeaders = [{\r\n * \"key\": \"x-access-token\",\r\n * \"value\": \"123456789\"\r\n * }];\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"dataSource\": {\r\n * // ...\r\n * \"requestOptions\": {\r\n * \"requestHeaders\": [{\r\n * \"key\": \"x-access-token\",\r\n * \"value\": \"123456789\"\r\n * }]\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * NOTE: setting this options on an-already loaded DataSource will not\r\n * trigger a reload.\r\n *\r\n * @param value Options\r\n */\r\n set: function (value) {\r\n this._requestOptions = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataSource.prototype, \"parser\", {\r\n /**\r\n * @return Data parser\r\n */\r\n get: function () {\r\n if (!this._parser) {\r\n this._parser = new JSONParser();\r\n }\r\n return this.adapter.apply(\"parser\", this._parser);\r\n },\r\n /**\r\n * A parser to be used to parse data.\r\n *\r\n * ```TypeScript\r\n * chart.dataSource.url = \"http://www.myweb.com/data.json\";\r\n * chart.dataSource.parser = am4core.JSONParser;\r\n * ```\r\n * ```JavaScript\r\n * chart.dataSource.url = \"http://www.myweb.com/data.json\";\r\n * chart.dataSource.parser = am4core.JSONParser;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"dataSource\": {\r\n * \"url\": \"http://www.myweb.com/data.json\",\r\n * \"parser\": {\r\n * \"type\": \"JSONParser\"\r\n * }\r\n * },\r\n * // ...\r\n * }\r\n * ```\r\n *\r\n * @default JSONParser\r\n * @param value Data parser\r\n */\r\n set: function (value) {\r\n this._parser = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataSource.prototype, \"reloadFrequency\", {\r\n /**\r\n * @return Reload frequency (ms)\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"reloadTimeout\", this._reloadFrequency);\r\n },\r\n /**\r\n * Data source reload frequency.\r\n *\r\n * If set, it will reload the same URL every X milliseconds.\r\n *\r\n * @param value Reload frequency (ms)\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n if (this._reloadFrequency != value) {\r\n this._reloadFrequency = value;\r\n // Should we schedule a reload?\r\n if (value) {\r\n if (!$type.hasValue(this._reloadDisposer)) {\r\n this._reloadDisposer = this.events.on(\"ended\", function (ev) {\r\n _this._reloadTimeout = setTimeout(function () {\r\n _this.load();\r\n }, _this.reloadFrequency);\r\n });\r\n }\r\n }\r\n else if ($type.hasValue(this._reloadDisposer)) {\r\n this._reloadDisposer.dispose();\r\n this._reloadDisposer = undefined;\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataSource.prototype, \"incremental\", {\r\n /**\r\n * @return Incremental load?\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"incremental\", this._incremental);\r\n },\r\n /**\r\n * Should subsequent reloads be treated as incremental?\r\n *\r\n * Incremental loads will assume that they contain only new data items\r\n * since the last load.\r\n *\r\n * If `incremental = false` the loader will replace all of the target's\r\n * data with each load.\r\n *\r\n * This setting does not have any effect trhe first time data is loaded.\r\n *\r\n * NOTE: this setting works only with element's `data` property. It won't\r\n * work with any other externally-loadable data property.\r\n *\r\n * @default false\r\n * @param Incremental load?\r\n */\r\n set: function (value) {\r\n this._incremental = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataSource.prototype, \"incrementalParams\", {\r\n /**\r\n * @return Incremental request parameters\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"incrementalParams\", this._incrementalParams);\r\n },\r\n /**\r\n * An object consisting of key/value pairs to apply to an URL when data\r\n * source is making an incremental request.\r\n *\r\n * @param value Incremental request parameters\r\n */\r\n set: function (value) {\r\n this._incrementalParams = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataSource.prototype, \"keepCount\", {\r\n /**\r\n * @return keepCount load?\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"keepCount\", this._keepCount);\r\n },\r\n /**\r\n * This setting is used only when `incremental = true`. If set to `true`,\r\n * it will try to retain the same number of data items across each load.\r\n *\r\n * E.g. if incremental load yeilded 5 new records, then 5 items from the\r\n * beginning of data will be removed so that we end up with the same number\r\n * of data items.\r\n *\r\n * @default false\r\n * @param Keep record count?\r\n */\r\n set: function (value) {\r\n this._keepCount = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataSource.prototype, \"updateCurrentData\", {\r\n /**\r\n * @return Update current data?\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"updateCurrentData\", this._updateCurrentData);\r\n },\r\n /**\r\n * If set to `true`, each subsequent load will be treated as an update to\r\n * currently loaded data, meaning that it will try to update values on\r\n * existing data items, not overwrite the whole data.\r\n *\r\n * This will work faster than complete update, and also will animate the\r\n * values to their new positions.\r\n *\r\n * Data sources across loads must contain the same number of data items.\r\n *\r\n * Loader will not truncate the data set if loaded data has fewer data items,\r\n * and if it is longer, the excess data items will be ignored.\r\n *\r\n * NOTE: this setting is ignored if `incremental = true`.\r\n *\r\n * @default false\r\n * @since 2.5.5\r\n * @param Update current data?\r\n */\r\n set: function (value) {\r\n this._updateCurrentData = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataSource.prototype, \"language\", {\r\n /**\r\n * @return A [[Language]] instance to be used\r\n */\r\n get: function () {\r\n if (this._language) {\r\n return this._language;\r\n }\r\n else if (this.component) {\r\n this._language = this.component.language;\r\n return this._language;\r\n }\r\n this.language = new Language();\r\n return this.language;\r\n },\r\n /**\r\n * Language instance to use.\r\n *\r\n * Will inherit and use chart's language, if not set.\r\n *\r\n * @param value An instance of Language\r\n */\r\n set: function (value) {\r\n this._language = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataSource.prototype, \"dateFormatter\", {\r\n /**\r\n * @return A [[DateFormatter]] instance to be used\r\n */\r\n get: function () {\r\n if (this._dateFormatter) {\r\n return this._dateFormatter;\r\n }\r\n else if (this.component) {\r\n this._dateFormatter = this.component.dateFormatter;\r\n return this._dateFormatter;\r\n }\r\n this.dateFormatter = new DateFormatter();\r\n return this.dateFormatter;\r\n },\r\n /**\r\n * A [[DateFormatter]] to use when parsing dates from string formats.\r\n *\r\n * Will inherit and use chart's DateFormatter if not ser.\r\n *\r\n * @param value An instance of [[DateFormatter]]\r\n */\r\n set: function (value) {\r\n this._dateFormatter = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Adds current timestamp to the URL.\r\n *\r\n * @param url Source URL\r\n * @return Timestamped URL\r\n */\r\n DataSource.prototype.timestampUrl = function (url) {\r\n var tstamp = new Date().getTime().toString();\r\n var params = {};\r\n params[tstamp] = \"\";\r\n return this.addUrlParams(url, params);\r\n };\r\n /**\r\n * Disposes of this object.\r\n */\r\n DataSource.prototype.dispose = function () {\r\n _super.prototype.dispose.call(this);\r\n if (this._reloadTimeout) {\r\n clearTimeout(this._reloadTimeout);\r\n }\r\n if ($type.hasValue(this._reloadDisposer)) {\r\n this._reloadDisposer.dispose();\r\n this._reloadDisposer = undefined;\r\n }\r\n };\r\n /**\r\n * Initiate the load.\r\n *\r\n * All loading in JavaScript is asynchronous. This function will trigger the\r\n * load and will exit immediately.\r\n *\r\n * Use DataSource's events to watch for loaded data and errors.\r\n */\r\n DataSource.prototype.load = function () {\r\n if (this.url) {\r\n if (this._reloadTimeout) {\r\n clearTimeout(this._reloadTimeout);\r\n }\r\n dataLoader.load(this);\r\n }\r\n };\r\n /**\r\n * Adds parameters to `url` as query strings. Will take care of proper\r\n * separators.\r\n *\r\n * @param url Source URL\r\n * @param params Parameters\r\n * @return New URL\r\n */\r\n DataSource.prototype.addUrlParams = function (url, params) {\r\n var join = url.match(/\\?/) ? \"&\" : \"?\";\r\n var add = [];\r\n $object.each(params, function (key, value) {\r\n if (value != \"\") {\r\n add.push(key + \"=\" + encodeURIComponent(value));\r\n }\r\n else {\r\n add.push(key);\r\n }\r\n });\r\n if (add.length) {\r\n return url + join + add.join(\"&\");\r\n }\r\n return url;\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n DataSource.prototype.processConfig = function (config) {\r\n registry.registeredClasses[\"json\"] = JSONParser;\r\n registry.registeredClasses[\"JSONParser\"] = JSONParser;\r\n registry.registeredClasses[\"csv\"] = CSVParser;\r\n registry.registeredClasses[\"CSVParser\"] = CSVParser;\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n return DataSource;\r\n}(BaseObjectEvents));\r\nexport { DataSource };\r\n//# sourceMappingURL=DataSource.js.map","/**\r\n * JSON parser.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { DataParser } from \"./DataParser\";\r\nimport * as $object from \"../utils/Object\";\r\nimport * as $type from \"../utils/Type\";\r\n/**\r\n * A parser for JSON.\r\n *\r\n * @important\r\n */\r\nvar JSONParser = /** @class */ (function (_super) {\r\n __extends(JSONParser, _super);\r\n function JSONParser() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n /**\r\n * Content-type suitable for JSON format.\r\n */\r\n _this.contentType = \"application/json\";\r\n /**\r\n * Parser options.\r\n *\r\n * @see {@link IJSONOptions} for description of each option\r\n */\r\n _this.options = {};\r\n return _this;\r\n }\r\n /**\r\n * Tests if the data is valid JSON.\r\n *\r\n * @param data Source data\r\n * @return Is it JSON?\r\n */\r\n JSONParser.isJSON = function (data) {\r\n try {\r\n // Try parsing JSON\r\n JSON.parse(data);\r\n // If we got to this point it means it's a valid JSON\r\n return true;\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n };\r\n /**\r\n * Parses and returns data.\r\n *\r\n * @param data Unparsed data\r\n * @return Parsed data\r\n */\r\n JSONParser.prototype.parse = function (data) {\r\n var _this = this;\r\n // Init return\r\n var res;\r\n // Try parsing\r\n try {\r\n if ($type.hasValue(JSON)) {\r\n res = JSON.parse(data);\r\n }\r\n }\r\n catch (e) {\r\n return undefined;\r\n }\r\n // Do we need to cast some fields to numbers or dates?\r\n var empty = $type.hasValue(this.options.emptyAs);\r\n var numbers = this.parsableNumbers;\r\n var dates = this.parsableDates;\r\n if (Array.isArray(res) && (numbers || dates || empty)) {\r\n var _loop_1 = function (i, len) {\r\n var row = res[i];\r\n $object.each(row, function (key, value) {\r\n if (empty) {\r\n row[key] = _this.maybeToEmpty(row[key]);\r\n }\r\n if (numbers) {\r\n row[key] = _this.maybeToNumber(key, row[key]);\r\n }\r\n if (dates) {\r\n row[key] = _this.maybeToDate(key, row[key]);\r\n }\r\n });\r\n };\r\n // Iterate through the data and check if it needs to be converted\r\n for (var i = 0, len = res.length; i < len; i++) {\r\n _loop_1(i, len);\r\n }\r\n }\r\n // Convert to array\r\n //return Array.isArray(res) ? res : [res];\r\n return res;\r\n };\r\n return JSONParser;\r\n}(DataParser));\r\nexport { JSONParser };\r\n//# sourceMappingURL=JSONParser.js.map","/**\r\n */\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { color } from \"../utils/Color\";\r\n/**\r\n * Defines a class that holds default properties for new SVG elements\r\n */\r\nvar SVGDefaults = /** @class */ (function () {\r\n function SVGDefaults() {\r\n }\r\n SVGDefaults.opacity = 1;\r\n SVGDefaults.strokeOpacity = 1;\r\n SVGDefaults.strokeWidth = 1;\r\n SVGDefaults.fillOpacity = 1;\r\n SVGDefaults.fill = color(\"#000000\");\r\n SVGDefaults.stroke = color(\"#000000\");\r\n SVGDefaults.focusable = undefined;\r\n SVGDefaults.tabindex = 0;\r\n return SVGDefaults;\r\n}());\r\nexport { SVGDefaults };\r\n//# sourceMappingURL=SVGDefaults.js.map","/**\r\n * Cone module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../../Container\";\r\nimport { Sprite, visualProperties } from \"../../Sprite\";\r\nimport { Ellipse } from \"../../elements/Ellipse\";\r\nimport { LinearGradientModifier } from \"../../rendering/fills/LinearGradientModifier\";\r\nimport { percent } from \"../../utils/Percent\";\r\nimport * as $object from \"../../utils/Object\";\r\nimport * as $path from \"../../rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Builds a round cone/cylinder.\r\n *\r\n * @see {@link IConeEvents} for a list of available events\r\n * @see {@link IConeAdapters} for a list of available Adapters\r\n */\r\nvar Cone = /** @class */ (function (_super) {\r\n __extends(Cone, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Cone() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Cone\";\r\n _this.angle = 30;\r\n _this.radius = percent(100);\r\n _this.topRadius = percent(100);\r\n _this.top = _this.createChild(Ellipse);\r\n _this.top.shouldClone = false;\r\n _this.bottom = _this.createChild(Ellipse);\r\n _this.bottom.shouldClone = false;\r\n _this.body = _this.createChild(Sprite);\r\n _this.body.shouldClone = false;\r\n _this.body.setElement(_this.paper.add(\"path\"));\r\n _this.layout = \"none\";\r\n _this.bodyFillModifier = new LinearGradientModifier();\r\n _this.bodyFillModifier.lightnesses = [0, -0.25, 0];\r\n _this.body.fillModifier = _this.bodyFillModifier;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Cone.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n $object.copyProperties(this, this.top, visualProperties);\r\n $object.copyProperties(this, this.bottom, visualProperties);\r\n $object.copyProperties(this, this.body, visualProperties);\r\n var w = this.innerWidth;\r\n var h = this.innerHeight;\r\n var bottom = this.bottom;\r\n var top = this.top;\r\n var angle = this.angle;\r\n var radiusBase;\r\n var dx;\r\n var dy;\r\n if (this.orientation == \"horizontal\") {\r\n radiusBase = h / 2;\r\n bottom.y = h / 2;\r\n top.y = h / 2;\r\n top.x = w;\r\n dx = (90 - angle) / 90;\r\n dy = 0;\r\n this.bodyFillModifier.gradient.rotation = 90;\r\n }\r\n else {\r\n dx = 0;\r\n dy = (90 - angle) / 90;\r\n radiusBase = w / 2;\r\n bottom.y = h;\r\n bottom.x = w / 2;\r\n top.x = w / 2;\r\n this.bodyFillModifier.gradient.rotation = 0;\r\n }\r\n var radius = this.radius.value * radiusBase;\r\n var topRadius = this.topRadius.value * radiusBase;\r\n bottom.radius = radius - radius * dx;\r\n bottom.radiusY = radius - radius * dy;\r\n top.radius = topRadius - topRadius * dx;\r\n top.radiusY = topRadius - topRadius * dy;\r\n var path;\r\n if (this.orientation == \"horizontal\") {\r\n path = $path.moveTo({ x: 0, y: h / 2 - bottom.radiusY }) + $path.arcTo(-90, -180, bottom.radius, bottom.radiusY) + $path.lineTo({ x: w, y: h / 2 + top.radiusY }) + $path.arcTo(90, 180, top.radius, top.radiusY) + $path.closePath();\r\n }\r\n else {\r\n path = $path.moveTo({ x: w / 2 - top.radius, y: 0 }) + $path.arcTo(180, -180, top.radius, top.radiusY) + $path.lineTo({ x: w / 2 + bottom.radius, y: h }) + $path.arcTo(0, 180, bottom.radius, bottom.radiusY) + $path.closePath();\r\n }\r\n this.body.path = path;\r\n };\r\n Object.defineProperty(Cone.prototype, \"angle\", {\r\n /**\r\n * @return Angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"angle\");\r\n },\r\n /**\r\n * Angle of the point of view to the 3D element. (0-360)\r\n *\r\n * @default 30\r\n * @param value Angle\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"angle\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Cone.prototype, \"radius\", {\r\n /**\r\n * @return Bottom radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"radius\");\r\n },\r\n /**\r\n * A relative radius of the cone's bottom (base).\r\n *\r\n * It is relevant to the inner width or height of the element.\r\n *\r\n * @default Percent(100)\r\n * @param value Bottom radius\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"radius\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Cone.prototype, \"topRadius\", {\r\n /**\r\n * @return Top radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"topRadius\");\r\n },\r\n /**\r\n * A relative radius of the cone's top (tip).\r\n *\r\n * It is relevant to the inner width or height of the element.\r\n *\r\n * @default Percent(0)\r\n * @param value Top radius\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"topRadius\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Cone.prototype, \"orientation\", {\r\n /**\r\n * Orientation\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"orientation\");\r\n },\r\n /**\r\n * Orientation of the cone\r\n *\r\n * @default \"vertical\"\r\n * @param value Orientation\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"orientation\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Cone;\r\n}(Container));\r\nexport { Cone };\r\n//# sourceMappingURL=Cone.js.map","/**\r\n * Creates a 3D rectangle.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../../Container\";\r\nimport { Sprite } from \"../../Sprite\";\r\nimport * as $math from \"../../utils/Math\";\r\nimport * as $path from \"../../rendering/Path\";\r\nimport { Color, color, toColor } from \"../../utils/Color\";\r\nimport { RadialGradient } from \"../../rendering/fills/RadialGradient\";\r\nimport { LinearGradient } from \"../../rendering/fills/LinearGradient\";\r\nimport { LightenFilter } from \"../../rendering/filters/LightenFilter\";\r\nimport * as $type from \"../../utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Builds a 3D rectangle\r\n * @see {@link IRectangle3DEvents} for a list of available events\r\n * @see {@link IRectangle3DAdapters} for a list of available Adapters\r\n */\r\nvar Rectangle3D = /** @class */ (function (_super) {\r\n __extends(Rectangle3D, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Rectangle3D() {\r\n var _this = _super.call(this) || this;\r\n _this.angle = 30;\r\n _this.depth = 30;\r\n _this.className = \"Rectangle3D\";\r\n _this.layout = \"none\";\r\n var sideBack = _this.createChild(Sprite);\r\n sideBack.shouldClone = false;\r\n sideBack.setElement(_this.paper.add(\"path\"));\r\n sideBack.isMeasured = false;\r\n _this.sideBack = sideBack;\r\n _this._disposers.push(_this.sideBack);\r\n var sideBottom = _this.createChild(Sprite);\r\n sideBottom.shouldClone = false;\r\n sideBottom.setElement(_this.paper.add(\"path\"));\r\n sideBottom.isMeasured = false;\r\n _this.sideBottom = sideBottom;\r\n _this._disposers.push(_this.sideBottom);\r\n var sideLeft = _this.createChild(Sprite);\r\n sideLeft.shouldClone = false;\r\n sideLeft.setElement(_this.paper.add(\"path\"));\r\n sideLeft.isMeasured = false;\r\n _this.sideLeft = sideLeft;\r\n _this._disposers.push(_this.sideLeft);\r\n var sideRight = _this.createChild(Sprite);\r\n sideRight.shouldClone = false;\r\n sideRight.setElement(_this.paper.add(\"path\"));\r\n sideRight.isMeasured = false;\r\n _this.sideRight = sideRight;\r\n _this._disposers.push(_this.sideRight);\r\n var sideTop = _this.createChild(Sprite);\r\n sideTop.shouldClone = false;\r\n sideTop.setElement(_this.paper.add(\"path\"));\r\n sideTop.isMeasured = false;\r\n _this.sideTop = sideTop;\r\n _this._disposers.push(_this.sideTop);\r\n var sideFront = _this.createChild(Sprite);\r\n sideFront.shouldClone = false;\r\n sideFront.setElement(_this.paper.add(\"path\"));\r\n sideFront.isMeasured = false;\r\n _this.sideFront = sideFront;\r\n _this._disposers.push(_this.sideFront);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Rectangle3D.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n var w = this.innerWidth;\r\n var h = this.innerHeight;\r\n var depth = this.depth;\r\n var angle = this.angle;\r\n var sin = $math.sin(angle);\r\n var cos = $math.cos(angle);\r\n var a = { x: 0, y: 0 };\r\n var b = { x: w, y: 0 };\r\n var c = { x: w, y: h };\r\n var d = { x: 0, y: h };\r\n var ah = { x: depth * cos, y: -depth * sin };\r\n var bh = { x: depth * cos + w, y: -depth * sin };\r\n var ch = { x: depth * cos + w, y: -depth * sin + h };\r\n var dh = { x: depth * cos, y: -depth * sin + h };\r\n this.sideFront.path = $path.moveTo(a) + $path.lineTo(b) + $path.lineTo(c) + $path.lineTo(d) + $path.closePath();\r\n this.sideBack.path = $path.moveTo(ah) + $path.lineTo(bh) + $path.lineTo(ch) + $path.lineTo(dh) + $path.closePath();\r\n this.sideLeft.path = $path.moveTo(a) + $path.lineTo(ah) + $path.lineTo(dh) + $path.lineTo(d) + $path.closePath();\r\n this.sideRight.path = $path.moveTo(b) + $path.lineTo(bh) + $path.lineTo(ch) + $path.lineTo(c) + $path.closePath();\r\n this.sideBottom.path = $path.moveTo(d) + $path.lineTo(dh) + $path.lineTo(ch) + $path.lineTo(c) + $path.closePath();\r\n this.sideTop.path = $path.moveTo(a) + $path.lineTo(ah) + $path.lineTo(bh) + $path.lineTo(b) + $path.closePath();\r\n };\r\n Object.defineProperty(Rectangle3D.prototype, \"depth\", {\r\n /**\r\n * @return Depth (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"depth\");\r\n },\r\n /**\r\n * Depth (Z dimension) of the 3D rectangle in pixels.\r\n *\r\n * @default 30\r\n * @param value Depth (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"depth\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Rectangle3D.prototype, \"angle\", {\r\n /**\r\n * @return Angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"angle\");\r\n },\r\n /**\r\n * Angle of the point of view to the 3D element. (0-360)\r\n *\r\n * @default 30\r\n * @param value Angle\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"angle\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets actual `fill` property on the SVG element, including applicable color\r\n * modifiers.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Fill\r\n */\r\n Rectangle3D.prototype.setFill = function (value) {\r\n _super.prototype.setFill.call(this, value);\r\n if (!$type.isObject(value) || \"r\" in value) {\r\n value = toColor(value);\r\n }\r\n var colorStr;\r\n if (value instanceof Color) {\r\n colorStr = value.hex;\r\n }\r\n else if (value instanceof LinearGradient || value instanceof RadialGradient) {\r\n colorStr = value.stops.getIndex(0).color.hex;\r\n }\r\n else {\r\n var filter = new LightenFilter();\r\n filter.lightness = -0.2;\r\n this.sideBack.filters.push(filter);\r\n var filter2 = filter.clone();\r\n filter2.lightness = -0.4;\r\n this.sideLeft.filters.push(filter2);\r\n var filter3 = filter.clone();\r\n filter3.lightness = -0.2;\r\n this.sideRight.filters.push(filter3);\r\n var filter4 = filter.clone();\r\n filter4.lightness = -0.1;\r\n this.sideTop.filters.push(filter4);\r\n var filter5 = filter.clone();\r\n filter5.lightness = -0.5;\r\n this.sideBottom.filters.push(filter5);\r\n }\r\n if (colorStr) {\r\n this.sideBack.fill = color(colorStr).lighten(-0.2);\r\n this.sideLeft.fill = color(colorStr).lighten(-0.4);\r\n this.sideRight.fill = color(colorStr).lighten(-0.2);\r\n this.sideTop.fill = color(colorStr).lighten(-0.1);\r\n this.sideBottom.fill = color(colorStr).lighten(-0.5);\r\n }\r\n };\r\n /**\r\n * Copies all properties and related data from a different instance of Rectangle3D.\r\n *\r\n * @param source Source Rectangle3D\r\n */\r\n Rectangle3D.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.sideBack.copyFrom(source.sideBack);\r\n this.sideLeft.copyFrom(source.sideLeft);\r\n this.sideRight.copyFrom(source.sideRight);\r\n this.sideTop.copyFrom(source.sideTop);\r\n this.sideBottom.copyFrom(source.sideBottom);\r\n };\r\n return Rectangle3D;\r\n}(Container));\r\nexport { Rectangle3D };\r\n//# sourceMappingURL=Rectangle3D.js.map","/**\r\n * 3D slice module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Slice } from \"../Slice\";\r\nimport { Sprite } from \"../../Sprite\";\r\nimport * as $math from \"../../utils/Math\";\r\nimport * as $path from \"../../rendering/Path\";\r\nimport * as $type from \"../../utils/Type\";\r\nimport { Color, color } from \"../../utils/Color\";\r\nimport { RadialGradient } from \"../../rendering/fills/RadialGradient\";\r\nimport { LinearGradient } from \"../../rendering/fills/LinearGradient\";\r\nimport { LightenFilter } from \"../../rendering/filters/LightenFilter\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Used to draw a 3D slice of a Pie chart.\r\n *\r\n * @see {@link ISlice3DEvents} for a list of available events\r\n * @see {@link ISlice3DAdapters} for a list of available Adapters\r\n */\r\nvar Slice3D = /** @class */ (function (_super) {\r\n __extends(Slice3D, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Slice3D() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"Slice3D\";\r\n _this.layout = \"none\";\r\n // Create edge container\r\n var edge = _this.createChild(Sprite);\r\n _this.edge = edge;\r\n edge.shouldClone = false;\r\n edge.isMeasured = false;\r\n edge.toBack();\r\n // Set defaults\r\n _this.angle = 30;\r\n _this.depth = 20;\r\n // Create side A element\r\n var sideA = _this.createChild(Sprite);\r\n _this.sideA = sideA;\r\n sideA.shouldClone = false;\r\n sideA.isMeasured = false;\r\n //sideA.setElement(this.paper.add(\"path\"));\r\n //sideA.strokeOpacity = 0;\r\n // Crate side B element\r\n var sideB = _this.createChild(Sprite);\r\n _this.sideB = sideB;\r\n sideB.shouldClone = false;\r\n sideB.isMeasured = false;\r\n //sideB.setElement(this.paper.add(\"path\"));\r\n //sideB.strokeOpacity = 0;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets actual `fill` property on the SVG element, including applicable color\r\n * modifiers.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Fill\r\n */\r\n Slice3D.prototype.setFill = function (value) {\r\n _super.prototype.setFill.call(this, value);\r\n var colorStr;\r\n if (value instanceof Color) {\r\n colorStr = value.hex;\r\n }\r\n else if (value instanceof LinearGradient || value instanceof RadialGradient) {\r\n colorStr = value.stops.getIndex(0).color.hex;\r\n }\r\n else {\r\n var filter = new LightenFilter();\r\n filter.lightness = -0.25;\r\n this.edge.filters.push(filter);\r\n this.sideA.filters.push(filter.clone());\r\n this.sideB.filters.push(filter.clone());\r\n }\r\n if (colorStr) {\r\n var edgeFill = color(colorStr).lighten(-0.25);\r\n this.edge.fill = edgeFill;\r\n this.sideA.fill = edgeFill;\r\n this.sideB.fill = edgeFill;\r\n this.edge.stroke = edgeFill;\r\n this.sideA.stroke = edgeFill;\r\n this.sideB.stroke = edgeFill;\r\n }\r\n };\r\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Slice3D.prototype.draw = function () {\r\n this.cornerRadius = 0;\r\n this.innerCornerRadius = 0;\r\n _super.prototype.draw.call(this);\r\n if (this.arc !== 0 && this.radius > 0 && this.depth > 0) {\r\n this.sideB.show(0);\r\n this.sideA.show(0);\r\n this.edge.show(0);\r\n var startAngle = this.startAngle;\r\n var arc = this.arc;\r\n var innerRadius = this.pixelInnerRadius || 0;\r\n var radiusY = this.radiusY || 0;\r\n //let cornerRadius = this.cornerRadius || 0;\r\n //let innerCornerRadius = this.innerCornerRadius;\r\n var radius = this.radius;\r\n // this is code duplicate with $path.arc. @todo to think how to avoid it\r\n var endAngle = startAngle + arc;\r\n //let crSin = $math.sin($math.min(arc, 45) / 2);\r\n //innerCornerRadius = innerCornerRadius || cornerRadius;\r\n var innerRadiusY = (radiusY / radius) * innerRadius;\r\n //let cornerRadiusY = (radiusY / radius) * cornerRadius;\r\n //let innerCornerRadiusY = (radiusY / radius) * innerCornerRadius;\r\n //cornerRadius = $math.fitToRange(cornerRadius, 0, (radius - innerRadius) / 2);\r\n //cornerRadiusY = $math.fitToRange(cornerRadiusY, 0, (radiusY - innerRadiusY) / 2);\r\n //innerCornerRadius = $math.fitToRange(innerCornerRadius, 0, (radius - innerRadius) / 2);\r\n //innerCornerRadiusY = $math.fitToRange(innerCornerRadiusY, 0, (radiusY - innerRadiusY) / 2);\r\n //cornerRadius = $math.fitToRange(cornerRadius, 0, radius * crSin);\r\n //cornerRadiusY = $math.fitToRange(cornerRadiusY, 0, radiusY * crSin);\r\n //innerCornerRadius = $math.fitToRange(innerCornerRadius, 0, innerRadius * crSin);\r\n //innerCornerRadiusY = $math.fitToRange(innerCornerRadiusY, 0, innerRadiusY * crSin);\r\n //let crAngle: number = Math.asin(cornerRadius / radius / 2) * $math.DEGREES * 2;\r\n //let crAngleY: number = Math.asin(cornerRadiusY / radiusY / 2) * $math.DEGREES * 2;\r\n //if (innerRadius < innerCornerRadius) {\r\n //\tinnerRadius = innerCornerRadius;\r\n //}\r\n //if (innerRadiusY < innerCornerRadiusY) {\r\n //\tinnerRadiusY = innerCornerRadiusY;\r\n //}\r\n //let crInnerAngle: number = Math.asin(innerCornerRadius / innerRadius / 2) * $math.DEGREES * 2;\r\n //let crInnerAngleY: number = Math.asin(innerCornerRadiusY / innerRadiusY / 2) * $math.DEGREES * 2;\r\n //if (!$type.isNumber(crInnerAngle)) {\r\n //\tcrInnerAngle = 0;\r\n //}\r\n //if (!$type.isNumber(crInnerAngleY)) {\r\n //\tcrInnerAngleY = 0;\r\n //}\r\n //let middleAngle = startAngle + arc / 2;\r\n //let mPoint = { x: $math.round($math.cos(middleAngle) * innerRadius, 4), y: $math.round($math.sin(middleAngle) * innerRadiusY, 4) };\r\n var a0 = { x: $math.cos(startAngle) * (innerRadius), y: $math.sin(startAngle) * (innerRadiusY) };\r\n var b0 = { x: $math.cos(startAngle) * (radius), y: $math.sin(startAngle) * (radiusY) };\r\n var c0 = { x: $math.cos(endAngle) * (radius), y: $math.sin(endAngle) * (radiusY) };\r\n var d0 = { x: $math.cos(endAngle) * (innerRadius), y: $math.sin(endAngle) * (innerRadiusY) };\r\n // end of duplicate\r\n var h = this.depth;\r\n var ah = { x: a0.x, y: a0.y - h };\r\n var bh = { x: b0.x, y: b0.y - h };\r\n var ch = { x: c0.x, y: c0.y - h };\r\n var dh = { x: d0.x, y: d0.y - h };\r\n var edgePath = \"\";\r\n var count = Math.ceil(arc / 5);\r\n var step = arc / count;\r\n var mangle = startAngle;\r\n var prevPoint = bh;\r\n for (var i = 0; i < count; i++) {\r\n mangle += step;\r\n if (mangle > 0 && mangle < 180) {\r\n edgePath += $path.moveTo(prevPoint);\r\n var pp = { x: $math.cos(mangle) * (radius), y: $math.sin(mangle) * (radiusY) - h };\r\n edgePath += $path.lineTo({ x: prevPoint.x, y: prevPoint.y + h });\r\n edgePath += $path.arcToPoint({ x: pp.x, y: pp.y + h }, radius, radiusY, true);\r\n edgePath += $path.lineTo(pp);\r\n edgePath += $path.arcToPoint(prevPoint, radius, radiusY);\r\n edgePath += \"z\";\r\n prevPoint = pp;\r\n }\r\n else {\r\n edgePath += $path.moveTo(prevPoint);\r\n var pp = { x: $math.cos(mangle) * (radius), y: $math.sin(mangle) * (radiusY) - h };\r\n edgePath += $path.arcToPoint(pp, radius, radiusY, true);\r\n edgePath += $path.lineTo({ x: pp.x, y: pp.y + h });\r\n edgePath += $path.arcToPoint({ x: prevPoint.x, y: prevPoint.y + h }, radius, radiusY);\r\n edgePath += $path.lineTo(prevPoint);\r\n edgePath += \"z\";\r\n prevPoint = pp;\r\n }\r\n }\r\n prevPoint = ah;\r\n mangle = startAngle;\r\n for (var i = 0; i < count; i++) {\r\n mangle += step;\r\n if (mangle > 0 && mangle < 180) {\r\n edgePath += $path.moveTo(prevPoint);\r\n var pp = { x: $math.cos(mangle) * (innerRadius), y: $math.sin(mangle) * (innerRadiusY) - h };\r\n edgePath += $path.lineTo({ x: prevPoint.x, y: prevPoint.y + h });\r\n edgePath += $path.arcToPoint({ x: pp.x, y: pp.y + h }, innerRadius, innerRadiusY, true);\r\n edgePath += $path.lineTo(pp);\r\n edgePath += $path.arcToPoint(prevPoint, innerRadius, innerRadiusY);\r\n edgePath += \"z\";\r\n prevPoint = pp;\r\n }\r\n else {\r\n edgePath += $path.moveTo(prevPoint);\r\n var pp = { x: $math.cos(mangle) * (innerRadius), y: $math.sin(mangle) * (innerRadiusY) - h };\r\n edgePath += $path.arcToPoint(pp, innerRadius, innerRadiusY, true);\r\n edgePath += $path.lineTo({ x: pp.x, y: pp.y + h });\r\n edgePath += $path.arcToPoint({ x: prevPoint.x, y: prevPoint.y + h }, innerRadius, innerRadiusY);\r\n edgePath += $path.lineTo(prevPoint);\r\n edgePath += \"z\";\r\n prevPoint = pp;\r\n }\r\n }\r\n this.edge.path = edgePath;\r\n /*\r\n a0 = { x: $math.cos(startAngle) * (innerRadius + innerCornerRadius), y: $math.sin(startAngle) * (innerRadiusY + innerCornerRadiusY) };\r\n b0 = { x: $math.cos(startAngle) * (radius - cornerRadius), y: $math.sin(startAngle) * (radiusY - cornerRadiusY) };\r\n c0 = { x: $math.cos(endAngle) * (radius - cornerRadius), y: $math.sin(endAngle) * (radiusY - cornerRadiusY) };\r\n d0 = { x: $math.cos(endAngle) * (innerRadius + innerCornerRadius), y: $math.sin(endAngle) * (innerRadiusY + innerCornerRadiusY) };\r\n // end of duplicate\r\n \r\n ah = { x: a0.x, y: a0.y - h };\r\n bh = { x: b0.x, y: b0.y - h };\r\n ch = { x: c0.x, y: c0.y - h };\r\n dh = { x: d0.x, y: d0.y - h };\r\n */\r\n this.sideA.path = $path.moveTo(a0) + $path.lineTo(b0) + $path.lineTo(bh) + $path.lineTo(ah) + $path.closePath();\r\n this.sideB.path = $path.moveTo(c0) + $path.lineTo(d0) + $path.lineTo(dh) + $path.lineTo(ch) + $path.closePath();\r\n if (this.startAngle < 90) {\r\n this.sideA.toBack();\r\n }\r\n else {\r\n this.sideA.toFront();\r\n }\r\n if (this.startAngle + this.arc > 90) {\r\n this.sideB.toBack();\r\n }\r\n else {\r\n this.sideB.toFront();\r\n }\r\n this.slice.dy = -h;\r\n }\r\n else {\r\n this.sideA.hide(0);\r\n this.sideB.hide(0);\r\n this.edge.hide(0);\r\n }\r\n };\r\n Object.defineProperty(Slice3D.prototype, \"depth\", {\r\n /**\r\n * @return Depth (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"depth\");\r\n },\r\n /**\r\n * Depth (height) of the 3D slice in pixels.\r\n *\r\n * @default 20\r\n * @param depth Depth (px)\r\n */\r\n set: function (depth) {\r\n this.setPropertyValue(\"depth\", depth, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slice3D.prototype, \"angle\", {\r\n /**\r\n * @return Angle\r\n */\r\n get: function () {\r\n var angle = this.getPropertyValue(\"angle\");\r\n if (!$type.isNumber(angle)) {\r\n angle = 0;\r\n }\r\n return angle;\r\n },\r\n /**\r\n * Angle of the point of view to the 3D element. (0-360)\r\n *\r\n * @default 30\r\n * @param value Angle\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"angle\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slice3D.prototype, \"radiusY\", {\r\n /**\r\n * @return Vertical radius (0-1)\r\n */\r\n get: function () {\r\n var radiusY = this.getPropertyValue(\"radiusY\");\r\n if (!$type.isNumber(radiusY)) {\r\n radiusY = this.radius - this.radius * this.angle / 90;\r\n }\r\n return radiusY;\r\n },\r\n /**\r\n * Vertical radius for creating skewed slices.\r\n *\r\n * This is relevant to `radius`, e.g. 0.5 will set vertical radius to half\r\n * the `radius`.\r\n *\r\n * @param value Vertical radius (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"radiusY\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies all properties and related data from a different instance of Axis.\r\n *\r\n * @param source Source Axis\r\n */\r\n Slice3D.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.edge.copyFrom(source.edge);\r\n this.sideA.copyFrom(source.sideA);\r\n this.sideB.copyFrom(source.sideB);\r\n };\r\n return Slice3D;\r\n}(Slice));\r\nexport { Slice3D };\r\n//# sourceMappingURL=Slice3D.js.map","/**\r\n * Functionality for drawing simple buttons.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../Container\";\r\nimport { Label } from \"./Label\";\r\nimport { RoundedRectangle } from \"../elements/RoundedRectangle\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { registry } from \"../Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Button class is capable of drawing a simple rectangular button with\r\n * optionally rounded corners and an icon in it.\r\n *\r\n * @see {@link IButtonEvents} for a list of available events\r\n * @see {@link IButtonAdapters} for a list of available Adapters\r\n */\r\nvar Button = /** @class */ (function (_super) {\r\n __extends(Button, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Button() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"Button\";\r\n _this.tooltipY = 0;\r\n // Set defaults\r\n _this.iconPosition = \"left\";\r\n _this.layout = \"horizontal\";\r\n _this.contentAlign = \"center\";\r\n _this.contentValign = \"middle\";\r\n _this.padding(8, 16, 8, 16);\r\n _this.setStateOnChildren = true;\r\n var interfaceColors = new InterfaceColorSet();\r\n // Create background\r\n var background = _this.background;\r\n background.fill = interfaceColors.getFor(\"secondaryButton\");\r\n background.stroke = interfaceColors.getFor(\"secondaryButtonStroke\");\r\n background.fillOpacity = 1;\r\n background.strokeOpacity = 1;\r\n background.cornerRadius(3, 3, 3, 3);\r\n // Create the label element\r\n _this.label = new Label();\r\n _this.label.fill = interfaceColors.getFor(\"secondaryButtonText\");\r\n ;\r\n _this.label.shouldClone = false;\r\n // Create default states\r\n var hoverState = background.states.create(\"hover\");\r\n hoverState.properties.fillOpacity = 1;\r\n hoverState.properties.fill = interfaceColors.getFor(\"secondaryButtonHover\");\r\n var downState = background.states.create(\"down\");\r\n downState.transitionDuration = 100;\r\n downState.properties.fill = interfaceColors.getFor(\"secondaryButtonDown\");\r\n downState.properties.fillOpacity = 1;\r\n // Set up accessibility\r\n // A button should be always focusable\r\n _this.role = \"button\";\r\n _this.focusable = true;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(Button.prototype, \"icon\", {\r\n /**\r\n * @return Icon Sprite\r\n */\r\n get: function () {\r\n return this._icon;\r\n },\r\n /**\r\n * A [[Sprite]] to be used as an icon on button.\r\n *\r\n * @param icon Icon Sprite\r\n */\r\n set: function (icon) {\r\n var currentIcon = this._icon;\r\n if (currentIcon) {\r\n //this._icon.dispose();\r\n //this.removeDispose(currentIcon);\r\n currentIcon.parent = undefined;\r\n }\r\n if (icon) {\r\n this._icon = icon;\r\n icon.parent = this;\r\n icon.interactionsEnabled = false;\r\n icon.shouldClone = false;\r\n this.iconPosition = this.iconPosition;\r\n this._disposers.push(icon);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Button.prototype, \"iconPosition\", {\r\n /**\r\n * @return Icon position\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"iconPosition\");\r\n },\r\n /**\r\n * Icon position: \"left\" or \"right\".\r\n *\r\n * @default \"left\"\r\n * @param position Icon position\r\n */\r\n set: function (position) {\r\n this.setPropertyValue(\"iconPosition\", position);\r\n if (this.icon) {\r\n if (position == \"left\") {\r\n this.icon.toBack();\r\n }\r\n else {\r\n this.icon.toFront();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Button.prototype, \"label\", {\r\n /**\r\n * @return Label element\r\n */\r\n get: function () {\r\n return this._label;\r\n },\r\n /**\r\n * [[Label]] element to be used for text.\r\n *\r\n * @param label element\r\n */\r\n set: function (label) {\r\n if (this._label) {\r\n //this._label.dispose();\r\n this.removeDispose(this._label);\r\n }\r\n this._label = label;\r\n if (label) {\r\n label.parent = this;\r\n label.interactionsEnabled = false;\r\n this._disposers.push(this._label);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates a background element for the button.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Background element\r\n */\r\n Button.prototype.createBackground = function () {\r\n return new RoundedRectangle();\r\n };\r\n /**\r\n * Copies properties and other attributes.\r\n *\r\n * @param source Source\r\n */\r\n Button.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n if (source.label) {\r\n this.label.copyFrom(source.label);\r\n }\r\n if (source.icon) {\r\n this.icon = source.icon.clone();\r\n }\r\n };\r\n return Button;\r\n}(Container));\r\nexport { Button };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Button\"] = Button;\r\n//# sourceMappingURL=Button.js.map","/**\r\n * Functionality for drawing circles.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../Sprite\";\r\nimport { percent } from \"../utils/Percent\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $math from \"../utils/Math\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Used to create a circle\r\n * @see {@link ICircleEvents} for a list of available events\r\n * @see {@link ICircleAdapters} for a list of available Adapters\r\n */\r\nvar Circle = /** @class */ (function (_super) {\r\n __extends(Circle, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Circle() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Circle\";\r\n _this.element = _this.paper.add(\"circle\");\r\n _this.setPercentProperty(\"radius\", percent(100));\r\n _this.setPropertyValue(\"horizontalCenter\", \"middle\");\r\n _this.setPropertyValue(\"verticalCenter\", \"middle\");\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the circle.\r\n */\r\n Circle.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n this.element.attr({ \"r\": this.pixelRadius });\r\n };\r\n Object.defineProperty(Circle.prototype, \"radius\", {\r\n /**\r\n * @return Radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"radius\");\r\n },\r\n /**\r\n * Radius of the circle.\r\n *\r\n * Can be either absolute (pixels) or relative ([Percent]).\r\n *\r\n * @param value Radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"radius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Circle.prototype, \"pixelRadius\", {\r\n /**\r\n * Radius of the circle in pixels.\r\n *\r\n * This is a read-only property. To set radius in pixels, use `radius`\r\n * property.\r\n *\r\n * @readonly\r\n * @return Radius (px)\r\n */\r\n get: function () {\r\n return $utils.relativeToValue(this.radius, $math.min(this.innerWidth / 2, this.innerHeight / 2));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Updates bounding box.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Circle.prototype.measureElement = function () {\r\n var pixelRadius = this.pixelRadius;\r\n this._bbox = {\r\n x: -pixelRadius,\r\n y: -pixelRadius,\r\n width: pixelRadius * 2,\r\n height: pixelRadius * 2\r\n };\r\n };\r\n return Circle;\r\n}(Sprite));\r\nexport { Circle };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Circle\"] = Circle;\r\n//# sourceMappingURL=Circle.js.map","/**\r\n * Ellipse module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Circle } from \"./Circle\";\r\nimport { registry } from \"../Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws an ellipse\r\n * @see {@link IEllipseEvents} for a list of available events\r\n * @see {@link IEllipseAdapters} for a list of available Adapters\r\n */\r\nvar Ellipse = /** @class */ (function (_super) {\r\n __extends(Ellipse, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Ellipse() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Ellipse\";\r\n _this.element = _this.paper.add(\"ellipse\");\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the ellipsis.\r\n */\r\n Ellipse.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n this.element.attr({ \"rx\": this.radius });\r\n this.element.attr({ \"ry\": this.radiusY });\r\n };\r\n Object.defineProperty(Ellipse.prototype, \"radiusY\", {\r\n /**\r\n * @return Vertical radius\r\n */\r\n get: function () {\r\n return this.innerHeight / 2;\r\n },\r\n /**\r\n * Vertical radius.\r\n *\r\n * It's a relative size to the `radius`.\r\n *\r\n * E.g. 0.8 will mean the height of the ellipsis will be 80% of it's\r\n * horizontal radius.\r\n *\r\n * @param value Vertical radius\r\n */\r\n set: function (value) {\r\n this.height = value * 2;\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Ellipse.prototype, \"radius\", {\r\n /**\r\n * @return Horizontal radius\r\n */\r\n get: function () {\r\n return this.innerWidth / 2;\r\n },\r\n /**\r\n * Horizontal radius.\r\n *\r\n * @param value Horizontal radius\r\n */\r\n set: function (value) {\r\n this.width = value * 2;\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Ellipse;\r\n}(Circle));\r\nexport { Ellipse };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Ellipse\"] = Ellipse;\r\n//# sourceMappingURL=Ellipse.js.map","/**\r\n * Text class deals with all text placed on chart.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../Container\";\r\nimport { registry } from \"../Registry\";\r\nimport { getTextFormatter } from \"../formatters/TextFormatter\";\r\nimport { MultiDisposer } from \"../utils/Disposer\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $dom from \"../utils/DOM\";\r\nimport { defaultRules, ResponsiveBreakpoints } from \"../utils/Responsive\";\r\nimport { options } from \"../Options\";\r\n;\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Text is used to display highly configurable, data-enabled textual elements.\r\n *\r\n * ## Data Binding\r\n *\r\n * A Text element can dynamically parse and populate its contents with values\r\n * from a [[DataItem]].\r\n *\r\n * To activate such binding, set element's `dataItem` property.\r\n *\r\n * When activated, text contents will be parsed for special tags, e.g.:\r\n *\r\n * ```TypeScript\r\n * label.dataItem = myDataItem;\r\n * label.text = \"The title is: {title}\";\r\n * ```\r\n * ```JavaScript\r\n * label.dataItem = myDataItem;\r\n * label.text = \"The title is: {title}\";\r\n * ```\r\n *\r\n * The above will automatically replace \"{title}\" in the string with the\r\n * actual data value from `myDataItem`.\r\n *\r\n * Note, that most often dataItem is set by the Component.\r\n *\r\n *\r\n * @see {@link ILabelEvents} for a list of available events\r\n * @see {@link ILabelAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-strings/} for info on string formatting and data binding\r\n * @todo Vertical align\r\n * @important\r\n */\r\nvar Label = /** @class */ (function (_super) {\r\n __extends(Label, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Label() {\r\n var _this = \r\n // Execute super's constructor\r\n _super.call(this) || this;\r\n /**\r\n * Indicates if the whole text does not fit into max dimenstions set for it.\r\n */\r\n _this.isOversized = false;\r\n // Set this class name\r\n _this.className = \"Label\";\r\n _this.fill = new InterfaceColorSet().getFor(\"text\");\r\n // not good to set this, as then these will appear on each label and values set on container won't be applied.\r\n //this.textDecoration = \"none\";\r\n //this.fontWeight = \"normal\";\r\n // Set defaults\r\n _this.wrap = false;\r\n _this.truncate = false;\r\n _this.fullWords = true;\r\n _this.ellipsis = \"…\";\r\n _this.textAlign = \"start\";\r\n _this.textValign = \"top\";\r\n _this.layout = \"absolute\";\r\n _this.baseLineRatio = -0.27;\r\n //this.pixelPerfect = true;\r\n _this._positionPrecision = 1;\r\n // Add events to watch for maxWidth/maxHeight changes so that we can\r\n // invalidate this\r\n _this.events.on(\"maxsizechanged\", function () {\r\n if (_this.inited) {\r\n _this.handleMaxSize();\r\n }\r\n }, _this, false);\r\n // this solves strange bug when text just added to svg is 0x0\r\n _this.events.once(\"validated\", _this.handleValidate, _this, false);\r\n // Aply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * A placeholder method that is called **after** element finishes drawing\r\n * itself.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Label.prototype.afterDraw = function () {\r\n // since we removed validatePosition from sprite, we still need it here to handle rotated text\r\n _super.prototype.afterDraw.call(this);\r\n this.validatePosition();\r\n };\r\n /**\r\n * Sets [[Paper]] instance to use to draw elements.\r\n * @ignore\r\n * @param paper Paper\r\n * @return true if paper was changed, false, if it's the same\r\n */\r\n Label.prototype.setPaper = function (paper) {\r\n var changed = _super.prototype.setPaper.call(this, paper);\r\n if (changed) {\r\n this.hardInvalidate();\r\n }\r\n return changed;\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Label.prototype.handleValidate = function () {\r\n if ((this.currentText || this.text) && (this.bbox.width == 0 || this.bbox.height == 0)) {\r\n registry.events.once(\"exitframe\", this.hardInvalidate, this);\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Label.prototype.handleMaxSize = function () {\r\n if ((this.bbox.width > this.availableWidth)\r\n || ((this.bbox.width < this.availableWidth) && (this.isOversized || this.truncate))\r\n || (this.bbox.height > this.availableHeight)\r\n || ((this.bbox.height < this.availableHeight) && this.isOversized)) {\r\n this.invalidate();\r\n }\r\n else {\r\n this.alignSVGText();\r\n }\r\n };\r\n /**\r\n * [arrange description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n Label.prototype.arrange = function () {\r\n };\r\n /**\r\n * Updates current text according to data item and supported features.\r\n * Returns `true` if current text has changed.\r\n *\r\n * @return Text changed?\r\n */\r\n Label.prototype.updateCurrentText = function () {\r\n // Determine output format\r\n var output, text;\r\n if ($utils.isNotEmpty(this.html) && this.paper.supportsForeignObject()) {\r\n // We favor HTML text if it's set and browser supports `foreignObject`\r\n output = \"html\";\r\n text = this.html;\r\n }\r\n else {\r\n output = \"svg\";\r\n text = this.text;\r\n }\r\n // Need to toString source?\r\n if ($type.isObject(text)) {\r\n text = text.toString();\r\n }\r\n // Need to format text all the time\r\n if ($type.hasValue(text) && text !== \"\") {\r\n text = this.populateString(text, this.dataItem);\r\n }\r\n if (output == \"html\") {\r\n if (this._adapterO) {\r\n text = this._adapterO.apply(\"htmlOutput\", text);\r\n }\r\n }\r\n else {\r\n if (this._adapterO) {\r\n text = this._adapterO.apply(\"textOutput\", text);\r\n }\r\n }\r\n // Update the text\r\n var changed = text != this.currentText || output != this._currentFormat;\r\n this.currentText = text;\r\n this._currentFormat = output;\r\n return changed;\r\n };\r\n /**\r\n * Hard invalidate means the text will be redrawn even if it hasn't changed.\r\n * This is used when we change `fontSize`, `fontFamily`, or for some other\r\n * reasons.\r\n */\r\n Label.prototype.hardInvalidate = function () {\r\n this._prevStatus = \"\";\r\n this.invalidate();\r\n };\r\n /**\r\n * Gets line bbox, uses caching to save cpu\r\n * @ignore\r\n */\r\n Label.prototype.getLineBBox = function (lineInfo) {\r\n //let cacheKey = lineInfo.text + lineInfo.style;\r\n //let lineBBox = this.getCache(cacheKey);\r\n //if (!lineBBox) {\r\n //lineBBox = lineInfo.element.getBBox();\r\n //if (lineBBox.width != 0 && lineBBox.height != 0) {\r\n //\tthis.setCache(cacheKey, lineBBox, 5000);\r\n //}\r\n //}\r\n var element = lineInfo && lineInfo.element;\r\n var node = element && element.node;\r\n // Check for the parent Node to avoid FF from throwing errors\r\n if (node && node.parentNode) {\r\n lineInfo.bbox = element.getBBox();\r\n }\r\n };\r\n /**\r\n * Draws the textual label.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Label.prototype.draw = function () {\r\n // Draw super\r\n _super.prototype.draw.call(this);\r\n var oldW = this.bbox.width;\r\n var oldH = this.bbox.height;\r\n var topParent = this.topParent;\r\n if (topParent) {\r\n if (!topParent.maxWidth || !topParent.maxHeight) {\r\n topParent.events.once(\"maxsizechanged\", this.hardInvalidate, this, false);\r\n return;\r\n }\r\n }\r\n // Calculate max width and height\r\n var maxWidth = $math.max(this.availableWidth - this.pixelPaddingLeft - this.pixelPaddingRight, 0);\r\n var maxHeight = $math.max(this.availableHeight - this.pixelPaddingTop - this.pixelPaddingBottom, 0);\r\n // save\r\n var status = maxHeight + \",\" + maxWidth + this.wrap + this.truncate + this.fullWords + this.rtl + this.ellipsis;\r\n // Update text\r\n if (!this.updateCurrentText() && this.inited && this._prevStatus == status) {\r\n return;\r\n }\r\n this._measuredWidth = 0;\r\n this._measuredHeight = 0;\r\n // Reset\r\n this.isOversized = false;\r\n // Determine output format\r\n var output = this._currentFormat;\r\n var text = this.currentText;\r\n // Empty string\r\n if (!$type.hasValue(text) || text == \"\") {\r\n this.element.attr({ display: \"none\" });\r\n return;\r\n }\r\n // Chop up text into lines\r\n // We're still processing SVG and HTML in the same way for now\r\n var lines = text.split(\"\\n\");\r\n // Do we need to go through the trouble of measuring lines\r\n //let measure: boolean = true;// (lines.length > 1) || this.wrap;\r\n this._prevStatus = status;\r\n this.textAlign = this.textAlign;\r\n // need this to measure\r\n var display = this.group.getAttr(\"display\");\r\n if (display == \"none\") {\r\n this.group.removeAttr(\"display\");\r\n }\r\n if (this.textPathElement) {\r\n this.textPathElement.removeChildren();\r\n }\r\n // SVG or HTML?\r\n if (output === \"svg\") {\r\n /**\r\n * SVG\r\n */\r\n this.element.removeAttr(\"display\");\r\n // Clear the element\r\n var group = this.element;\r\n this.resetBBox();\r\n // Init state variables\r\n var currentHeight = 0;\r\n var currentFormat = \"\";\r\n // Process each line\r\n for (var i = 0; i < lines.length; i++) {\r\n // Get line\r\n var line = lines[i];\r\n // Check if line is empty\r\n if (line == \"\") {\r\n // It is, let's just update currentHeight and go to the next one\r\n // If it's the first line, we'll have to use arbirary line height,\r\n // since there's nothing to measure. For subsequent lines we can take\r\n // previous line's height\r\n var tempElement = this.getSVGLineElement(\"\", 0);\r\n tempElement.add(this.getSvgElement(\".\", getTextFormatter().translateStyleShortcuts(currentFormat)));\r\n group.add(tempElement);\r\n var offset = Math.ceil(tempElement.getBBox().height);\r\n if (offset > 0) {\r\n currentHeight += offset;\r\n }\r\n group.removeElement(tempElement);\r\n // Clear cache if necessary\r\n var lineInfo_1 = this.getLineInfo(i);\r\n if (lineInfo_1) {\r\n lineInfo_1.text = \"\";\r\n lineInfo_1.element.textContent = \"\";\r\n }\r\n continue;\r\n }\r\n // Chunk up the line and process each chunk\r\n var chunks = getTextFormatter().chunk(line, null, this.ignoreFormatting);\r\n var currentLineHeight = 0;\r\n var firstChunk = true;\r\n var skipTextChunks = false;\r\n // Create line element or grab it from cache\r\n var lineInfo = this.getLineInfo(i);\r\n if (lineInfo) {\r\n // Empty line\r\n lineInfo.text = \"\";\r\n lineInfo.element.textContent = \"\";\r\n }\r\n else {\r\n // Init new line info\r\n lineInfo = {\r\n \"text\": \"\",\r\n \"element\": this.getSVGLineElement(\"\", 0),\r\n \"complex\": false\r\n };\r\n // Create the line element\r\n //lineInfo.element = this.getSVGLineElement(\"\", 0);\r\n //lineElement = this.getSVGLineElement(\"\", 0);\r\n group.add(lineInfo.element);\r\n }\r\n lineInfo.element.removeAttr(\"display\");\r\n lineInfo.element.removeChildren(); // memory leak without this\r\n if (this.textPathElement) {\r\n lineInfo.element.add(this.textPathElement);\r\n }\r\n /*// @todo not needed anymore\r\n if (this.rtl) {\r\n chunks.reverse();\r\n }*/\r\n // Process each chunk\r\n for (var x = 0; x < chunks.length; x++) {\r\n // If there's more than one chunk, means the line is \"complex\"\r\n if (x) {\r\n lineInfo.complex = true;\r\n }\r\n // Get chunk\r\n var chunk = chunks[x];\r\n // Is this chunk format or text?\r\n if (chunk.type === \"format\") {\r\n // Log current format, so that we can apply it to multiple lines if\r\n // necessary\r\n currentFormat = chunk.text;\r\n }\r\n else {\r\n // It's text block\r\n // Need to skip?\r\n // We do this when truncating. We can't just simply go ahead and\r\n // abandon chunk processing as they might have formatting\r\n // instructions in them that are relevant for subsequent lines\r\n if (skipTextChunks) {\r\n continue;\r\n }\r\n // Add chunk to the current element\r\n //lineInfo.element.content += $utils.trim(getTextFormatter().format(currentFormat + chunk.text, output));\r\n lineInfo.text = chunk.text;\r\n lineInfo.style = getTextFormatter().translateStyleShortcuts(currentFormat);\r\n if (this.textPathElement) {\r\n this.getSvgElement(lineInfo.text, lineInfo.style, this.textPathElement);\r\n }\r\n else {\r\n this.getSvgElement(lineInfo.text, lineInfo.style, lineInfo.element);\r\n }\r\n this.getLineBBox(lineInfo);\r\n lineInfo.bbox.width = Math.ceil(lineInfo.bbox.width);\r\n // Updated current line height\r\n if (currentLineHeight < lineInfo.bbox.height) {\r\n currentLineHeight = lineInfo.bbox.height;\r\n }\r\n // Wrapping?\r\n if ((this.wrap || this.truncate) && (lineInfo.bbox.width > maxWidth)) {\r\n // Set oversized\r\n this.isOversized = true;\r\n // Take temporary measurements\r\n var lineText = lineInfo.element.textContent;\r\n var avgCharWidth = (lineInfo.bbox.width / lineText.length); // * .9;\r\n // Calculate average number of symbols / width\r\n var excessChars = $math.min(Math.ceil((lineInfo.bbox.width - maxWidth) / avgCharWidth), lineText.length);\r\n // Are we truncating or auto-wrapping text?\r\n if (this.truncate) {\r\n /**\r\n * Processing line truncation\r\n * With the addition of each text chunk we measure if current\r\n * line does not exceed maxWidth. If it does, we will stop\r\n * addition of further chunks as well as try to truncate\r\n * current or any number of previous chunks with an added\r\n * ellipsis\r\n */\r\n // Indicator whether we need to add ellipsis to the current\r\n // element, even if it fits. This is needed to indicate\r\n // whether we have already removed some subsequent chunks in\r\n // which case we need to add ellipsis.\r\n var addEllipsis = false;\r\n // Process each child in the temporary line, until the whole\r\n // line fits, preferably with an ellipsis\r\n // TODO use iterator instead\r\n var node_1 = lineInfo.element.node;\r\n if (node_1 && node_1.childNodes) {\r\n for (var e = lineInfo.element.node.childNodes.length - 1; e >= 0; e--) {\r\n // Get current element\r\n var node_2 = lineInfo.element.node.childNodes[e];\r\n // Add ellipsis only if previous chunk was removed in full\r\n // and this chunk already fits\r\n //if (addEllipsis && (bbox.width <= maxWidth)) {\r\n if (addEllipsis && (lineInfo.bbox.width <= maxWidth)) {\r\n // Add ellipsis\r\n node_2.textContent += \" \" + this.ellipsis;\r\n // Measure again (we need to make sure ellipsis fits)\r\n lineInfo.bbox = lineInfo.element.getBBox();\r\n lineInfo.bbox.width = Math.floor(lineInfo.bbox.width);\r\n // If it fits, we're done here\r\n // If it doesn't we continue rolling\r\n if (lineInfo.bbox.width <= maxWidth) {\r\n break;\r\n }\r\n }\r\n addEllipsis = false;\r\n // Get element text\r\n var elementText = node_2.textContent;\r\n // Calculate average number of symbols / width\r\n lineText = lineInfo.element.textContent;\r\n excessChars = $math.min(Math.ceil((lineInfo.bbox.width - maxWidth) / avgCharWidth), lineText.length);\r\n // Do this until we fit\r\n while ((lineInfo.bbox.width > maxWidth) && (excessChars <= lineText.length) && (excessChars > 0)) {\r\n // Calculate max available chars\r\n var maxChars = $math.max(lineText.length - excessChars - this.ellipsis.length, 1);\r\n // Is there anything left?\r\n if (maxChars <= 1) {\r\n // Nope, let's jump to the previous item\r\n // Set excess characters to zero so that this loop does\r\n // not repeat when it over\r\n excessChars = 0;\r\n // Add ellipsis to previous item\r\n // Subsequent iterations will check if the ellipsis fits\r\n if (e > 0) {\r\n // Indicating to add ellipsis to previous item\r\n addEllipsis = true;\r\n // Removing this node\r\n lineInfo.element.node.removeChild(node_2);\r\n }\r\n }\r\n // Truncate the text\r\n elementText = $utils.truncateWithEllipsis(elementText, maxChars, this.ellipsis, this.fullWords, this.rtl);\r\n if ((elementText.length > maxChars) && this.fullWords) {\r\n // Still too long?\r\n // Let's try truncating breaking words anyway\r\n elementText = $utils.truncateWithEllipsis(elementText, maxChars, this.ellipsis, false, this.rtl);\r\n }\r\n // Set truncated text\r\n node_2.textContent = elementText;\r\n // Measure again\r\n lineInfo.bbox = lineInfo.element.getBBox();\r\n lineInfo.bbox.width = Math.floor(lineInfo.bbox.width);\r\n // Increase excess characters count, just in case it still\r\n // doesn't fit and we have to go at it again\r\n excessChars = Math.ceil(excessChars * 1.1);\r\n }\r\n // Do not process further chunks\r\n skipTextChunks = true;\r\n }\r\n }\r\n }\r\n else {\r\n /**\r\n * Processign auto-wrap\r\n * In this case we're going to be adding text chunks until\r\n * they don't fit into current line. Once that happens we will\r\n * inject the rest of the chunks to the next line\r\n */\r\n // Get last node added and measure it\r\n var node_3 = lineInfo.element.node;\r\n if (node_3) {\r\n var lastNode = lineInfo.element.node.lastChild;\r\n // Init split lines\r\n var splitLines = void 0;\r\n while ((lineInfo.bbox.width > maxWidth) && (excessChars <= lineText.length) && (excessChars > 0)) {\r\n // Calculate max available chars\r\n var maxChars = $math.max(chunk.text.length - excessChars, 1);\r\n // Don't split the words mid-word if it's not the first chunk\r\n // in the line\r\n if (firstChunk) {\r\n // Split mid-word if necessary\r\n splitLines = $utils.splitTextByCharCount(chunk.text, maxChars, true, this.rtl);\r\n }\r\n else {\r\n // Don't split mid-word\r\n splitLines = $utils.splitTextByCharCount(chunk.text, maxChars, true, this.rtl, false);\r\n // Check if the first word is too long\r\n if ((splitLines[0].length > maxChars) || maxChars === 1) {\r\n // Yes - move the whole chunk to the next line\r\n // Remove the element we just added\r\n lineInfo.element.node.removeChild(lastNode);\r\n // Break out of the while on next cycle\r\n excessChars = 0;\r\n }\r\n }\r\n // Use the first line to update last item\r\n if (excessChars > 0) {\r\n var lineText_1 = splitLines.shift();\r\n if (firstChunk) {\r\n lineText_1 = $utils.trim(lineText_1);\r\n }\r\n lastNode.textContent = getTextFormatter().cleanUp(lineText_1);\r\n }\r\n // Measure again, just in case\r\n lineInfo.bbox = lineInfo.element.getBBox();\r\n lineInfo.bbox.width = Math.floor(lineInfo.bbox.width);\r\n // Increase excess characters count, just in case it still\r\n // doesn't fit and we have to go at it again\r\n //excessChars = Math.ceil(excessChars * 1.05);\r\n excessChars++;\r\n }\r\n // Construct the rest of the line\r\n if (splitLines.length > 0) {\r\n var restOfLine = \"\";\r\n // Add leftovers from splitting the current chunk\r\n if ($type.hasValue(splitLines)) {\r\n if (this.rtl) {\r\n restOfLine += splitLines.join(\"\") + currentFormat;\r\n }\r\n else {\r\n restOfLine += currentFormat + splitLines.join(\"\").replace(/([\\[\\]]{1})/g, \"$1$1\");\r\n }\r\n }\r\n // Add the rest of the chunks\r\n for (var c = x + 1; c < chunks.length; c++) {\r\n if (chunks[c].type == \"value\") {\r\n // We're escaping single square brackets that were\r\n // cleaned up by chunk() back to double square brackets\r\n // so that they are not being treated as format on\r\n // next pass.\r\n restOfLine += chunks[c].text.replace(/([\\[\\]]{1})/g, \"$1$1\");\r\n }\r\n else {\r\n restOfLine += chunks[c].text;\r\n }\r\n }\r\n // Inject the rest of the lines as chunks for subsequent\r\n lines.splice(i + 1, 0, restOfLine);\r\n }\r\n // Skip processing the rest of the chunks\r\n skipTextChunks = true;\r\n }\r\n }\r\n }\r\n // Let's update the text's bbox with the line's one\r\n if (this.bbox.width < lineInfo.bbox.width) {\r\n this.bbox.width = lineInfo.bbox.width;\r\n }\r\n // commented to avoid bug (seen on sankey link) where text is incorrectly aligned\r\n //if (this.bbox.x > lineInfo.bbox.x) {\r\n //this.bbox.x = lineInfo.bbox.x;\r\n //}\r\n this.bbox.height = currentHeight + currentLineHeight;\r\n // Position current line\r\n if (!this.textPathElement) {\r\n lineInfo.element.attr({\r\n \"x\": \"0\",\r\n \"y\": currentHeight + currentLineHeight,\r\n \"dy\": $math.round((this.baseLineRatio * currentLineHeight), 3).toString()\r\n });\r\n }\r\n else {\r\n lineInfo.element.attr({\r\n \"dy\": -this.paddingBottom.toString()\r\n });\r\n }\r\n firstChunk = false;\r\n }\r\n }\r\n // Trim the last item\r\n var node = lineInfo.element.node;\r\n if (node) {\r\n var lastNode = node.lastChild;\r\n if (lastNode) {\r\n lastNode.textContent = this.rtl ?\r\n $utils.ltrim(lastNode.textContent) :\r\n $utils.rtrim(lastNode.textContent);\r\n }\r\n }\r\n // Increment collective height\r\n currentHeight += currentLineHeight;\r\n // Save line cache\r\n this.addLineInfo(lineInfo, i);\r\n }\r\n // Check if maybe we need to hide the whole label if it doesn't fit\r\n this.maybeHideOversized();\r\n this.measureFailed = false;\r\n if (this.bbox.width == 0 || this.bbox.height == 0) {\r\n this.measureFailed = true;\r\n }\r\n // Updated measured dims\r\n this._measuredWidth = $math.round($math.max(this.bbox.width, this.pixelWidth - this.pixelPaddingLeft - this.pixelPaddingRight));\r\n this._measuredHeight = $math.round($math.max(this.bbox.height, this.pixelHeight - this.pixelPaddingTop - this.pixelPaddingBottom));\r\n // Align the lines\r\n this.alignSVGText();\r\n this.bbox.width = this._measuredWidth;\r\n this.bbox.height = this._measuredHeight;\r\n if (oldH != this._measuredHeight || oldW != this._measuredWidth) {\r\n this.dispatch(\"transformed\");\r\n }\r\n this.hideUnused(lines.length);\r\n }\r\n else {\r\n /**\r\n * HTML\r\n */\r\n this.element.removeAttr(\"display\");\r\n this.resetBBox();\r\n // Clear the element\r\n var group = this.element;\r\n group.removeChildren();\r\n // Create a ForeignObject to use as HTML container\r\n var fo = this.paper.foreignObject();\r\n group.add(fo);\r\n // Set widths on foreignObject so that autosizing measurements work\r\n // This will bet reset to actual content width/height\r\n if (this.maxWidth) {\r\n fo.attr({\r\n width: this.maxWidth - this.pixelPaddingLeft - this.pixelPaddingRight\r\n });\r\n }\r\n if (this.maxHeight) {\r\n fo.attr({\r\n height: this.maxHeight - this.pixelPaddingTop - this.pixelPaddingBottom\r\n });\r\n }\r\n // Create line element\r\n //let lineElement: HTMLElement = this.getHTMLLineElement(getTextFormatter().format(this.html, output));\r\n var lineElement = this.getHTMLLineElement(text);\r\n fo.node.appendChild(lineElement);\r\n // Temporarily set to inline-block so we can measure real width and height\r\n lineElement.style.display = \"inline-block\";\r\n var clientWidth = lineElement.clientWidth;\r\n var clientHeight = lineElement.clientHeight;\r\n lineElement.style.display = \"block\";\r\n this._bbox = {\r\n x: 0,\r\n y: 0,\r\n width: clientWidth,\r\n height: clientHeight\r\n };\r\n // Set exact dimensions of foreignObject so it is sized exactly as\r\n // the content within (add one pixel to width so it does not wrap)\r\n fo.attr({\r\n width: clientWidth + 1,\r\n height: clientHeight\r\n });\r\n // Check if maybe we need to hide the whole label if it doesn't fit\r\n this.maybeHideOversized();\r\n // Set measurements and update bbox\r\n this._measuredWidth = $math.max(this.bbox.width, this.pixelWidth - this.pixelPaddingLeft - this.pixelPaddingRight);\r\n this._measuredHeight = $math.max(this.bbox.height, this.pixelHeight - this.pixelPaddingTop - this.pixelPaddingBottom);\r\n this.bbox.width = this._measuredWidth;\r\n this.bbox.height = this._measuredHeight;\r\n // Don't let labels bleed out of the alotted area\r\n if (this.truncate) {\r\n lineElement.style.overflow = \"hidden\";\r\n }\r\n if ((clientWidth > maxWidth) || (clientHeight > maxHeight)) {\r\n this.isOversized = true;\r\n }\r\n }\r\n // Set applicable styles\r\n this.setStyles();\r\n this.updateCenter();\r\n this.updateBackground();\r\n if (display == \"none\") {\r\n this.group.attr({ display: \"none\" });\r\n }\r\n if (this.pathElement) {\r\n this.paper.appendDef(this.pathElement);\r\n }\r\n };\r\n /**\r\n * Hides element if it does not fit into available space\r\n */\r\n Label.prototype.maybeHideOversized = function () {\r\n if (this.hideOversized) {\r\n if ((this.availableWidth < this.bbox.width) || (this.availableHeight < this.bbox.height)) {\r\n this.element.attr({ display: \"none\" });\r\n this.isOversized = true;\r\n }\r\n else {\r\n this.element.removeAttr(\"display\");\r\n this.isOversized = false;\r\n }\r\n }\r\n };\r\n /**\r\n * Aligns the lines horizontally ant vertically, based on properties.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Label.prototype.alignSVGText = function () {\r\n // Get Group\r\n var group = this.element;\r\n var children = group.node.children || group.node.childNodes;\r\n // Is there anything to align?\r\n if (!children || (children && children.length == 0)) {\r\n return;\r\n }\r\n var width = this._measuredWidth;\r\n var height = this._measuredHeight;\r\n // TODO maybe these aren't needed ?\r\n $utils.used(this.pixelPaddingLeft);\r\n $utils.used(this.pixelPaddingRight);\r\n $utils.used(this.pixelPaddingTop);\r\n $utils.used(this.pixelPaddingBottom);\r\n if (this.rtl) {\r\n group.attr({\r\n \"direction\": \"rtl\"\r\n });\r\n }\r\n else {\r\n group.removeAttr(\"direction\");\r\n }\r\n // Process each line\r\n //$iter.each(group.children.backwards().iterator(), (element) => {\r\n for (var i = children.length - 1; i >= 0; i--) {\r\n // Align horizontally\r\n // Since we are using `text-anchor` for horizontal alignment, all we need\r\n // to do here is move the `x` position\r\n var node = children[i];\r\n node.setAttribute(\"text-anchor\", this.textAlign);\r\n if (this.textPathElement) {\r\n node.removeAttribute(\"x\");\r\n node.removeAttribute(\"y\");\r\n }\r\n else {\r\n switch (this.textAlign) {\r\n case \"middle\":\r\n node.setAttribute(\"x\", (width / 2).toString() + \"px\");\r\n break;\r\n case \"end\":\r\n if (this.rtl) {\r\n }\r\n else {\r\n node.setAttribute(\"x\", width.toString());\r\n }\r\n break;\r\n default:\r\n if (this.rtl) {\r\n node.setAttribute(\"x\", width.toString());\r\n }\r\n else {\r\n node.removeAttribute(\"text-anchor\");\r\n }\r\n break;\r\n }\r\n var y = $type.toNumber(node.getAttribute(\"y\"));\r\n switch (this.textValign) {\r\n case \"middle\":\r\n node.setAttribute(\"y\", ((y || 0) + (height - this.bbox.height) / 2).toString());\r\n break;\r\n case \"bottom\":\r\n node.setAttribute(\"y\", ((y || 0) + height - this.bbox.height).toString());\r\n break;\r\n default:\r\n node.setAttribute(\"y\", (y || 0).toString());\r\n break;\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Produces an SVG line element with formatted text.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Text to wrap into line\r\n * @param y Current line vertical position\r\n * @return A DOM element\r\n * @todo Implement HTML support\r\n */\r\n Label.prototype.getSVGLineElement = function (text, y) {\r\n // Create a <text> node and set text\r\n var element = this.paper.addGroup(\"text\");\r\n element.textContent = text;\r\n // Set parameters\r\n element.attr({\r\n \"x\": \"0\"\r\n //\"alignment-baseline\": \"hanging\",\r\n //\"baseline-shift\": \"-20%\",\r\n //\"text-anchor\": \"center\"\r\n });\r\n // Set `y` position\r\n if ($type.hasValue(y)) {\r\n element.attr({\r\n \"y\": y.toString()\r\n });\r\n }\r\n // Don't let labels blled out of the alotted area\r\n if (this.truncate || this.wrap) {\r\n element.attr({ \"overflow\": \"hidden\" });\r\n }\r\n // Add RTL?\r\n // This has now been moved to this.alignSVGText()\r\n // if (this.rtl) {\r\n // \telement.attr({\r\n // \t\t\"direction\": \"rtl\",\r\n // \t\t//\"unicode-bidi\": \"bidi-override\"\r\n // \t});\r\n // }\r\n return element;\r\n };\r\n Object.defineProperty(Label.prototype, \"rtl\", {\r\n /**\r\n * @return RTL?\r\n */\r\n get: function () {\r\n if ($type.hasValue(this._rtl)) {\r\n return this._rtl;\r\n }\r\n else if (this._topParent) {\r\n return this._topParent.rtl;\r\n }\r\n return false;\r\n },\r\n /**\r\n * An RTL (right-to-left) setting.\r\n *\r\n * RTL may affect alignment, text, and other visual properties.\r\n *\r\n * If you set this on a top-level chart object, it will be used for all\r\n * child elements, e.g. labels, unless they have their own `rtl` setting\r\n * set directly on them.\r\n *\r\n * @param value `true` for to use RTL\r\n */\r\n set: function (value) {\r\n value = $type.toBoolean(value);\r\n this._rtl = value;\r\n if (this.element) {\r\n this.alignSVGText();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Resets cached BBox.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Label.prototype.resetBBox = function () {\r\n this._bbox = { x: 0, y: 0, width: 0, height: 0 };\r\n };\r\n /**\r\n * Creates and returns an HTML line element (`<div>`).\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Text to add\r\n * @return `<div>` element reference\r\n */\r\n Label.prototype.getHTMLLineElement = function (text) {\r\n // Create the <div> element\r\n var div = document.createElement(\"div\");\r\n div.innerHTML = text;\r\n // Set text alignment\r\n switch (this.textAlign) {\r\n case \"middle\":\r\n div.style.textAlign = \"center\";\r\n break;\r\n case \"end\":\r\n div.style.textAlign = \"right\";\r\n break;\r\n }\r\n // Disable or enable wrapping\r\n if (this.wrap) {\r\n div.style.wordWrap = \"break-word\";\r\n }\r\n else {\r\n div.style.whiteSpace = \"nowrap\";\r\n }\r\n // Don't let labels bleed out of the alotted area\r\n // Moved to `draw()` because setting \"hidden\" kills all measuring\r\n /*if (this.truncate) {\r\n div.style.overflow = \"hidden\";\r\n }*/\r\n // Set RTL-related styles\r\n if (this.rtl) {\r\n div.style.direction = \"rtl\";\r\n //div.style.unicodeBidi = \"bidi-override\";\r\n }\r\n // Translate some of the SVG styles into CSS\r\n if ($type.hasValue(this.fill)) {\r\n div.style.color = this.fill.toString();\r\n }\r\n return div;\r\n };\r\n /**\r\n * Applies specific styles to text to make it not selectable, unless it is\r\n * explicitly set as `selectable`.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Set styles via AMElement\r\n */\r\n Label.prototype.setStyles = function () {\r\n var group = this.element;\r\n if (!this.selectable || this.draggable || this.resizable || this.swipeable) {\r\n group.addStyle({\r\n \"webkitUserSelect\": \"none\",\r\n \"msUserSelect\": \"none\"\r\n });\r\n }\r\n else if (this.selectable) {\r\n group.removeStyle(\"webkitUserSelect\");\r\n group.removeStyle(\"msUserSelect\");\r\n }\r\n };\r\n /**\r\n * Hides unused lines\r\n */\r\n Label.prototype.hideUnused = function (index) {\r\n this.initLineCache();\r\n var lines = this.getCache(\"lineInfo\");\r\n if (lines.length >= index) {\r\n for (var i = index; i < lines.length; i++) {\r\n var line = lines[i];\r\n if (line && line.element) {\r\n line.element.attr({ \"display\": \"none\" });\r\n }\r\n }\r\n }\r\n };\r\n Object.defineProperty(Label.prototype, \"text\", {\r\n /**\r\n * @return SVG text\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"text\");\r\n },\r\n /**\r\n * An SVG text.\r\n *\r\n * Please note that setting `html` will override this setting if browser\r\n * supports `foreignObject` in SGV, such as most modern browsers excluding\r\n * IEs.\r\n *\r\n * @param value SVG Text\r\n */\r\n set: function (value) {\r\n //this.setPropertyValue(\"html\", undefined);\r\n this.setPropertyValue(\"text\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Label.prototype, \"path\", {\r\n /**\r\n * @return Path\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"path\");\r\n },\r\n /**\r\n * An SVG path string to position text along. If set, the text will follow\r\n * the curvature of the path.\r\n *\r\n * Location along the path can be set using `locationOnPath`.\r\n *\r\n * IMPORTANT: Only SVG text can be put on path. If you are using HTML text\r\n * this setting will be ignored.\r\n *\r\n * @since 4.1.2\r\n * @param value Path\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"path\", value, true)) {\r\n if (this.pathElement) {\r\n this.pathElement.dispose();\r\n }\r\n if (this.textPathElement) {\r\n this.textPathElement.dispose();\r\n }\r\n this.pathElement = this.paper.add(\"path\");\r\n this.pathElement.attr({ \"d\": value });\r\n this.pathElement.attr({ \"id\": \"text-path-\" + this.uid });\r\n this._disposers.push(this.pathElement);\r\n this.textPathElement = this.paper.addGroup(\"textPath\");\r\n this.textPathElement.attrNS($dom.XLINK, \"xlink:href\", \"#text-path-\" + this.uid);\r\n // TODO remove after https://bugzilla.mozilla.org/show_bug.cgi?id=455986 is fixed\r\n this.textPathElement.attr({ \"path\": value });\r\n this._disposers.push(this.textPathElement);\r\n this.hardInvalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Label.prototype, \"locationOnPath\", {\r\n /**\r\n * @return Relatvie location on path\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"locationOnPath\");\r\n },\r\n /**\r\n * Relative label location on `path`. Value range is from 0 (beginning)\r\n * to 1 (end).\r\n *\r\n * Works only if you set `path` setting to an SVG path.\r\n *\r\n * @since 4.1.2\r\n * @default 0\r\n * @param value Relatvie location on path\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"locationOnPath\", value);\r\n if (this.textPathElement) {\r\n this.textPathElement.attr({ \"startOffset\": (value * 100) + \"%\" });\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Label.prototype, \"baseLineRatio\", {\r\n /**\r\n * @return Base line ratio\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"baseLineRatio\");\r\n },\r\n /**\r\n * A ratio to calculate text baseline. Ralative distance from the bottom of\r\n * the label.\r\n *\r\n * @since 4.4.2\r\n * @default -0.27\r\n * @param value Base line ratio\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"baseLineRatio\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Label.prototype, \"wrap\", {\r\n /**\r\n * @return Auto-wrap enabled or not\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"wrap\");\r\n },\r\n /**\r\n * Enables or disables autowrapping of text.\r\n *\r\n * @param value Auto-wrapping enabled\r\n */\r\n set: function (value) {\r\n this.resetBBox();\r\n this.setPropertyValue(\"wrap\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Label.prototype, \"truncate\", {\r\n /**\r\n * @return Truncate text?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"truncate\");\r\n },\r\n /**\r\n * Indicates if text lines need to be truncated if they do not fit, using\r\n * configurable `ellipsis` string.\r\n *\r\n * `truncate` overrides `wrap` if both are set to `true`.\r\n *\r\n * NOTE: For HTML text, this setting **won't** trigger a parser and actual\r\n * line truncation with ellipsis. It will just hide everything that goes\r\n * outside the label.\r\n *\r\n * @param value trincate text?\r\n */\r\n set: function (value) {\r\n this.resetBBox();\r\n this.setPropertyValue(\"truncate\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Label.prototype, \"fullWords\", {\r\n /**\r\n * @return Truncate on full words?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"fullWords\");\r\n },\r\n /**\r\n * If `truncate` is enabled, should Label try to break only on full words\r\n * (`true`), or whenever needed, including middle of the word. (`false`)\r\n *\r\n * @default true\r\n * @param value Truncate on full words?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"fullWords\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Label.prototype, \"ellipsis\", {\r\n /**\r\n * @return Ellipsis string\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"ellipsis\");\r\n },\r\n /**\r\n * Ellipsis character to use if `truncate` is enabled.\r\n *\r\n * @param value Ellipsis string\r\n * @default \"...\"\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"ellipsis\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Label.prototype, \"selectable\", {\r\n /**\r\n * @return Text selectable?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"selectable\");\r\n },\r\n /**\r\n * Forces the text to be selectable. This setting will be ignored if the\r\n * object has some kind of interaction attached to it, such as it is\r\n * `draggable`, `swipeable`, `resizable`.\r\n *\r\n * @param value Text selectable?\r\n * @default false\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"selectable\", value, true);\r\n this.setStyles();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Label.prototype, \"textAlign\", {\r\n /**\r\n * @return Alignment\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"textAlign\");\r\n },\r\n /**\r\n * Horizontal text alignment.\r\n *\r\n * Available choices:\r\n * * \"start\"\r\n * * \"middle\"\r\n * * \"end\"\r\n *\r\n * @param value Alignment\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"textAlign\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Label.prototype, \"textValign\", {\r\n /**\r\n * @ignore Exclude from docs (not used)\r\n * @return Alignment\r\n * @deprecated\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"textValign\");\r\n },\r\n /**\r\n * Vertical text alignment.\r\n *\r\n * @ignore Exclude from docs (not used)\r\n * @param value Alignment\r\n * @deprecated\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"textValign\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Label.prototype, \"html\", {\r\n /**\r\n * @return HTML content\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"html\");\r\n },\r\n /**\r\n * Raw HTML to be used as text.\r\n *\r\n * NOTE: HTML text is subject to browser support. It relies on browsers\r\n * supporting SVG `foreignObject` nodes. Some browsers (read IEs) do not\r\n * support it. On those browsers, the text will fall back to basic SVG text,\r\n * striping out all HTML markup and styling that goes with it.\r\n *\r\n * For more information about `foreignObject` and its browser compatibility\r\n * refer to [this page](https://developer.mozilla.org/en/docs/Web/SVG/Element/foreignObject#Browser_compatibility).\r\n *\r\n * @param value HTML text\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"html\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Label.prototype, \"hideOversized\", {\r\n /**\r\n * @return Hide if text does not fit?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"hideOversized\");\r\n },\r\n /**\r\n * Indicates whether the whole text should be hidden if it does not fit into\r\n * its allotted space.\r\n *\r\n * @param value Hide if text does not fit?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"hideOversized\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Label.prototype, \"ignoreFormatting\", {\r\n /**\r\n * @return Ignore formatting?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"ignoreFormatting\");\r\n },\r\n /**\r\n * If set to `true` square-bracket formatting blocks will be treated as\r\n * regular text.\r\n *\r\n * @default false\r\n * @param value Ignore formatting?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"ignoreFormatting\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Override `mesaureElement` so it does not get measure again, because\r\n * internal `_bbox` is being updated by measuring routines in Text itself.\r\n */\r\n Label.prototype.measureElement = function () { };\r\n /**\r\n * Returns information about a line element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param index Line index\r\n * @return Line info object\r\n */\r\n Label.prototype.getLineInfo = function (index) {\r\n this.initLineCache();\r\n var lines = this.getCache(\"lineInfo\");\r\n return lines.length > index ? lines[index] : undefined;\r\n };\r\n /**\r\n * Adds a line to line info cache.\r\n *\r\n * @ignore Exclude from docs\r\n * @param line Line info object\r\n * @param index Insert at specified index\r\n */\r\n Label.prototype.addLineInfo = function (line, index) {\r\n this.initLineCache();\r\n this.getCache(\"lineInfo\")[index] = line;\r\n };\r\n /**\r\n * Checks if line cache is initialized and initializes it.\r\n */\r\n Label.prototype.initLineCache = function () {\r\n if (!$type.hasValue(this.getCache(\"lineInfo\"))) {\r\n this.setCache(\"lineInfo\", [], 0);\r\n }\r\n };\r\n /**\r\n * Sets a [[DataItem]] to use for populating dynamic sections of the text.\r\n *\r\n * Check the description for [[Text]] class, for data binding.\r\n *\r\n * @param dataItem Data item\r\n */\r\n Label.prototype.setDataItem = function (dataItem) {\r\n if (this._sourceDataItemEvents) {\r\n this._sourceDataItemEvents.dispose();\r\n }\r\n if (dataItem) {\r\n this._sourceDataItemEvents = new MultiDisposer([\r\n dataItem.events.on(\"valuechanged\", this.invalidate, this, false),\r\n dataItem.events.on(\"workingvaluechanged\", this.invalidate, this, false),\r\n dataItem.events.on(\"calculatedvaluechanged\", this.invalidate, this, false),\r\n dataItem.events.on(\"propertychanged\", this.invalidate, this, false)\r\n ]);\r\n }\r\n _super.prototype.setDataItem.call(this, dataItem);\r\n };\r\n Object.defineProperty(Label.prototype, \"availableWidth\", {\r\n /**\r\n * Returns available horizontal space.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Available width (px)\r\n */\r\n get: function () {\r\n return $type.hasValue(this.maxWidth) ? this.maxWidth : this.pixelWidth;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Label.prototype, \"availableHeight\", {\r\n /**\r\n * Returns available vertical space.\r\n *\r\n * @return Available height (px)\r\n */\r\n get: function () {\r\n return $type.hasValue(this.maxHeight) ? this.maxHeight : this.pixelHeight;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n // temp, replacing textFormatter method\r\n Label.prototype.getSvgElement = function (text, style, parent) {\r\n var element = this.paper.add(\"tspan\");\r\n element.textContent = text;\r\n if (style) {\r\n if (options.nonce && parent) {\r\n //element.node.setAttribute(\"nonce\", \"test123\");\r\n var classid = \"amcharts_element_style_\" + btoa(style).replace(/[^\\w]*/g, \"\");\r\n element.node.setAttribute(\"class\", classid);\r\n var defs = document.createElementNS($dom.SVGNS, \"defs\");\r\n parent.node.appendChild(defs);\r\n var e = document.createElement(\"style\");\r\n e.type = \"text/css\";\r\n e.innerHTML = \".\" + classid + \" { \" + style + \"}\";\r\n e.setAttribute(\"nonce\", options.nonce);\r\n defs.appendChild(e);\r\n }\r\n else {\r\n element.node.setAttribute(\"style\", style);\r\n }\r\n }\r\n if (parent) {\r\n parent.add(element);\r\n }\r\n return element;\r\n };\r\n /**\r\n * Invalidates the whole element, including layout AND all its child\r\n * elements.\r\n */\r\n Label.prototype.deepInvalidate = function () {\r\n _super.prototype.deepInvalidate.call(this);\r\n this.hardInvalidate();\r\n };\r\n Object.defineProperty(Label.prototype, \"readerTitle\", {\r\n /**\r\n * @return Title\r\n */\r\n get: function () {\r\n var title = this.getPropertyValue(\"readerTitle\");\r\n if (!title) {\r\n title = this.populateString($utils.plainText($utils.isNotEmpty(this.html)\r\n ? this.html\r\n : this.text));\r\n }\r\n else if (this.dataItem) {\r\n title = this.populateString(title);\r\n }\r\n return title;\r\n },\r\n /**\r\n * Screen reader title of the element.\r\n *\r\n * @param value Title\r\n */\r\n set: function (value) {\r\n value = $type.toText(value);\r\n if (this.setPropertyValue(\"readerTitle\", value)) {\r\n this.applyAccessibility();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Label;\r\n}(Container));\r\nexport { Label };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Label\"] = Label;\r\n/**\r\n * Add default responsive rules\r\n */\r\n/**\r\n * Hide labels added directly to chart, like titles if chart is short.\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.heightXS,\r\n state: function (target, stateId) {\r\n if (target instanceof Label && target.parent && target.parent.isBaseSprite) {\r\n var state = target.states.create(stateId);\r\n state.properties.disabled = true;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n//# sourceMappingURL=Label.js.map","/**\r\n * Line drawing functionality.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../Sprite\";\r\nimport { color } from \"../utils/Color\";\r\nimport { LinearGradient } from \"../rendering/fills/LinearGradient\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $math from \"../utils/Math\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws a line.\r\n *\r\n * @see {@link ILineEvents} for a list of available events\r\n * @see {@link ILineAdapters} for a list of available Adapters\r\n */\r\nvar Line = /** @class */ (function (_super) {\r\n __extends(Line, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Line() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Line\";\r\n _this.element = _this.paper.add(\"line\");\r\n _this.fill = color(); //\"none\";\r\n _this.x1 = 0;\r\n _this.y1 = 0;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the line.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Line.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n if (this.x1 == this.x2 || this.y1 == this.y2) {\r\n this.pixelPerfect = true;\r\n }\r\n else {\r\n this.pixelPerfect = false;\r\n }\r\n this.x1 = this.x1;\r\n this.x2 = this.x2;\r\n this.y1 = this.y1;\r\n this.y2 = this.y2;\r\n };\r\n Object.defineProperty(Line.prototype, \"x1\", {\r\n /**\r\n * @return X\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"x1\");\r\n },\r\n /**\r\n * X coordinate of first end.\r\n *\r\n * @param value X\r\n */\r\n set: function (value) {\r\n if (!$type.isNumber(value)) {\r\n value = 0;\r\n }\r\n var delta = 0;\r\n if (this.pixelPerfect && this.stroke instanceof LinearGradient) {\r\n delta = 0.00001;\r\n }\r\n this.setPropertyValue(\"x1\", value, true);\r\n this.element.attr({ \"x1\": value + delta });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Line.prototype, \"x2\", {\r\n /**\r\n * @return X\r\n */\r\n get: function () {\r\n var value = this.getPropertyValue(\"x2\");\r\n if (!$type.isNumber(value)) {\r\n value = this.pixelWidth;\r\n }\r\n return value;\r\n },\r\n /**\r\n * X coordinate of second end.\r\n *\r\n * @param value X\r\n */\r\n set: function (value) {\r\n if (!$type.isNumber(value)) {\r\n value = 0;\r\n }\r\n this.setPropertyValue(\"x2\", value, true);\r\n this.element.attr({ \"x2\": value });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Line.prototype, \"y1\", {\r\n /**\r\n * @return Y\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"y1\");\r\n },\r\n /**\r\n * Y coordinate of first end.\r\n *\r\n * @param value Y\r\n */\r\n set: function (value) {\r\n if (!$type.isNumber(value)) {\r\n value = 0;\r\n }\r\n var delta = 0;\r\n if (this.pixelPerfect && this.stroke instanceof LinearGradient) {\r\n delta = 0.00001;\r\n }\r\n this.setPropertyValue(\"y1\", value, true);\r\n this.element.attr({ \"y1\": value + delta });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Line.prototype, \"y2\", {\r\n /**\r\n * @return Y\r\n */\r\n get: function () {\r\n var value = this.getPropertyValue(\"y2\");\r\n if (!$type.isNumber(value)) {\r\n value = this.pixelHeight;\r\n }\r\n return value;\r\n },\r\n /**\r\n * Y coordinate of second end.\r\n *\r\n * @param value Y\r\n */\r\n set: function (value) {\r\n if (!$type.isNumber(value)) {\r\n value = 0;\r\n }\r\n this.setPropertyValue(\"y2\", value, true);\r\n this.element.attr({ \"y2\": value });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts relative position along the line (0-1) into pixel coordinates.\r\n *\r\n * @param position Position (0-1)\r\n * @return Coordinates\r\n */\r\n Line.prototype.positionToPoint = function (position) {\r\n var point1 = { x: this.x1, y: this.y1 };\r\n var point2 = { x: this.x2, y: this.y2 };\r\n var point = $math.getMidPoint(point1, point2, position);\r\n var angle = $math.getAngle(point1, point2);\r\n return { x: point.x, y: point.y, angle: angle };\r\n };\r\n return Line;\r\n}(Sprite));\r\nexport { Line };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Line\"] = Line;\r\n//# sourceMappingURL=Line.js.map","/**\r\n * Modal class is used to display information over chart area.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Popup } from \"./Popup\";\r\nimport { Adapter } from \"../utils/Adapter\";\r\n/**\r\n * Shows an HTML modal which covers window or a chart area.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/popups-and-modals/} For examples and docs on Popups and Modals.\r\n */\r\nvar Modal = /** @class */ (function (_super) {\r\n __extends(Modal, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Modal() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Adapter.\r\n */\r\n _this.adapter = new Adapter(_this);\r\n _this.className = \"Modal\";\r\n _this.showCurtain = true;\r\n _this.draggable = false;\r\n return _this;\r\n }\r\n return Modal;\r\n}(Popup));\r\nexport { Modal };\r\n//# sourceMappingURL=Modal.js.map","/**\r\n * Pointed rectangle module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { PointedShape } from \"./PointedShape\";\r\nimport * as $math from \"../utils/Math\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws a rectangle with a pointer.\r\n *\r\n * @see {@link IPointedRectangleEvents} for a list of available events\r\n * @see {@link IPointedRectangleAdapters} for a list of available Adapters\r\n */\r\nvar PointedRectangle = /** @class */ (function (_super) {\r\n __extends(PointedRectangle, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PointedRectangle() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PointedRectangle\";\r\n _this.element = _this.paper.add(\"path\");\r\n _this.cornerRadius = 6;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n PointedRectangle.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n var cr = this.cornerRadius;\r\n var w = this.innerWidth;\r\n var h = this.innerHeight;\r\n if (w > 0 && h > 0) {\r\n var x = this.pointerX;\r\n var y = this.pointerY;\r\n var bwh = this.pointerBaseWidth / 2;\r\n var maxcr = $math.min(w / 2, h / 2);\r\n var crtl = $math.fitToRange(cr, 0, maxcr);\r\n var crtr = $math.fitToRange(cr, 0, maxcr);\r\n var crbr = $math.fitToRange(cr, 0, maxcr);\r\n var crbl = $math.fitToRange(cr, 0, maxcr);\r\n // corner coordinates\r\n // top left\r\n var xtl = 0;\r\n var ytl = 0;\r\n // top right\r\n var xtr = w;\r\n var ytr = 0;\r\n // bottom right\r\n var xbr = w;\r\n var ybr = h;\r\n // bottom left\r\n var xbl = 0;\r\n var ybl = h;\r\n var lineT = void 0;\r\n var lineR = void 0;\r\n var lineB = void 0;\r\n var lineL = void 0;\r\n // find stem base side: http://$math.stackexchange.com/questions/274712/calculate-on-which-side-of-straign-line-is-dot-located\r\n // d=(x−x1)(y2−y1)−(y−y1)(x2−x1)\r\n var d1 = (x - xtl) * (ybr - ytl) - (y - ytl) * (xbr - xtl);\r\n var d2 = (x - xbl) * (ytr - ybl) - (y - ybl) * (xtr - xbl);\r\n // top\r\n if (d1 > 0 && d2 > 0) {\r\n var stemX = $math.fitToRange(x, crtl + bwh, w - bwh - crtr);\r\n y = $math.fitToRange(y, -Infinity, 0);\r\n lineT = \"M\" + crtl + \",0 L\" + (stemX - bwh) + \",0 L\" + x + \",\" + y + \" L\" + (stemX + bwh) + \",0 L\" + (w - crtr) + \",0\";\r\n }\r\n else {\r\n lineT = \"M\" + crtl + \",0 L\" + (w - crtr) + \",0\";\r\n }\r\n // bottom\r\n if (d1 < 0 && d2 < 0) {\r\n var stemX = $math.fitToRange(x, crbl + bwh, w - bwh - crbr);\r\n y = $math.fitToRange(y, h, Infinity);\r\n lineB = \" L\" + (w - crbr) + \",\" + h + \" L\" + (stemX + bwh) + \",\" + h + \" L\" + x + \",\" + y + \" L\" + (stemX - bwh) + \",\" + h + \" L\" + crbl + \",\" + h;\r\n }\r\n else {\r\n lineB = \" L\" + crbl + \",\" + h;\r\n }\r\n // left\r\n if (d1 < 0 && d2 > 0) {\r\n var stemY = $math.fitToRange(y, crtl + bwh, h - crbl - bwh);\r\n x = $math.fitToRange(x, -Infinity, 0);\r\n lineL = \" L0,\" + (h - crbl) + \" L0,\" + (stemY + bwh) + \" L\" + x + \",\" + y + \" L0,\" + (stemY - bwh) + \" L0,\" + crtl;\r\n }\r\n else {\r\n lineL = \" L0,\" + crtl;\r\n }\r\n // right\r\n if (d1 > 0 && d2 < 0) {\r\n var stemY = $math.fitToRange(y, crtr + bwh, h - bwh - crbr);\r\n x = $math.fitToRange(x, w, Infinity);\r\n lineR = \" L\" + w + \",\" + crtr + \" L\" + w + \",\" + (stemY - bwh) + \" L\" + x + \",\" + y + \" L\" + w + \",\" + (stemY + bwh) + \" L\" + w + \",\" + (h - crbr);\r\n }\r\n else {\r\n lineR = \" L\" + w + \",\" + (h - crbr);\r\n }\r\n var arcTR = \" a\" + crtr + \",\" + crtr + \" 0 0 1 \" + crtr + \",\" + crtr;\r\n var arcBR = \" a\" + crbr + \",\" + crbr + \" 0 0 1 -\" + crbr + \",\" + crbr;\r\n var arcBL = \" a\" + crbl + \",\" + crbl + \" 0 0 1 -\" + crbl + \",-\" + crbl;\r\n var arcTL = \" a\" + crtl + \",\" + crtl + \" 0 0 1 \" + crtl + \",-\" + crtl;\r\n this.path = lineT + arcTR + lineR + arcBR + lineB + arcBL + lineL + arcTL;\r\n }\r\n };\r\n Object.defineProperty(PointedRectangle.prototype, \"cornerRadius\", {\r\n /**\r\n * @return Corner radius (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"cornerRadius\");\r\n },\r\n /**\r\n * Radius of rectangle's border in pixels.\r\n *\r\n * @default 0\r\n * @param value Corner radius (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"cornerRadius\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return PointedRectangle;\r\n}(PointedShape));\r\nexport { PointedRectangle };\r\n//# sourceMappingURL=PointedRectangle.js.map","/**\r\n * Pointed shape module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../Sprite\";\r\nimport * as $type from \"../utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws a shape with a pointer.\r\n *\r\n * @see {@link IPointedShapeEvents} for a list of available events\r\n * @see {@link IPointedShapeAdapters} for a list of available Adapters\r\n */\r\nvar PointedShape = /** @class */ (function (_super) {\r\n __extends(PointedShape, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PointedShape() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PointedShape\";\r\n _this.pointerBaseWidth = 15;\r\n _this.pointerLength = 10;\r\n _this.pointerY = 0;\r\n _this.pointerX = 0;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n PointedShape.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n if (!$type.isNumber(this.pointerX)) {\r\n this.pointerX = this.pixelWidth / 2;\r\n }\r\n if (!$type.isNumber(this.pointerY)) {\r\n this.pointerY = this.pixelHeight + 10;\r\n }\r\n };\r\n Object.defineProperty(PointedShape.prototype, \"pointerBaseWidth\", {\r\n /**\r\n * @return Width (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"pointerBaseWidth\");\r\n },\r\n /**\r\n * A width of the pinter's (stem's) thick end (base) in pixels.\r\n *\r\n * @default 15\r\n * @param value Width (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"pointerBaseWidth\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PointedShape.prototype, \"pointerLength\", {\r\n /**\r\n * @return Length (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"pointerLength\");\r\n },\r\n /**\r\n * A length of the pinter (stem) in pixels.\r\n *\r\n * @default 10\r\n * @param value Length (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"pointerLength\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PointedShape.prototype, \"pointerX\", {\r\n /**\r\n * @return X\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"pointerX\");\r\n },\r\n /**\r\n * X coordinate the shape is pointing to.\r\n *\r\n * @param value X\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"pointerX\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PointedShape.prototype, \"pointerY\", {\r\n /**\r\n * @return Y\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"pointerY\");\r\n },\r\n /**\r\n * Y coordinate the shape is pointing to.\r\n *\r\n * @param value Y\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"pointerY\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return PointedShape;\r\n}(Sprite));\r\nexport { PointedShape };\r\n//# sourceMappingURL=PointedShape.js.map","/**\r\n * Polyline module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../Sprite\";\r\nimport { color } from \"../utils/Color\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $path from \"../rendering/Path\";\r\nimport * as $math from \"../utils/Math\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws a polyline.\r\n *\r\n * @see {@link IPolylineEvents} for a list of available events\r\n * @see {@link IPolylineAdapters} for a list of available Adapters\r\n */\r\nvar Polyline = /** @class */ (function (_super) {\r\n __extends(Polyline, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Polyline() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * [_distance description]\r\n *\r\n * @todo Description\r\n */\r\n _this._distance = 0;\r\n _this.className = \"Polyline\";\r\n _this.element = _this.paper.add(\"path\");\r\n _this.shapeRendering = \"auto\";\r\n _this.fill = color();\r\n _this.strokeOpacity = 1;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Creats and adds an SVG path for the arc.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Polyline.prototype.makePath = function () {\r\n this._distance = 0;\r\n var segments = this.segments;\r\n if (segments && segments.length > 0) {\r\n var path = \"\";\r\n for (var i = 0, len = segments.length; i < len; i++) {\r\n var points = segments[i];\r\n if (points.length > 0) {\r\n path += $path.moveTo(points[0]);\r\n for (var p = 1; p < points.length; p++) {\r\n var point = points[p];\r\n path += $path.lineTo(point);\r\n this._distance += $math.getDistance(points[p - 1], point);\r\n }\r\n }\r\n }\r\n this.path = path;\r\n }\r\n this._realSegments = segments;\r\n };\r\n Object.defineProperty(Polyline.prototype, \"segments\", {\r\n /**\r\n * @return Segments\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"segments\");\r\n },\r\n /**\r\n * A list of segment coordinates for the multi-part line.\r\n *\r\n * @todo Example\r\n * @param segments Segments\r\n */\r\n set: function (segments) {\r\n this.setPropertyValue(\"segments\", segments);\r\n this.makePath();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Polyline.prototype, \"distance\", {\r\n /**\r\n * [distance description]\r\n *\r\n * @todo Description\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this._distance;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts relative position along the line (0-1) into pixel coordinates.\r\n *\r\n * @param position Position (0-1)\r\n * @return Coordinates\r\n */\r\n Polyline.prototype.positionToPoint = function (position) {\r\n var deltaAngle = 0;\r\n if (position < 0) {\r\n position = Math.abs(position);\r\n deltaAngle = 180;\r\n }\r\n var segments = this._realSegments;\r\n if (segments) {\r\n var totalDistance = this.distance;\r\n var currentDistance = 0;\r\n var distanceAB = void 0;\r\n var positionA = 0;\r\n var positionB = 0;\r\n var pointA = void 0;\r\n var pointB = void 0;\r\n for (var s = 0; s < segments.length; s++) {\r\n var points = segments[s];\r\n if (points.length > 1) {\r\n for (var p = 1; p < points.length; p++) {\r\n pointA = points[p - 1];\r\n pointB = points[p];\r\n positionA = currentDistance / totalDistance;\r\n distanceAB = $math.getDistance(pointA, pointB);\r\n currentDistance += distanceAB;\r\n positionB = currentDistance / totalDistance;\r\n if (positionA <= position && positionB > position) {\r\n s = segments.length;\r\n break;\r\n }\r\n }\r\n }\r\n else if (points.length == 1) {\r\n pointA = points[0];\r\n pointB = points[0];\r\n positionA = 0;\r\n positionB = 1;\r\n }\r\n }\r\n if (pointA && pointB) {\r\n var positionAB = (position - positionA) / (positionB - positionA);\r\n var midPoint = $math.getMidPoint(pointA, pointB, positionAB);\r\n return { x: midPoint.x, y: midPoint.y, angle: deltaAngle + $math.getAngle(pointA, pointB) };\r\n }\r\n }\r\n return { x: 0, y: 0, angle: 0 };\r\n };\r\n Object.defineProperty(Polyline.prototype, \"realSegments\", {\r\n /**\r\n * @ignore\r\n */\r\n get: function () {\r\n return this._realSegments;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Polyline;\r\n}(Sprite));\r\nexport { Polyline };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Polyline\"] = Polyline;\r\n//# sourceMappingURL=Polyline.js.map","/**\r\n * Polyspline (smoothed line) module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Polyline } from \"./Polyline\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws a polysline. (smoothed multi-sigment line)\r\n *\r\n * @see {@link IPolysplineEvents} for a list of available events\r\n * @see {@link IPolysplineAdapters} for a list of available Adapters\r\n */\r\nvar Polyspline = /** @class */ (function (_super) {\r\n __extends(Polyspline, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Polyspline() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Polyspline\";\r\n _this.tensionX = 0.5;\r\n _this.tensionY = 0.5;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Creats and adds an SVG path for the arc.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Polyspline.prototype.makePath = function () {\r\n this._distance = 0;\r\n var segments = this.segments;\r\n var tensionX = this.tensionX;\r\n var tensionY = this.tensionY;\r\n this.allPoints = [];\r\n if (segments && segments.length > 0) {\r\n var path = \"\";\r\n this._realSegments = [];\r\n for (var i = 0, len = segments.length; i < len; i++) {\r\n var points = segments[i];\r\n var realPoints = [];\r\n this._realSegments.push(realPoints);\r\n if (points.length > 0) {\r\n var first = points[0];\r\n var last = points[points.length - 1];\r\n var closed_1 = false;\r\n if ($math.round(first.x, 3) == $math.round(last.x) && $math.round(first.y) == $math.round(last.y)) {\r\n closed_1 = true;\r\n }\r\n path += $path.moveTo(points[0]);\r\n for (var p = 0; p < points.length - 1; p++) {\r\n var p0 = points[p - 1];\r\n var p1 = points[p];\r\n var p2 = points[p + 1];\r\n var p3 = points[p + 2];\r\n if (p === 0) {\r\n p0 = points[p];\r\n }\r\n else if (p == points.length - 2) {\r\n p3 = points[p + 1];\r\n }\r\n if (!p3) {\r\n p3 = p2;\r\n }\r\n if (p === 0) {\r\n if (closed_1) {\r\n p0 = points[points.length - 2];\r\n }\r\n else {\r\n p0 = points[i];\r\n }\r\n }\r\n else if (p == points.length - 2) {\r\n if (closed_1) {\r\n p3 = points[1];\r\n }\r\n else {\r\n p3 = points[p + 1];\r\n }\r\n }\r\n var controlPointA = $math.getCubicControlPointA(p0, p1, p2, p3, tensionX, tensionY);\r\n var controlPointB = $math.getCubicControlPointB(p0, p1, p2, p3, tensionX, tensionY);\r\n path += $path.cubicCurveTo(p2, controlPointA, controlPointB);\r\n // now split to small segments so that we could have positionToPoint later\r\n var stepCount = Math.ceil($math.getCubicCurveDistance(p1, p2, controlPointA, controlPointB, 20)) * 1.2;\r\n var prevPoint = p1;\r\n if (stepCount > 0) {\r\n // not good for curved charts\r\n //this.allPoints[0] = { x: points[0].x, y: points[0].y, angle: $math.getAngle(points[0], points[1]) };\r\n //realPoints.push(this.allPoints[0]);\r\n for (var s = 0; s <= stepCount; s++) {\r\n var point = $math.getPointOnCubicCurve(p1, p2, controlPointA, controlPointB, s / stepCount);\r\n if (point.x == prevPoint.x && point.y == prevPoint.y) {\r\n continue;\r\n }\r\n realPoints.push(point);\r\n var angle = $math.round($math.getAngle(prevPoint, point), 5);\r\n //this.allPoints.push({ x: point.x, y: point.y, angle: angle });\r\n this._distance += $math.getDistance(prevPoint, point);\r\n this.allPoints[Math.floor(this._distance)] = { x: point.x, y: point.y, angle: angle };\r\n prevPoint = point;\r\n }\r\n }\r\n else {\r\n realPoints.push(p0);\r\n }\r\n }\r\n }\r\n var allPoints = this.allPoints;\r\n if (allPoints.length > 1) {\r\n for (var i_1 = 0; i_1 < allPoints.length; i_1++) {\r\n if (!allPoints[i_1]) {\r\n if (i_1 > 1) {\r\n allPoints[i_1] = allPoints[i_1 - 1];\r\n }\r\n else {\r\n for (var k = 1; k < allPoints.length; k++) {\r\n if (allPoints[k]) {\r\n allPoints[i_1] = allPoints[k];\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n this.path = path;\r\n }\r\n };\r\n /**\r\n * Returns an index of the point that is closest to specified coordinates.\r\n *\r\n * @param point Reference point\r\n * @return Index\r\n */\r\n Polyspline.prototype.getClosestPointIndex = function (point) {\r\n var points = this.allPoints;\r\n var index;\r\n var closest = Infinity;\r\n if (points.length > 1) {\r\n for (var p = 1; p < points.length; p++) {\r\n var distance = $math.getDistance(point, points[p]);\r\n if (distance < closest) {\r\n index = p;\r\n closest = distance;\r\n }\r\n }\r\n }\r\n return index;\r\n };\r\n Object.defineProperty(Polyspline.prototype, \"tensionX\", {\r\n /**\r\n * @return Tension\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tensionX\");\r\n },\r\n /**\r\n * Horizontal tension for the spline.\r\n *\r\n * Used by the line smoothing algorithm.\r\n *\r\n * @default 0.5\r\n * @param value Tension\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"tensionX\", value);\r\n this.makePath();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Polyspline.prototype, \"tensionY\", {\r\n /**\r\n * @return Tension\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tensionY\");\r\n },\r\n /**\r\n * Vertical tension for the spline.\r\n *\r\n * Used by the line smoothing algorithm.\r\n *\r\n * @default 0.5\r\n * @param value Tensions\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"tensionY\", value, true);\r\n this.makePath();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts relative position along the line (0-1) into pixel coordinates.\r\n *\r\n * @param position Position (0-1)\r\n * @return Coordinates\r\n */\r\n Polyspline.prototype.positionToPoint = function (position, extend) {\r\n var deltaAngle = 0;\r\n var allPoints = this.allPoints;\r\n var len = allPoints.length;\r\n if (!$type.isNumber(position)) {\r\n position = 0;\r\n }\r\n if (len > 1) {\r\n if (extend && len > 3) {\r\n if (position < 0) {\r\n if (position < -0.01) {\r\n position = -0.01;\r\n }\r\n var f0 = allPoints[0];\r\n var f1 = allPoints[1];\r\n var x = f0.x - (f0.x - f1.x) * len * position;\r\n var y = f0.y - (f0.y - f1.y) * len * position;\r\n return { x: x, y: y, angle: $math.getAngle(f0, f1) };\r\n }\r\n else if (position > 1) {\r\n if (position > 1.01) {\r\n position = 1.01;\r\n }\r\n var f0 = allPoints[allPoints.length - 2];\r\n var f1 = allPoints[allPoints.length - 3];\r\n var x = f0.x + (f0.x - f1.x) * len * (position - 1);\r\n var y = f0.y + (f0.y - f1.y) * len * (position - 1);\r\n return { x: x, y: y, angle: $math.getAngle(f0, { x: x, y: y }) };\r\n }\r\n else if (position == 1) {\r\n var point_1 = allPoints[allPoints.length - 1];\r\n return { x: point_1.x, y: point_1.y, angle: point_1.angle };\r\n }\r\n }\r\n else {\r\n if (position < 0) {\r\n position = Math.abs(position);\r\n deltaAngle = 180;\r\n }\r\n if (position >= 1) {\r\n position = 0.9999999999999;\r\n }\r\n }\r\n var point = allPoints[Math.floor(position * len)];\r\n return { x: point.x, y: point.y, angle: point.angle + deltaAngle };\r\n }\r\n else if (len == 1) {\r\n var point = allPoints[0];\r\n return { x: point.x, y: point.y, angle: point.angle };\r\n }\r\n else {\r\n return { x: 0, y: 0, angle: 0 };\r\n }\r\n };\r\n return Polyspline;\r\n}(Polyline));\r\nexport { Polyspline };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Polyspline\"] = Polyspline;\r\n//# sourceMappingURL=Polyspline.js.map","import { StyleRule } from \"../utils/DOM\";\r\nimport { Dictionary } from \"../utils/Dictionary\";\r\nimport { MultiDisposer, CounterDisposer } from \"../utils/Disposer\";\r\nimport { InterfaceColorSet } from \"../utils/InterfaceColorSet\";\r\nvar rules = new Dictionary();\r\n/**\r\n * Default CSS for Popup.\r\n *\r\n * @ignore Exclude from docs\r\n * @param prefix Prefix for CSS classes\r\n * @return Disposer for the CSS definition\r\n */\r\nexport default function (element, prefix) {\r\n if (!prefix) {\r\n prefix = \"ampopup\";\r\n }\r\n var cs = new InterfaceColorSet();\r\n var fg = cs.getFor(\"text\");\r\n var bg = cs.getFor(\"background\");\r\n bg.alpha = 0.8;\r\n var abg = cs.getFor(\"alternativeBackground\");\r\n abg.alpha = 0.05;\r\n var counter = rules.insertKeyIfEmpty(prefix, function () {\r\n var disposer = new MultiDisposer([\r\n new StyleRule(element, \".\" + prefix, {\r\n //\"width\": \"100%\",\r\n //\"height\": \"100%\",\r\n \"overflow\": \"visible\",\r\n \"position\": \"absolute\",\r\n \"top\": \"0\",\r\n \"left\": \"0\",\r\n \"z-index\": \"2000\"\r\n }),\r\n new StyleRule(element, \".\" + prefix + \"-curtain\", {\r\n \"width\": \"100%\",\r\n \"height\": \"100%\",\r\n \"position\": \"absolute\",\r\n \"top\": \"0\",\r\n \"left\": \"0\",\r\n \"z-index\": \"2001\",\r\n \"background-color\": bg.hex,\r\n \"opacity\": \"0.5\"\r\n }),\r\n new StyleRule(element, \".\" + prefix + \"-header\", {\r\n \"display\": \"block\",\r\n \"width\": \"100%\",\r\n \"min-height\": \"1.8em\",\r\n \"background\": abg.rgba\r\n }),\r\n new StyleRule(element, \".\" + prefix + \"-title\", {\r\n \"font-weight\": \"bold\",\r\n \"font-size\": \"110%\",\r\n \"padding\": \"0.5em 1.2em 0.5em 1em\"\r\n }),\r\n new StyleRule(element, \".\" + prefix + \"-content\", {\r\n /*\"width\": \"100%\",\r\n \"height\": \"100%\",*/\r\n // \"padding\": \"2em 1em 1em 1em\",\r\n \"background\": bg.hex,\r\n \"background-color\": bg.rgba,\r\n \"color\": fg.hex,\r\n \"display\": \"inline-block\",\r\n \"position\": \"absolute\",\r\n \"top\": \"0\",\r\n \"left\": \"0\",\r\n \"max-width\": \"90%\",\r\n \"max-height\": \"90%\",\r\n \"overflow\": \"auto\",\r\n \"z-index\": \"2002\"\r\n }),\r\n new StyleRule(element, \".\" + prefix + \"-inside\", {\r\n \"padding\": \"1em\"\r\n }),\r\n new StyleRule(element, \".\" + prefix + \"-close\", {\r\n \"display\": \"block\",\r\n \"position\": \"absolute\",\r\n \"top\": \"0.3em\",\r\n \"right\": \"0.3em\",\r\n \"background-color\": \"rgb(100, 100, 100)\",\r\n \"background\": \"rgba(100, 100, 100, 0.1) url(data:image/svg+xml;charset=utf-8;base64,PHN2ZyBoZWlnaHQ9IjUxMiIgdmVyc2lvbj0iMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQ0NS4yIDEwOS4ybC00Mi40LTQyLjRMMjU2IDIxMy42IDEwOS4yIDY2LjhsLTQyLjQgNDIuNEwyMTMuNiAyNTYgNjYuOCA0MDIuOGw0Mi40IDQyLjRMMjU2IDI5OC40bDE0Ni44IDE0Ni44IDQyLjQtNDIuNEwyOTguNCAyNTYiLz48L3N2Zz4=) no-repeat center\",\r\n \"background-size\": \"80%\",\r\n \"width\": \"1.2em\",\r\n \"height\": \"1.2em\",\r\n \"cursor\": \"pointer\"\r\n }),\r\n ]);\r\n return new CounterDisposer(function () {\r\n rules.removeKey(prefix);\r\n disposer.dispose();\r\n });\r\n });\r\n return counter.increment();\r\n}\r\n//# sourceMappingURL=PopupCSS.js.map","/**\r\n * Popup class is used to display information over chart area.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport popupCSS from \"./PopupCSS\";\r\nimport { Adapter } from \"../utils/Adapter\";\r\nimport { BaseObjectEvents } from \"../Base\";\r\nimport { getInteraction } from \"../interaction/Interaction\";\r\nimport { keyboard } from \"../utils/Keyboard\";\r\nimport { MultiDisposer } from \"../utils/Disposer\";\r\nimport { getShadowRoot } from \"../utils/DOM\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $object from \"../utils/Object\";\r\n/**\r\n * Shows an HTML popup which covers window or a chart area.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/popups-and-modals/} For examples and docs on Popups and Modals.\r\n * @todo Positioning over whole window\r\n */\r\nvar Popup = /** @class */ (function (_super) {\r\n __extends(Popup, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Popup() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Adapter.\r\n */\r\n _this.adapter = new Adapter(_this);\r\n /**\r\n * Holds references to various HTML elements, Popup consists of.\r\n */\r\n _this._elements = {};\r\n /**\r\n * Holdes Interaction objects for various Popup's elements.\r\n */\r\n _this._IOs = {};\r\n /**\r\n * Contents of popup window.\r\n */\r\n _this._content = \"\";\r\n /**\r\n * Title of the popup window.\r\n */\r\n _this._title = \"\";\r\n /**\r\n * Prefix to apply to class names for popup elements.\r\n */\r\n _this._classPrefix = \"ampopup\";\r\n /**\r\n * If set to `true` [[Popup]] will use default styles.\r\n */\r\n _this._defaultStyles = true;\r\n /**\r\n * If set to `true` [[Popup]] will dim out all chart content behind it by\r\n * showing a semi-transparent fill. (curtain)\r\n */\r\n _this._showCurtain = false;\r\n /**\r\n * Indicates whether popup can be dragged.\r\n */\r\n _this._draggable = true;\r\n /**\r\n * Horizontal position of the content window.\r\n */\r\n _this._align = \"center\";\r\n /**\r\n * Resize popup as images are being loaded.\r\n */\r\n _this._dynamicResize = true;\r\n /**\r\n * Vertical position of the content window.\r\n */\r\n _this._verticalAlign = \"middle\";\r\n /**\r\n * Shift in position of the element. (used for dragging)\r\n */\r\n _this._shift = {\r\n x: 0,\r\n y: 0\r\n };\r\n /**\r\n * Temporary shift in position of the element. (used for dragging)\r\n */\r\n _this._tempShift = {\r\n x: 0,\r\n y: 0\r\n };\r\n /**\r\n * A title for screen readers. It is very highly recommended to set that title\r\n * so that people using screen reader tools can get an immediate summary of\r\n * the information in the popup.\r\n */\r\n _this._readerTitle = \"\";\r\n /**\r\n * Is popup closable?\r\n */\r\n _this._closable = true;\r\n /**\r\n * Was CSS already loaded?\r\n */\r\n _this._cssLoaded = false;\r\n /**\r\n * If set to other than \"none\" will try to re-adjust the position of the\r\n * popop to fit within chart container or browser window.\r\n *\r\n * @ignore Feature not yet implemented\r\n * @todo Implement\r\n */\r\n _this._fitTo = \"window\";\r\n /**\r\n * Identifies if this object is a \"template\" and should not be treated as\r\n * real object that is drawn or actually used in the chart.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this.isTemplate = false;\r\n /**\r\n * Indicates if the element was already sized and should not be measured for\r\n * size again, saving some precious resources.\r\n */\r\n _this._sized = false;\r\n _this.className = \"Popup\";\r\n return _this;\r\n }\r\n /**\r\n * Shows popup window.\r\n */\r\n Popup.prototype.open = function () {\r\n if (this.container) {\r\n if (this._elements.wrapper) {\r\n this.container.appendChild(this._elements.wrapper);\r\n }\r\n if (this._elements.curtain) {\r\n this.container.appendChild(this._elements.curtain);\r\n this.showCurtain = this.showCurtain;\r\n }\r\n this.positionElement();\r\n this.dispatchImmediately(\"opened\");\r\n }\r\n };\r\n /**\r\n * Hides popup window.\r\n */\r\n Popup.prototype.close = function () {\r\n if (this._elements.wrapper) {\r\n if (this._elements.wrapper.parentElement) {\r\n this._elements.wrapper.parentElement.removeChild(this._elements.wrapper);\r\n }\r\n }\r\n if (this._elements.curtain) {\r\n if (this._elements.curtain.parentElement) {\r\n this._elements.curtain.parentElement.removeChild(this._elements.curtain);\r\n }\r\n }\r\n this.dispatchImmediately(\"closed\");\r\n this.releasePointers();\r\n };\r\n /**\r\n * Destroy (dispose) popup.\r\n */\r\n Popup.prototype.dispose = function () {\r\n this.close();\r\n _super.prototype.dispose.call(this);\r\n };\r\n /**\r\n * Positions content element in the center of popup based on its actual size.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Popup.prototype.positionElement = function (forceResize) {\r\n var _this = this;\r\n if (forceResize === void 0) { forceResize = true; }\r\n if (!this._elements.wrapper) {\r\n return;\r\n }\r\n setTimeout(function () {\r\n if (!_this._elements.wrapper) {\r\n return;\r\n }\r\n if (forceResize || !_this._sized) {\r\n _this._elements.wrapper.style.opacity = \"0.01\";\r\n _this._elements.wrapper.style.left = \"0\";\r\n _this._elements.wrapper.style.top = \"0\";\r\n _this._elements.wrapper.style.margin = \"0 0 0 0\";\r\n _this._elements.wrapper.style.width = \"\";\r\n _this._elements.wrapper.style.height = \"\";\r\n var bbox = _this._elements.wrapper.getBoundingClientRect();\r\n _this._elements.wrapper.style.width = bbox.width + \"px\";\r\n _this._elements.wrapper.style.height = bbox.height + \"px\";\r\n _this._sized = true;\r\n }\r\n // Check for any images that are not yet loaded\r\n if (_this.dynamicResize) {\r\n var images = _this._elements.wrapper.getElementsByTagName(\"img\");\r\n for (var i = 0; i < images.length; i++) {\r\n var image = images[i];\r\n if (!image.complete) {\r\n // Resize popup once again when image is loaded\r\n image.addEventListener(\"load\", function () {\r\n _this.positionElement(true);\r\n });\r\n // Do this for one image only as it will be checked again next time\r\n // anyway\r\n break;\r\n }\r\n }\r\n }\r\n setTimeout(function () {\r\n if (!_this._elements.wrapper) {\r\n return;\r\n }\r\n var bbox;\r\n if ((forceResize || !_this._sized) && _this._bbox) {\r\n bbox = _this._bbox;\r\n }\r\n else {\r\n bbox = _this._elements.wrapper.getBoundingClientRect();\r\n _this._elements.wrapper.style.opacity = \"\";\r\n }\r\n // Set horizontal positioning\r\n switch (_this.align) {\r\n case \"left\":\r\n _this._elements.wrapper.style.left = \"0\";\r\n _this._elements.wrapper.style.right = \"auto\";\r\n _this._elements.wrapper.style.marginLeft = _this.toStyle(_this._shift.x + _this._tempShift.x);\r\n break;\r\n case \"center\":\r\n _this._elements.wrapper.style.left = \"50%\";\r\n _this._elements.wrapper.style.right = \"auto\";\r\n _this._elements.wrapper.style.marginLeft = _this.toStyle(Math.round(-bbox.width / 2) + (_this._shift.x + _this._tempShift.x));\r\n break;\r\n case \"right\":\r\n _this._elements.wrapper.style.left = \"auto\";\r\n _this._elements.wrapper.style.right = \"0\";\r\n _this._elements.wrapper.style.marginLeft = _this.toStyle(_this._shift.x + _this._tempShift.x);\r\n break;\r\n default:\r\n _this._elements.wrapper.style.left = _this.toStyle(_this.left) || \"auto\";\r\n _this._elements.wrapper.style.right = _this.toStyle(_this.right) || \"auto\";\r\n _this._elements.wrapper.style.marginLeft = _this.toStyle(_this._shift.x + _this._tempShift.x);\r\n break;\r\n }\r\n // Set vertical positioning\r\n switch (_this.verticalAlign) {\r\n case \"top\":\r\n _this._elements.wrapper.style.top = \"0\";\r\n _this._elements.wrapper.style.bottom = \"auto\";\r\n _this._elements.wrapper.style.marginTop = _this.toStyle(_this._shift.y + _this._tempShift.y);\r\n break;\r\n case \"middle\":\r\n _this._elements.wrapper.style.top = \"50%\";\r\n _this._elements.wrapper.style.bottom = \"auto\";\r\n _this._elements.wrapper.style.marginTop = _this.toStyle(Math.round(-bbox.height / 2) + (_this._shift.y + _this._tempShift.y));\r\n break;\r\n case \"bottom\":\r\n _this._elements.wrapper.style.top = \"auto\";\r\n _this._elements.wrapper.style.bottom = \"0\";\r\n _this._elements.wrapper.style.marginTop = _this.toStyle(_this._shift.y + _this._tempShift.y);\r\n break;\r\n default:\r\n _this._elements.wrapper.style.top = _this.toStyle(_this.top) || \"auto\";\r\n _this._elements.wrapper.style.bottom = _this.toStyle(_this.bottom) || \"auto\";\r\n _this._elements.wrapper.style.marginTop = _this.toStyle(_this._shift.y + _this._tempShift.y);\r\n break;\r\n }\r\n }, 1);\r\n }, 1);\r\n };\r\n Popup.prototype.setupDragging = function () {\r\n var _this = this;\r\n if (this.draggable) {\r\n if (!this._IOs.header.events.has(\"drag\")) {\r\n this._IOs.header.events.on(\"drag\", function (ev) {\r\n _this._tempShift.x = ev.shift.x;\r\n _this._tempShift.y = ev.shift.y;\r\n _this.positionElement(false);\r\n });\r\n }\r\n if (!this._IOs.header.events.has(\"dragstop\")) {\r\n this._IOs.header.events.on(\"dragstop\", function (ev) {\r\n _this._shift.x += _this._tempShift.x;\r\n _this._shift.y += _this._tempShift.y;\r\n _this._tempShift.x = 0;\r\n _this._tempShift.y = 0;\r\n _this.positionElement(false);\r\n });\r\n }\r\n }\r\n else {\r\n if (this._IOs.header) {\r\n getInteraction().unprepElement(this._IOs.header);\r\n if (this._IOs.header.events.has(\"drag\")) {\r\n this._IOs.header.events.off(\"drag\");\r\n }\r\n if (this._IOs.header.events.has(\"dragstop\")) {\r\n this._IOs.header.events.off(\"dragstop\");\r\n }\r\n }\r\n }\r\n };\r\n Popup.prototype.toStyle = function (value) {\r\n if (!$type.hasValue(value)) {\r\n return null;\r\n }\r\n else if ($type.isNumber(value)) {\r\n return \"\" + value + \"px\";\r\n }\r\n else {\r\n return value.toString();\r\n }\r\n };\r\n Object.defineProperty(Popup.prototype, \"classPrefix\", {\r\n /**\r\n * A prefix that is applied to class names of various popup elements.\r\n *\r\n * @return Class name prefix\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"classPrefix\", this._classPrefix);\r\n },\r\n /**\r\n * @param value Class name prefix\r\n */\r\n set: function (value) {\r\n this._classPrefix = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Popup.prototype, \"classPrefixRaw\", {\r\n /**\r\n * Returns raw prefix (without adapters applied).\r\n *\r\n * @ignore Exclude from docs\r\n * @return Class name prefix\r\n */\r\n get: function () {\r\n return this._classPrefix;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Popup.prototype, \"content\", {\r\n /**\r\n * @return Popup content\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"content\", this._content);\r\n },\r\n /**\r\n * Popup content.\r\n *\r\n * Popup content can be any valid HTML, including CSS.\r\n *\r\n * @param value Popup content\r\n */\r\n set: function (value) {\r\n if (this._content != value) {\r\n this._content = value;\r\n if (!this._elements.content) {\r\n this.createContentElement();\r\n }\r\n this._elements.content.innerHTML = value;\r\n this.positionElement();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Popup.prototype.getClassNames = function () {\r\n return this.adapter.apply(\"classNames\", {\r\n wrapperClass: this.classPrefix + \"\",\r\n headerClass: this.classPrefix + \"-header\",\r\n titleClass: this.classPrefix + \"-title\",\r\n contentClass: this.classPrefix + \"-content\",\r\n insideClass: this.classPrefix + \"-inside\",\r\n curtainClass: this.classPrefix + \"-curtain\",\r\n closeClass: this.classPrefix + \"-close\"\r\n });\r\n };\r\n /**\r\n * Creates content element.\r\n */\r\n Popup.prototype.createContentElement = function () {\r\n // Check if it's created already\r\n if (this._elements.wrapper) {\r\n return;\r\n }\r\n // Get class names for popup elements\r\n var classNames = this.getClassNames();\r\n // Create content element\r\n var wrapper = document.createElement(\"div\");\r\n wrapper.className = classNames.contentClass;\r\n wrapper.style.opacity = \"0.01\";\r\n // Create close button\r\n var close = document.createElement(\"a\");\r\n close.className = classNames.closeClass;\r\n // header title\r\n var header = document.createElement(\"div\");\r\n header.className = classNames.headerClass;\r\n // Content title\r\n var title = document.createElement(\"div\");\r\n title.innerHTML = this.title;\r\n title.className = classNames.titleClass;\r\n if (!this.title) {\r\n title.style.display = \"none\";\r\n }\r\n // Content div\r\n var content = document.createElement(\"div\");\r\n content.className = classNames.insideClass;\r\n content.innerHTML = this.content;\r\n // Set up events for content\r\n this._IOs.wrapper = getInteraction().getInteraction(wrapper);\r\n this._IOs.header = getInteraction().getInteraction(header);\r\n this._disposers.push(this._IOs.wrapper);\r\n // Set hover/out events\r\n this._IOs.wrapper.events.on(\"over\", this.disablePointers, this);\r\n this._IOs.wrapper.events.on(\"out\", this.releasePointers, this);\r\n // Create an InteractionObject for close\r\n this._IOs.close = getInteraction().getInteraction(close);\r\n this._disposers.push(this._IOs.close);\r\n // Hide close for now\r\n close.style.visibility = \"hidden\";\r\n // Add accessible stuff\r\n wrapper.setAttribute(\"role\", \"dialog\");\r\n // Add to wrapper\r\n header.appendChild(close);\r\n header.appendChild(title);\r\n wrapper.appendChild(header);\r\n wrapper.appendChild(content);\r\n this.container.appendChild(wrapper);\r\n // Save for later access\r\n this._elements.wrapper = wrapper;\r\n this._elements.header = header;\r\n this._elements.content = content;\r\n this._elements.title = title;\r\n this._elements.close = close;\r\n // Load CSS\r\n if (this.defaultStyles) {\r\n this.loadDefaultCSS();\r\n }\r\n // Create curtain as well\r\n this.createCurtainElement();\r\n // Apply events\r\n this.applyEvents();\r\n this.applyReaderSettings();\r\n // Draggable?\r\n this.setupDragging();\r\n };\r\n Object.defineProperty(Popup.prototype, \"title\", {\r\n /**\r\n * @return Popup title\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"title\", this._title);\r\n },\r\n /**\r\n * Popup title.\r\n *\r\n * Popup title can be any valid HTML, including CSS.\r\n *\r\n * @param value Popup title\r\n */\r\n set: function (value) {\r\n if (this._title != value) {\r\n this._title = value;\r\n if (!this._elements.content) {\r\n this.createContentElement();\r\n }\r\n this._elements.title.innerHTML = value;\r\n this.positionElement();\r\n this.applyReaderSettings();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Popup.prototype, \"readerTitle\", {\r\n /**\r\n * @return Popup content\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"readerTitle\", this._readerTitle != \"\" ? this._readerTitle : this.title);\r\n },\r\n /**\r\n * A title for screen readers. It is very highly recommended to set that title\r\n * so that people using screen reader tools can get an immediate summary of\r\n * the information in the popup.\r\n *\r\n * @param value Reader title\r\n */\r\n set: function (value) {\r\n if (this._readerTitle != value) {\r\n this._readerTitle = value;\r\n this.applyReaderSettings();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Popup.prototype, \"closable\", {\r\n /**\r\n * @return Closable?\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"closable\", this._closable);\r\n },\r\n /**\r\n * Is popup closable?\r\n *\r\n * If it is, it can be closed in a number of ways, e.g. by hitting ESC key,\r\n * clicking curtain, or clicking the close button.\r\n *\r\n * If it is not closable, the only way to close it is via `close()` call.\r\n *\r\n * @param value Closable?\r\n */\r\n set: function (value) {\r\n if (value !== this._closable) {\r\n this._closable = value;\r\n this.applyEvents();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Popup.prototype, \"fitTo\", {\r\n /**\r\n * @ignore\r\n * @todo Implement\r\n * @return Fit option\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"fitTo\", this._fitTo);\r\n },\r\n /**\r\n * If set to other than \"none\" will try to re-adjust the position of the\r\n * popop to fit within chart container or browser window.\r\n *\r\n * @ignore\r\n * @todo Implement\r\n * @default \"window\"\r\n * @param value Fit option\r\n */\r\n set: function (value) {\r\n if (value != this._fitTo) {\r\n this._fitTo = value;\r\n this.positionElement();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Popup.prototype, \"defaultStyles\", {\r\n /**\r\n * @return Use default CSS?\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"defaultStyles\", this._defaultStyles);\r\n },\r\n /**\r\n * Should popup use default CSS?\r\n *\r\n * If default CSS is disabled, an external CSS should handle the look of the\r\n * popup, since it will look quite out of place otherwise.\r\n *\r\n * @default true\r\n * @param Use default CSS?\r\n */\r\n set: function (value) {\r\n if (this._defaultStyles != value) {\r\n this._defaultStyles = value;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Popup.prototype, \"showCurtain\", {\r\n /**\r\n * @return Show curtain?\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"showCurtain\", this._showCurtain);\r\n },\r\n /**\r\n * Should popup use dim out all content behind it?\r\n *\r\n * @default false\r\n * @param Show curtain?\r\n */\r\n set: function (value) {\r\n if (this._showCurtain != value) {\r\n this._showCurtain = value;\r\n if (this._elements.curtain) {\r\n this._elements.curtain.style.display = value ? \"block\" : \"none\";\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates curtain element.\r\n */\r\n Popup.prototype.createCurtainElement = function () {\r\n // Get class names for popup elements\r\n var classNames = this.getClassNames();\r\n // Create the curtain\r\n var curtain = document.createElement(\"div\");\r\n curtain.className = classNames.curtainClass;\r\n // Append curtain to wrapper\r\n this.container.appendChild(curtain);\r\n // Create an InteractionObject for curtain because we might need to\r\n // set interactions on it\r\n this._IOs.curtain = getInteraction().getInteraction(curtain);\r\n // Add Curtain IO to disposers\r\n this._disposers.push(this._IOs.curtain);\r\n // Set events to disable underlying interactivity\r\n this._IOs.curtain.events.on(\"over\", this.disablePointers, this);\r\n this._IOs.curtain.events.on(\"out\", this.releasePointers, this);\r\n // Hide it?\r\n curtain.style.display = this.showCurtain ? \"block\" : \"none\";\r\n // Save for later\r\n this._elements.curtain = curtain;\r\n };\r\n Object.defineProperty(Popup.prototype, \"draggable\", {\r\n /**\r\n * @return Show curtain?\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"draggable\", this._draggable);\r\n },\r\n /**\r\n * Can the popup be dragged with a pointer?\r\n *\r\n * @default false\r\n * @param Show curtain?\r\n */\r\n set: function (value) {\r\n if (this._draggable != value) {\r\n this._draggable = value;\r\n this.setupDragging();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Popup.prototype, \"dynamicResize\", {\r\n /**\r\n * @return Resize dynamically?\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"dynamicResize\", this._dynamicResize);\r\n },\r\n /**\r\n * Resize popup as images are being loaded.\r\n *\r\n * @default true\r\n * @since 4.9.17\r\n * @param Resize dynamically?\r\n */\r\n set: function (value) {\r\n if (this._dynamicResize != value) {\r\n this._dynamicResize = value;\r\n this.positionElement(true);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Popup.prototype, \"align\", {\r\n /**\r\n * @return Horizontal position\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"align\", this._align);\r\n },\r\n /**\r\n * Horizontal positioning of the content window.\r\n *\r\n * Available options: \"left\", \"center\" (default), \"right\", and \"none\".\r\n *\r\n * @default \"center\"\r\n * @param Horizontal position\r\n */\r\n set: function (value) {\r\n if (this._align != value) {\r\n this._align = value;\r\n this.positionElement();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Popup.prototype, \"verticalAlign\", {\r\n /**\r\n * @return Vertical position\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"verticalAlign\", this._verticalAlign);\r\n },\r\n /**\r\n * Vertical positioning of the content window.\r\n *\r\n * Available options: \"top\", \"middle\" (default), \"bottom\", and \"none\".\r\n *\r\n * @default \"middle\"\r\n * @param Vertical position\r\n */\r\n set: function (value) {\r\n if (this._verticalAlign != value) {\r\n this._verticalAlign = value;\r\n this.positionElement();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Popup.prototype, \"left\", {\r\n /**\r\n * @return Left\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"left\", this._left);\r\n },\r\n /**\r\n * \"left\" coordinate of a non-aligned (`align = \"none\"`) popup.\r\n *\r\n * Can be either absolute pixel value, or relative (`Percent`).\r\n *\r\n * Setting this property will automatically set `align` to \"none\".\r\n *\r\n * NOTE: The position is relative to the chart container.\r\n *\r\n * @param Left\r\n */\r\n set: function (value) {\r\n if (this.left != value) {\r\n this._left = value;\r\n this._align = \"none\";\r\n this.positionElement();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Popup.prototype, \"right\", {\r\n /**\r\n * @return Right\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"right\", this._right);\r\n },\r\n /**\r\n * \"right\" coordinate of a non-aligned (`align = \"none\"`) popup.\r\n *\r\n * Can be either absolute pixel value, or relative (`Percent`).\r\n *\r\n * Setting this property will automatically set `align` to \"none\".\r\n *\r\n * NOTE: The position is relative to the chart container.\r\n *\r\n * @param Right\r\n */\r\n set: function (value) {\r\n if (this.right != value) {\r\n this._right = value;\r\n this._align = \"none\";\r\n this.positionElement();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Popup.prototype, \"top\", {\r\n /**\r\n * @return Top\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"top\", this._top);\r\n },\r\n /**\r\n * \"top\" coordinate of a non-aligned (`verticalAlign = \"none\"`) popup.\r\n *\r\n * Can be either absolute pixel value, or relative (`Percent`).\r\n *\r\n * Setting this property will automatically set `verticalAlign` to \"none\".\r\n *\r\n * NOTE: The position is relative to the chart container.\r\n *\r\n * @param Top\r\n */\r\n set: function (value) {\r\n if (this.top != value) {\r\n this._top = value;\r\n this._verticalAlign = \"none\";\r\n this.positionElement();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Popup.prototype, \"bottom\", {\r\n /**\r\n * @return Bottom\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"bottom\", this._bottom);\r\n },\r\n /**\r\n * \"bottom\" coordinate of a non-aligned (`verticalAlign = \"none\"`) popup.\r\n *\r\n * Can be either absolute pixel value, or relative (`Percent`).\r\n *\r\n * Setting this property will automatically set `verticalAlign` to \"none\".\r\n *\r\n * NOTE: The position is relative to the chart container.\r\n *\r\n * @param Bottom\r\n */\r\n set: function (value) {\r\n if (this.bottom != value) {\r\n this._bottom = value;\r\n this._verticalAlign = \"none\";\r\n this.positionElement();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Popup.prototype, \"elements\", {\r\n /**\r\n * Returns an object with references to various elements of the Popup.\r\n *\r\n * * `wrapper`\r\n * * `title`\r\n * * `content`\r\n * * `close`\r\n * * `curtain`\r\n */\r\n get: function () {\r\n return this._elements;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Loads popup CSS.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Popup.prototype.loadDefaultCSS = function () {\r\n if (!this._cssLoaded) {\r\n this._disposers.push(popupCSS(getShadowRoot(this.container), this.classPrefix));\r\n $object.each(this._elements, function (key, el) {\r\n el.style.display = \"\";\r\n });\r\n this._cssLoaded = true;\r\n }\r\n };\r\n /**\r\n * If popup is closable, this method adds various events to popup elements.\r\n */\r\n Popup.prototype.applyEvents = function () {\r\n var _this = this;\r\n if (this._IOs.close) {\r\n if (this.closable) {\r\n this._IOs.close.element.style.visibility = \"visible\";\r\n var disposers = [\r\n getInteraction().body.events.on(\"keyup\", function (ev) {\r\n if (keyboard.isKey(ev.event, \"esc\") && _this.closable) {\r\n _this.close();\r\n }\r\n }),\r\n this._IOs.close.events.on(\"hit\", function (ev) {\r\n _this.close();\r\n })\r\n ];\r\n disposers.push(this._IOs.curtain.events.on(\"hit\", function (ev) {\r\n if (_this.showCurtain && _this.closable) {\r\n _this.close();\r\n }\r\n }));\r\n this._disposers.push(new MultiDisposer(disposers));\r\n }\r\n else {\r\n this._IOs.close.element.style.visibility = \"hidden\";\r\n }\r\n }\r\n };\r\n /**\r\n * Disables interactivity on parent chart.\r\n */\r\n Popup.prototype.disablePointers = function () {\r\n if (this.sprite) {\r\n this._spriteInteractionsEnabled = this.sprite.interactionsEnabled;\r\n this.sprite.interactionsEnabled = false;\r\n }\r\n };\r\n /**\r\n * Releases temporarily disabled pointers on parent chart.\r\n */\r\n Popup.prototype.releasePointers = function () {\r\n if ($type.hasValue(this._spriteInteractionsEnabled)) {\r\n this.sprite.interactionsEnabled = this._spriteInteractionsEnabled;\r\n this._spriteInteractionsEnabled = undefined;\r\n }\r\n };\r\n /**\r\n * Sets screen reader related settings.\r\n */\r\n Popup.prototype.applyReaderSettings = function () {\r\n this.elements.wrapper.setAttribute(\"aria-label\", this.readerTitle);\r\n };\r\n /**\r\n * Copies all properties and related data from different element.\r\n *\r\n * @param object Source element\r\n */\r\n Popup.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.container = source.container;\r\n this.sprite = source.sprite;\r\n this.classPrefix = source.classPrefixRaw;\r\n this.content = source.content;\r\n this.title = source.title;\r\n this.readerTitle = source.readerTitle;\r\n this.defaultStyles = source.defaultStyles;\r\n this.showCurtain = source.showCurtain;\r\n this.align = source.align;\r\n this.verticalAlign = source.verticalAlign;\r\n this.left = source.left;\r\n this.right = source.right;\r\n this.top = source.top;\r\n this.bottom = source.bottom;\r\n this.adapter.copyFrom(source.adapter);\r\n };\r\n return Popup;\r\n}(BaseObjectEvents));\r\nexport { Popup };\r\n//# sourceMappingURL=Popup.js.map","/**\r\n * Functionality for drawing rectangles.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../Sprite\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $math from \"../utils/Math\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Used to draw a rectangle.\r\n *\r\n * @see {@link IRectangleEvents} for a list of available events\r\n * @see {@link IRectangleAdapters} for a list of available Adapters\r\n */\r\nvar Rectangle = /** @class */ (function (_super) {\r\n __extends(Rectangle, _super);\r\n /**\r\n * Constructor\r\n * * Creates a `<rect>` element\r\n * * Creates default state\r\n */\r\n function Rectangle() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Rectangle\";\r\n _this.element = _this.paper.add(\"rect\");\r\n //this.pixelPerfect = false;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Rectangle.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n var precision = this._positionPrecision;\r\n if (this.pixelPerfect) {\r\n precision = 0;\r\n }\r\n var w = $math.round(this.innerWidth, precision);\r\n var h = $math.round(this.innerHeight, precision);\r\n this.element.attr({\r\n \"width\": w,\r\n \"height\": h\r\n });\r\n };\r\n /**\r\n * Measures the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Rectangle.prototype.measureElement = function () {\r\n };\r\n Object.defineProperty(Rectangle.prototype, \"bbox\", {\r\n /**\r\n * Returns bounding box (square) for this element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n get: function () {\r\n if (this.definedBBox) {\r\n return this.definedBBox;\r\n }\r\n if (this.isMeasured) {\r\n return {\r\n x: 0,\r\n y: 0,\r\n width: this.innerWidth,\r\n height: this.innerHeight\r\n };\r\n }\r\n else {\r\n return { x: 0, y: 0, width: 0, height: 0 };\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Rectangle;\r\n}(Sprite));\r\nexport { Rectangle };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Rectangle\"] = Rectangle;\r\n//# sourceMappingURL=Rectangle.js.map","/**\r\n * Resize button module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Button } from \"./Button\";\r\nimport { Sprite } from \"../Sprite\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $path from \"../rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a draggable resize/grip button.\r\n *\r\n * @see {@link IResizeButtonEvents} for a list of available events\r\n * @see {@link IResizeButtonAdapters} for a list of available Adapters\r\n */\r\nvar ResizeButton = /** @class */ (function (_super) {\r\n __extends(ResizeButton, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ResizeButton() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"ResizeButton\";\r\n // Set defaults\r\n _this.orientation = \"horizontal\";\r\n _this.layout = \"absolute\";\r\n _this.horizontalCenter = \"middle\";\r\n _this.verticalCenter = \"middle\";\r\n _this.draggable = true;\r\n _this.padding(8, 8, 8, 8);\r\n _this.background.cornerRadius(20, 20, 20, 20);\r\n // Create an icon\r\n var icon = new Sprite();\r\n icon.element = _this.paper.add(\"path\");\r\n var path = $path.moveTo({ x: -2, y: -6 });\r\n path += $path.lineTo({ x: -2, y: 6 });\r\n path += $path.moveTo({ x: 2, y: -6 });\r\n path += $path.lineTo({ x: 2, y: 6 });\r\n icon.path = path;\r\n icon.pixelPerfect = true;\r\n icon.padding(0, 4, 0, 4);\r\n icon.stroke = new InterfaceColorSet().getFor(\"alternativeText\");\r\n icon.strokeOpacity = 0.7;\r\n //icon.align = \"center\";\r\n //icon.valign = \"middle\";\r\n _this.icon = icon;\r\n _this.label.dispose();\r\n _this.label = undefined;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(ResizeButton.prototype, \"orientation\", {\r\n /**\r\n * Use for setting of direction (orientation) of the resize button.\r\n *\r\n * Available options: \"horizontal\", \"vertical\".\r\n *\r\n * @param value Orientation\r\n */\r\n set: function (value) {\r\n var icon = this.icon;\r\n if (icon) {\r\n if (value == \"horizontal\") {\r\n icon.rotation = 0;\r\n }\r\n else {\r\n icon.rotation = -90;\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ResizeButton;\r\n}(Button));\r\nexport { ResizeButton };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ResizeButton\"] = ResizeButton;\r\n//# sourceMappingURL=ResizeButton.js.map","/**\r\n * Rounded rectangle module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../Sprite\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $utils from \"../utils/Utils\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws a rectangle with rounded corners.\r\n *\r\n * @see {@link IRoundedRectangleEvents} for a list of available events\r\n * @see {@link IRoundedRectangleAdapters} for a list of available Adapters\r\n */\r\nvar RoundedRectangle = /** @class */ (function (_super) {\r\n __extends(RoundedRectangle, _super);\r\n /**\r\n * Constructor\r\n */\r\n function RoundedRectangle() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"RoundedRectangle\";\r\n _this.element = _this.paper.add(\"path\");\r\n _this.cornerRadius(3, 3, 3, 3);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n RoundedRectangle.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n var w = this.innerWidth;\r\n var h = this.innerHeight;\r\n if ($type.isNumber(w) && $type.isNumber(h)) {\r\n var minSide = $math.min(w, h) / 2;\r\n var cornerRadiusTopLeft = $utils.relativeToValue(this.cornerRadiusTopLeft, minSide);\r\n var cornerRadiusTopRight = $utils.relativeToValue(this.cornerRadiusTopRight, minSide);\r\n var cornerRadiusBottomRight = $utils.relativeToValue(this.cornerRadiusBottomRight, minSide);\r\n var cornerRadiusBottomLeft = $utils.relativeToValue(this.cornerRadiusBottomLeft, minSide);\r\n var maxcr = $math.min(Math.abs(w / 2), Math.abs(h / 2));\r\n var crtl = $math.fitToRange(cornerRadiusTopLeft, 0, maxcr);\r\n var crtr = $math.fitToRange(cornerRadiusTopRight, 0, maxcr);\r\n var crbr = $math.fitToRange(cornerRadiusBottomRight, 0, maxcr);\r\n var crbl = $math.fitToRange(cornerRadiusBottomLeft, 0, maxcr);\r\n var lineT = \"M\" + crtl + \",0 L\" + (w - crtr) + \",0\";\r\n var lineB = \" L\" + crbl + \",\" + h;\r\n var lineL = \" L0,\" + crtl;\r\n var lineR = \" L\" + w + \",\" + (h - crbr);\r\n var arcTR = \" a\" + crtr + \",\" + crtr + \" 0 0 1 \" + crtr + \",\" + crtr;\r\n var arcBR = \" a\" + crbr + \",\" + crbr + \" 0 0 1 -\" + crbr + \",\" + crbr;\r\n var arcBL = \" a\" + crbl + \",\" + crbl + \" 0 0 1 -\" + crbl + \",-\" + crbl;\r\n var arcTL = \" a\" + crtl + \",\" + crtl + \" 0 0 1 \" + crtl + \",-\" + crtl;\r\n var path = lineT + arcTR + lineR + arcBR + lineB + arcBL + lineL + arcTL + \" Z\";\r\n this.path = path;\r\n }\r\n };\r\n /**\r\n * Sets radius for all four corners at ones.\r\n *\r\n * All numbers are in pixels.\r\n *\r\n * @param tl Top-left corner\r\n * @param tr Top-right corner\r\n * @param bl Bottom-left corner\r\n * @param br Bottom-right corner\r\n */\r\n RoundedRectangle.prototype.cornerRadius = function (tl, tr, bl, br) {\r\n this.cornerRadiusTopLeft = tl;\r\n this.cornerRadiusTopRight = tr;\r\n this.cornerRadiusBottomLeft = bl;\r\n this.cornerRadiusBottomRight = br;\r\n };\r\n Object.defineProperty(RoundedRectangle.prototype, \"cornerRadiusTopLeft\", {\r\n /**\r\n * @return Radius (px or Percent)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"cornerRadiusTopLeft\");\r\n },\r\n /**\r\n * Radius of the top-left corner in pixels.\r\n *\r\n * @default 3\r\n * @param value Radius (px or Percent)\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"cornerRadiusTopLeft\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RoundedRectangle.prototype, \"cornerRadiusTopRight\", {\r\n /**\r\n * @return Radius (px or Percent)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"cornerRadiusTopRight\");\r\n },\r\n /**\r\n * Radius of the top-right corner in pixels.\r\n *\r\n * @default 3\r\n * @param value Radius (px or Percent)\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"cornerRadiusTopRight\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RoundedRectangle.prototype, \"cornerRadiusBottomRight\", {\r\n /**\r\n * @return Radius (px or Percent)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"cornerRadiusBottomRight\");\r\n },\r\n /**\r\n * Radius of the bottom-right corner in pixels.\r\n *\r\n * @default 3\r\n * @param value Radius (px or Percent)\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"cornerRadiusBottomRight\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RoundedRectangle.prototype, \"cornerRadiusBottomLeft\", {\r\n /**\r\n * @return Radius (px or Percent)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"cornerRadiusBottomLeft\");\r\n },\r\n /**\r\n * Radius of the bottom-left corner in pixels.\r\n *\r\n * @default 3\r\n * @param value Radius (px or Percent)\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"cornerRadiusBottomLeft\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Measures the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n RoundedRectangle.prototype.measureElement = function () {\r\n };\r\n Object.defineProperty(RoundedRectangle.prototype, \"bbox\", {\r\n /**\r\n * Returns bounding box (square) for this element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n get: function () {\r\n if (this.definedBBox) {\r\n return this.definedBBox;\r\n }\r\n if (this.isMeasured) {\r\n return {\r\n x: 0,\r\n y: 0,\r\n width: this.innerWidth,\r\n height: this.innerHeight\r\n };\r\n }\r\n else {\r\n return { x: 0, y: 0, width: 0, height: 0 };\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return RoundedRectangle;\r\n}(Sprite));\r\nexport { RoundedRectangle };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"RoundedRectangle\"] = RoundedRectangle;\r\n//# sourceMappingURL=RoundedRectangle.js.map","/**\r\n * Provides functionality used to build scrollbars.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../Container\";\r\nimport { ResizeButton } from \"../elements/ResizeButton\";\r\nimport { Button } from \"../elements/Button\";\r\nimport { getInteraction } from \"../interaction/Interaction\";\r\nimport { MouseCursorStyle } from \"../interaction/Mouse\";\r\nimport { RoundedRectangle } from \"../elements/RoundedRectangle\";\r\nimport { registry } from \"../Registry\";\r\nimport { keyboard } from \"../utils/Keyboard\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { percent, Percent } from \"../utils/Percent\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $ease from \"../utils/Ease\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $utils from \"../utils/Utils\";\r\n;\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Scrollbar is a generic control allowing to select a range of values or pan\r\n * the selection.\r\n *\r\n * @see {@link IScrollbarEvents} for a list of available events\r\n * @see {@link IScrollbarAdapters} for a list of available Adapters\r\n */\r\nvar Scrollbar = /** @class */ (function (_super) {\r\n __extends(Scrollbar, _super);\r\n /**\r\n * Construtor\r\n */\r\n function Scrollbar() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Previously selected lower (start) value.\r\n */\r\n _this._previousStart = 0;\r\n /**\r\n * Previously selected upper (end) value.\r\n */\r\n _this._previousEnd = 1;\r\n /**\r\n * A value of previously selected lower value, used for doubleclick function.\r\n */\r\n _this._prevStart = 0;\r\n /**\r\n * A value of previously selected upper value, used for doubleclick function.\r\n */\r\n _this._prevEnd = 1;\r\n /**\r\n * Indicates if the Scrollbar is currently \"busy\" (animating and or\r\n * performing zoom by user interaction).\r\n */\r\n _this._isBusy = false;\r\n /**\r\n * [_skipRangeEvents description]\r\n *\r\n * @todo Description\r\n */\r\n _this._skipRangeEvents = false;\r\n /**\r\n * Update the selection when dragging the grips.\r\n *\r\n * If set to `false` selection will be updated only when the grip is\r\n * released.\r\n *\r\n * @default true\r\n */\r\n _this.updateWhileMoving = true;\r\n _this.className = \"Scrollbar\";\r\n _this.minHeight = 12;\r\n _this.minWidth = 12;\r\n _this.animationDuration = 0;\r\n _this.animationEasing = $ease.cubicOut;\r\n _this.margin(10, 10, 10, 10);\r\n var interfaceColors = new InterfaceColorSet();\r\n // background is also container as it might contain graphs, grid, etc\r\n var background = _this.background;\r\n background.cornerRadius(10, 10, 10, 10);\r\n background.fill = interfaceColors.getFor(\"fill\");\r\n background.fillOpacity = 0.5;\r\n // Make system tooltips appear by default\r\n _this.showSystemTooltip = true;\r\n _this.startGrip = new ResizeButton();\r\n _this.endGrip = new ResizeButton();\r\n // Default orientation...\r\n // ... is set in `applyInternalDefaults()` because it accesses `language`\r\n // and should only be started to access when parent is set\r\n // Set events\r\n _this.events.on(\"transformed\", _this.updateThumb, _this, false);\r\n // Initial positions\r\n _this.start = 0;\r\n _this.end = 1;\r\n // Set roles\r\n _this.role = \"scrollbar\";\r\n _this.thumb.role = \"slider\";\r\n _this.thumb.readerLive = \"polite\";\r\n _this.startGrip.role = \"slider\";\r\n _this.endGrip.role = \"slider\";\r\n // otherwise range changed won't be registered\r\n _this.events.once(\"inited\", function () {\r\n _this._previousStart = undefined;\r\n _this.dispatchRangeChange();\r\n }, undefined, false);\r\n _this.hideGrips = false;\r\n _this.orientation = \"horizontal\";\r\n // Min/max values for accessibility\r\n _this.setSVGAttribute({ \"aria-valuemin\": \"0\" });\r\n _this.setSVGAttribute({ \"aria-valuemax\": \"100\" });\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n Scrollbar.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n // Set screen reader tetxt accordingly\r\n if (this.orientation === \"horizontal\") {\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Use TAB to select grip buttons or left and right arrows to change selection\");\r\n }\r\n if (!$type.hasValue(this.thumb.readerDescription)) {\r\n this.thumb.readerDescription = this.language.translate(\"Use left and right arrows to move selection\");\r\n }\r\n if (!$type.hasValue(this.startGrip.readerDescription)) {\r\n this.startGrip.readerDescription = this.language.translate(\"Use left and right arrows to move left selection\");\r\n }\r\n if (!$type.hasValue(this.endGrip.readerDescription)) {\r\n this.endGrip.readerDescription = this.language.translate(\"Use left and right arrows to move right selection\");\r\n }\r\n this.readerOrientation = \"horizontal\";\r\n }\r\n else {\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Use TAB select grip buttons or up and down arrows to change selection\");\r\n }\r\n if (!$type.hasValue(this.thumb.readerDescription)) {\r\n this.thumb.readerDescription = this.language.translate(\"Use up and down arrows to move selection\");\r\n }\r\n if (!$type.hasValue(this.startGrip.readerDescription)) {\r\n this.startGrip.readerDescription = this.language.translate(\"Use up and down arrows to move upper selection\");\r\n }\r\n if (!$type.hasValue(this.endGrip.readerDescription)) {\r\n this.endGrip.readerDescription = this.language.translate(\"Use up and down arrows to move lower selection\");\r\n }\r\n this.readerOrientation = \"vertical\";\r\n }\r\n this.readerControls = this.baseSprite.uidAttr();\r\n };\r\n /**\r\n * Validates the layout of the scrollbar's elements.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Scrollbar.prototype.validateLayout = function () {\r\n this.updateSize();\r\n _super.prototype.validateLayout.call(this);\r\n // when size changes, need to update extremes\r\n this.updateExtremes();\r\n };\r\n /**\r\n * Update background for the scrollbar.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Scrollbar.prototype.processBackground = function () {\r\n _super.prototype.processBackground.call(this);\r\n var background = this.background;\r\n background.clickable = true;\r\n background.events.on(\"hit\", this.handleBgHit, this, undefined);\r\n };\r\n /**\r\n * Zooms to the particular place when clicked/tapped on the scrollbar\r\n * background.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\r\n Scrollbar.prototype.handleBgHit = function (event) {\r\n this.makeBusy();\r\n var point = event.spritePoint;\r\n point = $utils.spritePointToSprite(point, this.background, this);\r\n var thumb = this.thumb;\r\n if (this.orientation == \"horizontal\") {\r\n var thumbX = point.x - thumb.pixelWidth / 2;\r\n thumbX = $math.fitToRange(thumbX, 0, this.innerWidth - thumb.pixelWidth);\r\n this._thumbAnimation = thumb.animate({ property: \"x\", to: thumbX }, this.animationDuration, this.animationEasing);\r\n }\r\n else {\r\n var thumbY = point.y - thumb.pixelHeight / 2;\r\n thumbY = $math.fitToRange(thumbY, 0, this.innerHeight - thumb.pixelHeight);\r\n this._thumbAnimation = thumb.animate({ property: \"y\", to: thumbY }, this.animationDuration, this.animationEasing);\r\n }\r\n if (this.animationDuration > 0) {\r\n this._thumbAnimation.events.on(\"animationended\", this.makeUnbusy, this, false);\r\n }\r\n else {\r\n this._thumb.validate();\r\n this.makeUnbusy();\r\n }\r\n };\r\n /**\r\n * Set scrollbar as busy. (currently zooming)\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Scrollbar.prototype.makeBusy = function () {\r\n this._isBusy = true;\r\n this._skipRangeEvents = false;\r\n if (this._unbusyTimeout) {\r\n this.removeDispose(this._unbusyTimeout);\r\n }\r\n this._unbusyTimeout = undefined;\r\n this.stopAnimations();\r\n };\r\n /**\r\n * Stops all animations, currently playing for the scrollbar.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Scrollbar.prototype.stopAnimations = function () {\r\n if (this._thumbAnimation) {\r\n this._thumbAnimation.stop(true);\r\n }\r\n if (this._zoomAnimation) {\r\n this._zoomAnimation.stop(true);\r\n }\r\n };\r\n /**\r\n * Cancels \"busy\" status of the Scrollbar.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Scrollbar.prototype.makeUnbusy = function () {\r\n /**\r\n * We cannot make Scrollbar not busy right after release, because then axes\r\n * will take over controll and Scrollbar will start to animate.\r\n * Theorethically, it's not right to set timeout by `animationDuration`,\r\n * however we can not know all the durations of elements we scroll, so we\r\n * assume that animation duration will be the same as\r\n * `interpolationDuration` or `rangeChange` duration.\r\n */\r\n this._unbusyTimeout = this.setTimeout(this.makeUnbusyReal.bind(this), this.animationDuration * 1.1);\r\n };\r\n /**\r\n * [makeUnbusyReal description]\r\n *\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n */\r\n Scrollbar.prototype.makeUnbusyReal = function () {\r\n this._usingGrip = undefined;\r\n this._isBusy = false;\r\n if (!this.updateWhileMoving) {\r\n this.dispatchRangeChange();\r\n }\r\n };\r\n /**\r\n * Disptatches rangechanged event if it really changed\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Scrollbar.prototype.dispatchRangeChange = function () {\r\n if (this._previousEnd != this.end || this._previousStart != this.start) {\r\n this._previousStart = this.start;\r\n this._previousEnd = this.end;\r\n this.dispatch(\"rangechanged\");\r\n }\r\n };\r\n /**\r\n * Updates the \"thumb\" element. A draggable element between the grips.\r\n */\r\n Scrollbar.prototype.updateThumb = function () {\r\n if (!this.parent) {\r\n return;\r\n }\r\n var thumb = this.thumb;\r\n var start = this.start;\r\n var end = this.end;\r\n var startGrip = this.startGrip;\r\n var endGrip = this.endGrip;\r\n if (this.orientation == \"horizontal\") {\r\n var innerWidth_1 = this.innerWidth;\r\n thumb.width = innerWidth_1 * (end - start);\r\n thumb.maxX = innerWidth_1 - thumb.pixelWidth;\r\n thumb.x = start * innerWidth_1;\r\n startGrip.moveTo({ x: thumb.pixelX, y: 0 }, undefined, undefined, true); // overrides dragging\r\n endGrip.moveTo({ x: thumb.pixelX + thumb.pixelWidth, y: 0 }, undefined, undefined, true);\r\n startGrip.readerTitle = this.language.translate(\"From %1\", undefined, this.adapter.apply(\"positionValue\", {\r\n value: Math.round(start * 100) + \"%\",\r\n position: start\r\n }).value);\r\n startGrip.readerValueNow = \"\" + Math.round(start * 100);\r\n startGrip.readerValueText = startGrip.readerTitle;\r\n endGrip.readerTitle = this.language.translate(\"To %1\", undefined, this.adapter.apply(\"positionValue\", {\r\n value: Math.round(end * 100) + \"%\",\r\n position: end\r\n }).value);\r\n endGrip.readerValueNow = \"\" + Math.round(end * 100);\r\n endGrip.readerValueText = endGrip.readerTitle;\r\n }\r\n else {\r\n var innerHeight_1 = this.innerHeight;\r\n thumb.height = innerHeight_1 * (end - start);\r\n thumb.maxY = innerHeight_1 - thumb.pixelHeight;\r\n thumb.y = (1 - end) * innerHeight_1;\r\n startGrip.moveTo({ x: 0, y: thumb.pixelY + thumb.pixelHeight }, undefined, undefined, true);\r\n endGrip.moveTo({ x: 0, y: thumb.pixelY }, undefined, undefined, true);\r\n startGrip.readerTitle = this.language.translate(\"To %1\", undefined, this.adapter.apply(\"positionValue\", {\r\n value: Math.round((1 - start) * 100) + \"%\",\r\n position: (1 - start)\r\n }).value);\r\n startGrip.readerValueNow = \"\" + Math.round(start * 100);\r\n startGrip.readerValueText = startGrip.readerTitle;\r\n endGrip.readerTitle = this.language.translate(\"From %1\", undefined, this.adapter.apply(\"positionValue\", {\r\n value: Math.round((1 - end) * 100) + \"%\",\r\n position: (1 - end)\r\n }).value);\r\n endGrip.readerValueNow = \"\" + Math.round(end * 100);\r\n endGrip.readerValueText = endGrip.readerTitle;\r\n }\r\n // Add accessibility\r\n thumb.readerTitle = this.language.translate(\"From %1 to %2\", undefined, this.adapter.apply(\"positionValue\", {\r\n value: Math.round(start * 100) + \"%\",\r\n position: start\r\n }).value, this.adapter.apply(\"positionValue\", {\r\n value: Math.round(end * 100) + \"%\",\r\n position: end\r\n }).value);\r\n thumb.readerValueNow = \"\" + Math.round(start * 100);\r\n thumb.readerValueText = thumb.readerTitle;\r\n this.readerValueNow = \"\" + Math.round(start * 100);\r\n this.readerValueText = thumb.readerTitle;\r\n if (!this._skipRangeEvents && this.updateWhileMoving) {\r\n this.dispatchRangeChange();\r\n }\r\n };\r\n /**\r\n * Updates extremes of the scrollbar.\r\n */\r\n Scrollbar.prototype.updateExtremes = function () {\r\n var orientation = this.orientation;\r\n var minX = 0;\r\n var minY = 0;\r\n var maxX = 0;\r\n var maxY = 0;\r\n if (orientation == \"horizontal\") {\r\n maxX = this.innerWidth;\r\n minY = maxY = this.innerHeight / 2;\r\n }\r\n else {\r\n maxY = this.innerHeight;\r\n minX = maxX = this.innerWidth / 2;\r\n }\r\n var startGrip = this.startGrip;\r\n startGrip.minX = minX;\r\n startGrip.maxX = maxX;\r\n startGrip.minY = minY;\r\n startGrip.maxY = maxY;\r\n var endGrip = this.endGrip;\r\n endGrip.minX = minX;\r\n endGrip.maxX = maxX;\r\n endGrip.minY = minY;\r\n endGrip.maxY = maxY;\r\n var thumb = this.thumb;\r\n thumb.minX = minX;\r\n thumb.maxX = maxX;\r\n thumb.minY = minY;\r\n thumb.maxY = maxY;\r\n };\r\n /**\r\n * Updates size of the scrollbar.\r\n */\r\n Scrollbar.prototype.updateSize = function () {\r\n var orientation = this.orientation;\r\n var startGrip = this.startGrip;\r\n if (startGrip) {\r\n startGrip.orientation = orientation;\r\n }\r\n if (this.endGrip) {\r\n this.endGrip.orientation = orientation;\r\n }\r\n var thumb = this.thumb;\r\n if (thumb) {\r\n if (orientation == \"horizontal\") {\r\n if (!$type.isNumber(this._pixelWidth)) {\r\n if (!(this.width instanceof Percent)) {\r\n this.width = percent(100);\r\n }\r\n }\r\n // this teorethically might be wrong, if user indeed sets height of a horizontal scrollbar in percent\r\n // however without this height might be equal to 100% if previous orientation was set to horizontal\r\n // so this is ok solution, in case user really wants to have scrollbar height set in percent,\r\n // he should do this after orientation.\r\n if ($type.hasValue(this.percentHeight)) {\r\n this.height = this.minHeight;\r\n }\r\n thumb.height = this.innerHeight;\r\n thumb.verticalCenter = \"middle\";\r\n thumb.horizontalCenter = \"left\";\r\n }\r\n else {\r\n if (!$type.isNumber(this._pixelHeight)) {\r\n if (!(this.height instanceof Percent)) {\r\n this.height = percent(100);\r\n }\r\n }\r\n // same as above with percentHeight\r\n if ($type.hasValue(this.percentWidth)) {\r\n this.width = this.minWidth;\r\n }\r\n thumb.width = this.innerWidth;\r\n thumb.verticalCenter = \"top\";\r\n thumb.horizontalCenter = \"middle\";\r\n }\r\n }\r\n };\r\n Object.defineProperty(Scrollbar.prototype, \"isBusy\", {\r\n /**\r\n * Indicates if the Scrollbar is currently \"busy\" (animating and or\r\n * performing zoom by user interaction).\r\n * @return boolean\r\n */\r\n get: function () {\r\n return this._isBusy;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Scrollbar.prototype, \"start\", {\r\n /**\r\n * @return Position (0-1)\r\n */\r\n get: function () {\r\n return Math.min(this.getPosition(this._start), this.getPosition(this._end));\r\n },\r\n /**\r\n * ==========================================================================\r\n * POSITIONS\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Relative position (0-1) of the start grip.\r\n *\r\n * @param position Position (0-1)\r\n */\r\n set: function (position) {\r\n if (!this._isBusy) {\r\n this.__start = position;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Scrollbar.prototype, \"__start\", {\r\n /**\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this._start;\r\n },\r\n /**\r\n * [__start description]\r\n *\r\n * @todo Description\r\n * @param position [description]\r\n */\r\n set: function (position) {\r\n this._start = this.getPosition(position);\r\n this.updateThumb();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Scrollbar.prototype, \"end\", {\r\n /**\r\n * @return Position (0-1)\r\n */\r\n get: function () {\r\n return Math.max(this.getPosition(this._start), this.getPosition(this._end));\r\n },\r\n /**\r\n * Relative position (0-1) of the end grip.\r\n *\r\n * @param position Position (0-1)\r\n */\r\n set: function (position) {\r\n if (!this._isBusy) {\r\n this.__end = position;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Scrollbar.prototype, \"__end\", {\r\n /**\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this._end;\r\n },\r\n /**\r\n * [__end description]\r\n *\r\n * @todo Description\r\n * @param position [description]\r\n */\r\n set: function (position) {\r\n this._end = this.getPosition(position);\r\n this.updateThumb();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Scrollbar.prototype, \"range\", {\r\n /**\r\n * Current selection range.\r\n *\r\n * @readonly\r\n * @return Range\r\n */\r\n get: function () {\r\n return { start: this.start, end: this.end, priority: this._usingGrip };\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Disables range change events.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Scrollbar.prototype.skipRangeEvents = function () {\r\n if (!this._isBusy) {\r\n this._skipRangeEvents = true;\r\n }\r\n };\r\n /**\r\n * [fixRange description]\r\n *\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n * @param range Range\r\n */\r\n Scrollbar.prototype.fixRange = function (range) {\r\n if (range.start != $math.round(this._start, 2) || range.end != $math.round(this._end, 2)) {\r\n this._start = range.start;\r\n this._end = range.end;\r\n this._skipRangeEvents = true;\r\n this.updateThumb();\r\n this._skipRangeEvents = false;\r\n this.thumb.validate();\r\n this.thumb.background.validate();\r\n }\r\n };\r\n /**\r\n * [getPosition description]\r\n *\r\n * @todo Description\r\n * @param position [description]\r\n * @return [description]\r\n */\r\n Scrollbar.prototype.getPosition = function (position) {\r\n return $math.fitToRange($math.round(position, 4), 0, 1);\r\n };\r\n Object.defineProperty(Scrollbar.prototype, \"orientation\", {\r\n /**\r\n * @return Orientation\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"orientation\");\r\n },\r\n /**\r\n * ==========================================================================\r\n * MISC\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Orientation of the scrollbar.\r\n *\r\n * Available options: \"horizontal\" (default) and \"vertical\".\r\n *\r\n * @default \"horizontal\"\r\n * @param value Orientation\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"orientation\", value)) {\r\n // Set mouse cursors and screen reader tetxt accordingly\r\n if (value === \"horizontal\") {\r\n // Mouse styles\r\n this.startGrip.cursorOverStyle = MouseCursorStyle.horizontalResize;\r\n this.endGrip.cursorOverStyle = MouseCursorStyle.horizontalResize;\r\n // Reader text\r\n /*this.readerTitle = this.language.translate(\"Use TAB to select grip buttons or left and right arrows to change selection\");\r\n this.thumb.readerDescription = this.language.translate(\"Use left and right arrows to move selection\");\r\n this.startGrip.readerDescription = this.language.translate(\"Use left and right arrows to move left selection\");\r\n this.endGrip.readerDescription = this.language.translate(\"Use left and right arrows to move right selection\");*/\r\n }\r\n else {\r\n // Mouse styles\r\n this.startGrip.cursorOverStyle = MouseCursorStyle.verticalResize;\r\n this.endGrip.cursorOverStyle = MouseCursorStyle.verticalResize;\r\n // Reader text\r\n /*this.readerTitle = this.language.translate(\"Use TAB select grip buttons or up and down arrows to change selection\");\r\n this.thumb.readerDescription = this.language.translate(\"Use up and down arrows to move selection\");\r\n this.startGrip.readerDescription = this.language.translate(\"Use up and down arrows to move upper selection\");\r\n this.endGrip.readerDescription = this.language.translate(\"Use up and down arrows to move lower selection\");*/\r\n }\r\n this.updateByOrientation();\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n Scrollbar.prototype.updateByOrientation = function () {\r\n };\r\n Object.defineProperty(Scrollbar.prototype, \"startGrip\", {\r\n /**\r\n * @return Grip element\r\n */\r\n get: function () {\r\n return this._startGrip;\r\n },\r\n /**\r\n * ==========================================================================\r\n * GRIPS\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Start grip element. (button)\r\n *\r\n * @param button Grip element\r\n */\r\n set: function (button) {\r\n if (this._startGrip) {\r\n this.removeDispose(this._startGrip);\r\n }\r\n this._startGrip = button;\r\n this.processGrip(button);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Scrollbar.prototype, \"endGrip\", {\r\n /**\r\n * @return Grip element\r\n */\r\n get: function () {\r\n return this._endGrip;\r\n },\r\n /**\r\n * End grip element. (button)\r\n *\r\n * @param button Grip element\r\n */\r\n set: function (button) {\r\n if (this._endGrip) {\r\n this.removeDispose(this._endGrip);\r\n }\r\n this._endGrip = button;\r\n this.processGrip(button);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Decorates the grip button with properties and events.\r\n *\r\n * @ignore Exclude from docs\r\n * @param button Grip button\r\n */\r\n Scrollbar.prototype.processGrip = function (button) {\r\n button.parent = this;\r\n button.isMeasured = false;\r\n button.focusable = true;\r\n button.shouldClone = false;\r\n // Set button defaults\r\n //button.showSystemTooltip = true; // setting this here is not right because we break inheritance\r\n button.zIndex = 100;\r\n button.events.on(\"drag\", this.handleGripDrag, this, false);\r\n button.events.on(\"dragstop\", this.makeUnbusy, this, false);\r\n button.events.on(\"down\", this.makeBusy, this, false);\r\n button.events.on(\"up\", this.makeUnbusy, this, false);\r\n this._disposers.push(button);\r\n };\r\n /**\r\n * Updates positions of related elements after grip element is dragged.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\r\n Scrollbar.prototype.handleGripDrag = function (event) {\r\n this.makeBusy();\r\n if (event.target === this._startGrip) {\r\n this._usingGrip = \"start\";\r\n }\r\n else {\r\n this._usingGrip = \"end\";\r\n }\r\n if (this.orientation == \"horizontal\") {\r\n this._start = this.startGrip.pixelX / this.innerWidth;\r\n this._end = this.endGrip.pixelX / this.innerWidth;\r\n }\r\n else {\r\n this._start = 1 - this.startGrip.pixelY / this.innerHeight;\r\n this._end = 1 - this.endGrip.pixelY / this.innerHeight;\r\n }\r\n this.updateThumb();\r\n };\r\n Object.defineProperty(Scrollbar.prototype, \"thumb\", {\r\n /**\r\n * @return Thumb element\r\n */\r\n get: function () {\r\n if (!this._thumb) {\r\n // Create scrollbar controls (setters will handle adding disposers)\r\n var thumb = new Button();\r\n thumb.background.cornerRadius(10, 10, 10, 10);\r\n thumb.padding(0, 0, 0, 0);\r\n this.thumb = thumb;\r\n }\r\n return this._thumb;\r\n },\r\n /**\r\n * A \"thumb\" element.\r\n *\r\n * It's a draggable square space between the grips, that can be used to\r\n * pan the selection.\r\n *\r\n * @param thumb Thumb element\r\n */\r\n set: function (thumb) {\r\n var _this = this;\r\n if (thumb) {\r\n if (this._thumb) {\r\n this.removeDispose(this._thumb);\r\n }\r\n this._thumb = thumb;\r\n thumb.parent = this;\r\n thumb.isMeasured = false;\r\n thumb.inert = true;\r\n thumb.draggable = true;\r\n thumb.clickable = true;\r\n thumb.hoverable = true;\r\n thumb.focusable = true;\r\n thumb.shouldClone = false;\r\n thumb.zIndex = 0;\r\n // TODO remove closures ?\r\n // Add events\r\n // Add cursor styles to thumb\r\n thumb.cursorOverStyle = MouseCursorStyle.grab;\r\n thumb.cursorDownStyle = MouseCursorStyle.grabbing;\r\n thumb.events.on(\"dragstart\", this.makeBusy, this, false);\r\n thumb.events.on(\"dragstop\", this.makeUnbusy, this, false);\r\n thumb.events.on(\"positionchanged\", this.handleThumbPosition, this, false);\r\n thumb.events.on(\"sizechanged\", this.handleThumbPosition, this, false);\r\n thumb.events.on(\"doublehit\", this.handleDoubleClick, this, false);\r\n // Add event for space and ENTER to toggle full zoom out and back\r\n // (same as doubleclick)\r\n this._disposers.push(getInteraction().body.events.on(\"keyup\", function (ev) {\r\n if (keyboard.isKey(ev.event, [\"space\", \"enter\"]) && _this.thumb.isFocused) {\r\n ev.event.preventDefault();\r\n _this.handleDoubleClick();\r\n }\r\n }));\r\n this._disposers.push(this._thumb);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Zooms-in and out the selection on double-click of the thumb.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Scrollbar.prototype.handleDoubleClick = function () {\r\n this.makeBusy();\r\n var newStart = 0;\r\n var newEnd = 1;\r\n if (this.start != 0 || this.end != 1) {\r\n this._prevStart = this.start;\r\n this._prevEnd = this.end;\r\n }\r\n else {\r\n newStart = this._prevStart;\r\n newEnd = this._prevEnd;\r\n }\r\n var zoomAnimation = this.animate([{ property: \"__start\", to: newStart }, { property: \"__end\", to: newEnd }], this.animationDuration, this.animationEasing);\r\n if (zoomAnimation && !zoomAnimation.isFinished()) {\r\n zoomAnimation.events.on(\"animationended\", this.makeUnbusy, this, false);\r\n this._zoomAnimation = zoomAnimation;\r\n }\r\n else {\r\n this.makeUnbusy();\r\n }\r\n };\r\n /**\r\n * Updates positions of other elements when thumb is moved.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Scrollbar.prototype.handleThumbPosition = function () {\r\n var thumb = this.thumb;\r\n if (this.orientation == \"horizontal\") {\r\n var innerWidth_2 = this.innerWidth;\r\n var w = thumb.innerWidth;\r\n var x = thumb.pixelX;\r\n this._start = x / innerWidth_2;\r\n this._end = (x + w) / innerWidth_2;\r\n this.updateThumb();\r\n }\r\n else {\r\n var innerHeight_2 = this.innerHeight;\r\n var h = thumb.innerHeight;\r\n var y = thumb.pixelY;\r\n this._start = 1 - (y + h) / innerHeight_2;\r\n this._end = 1 - y / innerHeight_2;\r\n this.updateThumb();\r\n }\r\n };\r\n /**\r\n * Creates a background element for the scrollbar.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Background\r\n */\r\n Scrollbar.prototype.createBackground = function () {\r\n return new RoundedRectangle();\r\n };\r\n Object.defineProperty(Scrollbar.prototype, \"hideGrips\", {\r\n /**\r\n * @return Show only on hover?\r\n */\r\n get: function () {\r\n return this._hideGrips;\r\n },\r\n /**\r\n * Use this property to set whether grips should be always visible (`false`),\r\n * or they should just appear on scrollbar hover (`true`).\r\n *\r\n * @param value Show only on hover?\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n this._hideGrips = value;\r\n if (this._overDisposer) {\r\n this.removeDispose(this._overDisposer);\r\n }\r\n if (this._outDisposer) {\r\n this.removeDispose(this._outDisposer);\r\n }\r\n if (value) {\r\n this._overDisposer = this.events.on(\"over\", function () {\r\n _this.startGrip.show();\r\n _this.endGrip.show();\r\n }, undefined, false);\r\n this._outDisposer = this.events.on(\"out\", function () {\r\n _this.startGrip.hide();\r\n _this.endGrip.hide();\r\n }, undefined, false);\r\n this.startGrip.hide();\r\n this.endGrip.hide();\r\n }\r\n else {\r\n this.startGrip.show();\r\n this.endGrip.show();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Scrollbar.prototype, \"animationDuration\", {\r\n /**\r\n * @return Orientation\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"animationDuration\");\r\n },\r\n /**\r\n * Duration in milliseconds of scrollbar animation (happens when user clicks on a background of a scrollbar)\r\n * @default 0\r\n * @param value number\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"animationDuration\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Scrollbar.prototype, \"animationEasing\", {\r\n /**\r\n * @return {Function}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"animationEasing\");\r\n },\r\n /**\r\n * Animation easing function.\r\n * @todo: review description and default\r\n * @default $ease.cubicOut\r\n * @param value (value: number) => number\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"animationEasing\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Adds easing functions to \"function\" fields.\r\n *\r\n * @param field Field name\r\n * @return Assign as function?\r\n */\r\n Scrollbar.prototype.asFunction = function (field) {\r\n return field == \"animationEasing\" || _super.prototype.asIs.call(this, field);\r\n };\r\n return Scrollbar;\r\n}(Container));\r\nexport { Scrollbar };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Scrollbar\"] = Scrollbar;\r\n//# sourceMappingURL=Scrollbar.js.map","/**\r\n * Slice module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../Container\";\r\nimport { Sprite } from \"../Sprite\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $path from \"../rendering/Path\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport { Percent } from \"../utils/Percent\";\r\nimport { RadialGradient } from \"../rendering/fills/RadialGradient\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws a wedged semi-circle - slice. Usually used for Pie/Donut charts.\r\n *\r\n * @see {@link ISliceEvents} for a list of available events\r\n * @see {@link ISliceAdapters} for a list of available Adapters\r\n */\r\nvar Slice = /** @class */ (function (_super) {\r\n __extends(Slice, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Slice() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"Slice\";\r\n // Set defaults\r\n _this.setPropertyValue(\"cornerRadius\", 0);\r\n _this.setPropertyValue(\"startAngle\", 0);\r\n _this.setPercentProperty(\"innerRadius\", 0);\r\n _this.setPercentProperty(\"radius\", 0);\r\n _this.setPropertyValue(\"arc\", 0);\r\n _this.setPropertyValue(\"shiftRadius\", 0);\r\n _this.strokeOpacity = 1;\r\n _this.setPropertyValue(\"layout\", \"none\");\r\n // Create a slice wedge element\r\n _this.slice = _this.createChild(Sprite);\r\n _this.slice.isMeasured = false;\r\n _this._disposers.push(_this.slice);\r\n //this.element.attr({ \"stroke-linejoin\": \"round\" });\r\n //this.element.attr({ \"stroke-linecap\": \"round\" });\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Slice.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n var radiusY = this.radiusY;\r\n if (this.radius > 0 && radiusY == 0) {\r\n radiusY = 0.01;\r\n }\r\n this.slice.path = $path.arc(this.startAngle, this.arc, this.radius, this.pixelInnerRadius, radiusY, this.cornerRadius, this.innerCornerRadius);\r\n this.slice.invalidate();\r\n this.shiftRadius = this.shiftRadius;\r\n if (this.realFill instanceof RadialGradient) {\r\n this.updateGradient(this.realFill);\r\n }\r\n if (this.realStroke instanceof RadialGradient) {\r\n this.updateGradient(this.realStroke);\r\n }\r\n };\r\n Slice.prototype.updateGradient = function (gradient) {\r\n gradient.element.attr({ \"gradientUnits\": \"userSpaceOnUse\" });\r\n gradient.element.attr({ \"r\": this.radius });\r\n gradient.cx = 0;\r\n gradient.cy = 0;\r\n gradient.element.attr({ radius: this.radius });\r\n };\r\n Object.defineProperty(Slice.prototype, \"bbox\", {\r\n /**\r\n * Returns bounding box (square) for this element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n get: function () {\r\n if (this.definedBBox) {\r\n return this.definedBBox;\r\n }\r\n if (this.isMeasured) {\r\n var innerRect = $math.getArcRect(this.startAngle, this.startAngle + this.arc, this.pixelInnerRadius);\r\n var outerRect = $math.getArcRect(this.startAngle, this.startAngle + this.arc, this.radius);\r\n return $math.getCommonRectangle([innerRect, outerRect]);\r\n }\r\n else {\r\n return { x: 0, y: 0, width: 0, height: 0 };\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slice.prototype, \"startAngle\", {\r\n /**\r\n * @return Angle (0-360)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startAngle\");\r\n },\r\n /**\r\n * The angle at which left edge of the slice is drawn. (0-360)\r\n *\r\n * 0 is to the right of the center.\r\n *\r\n * @param value Angle (0-360)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"startAngle\", $math.normalizeAngle(value), true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slice.prototype, \"arc\", {\r\n /**\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"arc\");\r\n },\r\n /**\r\n * [arc description]\r\n *\r\n * @todo Description\r\n * @param value [description]\r\n */\r\n set: function (value) {\r\n if (!$type.isNumber(value)) {\r\n value = 0;\r\n }\r\n this.setPropertyValue(\"arc\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slice.prototype, \"radius\", {\r\n /**\r\n * @return Radius (px)\r\n */\r\n get: function () {\r\n var radius = this.getPropertyValue(\"radius\");\r\n if (!$type.isNumber(radius)) {\r\n radius = 0;\r\n }\r\n return radius;\r\n },\r\n /**\r\n * Radius of the slice in pixels.\r\n *\r\n * @param value Radius (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"radius\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slice.prototype, \"radiusY\", {\r\n /**\r\n * @return Vertical radius (0-1)\r\n */\r\n get: function () {\r\n var value = this.getPropertyValue(\"radiusY\");\r\n if (!$type.isNumber(value)) {\r\n value = this.radius;\r\n }\r\n return value;\r\n },\r\n /**\r\n * Vertical radius for creating skewed slices.\r\n *\r\n * This is relevant to `radius`, e.g. 0.5 will set vertical radius to half\r\n * the `radius`.\r\n *\r\n * @param value Vertical radius (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"radiusY\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slice.prototype, \"innerRadius\", {\r\n /**\r\n * @return Radius (px or %)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"innerRadius\");\r\n },\r\n /**\r\n * Inner radius of the slice for creating cut out (donut) slices.\r\n *\r\n * @default 0\r\n * @param value Radius (px or %)\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slice.prototype, \"pixelInnerRadius\", {\r\n /**\r\n * @return Radius px\r\n */\r\n get: function () {\r\n return $utils.relativeToValue(this.innerRadius, this.radius);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slice.prototype, \"cornerRadius\", {\r\n /**\r\n * @return Radius (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"cornerRadius\");\r\n },\r\n /**\r\n * Radius of slice's outer corners in pixels.\r\n *\r\n * @default 0\r\n * @param value Radius (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"cornerRadius\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slice.prototype, \"innerCornerRadius\", {\r\n /**\r\n * @return Radius (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"innerCornerRadius\");\r\n },\r\n /**\r\n * Radius of slice's inner corners in pixels.\r\n *\r\n * @default 0\r\n * @param value Radius (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"innerCornerRadius\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slice.prototype, \"shiftRadius\", {\r\n /**\r\n * @return Radius shift\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"shiftRadius\");\r\n },\r\n /**\r\n * Indicates how far (relatively to center) a slice should be moved.\r\n *\r\n * The value is relative to the radius of the slice. Meaning 0 no shift,\r\n * 1 - slice shifted outside by whole of its radius.\r\n *\r\n * @param value Radius shift\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"shiftRadius\", value);\r\n value = this.getPropertyValue(\"shiftRadius\");\r\n this.dx = value * this.radius * this.ix;\r\n this.dy = value * this.radiusY * this.iy;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slice.prototype, \"ix\", {\r\n /**\r\n * [ix description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @return [description]\r\n */\r\n get: function () {\r\n return $math.cos(this.middleAngle);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slice.prototype, \"iy\", {\r\n /**\r\n * [iy description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @return [description]\r\n */\r\n get: function () {\r\n return $math.sin(this.middleAngle);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slice.prototype, \"middleAngle\", {\r\n /**\r\n * An angle of the slice's middle.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Angle\r\n */\r\n get: function () {\r\n return this.startAngle + this.arc / 2;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * X coordinate for the slice tooltip.\r\n *\r\n * @return X\r\n */\r\n Slice.prototype.getTooltipX = function () {\r\n var value = this.getPropertyValue(\"tooltipX\");\r\n if ($type.isNumber(value)) {\r\n return value;\r\n }\r\n var p = 0.5;\r\n if (value instanceof Percent) {\r\n p = value.value;\r\n }\r\n var innerRadius = $utils.relativeToValue(this.innerRadius, this.radius);\r\n return this.ix * (innerRadius + (this.radius - innerRadius) * p);\r\n };\r\n /**\r\n * Y coordinate for the slice tooltip.\r\n *\r\n * @return Y\r\n */\r\n Slice.prototype.getTooltipY = function () {\r\n var value = this.getPropertyValue(\"tooltipY\");\r\n if ($type.isNumber(value)) {\r\n return value;\r\n }\r\n var p = 0.5;\r\n if (value instanceof Percent) {\r\n p = value.value;\r\n }\r\n var innerRadius = $utils.relativeToValue(this.innerRadius, this.radius);\r\n return this.iy * (innerRadius + (this.radius - innerRadius) * p) + this.slice.dy;\r\n };\r\n return Slice;\r\n}(Container));\r\nexport { Slice };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Slice\"] = Slice;\r\n//# sourceMappingURL=Slice.js.map","/**\r\n * A module that defines Text element used to indicate links.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Label } from \"../../core/elements/Label\";\r\nimport { MouseCursorStyle } from \"../../core/interaction/Mouse\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { registry } from \"../Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a text element with a link.\r\n *\r\n * @see {@link ITextLinkEvents} for a list of available events\r\n * @see {@link ITextLinkAdapters} for a list of available Adapters\r\n */\r\nvar TextLink = /** @class */ (function (_super) {\r\n __extends(TextLink, _super);\r\n /**\r\n * Constructor\r\n */\r\n function TextLink() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"TextLink\";\r\n _this.selectable = true;\r\n var interfaceColors = new InterfaceColorSet();\r\n _this.fill = interfaceColors.getFor(\"primaryButton\").brighten(0.3);\r\n var hoverState = _this.states.create(\"hover\");\r\n hoverState.properties.fill = interfaceColors.getFor(\"primaryButtonHover\").brighten(0.3);\r\n var downState = _this.states.create(\"down\");\r\n downState.properties.fill = interfaceColors.getFor(\"primaryButtonDown\").brighten(0.3);\r\n _this.cursorOverStyle = MouseCursorStyle.pointer;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return TextLink;\r\n}(Label));\r\nexport { TextLink };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"TextLink\"] = TextLink;\r\n//# sourceMappingURL=TextLink.js.map","/**\r\n * Provides functionality used to creating and showing tooltips (balloons).\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../Container\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { PointedRectangle } from \"./PointedRectangle\";\r\nimport { Label } from \"../elements/Label\";\r\nimport { Animation } from \"../utils/Animation\";\r\nimport { color } from \"../utils/Color\";\r\nimport { DropShadowFilter } from \"../rendering/filters/DropShadowFilter\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $ease from \"../utils/Ease\";\r\nimport * as $utils from \"../utils/Utils\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Tooltip displays text and/or multimedia information in a balloon over chart\r\n * area.\r\n * @see {@link ITooltipEvents} for a list of available events\r\n * @see {@link ITooltipAdapters} for a list of available Adapters\r\n */\r\nvar Tooltip = /** @class */ (function (_super) {\r\n __extends(Tooltip, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Tooltip() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Holds numeric boundary values. Calculated from the `boundingContainer`.\r\n * @ignore\r\n */\r\n _this._boundingRect = { x: -40000, y: -40000, width: 80000, height: 80000 };\r\n /**\r\n * Coordinates tooltip's pointer (stem) should point to.\r\n */\r\n _this._pointTo = { x: 0, y: 0 };\r\n /**\r\n * If set to `true` the pointer/stem of the Tooltip will not go outside\r\n * Tooltip's width or height depending on pointer's orientation.\r\n *\r\n * @default false\r\n */\r\n _this.fitPointerToBounds = false;\r\n /**\r\n * If `tooltipOrientation` is vertical, it can be drawn below or above point\r\n * We need to know this when solving overlapping.\r\n */\r\n _this._verticalOrientation = \"up\";\r\n /**\r\n * @ignore\r\n */\r\n _this.fixDoc = true;\r\n _this.className = \"Tooltip\";\r\n _this.isMeasured = false;\r\n _this.getFillFromObject = true;\r\n _this.margin(5, 5, 5, 5);\r\n _this.defaultState.transitionDuration = 1;\r\n _this.hiddenState.transitionDuration = 1;\r\n // Create chrome/background\r\n var background = _this.background;\r\n background.interactionsEnabled = false;\r\n background.fillOpacity = 0.9;\r\n background.strokeWidth = 1;\r\n background.strokeOpacity = 1;\r\n background.stroke = color(\"#ffffff\");\r\n background.cornerRadius = 3;\r\n background.pointerLength = 6;\r\n background.pointerBaseWidth = 10;\r\n var dropShadow = new DropShadowFilter();\r\n dropShadow.dy = 1;\r\n dropShadow.dx = 1;\r\n dropShadow.opacity = 0.5;\r\n background.filters.push(dropShadow);\r\n _this.autoTextColor = true;\r\n // Create text element\r\n var label = _this.createChild(Label);\r\n label.shouldClone = false;\r\n _this.label = label;\r\n label.padding(7, 12, 4, 12);\r\n label.interactionsEnabled = false;\r\n label.horizontalCenter = \"middle\";\r\n label.fill = color(\"#ffffff\");\r\n _this._disposers.push(label);\r\n _this.label.events.on(\"sizechanged\", _this.drawBackground, _this);\r\n _this.label.zIndex = 1; // @todo remove this line when bg sorting is solved\r\n // Set defaults\r\n _this.pointerOrientation = \"vertical\";\r\n _this.animationDuration = 0;\r\n _this.animationEasing = $ease.cubicOut;\r\n _this.setPropertyValue(\"showInViewport\", false);\r\n // Set accessibility options\r\n _this.role = \"tooltip\";\r\n _this.visible = false;\r\n _this.opacity = 0;\r\n _this.x = 0;\r\n _this.y = 0;\r\n _this.events.on(\"visibilitychanged\", _this.handleVisibility, _this);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Tooltip.prototype.handleVisibility = function () {\r\n if (this.visible) {\r\n this.label.invalidate();\r\n }\r\n };\r\n Object.defineProperty(Tooltip.prototype, \"getStrokeFromObject\", {\r\n /**\r\n * Specifies if tooltip background should get stroke color from the sprite it is pointing to.\r\n *\r\n * @return {boolean}\r\n * @default false\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"getStrokeFromObject\");\r\n },\r\n /**\r\n * Specifies if tooltip background should get stroke color from the sprite it is pointing to.\r\n *\r\n * @param value boolean\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"getStrokeFromObject\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Tooltip.prototype, \"autoTextColor\", {\r\n /**\r\n * @return {boolean}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"autoTextColor\");\r\n },\r\n /**\r\n * Specifies if text color should be chosen automatically for a better\r\n * readability.\r\n *\r\n * IMPORTANT: this feature is generally ignored, if `getFillFromObject = false`.\r\n *\r\n * If inheriting of `fill` color from object tooltip is displayed for is\r\n * disabled, this feature will not work. If you are explicitly setting a\r\n * color for tooltip background, you may set a color for its label as well\r\n * using `tooltip.label.fill` property.\r\n *\r\n *\r\n * @param value boolean\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"autoTextColor\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Tooltip.prototype, \"keepTargetHover\", {\r\n /**\r\n * @return Keep target hovered?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"keepTargetHover\");\r\n },\r\n /**\r\n * If this tooltip is displayed on hover on some other object, keep that\r\n * element hovered if hovering on the tooltip.\r\n *\r\n * @default false\r\n * @since 4.1.13\r\n * @param value Keep target hovered?\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n if (this.setPropertyValue(\"keepTargetHover\", value, true)) {\r\n if (value) {\r\n this.hoverable = true;\r\n this.background.interactionsEnabled = true;\r\n this._disposers.push(this.events.on(\"over\", function (ev) {\r\n if (_this.targetSprite && _this.targetSprite.hoverable) {\r\n _this.targetSprite.isHover = true;\r\n }\r\n }));\r\n this._disposers.push(this.events.on(\"out\", function (ev) {\r\n if (_this.targetSprite && _this.targetSprite.hoverable) {\r\n //this.hideTooltip();\r\n //this.targetSprite.handleOut();\r\n _this.targetSprite.isHover = false;\r\n }\r\n }));\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Tooltip.prototype, \"showInViewport\", {\r\n /**\r\n * @return Force showing tooltip?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"showInViewport\");\r\n },\r\n /**\r\n * Normally, a tooltip will hide itself if it is pointing to a coordinate\r\n * that is outside viewport.\r\n *\r\n * Setting this setting to `true` will override that and make tooltip\r\n * appear next to the viewport edge closest to the target point.\r\n *\r\n * @default false\r\n * @since 4.5.7\r\n * @param value Force showing tooltip?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"showInViewport\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Tooltip.prototype, \"getFillFromObject\", {\r\n /**\r\n * Specifies if tooltip background should get fill color from the sprite it is pointing to.\r\n *\r\n * @return {boolean}\r\n * @default true\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"getFillFromObject\");\r\n },\r\n /**\r\n * @param value boolean\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"getFillFromObject\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates and returns a background element.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Background\r\n */\r\n Tooltip.prototype.createBackground = function () {\r\n return new PointedRectangle();\r\n };\r\n Object.defineProperty(Tooltip.prototype, \"pointerOrientation\", {\r\n /**\r\n * @return Orientation\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"pointerOrientation\");\r\n },\r\n /**\r\n * Pointer orientation: `\"horizontal\"`, `\"vertical\"`, `\"up\"`, `\"down\"`,\r\n * `\"right\"`, or `\"left\"`.\r\n *\r\n * Options`\"horizontal\"` or `\"vertical\"` are location-aware, meaning they\r\n * will change position of the Tooltip based on the target point's position\r\n * in relation to chart center.\r\n *\r\n * Options `\"up\"`, `\"down\"`, `\"right\"`, `\"left\"` are static and will point\r\n * in the specified direction regardless of the position, even if that means\r\n * going out of chart/screen bounds.\r\n *\r\n * IMPORTANT: in some situations, like having multiple tooltips stacked for\r\n * multiple series, the `\"up\"` and `\"down\"` values might be ignored in order\r\n * to make tooltip overlap algorithm work.\r\n *\r\n * @default \"vertical\"\r\n * @param value Orientation\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"pointerOrientation\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Tooltip.prototype, \"animationDuration\", {\r\n /**\r\n * @return Orientation\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"animationDuration\");\r\n },\r\n /**\r\n * Duration in milliseconds for the animation to take place when the tooltip\r\n * is moving from one place to another.\r\n *\r\n * @default 0\r\n * @param value number\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"animationDuration\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Tooltip.prototype, \"animationEasing\", {\r\n /**\r\n * @return {Function}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"animationEasing\");\r\n },\r\n /**\r\n * Tooltip animation (moving from one place to another) easing function.\r\n *\r\n * @default $ease.cubicOut\r\n * @param value (value: number) => number\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"animationEasing\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Tooltip.prototype, \"html\", {\r\n /**\r\n * @return HTML content\r\n */\r\n get: function () {\r\n return this.label.html;\r\n },\r\n /**\r\n * HTML content for the Tooltip.\r\n *\r\n * Provided value will be used as is, without applying any further\r\n * formatting to it.\r\n *\r\n * @param value HTML content\r\n */\r\n set: function (value) {\r\n if (this.label.html != value) {\r\n this.label.html = value;\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Tooltip.prototype, \"text\", {\r\n /**\r\n * @return SVG text\r\n */\r\n get: function () {\r\n return this.label.text;\r\n },\r\n /**\r\n * SVG text content for the Tooltip.\r\n *\r\n * Text can have a number of formatting options supported by\r\n * [[TextFormatter]].\r\n *\r\n * @param value SVG text\r\n */\r\n set: function (value) {\r\n if (this.label.text != value) {\r\n this.label.text = value;\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates the Tooltip.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Tooltip.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n var label = this.label;\r\n if (label.invalid) {\r\n label.validate();\r\n }\r\n var x = this._pointTo.x;\r\n var y = this._pointTo.y;\r\n var boundingRect = this._boundingRect;\r\n var textW = label.measuredWidth;\r\n var textH = label.measuredHeight;\r\n var pointerLength = this.background.pointerLength;\r\n var textX;\r\n var textY;\r\n if (this.ignoreBounds) {\r\n boundingRect = undefined;\r\n }\r\n // try to handle if text is wider than br\r\n if (boundingRect && this.fixDoc && textW > boundingRect.width) {\r\n // TODO maybe this isn't needed ?\r\n $utils.spritePointToDocument({ x: boundingRect.x, y: boundingRect.y }, this.parent);\r\n var p1 = $utils.spritePointToDocument({ x: boundingRect.x + boundingRect.width, y: boundingRect.y + boundingRect.height }, this.parent);\r\n var documentWidth = document.body.offsetWidth;\r\n // TODO maybe this isn't needed ?\r\n $utils.used(document.body.offsetHeight);\r\n if (p1.x > documentWidth / 2) {\r\n boundingRect.x = boundingRect.width - textW;\r\n }\r\n else {\r\n boundingRect.width = boundingRect.x + textW;\r\n }\r\n }\r\n var pointerOrientation = this.pointerOrientation;\r\n // horizontal\r\n if (pointerOrientation == \"horizontal\" || pointerOrientation == \"left\" || pointerOrientation == \"right\") {\r\n textY = -textH / 2;\r\n if (pointerOrientation == \"horizontal\") {\r\n if (boundingRect && x > boundingRect.x + boundingRect.width / 2) {\r\n textX = -textW / 2 - pointerLength;\r\n }\r\n else {\r\n textX = textW / 2 + pointerLength;\r\n }\r\n }\r\n else if (pointerOrientation == \"left\") {\r\n textX = textW / 2 + pointerLength;\r\n }\r\n else {\r\n textX = -textW / 2 - pointerLength;\r\n }\r\n }\r\n // vertical pointer\r\n else {\r\n if (boundingRect) {\r\n textX = $math.fitToRange(0, boundingRect.x - x + textW / 2, boundingRect.x - x + boundingRect.width - textW / 2);\r\n }\r\n if (pointerOrientation == \"vertical\") {\r\n if (boundingRect && y > boundingRect.y + textH + pointerLength) {\r\n textY = -textH - pointerLength;\r\n this._verticalOrientation = \"up\";\r\n }\r\n else {\r\n textY = pointerLength;\r\n this._verticalOrientation = \"down\";\r\n }\r\n }\r\n else if (pointerOrientation == \"down\") {\r\n textY = -textH - pointerLength;\r\n this._verticalOrientation = \"up\";\r\n }\r\n else {\r\n textY = pointerLength;\r\n this._verticalOrientation = \"down\";\r\n }\r\n }\r\n if (boundingRect) {\r\n textY = $math.fitToRange(textY, boundingRect.y - y, boundingRect.y + boundingRect.height - textH - y);\r\n }\r\n label.x = textX;\r\n label.y = textY;\r\n this.drawBackground();\r\n };\r\n /**\r\n * Overrides functionality from the superclass.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Tooltip.prototype.updateBackground = function () {\r\n this.group.addToBack(this.background.group);\r\n };\r\n /**\r\n * Draws Tooltip background (chrome, background and pointer/stem).\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Tooltip.prototype.drawBackground = function () {\r\n var label = this.label;\r\n var background = this.background;\r\n var textWidth = label.measuredWidth;\r\n var textHeight = label.measuredHeight;\r\n var boundingRect = this._boundingRect;\r\n var bgWidth = textWidth;\r\n var bgX = label.pixelX - textWidth / 2;\r\n var bgHeight = textHeight;\r\n var bgY = label.pixelY;\r\n var x = this._pointTo.x;\r\n var y = this._pointTo.y;\r\n var boundX1 = boundingRect.x - x;\r\n var boundX2 = boundX1 + boundingRect.width;\r\n var boundY1 = boundingRect.y - y;\r\n var boundY2 = boundY1 + boundingRect.height;\r\n background.x = bgX;\r\n background.y = bgY;\r\n background.width = bgWidth;\r\n background.height = bgHeight;\r\n if (this.fitPointerToBounds) {\r\n background.pointerX = $math.fitToRange(-background.x, boundX1 - background.x, boundX2 - background.x);\r\n background.pointerY = $math.fitToRange(-background.y, boundY1 - background.y, boundY2 - background.y);\r\n }\r\n else {\r\n background.pointerX = -background.x;\r\n background.pointerY = -background.y;\r\n }\r\n background.validate();\r\n };\r\n /**\r\n *\r\n */\r\n Tooltip.prototype.delayedPointTo = function (point, instantly) {\r\n var _this = this;\r\n if (this._pointToDisposer) {\r\n this._pointToDisposer.dispose();\r\n }\r\n this._pointToDisposer = registry.events.once(\"exitframe\", function () {\r\n _this.pointTo(point, instantly);\r\n });\r\n this.addDisposer(this._pointToDisposer);\r\n };\r\n /**\r\n * Set nes tooltip's anchor point and moves whole tooltip.\r\n *\r\n * @param x X coordinate\r\n * @param y Y coordinate\r\n */\r\n Tooltip.prototype.pointTo = function (point, instantly) {\r\n if (this._pointTo.x != point.x || this._pointTo.y != point.y) {\r\n this._pointTo = point;\r\n this.invalidate();\r\n // this helps to avoid strange animation from nowhere on initial show or when balloon was hidden already\r\n if (!this.visible || instantly) {\r\n this.moveTo(this._pointTo);\r\n if (this._animation) {\r\n this._animation.kill();\r\n }\r\n }\r\n else {\r\n // helps to avoid flicker on top/left corner\r\n if (this.pixelX == 0 && this.pixelY == 0) {\r\n this.moveTo(this._pointTo);\r\n }\r\n else {\r\n if (this._animation) {\r\n this._animation.kill();\r\n }\r\n this._animation = new Animation(this, [{ property: \"x\", to: point.x, from: this.pixelX }, { property: \"y\", to: point.y, from: this.pixelY }], this.animationDuration, this.animationEasing).start();\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Sets numeric boundaries Tooltip needs to obey (so it does not go outside\r\n * specific area).\r\n *\r\n * @ignore Exclude from docs\r\n * @param rectangle Boundary rectangle\r\n */\r\n Tooltip.prototype.setBounds = function (rectangle) {\r\n var oldRect = this._boundingRect;\r\n if (oldRect.x != rectangle.x || oldRect.y != rectangle.y || oldRect.width != rectangle.width || oldRect.height != rectangle.height) {\r\n this._boundingRect = rectangle;\r\n this.invalidate();\r\n }\r\n };\r\n Object.defineProperty(Tooltip.prototype, \"boundingContainer\", {\r\n /**\r\n * Sets a [[Container]] instance to be used when calculating numeric\r\n * boundaries for the Tooltip.\r\n *\r\n * @ignore Exclude from docs\r\n * @param container Boundary container\r\n */\r\n set: function (container) {\r\n this._boundingContainer = container;\r\n // TODO remove closures ?\r\n container.events.on(\"sizechanged\", this.updateBounds, this);\r\n container.events.on(\"positionchanged\", this.updateBounds, this);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Updates numeric boundaries for the Tooltip, based on the\r\n * `boundingCountrainer`.\r\n */\r\n Tooltip.prototype.updateBounds = function () {\r\n var boundingContainer = this._boundingContainer;\r\n // to global\r\n var rect = $utils.spriteRectToSvg({\r\n x: boundingContainer.pixelX,\r\n y: boundingContainer.pixelY,\r\n width: boundingContainer.maxWidth,\r\n height: boundingContainer.maxHeight\r\n }, boundingContainer);\r\n this.setBounds(rect);\r\n };\r\n Object.defineProperty(Tooltip.prototype, \"ignoreBounds\", {\r\n /**\r\n * @return Ignore chart bounds?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"ignoreBounds\");\r\n },\r\n /**\r\n * Normally, a tooltip's position will be adjusted so it always fits into\r\n * chart's coundaries.\r\n *\r\n * Setting this to `false` will disable such checks and will allow tooltip\r\n * to \"bleed over\" the edge of the chart.\r\n *\r\n * @default false\r\n * @since 4.10.8\r\n * @param value Ignore chart bounds?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"ignoreBounds\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Tooltip.prototype, \"verticalOrientation\", {\r\n /**\r\n * If tooltipOrientation is vertical, it can be drawn below or above point.\r\n * We need to know this when solving overlapping.\r\n *\r\n * @ignore Exclude from docs\r\n * @return \"up\" | \"down\"\r\n */\r\n get: function () {\r\n return this._verticalOrientation;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Tooltip.prototype, \"tooltip\", {\r\n /**\r\n * To avoid stackoverflow\r\n * @ignore\r\n */\r\n get: function () {\r\n return undefined;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies properties and other attributes.\r\n *\r\n * @param source Source\r\n */\r\n Tooltip.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.label.copyFrom(source.label);\r\n if (source._boundingRect) {\r\n this._boundingRect = source._boundingRect;\r\n }\r\n };\r\n /**\r\n * Adds easing functions to \"function\" fields.\r\n *\r\n * @param field Field name\r\n * @return Assign as function?\r\n */\r\n Tooltip.prototype.asFunction = function (field) {\r\n return field == \"animationEasing\" || _super.prototype.asIs.call(this, field);\r\n };\r\n return Tooltip;\r\n}(Container));\r\nexport { Tooltip };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Tooltip\"] = Tooltip;\r\n//# sourceMappingURL=Tooltip.js.map","/**\r\n * Functionality for drawing a trapezoid.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../Sprite\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $path from \"../rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Used to draw a Trapezoid.\r\n *\r\n * @see {@link ITrapezoidEvents} for a list of available events\r\n * @see {@link ITrapezoidAdapters} for a list of available Adapters\r\n */\r\nvar Trapezoid = /** @class */ (function (_super) {\r\n __extends(Trapezoid, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Trapezoid() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Trapezoid\";\r\n _this.element = _this.paper.add(\"path\");\r\n _this.topSide = percent(100);\r\n _this.bottomSide = percent(100);\r\n _this.leftSide = percent(100);\r\n _this.rightSide = percent(100);\r\n _this.isMeasured = false; // todo: add measureElement\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Trapezoid.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n var w = this.pixelWidth;\r\n var h = this.pixelHeight;\r\n var ts = $utils.relativeToValue(this.topSide, w);\r\n var bs = $utils.relativeToValue(this.bottomSide, w);\r\n var ls = $utils.relativeToValue(this.leftSide, h);\r\n var rs = $utils.relativeToValue(this.rightSide, h);\r\n // 1----2\r\n // | |\r\n // 4----3\r\n var x0 = (w - ts) / 2;\r\n var y0 = (h - ls) / 2;\r\n var x1 = w - (w - ts) / 2;\r\n var y1 = (h - rs) / 2;\r\n var x2 = w - (w - bs) / 2;\r\n var y2 = h - (h - rs) / 2;\r\n var x3 = (w - bs) / 2;\r\n var y3 = h - (h - ls) / 2;\r\n var mt = \"\";\r\n var mr = \"\";\r\n var mb = \"\";\r\n var ml = \"\";\r\n if ($type.hasValue(this.horizontalNeck)) {\r\n var hn = this.horizontalNeck.value;\r\n mt = $path.lineTo({ x: w * hn, y: Math.max(y0, y1) });\r\n mb = $path.lineTo({ x: w * hn, y: Math.min(y2, y3) });\r\n }\r\n if ($type.hasValue(this.verticalNeck)) {\r\n var vn = this.verticalNeck.value;\r\n mr = $path.lineTo({ x: Math.min(x1, x2), y: h * vn });\r\n ml = $path.lineTo({ x: Math.max(x0, x3), y: h * vn });\r\n }\r\n var path = $path.moveTo({ x: x0, y: y0 })\r\n + mt\r\n + $path.lineTo({ x: x1, y: y1 })\r\n + mr\r\n + $path.lineTo({ x: x2, y: y2 })\r\n + mb\r\n + $path.lineTo({ x: x3, y: y3 })\r\n + ml;\r\n this.path = path;\r\n };\r\n Object.defineProperty(Trapezoid.prototype, \"topSide\", {\r\n /**\r\n * @return Width\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"topSide\");\r\n },\r\n /**\r\n * Wdith of the top side. Absolute (px) or relative ([[Percent]]).\r\n *\r\n * @default Percent(100)\r\n * @param value Width\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"topSide\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Trapezoid.prototype, \"bottomSide\", {\r\n /**\r\n * @return Width\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"bottomSide\");\r\n },\r\n /**\r\n * Wdith of the bottom side. Absolute (px) or relative ([[Percent]]).\r\n *\r\n * @default Percent(100)\r\n * @param value Width\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"bottomSide\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Trapezoid.prototype, \"leftSide\", {\r\n /**\r\n * @return Height\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"leftSide\");\r\n },\r\n /**\r\n * Height of the left side. Absolute (px) or relative ([[Percent]]).\r\n *\r\n * @default Percent(100)\r\n * @param value Height\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"leftSide\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Trapezoid.prototype, \"rightSide\", {\r\n /**\r\n * @return Height\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"rightSide\");\r\n },\r\n /**\r\n * Height of the right side. Absolute (px) or relative ([[Percent]]).\r\n *\r\n * @default Percent(100)\r\n * @param value Height\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"rightSide\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Trapezoid.prototype, \"horizontalNeck\", {\r\n /**\r\n * @return Horizontal neck position\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"horizontalNeck\");\r\n },\r\n /**\r\n * A relative vertical position of the \"neck\". If the top and bottom sides\r\n * are of different width, and `horizontalNeck` is set, a choke point\r\n * will be created at that position, creating a funnel shape.\r\n *\r\n * @param value Horizontal neck position\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"horizontalNeck\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Trapezoid.prototype, \"verticalNeck\", {\r\n /**\r\n * @return Vertical neck position\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"verticalNeck\");\r\n },\r\n /**\r\n * A relative horizontal position of the \"neck\". If the left and right sides\r\n * are of different height, and `verticalNeck` is set, a choke point\r\n * will be created at that position, creating a funnel shape.\r\n *\r\n * @param value Vertical neck position\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"verticalNeck\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Trapezoid;\r\n}(Sprite));\r\nexport { Trapezoid };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Trapezoid\"] = Trapezoid;\r\n//# sourceMappingURL=Trapezoid.js.map","/**\r\n * Functionality for drawing triangles.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../Sprite\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $path from \"../rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Used to draw a triangle.\r\n *\r\n * @see {@link ITriangleEvents} for a list of available events\r\n * @see {@link ITriangleAdapters} for a list of available Adapters\r\n */\r\nvar Triangle = /** @class */ (function (_super) {\r\n __extends(Triangle, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Triangle() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Triangle\";\r\n _this.element = _this.paper.add(\"path\");\r\n _this.direction = \"top\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Triangle.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n var w = this.pixelWidth;\r\n var h = this.pixelHeight;\r\n var path;\r\n switch (this.direction) {\r\n case \"right\":\r\n path = $path.moveTo({ x: 0, y: 0 })\r\n + $path.lineTo({ x: w, y: h / 2 })\r\n + $path.lineTo({ x: 0, y: h })\r\n + $path.closePath();\r\n break;\r\n case \"left\":\r\n path = $path.moveTo({ x: w, y: 0 })\r\n + $path.lineTo({ x: 0, y: h / 2 })\r\n + $path.lineTo({ x: w, y: h })\r\n + $path.closePath();\r\n break;\r\n case \"bottom\":\r\n path = $path.moveTo({ x: 0, y: 0 })\r\n + $path.lineTo({ x: w, y: 0 })\r\n + $path.lineTo({ x: w / 2, y: h })\r\n + $path.closePath();\r\n break;\r\n case \"top\":\r\n path = $path.moveTo({ x: w / 2, y: 0 })\r\n + $path.lineTo({ x: w, y: h })\r\n + $path.lineTo({ x: 0, y: h })\r\n + $path.closePath();\r\n break;\r\n }\r\n this.path = path;\r\n };\r\n Object.defineProperty(Triangle.prototype, \"direction\", {\r\n /**\r\n * Returns direction of a triangle\r\n *\r\n * @return value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"direction\");\r\n },\r\n /**\r\n * Sets direction of a triangle\r\n *\r\n * @param value\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"direction\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Triangle;\r\n}(Sprite));\r\nexport { Triangle };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Triangle\"] = Triangle;\r\n//# sourceMappingURL=Triangle.js.map","/**\r\n * Functionality for drawing waved circles.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Circle } from \"./Circle\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $path from \"../rendering/Path\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $smoothing from \"../../core/rendering/Smoothing\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws a waved circle.\r\n *\r\n * @see {@link IWavedCircleEvents} for a list of available events\r\n * @see {@link IWavedCircleAdapters} for a list of available Adapters\r\n */\r\nvar WavedCircle = /** @class */ (function (_super) {\r\n __extends(WavedCircle, _super);\r\n /**\r\n * Constructor\r\n */\r\n function WavedCircle() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"WavedCircle\";\r\n _this.element = _this.paper.add(\"path\");\r\n _this.waveLength = 16;\r\n _this.waveHeight = 4;\r\n _this.fill = undefined;\r\n _this.fillOpacity = 0;\r\n _this.tension = 0.8;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the waved line.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n WavedCircle.prototype.draw = function () {\r\n var path = \"\";\r\n var radius = this.pixelRadius;\r\n if (radius > 0) {\r\n var points = this.getPoints(radius);\r\n path = $path.moveTo(points[0]) + new $smoothing.Tension(this.tension, this.tension).smooth(points);\r\n }\r\n var innerRadius = this.pixelInnerRadius;\r\n if (innerRadius > 0) {\r\n var points = this.getPoints(innerRadius);\r\n points.reverse();\r\n path += $path.moveTo(points[0]) + new $smoothing.Tension(this.tension, this.tension).smooth(points);\r\n }\r\n this.path = path;\r\n };\r\n /**\r\n * Returns points that circle consists of.\r\n *\r\n * @param radius Radius (px)\r\n * @return Points\r\n */\r\n WavedCircle.prototype.getPoints = function (radius) {\r\n var circleLength = radius * Math.PI * 2;\r\n var halfWaveHeight = this.waveHeight / 2;\r\n var waveLength = circleLength / Math.round(circleLength / this.waveLength);\r\n var halfWaveLength = waveLength / 2;\r\n var points = [];\r\n var count = circleLength / waveLength;\r\n for (var i = 0; i <= count; i++) {\r\n var angle1 = (i * waveLength) / circleLength * 360;\r\n var angle2 = (i * waveLength + halfWaveLength) / circleLength * 360;\r\n points.push({ x: (radius - halfWaveHeight) * $math.cos(angle1), y: (radius - halfWaveHeight) * $math.sin(angle1) });\r\n points.push({ x: (radius + halfWaveHeight) * $math.cos(angle2), y: (radius + halfWaveHeight) * $math.sin(angle2) });\r\n }\r\n points.pop();\r\n return points;\r\n };\r\n Object.defineProperty(WavedCircle.prototype, \"innerRadius\", {\r\n /**\r\n * @return Inner radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"innerRadius\");\r\n },\r\n /**\r\n * Inner radius of the circle in pixels (absolute) or [[Percent]] (relative).\r\n *\r\n * @param value Inner radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WavedCircle.prototype, \"pixelInnerRadius\", {\r\n /**\r\n * Calculated inner radius of the circle in pixels.\r\n *\r\n * @readonly\r\n * @return Inner radius (px)\r\n */\r\n get: function () {\r\n return $utils.relativeToValue(this.innerRadius, $math.min(this.innerWidth / 2, this.innerHeight / 2));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WavedCircle.prototype, \"waveLength\", {\r\n /**\r\n * @return Wave length (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"waveLength\");\r\n },\r\n /**\r\n * Wave length in pixels.\r\n *\r\n * @default 16\r\n * @param value Wave length (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"waveLength\", value);\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WavedCircle.prototype, \"waveHeight\", {\r\n /**\r\n * @return Wave height (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"waveHeight\");\r\n },\r\n /**\r\n * Wave height in pixels.\r\n *\r\n * @default 4\r\n * @param value Wave height (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"waveHeight\", value);\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WavedCircle.prototype, \"tension\", {\r\n /**\r\n * @return Tension\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tension\");\r\n },\r\n /**\r\n * Tension of the wave.\r\n *\r\n * @default 0.8\r\n * @param value Tension\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"tension\", value);\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return WavedCircle;\r\n}(Circle));\r\nexport { WavedCircle };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"WavedCircle\"] = WavedCircle;\r\n//# sourceMappingURL=WavedCircle.js.map","/**\r\n * Functionality for drawing waved lines.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Line } from \"./Line\";\r\nimport { color } from \"../utils/Color\";\r\nimport { wavedLine } from \"../rendering/Smoothing\";\r\nimport * as $path from \"../rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws a waved line.\r\n *\r\n * @see {@link IWavedLineEvents} for a list of available events\r\n * @see {@link IWavedLineAdapters} for a list of available Adapters\r\n */\r\nvar WavedLine = /** @class */ (function (_super) {\r\n __extends(WavedLine, _super);\r\n /**\r\n * Constructor\r\n */\r\n function WavedLine() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"WavedLine\";\r\n _this.element = _this.paper.add(\"path\");\r\n _this.waveLength = 16;\r\n _this.waveHeight = 4;\r\n _this.tension = 0.8;\r\n _this.pixelPerfect = false;\r\n _this.fill = color();\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the waved line.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n WavedLine.prototype.draw = function () {\r\n //super.draw();\r\n var p1 = { x: this.x1, y: this.y1 };\r\n var p2 = { x: this.x2, y: this.y2 };\r\n this.path = $path.moveTo(p1) + wavedLine(p1, p2, this.waveLength, this.waveHeight, this.tension, true);\r\n };\r\n Object.defineProperty(WavedLine.prototype, \"waveLength\", {\r\n /**\r\n * @return Wave length (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"waveLength\");\r\n },\r\n /**\r\n * Wave length in pixels.\r\n *\r\n * @default 16\r\n * @param value Wave length (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"waveLength\", value);\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WavedLine.prototype, \"waveHeight\", {\r\n /**\r\n * @return Wave height (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"waveHeight\");\r\n },\r\n /**\r\n * Wave height in pixels.\r\n *\r\n * @default 4\r\n * @param value Wave height (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"waveHeight\", value);\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WavedLine.prototype, \"tension\", {\r\n /**\r\n * @return Tension\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tension\");\r\n },\r\n /**\r\n * Tension of the wave.\r\n *\r\n * @default 0.8\r\n * @param value Tension\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"tension\", value);\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return WavedLine;\r\n}(Line));\r\nexport { WavedLine };\r\n//# sourceMappingURL=WavedLine.js.map","/**\r\n * Functionality for drawing rectangles with waved edges.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Rectangle } from \"./Rectangle\";\r\nimport { wavedLine } from \"../rendering/Smoothing\";\r\nimport * as $path from \"../rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws a rectangle with waved edges.\r\n *\r\n * @see {@link IWavedRectangleEvents} for a list of available events\r\n * @see {@link IWavedRectangleAdapters} for a list of available Adapters\r\n */\r\nvar WavedRectangle = /** @class */ (function (_super) {\r\n __extends(WavedRectangle, _super);\r\n /**\r\n * Constructor\r\n */\r\n function WavedRectangle() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"WavedRectangle\";\r\n // Add path element\r\n _this.element = _this.paper.add(\"path\");\r\n // Set defaults\r\n _this.waveLength = 16;\r\n _this.waveHeight = 4;\r\n _this.tension = 0.8;\r\n _this.setPropertyValue(\"wavedLeft\", true);\r\n _this.setPropertyValue(\"wavedRight\", true);\r\n _this.setPropertyValue(\"wavedTop\", true);\r\n _this.setPropertyValue(\"wavedBottom\", true);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the waved rectangle.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n WavedRectangle.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n var w = this.pixelWidth;\r\n var h = this.pixelHeight;\r\n if (w > 0 && h > 0) {\r\n var p1 = { x: 0, y: 0 };\r\n var p2 = { x: w, y: 0 };\r\n var p3 = { x: w, y: h };\r\n var p4 = { x: 0, y: h };\r\n var waveLengthH = Math.min(w, this.waveLength);\r\n var waveHeightH = Math.min(h, this.waveHeight);\r\n var waveLengthV = Math.min(h, this.waveLength);\r\n var waveHeightV = Math.min(w, this.waveHeight);\r\n var td = \"\";\r\n var rd = \"\";\r\n var bd = \"\";\r\n var ld = \"\";\r\n if (this.wavedTop) {\r\n td = wavedLine(p1, p2, waveLengthH, waveHeightH, this.tension, true);\r\n }\r\n if (this.wavedRight) {\r\n rd = wavedLine(p2, p3, waveLengthV, waveHeightV, this.tension, true);\r\n }\r\n if (this.wavedBottom) {\r\n bd = wavedLine(p3, p4, waveLengthH, waveHeightH, this.tension, true);\r\n }\r\n if (this.wavedLeft) {\r\n ld = wavedLine(p4, p1, waveLengthV, waveHeightV, this.tension, true);\r\n }\r\n this.path = $path.moveTo(p1) + td + $path.lineTo(p2) + rd + $path.lineTo(p3) + bd + $path.lineTo(p4) + ld + \"z\";\r\n }\r\n };\r\n Object.defineProperty(WavedRectangle.prototype, \"waveLength\", {\r\n /**\r\n * @return Wave length (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"waveLength\");\r\n },\r\n /**\r\n * Wave length in pixels.\r\n *\r\n * @default 16\r\n * @param value Wave length (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"waveLength\", value);\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WavedRectangle.prototype, \"waveHeight\", {\r\n /**\r\n * @return Wave height (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"waveHeight\");\r\n },\r\n /**\r\n * Wave height in pixels.\r\n *\r\n * @default 4\r\n * @param value Wave height (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"waveHeight\", value);\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets which side should be waved or not. If particular side is set to\r\n * `false`, a straight line will be drawn on that side.\r\n *\r\n * @param top Top waved?\r\n * @param right Right side waved?\r\n * @param bottom Bottom Waved?\r\n * @param left Left side waved?\r\n */\r\n WavedRectangle.prototype.setWavedSides = function (top, right, bottom, left) {\r\n this.wavedTop = top;\r\n this.wavedRight = right;\r\n this.wavedBottom = bottom;\r\n this.wavedLeft = left;\r\n };\r\n Object.defineProperty(WavedRectangle.prototype, \"tension\", {\r\n /**\r\n * @return Tension\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tension\");\r\n },\r\n /**\r\n * Tension of the wave.\r\n *\r\n * @default 0.8\r\n * @param value Tension\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"tension\", value);\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WavedRectangle.prototype, \"wavedRight\", {\r\n /**\r\n * @return Wave right side?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"wavedRight\");\r\n },\r\n /**\r\n * Specifies if right side should be waved.\r\n *\r\n * @default true\r\n * @param value Waved?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"wavedRight\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WavedRectangle.prototype, \"wavedLeft\", {\r\n /**\r\n * @return Wave left side?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"wavedLeft\");\r\n },\r\n /**\r\n * Specifies if left side should be waved.\r\n *\r\n * @default true\r\n * @param value Waved?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"wavedLeft\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WavedRectangle.prototype, \"wavedTop\", {\r\n /**\r\n * @return Wave top side?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"wavedTop\");\r\n },\r\n /**\r\n * Specifies if top side should be waved.\r\n *\r\n * @default true\r\n * @param value Waved?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"wavedTop\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WavedRectangle.prototype, \"wavedBottom\", {\r\n /**\r\n * @return Wave bottom side?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"wavedBottom\");\r\n },\r\n /**\r\n * Specifies if bottom side should be waved.\r\n *\r\n * @default true\r\n * @param value Waved?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"wavedBottom\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return WavedRectangle;\r\n}(Rectangle));\r\nexport { WavedRectangle };\r\n//# sourceMappingURL=WavedRectangle.js.map","/**\r\n * Zoom out button functionality.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Button } from \"./Button\";\r\nimport { Sprite } from \"../Sprite\";\r\nimport { registry } from \"../Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $path from \"../rendering/Path\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a zoom out button.\r\n *\r\n * @see {@link IZoomOutButtonEvents} for a list of available events\r\n * @see {@link IZoomOutButtonAdapters} for a list of available Adapters\r\n */\r\nvar ZoomOutButton = /** @class */ (function (_super) {\r\n __extends(ZoomOutButton, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ZoomOutButton() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"ZoomOutButton\";\r\n _this.padding(9, 9, 9, 9);\r\n //this.dx = - 5;\r\n //this.dy = 5;\r\n _this.showSystemTooltip = true;\r\n var interfaceColors = new InterfaceColorSet();\r\n var background = _this.background;\r\n background.cornerRadius(20, 20, 20, 20);\r\n background.fill = interfaceColors.getFor(\"primaryButton\");\r\n background.stroke = interfaceColors.getFor(\"primaryButtonStroke\");\r\n background.strokeOpacity = 0;\r\n background.states.getKey(\"hover\").properties.fill = interfaceColors.getFor(\"primaryButtonHover\");\r\n background.states.getKey(\"down\").properties.fill = interfaceColors.getFor(\"primaryButtonActive\");\r\n // Create an icon\r\n var icon = new Sprite();\r\n icon.element = _this.paper.add(\"path\");\r\n var path = $path.moveTo({ x: 0, y: 0 });\r\n path += $path.lineTo({ x: 11, y: 0 });\r\n icon.path = path;\r\n icon.pixelPerfect = true;\r\n icon.padding(8, 3, 8, 3);\r\n icon.stroke = interfaceColors.getFor(\"primaryButtonText\");\r\n _this.icon = icon;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n ZoomOutButton.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Zoom Out\");\r\n }\r\n };\r\n return ZoomOutButton;\r\n}(Button));\r\nexport { ZoomOutButton };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ZoomOutButton\"] = ZoomOutButton;\r\n//# sourceMappingURL=ZoomOutButton.js.map","/**\r\n * Export module.\r\n *\r\n * Parts of Export functionality rely on the following third party libraries:\r\n *\r\n * [canvg.js](https://github.com/canvg/canvg)\r\n * Copyright (c) Gabe Lerner\r\n * Licensed under [MIT](https://github.com/canvg/canvg/blob/master/LICENSE)\r\n *\r\n * [pdfmake](http://pdfmake.org/)\r\n * Copyright (c) 2014 bpampuch\r\n * Licensed under [MIT](https://github.com/bpampuch/pdfmake/blob/master/LICENSE)\r\n *\r\n * [SheetJS Community Edition](https://github.com/sheetjs/js-xlsx)\r\n * Licensed under [Apache License 2.0](https://github.com/SheetJS/js-xlsx/blob/master/LICENSE)\r\n *\r\n * [JSZip](http://stuartk.com/jszip)\r\n * Copyright (c) Stuart Knightley\r\n * Dual licenced under the [MIT license or GPLv3](https://raw.githubusercontent.com/Stuk/jszip/master/LICENSE.markdown).\r\n */\r\nimport { __awaiter, __extends, __generator } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { ExportMenu } from \"./ExportMenu\";\r\nimport { Adapter } from \"../utils/Adapter\";\r\nimport { Sprite } from \"../Sprite\";\r\nimport { Modal } from \"../elements/Modal\";\r\nimport { List } from \"../utils/List\";\r\nimport { Dictionary } from \"../utils/Dictionary\";\r\nimport { DateFormatter } from \"../formatters/DateFormatter\";\r\nimport { DurationFormatter } from \"../formatters/DurationFormatter\";\r\nimport { NumberFormatter } from \"../formatters/NumberFormatter\";\r\nimport { Language } from \"../utils/Language\";\r\nimport { Validatable } from \"../utils/Validatable\";\r\nimport { color } from \"../utils/Color\";\r\nimport { registry } from \"../Registry\";\r\nimport { options } from \"../Options\";\r\nimport { StyleRule, getComputedStyle } from \"../utils/DOM\";\r\nimport * as $browser from \"../utils/Browser\";\r\nimport * as $object from \"../utils/Object\";\r\nimport * as $net from \"../utils/Net\";\r\nimport * as $dom from \"../utils/DOM\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $log from \"../utils/Log\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $array from \"../utils/Array\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $strings from \"../utils/Strings\";\r\n// This is used to cache the pdfmake loading\r\nvar pdfmakePromise;\r\n/**\r\n * Loads pdfmake dynamic module\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Instance of pdfmake\r\n * @async\r\n */\r\nfunction _pdfmake() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var a, pdfmake, vfs_fonts, global;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, Promise.all([\r\n import(/* webpackChunkName: \"pdfmake\" */ \"pdfmake/build/pdfmake.js\"),\r\n import(/* webpackChunkName: \"pdfmake\" */ \"../../pdfmake/vfs_fonts\")\r\n ])];\r\n case 1:\r\n a = _a.sent();\r\n pdfmake = a[0];\r\n vfs_fonts = a[1];\r\n global = window;\r\n global.pdfMake = global.pdfMake || {};\r\n global.pdfMake.vfs = vfs_fonts.default;\r\n pdfmake.vfs = vfs_fonts.default;\r\n return [2 /*return*/, pdfmake];\r\n }\r\n });\r\n });\r\n}\r\n// TODO better parsing\r\nvar fontFamilySrcRegexp = /src: ([^;]+);/;\r\n// TODO better checks\r\nfunction supportsBlobUri() {\r\n return window.navigator.msSaveOrOpenBlob != null;\r\n}\r\n// TODO move into utils or something ?\r\nfunction blobToDataUri(blob) {\r\n return new Promise(function (resolve, reject) {\r\n // TODO handle abort ?\r\n var f = new FileReader();\r\n f.onload = function (e) { resolve(f.result); };\r\n f.onerror = function (e) { reject(e); };\r\n f.readAsDataURL(blob);\r\n });\r\n}\r\nfunction getCssRules(s) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var sheet, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n sheet = s.sheet;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 2, , 4]);\r\n return [2 /*return*/, sheet.cssRules];\r\n case 2:\r\n e_1 = _a.sent();\r\n return [4 /*yield*/, new Promise(function (success, error) {\r\n s.addEventListener(\"load\", function () {\r\n success(sheet.cssRules);\r\n }, true);\r\n s.addEventListener(\"error\", function (e) {\r\n error(e);\r\n }, true);\r\n setTimeout(function () {\r\n error(new Error(\"Timeout while waiting for <style> to load\"));\r\n }, 10000);\r\n })];\r\n case 3: \r\n // Needed because of https://bugzilla.mozilla.org/show_bug.cgi?id=625013\r\n return [2 /*return*/, _a.sent()];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n// This loads a stylesheet by URL and then calls the function with it\r\n// TODO this should be moved into utils or something\r\nfunction loadStylesheet(doc, url, f) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, e_2, s, rules;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, $net.load(url)];\r\n case 1:\r\n response = _a.sent();\r\n return [3 /*break*/, 3];\r\n case 2:\r\n e_2 = _a.sent();\r\n console.error(\"Failed to load stylesheet\", url, e_2);\r\n return [2 /*return*/];\r\n case 3:\r\n s = doc.createElement(\"style\");\r\n s.textContent = response.response;\r\n if (options.nonce != \"\") {\r\n s.setAttribute(\"nonce\", options.nonce);\r\n }\r\n doc.head.appendChild(s);\r\n _a.label = 4;\r\n case 4:\r\n _a.trys.push([4, , 7, 8]);\r\n return [4 /*yield*/, getCssRules(s)];\r\n case 5:\r\n rules = _a.sent();\r\n return [4 /*yield*/, eachStylesheet(doc, url, rules, f)];\r\n case 6:\r\n _a.sent();\r\n return [3 /*break*/, 8];\r\n case 7:\r\n doc.head.removeChild(s);\r\n return [7 /*endfinally*/];\r\n case 8: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n// This calls a function for each CSSRule inside of a CSSStyleSheet.\r\n// If the CSSStyleSheet has any @import, then it will recursively call the function for those CSSRules too.\r\n// TODO this should be moved into utils or something\r\nfunction eachStylesheet(doc, topUrl, rules, f) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var promises, length, i, rule, url;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n promises = [];\r\n length = rules.length;\r\n for (i = 0; i < length; i++) {\r\n rule = rules[i];\r\n if (rule.type === CSSRule.IMPORT_RULE) {\r\n url = rule.href;\r\n if (url) {\r\n url = $utils.joinUrl(topUrl, url);\r\n promises.push(loadStylesheet(doc, url, f));\r\n }\r\n }\r\n else {\r\n f(topUrl, rule);\r\n }\r\n }\r\n if (!promises.length) return [3 /*break*/, 2];\r\n return [4 /*yield*/, Promise.all(promises)];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n// This calls a function for each CSSRule for all of the stylesheets in the page.\r\n// If the CSSStyleSheet has any @import, then it will recursively call the function for those CSSRules too.\r\n// TODO this should be moved into utils or something\r\nfunction eachStylesheets(f) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var iframe, doc_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n iframe = document.createElement(\"iframe\");\r\n // This causes it to use the same origin policy as the parent page\r\n iframe.src = \"about:blank\";\r\n // This tries to make it more accessible for screen readers\r\n iframe.setAttribute(\"title\", \"\");\r\n document.head.appendChild(iframe);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, , 3, 4]);\r\n doc_1 = iframe.contentDocument;\r\n // TODO use $dom.getRoot instead of document ?\r\n return [4 /*yield*/, Promise.all($array.map(document.styleSheets, function (sheet) {\r\n var url = sheet.href;\r\n if (url == null) {\r\n return eachStylesheet(doc_1, location.href, sheet.cssRules, f);\r\n }\r\n else {\r\n url = $utils.joinUrl(location.href, url);\r\n return loadStylesheet(doc_1, url, f);\r\n }\r\n }))];\r\n case 2:\r\n // TODO use $dom.getRoot instead of document ?\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n document.head.removeChild(iframe);\r\n return [7 /*endfinally*/];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * [[Export]] allows downloading of current snapshot of the chart as an\r\n * image, PDF, or its data in various formats.\r\n *\r\n * The export functionality is enabled by default in charts and is accessible\r\n * via API or optional export menu.\r\n *\r\n * To enable menu, simply access export's `menu` property. E.g.:\r\n *\r\n * ```TypeScript\r\n * chart.exporting.menu = new am4core.ExportMenu();\r\n * ```\r\n * ```JavaScript\r\n * chart.exporting.menu = new am4core.ExportMenu();\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"exporting\": {\r\n * \"menu\": {}\r\n * }\r\n * }\r\n * ```\r\n *\r\n * To export via API, use `export()` method:\r\n *\r\n * ```TypeScript\r\n * chart.exporting.export(type, [options]);\r\n * ```\r\n * ```JavaScript\r\n * chart.exporting.export(type, [options]);\r\n * ```\r\n *\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * chart.exporting.export(\"png\");\r\n * ```\r\n * ```JavaScript\r\n * chart.exporting.export(\"png\");\r\n * ```\r\n *\r\n * @todo Better loading indicator?\r\n * @todo Implement multiplier option\r\n * @todo Handling of hanged exports\r\n * @important\r\n */\r\nvar Export = /** @class */ (function (_super) {\r\n __extends(Export, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Export(container) {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Adapter.\r\n */\r\n _this.adapter = new Adapter(_this);\r\n /**\r\n * Holds options for each format.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._formatOptions = new Dictionary();\r\n /**\r\n * Extra [[Sprite]] elements to include in exports.\r\n */\r\n _this._extraSprites = [];\r\n /**\r\n * A list of [[Sprite]] elements that need to be valid before export\r\n * commences.\r\n */\r\n _this._validateSprites = [];\r\n /**\r\n * Holds an array of data field names. If set, exported data fields will try\r\n * to maintain this order.\r\n *\r\n * If not set (default), the export will try to maintain the same order as\r\n * in source data, or as in `dataFields` (if set).\r\n *\r\n * @since 4.9.7\r\n */\r\n _this.dataFieldsOrder = [];\r\n /**\r\n * Indicates whether data fields were generated dynamically (`true`) or\r\n * if they were pre-set by the user (`false`).\r\n */\r\n _this._dynamicDataFields = true;\r\n /**\r\n * Holds a list of objects that were temporarily removed from the DOM while\r\n * exporting. Those most probably are tainted images, or foreign objects that\r\n * would otherwise prevent SVG to be converted to canvas.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._removedObjects = new List();\r\n /**\r\n * Holds references to the objects that were temporarily hidden when export\r\n * started, so that we can reveal them back when export ends.\r\n */\r\n _this._hiddenObjects = [];\r\n /**\r\n * Indicates if non-exportable objects are now hidden;\r\n */\r\n _this._objectsAlreadyHidden = false;\r\n /**\r\n * Exported files will be prefixed with whatever it is set here.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this._filePrefix = \"amCharts\";\r\n /**\r\n * If you are using web fonts (such as Google Fonts), your chart might be\r\n * using them as well.\r\n *\r\n * Normally, exporting to image will require to download these fonts so the\r\n * are carried over to exported image.\r\n *\r\n * This setting can be used to disable or enable this functionality.\r\n *\r\n * @default true\r\n */\r\n _this.useWebFonts = true;\r\n /**\r\n * Many modern displays have use more actual pixels per displayed pixel. This\r\n * results in sharper images on screen. Unfortunately, when exported to a\r\n * bitmap image of the sam width/height size it will lose those extra pixels,\r\n * resulting in somewhat blurry image.\r\n *\r\n * This is why we are going to export images larger than they are, so that we\r\n * don't lose any details.\r\n *\r\n * If you'd rather export images without change in size, set this to `false`.\r\n *\r\n * @default true\r\n */\r\n _this.useRetina = true;\r\n /**\r\n * By default Export will try to use built-in method for transforming chart\r\n * into an image for download, then fallback to external library (canvg) for\r\n * conversion if failed.\r\n *\r\n * Setting this to `false` will force use of external library for all export\r\n * operations.\r\n *\r\n * It might be useful to turn off simplified export if you are using strict\r\n * content security policies, that disallow images with blobs as their\r\n * source.\r\n *\r\n * @default true\r\n * @since 4.2.5\r\n */\r\n _this.useSimplifiedExport = true;\r\n /**\r\n * If export operation takes longer than milliseconds in this second, we will\r\n * show a modal saying export operation took longer than expected.\r\n */\r\n _this.timeoutDelay = 2000;\r\n _this._exportRunning = false;\r\n /**\r\n * Indicator used by [[Component]].\r\n *\r\n * @ignore\r\n */\r\n _this._prevHasData = false;\r\n _this._container = container;\r\n _this.className = \"Export\";\r\n // Set default options\r\n _this._formatOptions.setKey(\"png\", {});\r\n _this._formatOptions.setKey(\"jpg\", {\r\n quality: 0.8\r\n });\r\n _this._formatOptions.setKey(\"gif\", {});\r\n _this._formatOptions.setKey(\"svg\", {});\r\n _this._formatOptions.setKey(\"pdf\", {\r\n fontSize: 14,\r\n imageFormat: \"png\",\r\n align: \"left\",\r\n addURL: true,\r\n addColumnNames: true\r\n });\r\n _this._formatOptions.setKey(\"json\", {\r\n indent: 2,\r\n useLocale: true\r\n });\r\n _this._formatOptions.setKey(\"csv\", {\r\n addColumnNames: true,\r\n emptyAs: \"\",\r\n addBOM: true\r\n });\r\n _this._formatOptions.setKey(\"xlsx\", {\r\n addColumnNames: true,\r\n useLocale: true,\r\n emptyAs: \"\"\r\n });\r\n _this._formatOptions.setKey(\"html\", {\r\n addColumnNames: true,\r\n emptyAs: \"\"\r\n });\r\n _this._formatOptions.setKey(\"pdfdata\", {\r\n fontSize: 14,\r\n imageFormat: \"png\",\r\n addURL: true,\r\n addColumnNames: true,\r\n emptyAs: \"\"\r\n });\r\n _this._formatOptions.setKey(\"print\", {\r\n delay: 500,\r\n printMethod: \"iframe\"\r\n });\r\n // Add options adapter\r\n _this.adapter.add(\"options\", function (arg) {\r\n var formatOptions = _this._formatOptions.getKey(arg.type);\r\n if (arg.options) {\r\n arg.options = $object.merge(formatOptions, arg.options);\r\n }\r\n else {\r\n arg.options = formatOptions;\r\n }\r\n return arg;\r\n });\r\n _this.applyTheme();\r\n _this.dispatchImmediately(\"inited\");\r\n return _this;\r\n }\r\n Object.defineProperty(Export.prototype, \"menu\", {\r\n /**\r\n * @return ExportMenu instance\r\n */\r\n get: function () {\r\n return this._menu;\r\n },\r\n /**\r\n * An instance of [[ExportMenu]].\r\n *\r\n * To add an export menu to a chart, set this to a new instance of\r\n * [[ExportMenu]].\r\n *\r\n * ```TypeScript\r\n * chart.exporting.menu = new am4core.ExportMenu();\r\n * ```\r\n * ```JavaScript\r\n * chart.exporting.menu = new am4core.ExportMenu();\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"exporting\": {\r\n * \"menu\": {}\r\n * }\r\n * }\r\n * ```\r\n *\r\n * @param menu ExportMenu instance\r\n */\r\n set: function (menu) {\r\n var _this = this;\r\n if (this._menu) {\r\n this.removeDispose(this._menu);\r\n }\r\n this._menu = menu;\r\n // Set container and language\r\n this._menu.container = this.container;\r\n this._menu.language = this._language;\r\n // Add adapter to check for browser support\r\n this._menu.adapter.add(\"branch\", function (arg) {\r\n arg.branch.unsupported = !_this.typeSupported(arg.branch.type);\r\n return arg;\r\n });\r\n // Add click events\r\n this._menu.events.on(\"hit\", function (ev) {\r\n _this.export(ev.branch.type, ev.branch.options);\r\n _this.menu.close();\r\n });\r\n this._menu.events.on(\"enter\", function (ev) {\r\n _this.export(ev.branch.type, ev.branch.options);\r\n _this.menu.close();\r\n });\r\n this._menu.events.on(\"over\", function (ev) {\r\n _this._disablePointers();\r\n });\r\n this._menu.events.on(\"out\", function (ev) {\r\n setTimeout(function () { _this._releasePointers(); }, 10);\r\n });\r\n // Dispatch event\r\n this.dispatchImmediately(\"menucreated\");\r\n // Prefix with Sprite's class name\r\n this._menu.adapter.add(\"classPrefix\", function (obj) {\r\n obj.classPrefix = options.classNamePrefix + obj.classPrefix;\r\n return obj;\r\n });\r\n // Add menu to disposers so that it's destroyed when Export is disposed\r\n this._disposers.push(this._menu);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Checks if this specific menu item type is supported by current system.\r\n *\r\n * @param type Menu item type\r\n * @return `false` if not supported\r\n */\r\n Export.prototype.typeSupported = function (type) {\r\n var supported = true;\r\n var options = this.getFormatOptions(type);\r\n if ($type.hasValue(options) && options.disabled) {\r\n supported = false;\r\n }\r\n else if (type === \"pdf\") {\r\n //supported = this.downloadSupport();\r\n }\r\n else if (type === \"xlsx\") {\r\n //supported = (this.downloadSupport() && this._hasData()) ? true : false;\r\n supported = this._hasData() ? true : false;\r\n }\r\n else if (type == \"print\" && !window.print) {\r\n supported = false;\r\n }\r\n else if ([\"json\", \"csv\", \"html\", \"pdfdata\"].indexOf(type) !== -1 && !this._hasData()) {\r\n supported = false;\r\n }\r\n return this.adapter.apply(\"supported\", {\r\n supported: supported,\r\n type: type\r\n }).supported;\r\n };\r\n /**\r\n * Checks if data is available.\r\n *\r\n * @return Has data?\r\n */\r\n Export.prototype._hasData = function () {\r\n return this.data && this.data.length;\r\n };\r\n /**\r\n * Get function to handle export for particular format.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Export.prototype._getFunction = function (type) {\r\n switch (type) {\r\n case \"png\":\r\n case \"gif\":\r\n case \"jpg\":\r\n return this.getImage;\r\n case \"svg\":\r\n return this.getSVG;\r\n case \"pdf\":\r\n case \"pdfdata\":\r\n return this.getPDF;\r\n case \"xlsx\":\r\n return this.getExcel;\r\n case \"csv\":\r\n return this.getCSV;\r\n case \"json\":\r\n return this.getJSON;\r\n case \"html\":\r\n return this.getHTML;\r\n case \"print\":\r\n return this.getPrint;\r\n default:\r\n return this.unsupported;\r\n }\r\n };\r\n /**\r\n * Initiates export procedure.\r\n *\r\n * @param type Export type\r\n * @param options Options\r\n * @return `true` if export was successful\r\n * @async\r\n */\r\n Export.prototype.export = function (type, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var event_1, func, data, event_2, event_3;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n // Check if it's a custom item, and do nothing or execute custom callback\r\n if (type == \"custom\") {\r\n this.handleCustom(options);\r\n return [2 /*return*/, true];\r\n }\r\n // Set export running flag\r\n this._exportRunning = true;\r\n // Dispatch event\r\n if (this.events.isEnabled(\"exportstarted\")) {\r\n event_1 = {\r\n \"type\": \"exportstarted\",\r\n \"target\": this,\r\n \"format\": type,\r\n \"options\": options\r\n };\r\n this.events.dispatchImmediately(\"exportstarted\", event_1);\r\n }\r\n // Schedule a preloader\r\n this.showPreloader();\r\n // Schedule a timeout\r\n if (this.timeoutDelay) {\r\n this.hideTimeout();\r\n this._timeoutTimeout = this.setTimeout(function () {\r\n // Dispatch event\r\n if (_this.events.isEnabled(\"exporttimedout\")) {\r\n var event_4 = {\r\n \"type\": \"exporttimedout\",\r\n \"target\": _this,\r\n \"format\": type,\r\n \"options\": options\r\n };\r\n _this.events.dispatchImmediately(\"exporttimedout\", event_4);\r\n }\r\n // Show modal\r\n _this.showTimeout();\r\n }, this.timeoutDelay);\r\n }\r\n // Hide items that should not be exported\r\n this.hideNonExportableSprites();\r\n func = this._getFunction(type);\r\n // Give chance for plugins to override both function and options\r\n options = this.adapter.apply(\"options\", {\r\n options: options,\r\n type: type\r\n }).options;\r\n func = this.adapter.apply(\"exportFunction\", {\r\n func: func,\r\n type: type,\r\n options: options\r\n }).func;\r\n return [4 /*yield*/, func.call(this, type, options)];\r\n case 1:\r\n data = _a.sent();\r\n // Release pointers\r\n this._exportRunning = false;\r\n this._releasePointers();\r\n // Restore temporarily hidden elements\r\n this.restoreNonExportableSprites();\r\n if (data) {\r\n // Dispatch event\r\n if (this.events.isEnabled(\"exportfinished\")) {\r\n event_2 = {\r\n \"type\": \"exportfinished\",\r\n \"target\": this,\r\n \"format\": type,\r\n \"options\": options\r\n };\r\n this.events.dispatchImmediately(\"exportfinished\", event_2);\r\n }\r\n // Hide preloader and timeout modals\r\n this.hidePreloader();\r\n this.hideTimeout();\r\n if (this.menu) {\r\n this.menu.close();\r\n }\r\n // Download or print\r\n if (type === \"print\") {\r\n return [2 /*return*/, this.print(data, options, this.adapter.apply(\"title\", {\r\n title: this.title,\r\n options: options\r\n }).title)];\r\n }\r\n else {\r\n if (type == \"pdfdata\") {\r\n return [2 /*return*/, this.download(data, this.filePrefix + \".pdf\")];\r\n }\r\n return [2 /*return*/, this.download(data, this.filePrefix + \".\" + type, (options && options.addBOM))];\r\n }\r\n }\r\n else {\r\n // Throw exception?\r\n // @todo\r\n // Dispatch event\r\n if (this.events.isEnabled(\"error\")) {\r\n event_3 = {\r\n \"type\": \"error\",\r\n \"target\": this,\r\n \"format\": type,\r\n \"options\": options\r\n };\r\n this.events.dispatchImmediately(\"error\", event_3);\r\n }\r\n return [2 /*return*/, false];\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * A function that should handle unsupported export types.\r\n *\r\n * @ignore Exclude from docs\r\n * @param type Export type\r\n * @param options Options\r\n * @return Promise\r\n * @async\r\n */\r\n Export.prototype.unsupported = function (type, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n // TODO should this return `undefined`?\r\n return [2 /*return*/, \"\"];\r\n });\r\n });\r\n };\r\n /**\r\n * Handles click on a \"custom\" menu item.\r\n *\r\n * Basically, if it has \"callback\" enabled, it will be called. Nothing else.\r\n *\r\n * @ignore Exclude from docs\r\n * @param options Options\r\n */\r\n Export.prototype.handleCustom = function (options) {\r\n if ($type.hasValue(options) && $type.hasValue(options.callback)) {\r\n options.callback.call(options.callbackTarget || this, options);\r\n }\r\n };\r\n /**\r\n * Requests a Print of the chart.\r\n *\r\n * @param type Export type\r\n * @param options Options\r\n * @return Promise\r\n * @async\r\n */\r\n Export.prototype.getPrint = function (type, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.getImage(\"png\", options)];\r\n });\r\n });\r\n };\r\n /**\r\n * A function that returns data: URI encoded @font-family, so that way it can be embedded into SVG.\r\n *\r\n * @ignore Exclude from docs\r\n * @return String which can be embedded directly into a <style> element.\r\n * @async\r\n */\r\n Export.prototype.getFontFamilies = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var DOMURL, blobs, promises, a;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n DOMURL = this.getDOMURL();\r\n blobs = [];\r\n promises = [];\r\n return [4 /*yield*/, eachStylesheets(function (topUrl, rule) {\r\n if (rule.type === CSSRule.FONT_FACE_RULE) {\r\n var cssText_1 = rule.cssText;\r\n // TODO this is necessary because Edge doesn't let you access the src using getPropertyValue\r\n var src = fontFamilySrcRegexp.exec(cssText_1);\r\n if (src !== null) {\r\n // TODO make this faster (don't create Promises for non-url stuff)\r\n var urls = src[1].split(/ *, */).map(function (url) { return __awaiter(_this, void 0, void 0, function () {\r\n var a, after, fullUrl, response, url_1, e_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n a = /^url\\([\"']?([^\"'\\)]+)[\"']?\\)([^,]*)$/.exec(url);\r\n if (!(a === null)) return [3 /*break*/, 1];\r\n return [2 /*return*/, url];\r\n case 1:\r\n after = a[2];\r\n fullUrl = $utils.joinUrl(topUrl, a[1]);\r\n if (this.webFontFilter && !fullUrl.match(this.webFontFilter)) {\r\n return [2 /*return*/, null];\r\n }\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 7, , 8]);\r\n return [4 /*yield*/, $net.load(fullUrl, undefined, { responseType: \"blob\" })];\r\n case 3:\r\n response = _a.sent();\r\n if (!supportsBlobUri()) return [3 /*break*/, 4];\r\n url_1 = DOMURL.createObjectURL(response.blob);\r\n blobs.push(url_1);\r\n return [3 /*break*/, 6];\r\n case 4: return [4 /*yield*/, blobToDataUri(response.blob)];\r\n case 5:\r\n url_1 = _a.sent();\r\n _a.label = 6;\r\n case 6: \r\n // TODO should it should escape the URI ?\r\n return [2 /*return*/, \"url(\\\"\" + url_1 + \"\\\")\" + after];\r\n case 7:\r\n e_3 = _a.sent();\r\n console.error(\"Failed to load font\", fullUrl, e_3);\r\n return [2 /*return*/, null];\r\n case 8: return [2 /*return*/];\r\n }\r\n });\r\n }); });\r\n promises.push(Promise.all(urls).then(function (a) {\r\n a = a.filter(function (x) { return x != null; });\r\n if (a.length === 0) {\r\n return \"\";\r\n }\r\n else {\r\n return cssText_1.replace(fontFamilySrcRegexp, \"src: \" + a.join(\", \") + \";\");\r\n }\r\n }));\r\n }\r\n }\r\n })];\r\n case 1:\r\n _a.sent();\r\n return [4 /*yield*/, Promise.all(promises)];\r\n case 2:\r\n a = _a.sent();\r\n return [2 /*return*/, {\r\n blobs: blobs,\r\n cssText: a.filter(function (x) { return !!x; }).join(\"\\n\")\r\n }];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Produces image output from the element.\r\n *\r\n * Converts to a `Canvas` first, then produces an image to download.\r\n *\r\n * This is an asynchronous function. Rather than returning a result, it\r\n * returns a Promise.\r\n *\r\n * You can use `await` notion from other async functions, or `then()`\r\n * anywhere else.\r\n *\r\n * ```TypeScript\r\n * let img;\r\n *\r\n * // Async\r\n * img = await chart.exporting.getImage( \"png\" );\r\n *\r\n * // Sync\r\n * chart.exporting.getImage( \"png\" ).then( ( data ) => {\r\n * img = data;\r\n * } );\r\n * ```\r\n * ```JavaScript\r\n * var img;\r\n * chart.exporting.getImage( \"png\" ).then( ( data ) => {\r\n * img = data;\r\n * } );\r\n * ```\r\n *\r\n * @param type Image format\r\n * @param options Options\r\n * @param includeExtras Should extra sprites be included if set?\r\n * @return Promise\r\n */\r\n Export.prototype.getImage = function (type, options, includeExtras) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var prehidden, canvas, uri, e_4, data, data;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n prehidden = this._objectsAlreadyHidden;\r\n if (!prehidden) {\r\n this.hideNonExportableSprites();\r\n }\r\n if (!$type.hasValue(options)) {\r\n options = this.getFormatOptions(type);\r\n }\r\n // Wait for required elements to be ready before proceeding\r\n return [4 /*yield*/, this.awaitValidSprites()];\r\n case 1:\r\n // Wait for required elements to be ready before proceeding\r\n _a.sent();\r\n return [4 /*yield*/, this.simplifiedImageExport()];\r\n case 2:\r\n if (!_a.sent()) return [3 /*break*/, 10];\r\n canvas = void 0;\r\n _a.label = 3;\r\n case 3:\r\n _a.trys.push([3, 7, , 9]);\r\n return [4 /*yield*/, this.getCanvas(options)];\r\n case 4:\r\n canvas = _a.sent();\r\n if (!(includeExtras !== false)) return [3 /*break*/, 6];\r\n return [4 /*yield*/, this.addExtras(canvas, options)];\r\n case 5:\r\n canvas = _a.sent();\r\n _a.label = 6;\r\n case 6:\r\n uri = canvas.toDataURL(this.getContentType(type), options.quality);\r\n // Get rid of the canvas\r\n this.disposeCanvas(canvas);\r\n if (!prehidden) {\r\n this.restoreNonExportableSprites();\r\n }\r\n return [2 /*return*/, uri];\r\n case 7:\r\n e_4 = _a.sent();\r\n console.error(e_4.message + \"\\n\" + e_4.stack);\r\n $log.warn(\"Simple export failed, falling back to advanced export\");\r\n if (canvas) {\r\n this.disposeCanvas(canvas);\r\n }\r\n return [4 /*yield*/, this.getImageAdvanced(type, options, includeExtras)];\r\n case 8:\r\n data = _a.sent();\r\n if (!prehidden) {\r\n this.restoreNonExportableSprites();\r\n }\r\n return [2 /*return*/, data];\r\n case 9: return [3 /*break*/, 12];\r\n case 10: return [4 /*yield*/, this.getImageAdvanced(type, options, includeExtras)];\r\n case 11:\r\n data = _a.sent();\r\n if (!prehidden) {\r\n this.restoreNonExportableSprites();\r\n }\r\n return [2 /*return*/, data];\r\n case 12: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Adds extra elements to the canvas.\r\n *\r\n * @param canvas Original canvas\r\n * @param options Options\r\n */\r\n Export.prototype.addExtras = function (canvas, options, advanced) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var middleLeft_1, middleTop_1, middleWidth_1, middleHeight_1, extraRight_1, extraBottom_1, extras, newCanvas, ctx_1, background, left_1, top_1, right_1, bottom_1;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!this.extraSprites.length) return [3 /*break*/, 2];\r\n middleLeft_1 = 0;\r\n middleTop_1 = 0;\r\n middleWidth_1 = canvas.width;\r\n middleHeight_1 = canvas.height;\r\n extraRight_1 = 0;\r\n extraBottom_1 = 0;\r\n return [4 /*yield*/, Promise.all($array.map(this.extraSprites, function (extraSprite) { return __awaiter(_this, void 0, void 0, function () {\r\n var extra, extraCanvas, extraWidth, extraHeight;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (extraSprite instanceof Sprite) {\r\n extra = {\r\n sprite: extraSprite,\r\n position: \"bottom\"\r\n };\r\n }\r\n else {\r\n extra = extraSprite;\r\n }\r\n // Set defaults\r\n extra.position = extra.position || \"bottom\";\r\n extra.marginTop = extra.marginTop || 0;\r\n extra.marginRight = extra.marginRight || 0;\r\n extra.marginBottom = extra.marginBottom || 0;\r\n extra.marginLeft = extra.marginLeft || 0;\r\n if (!advanced) return [3 /*break*/, 2];\r\n return [4 /*yield*/, extra.sprite.exporting.getCanvasAdvanced(options)];\r\n case 1:\r\n extraCanvas = _a.sent();\r\n return [3 /*break*/, 4];\r\n case 2: return [4 /*yield*/, extra.sprite.exporting.getCanvas(options)];\r\n case 3:\r\n extraCanvas = _a.sent();\r\n _a.label = 4;\r\n case 4:\r\n extraWidth = extraCanvas.width + extra.marginLeft + extra.marginRight;\r\n extraHeight = extraCanvas.height + extra.marginTop + extra.marginBottom;\r\n if (extra.position == \"top\") {\r\n middleWidth_1 = extra.crop ? middleHeight_1 : $math.max(middleWidth_1, extraWidth);\r\n middleTop_1 += extraHeight;\r\n }\r\n else if (extra.position == \"right\") {\r\n middleHeight_1 = extra.crop ? middleHeight_1 : $math.max(middleHeight_1, extraHeight);\r\n extraRight_1 += extraWidth;\r\n }\r\n else if (extra.position == \"left\") {\r\n middleHeight_1 = extra.crop ? middleHeight_1 : $math.max(middleHeight_1, extraHeight);\r\n middleLeft_1 += extraWidth;\r\n }\r\n else if (extra.position === \"bottom\") {\r\n middleWidth_1 = extra.crop ? middleHeight_1 : $math.max(middleWidth_1, extraWidth);\r\n extraBottom_1 += extraHeight;\r\n }\r\n return [2 /*return*/, {\r\n canvas: extraCanvas,\r\n position: extra.position,\r\n left: extra.marginLeft,\r\n top: extra.marginTop,\r\n width: extraWidth,\r\n height: extraHeight\r\n }];\r\n }\r\n });\r\n }); }))];\r\n case 1:\r\n extras = _a.sent();\r\n newCanvas = this.getDisposableCanvas();\r\n newCanvas.width = middleLeft_1 + middleWidth_1 + extraRight_1;\r\n newCanvas.height = middleTop_1 + middleHeight_1 + extraBottom_1;\r\n ctx_1 = newCanvas.getContext(\"2d\");\r\n background = this.backgroundColor || this.findBackgroundColor(this.sprite.dom);\r\n if (background) {\r\n ctx_1.fillStyle = background.toString();\r\n ctx_1.fillRect(0, 0, newCanvas.width, newCanvas.height);\r\n }\r\n left_1 = middleLeft_1;\r\n top_1 = middleTop_1;\r\n right_1 = left_1 + middleWidth_1;\r\n bottom_1 = top_1 + middleHeight_1;\r\n // Radiates outwards from center\r\n $array.each(extras, function (extra) {\r\n if (extra.position == \"top\") {\r\n top_1 -= extra.height;\r\n ctx_1.drawImage(extra.canvas, middleLeft_1 + extra.left, top_1 + extra.top);\r\n }\r\n else if (extra.position == \"right\") {\r\n ctx_1.drawImage(extra.canvas, right_1 + extra.left, middleTop_1 + extra.top);\r\n right_1 += extra.width;\r\n }\r\n else if (extra.position == \"left\") {\r\n left_1 -= extra.width;\r\n ctx_1.drawImage(extra.canvas, left_1 + extra.left, middleTop_1 + extra.top);\r\n }\r\n else if (extra.position === \"bottom\") {\r\n ctx_1.drawImage(extra.canvas, middleLeft_1 + extra.left, bottom_1 + extra.top);\r\n bottom_1 += extra.height;\r\n }\r\n _this.disposeCanvas(extra.canvas);\r\n });\r\n ctx_1.drawImage(canvas, middleLeft_1, middleTop_1);\r\n return [2 /*return*/, newCanvas];\r\n case 2: return [2 /*return*/, canvas];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Returns canvas representation of the [[Sprite]].\r\n *\r\n * @param options Options\r\n * @return Canvas\r\n */\r\n Export.prototype.getCanvas = function (options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var background, DOMURL, url, blobs, canvas, width, height, font, fontSize, scale, pixelRatio, ctx, promises, a, data, svg, img;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n // Options are set?\r\n if (!$type.hasValue(options)) {\r\n options = {};\r\n }\r\n background = this.backgroundColor || this.findBackgroundColor(this.sprite.dom);\r\n DOMURL = this.getDOMURL();\r\n url = null;\r\n blobs = null;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, , 4, 5]);\r\n width = this.sprite.pixelWidth;\r\n height = this.sprite.pixelHeight;\r\n font = $dom.findFont(this.sprite.dom);\r\n fontSize = $dom.findFontSize(this.sprite.dom);\r\n scale = options.scale || 1;\r\n pixelRatio = this.getPixelRatio(options);\r\n // Check if scale needs to be updated as per min/max dimensions\r\n scale = this.getAdjustedScale(width * pixelRatio, height * pixelRatio, scale, options);\r\n // Create canvas and its 2D context\r\n canvas = this.getDisposableCanvas();\r\n // Set canvas width/height\r\n canvas.style.width = width * scale + 'px';\r\n canvas.style.height = height * scale + 'px';\r\n canvas.width = width * scale;\r\n canvas.height = height * scale;\r\n ctx = canvas.getContext(\"2d\");\r\n // if (pixelRatio != 1) {\r\n // \tctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\r\n // }\r\n // Add background if necessary\r\n if (background) {\r\n ctx.fillStyle = background.toString();\r\n ctx.fillRect(0, 0, width * scale, height * scale);\r\n }\r\n promises = [];\r\n if (this.useWebFonts) {\r\n // TODO what if one of the other things errors before it's been able to set `blobs` ?\r\n promises.push(this.getFontFamilies().then(function (fonts) {\r\n blobs = fonts.blobs;\r\n return fonts.cssText;\r\n }));\r\n }\r\n promises.push(this.imagesToDataURI(this.sprite.dom, options));\r\n promises.push(this.prepForeignObjects(this.sprite.dom, options));\r\n return [4 /*yield*/, Promise.all(promises)];\r\n case 2:\r\n a = _a.sent();\r\n data = this.normalizeSVG(\"<style>\" + a[0] + \"</style>\" + this.serializeElement(this.sprite.paper.defs) + this.serializeElement(this.sprite.dom), options, width, height, scale, font, fontSize);\r\n svg = new Blob([data], { type: \"image/svg+xml\" });\r\n url = DOMURL.createObjectURL(svg);\r\n return [4 /*yield*/, this.loadNewImage(url, width * scale * pixelRatio, height * scale * pixelRatio, \"anonymous\")];\r\n case 3:\r\n img = _a.sent();\r\n // Draw image on canvas\r\n ctx.drawImage(img, 0, 0);\r\n return [3 /*break*/, 5];\r\n case 4:\r\n if (url !== null) {\r\n DOMURL.revokeObjectURL(url);\r\n }\r\n if (blobs !== null) {\r\n $array.each(blobs, function (url) {\r\n DOMURL.revokeObjectURL(url);\r\n });\r\n }\r\n // Restore replaced tainted images in DOM\r\n this.restoreRemovedObjects();\r\n return [7 /*endfinally*/];\r\n case 5: return [2 /*return*/, canvas];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Returns canvas representation of the [[Sprite]] using canvg.\r\n *\r\n * @param options Options\r\n * @return Canvas\r\n */\r\n Export.prototype.getCanvasAdvanced = function (options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var background, canvg, width, height, font, fontSize, scale, pixelRatio, data, canvas, config;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n // Options are set?\r\n if (!$type.hasValue(options)) {\r\n options = {};\r\n }\r\n // Convert external images to data uris\r\n return [4 /*yield*/, this.imagesToDataURI(this.sprite.dom, options)];\r\n case 1:\r\n // Convert external images to data uris\r\n _a.sent();\r\n background = this.backgroundColor || this.findBackgroundColor(this.sprite.dom);\r\n return [4 /*yield*/, this.canvg];\r\n case 2:\r\n canvg = _a.sent();\r\n width = this.sprite.pixelWidth;\r\n height = this.sprite.pixelHeight;\r\n font = $dom.findFont(this.sprite.dom);\r\n fontSize = $dom.findFontSize(this.sprite.dom);\r\n scale = options.scale || 1;\r\n pixelRatio = this.getPixelRatio(options);\r\n // Check if scale needs to be updated as per min/max dimensions\r\n scale = this.getAdjustedScale(width * pixelRatio, height * pixelRatio, scale, options);\r\n data = this.normalizeSVG(this.serializeElement(this.sprite.paper.defs) + this.serializeElement(this.sprite.dom), options, width, height, scale, font, fontSize, background);\r\n canvas = this.getDisposableCanvas();\r\n // Set canvas width/height\r\n canvas.style.width = (width * pixelRatio * scale) + 'px';\r\n canvas.style.height = (height * pixelRatio * scale) + 'px';\r\n canvas.width = width * pixelRatio * scale;\r\n canvas.height = height * pixelRatio * scale;\r\n config = {\r\n //ignoreDimensions: true,\r\n useCORS: true\r\n };\r\n if (pixelRatio != 1) {\r\n config.ignoreDimensions = true;\r\n config.scaleWidth = width * pixelRatio * scale;\r\n config.scaleHeight = height * pixelRatio * scale;\r\n }\r\n return [4 /*yield*/, canvg.fromString(canvas.getContext(\"2d\"), data, config).render()];\r\n case 3:\r\n _a.sent();\r\n return [2 /*return*/, canvas];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Tries to dynamically load [canvg.js](https://github.com/canvg/canvg) and\r\n * export an image using its functions.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @param type Image format\r\n * @param options Options\r\n * @return Data uri\r\n */\r\n Export.prototype.getImageAdvanced = function (type, options, includeExtras) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var prehidden, canvas, uri;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n prehidden = this._objectsAlreadyHidden;\r\n if (!prehidden) {\r\n this.hideNonExportableSprites();\r\n }\r\n if (!$type.hasValue(options)) {\r\n options = this.getFormatOptions(type);\r\n }\r\n return [4 /*yield*/, this.getCanvasAdvanced(options)];\r\n case 1:\r\n canvas = _a.sent();\r\n if (!(includeExtras !== false)) return [3 /*break*/, 3];\r\n return [4 /*yield*/, this.addExtras(canvas, options, true)];\r\n case 2:\r\n canvas = _a.sent();\r\n _a.label = 3;\r\n case 3:\r\n uri = canvas.toDataURL(this.getContentType(type), options.quality);\r\n // Get rid of the canvas\r\n this.disposeCanvas(canvas);\r\n if (!prehidden) {\r\n this.restoreNonExportableSprites();\r\n }\r\n return [2 /*return*/, uri];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Creates a `<canvas>` element and returns it.\r\n *\r\n * @return Canvas element\r\n */\r\n Export.prototype.getDisposableCanvas = function () {\r\n var canvas = document.createElement(\"canvas\");\r\n canvas.style.position = \"fixed\";\r\n canvas.style.top = \"-10000px\";\r\n document.body.appendChild(canvas);\r\n return canvas;\r\n };\r\n /**\r\n * Removes canvas.\r\n *\r\n * @param canvas Canvas element\r\n */\r\n Export.prototype.disposeCanvas = function (canvas) {\r\n document.body.removeChild(canvas);\r\n };\r\n /**\r\n * Returns pixel ratio for retina displays.\r\n *\r\n * @return Pixel ratio\r\n */\r\n Export.prototype.getPixelRatio = function (options) {\r\n // const scale = options && options.scale ? options.scale : 1;\r\n // return (this.useRetina ? $utils.getPixelRatio() : 1) * scale;\r\n return this.useRetina ? $utils.getPixelRatio() : 1;\r\n };\r\n /**\r\n * Calculates adjusted scale if image does not fit or is larger than min/max\r\n * settings.\r\n *\r\n * @param width Width of the source image\r\n * @param height Height of the source image\r\n * @param scale Current scale\r\n * @param options Options\r\n * @return Adjusted scale\r\n */\r\n Export.prototype.getAdjustedScale = function (width, height, scale, options) {\r\n if (!options) {\r\n return scale;\r\n }\r\n var adjWidth = width * scale;\r\n var adjHeight = width * scale;\r\n // Check max restrictions\r\n var widthScale;\r\n var heightScale;\r\n if (options.maxWidth && (adjWidth > options.maxWidth)) {\r\n widthScale = options.maxWidth / width;\r\n }\r\n if (options.maxHeight && (adjHeight > options.maxHeight)) {\r\n heightScale = options.maxHeight / height;\r\n }\r\n if (widthScale || heightScale) {\r\n return $math.min(widthScale, heightScale);\r\n }\r\n // Check min restrictions\r\n if (options.minWidth && (adjWidth < options.minWidth)) {\r\n widthScale = options.minWidth / width;\r\n }\r\n if (options.minHeight && (adjHeight < options.minHeight)) {\r\n heightScale = options.minHeight / height;\r\n }\r\n if (widthScale || heightScale) {\r\n return $math.max(widthScale, heightScale);\r\n }\r\n return scale;\r\n };\r\n /**\r\n * Converts all `<image>` tags in SVG to use data uris instead of external\r\n * URLs\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @param el SVG node\r\n * @param options Options\r\n * @return Promise\r\n */\r\n Export.prototype.imagesToDataURI = function (el, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var images, promises, count, i, image, href;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n images = el.querySelectorAll(\"image\");\r\n if (!images.length) return [3 /*break*/, 2];\r\n promises = [];\r\n // There are images, process each of them\r\n for (count = images.length, i = 0; i < count; i++) {\r\n image = images[i];\r\n href = image.getAttributeNS(Export.XLINK, \"href\");\r\n // no href?\r\n if (!href) {\r\n continue;\r\n }\r\n if (href.indexOf(\"data:image\") !== -1) {\r\n // Ignore image if it's already in Data URI format\r\n }\r\n else {\r\n // SVG or bitmap image?\r\n if (href.indexOf(\".svg\") !== -1) {\r\n promises.push(this.svgToDataURI(image, options));\r\n }\r\n else {\r\n promises.push(this.imageToDataURI(image, options));\r\n }\r\n }\r\n }\r\n return [4 /*yield*/, Promise.all(promises)];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/];\r\n case 2: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * `foreignObject` elements cannot be exported. This function hides them\r\n * temprarily. In the future it might try to convert them to SVG to make them\r\n * exportable.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @param el SVG node\r\n * @param options Options\r\n * @return Promise\r\n */\r\n Export.prototype.prepForeignObjects = function (el, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var objects, count, i;\r\n return __generator(this, function (_a) {\r\n objects = el.querySelectorAll(\"foreignObject\");\r\n if (objects.length) {\r\n // There are foreign objects, process each of them\r\n for (count = objects.length, i = 0; i < count; i++) {\r\n this.temporarilyRemoveObject(objects[i]);\r\n }\r\n }\r\n return [2 /*return*/];\r\n });\r\n });\r\n };\r\n /**\r\n * Converts an SVG `<image>` to use its data uri for `href` instead of\r\n * external file.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @param el SVG element\r\n * @param options Options\r\n */\r\n Export.prototype.imageToDataURI = function (el, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var img, canvas, uri, e_5;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.loadNewImage(el.getAttributeNS(Export.XLINK, \"href\"), null, null, \"anonymous\")];\r\n case 1:\r\n // Create image\r\n img = _a.sent();\r\n canvas = document.createElement(\"canvas\");\r\n canvas.width = img.width;\r\n canvas.height = img.height;\r\n // Draw new image on it via `toDataURL`\r\n canvas.getContext(\"2d\").drawImage(img, 0, 0);\r\n // Replace image `href` with data uri\r\n // If we got to this point it means image has loaded, however we might\r\n // still get an error with `toDataURL()`\r\n try {\r\n uri = canvas.toDataURL();\r\n el.setAttribute(\"href\", uri);\r\n return [2 /*return*/, uri];\r\n }\r\n catch (e) {\r\n // Give up and temporarily remove the element href temporarily\r\n if (options.keepTainted !== false) {\r\n /*this._removedObjects.push({\r\n \"element\": el,\r\n \"originalHref\": el.getAttributeNS(Export.XLINK, \"href\")\r\n });\r\n el.setAttributeNS(Export.XLINK, \"href\", \"\");*/\r\n this.temporarilyRemoveObject(el);\r\n }\r\n return [2 /*return*/, undefined];\r\n }\r\n return [3 /*break*/, 3];\r\n case 2:\r\n e_5 = _a.sent();\r\n // Give up and temporarily remove the element's href\r\n if (!options || options.keepTainted !== false) {\r\n /*this._removedObjects.push({\r\n \"element\": el,\r\n \"originalHref\": el.getAttributeNS(Export.XLINK, \"href\")\r\n });\r\n el.setAttributeNS(Export.XLINK, \"href\", \"\");*/\r\n this.temporarilyRemoveObject(el);\r\n }\r\n return [2 /*return*/, undefined];\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Converts `<image>` with external SVG source to data uri. Loads external SVG\r\n * file, then converts it to data uri and replaces the `xlink:href` parameter.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @param el An SVG element\r\n * @param options Options\r\n */\r\n Export.prototype.svgToDataURI = function (el, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var href, data, charset, uri, e_6;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n href = el.getAttributeNS(Export.XLINK, \"href\");\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, $net.load(href)];\r\n case 2:\r\n data = _a.sent();\r\n charset = this.adapter.apply(\"charset\", {\r\n charset: \"base64\",\r\n type: \"svg\",\r\n options: options\r\n }).charset;\r\n uri = this.adapter.apply(\"svgToDataURI\", {\r\n data: \"data:\" + this.getContentType(\"svg\") + \";\" + charset + \",\" + btoa(data.response),\r\n options: options\r\n }).data;\r\n el.setAttributeNS(Export.XLINK, \"href\", uri);\r\n return [2 /*return*/, uri];\r\n case 3:\r\n e_6 = _a.sent();\r\n // Disable temporarily\r\n if (!options || options.keepTainted !== false) {\r\n /*this._removedObjects.push({\r\n \"element\": el,\r\n \"originalHref\": href\r\n });\r\n el.setAttributeNS(Export.XLINK, \"href\", \"\");*/\r\n this.temporarilyRemoveObject(el);\r\n }\r\n return [2 /*return*/, undefined];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Temporarily removes element from DOM, and replaces it with a dummy\r\n * placeholder, as well as stores it for later restoration.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @param el Node\r\n */\r\n Export.prototype.temporarilyRemoveObject = function (el, placeholder) {\r\n // Get parent\r\n var parent = el.parentElement || el.parentNode;\r\n // Create a placeholder group element if it has not been passed in\r\n if (!placeholder) {\r\n placeholder = this.sprite.paper.add(\"g\").node;\r\n }\r\n parent.insertBefore(placeholder, el);\r\n // Check if we have a textContents we can replace with\r\n // @todo Perhaps we should explore alternatives to creating text nodes\r\n // i.e. creating a text version of the HTML-based Text, just for export\r\n // purposes. Converting HTML into SVG is very complicated\r\n if (el.textContent) {\r\n /*let text = this.sprite.paper.add(\"text\").node;\r\n text.textContent = el.textContent;\r\n placeholder.appendChild(text);\r\n\r\n // Copy properties from the removing element to the placeholder\r\n $dom.copyAttributes(el, placeholder);*/\r\n }\r\n // Remove the old element\r\n parent.removeChild(el);\r\n // Log removed item\r\n this._removedObjects.push({\r\n \"element\": el,\r\n \"placeholder\": placeholder\r\n });\r\n };\r\n /**\r\n * Restores all (possibly tainted or unsupported) objects that were\r\n * temporarily removed when exporting.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Export.prototype.restoreRemovedObjects = function () {\r\n var obj;\r\n while (true) {\r\n obj = this._removedObjects.pop();\r\n if (!obj) {\r\n break;\r\n }\r\n //obj.element.setAttribute(\"href\", obj.originalHref);\r\n var parent_1 = obj.placeholder.parentElement || obj.placeholder.parentNode;\r\n parent_1.insertBefore(obj.element, obj.placeholder);\r\n //parent.removeChild(obj.placeholder);\r\n }\r\n };\r\n /**\r\n * Checkes if simplified export can be used using `createObjectURL` and SVG\r\n * document does not contain any external images.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @return `true` if simplified export can be used\r\n */\r\n Export.prototype.simplifiedImageExport = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var cache, canvas, ctx, DOMURL, svg, url, img, e_7, e_8;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (this.useSimplifiedExport === false) {\r\n return [2 /*return*/, false];\r\n }\r\n cache = registry.getCache(\"simplifiedImageExport\");\r\n if (cache === false || cache === true) {\r\n return [2 /*return*/, cache];\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 6, , 7]);\r\n canvas = document.createElement(\"canvas\");\r\n canvas.width = 1;\r\n canvas.height = 1;\r\n ctx = canvas.getContext(\"2d\");\r\n DOMURL = this.getDOMURL();\r\n svg = new Blob([this.normalizeSVG(\"<g></g>\", {}, 1, 1)], { type: \"image/svg+xml\" });\r\n url = DOMURL.createObjectURL(svg);\r\n img = void 0;\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n return [4 /*yield*/, this.loadNewImage(url, 1, 1)];\r\n case 3:\r\n img = _a.sent();\r\n return [3 /*break*/, 5];\r\n case 4:\r\n e_7 = _a.sent();\r\n return [2 /*return*/, false];\r\n case 5:\r\n ctx.drawImage(img, 0, 0);\r\n DOMURL.revokeObjectURL(url);\r\n try {\r\n //let uri = canvas.toDataURL(\"image/png\");\r\n registry.setCache(\"simplifiedImageExport\", true);\r\n return [2 /*return*/, true];\r\n }\r\n catch (e) {\r\n registry.setCache(\"simplifiedImageExport\", false);\r\n return [2 /*return*/, false];\r\n }\r\n return [3 /*break*/, 7];\r\n case 6:\r\n e_8 = _a.sent();\r\n registry.setCache(\"simplifiedImageExport\", false);\r\n return [2 /*return*/, false];\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Returns a new `<image>` element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param url URL of the image\r\n * @param width Width (px)\r\n * @param height Height (px)\r\n * @param crossOrigin Cross-Origin setting\r\n * @return Promise\r\n */\r\n Export.prototype.loadNewImage = function (url, width, height, crossOrigin) {\r\n return new Promise(function (success, error) {\r\n // New image\r\n var image;\r\n if (width && height) {\r\n image = new Image(width, height);\r\n }\r\n else {\r\n image = new Image();\r\n }\r\n // Set crossorigin\r\n if (crossOrigin) {\r\n image.setAttribute(\"crossOrigin\", crossOrigin);\r\n }\r\n // Report success on load\r\n image.onload = function () {\r\n success(image);\r\n };\r\n function onerror() {\r\n // Error occurred. Just in case it's the crossOrigin issue, let's try\r\n // stripping off this attribute and trying again\r\n if (crossOrigin) {\r\n // Retain old uri\r\n var currentHref = image.src;\r\n // Set up another `onerror` to handle situations where image is not\r\n // loadable at all (i.e. protected by CORS)\r\n image.onerror = function () {\r\n // Nope, no luck\r\n error(new Error(\"Loading image \\\"\" + url + \"\\\" failed\"));\r\n };\r\n // remove the `crossOrigin` attribute\r\n image.removeAttribute(\"crossorigin\");\r\n // retry\r\n image.src = \"\";\r\n image.src = currentHref;\r\n }\r\n else {\r\n error(new Error(\"Loading image \\\"\" + url + \"\\\" failed\"));\r\n }\r\n }\r\n // Set image error handlers\r\n image.onabort = onerror;\r\n image.onerror = onerror;\r\n // Trigger load\r\n image.src = url;\r\n });\r\n };\r\n /**\r\n * Returns current DOM URL.\r\n *\r\n * @ignore Exclude from docs\r\n * @return URL\r\n */\r\n Export.prototype.getDOMURL = function () {\r\n return self.URL || self.webkitURL || self;\r\n };\r\n /**\r\n * Returns an SVG representation of the chart.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @param type Type of the export\r\n * @param options Options\r\n * @param encodeURI If true, will return result will be data URI\r\n * @return Promise\r\n */\r\n Export.prototype.getSVG = function (type, options, encodeURI) {\r\n if (encodeURI === void 0) { encodeURI = true; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var prehidden, width, height, font, fontSize, scale, pixelRatio, svg, charset, uri;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n prehidden = this._objectsAlreadyHidden;\r\n if (!prehidden) {\r\n this.hideNonExportableSprites();\r\n }\r\n if (!$type.hasValue(options)) {\r\n options = this.getFormatOptions(\"svg\");\r\n }\r\n // Wait for required elements to be ready before proceeding\r\n return [4 /*yield*/, this.awaitValidSprites()];\r\n case 1:\r\n // Wait for required elements to be ready before proceeding\r\n _a.sent();\r\n width = this.sprite.pixelWidth;\r\n height = this.sprite.pixelHeight;\r\n font = $dom.findFont(this.sprite.dom);\r\n fontSize = $dom.findFontSize(this.sprite.dom);\r\n scale = options.scale || 1;\r\n pixelRatio = this.getPixelRatio(options);\r\n // Check if scale needs to be updated as per min/max dimensions\r\n scale = this.getAdjustedScale(width * pixelRatio, height * pixelRatio, scale, options);\r\n svg = this.normalizeSVG(this.serializeElement(this.sprite.paper.defs) + this.serializeElement(this.sprite.dom), options, width, height, scale, font, fontSize);\r\n charset = this.adapter.apply(\"charset\", {\r\n charset: \"charset=utf-8\",\r\n type: \"svg\",\r\n options: options\r\n }).charset;\r\n uri = this.adapter.apply(\"getSVG\", {\r\n data: encodeURI ? \"data:\" + this.getContentType(type) + \";\" + charset + \",\" + encodeURIComponent(svg) : svg,\r\n options: options\r\n }).data;\r\n if (!prehidden) {\r\n this.restoreNonExportableSprites();\r\n }\r\n return [2 /*return*/, uri];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Checks if SVG is fully formatted. Encloses in `<svg>...</svg>` if\r\n * necessary.\r\n *\r\n * @ignore Exclude from docs\r\n * @param svg Input SVG\r\n * @param options Options\r\n * @param width Width of the SVG viewport\r\n * @param height Height of the SVG viewport\r\n * @param font Font family to use as a base\r\n * @param fontSize Font size to use as a base\r\n * @return Output SVG\r\n * @todo Add style params to existing <svg>\r\n */\r\n Export.prototype.normalizeSVG = function (svg, options, width, height, scale, font, fontSize, background) {\r\n // Construct width/height params\r\n var dimParams = \"\";\r\n if (width) {\r\n dimParams += \"width=\\\"\" + Math.round(width * (scale || 1)) + \"px\\\" \";\r\n }\r\n if (height) {\r\n dimParams += \"height=\\\"\" + Math.round(height * (scale || 1)) + \"px\\\" \";\r\n }\r\n // Apply font settings\r\n var styleParams = \"\";\r\n if (font) {\r\n styleParams += \"font-family: \" + font.replace(/\"/g, \"\") + \";\";\r\n }\r\n if (fontSize) {\r\n styleParams += \"font-size: \" + fontSize + \";\";\r\n }\r\n // Scale\r\n if (scale) {\r\n dimParams += \"viewBox=\\\"0 0 \" + (width) + \" \" + (height) + \"\\\" \";\r\n }\r\n // Remove foreign objects temporarily\r\n var fos = [];\r\n var ms = svg.match(/<foreignObject[\\s\\S]*<\\/foreignObject>/gi);\r\n if (ms) {\r\n for (var i = 0; i < ms.length; i++) {\r\n svg = svg.replace(ms[i], $strings.PLACEHOLDER);\r\n fos.push(ms[i]);\r\n }\r\n }\r\n // Add missing <svg> enclosure\r\n if (!svg.match(/<svg/)) {\r\n svg = \"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?><svg \" + dimParams + \" style=\\\"\" + styleParams + \"\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\">\" + svg + \"</svg>\";\r\n }\r\n else {\r\n if (dimParams !== \"\") {\r\n // Clear current params\r\n svg = svg.replace(/(<svg[^>]*)width=\"[^\"]*\"/, \"$1\");\r\n svg = svg.replace(/(<svg[^>]*)height=\"[^\"]*\"/, \"$1\");\r\n // Add new params\r\n svg = svg.replace(/(<svg)/, \"$1\" + dimParams);\r\n }\r\n /*if (styleParams !== \"\") {\r\n // Clear current params\r\n svg = svg.replace(/(<svg[^>]*)stylewidth=\"[^\"]*\"/, \"$1\");\r\n svg = svg.replace(/(<svg[^>]*)height=\"[^\"]*\"/, \"$1\");\r\n\r\n // Add new params\r\n svg = svg.replace(/(<svg)/, \"$1\" + dimParams);\r\n }*/\r\n }\r\n if (background) {\r\n svg = svg.replace(/(<svg[^>]*>)/, \"$1<rect width=\\\"100%\\\" height=\\\"100%\\\" fill=\\\"\" + background.rgba + \"\\\"/>\");\r\n //svg = svg.replace(/<\\/svg>/, \"<rect width=\\\"100%\\\" height=\\\"100%\\\" fill=\\\"\" + background.rgba + \"\\\"/></svg>\");\r\n }\r\n if ($browser.isInternetExplorer()) {\r\n // IE can't handle exporting <feColorMatrix> for some reason\r\n svg = svg.replace(/<feColorMatrix [^\\/>]*\\/>/gi, \"\");\r\n }\r\n // Remove base uri-related stuff\r\n var reg = new RegExp(\"url\\\\(\" + $utils.escapeForRgex($utils.getBaseURI()), \"g\");\r\n svg = svg.replace(reg, \"url(#\");\r\n // Remove escaped quotes in url() parameters\r\n svg = svg.replace(/url\\("([^)]*)"\\)/gm, \"url($1)\");\r\n // Put foreignObjects back in\r\n if (fos.length) {\r\n for (var i = 0; i < fos.length; i++) {\r\n svg = svg.replace($strings.PLACEHOLDER, fos[i]);\r\n }\r\n }\r\n svg = this.adapter.apply(\"normalizeSVG\", {\r\n data: svg,\r\n options: options\r\n }).data;\r\n return svg;\r\n };\r\n /**\r\n * Serializes an element and returns its contents.\r\n *\r\n * @ignore Exclude from docs\r\n * @param element An element to serialize\r\n * @return A serialized XML\r\n */\r\n Export.prototype.serializeElement = function (element) {\r\n return new XMLSerializer().serializeToString(element);\r\n };\r\n /**\r\n * Returns a PDF containing chart image.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @param type Type of the export\r\n * @param options Options\r\n * @return Promise\r\n * @async\r\n * @todo Account for header when calculating vertical fit\r\n */\r\n Export.prototype.getPDF = function (type, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n function addFont(font) {\r\n var paths = {};\r\n paths.normal = font.normal.path;\r\n vfs[font.normal.path] = font.normal.bytes;\r\n if (font.bold) {\r\n paths.bold = font.bold.path;\r\n vfs[font.bold.path] = font.bold.bytes;\r\n }\r\n else {\r\n paths.bold = font.normal.path;\r\n }\r\n if (font.italics) {\r\n paths.italics = font.italics.path;\r\n vfs[font.italics.path] = font.italics.bytes;\r\n }\r\n else {\r\n paths.italics = font.normal.path;\r\n }\r\n if (font.bolditalics) {\r\n paths.bolditalics = font.bolditalics.path;\r\n vfs[font.bolditalics.path] = font.bolditalics.bytes;\r\n }\r\n else {\r\n paths.bolditalics = font.normal.path;\r\n }\r\n fonts[font.name] = paths;\r\n }\r\n var image, pdfmake, defaultMargins, doc, title, extraMargin, _a, _b, _c, fonts, vfs;\r\n return __generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0: return [4 /*yield*/, this.getImage(options.imageFormat || \"png\", options)];\r\n case 1:\r\n image = _d.sent();\r\n return [4 /*yield*/, this.pdfmake];\r\n case 2:\r\n pdfmake = _d.sent();\r\n defaultMargins = [30, 30, 30, 30];\r\n doc = {\r\n pageSize: options.pageSize || \"A4\",\r\n pageOrientation: options.pageOrientation || \"portrait\",\r\n pageMargins: options.pageMargins || defaultMargins,\r\n defaultStyle: {\r\n font: options.font ? options.font.name : undefined\r\n },\r\n //header: <any>[],\r\n content: []\r\n };\r\n title = this.adapter.apply(\"title\", {\r\n title: this.title,\r\n options: options\r\n }).title;\r\n extraMargin = 0;\r\n if (title) {\r\n doc.content.push({\r\n text: title,\r\n fontSize: options.fontSize || 14,\r\n bold: true,\r\n margin: [0, 0, 0, 15]\r\n });\r\n // Add some leftover margin for title\r\n extraMargin += 50;\r\n }\r\n // Add page URL?\r\n if (options.addURL) {\r\n doc.content.push({\r\n text: this.language.translate(\"Saved from\") + \": \" + document.location.href,\r\n fontSize: options.fontSize,\r\n margin: [0, 0, 0, 15]\r\n });\r\n // Add some leftover margin for URL\r\n extraMargin += 50;\r\n }\r\n // Add image\r\n if (type != \"pdfdata\") {\r\n doc.content.push({\r\n image: image,\r\n alignment: options.align || \"left\",\r\n fit: this.getPageSizeFit(doc.pageSize, doc.pageMargins, extraMargin)\r\n });\r\n }\r\n if (!(type == \"pdfdata\" || options.addData)) return [3 /*break*/, 4];\r\n _b = (_a = doc.content).push;\r\n _c = {};\r\n return [4 /*yield*/, this.getPDFData(\"pdf\", options)];\r\n case 3:\r\n _b.apply(_a, [(_c.table = _d.sent(),\r\n _c.fontSize = options.fontSize || 14,\r\n _c)]);\r\n _d.label = 4;\r\n case 4:\r\n // Apply adapters\r\n doc = this.adapter.apply(\"pdfmakeDocument\", {\r\n doc: doc,\r\n options: options\r\n }).doc;\r\n fonts = null;\r\n vfs = null;\r\n if (options.font) {\r\n fonts = {};\r\n vfs = {};\r\n addFont(options.font);\r\n if (options.extraFonts) {\r\n $array.each(options.extraFonts, addFont);\r\n }\r\n }\r\n return [4 /*yield*/, new Promise(function (success, error) {\r\n pdfmake.createPdf(doc, null, fonts, vfs).getDataUrl(function (uri) {\r\n success(uri);\r\n });\r\n })];\r\n case 5: \r\n // Create PDF\r\n return [2 /*return*/, _d.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Returns chart's data formatted suitable for PDF export (pdfmake).\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @since 4.7.0\r\n * @param type Type of the export\r\n * @param options Options\r\n * @return Promise\r\n * @async\r\n */\r\n Export.prototype.getPDFData = function (type, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var content, dataFields, data, dataFieldsOrder_1, len, i;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n content = {\r\n \"body\": []\r\n };\r\n dataFields = this.adapter.apply(\"formatDataFields\", {\r\n dataFields: this.dataFields,\r\n format: \"pdf\"\r\n }).dataFields;\r\n data = this.data;\r\n // Vertical or horizontal (default) layout\r\n if (options.pivot) {\r\n dataFieldsOrder_1 = this.adapter.apply(\"dataFieldsOrder\", {\r\n dataFieldsOrder: this.dataFieldsOrder,\r\n format: \"pdfdata\"\r\n }).dataFieldsOrder;\r\n $object.eachOrdered(dataFields, function (key, val) {\r\n var dataRow = [];\r\n if (options.addColumnNames) {\r\n dataRow.push(val);\r\n }\r\n for (var len = data.length, i = 0; i < len; i++) {\r\n var dataValue = data[i][key];\r\n dataRow.push(_this.convertToSpecialFormat(key, dataValue, options, true));\r\n }\r\n content.body.push(_this.getPDFDataRow(dataRow, options, undefined, true));\r\n }, function (a, b) {\r\n //console.log(a, b)\r\n var ai = dataFieldsOrder_1.indexOf(a);\r\n var bi = dataFieldsOrder_1.indexOf(b);\r\n if (ai > bi) {\r\n return 1;\r\n }\r\n else if (ai < bi) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n }\r\n else {\r\n // Add column names?\r\n if (options.addColumnNames) {\r\n content.body.push(this.getPDFDataRow(dataFields, options, undefined, true));\r\n content.headerRows = 1;\r\n }\r\n for (len = data.length, i = 0; i < len; i++) {\r\n content.body.push(this.getPDFDataRow(data[i], options, dataFields));\r\n }\r\n }\r\n return [2 /*return*/, this.adapter.apply(\"pdfmakeTable\", {\r\n table: content,\r\n options: options\r\n }).table];\r\n });\r\n });\r\n };\r\n /**\r\n * Formats a row of data for use in PDF data table (pdfmake).\r\n *\r\n * @ignore Exclude from docs\r\n * @since 4.7.0\r\n * @param row An object holding data for the row\r\n * @param options Options\r\n * @param dataFields Data fields\r\n * @param asIs Do not try to convert to dates\r\n * @return Formated Data line\r\n */\r\n Export.prototype.getPDFDataRow = function (row, options, dataFields, asIs) {\r\n var _this = this;\r\n if (asIs === void 0) { asIs = false; }\r\n // Init\r\n var items = [];\r\n // Data fields\r\n if (!dataFields) {\r\n dataFields = row;\r\n }\r\n // Data fields order\r\n var dataFieldsOrder = this.adapter.apply(\"dataFieldsOrder\", {\r\n dataFieldsOrder: this.dataFieldsOrder,\r\n format: \"pdfdata\"\r\n }).dataFieldsOrder;\r\n // Process each row item\r\n $object.eachOrdered(dataFields, function (key, name) {\r\n // Get value\r\n var value = _this.convertEmptyValue(key, row[key], options);\r\n // Convert dates\r\n var item = asIs ? value : _this.convertToSpecialFormat(key, value, options);\r\n item = \"\" + item;\r\n // Add to item\r\n items.push(item);\r\n }, function (a, b) {\r\n //console.log(a, b)\r\n var ai = dataFieldsOrder.indexOf(a);\r\n var bi = dataFieldsOrder.indexOf(b);\r\n if (ai > bi) {\r\n return 1;\r\n }\r\n else if (ai < bi) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n return items;\r\n };\r\n /**\r\n * Returns fit dimensions for available page sizes.\r\n *\r\n * @ignore Exclude from docs\r\n * @param pageSize Page size\r\n * @return `[width, height]` in pixels\r\n */\r\n Export.prototype.getPageSizeFit = function (pageSize, margins, extraMargin) {\r\n if (extraMargin === void 0) { extraMargin = 0; }\r\n // Check margins\r\n var newMargins = [0, 0, 0, 0];\r\n if (typeof margins == \"number\") {\r\n newMargins = [margins, margins, margins, margins];\r\n }\r\n else if (margins.length == 2) {\r\n newMargins = [margins[0], margins[1], margins[0], margins[1]];\r\n }\r\n else if (margins.length == 4) {\r\n newMargins = margins;\r\n }\r\n // Define available page sizes\r\n var sizes = {\r\n \"4A0\": [4767.87, 6740.79],\r\n \"2A0\": [3370.39, 4767.87],\r\n A0: [2383.94, 3370.39],\r\n A1: [1683.78, 2383.94],\r\n A2: [1190.55, 1683.78],\r\n A3: [841.89, 1190.55],\r\n A4: [595.28, 841.89],\r\n A5: [419.53, 595.28],\r\n A6: [297.64, 419.53],\r\n A7: [209.76, 297.64],\r\n A8: [147.40, 209.76],\r\n A9: [104.88, 147.40],\r\n A10: [73.70, 104.88],\r\n B0: [2834.65, 4008.19],\r\n B1: [2004.09, 2834.65],\r\n B2: [1417.32, 2004.09],\r\n B3: [1000.63, 1417.32],\r\n B4: [708.66, 1000.63],\r\n B5: [498.90, 708.66],\r\n B6: [354.33, 498.90],\r\n B7: [249.45, 354.33],\r\n B8: [175.75, 249.45],\r\n B9: [124.72, 175.75],\r\n B10: [87.87, 124.72],\r\n C0: [2599.37, 3676.54],\r\n C1: [1836.85, 2599.37],\r\n C2: [1298.27, 1836.85],\r\n C3: [918.43, 1298.27],\r\n C4: [649.13, 918.43],\r\n C5: [459.21, 649.13],\r\n C6: [323.15, 459.21],\r\n C7: [229.61, 323.15],\r\n C8: [161.57, 229.61],\r\n C9: [113.39, 161.57],\r\n C10: [79.37, 113.39],\r\n RA0: [2437.80, 3458.27],\r\n RA1: [1729.13, 2437.80],\r\n RA2: [1218.90, 1729.13],\r\n RA3: [864.57, 1218.90],\r\n RA4: [609.45, 864.57],\r\n SRA0: [2551.18, 3628.35],\r\n SRA1: [1814.17, 2551.18],\r\n SRA2: [1275.59, 1814.17],\r\n SRA3: [907.09, 1275.59],\r\n SRA4: [637.80, 907.09],\r\n EXECUTIVE: [521.86, 756.00],\r\n FOLIO: [612.00, 936.00],\r\n LEGAL: [612.00, 1008.00],\r\n LETTER: [612.00, 792.00],\r\n TABLOID: [792.00, 1224.00]\r\n };\r\n // Calculate size\r\n var fitSize = sizes[pageSize];\r\n fitSize[0] -= newMargins[0] + newMargins[2];\r\n fitSize[1] -= newMargins[1] + newMargins[3] + extraMargin;\r\n return fitSize;\r\n };\r\n /**\r\n * Returns an Excel file of chart's data.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @param type Type of the export\r\n * @param options Options\r\n * @return Promise\r\n * @async\r\n * @todo Handle dates\r\n * @todo Support for multi-sheet\r\n */\r\n Export.prototype.getExcel = function (type, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var XLSX, wbOptions, sheetName, wb, data, dataFields, dataFieldsOrder_2, len, i, uri;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!$type.hasValue(options)) {\r\n options = this.getFormatOptions(\"xlsx\");\r\n }\r\n return [4 /*yield*/, this.xlsx];\r\n case 1:\r\n XLSX = _a.sent();\r\n wbOptions = this.adapter.apply(\"xlsxWorkbookOptions\", {\r\n xlsx: XLSX,\r\n options: {\r\n bookType: \"xlsx\",\r\n bookSST: false,\r\n type: \"base64\",\r\n }\r\n }).options;\r\n sheetName = this.normalizeExcelSheetName(this.adapter.apply(\"xlsxSheetName\", {\r\n xlsx: XLSX,\r\n name: this.title || this.language.translate(\"Data\")\r\n }).name);\r\n wb = {\r\n SheetNames: [sheetName],\r\n Sheets: {}\r\n };\r\n data = [];\r\n dataFields = this.adapter.apply(\"formatDataFields\", {\r\n dataFields: this.dataFields,\r\n format: \"xslx\"\r\n }).dataFields;\r\n // Vertical or horizontal (default) layout\r\n if (options.pivot) {\r\n dataFieldsOrder_2 = this.adapter.apply(\"dataFieldsOrder\", {\r\n dataFieldsOrder: this.dataFieldsOrder,\r\n format: \"xlsx\"\r\n }).dataFieldsOrder;\r\n $object.eachOrdered(dataFields, function (key, val) {\r\n var dataRow = [];\r\n if (options.addColumnNames) {\r\n dataRow.push(val);\r\n }\r\n for (var len = _this.data.length, i = 0; i < len; i++) {\r\n var dataValue = _this.data[i][key];\r\n dataRow.push(_this.convertToSpecialFormat(key, dataValue, options, true));\r\n }\r\n data.push(_this.getExcelRow(dataRow, options, undefined, true));\r\n }, function (a, b) {\r\n //console.log(a, b)\r\n var ai = dataFieldsOrder_2.indexOf(a);\r\n var bi = dataFieldsOrder_2.indexOf(b);\r\n if (ai > bi) {\r\n return 1;\r\n }\r\n else if (ai < bi) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n }\r\n else {\r\n // Add column names?\r\n if (options.addColumnNames) {\r\n data.push(this.getExcelRow(dataFields, options, undefined, true));\r\n }\r\n // Add lines\r\n for (len = this.data.length, i = 0; i < len; i++) {\r\n data.push(this.getExcelRow(this.data[i], options, dataFields));\r\n }\r\n }\r\n // Create sheet and add data\r\n wb.Sheets[sheetName] = XLSX.utils.aoa_to_sheet(data);\r\n // Apply adapters\r\n wb = this.adapter.apply(\"xlsxWorkbook\", {\r\n xlsx: XLSX,\r\n workbook: wb,\r\n options: options\r\n }).workbook;\r\n uri = this.adapter.apply(\"getExcel\", {\r\n data: \"data:\" + this.getContentType(type) + \";base64,\" + XLSX.write(wb, wbOptions),\r\n options: options\r\n }).data;\r\n return [2 /*return*/, uri];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * This is needed to work around Excel limitations.\r\n *\r\n * @param name Source name\r\n * @return Normalized name\r\n */\r\n Export.prototype.normalizeExcelSheetName = function (name) {\r\n name = name.replace(/([:\\\\\\/?*\\[\\]]+)/g, \" \");\r\n return $utils.truncateWithEllipsis(name, 31, \"...\", true);\r\n };\r\n /**\r\n * Rertuns an array of values to be used as Excel row.\r\n *\r\n * @ignore Exclude from docs\r\n * @param row Row data\r\n * @param options Options\r\n * @param dataFields Data fields\r\n * @param asIs Do not try to convert to dates\r\n * @return Array of values\r\n */\r\n Export.prototype.getExcelRow = function (row, options, dataFields, asIs) {\r\n var _this = this;\r\n if (asIs === void 0) { asIs = false; }\r\n // Init\r\n var items = [];\r\n // Data fields\r\n if (!dataFields) {\r\n dataFields = row;\r\n }\r\n // Data fields order\r\n var dataFieldsOrder = this.adapter.apply(\"dataFieldsOrder\", {\r\n dataFieldsOrder: this.dataFieldsOrder,\r\n format: \"xlsx\"\r\n }).dataFieldsOrder;\r\n // Process each row item\r\n $object.eachOrdered(dataFields, function (key, name) {\r\n // Get value\r\n var value = _this.convertEmptyValue(key, row[key], options);\r\n // Convert dates\r\n var item = asIs ? value : _this.convertToSpecialFormat(key, value, options, true);\r\n items.push(item);\r\n }, function (a, b) {\r\n //console.log(a, b)\r\n var ai = dataFieldsOrder.indexOf(a);\r\n var bi = dataFieldsOrder.indexOf(b);\r\n if (ai > bi) {\r\n return 1;\r\n }\r\n else if (ai < bi) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n return items;\r\n };\r\n /**\r\n * Returns chart's data formatted as CSV.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @param type Type of the export\r\n * @param options Options\r\n * @param encodeURI If true, will return result will be data URI\r\n * @return Promise\r\n * @async\r\n */\r\n Export.prototype.getCSV = function (type, options, encodeURI) {\r\n if (encodeURI === void 0) { encodeURI = true; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var csv, dataFields, br, data, dataFieldsOrder_3, len, i, row, charset, uri;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n if (!$type.hasValue(options)) {\r\n options = this.getFormatOptions(\"csv\");\r\n }\r\n csv = \"\";\r\n dataFields = this.adapter.apply(\"formatDataFields\", {\r\n dataFields: this.dataFields,\r\n format: \"csv\"\r\n }).dataFields;\r\n br = \"\";\r\n data = this.data;\r\n // Vertical or horizontal (default) layout\r\n if (options.pivot) {\r\n dataFieldsOrder_3 = this.adapter.apply(\"dataFieldsOrder\", {\r\n dataFieldsOrder: this.dataFieldsOrder,\r\n format: \"csv\"\r\n }).dataFieldsOrder;\r\n $object.eachOrdered(dataFields, function (key, val) {\r\n var dataRow = [];\r\n if (options.addColumnNames) {\r\n dataRow.push(val);\r\n }\r\n for (var len = data.length, i = 0; i < len; i++) {\r\n var dataValue = data[i][key];\r\n dataRow.push(_this.convertToSpecialFormat(key, dataValue, options, true));\r\n }\r\n csv += br + _this.getCSVRow(dataRow, options, undefined, true);\r\n br = \"\\n\";\r\n }, function (a, b) {\r\n var ai = dataFieldsOrder_3.indexOf(a);\r\n var bi = dataFieldsOrder_3.indexOf(b);\r\n if (ai > bi) {\r\n return -1;\r\n }\r\n else if (ai < bi) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n }\r\n else {\r\n for (len = data.length, i = 0; i < len; i++) {\r\n row = this.getCSVRow(data[i], options, dataFields);\r\n if (options.reverse) {\r\n csv = row + br + csv;\r\n }\r\n else {\r\n csv += br + row;\r\n }\r\n br = \"\\n\";\r\n }\r\n // Add column names?\r\n if (options.addColumnNames) {\r\n csv = this.getCSVRow(dataFields, options, undefined, true) + br + csv;\r\n }\r\n }\r\n charset = this.adapter.apply(\"charset\", {\r\n charset: \"charset=utf-8\",\r\n type: type,\r\n options: options\r\n }).charset;\r\n uri = this.adapter.apply(\"getCSV\", {\r\n data: encodeURI ? \"data:\" + this.getContentType(type) + \";\" + charset + \",\" + encodeURIComponent(csv) : csv,\r\n options: options\r\n }).data;\r\n return [2 /*return*/, uri];\r\n });\r\n });\r\n };\r\n /**\r\n * Formats a row of CSV data.\r\n *\r\n * @ignore Exclude from docs\r\n * @param row An object holding data for the row\r\n * @param options Options\r\n * @param dataFields Data fields\r\n * @param asIs Do not try to convert to dates\r\n * @return Formated CSV line\r\n */\r\n Export.prototype.getCSVRow = function (row, options, dataFields, asIs) {\r\n var _this = this;\r\n if (asIs === void 0) { asIs = false; }\r\n // Init\r\n var separator = options.separator || \",\";\r\n var items = [];\r\n // Data fields\r\n if (!dataFields) {\r\n dataFields = row;\r\n }\r\n // Data fields order\r\n var dataFieldsOrder = this.adapter.apply(\"dataFieldsOrder\", {\r\n dataFieldsOrder: this.dataFieldsOrder,\r\n format: \"csv\"\r\n }).dataFieldsOrder;\r\n // Process each row item\r\n $object.eachOrdered(dataFields, function (key, name) {\r\n // Get value\r\n var value = _this.convertEmptyValue(key, row[key], options);\r\n // Check if we need to skip\r\n // This is no longer required because we are iterating via dataFields anyway\r\n /*if ($type.hasValue(this.dataFields) && !$type.hasValue(this.dataFields[key])) {\r\n return;\r\n }*/\r\n // Convert dates\r\n var item = asIs ? value : _this.convertToSpecialFormat(key, value, options);\r\n // Cast and escape doublequotes\r\n item = \"\" + item;\r\n item = item.replace(/\"/g, '\"\"');\r\n // Enclose into double quotes\r\n if (options.forceQuotes || (item.search(new RegExp(\"\\\"|\\n|\" + separator, \"g\")) >= 0)) {\r\n item = \"\\\"\" + item + \"\\\"\";\r\n }\r\n // Add to item\r\n items.push(item);\r\n }, function (a, b) {\r\n //console.log(a, b)\r\n var ai = dataFieldsOrder.indexOf(a);\r\n var bi = dataFieldsOrder.indexOf(b);\r\n if (ai > bi) {\r\n return 1;\r\n }\r\n else if (ai < bi) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n return items.join(separator);\r\n };\r\n /**\r\n * Returns chart's data formatted as HTML table.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @since 4.7.0\r\n * @param type Type of the export\r\n * @param options Options\r\n * @param encodeURI If true, will return result will be data URI\r\n * @return Promise\r\n * @async\r\n */\r\n Export.prototype.getHTML = function (type, options, encodeURI) {\r\n if (encodeURI === void 0) { encodeURI = true; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var html, dataFields, data, dataFieldsOrder_4, len, i, charset, uri;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n if (!$type.hasValue(options)) {\r\n options = this.getFormatOptions(\"html\");\r\n }\r\n html = \"<table>\";\r\n if (options.tableClass) {\r\n html = \"<table class=\\\"\" + options.tableClass + \"\\\">\";\r\n }\r\n dataFields = this.adapter.apply(\"formatDataFields\", {\r\n dataFields: this.dataFields,\r\n format: \"html\"\r\n }).dataFields;\r\n data = this.data;\r\n // Vertical or horizontal (default) layout\r\n if (options.pivot) {\r\n dataFieldsOrder_4 = this.adapter.apply(\"dataFieldsOrder\", {\r\n dataFieldsOrder: this.dataFieldsOrder,\r\n format: \"html\"\r\n }).dataFieldsOrder;\r\n html += \"\\n<tbody>\";\r\n $object.eachOrdered(dataFields, function (key, val) {\r\n var dataRow = [];\r\n if (options.addColumnNames) {\r\n dataRow.push(val);\r\n }\r\n for (var len = data.length, i = 0; i < len; i++) {\r\n var dataValue = data[i][key];\r\n dataRow.push(_this.convertToSpecialFormat(key, dataValue, options, true));\r\n }\r\n html += \"\\n\" + _this.getHTMLRow(dataRow, options, undefined, true);\r\n }, function (a, b) {\r\n var ai = dataFieldsOrder_4.indexOf(a);\r\n var bi = dataFieldsOrder_4.indexOf(b);\r\n if (ai > bi) {\r\n return -1;\r\n }\r\n else if (ai < bi) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n html += \"\\n</tbody>\";\r\n }\r\n else {\r\n // Add column names?\r\n if (options.addColumnNames) {\r\n html += \"\\n<thead>\\n\" + this.getHTMLRow(dataFields, options, undefined, true, true) + \"\\n</thead>\";\r\n }\r\n html += \"\\n<tbody>\";\r\n for (len = data.length, i = 0; i < len; i++) {\r\n html += \"\\n\" + this.getHTMLRow(data[i], options, dataFields);\r\n }\r\n html += \"\\n</tbody>\";\r\n }\r\n html += \"\\n</table>\";\r\n charset = this.adapter.apply(\"charset\", {\r\n charset: \"charset=utf-8\",\r\n type: type,\r\n options: options\r\n }).charset;\r\n uri = this.adapter.apply(\"getHTML\", {\r\n data: encodeURI ? \"data:\" + this.getContentType(type) + \";\" + charset + \",\" + encodeURIComponent(html) : html,\r\n options: options\r\n }).data;\r\n return [2 /*return*/, uri];\r\n });\r\n });\r\n };\r\n /**\r\n * Formats a row of HTML data.\r\n *\r\n * @since 4.7.0\r\n * @ignore Exclude from docs\r\n * @param row An object holding data for the row\r\n * @param options Options\r\n * @param dataFields Data fields\r\n * @param asIs Do not try to convert to dates\r\n * @return Formated HTML row\r\n */\r\n Export.prototype.getHTMLRow = function (row, options, dataFields, asIs, headerRow) {\r\n var _this = this;\r\n if (asIs === void 0) { asIs = false; }\r\n if (headerRow === void 0) { headerRow = false; }\r\n // Init output\r\n var html = \"\\t<tr>\";\r\n if (options.rowClass) {\r\n html = \"\\t<tr class=\\\"\" + options.rowClass + \"\\\">\";\r\n }\r\n // Data fields\r\n if (!dataFields) {\r\n dataFields = row;\r\n }\r\n // Data fields order\r\n var dataFieldsOrder = this.adapter.apply(\"dataFieldsOrder\", {\r\n dataFieldsOrder: this.dataFieldsOrder,\r\n format: \"html\"\r\n }).dataFieldsOrder;\r\n // th or dh?\r\n var tag = headerRow ? \"th\" : \"td\";\r\n // Process each row item\r\n var first = true;\r\n $object.eachOrdered(dataFields, function (key, name) {\r\n // Get value\r\n var value = _this.convertEmptyValue(key, row[key], options);\r\n // Convert dates\r\n var item = asIs ? value : _this.convertToSpecialFormat(key, value, options);\r\n // Escape HTML entities\r\n item = \"\" + item;\r\n item = item.replace(/[\\u00A0-\\u9999<>\\&]/gim, function (i) {\r\n return \"&#\" + i.charCodeAt(0) + \";\";\r\n });\r\n // Which tag to use\r\n var useTag = tag;\r\n if (options.pivot && first) {\r\n useTag = \"th\";\r\n }\r\n // Add cell\r\n if (options.cellClass) {\r\n html += \"\\n\\t\\t<\" + useTag + \" class=\\\"\" + options.cellClass + \"\\\">\" + item + \"</\" + useTag + \">\";\r\n }\r\n else {\r\n html += \"\\n\\t\\t<\" + useTag + \">\" + item + \"</\" + useTag + \">\";\r\n }\r\n first = false;\r\n }, function (a, b) {\r\n var ai = dataFieldsOrder.indexOf(a);\r\n var bi = dataFieldsOrder.indexOf(b);\r\n if (ai > bi) {\r\n return 1;\r\n }\r\n else if (ai < bi) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n html += \"\\n\\t</tr>\";\r\n return html;\r\n };\r\n /**\r\n * Returns chart's data in JSON format.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @param type Type of the export\r\n * @param options Options\r\n * @param encodeURI If true, will return result will be data URI\r\n * @return Promise\r\n * @async\r\n */\r\n Export.prototype.getJSON = function (type, options, encodeURI) {\r\n if (encodeURI === void 0) { encodeURI = true; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var data, dataFields, sourceData, _loop_1, len, i, json, charset, uri;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n if (!$type.hasValue(options)) {\r\n options = this.getFormatOptions(\"json\");\r\n }\r\n dataFields = this.adapter.apply(\"formatDataFields\", {\r\n dataFields: this.dataFields,\r\n format: \"json\"\r\n }).dataFields;\r\n if (!this._dynamicDataFields) {\r\n data = [];\r\n sourceData = this.data;\r\n _loop_1 = function (len, i) {\r\n var value = sourceData[i];\r\n if (typeof value == \"object\") {\r\n var newValue_1 = {};\r\n $object.each(value, function (field, item) {\r\n if ($type.hasValue(dataFields[field])) {\r\n newValue_1[dataFields[field]] = _this.convertToSpecialFormat(field, item, options);\r\n }\r\n });\r\n data.push(newValue_1);\r\n }\r\n };\r\n for (len = sourceData.length, i = 0; i < len; i++) {\r\n _loop_1(len, i);\r\n }\r\n }\r\n else {\r\n data = this.data;\r\n }\r\n json = JSON.stringify(data, function (key, value) {\r\n if (typeof value == \"object\") {\r\n $object.each(value, function (field, item) {\r\n value[field] = _this.convertToSpecialFormat(field, item, options);\r\n });\r\n }\r\n return value;\r\n }, options.indent);\r\n charset = this.adapter.apply(\"charset\", {\r\n charset: \"charset=utf-8\",\r\n type: type,\r\n options: options\r\n }).charset;\r\n uri = this.adapter.apply(\"getJSON\", {\r\n data: encodeURI ? \"data:\" + this.getContentType(type) + \";\" + charset + \",\" + encodeURIComponent(json) : json,\r\n options: options\r\n }).data;\r\n return [2 /*return*/, uri];\r\n });\r\n });\r\n };\r\n /**\r\n * Converts the value to proper date format.\r\n *\r\n * @ignore Exclude from docs\r\n * @param field Field name\r\n * @param value Value\r\n * @param options Options\r\n * @param keepOriginal Will ignore formatting and will keep value as it is in data\r\n * @return Formatted date value or unmodified value\r\n */\r\n Export.prototype.convertToSpecialFormat = function (field, value, options, keepOriginal) {\r\n // Is this a timestamp or duration?\r\n if (typeof value == \"number\") {\r\n if (this.isDateField(field)) {\r\n value = new Date(value);\r\n }\r\n else if (this.isDurationField(field)) {\r\n return this.durationFormatter.format(value, this.durationFormat);\r\n }\r\n else if (this.isNumberField(field) && this.numberFormat) {\r\n return this.numberFormatter.format(value, this.numberFormat);\r\n }\r\n }\r\n if (value instanceof Date) {\r\n if (options.useTimestamps) {\r\n value = value.getTime();\r\n }\r\n else if (options.useLocale) {\r\n if (!keepOriginal) {\r\n value = value.toLocaleString();\r\n }\r\n }\r\n else {\r\n value = this.dateFormatter.format(value, this.dateFormat);\r\n }\r\n }\r\n else if ($type.isString(value) && this.isDateField(field) && this.dateFormat) {\r\n value = this.dateFormatter.format(this.dateFormatter.parse(value), this.dateFormat);\r\n }\r\n return value;\r\n };\r\n /**\r\n * Converts empty value based on `emptyAs` option.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Export.prototype.convertEmptyValue = function (field, value, options) {\r\n return $type.hasValue(value) ? value : options.emptyAs;\r\n };\r\n /**\r\n * Triggers download of the file.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @param uri Data URI with file content\r\n * @param fileName File name\r\n * @return Promise\r\n * @async\r\n */\r\n Export.prototype.download = function (uri, fileName, addBOM) {\r\n if (addBOM === void 0) { addBOM = false; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var parts, contentType, decoded, blob_1, chars, i, charCode, blob, link_1, parts, contentType, decoded, blob_2, url_2, chars, i, charCode, blob, url_3, link, parts, contentType, iframe, idoc;\r\n return __generator(this, function (_a) {\r\n if (this.msBlobDownloadSupport()) {\r\n parts = uri.split(\";\");\r\n contentType = parts.shift().replace(/data:/, \"\");\r\n uri = decodeURIComponent(parts.join(\";\").replace(/^[^,]*,/, \"\"));\r\n // Check if we need to Base64-decode\r\n if ([\"image/svg+xml\", \"application/json\", \"text/csv\"].indexOf(contentType) == -1) {\r\n try {\r\n decoded = atob(uri);\r\n uri = decoded;\r\n }\r\n catch (e) {\r\n // Error occurred, meaning string was not Base64-encoded. Do nothing.\r\n return [2 /*return*/, false];\r\n }\r\n }\r\n else {\r\n blob_1 = new Blob([uri], { type: contentType });\r\n window.navigator.msSaveBlob(blob_1, fileName);\r\n return [2 /*return*/, true];\r\n }\r\n chars = new Array(uri.length);\r\n for (i = 0; i < uri.length; ++i) {\r\n charCode = uri.charCodeAt(i);\r\n chars[i] = charCode;\r\n }\r\n blob = new Blob([new Uint8Array(chars)], { type: contentType });\r\n window.navigator.msSaveBlob(blob, fileName);\r\n }\r\n else if (this.blobDownloadSupport()) {\r\n link_1 = document.createElement(\"a\");\r\n link_1.download = fileName;\r\n document.body.appendChild(link_1);\r\n parts = uri.split(\";\");\r\n contentType = parts.shift().replace(/data:/, \"\");\r\n uri = decodeURIComponent(parts.join(\";\").replace(/^[^,]*,/, \"\"));\r\n if ([\"image/svg+xml\", \"application/json\", \"text/csv\", \"text/html\"].indexOf(contentType) == -1) {\r\n try {\r\n decoded = atob(uri);\r\n uri = decoded;\r\n }\r\n catch (e) {\r\n // Error occurred, meaning string was not Base64-encoded. Do nothing.\r\n return [2 /*return*/, false];\r\n }\r\n }\r\n else {\r\n if (addBOM) {\r\n uri = \"\\ufeff\" + uri;\r\n }\r\n blob_2 = new Blob([uri], { type: contentType });\r\n url_2 = window.URL.createObjectURL(blob_2);\r\n link_1.href = url_2;\r\n link_1.download = fileName;\r\n link_1.click();\r\n setTimeout(function () {\r\n document.body.removeChild(link_1);\r\n window.URL.revokeObjectURL(url_2);\r\n }, 100);\r\n return [2 /*return*/, true];\r\n }\r\n chars = new Array(uri.length);\r\n for (i = 0; i < uri.length; ++i) {\r\n charCode = uri.charCodeAt(i);\r\n chars[i] = charCode;\r\n }\r\n if (addBOM) {\r\n chars = [0xEF, 0xBB, 0xBF].concat(chars);\r\n }\r\n blob = new Blob([new Uint8Array(chars)], { type: contentType });\r\n url_3 = window.URL.createObjectURL(blob);\r\n link_1.href = url_3;\r\n link_1.download = fileName;\r\n document.body.appendChild(link_1);\r\n link_1.click();\r\n document.body.removeChild(link_1);\r\n setTimeout(function () {\r\n window.URL.revokeObjectURL(url_3);\r\n }, 100);\r\n }\r\n else if (this.linkDownloadSupport()) {\r\n link = document.createElement(\"a\");\r\n link.download = fileName;\r\n link.href = uri;\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n else if (this.legacyIE()) {\r\n parts = uri.match(/^data:(.*);[ ]*([^,]*),(.*)$/);\r\n if (parts.length === 4) {\r\n // Base64-encoded or text-based stuff?\r\n if (parts[2] == \"base64\") {\r\n // Base64-encoded - probably an image\r\n if (parts[1].match(/^image\\//)) {\r\n // Yep, an image. Let's create a temporary image placeholder,\r\n // so that user can use do Save As.\r\n this.showModal(\"<img src=\\\"\" + uri + \"\\\" style=\\\"float: left; max-width: 50%; max-height: 80%; margin: 0 1em 0.5em 0; border: 1px solid #eee;\\\" />\" +\r\n \"<p>\" + this.language.translate(\"To save the image, right-click thumbnail on the left and choose \\\"Save picture as...\\\"\") +\r\n \"</p>\" +\r\n \"<p style=\\\"text-align: center;\\\"><small>\" + this.language.translate(\"(Press ESC to close this message)\") + \"</small></p>\", this.language.translate(\"Image Export Complete\"));\r\n }\r\n }\r\n else {\r\n contentType = void 0;\r\n if (fileName.match(/\\.svg$/)) {\r\n contentType = \"image/svg+xml\";\r\n }\r\n else {\r\n contentType = \"text/plain\";\r\n fileName += \".txt\";\r\n }\r\n iframe = document.createElement(\"iframe\");\r\n iframe.width = \"1px\";\r\n iframe.height = \"1px\";\r\n iframe.style.display = \"none\";\r\n document.body.appendChild(iframe);\r\n idoc = iframe.contentDocument;\r\n idoc.open(contentType, \"replace\");\r\n // TODO test this with various encodings (e.g. UTF)\r\n //idoc.charset = parts[2].replace(/charset=/, \"\");\r\n idoc.write(decodeURIComponent(parts[3]));\r\n idoc.close();\r\n idoc.execCommand(\"SaveAs\", true, fileName);\r\n // Destroy the iframe\r\n document.body.removeChild(iframe);\r\n }\r\n }\r\n }\r\n else {\r\n /**\r\n * Something else - perhaps a mobile.\r\n * Let's just display it in the same page.\r\n * (hey we don't like it either)\r\n */\r\n window.location.href = uri;\r\n }\r\n return [2 /*return*/, true];\r\n });\r\n });\r\n };\r\n /**\r\n * Returns `true` if browser has any supported methods to trigger download\r\n * of a binary file.\r\n *\r\n * @return Supports downloads?\r\n */\r\n Export.prototype.downloadSupport = function () {\r\n //return !this.legacyIE();\r\n return this.linkDownloadSupport() || this.msBlobDownloadSupport();\r\n };\r\n /**\r\n * Checks if the browser supports \"download\" attribute on links.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Browser supports triggering downloads?\r\n */\r\n Export.prototype.linkDownloadSupport = function () {\r\n // Do we have this cached?\r\n var cache = registry.getCache(\"linkDownloadSupport\");\r\n if (cache === false || cache === true) {\r\n return cache;\r\n }\r\n var a = document.createElement(\"a\");\r\n var res = typeof a.download !== \"undefined\";\r\n registry.setCache(\"linkDownloadSupport\", res);\r\n return res;\r\n };\r\n /**\r\n * Checks if the browser supports download via `msBlob`.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Browser supports triggering downloads?\r\n */\r\n Export.prototype.blobDownloadSupport = function () {\r\n return $type.hasValue(window.Blob);\r\n };\r\n /**\r\n * Checks if the browser supports download via `msBlob`.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Browser supports triggering downloads?\r\n */\r\n Export.prototype.msBlobDownloadSupport = function () {\r\n return $type.hasValue(window.navigator.msSaveOrOpenBlob);\r\n };\r\n /**\r\n * Checks if this is a legacy version of IE.\r\n *\r\n * @ignore Exclude from docs\r\n * @return IE9 or less?\r\n */\r\n Export.prototype.legacyIE = function () {\r\n // Create a temporary <div> with conditional tags in it an an <i> tag.\r\n // Count <i>s. If there are some, we have IE9 or late on our hands.\r\n var div = document.createElement(\"div\");\r\n div.innerHTML = \"<!--[if lt IE 10]><i></i><![endif]-->\";\r\n return div.getElementsByTagName(\"i\").length == 1;\r\n };\r\n /**\r\n * Initiates print of the chart.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @param data Data URI for the image\r\n * @param options Options\r\n * @param title Optional title to use (uses window's title by default)\r\n * @return Promise\r\n * @async\r\n */\r\n Export.prototype.print = function (data, options, title) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (options.printMethod == \"css\") {\r\n return [2 /*return*/, this.printViaCSS(data, options, title)];\r\n }\r\n else {\r\n return [2 /*return*/, this.printViaIframe(data, options, title)];\r\n }\r\n return [2 /*return*/];\r\n });\r\n });\r\n };\r\n Export.prototype.printViaCSS = function (data, options, title) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var scroll, rule, originalTitle, img, isIOS;\r\n return __generator(this, function (_a) {\r\n scroll = document.documentElement.scrollTop || document.body.scrollTop;\r\n rule = new StyleRule($dom.getShadowRoot(this.container), \"body > *\", {\r\n \"display\": \"none\",\r\n \"position\": \"fixed\",\r\n \"visibility\": \"hidden\",\r\n \"opacity\": \"0\",\r\n \"clipPath\": \"polygon(0px 0px,0px 0px,0px 0px,0px 0px);\"\r\n });\r\n if (title && document && document.title) {\r\n originalTitle = document.title;\r\n document.title = title;\r\n }\r\n img = new Image();\r\n img.src = data;\r\n img.style.maxWidth = \"100%\";\r\n img.style.display = \"block\";\r\n img.style.position = \"relative\";\r\n img.style.visibility = \"visible\";\r\n img.style.opacity = \"1\";\r\n img.style.clipPath = \"none\";\r\n document.body.appendChild(img);\r\n // Print\r\n this.setTimeout(function () {\r\n window.print();\r\n }, 50);\r\n isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\r\n if (isIOS && (options.delay < 1000)) {\r\n options.delay = 1000;\r\n }\r\n else if (options.delay < 100) {\r\n options.delay = 100;\r\n }\r\n // Delay function that resets back the document the way ot was before\r\n this.setTimeout(function () {\r\n // Remove image\r\n document.body.removeChild(img);\r\n // Reset back all elements\r\n /*for (let len = items.length, i = 0; i < len; i++) {\r\n let item = <HTMLElement>items[i];\r\n if ($dom.isElement(item)) {\r\n item.style.display = states[i];\r\n }\r\n }*/\r\n rule.dispose();\r\n // Restore title\r\n if (originalTitle) {\r\n document.title = document.title;\r\n }\r\n // Scroll back the document the way it was before\r\n document.documentElement.scrollTop = document.body.scrollTop = scroll;\r\n }, options.delay || 500);\r\n return [2 /*return*/, true];\r\n });\r\n });\r\n };\r\n Export.prototype.printViaIframe = function (data, options, title) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var iframe, img, isIOS;\r\n return __generator(this, function (_a) {\r\n iframe = document.createElement(\"iframe\");\r\n iframe.style.visibility = \"hidden\";\r\n document.body.appendChild(iframe);\r\n // This is needed for FireFox\r\n iframe.contentWindow.document.open();\r\n iframe.contentWindow.document.close();\r\n img = new Image();\r\n img.src = data;\r\n img.style.maxWidth = \"100%\";\r\n img.style.height = \"auto\";\r\n if (title) {\r\n iframe.contentWindow.document.title = title;\r\n }\r\n iframe.contentWindow.document.body.appendChild(img);\r\n iframe.load = function () {\r\n iframe.contentWindow.document.body.appendChild(img);\r\n };\r\n // Print\r\n this.setTimeout(function () {\r\n try {\r\n if (!iframe.contentWindow.document.execCommand(\"print\", false, null)) {\r\n iframe.contentWindow.print();\r\n }\r\n }\r\n catch (e) {\r\n iframe.contentWindow.print();\r\n }\r\n }, options.delay || 50);\r\n isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\r\n if (isIOS && (options.delay < 1000)) {\r\n options.delay = 1000;\r\n }\r\n else if (options.delay < 100) {\r\n options.delay = 100;\r\n }\r\n // Delay function that resets back the document the way ot was before\r\n this.setTimeout(function () {\r\n // Remove image\r\n document.body.removeChild(iframe);\r\n }, options.delay + 50 || 100);\r\n return [2 /*return*/, true];\r\n });\r\n });\r\n };\r\n /**\r\n * Finds a background color for the element. If element is transparent it goes\r\n * up the DOM hierarchy to find a parent element that does.\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element\r\n * @return Color code\r\n */\r\n Export.prototype.findBackgroundColor = function (element) {\r\n // Check if element has styles set\r\n var opacity = 1, currentColor = getComputedStyle(element, \"background-color\");\r\n // Check opacity\r\n if (currentColor.match(/[^,]*,[^,]*,[^,]*,[ ]?0/) || currentColor == \"transparent\") {\r\n opacity = 0;\r\n }\r\n if (opacity == 0) {\r\n var parent_2 = element.parentElement; // || <Element>element.parentNode;\r\n // Completely transparent. Look for a parent\r\n if (parent_2) {\r\n return this.findBackgroundColor(parent_2);\r\n }\r\n else {\r\n return color(\"#fff\");\r\n }\r\n }\r\n else {\r\n return color(currentColor, opacity);\r\n }\r\n };\r\n Object.defineProperty(Export.prototype, \"container\", {\r\n /**\r\n * @return Reference\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"container\", {\r\n container: this._container\r\n }).container;\r\n },\r\n /**\r\n * A reference to a container to be used to place [[ExportMenu]] in.\r\n *\r\n * @param value Reference\r\n */\r\n set: function (value) {\r\n this._container = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"sprite\", {\r\n /**\r\n * @return Sprite\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"sprite\", {\r\n sprite: this._sprite\r\n }).sprite;\r\n },\r\n /**\r\n * A reference to [[Sprite]] to export. Can be any Sprite, including some\r\n * internal elements.\r\n *\r\n * @param value Sprite\r\n */\r\n set: function (value) {\r\n this._sprite = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"extraSprites\", {\r\n /**\r\n * @return Sprite\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"extraSprites\", {\r\n extraSprites: this._extraSprites\r\n }).extraSprites;\r\n },\r\n /**\r\n * An array of extra [[Sprite]] elements to include in export.\r\n *\r\n * It can be used to export any external elements, or even other charts.\r\n *\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * chart.exporting.extraSprites.push(chart2);\r\n * ```\r\n * ```JavaScript\r\n * chart.exporting.extraSprites.push(chart2);\r\n * ```\r\n *\r\n * IMPORTANT: This setting is ignored when exporting to SVG format.\r\n *\r\n * @since 4.2.0\r\n * @param value Sprite\r\n */\r\n set: function (value) {\r\n this._extraSprites = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"validateSprites\", {\r\n /**\r\n * @return Sprite\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"validateSprites\", {\r\n validateSprites: this._validateSprites\r\n }).validateSprites;\r\n },\r\n /**\r\n * An array of [[Sprite]] elements that need to be valid before export\r\n * commences.\r\n *\r\n * If any of those elements is not completely ready when export is triggered,\r\n * the export will wait until they are (their `validated` event triggers)\r\n * before going through with the export opertaion.\r\n *\r\n * This is useful if you need to modify chart appearance for the export.\r\n *\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * // Add watermark\r\n * let watermark = chart.createChild(am4core.Label);\r\n * watermark.text = \"Copyright (C) 2019\";\r\n * watermark.disabled = true;\r\n *\r\n * // Add watermark to validated sprites\r\n * chart.exporting.validateSprites.push(watermark);\r\n *\r\n * // Enable watermark on export\r\n * chart.exporting.events.on(\"exportstarted\", function(ev) {\r\n * watermark.disabled = false;\r\n * });\r\n *\r\n * // Disable watermark when export finishes\r\n * chart.exporting.events.on(\"exportfinished\", function(ev) {\r\n * watermark.disabled = true;\r\n * });\r\n * ```\r\n * ```JavaScript\r\n * // Add watermark\r\n * var watermark = chart.createChild(am4core.Label);\r\n * watermark.text = \"Copyright (C) 2019\";\r\n * watermark.disabled = true;\r\n *\r\n * // Add watermark to validated sprites\r\n * chart.exporting.validateSprites.push(watermark);\r\n *\r\n * // Enable watermark on export\r\n * chart.exporting.events.on(\"exportstarted\", function(ev) {\r\n * watermark.disabled = false;\r\n * });\r\n *\r\n * // Disable watermark when export finishes\r\n * chart.exporting.events.on(\"exportfinished\", function(ev) {\r\n * watermark.disabled = true;\r\n * });\r\n * ```\r\n *\r\n * @since 4.6.8\r\n * @param value Sprite\r\n */\r\n set: function (value) {\r\n this._validateSprites = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"data\", {\r\n /**\r\n * @return Data\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"data\", {\r\n data: this._data\r\n }).data;\r\n },\r\n /**\r\n * Data to export.\r\n *\r\n * @param value Data\r\n */\r\n set: function (value) {\r\n this._data = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"dataFields\", {\r\n /**\r\n * @return Field names `{ field: fieldName }`\r\n */\r\n get: function () {\r\n if (!this._dataFields) {\r\n this.generateDataFields();\r\n }\r\n return this.adapter.apply(\"dataFields\", {\r\n dataFields: this._dataFields\r\n }).dataFields;\r\n },\r\n /**\r\n * Data fields in `{ field: fieldName }` format. Those are used for\r\n * exporting in data formats to name the columns.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/exporting/#Changing_order_and_names_of_columns} for examples and details\r\n * @param value Field names\r\n */\r\n set: function (value) {\r\n this._dataFields = value;\r\n this._dynamicDataFields = false;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Called after target chart's data updates.\r\n *\r\n * @ignore\r\n */\r\n Export.prototype.handleDataUpdated = function () {\r\n if (this._dynamicDataFields) {\r\n this._dataFields = undefined;\r\n }\r\n var hasData = this.data.length > 0;\r\n if (this._prevHasData != hasData) {\r\n this._prevHasData = hasData;\r\n if (this.menu) {\r\n this.menu.invalidate();\r\n }\r\n }\r\n };\r\n Object.defineProperty(Export.prototype, \"dateFormatter\", {\r\n /**\r\n * @return A DateFormatter instance\r\n */\r\n get: function () {\r\n if (!this._dateFormatter) {\r\n this._dateFormatter = new DateFormatter();\r\n this._dateFormatter.language = this.language;\r\n }\r\n return this.adapter.apply(\"dateFormatter\", {\r\n dateFormatter: this._dateFormatter\r\n }).dateFormatter;\r\n },\r\n /**\r\n * A [[DateFormatter]] to use when formatting dates when exporting data.\r\n *\r\n * @param value DateFormatter instance\r\n */\r\n set: function (value) {\r\n this._dateFormatter = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"dateFormat\", {\r\n /**\r\n * @return Date format\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"dateFormat\", {\r\n dateFormat: this._dateFormat\r\n }).dateFormat;\r\n },\r\n /**\r\n * A date format to use for exporting dates. Will use [[DateFormatter]]\r\n * format if not set.\r\n *\r\n * @param value Date format\r\n */\r\n set: function (value) {\r\n this._dateFormat = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"dateFields\", {\r\n /**\r\n * @return Date field list\r\n */\r\n get: function () {\r\n if (!this._dateFields) {\r\n this._dateFields = new List();\r\n }\r\n return this.adapter.apply(\"dateFields\", {\r\n dateFields: this._dateFields\r\n }).dateFields;\r\n },\r\n /**\r\n * A list of fields that hold date values.\r\n *\r\n * @param value Date field list\r\n */\r\n set: function (value) {\r\n this._dateFields = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"numberFormatter\", {\r\n /**\r\n * @return A NumberFormatter instance\r\n */\r\n get: function () {\r\n if (!this._numberFormatter) {\r\n this._numberFormatter = new NumberFormatter();\r\n this._numberFormatter.language = this.language;\r\n }\r\n return this.adapter.apply(\"numberFormatter\", {\r\n numberFormatter: this._numberFormatter\r\n }).numberFormatter;\r\n },\r\n /**\r\n * A [[NumberFormatter]] to use when formatting dates when exporting data.\r\n *\r\n * @since 4.5.15\r\n * @param value NumberFormatter instance\r\n */\r\n set: function (value) {\r\n this._numberFormatter = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"numberFormat\", {\r\n /**\r\n * @return Number format\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"numberFormat\", {\r\n numberFormat: this._numberFormat\r\n }).numberFormat;\r\n },\r\n /**\r\n * A number format to use for exporting dates. Will use [[NumberFormatter]]\r\n * format if not set.\r\n *\r\n * @since 4.5.15\r\n * @param value Number format\r\n */\r\n set: function (value) {\r\n this._numberFormat = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"numberFields\", {\r\n /**\r\n * @return Number field list\r\n */\r\n get: function () {\r\n if (!this._numberFields) {\r\n this._numberFields = new List();\r\n }\r\n return this.adapter.apply(\"numberFields\", {\r\n numberFields: this._numberFields\r\n }).numberFields;\r\n },\r\n /**\r\n * A list of fields that hold number values.\r\n *\r\n * @since 4.5.15\r\n * @param value Number field list\r\n */\r\n set: function (value) {\r\n this._numberFields = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"durationFormatter\", {\r\n /**\r\n * @return A DurationFormatter instance\r\n */\r\n get: function () {\r\n if (!this._durationFormatter) {\r\n this._durationFormatter = new DurationFormatter();\r\n this._durationFormatter.language = this.language;\r\n }\r\n return this.adapter.apply(\"durationFormatter\", {\r\n durationFormatter: this._durationFormatter\r\n }).durationFormatter;\r\n },\r\n /**\r\n * A [[DurationFormatter]] to use when formatting duration values when\r\n * exporting data.\r\n *\r\n * @param value DurationFormatter instance\r\n */\r\n set: function (value) {\r\n this._durationFormatter = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"durationFormat\", {\r\n /**\r\n * @return Duration format\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"durationFormat\", {\r\n durationFormat: this._durationFormat\r\n }).durationFormat;\r\n },\r\n /**\r\n * A format to use when formatting values from `durationFields`.\r\n * Will use [[DurationFormatter]] format if not set.\r\n *\r\n * @param value Duration format\r\n */\r\n set: function (value) {\r\n this._durationFormat = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"durationFields\", {\r\n /**\r\n * @return Duration field list\r\n */\r\n get: function () {\r\n if (!this._durationFields) {\r\n this._durationFields = new List();\r\n }\r\n return this.adapter.apply(\"durationFields\", {\r\n durationFields: this._durationFields\r\n }).durationFields;\r\n },\r\n /**\r\n * A list of fields that hold duration values.\r\n *\r\n * @param value Duration field list\r\n */\r\n set: function (value) {\r\n this._durationFields = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Generates data fields out of the first row of data.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Export.prototype.generateDataFields = function () {\r\n var _this = this;\r\n this._dataFields = {};\r\n if (this.data.length) {\r\n $array.each(this.data, function (row) {\r\n $object.each(row, function (key, value) {\r\n if (!$type.hasValue(_this._dataFields[key])) {\r\n _this._dataFields[key] = _this.adapter.apply(\"dataFieldName\", {\r\n name: key,\r\n field: key\r\n }).name;\r\n }\r\n });\r\n });\r\n }\r\n };\r\n /**\r\n * Cheks against `dateFields` property to determine if this field holds\r\n * dates.\r\n *\r\n * @ignore Exclude from docs\r\n * @param field Field name\r\n * @param options Options\r\n * @return `true` if it's a date field\r\n */\r\n Export.prototype.isDateField = function (field) {\r\n return this.adapter.apply(\"isDateField\", {\r\n isDateField: this.dateFields.contains(field),\r\n field: field\r\n }).isDateField;\r\n };\r\n /**\r\n * Cheks against `numberFields` property to determine if this field holds\r\n * numbers.\r\n *\r\n * @ignore Exclude from docs\r\n * @param field Field name\r\n * @param options Options\r\n * @return `true` if it's a number field\r\n */\r\n Export.prototype.isNumberField = function (field) {\r\n return this.adapter.apply(\"isNumberField\", {\r\n isNumberField: this.numberFields.contains(field),\r\n field: field\r\n }).isNumberField;\r\n };\r\n /**\r\n * Cheks against `durationFields` property to determine if this field holds\r\n * durations.\r\n *\r\n * @ignore Exclude from docs\r\n * @param field Field name\r\n * @param options Options\r\n * @return `true` if it's a date field\r\n */\r\n Export.prototype.isDurationField = function (field) {\r\n return this.adapter.apply(\"isDurationField\", {\r\n isDurationField: this.durationFields.contains(field),\r\n field: field\r\n }).isDurationField;\r\n };\r\n /**\r\n * Returns proper content type for the export type.\r\n *\r\n * @param type Export format/type\r\n * @return Proper content type, i.e. \"image/jpeg\"\r\n */\r\n Export.prototype.getContentType = function (type) {\r\n var contentType = \"\";\r\n switch (type) {\r\n case \"png\":\r\n case \"gif\":\r\n contentType = \"image/\" + type;\r\n break;\r\n case \"jpg\":\r\n contentType = \"image/jpeg\";\r\n break;\r\n case \"svg\":\r\n contentType = \"image/svg+xml\";\r\n break;\r\n case \"csv\":\r\n contentType = \"text/csv\";\r\n break;\r\n case \"json\":\r\n contentType = \"application/json\";\r\n break;\r\n case \"html\":\r\n contentType = \"text/html\";\r\n break;\r\n case \"pdf\":\r\n case \"pdfdata\":\r\n contentType = \"application/pdf\";\r\n break;\r\n case \"xlsx\":\r\n contentType = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\";\r\n break;\r\n }\r\n return this.adapter.apply(\"contentType\", {\r\n contentType: contentType,\r\n type: type\r\n }).contentType;\r\n };\r\n Object.defineProperty(Export.prototype, \"filePrefix\", {\r\n /**\r\n * @return File prefix\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"filePrefix\", {\r\n filePrefix: this._filePrefix\r\n }).filePrefix;\r\n },\r\n /**\r\n * A file prefix to be used for all exported formats.\r\n *\r\n * Export will apply format-related extension to it. E.g. if this is set to\r\n * \"myExport\", the file name of the PNG exported image will be \"myExport.png\".\r\n *\r\n * @param value File prefix\r\n */\r\n set: function (value) {\r\n this._filePrefix = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"backgroundColor\", {\r\n /**\r\n * @return Background color\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"backgroundColor\", {\r\n backgroundColor: this._backgroundColor\r\n }).backgroundColor;\r\n },\r\n /**\r\n * A background color to be used for exported images. If set, this will\r\n * override the automatically acquired background color.\r\n *\r\n * @param value Color\r\n */\r\n set: function (value) {\r\n this._backgroundColor = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"title\", {\r\n /**\r\n * @return Title\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"title\", {\r\n title: this._title\r\n }).title;\r\n },\r\n /**\r\n * A title to be used when printing.\r\n *\r\n * @param value Title\r\n */\r\n set: function (value) {\r\n this._title = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Displays a preloader/exporting indicator.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Add ability to change text\r\n */\r\n Export.prototype.showPreloader = function () {\r\n var preloader = this.preloader;\r\n if (preloader) {\r\n preloader.progress = 0.5;\r\n preloader.label.text = \"...\";\r\n }\r\n };\r\n /**\r\n * Hides preloader/exporting indicator\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Export.prototype.hidePreloader = function () {\r\n var preloader = this.preloader;\r\n if (preloader) {\r\n preloader.progress = 1;\r\n }\r\n };\r\n Object.defineProperty(Export.prototype, \"preloader\", {\r\n /**\r\n * Returns a an instance of [[Preloader]] associated with the Sprite being\r\n * exported.\r\n *\r\n * @return Preloader\r\n */\r\n get: function () {\r\n return this._sprite && this._sprite.parent && this._sprite.parent.preloader ?\r\n this._sprite.parent.preloader :\r\n undefined;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Displays a modal saying export is taking longer than expected.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Export.prototype.showTimeout = function () {\r\n this.showModal(this.adapter.apply(\"timeoutMessage\", {\r\n message: this.language.translate(\"Export operation took longer than expected. Something might have gone wrong.\")\r\n }).message);\r\n };\r\n /**\r\n * Hides preloader/exporting indicator.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Export.prototype.hideTimeout = function () {\r\n if (this._timeoutTimeout) {\r\n this.removeDispose(this._timeoutTimeout);\r\n this._timeoutTimeout = null;\r\n }\r\n this.hideModal();\r\n };\r\n Object.defineProperty(Export.prototype, \"language\", {\r\n /**\r\n * @return A [[Language]] instance to be used\r\n */\r\n get: function () {\r\n if (!this._language) {\r\n this._language = new Language();\r\n }\r\n return this._language;\r\n },\r\n /**\r\n * A [[Language]] instance to be used for translations.\r\n *\r\n * @param value An instance of [[Language]]\r\n */\r\n set: function (value) {\r\n this._language = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"modal\", {\r\n /**\r\n * Returns (and creates) [[Modal]].\r\n *\r\n * @ignore Exclude from docs\r\n * @return Modal instance\r\n */\r\n get: function () {\r\n if (!this._modal) {\r\n this._modal = new Modal();\r\n // Prefix with Sprite's class name\r\n this._modal.adapter.add(\"classPrefix\", function (value) {\r\n value = options.classNamePrefix + value;\r\n return value;\r\n });\r\n }\r\n return this._modal;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Shows [[Modal]] with specific text.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Modal contents\r\n */\r\n Export.prototype.showModal = function (text, title) {\r\n // Hide previous modal and preloader\r\n this.hideModal();\r\n this.hidePreloader();\r\n // Create modal\r\n var modal = this.modal;\r\n modal.container = this.sprite.svgContainer.SVGContainer;\r\n modal.content = text;\r\n modal.readerTitle = title;\r\n modal.open();\r\n };\r\n /**\r\n * Hides modal window if one's currently open.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Export.prototype.hideModal = function () {\r\n if (this._modal) {\r\n this.modal.close();\r\n }\r\n };\r\n /**\r\n * Loads canvg dynamic module.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Instance of canvg\r\n * @async\r\n */\r\n Export.prototype._canvg = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var canvg;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, import(/* webpackChunkName: \"canvg\" */ \"../../canvg/index.js\")];\r\n case 1:\r\n canvg = (_a.sent());\r\n if (canvg.default != null) {\r\n return [2 /*return*/, canvg.default];\r\n }\r\n else {\r\n return [2 /*return*/, canvg];\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n Object.defineProperty(Export.prototype, \"canvg\", {\r\n /**\r\n * Returns canvg instance.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Instance of canvg\r\n */\r\n get: function () {\r\n return this._canvg();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"pdfmake\", {\r\n /**\r\n * Returns pdfmake instance.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Instance of pdfmake\r\n */\r\n get: function () {\r\n if (pdfmakePromise == null) {\r\n pdfmakePromise = _pdfmake();\r\n }\r\n return pdfmakePromise;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Loads xlsx dynamic module.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Instance of pdfmake\r\n * @async\r\n */\r\n Export.prototype._xlsx = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, import(/* webpackChunkName: \"xlsx\" */ \"xlsx\")];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n Object.defineProperty(Export.prototype, \"xlsx\", {\r\n /**\r\n * Returns xlsx instance.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Instance of pdfmake\r\n */\r\n get: function () {\r\n return this._xlsx();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets options for a format.\r\n */\r\n Export.prototype.setFormatOptions = function (type, options) {\r\n this._formatOptions.setKey(type, options);\r\n };\r\n /**\r\n * Returns current options for a format.\r\n */\r\n Export.prototype.getFormatOptions = function (type) {\r\n return this._formatOptions.getKey(type);\r\n };\r\n Object.defineProperty(Export.prototype, \"formatOptions\", {\r\n /**\r\n * A [[Dictionary]] object containing format-specific options.\r\n *\r\n * May be used to change specific option for the format:\r\n *\r\n * ```TypeScript\r\n * chart.exporting.formatOptions.getKey(\"csv\").disabled = true;\r\n * ```\r\n * ```JavaScript\r\n * chart.exporting.formatOptions.getKey(\"csv\").disabled = true;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"exporting\": {\r\n * // ...\r\n * \"formatOptions\": {\r\n * \"csv\": {\r\n * \"disabled\": true\r\n * }\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * @since 4.9.12\r\n * @return Options\r\n */\r\n get: function () {\r\n return this._formatOptions;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Disables interactivity on parent chart.\r\n */\r\n Export.prototype._disablePointers = function () {\r\n if (!$type.hasValue(this._spriteInteractionsEnabled)) {\r\n this._spriteInteractionsEnabled = this.sprite.interactionsEnabled;\r\n }\r\n this.sprite.interactionsEnabled = false;\r\n };\r\n /**\r\n * Releases temporarily disabled pointers on parent chart.\r\n */\r\n Export.prototype._releasePointers = function () {\r\n if ($type.hasValue(this._spriteInteractionsEnabled) && !this._exportRunning) {\r\n this.sprite.interactionsEnabled = this._spriteInteractionsEnabled;\r\n }\r\n };\r\n /**\r\n * Hides all elements that should not be included in the exported image.\r\n */\r\n Export.prototype.hideNonExportableSprites = function () {\r\n var _this = this;\r\n if (this._objectsAlreadyHidden) {\r\n return;\r\n }\r\n var svgContainer = this.sprite.svgContainer;\r\n if (svgContainer) {\r\n $array.each(svgContainer.nonExportableSprites, function (item) {\r\n if (!item.isHidden && !item.isHiding && item.visible) {\r\n _this._hiddenObjects.push(item);\r\n }\r\n item.hide(0);\r\n });\r\n }\r\n this._objectsAlreadyHidden = true;\r\n };\r\n /**\r\n * Respores elements that were hidden before export.\r\n */\r\n Export.prototype.restoreNonExportableSprites = function () {\r\n if (!this._objectsAlreadyHidden) {\r\n return;\r\n }\r\n $array.each(this._hiddenObjects, function (item) {\r\n item.show(0);\r\n });\r\n this._hiddenObjects = [];\r\n this._objectsAlreadyHidden = false;\r\n };\r\n /**\r\n * Checks if there are elements that absolutely need to be validated before\r\n * export.\r\n *\r\n * If there are invalid elements, it will await for them to be validated.\r\n *\r\n * @return Promise\r\n */\r\n Export.prototype.awaitValidSprites = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var promises;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n promises = [];\r\n if (this.validateSprites.length) {\r\n $array.each(this.validateSprites, function (sprite, index) {\r\n if (sprite.invalid) {\r\n promises.push(new Promise(function (resolve, reject) {\r\n sprite.events.once(\"validated\", function (ev) {\r\n resolve();\r\n });\r\n }));\r\n }\r\n });\r\n }\r\n if (!promises.length) return [3 /*break*/, 2];\r\n return [4 /*yield*/, Promise.all(promises)];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n Export.prototype.processConfig = function (config) {\r\n registry.registeredClasses[\"ExportMenu\"] = ExportMenu;\r\n if (config) {\r\n // Set up menu\r\n if ($type.hasValue(config.menu) && !$type.hasValue(config.menu.type)) {\r\n config.menu.type = \"ExportMenu\";\r\n }\r\n if ($type.hasValue(config.dataFields) && $type.isObject(config.dataFields)) {\r\n this.dataFields = config.dataFields;\r\n delete config.dataFields;\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n /**\r\n * XLINK namespace definition.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Export.XLINK = \"http://www.w3.org/1999/xlink\";\r\n return Export;\r\n}(Validatable));\r\nexport { Export };\r\n//# sourceMappingURL=Export.js.map","import { StyleRule } from \"../utils/DOM\";\r\nimport { InterfaceColorSet } from \"../utils/InterfaceColorSet\";\r\nimport { Dictionary } from \"../utils/Dictionary\";\r\nimport { MultiDisposer, CounterDisposer } from \"../utils/Disposer\";\r\nvar rules = new Dictionary();\r\n/**\r\n * A dynamically-loadable CSS module for Export menu.\r\n *\r\n * @ignore Exclude from docs\r\n * @param prefix Prefix to addtach to class names\r\n * @return A MultiDisposer with style rules\r\n */\r\nexport default function (element, prefix) {\r\n var newPrefix = (prefix ? prefix : \"amexport\");\r\n var colorSet = new InterfaceColorSet();\r\n var counter = rules.insertKeyIfEmpty(newPrefix, function () {\r\n var disposer = new MultiDisposer([\r\n /*new StyleRule(`.${newPrefix}-menu`, {\r\n \"opacity\": \"0.3\",\r\n \"transition\": \"all 100ms ease-in-out\",\r\n }),\r\n\r\n new StyleRule(`div:hover .${newPrefix}-menu, .${newPrefix}-menu.active`, {\r\n \"opacity\": \"0.9\",\r\n }),*/\r\n new StyleRule(element, \".\" + newPrefix + \"-menu *\", {\r\n \"box-sizing\": \"border-box\"\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-menu-level-0\", {\r\n \"position\": \"absolute\",\r\n \"top\": \"5px\",\r\n \"right\": \"5px\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-menu-level-0.\" + newPrefix + \"-left\", {\r\n \"right\": \"auto\",\r\n \"left\": \"5px\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-menu-level-0.\" + newPrefix + \"-right\", {\r\n \"right\": \"5px\",\r\n \"left\": \"auto\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-menu-level-0.\" + newPrefix + \"-top\", {\r\n \"top\": \"5px\",\r\n \"bottom\": \"auto\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-menu-level-0.\" + newPrefix + \"-bottom\", {\r\n \"top\": \"auto\",\r\n \"bottom\": \"5px\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-item.\" + newPrefix + \"-item-level-0\", {\r\n \"opacity\": \"0.3\",\r\n \"width\": \"30px\",\r\n \"min-height\": \"30px\",\r\n \"transition\": \"all 100ms ease-in-out\",\r\n }),\r\n new StyleRule(element, \"div:hover .\" + newPrefix + \"-item.\" + newPrefix + \"-item-level-0, .\" + newPrefix + \"-item.\" + newPrefix + \"-item-level-0.active\", {\r\n \"opacity\": \"0.9\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-item.\" + newPrefix + \"-item-level-0 > a\", {\r\n \"padding\": \"0\",\r\n \"text-align\": \"center\",\r\n \"overflow\": \"hidden\"\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-item.\" + newPrefix + \"-item-level-0:before\", {\r\n \"display\": \"block\"\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-item\", {\r\n \"position\": \"relative\",\r\n \"display\": \"block\",\r\n \"opacity\": \"0\",\r\n \"z-index\": \"1\",\r\n \"border-radius\": \"3px\",\r\n \"background-color\": colorSet.getFor(\"secondaryButton\").hex,\r\n \"padding\": \"0\",\r\n \"margin\": \"1px 1px 0 0\",\r\n \"color\": colorSet.getFor(\"secondaryButton\").alternative.hex,\r\n \"transition\": \"all 100ms ease-in-out, opacity 0.5s ease 0.5s\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-left .\" + newPrefix + \"-item\", {\r\n \"margin\": \"1px 0 0 1px\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-item:hover, .\" + newPrefix + \"-item.active\", {\r\n \"background\": colorSet.getFor(\"secondaryButtonHover\").hex,\r\n \"color\": colorSet.getFor(\"secondaryButtonText\").hex,\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-item > .\" + newPrefix + \"-menu\", {\r\n \"position\": \"absolute\",\r\n \"top\": \"-1px\",\r\n \"right\": \"0\",\r\n \"margin-right\": \"100%\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-left .\" + newPrefix + \"-item > .\" + newPrefix + \"-menu\", {\r\n \"left\": \"0\",\r\n \"right\": \"auto\",\r\n \"margin-left\": \"100%\",\r\n \"margin-right\": \"auto\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-right .\" + newPrefix + \"-item > .\" + newPrefix + \"-menu\", {\r\n \"left\": \"auto\",\r\n \"right\": \"0\",\r\n \"margin-left\": \"auto\",\r\n \"margin-right\": \"100%\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-top .\" + newPrefix + \"-item > .\" + newPrefix + \"-menu\", {\r\n \"top\": \"-1px\",\r\n \"bottom\": \"auto\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-bottom .\" + newPrefix + \"-item > .\" + newPrefix + \"-menu\", {\r\n \"top\": \"auto\",\r\n \"bottom\": \"0\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-item > .\" + newPrefix + \"-menu\", {\r\n \"display\": \"none\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-item:hover > .\" + newPrefix + \"-menu, .\" + newPrefix + \"-item.active > .\" + newPrefix + \"-menu\", {\r\n \"display\": \"block\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-item:hover > .\" + newPrefix + \"-menu > .\" + newPrefix + \"-item, .\" + newPrefix + \"-item.active > .\" + newPrefix + \"-menu > .\" + newPrefix + \"-item\", {\r\n \"opacity\": \"1\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-menu\", {\r\n \"display\": \"block\",\r\n \"list-style\": \"none\",\r\n \"margin\": \"0\",\r\n \"padding\": \"0\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-label\", {\r\n \"display\": \"block\",\r\n \"cursor\": \"default\",\r\n \"padding\": \"0.5em 1em\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-icon\", {\r\n \"display\": \"block\",\r\n \"cursor\": \"default\",\r\n \"padding\": \"0.2em 0.4em\",\r\n \"width\": \"1.2em\",\r\n \"height\": \"1.2em\",\r\n \"min-width\": \"32px\",\r\n \"min-height\": \"32px\",\r\n \"margin\": \"auto auto\",\r\n \"border-radius\": \"3px\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-item-level-0 > .\" + newPrefix + \"-icon\", {\r\n \"padding\": \"0.1em 0.2em\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-clickable\", {\r\n \"cursor\": \"pointer\",\r\n }),\r\n ]);\r\n return new CounterDisposer(function () {\r\n rules.removeKey(newPrefix);\r\n disposer.dispose();\r\n });\r\n });\r\n return counter.increment();\r\n}\r\n//# sourceMappingURL=ExportCSS.js.map","/**\r\n * ExportMenu provides functionality for building Export menu\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport exportCSS from \"./ExportCSS\";\r\nimport { Adapter } from \"../utils/Adapter\";\r\nimport { List } from \"../utils/List\";\r\nimport { getInteraction } from \"../interaction/Interaction\";\r\nimport { MutableValueDisposer } from \"../utils/Disposer\";\r\nimport { Language } from \"../utils/Language\";\r\nimport { Validatable } from \"../utils/Validatable\";\r\nimport { keyboard } from \"../utils/Keyboard\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $iter from \"../utils/Iterator\";\r\nimport * as $dom from \"../utils/DOM\";\r\nimport * as $type from \"../utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a menu for Export operations.\r\n *\r\n * To add an export menu to a chart, set this to a new instance of\r\n * [[ExportMenu]].\r\n *\r\n * ```TypeScript\r\n * chart.exporting.menu = new am4core.ExportMenu();\r\n * ```\r\n * ```JavaScript\r\n * chart.exporting.menu = new am4core.ExportMenu();\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"exporting\": {\r\n * \"menu\": {}\r\n * }\r\n * }\r\n * ```\r\n * @important\r\n */\r\nvar ExportMenu = /** @class */ (function (_super) {\r\n __extends(ExportMenu, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ExportMenu() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * An [[Adapter]].\r\n */\r\n _this.adapter = new Adapter(_this);\r\n /**\r\n * How many milliseconds to hold menu/sub-menu open after it loses focus or\r\n * hover, before auto-closing it.\r\n *\r\n * @default 1000\r\n */\r\n _this.closeDelay = 1000;\r\n /**\r\n * Close the menu automatically when some export operation is triggered.\r\n *\r\n * @default true\r\n * @since 4.2.2\r\n */\r\n _this.closeOnClick = true;\r\n /**\r\n * An instance of [[Language]].\r\n */\r\n _this._language = new MutableValueDisposer();\r\n /**\r\n * What HTML tags to use to build menu.\r\n */\r\n _this._menuTag = \"ul\";\r\n /**\r\n * Which tag to use to enclose individual menu items.\r\n */\r\n _this._itemTag = \"li\";\r\n /**\r\n * Tag to wrap menu item labels in.\r\n */\r\n _this._labelTag = \"a\";\r\n /**\r\n * Tag to use for icons\r\n */\r\n _this._iconTag = \"img\";\r\n /**\r\n * Prefix for class names applied to menu elements.\r\n */\r\n _this._classPrefix = \"amexport\";\r\n /**\r\n * If set to `true` [[ExportMenu]] will load it's own external CSS when\r\n * instantiated.\r\n */\r\n _this._defaultStyles = true;\r\n /**\r\n * Horizontal positioning.\r\n */\r\n _this._align = \"right\";\r\n /**\r\n * Vertical positioning.\r\n */\r\n _this._verticalAlign = \"top\";\r\n /**\r\n * A tabindex to apply to Export Menu.\r\n */\r\n _this._tabindex = 0;\r\n /**\r\n * Whether next menu close event should be ignored.\r\n */\r\n _this._ignoreNextClose = false;\r\n /**\r\n * Default menu items.\r\n */\r\n _this._items = [\r\n {\r\n \"label\": \"...\",\r\n \"menu\": [\r\n {\r\n \"label\": \"Image\",\r\n \"menu\": [\r\n { \"type\": \"png\", \"label\": \"PNG\" },\r\n { \"type\": \"jpg\", \"label\": \"JPG\" },\r\n { \"type\": \"svg\", \"label\": \"SVG\" },\r\n { \"type\": \"pdf\", \"label\": \"PDF\" }\r\n ]\r\n }, {\r\n \"label\": \"Data\",\r\n \"menu\": [\r\n { \"type\": \"json\", \"label\": \"JSON\" },\r\n { \"type\": \"csv\", \"label\": \"CSV\" },\r\n { \"type\": \"xlsx\", \"label\": \"XLSX\" },\r\n { \"type\": \"html\", \"label\": \"HTML\" },\r\n { \"type\": \"pdfdata\", \"label\": \"PDF\" }\r\n ]\r\n }, {\r\n \"label\": \"Print\", \"type\": \"print\"\r\n }\r\n ]\r\n }\r\n ];\r\n _this.className = \"ExportMenu\";\r\n _this._disposers.push(_this._language);\r\n _this.invalidate();\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * (Re)draws the Export menu.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ExportMenu.prototype.validate = function () {\r\n this.draw();\r\n _super.prototype.validate.call(this);\r\n };\r\n /**\r\n * Draws the menu based on current items.\r\n *\r\n * Normally, there's no need to call this explicitly. The chart, if it has\r\n * export menu enabled, will automatically draw the menu.\r\n */\r\n ExportMenu.prototype.draw = function () {\r\n var _this = this;\r\n // Create top-level menu item, or clear it\r\n if (!this._element) {\r\n this._element = this.createMenuElement(0);\r\n }\r\n else {\r\n this._element.innerHTML = \"\";\r\n this._element.className = this.getMenuItemClass(0);\r\n }\r\n // See if we're loading external CSS\r\n // Hide it until CSS is loaded\r\n if (this.defaultStyles) {\r\n this._element.style.display = \"none\";\r\n }\r\n // Append to container\r\n $type.getValue(this._container).appendChild(this._element);\r\n // Apply adapter to menu items before processing\r\n var items = this.adapter.apply(\"items\", {\r\n items: this._items\r\n }).items;\r\n for (var len = items.length, i = 0; i < len; i++) {\r\n this.drawBranch(this._element, items[i], 0);\r\n }\r\n // Apply adapter to finalized menu element\r\n this._element = this.adapter.apply(\"menuElement\", {\r\n menuElement: this._element\r\n }).menuElement;\r\n // Set up global \"down\" event\r\n this._disposers.push(getInteraction().body.events.on(\"down\", function (ev) {\r\n if (!ev.pointer.touch) {\r\n _this._ignoreNextClose = false;\r\n }\r\n _this.close();\r\n }));\r\n // Set up global event on ESC press to close the menu\r\n this._disposers.push(getInteraction().body.events.on(\"keydown\", function (ev) {\r\n var key = keyboard.getEventKey(ev.event);\r\n switch (key) {\r\n case \"esc\":\r\n _this.close();\r\n break;\r\n case \"up\":\r\n case \"down\":\r\n case \"left\":\r\n case \"right\":\r\n if (_this._currentSelection) {\r\n ev.event.preventDefault();\r\n }\r\n _this.moveSelection(key);\r\n break;\r\n }\r\n }));\r\n if (this.defaultStyles) {\r\n this.loadDefaultCSS();\r\n }\r\n };\r\n /**\r\n * Creates a new branch in export menu. This function is recursive for\r\n * building multi-level menus.\r\n *\r\n * @ignore Exclude from docs\r\n * @param container Container to put branch elements in\r\n * @param branch Menu item\r\n * @param level Current nesting level\r\n */\r\n ExportMenu.prototype.drawBranch = function (container, branch, level) {\r\n var _this = this;\r\n // Apply adapter\r\n branch = this.adapter.apply(\"branch\", {\r\n branch: branch,\r\n level: level\r\n }).branch;\r\n // Unsupported?\r\n // ExportMenu does not check or know for specific browser/system\r\n // capabilities. It must happen in some other code and applied via Adapter.\r\n // Export itself will check compatibility, but there might be other plugins\r\n // that influence it or even add any specific export functionality.\r\n if (branch.unsupported === true) {\r\n return;\r\n }\r\n // Init ascendants\r\n if (!branch.ascendants) {\r\n branch.ascendants = new List();\r\n }\r\n // Get type\r\n var type = branch.type;\r\n // Create an item\r\n var element = this.createItemElement(level, type);\r\n // Create label\r\n var label;\r\n // Create icon\r\n if (branch.icon) {\r\n label = this.createIconElement(level, type);\r\n label.src = branch.icon;\r\n if (branch.label || branch.title) {\r\n label.title = branch.title || branch.label;\r\n }\r\n }\r\n else if (branch.svg) {\r\n label = this.createSvgElement(level, type, branch.svg);\r\n if (branch.label || branch.title) {\r\n label.title = branch.title || branch.label;\r\n }\r\n }\r\n else {\r\n label = this.createLabelElement(level, type);\r\n label.innerHTML = (branch.label ? this.language.translate(branch.label) : \"\");\r\n if (branch.title) {\r\n label.title = branch.title;\r\n }\r\n }\r\n // Apply reader text to label\r\n var readerLabel = this.getReaderLabel(branch, label.innerHTML);\r\n label.setAttribute(\"aria-label\", readerLabel);\r\n // Add Label\r\n element.appendChild(label);\r\n // Create interaction object\r\n // TODO clean this up when it's disposed\r\n branch.interactions = getInteraction().getInteraction(element);\r\n branch.element = element;\r\n // Create interaction manager we can set event listeners to\r\n if (this.typeClickable(type)) {\r\n //branch.interactions.clickable = true;\r\n // TODO clean this up when it's disposed\r\n branch.interactions.events.on(\"hit\", function (ev) {\r\n if (_this.events.isEnabled(\"hit\") && !_this.isDisposed()) {\r\n var event_1 = {\r\n \"type\": \"hit\",\r\n \"event\": ev.event,\r\n \"target\": _this,\r\n \"branch\": branch\r\n };\r\n _this.events.dispatchImmediately(\"hit\", event_1);\r\n }\r\n });\r\n // TODO clean this up when it's disposed\r\n branch.interactions.events.on(\"keyup\", function (ev) {\r\n if (keyboard.isKey(ev.event, \"enter\")) {\r\n if (_this.events.isEnabled(\"enter\")) {\r\n var event_2 = {\r\n \"type\": \"enter\",\r\n \"event\": ev.event,\r\n \"target\": _this,\r\n \"branch\": branch\r\n };\r\n _this.events.dispatchImmediately(\"enter\", event_2);\r\n }\r\n }\r\n });\r\n }\r\n {\r\n var submenu_1 = this.getSubMenu(branch);\r\n // Add ENTER event to open sub-menus\r\n if (submenu_1 != null) {\r\n // TODO clean this up when it's disposed\r\n branch.interactions.events.on(\"keyup\", function (ev) {\r\n if (keyboard.isKey(ev.event, \"enter\")) {\r\n // This is item has sub-menu, activate the first child on ENTER\r\n _this.selectBranch(submenu_1[0]);\r\n // Attempt to set focus\r\n _this.setFocus(submenu_1[0]);\r\n }\r\n });\r\n branch.interactions.events.on(\"hit\", function (ev) {\r\n _this.selectBranch(branch);\r\n });\r\n }\r\n }\r\n // Add events\r\n // TODO clean this up when it's disposed\r\n branch.interactions.events.on(\"over\", function (ev) {\r\n if (ev.pointer.touch) {\r\n // Cancel pending menu closure\r\n _this._ignoreNextClose = true;\r\n }\r\n _this.selectBranch(branch);\r\n if (_this.events.isEnabled(\"over\")) {\r\n var event_3 = {\r\n \"type\": \"over\",\r\n \"event\": ev.event,\r\n \"target\": _this,\r\n \"branch\": branch\r\n };\r\n _this.events.dispatchImmediately(\"over\", event_3);\r\n }\r\n });\r\n // TODO clean this up when it's disposed\r\n branch.interactions.events.on(\"out\", function (ev) {\r\n if (_this.isDisposed()) {\r\n return;\r\n }\r\n if (!ev.pointer.touch) {\r\n _this.delayUnselectBranch(branch);\r\n }\r\n if (_this.events.isEnabled(\"out\")) {\r\n var event_4 = {\r\n \"type\": \"out\",\r\n \"event\": ev.event,\r\n \"target\": _this,\r\n \"branch\": branch\r\n };\r\n _this.events.dispatchImmediately(\"out\", event_4);\r\n }\r\n });\r\n // TODO clean this up when it's disposed\r\n branch.interactions.events.on(\"focus\", function (ev) {\r\n _this.selectBranch(branch);\r\n });\r\n // TODO clean this up when it's disposed\r\n branch.interactions.events.on(\"blur\", function (ev) {\r\n _this.delayUnselectBranch(branch);\r\n });\r\n // Increment level\r\n var local_level = level + 1;\r\n // Has sub-menu?\r\n if (branch.menu) {\r\n var submenu = this.createMenuElement(local_level);\r\n branch.submenuElement = submenu;\r\n for (var len = branch.menu.length, i = 0; i < len; i++) {\r\n var ascendants = new List();\r\n branch.menu[i].ascendants = ascendants;\r\n if (branch.ascendants.length) {\r\n ascendants.copyFrom(branch.ascendants);\r\n }\r\n ascendants.push(branch);\r\n this.drawBranch(submenu, branch.menu[i], local_level);\r\n }\r\n // Sub-menu is empty (all items are not supported)\r\n // Do not draw this menu item at all\r\n if (submenu.innerHTML == \"\") {\r\n return;\r\n }\r\n element.appendChild(submenu);\r\n }\r\n // Should this item be hidden?\r\n if (branch.hidden) {\r\n this.hideBranch(branch);\r\n }\r\n // Add id?\r\n if (branch.id) {\r\n element.setAttribute(\"id\", branch.id);\r\n }\r\n // Background color?\r\n if (branch.color) {\r\n element.style.backgroundColor = branch.color.hex;\r\n }\r\n // Append to container\r\n container.appendChild(element);\r\n };\r\n /**\r\n * Creates a menu element to hold its elements in. Usually it's an `<ul>`\r\n * tag.\r\n *\r\n * @ignore Exclude from docs\r\n * @param level Current nesting level\r\n * @return HTML element reference\r\n */\r\n ExportMenu.prototype.createMenuElement = function (level) {\r\n var element = document.createElement(this.menuTag);\r\n element.className = this.getMenuItemClass(level);\r\n // Accessibility\r\n if (level === 0) {\r\n element.setAttribute(\"role\", \"menubar\");\r\n }\r\n else {\r\n element.setAttribute(\"role\", \"menu\");\r\n }\r\n return element;\r\n };\r\n /**\r\n * Generates a class name for the menu element based on its nesting level.\r\n *\r\n * @ignore Exclude from docs\r\n * @param level Current nesting level\r\n * @return Class name(s)\r\n */\r\n ExportMenu.prototype.getMenuItemClass = function (level) {\r\n var className = this.classPrefix + \"-menu \" + this.classPrefix + \"-menu-level-\" + level;\r\n if (level === 0) {\r\n className += \" \" + this.classPrefix + \"-menu-root \" +\r\n this.classPrefix + \"-\" + this.align + \" \" +\r\n this.classPrefix + \"-\" + this.verticalAlign;\r\n }\r\n return this.adapter.apply(\"menuClass\", {\r\n className: className,\r\n level: level\r\n }).className;\r\n };\r\n /**\r\n * Creates menu item. Usually `<li>` tag. Its label and sub-elements will go\r\n * into this element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param level Current nesting level\r\n * @param type Type of the menu item\r\n * @return HTML element reference\r\n */\r\n ExportMenu.prototype.createItemElement = function (level, type) {\r\n var element = document.createElement(this.itemTag);\r\n var className = this.classPrefix + \"-item \" + this.classPrefix\r\n + \"-item-level-\" + level\r\n + \" \" + this.classPrefix + \"-item-\" + (type || \"blank\");\r\n element.className = this.adapter.apply(\"itemClass\", {\r\n className: className,\r\n level: level,\r\n type: type\r\n }).className;\r\n element.setAttribute(\"role\", \"menuitem\");\r\n element.setAttribute(\"tabindex\", this.tabindex.toString());\r\n return element;\r\n };\r\n /**\r\n * Creates a \"label\" part of the menu item. It could be text or any HTML\r\n * content.\r\n *\r\n * @ignore Exclude from docs\r\n * @param level Current nesting level\r\n * @param type Type of the menu item\r\n * @return An HTML Element\r\n */\r\n ExportMenu.prototype.createLabelElement = function (level, type) {\r\n var element = document.createElement(this.labelTag);\r\n var className = this.classPrefix + \"-label \" + this.classPrefix\r\n + \"-label-level-\" + level\r\n + \" \" + this.classPrefix + \"-item-\" + (type || \"blank\");\r\n if (this.typeClickable(type)) {\r\n className += \" \" + this.classPrefix + \"-clickable\";\r\n }\r\n element.className = this.adapter.apply(\"labelClass\", {\r\n className: className,\r\n level: level,\r\n type: type\r\n }).className;\r\n // Accessible navigation\r\n //element.setAttribute(\"tabindex\", this.tabindex.toString());\r\n //element.setAttribute(\"role\", \"menuitem\");\r\n return element;\r\n };\r\n /**\r\n * Creates a \"icon\" part of the menu item.\r\n *\r\n * @ignore Exclude from docs\r\n * @param level Current nesting level\r\n * @param type Type of the menu item\r\n * @return An HTML Element\r\n */\r\n ExportMenu.prototype.createIconElement = function (level, type) {\r\n var element = document.createElement(this.iconTag);\r\n var className = this.classPrefix + \"-icon \" + this.classPrefix\r\n + \"-icon-level-\" + level\r\n + \" \" + this.classPrefix + \"-item-\" + (type || \"blank\");\r\n if (this.typeClickable(type)) {\r\n className += \" \" + this.classPrefix + \"-clickable\";\r\n }\r\n element.className = this.adapter.apply(\"labelClass\", {\r\n className: className,\r\n level: level,\r\n type: type\r\n }).className;\r\n // Accessible navigation\r\n element.setAttribute(\"tabindex\", this.tabindex.toString());\r\n element.setAttribute(\"role\", \"menuitem\");\r\n return element;\r\n };\r\n /**\r\n * Creates a a custom element out of raw HTML.\r\n *\r\n * @ignore Exclude from docs\r\n * @param level Current nesting level\r\n * @param type Type of the menu item\r\n * @return An HTML Element\r\n */\r\n ExportMenu.prototype.createSvgElement = function (level, type, svg) {\r\n var parser = new DOMParser();\r\n var element = parser.parseFromString(svg, \"image/svg+xml\").documentElement;\r\n var className = this.classPrefix + \"-icon \" + this.classPrefix\r\n + \"-icon-level-\" + level\r\n + \" \" + this.classPrefix + \"-item-\" + (type || \"blank\");\r\n if (this.typeClickable(type)) {\r\n className += \" \" + this.classPrefix + \"-clickable\";\r\n }\r\n element.setAttribute(\"class\", this.adapter.apply(\"labelClass\", {\r\n className: className,\r\n level: level,\r\n type: type\r\n }).className);\r\n // Accessible navigation\r\n element.setAttribute(\"tabindex\", this.tabindex.toString());\r\n element.setAttribute(\"role\", \"menuitem\");\r\n return element;\r\n };\r\n /**\r\n * Destroys the menu and all its elements.\r\n */\r\n ExportMenu.prototype.dispose = function () {\r\n if (!this._disposed) {\r\n _super.prototype.dispose.call(this);\r\n if (this._element && this._element.parentNode) {\r\n this._element.parentNode.removeChild(this._element);\r\n }\r\n }\r\n };\r\n /**\r\n * Checks whether menu item type is supposed to be clickable.\r\n *\r\n * @ignore Exclude from docs\r\n * @param type Menu item type\r\n * @return Is clickable?\r\n */\r\n ExportMenu.prototype.typeClickable = function (type) {\r\n return $type.hasValue(type);\r\n };\r\n /**\r\n * Checks whether menu item has any sub-items.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch A menu item\r\n * @return Has sub-items?\r\n */\r\n ExportMenu.prototype.hasSubMenu = function (branch) {\r\n return (branch.menu && branch.menu.length) ? true : false;\r\n };\r\n /**\r\n * Returns sub-items (if they exist).\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch A menu item\r\n * @return Submenus\r\n */\r\n ExportMenu.prototype.getSubMenu = function (branch) {\r\n if (branch.menu && branch.menu.length) {\r\n return branch.menu;\r\n }\r\n };\r\n /**\r\n * Generates and returns an applicable label to be used for screen readers.\r\n *\r\n * @ignore Exclude from docs\r\n * @param item A menu item instance\r\n * @param label Current label\r\n * @return Reader text\r\n */\r\n ExportMenu.prototype.getReaderLabel = function (branch, label) {\r\n // Strip any HTML from the label\r\n label = $utils.stripTags(label);\r\n // Add textual note if the branch is clickable\r\n if (branch.ascendants.length == 0) {\r\n label = label == \"...\" ? this.language.translate(\"Export\") : label;\r\n label += \" [\" + this.language.translate(\"Press ENTER or use arrow keys to navigate\") + \"]\";\r\n }\r\n else if (this.hasSubMenu(branch)) {\r\n label += \" [\" + this.language.translate(\"Click, tap or press ENTER to open\") + \"]\";\r\n }\r\n else if (branch.type == \"print\") {\r\n label = this.language.translate(\"Click, tap or press ENTER to print.\");\r\n }\r\n else if (this.typeClickable(branch.type)) {\r\n label = this.language.translate(\"Click, tap or press ENTER to export as %1.\", undefined, label);\r\n }\r\n return this.adapter.apply(\"rederLabel\", {\r\n label: label,\r\n branch: branch\r\n }).label;\r\n };\r\n Object.defineProperty(ExportMenu.prototype, \"container\", {\r\n /**\r\n * @return Container\r\n */\r\n get: function () {\r\n return this._container;\r\n },\r\n /**\r\n * Getters and setters\r\n */\r\n /**\r\n * An HTML container to place the Menu in.\r\n *\r\n * A container must be an HTML element, because menu itself is HTML, and\r\n * cannot be placed into SVG.\r\n *\r\n * @param container Reference to container element\r\n * @todo Check if menu is already build. If it is, just move it to a new container\r\n */\r\n set: function (container) {\r\n this._container = container;\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"items\", {\r\n /**\r\n * @return Menu items\r\n */\r\n get: function () {\r\n return this._items;\r\n },\r\n /**\r\n * A list of menu items. Can be nested.\r\n *\r\n * @param items Menu items\r\n */\r\n set: function (items) {\r\n this._items = items;\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"tag\", {\r\n /**\r\n * Sets main menu tag to place menu in.\r\n *\r\n * This also sets up how menu items are built.\r\n *\r\n * If you set this to \"ul\", menu items will be wrapped into `<li>` tags.\r\n *\r\n * If set to \"div\", menu items will be wrapped in `<div>` tags.\r\n *\r\n * @default \"ul\"\r\n * @param tag Tag to use for menu\r\n */\r\n set: function (tag) {\r\n this._menuTag = tag;\r\n this._itemTag = tag == \"ul\" ? \"li\" : \"div\";\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"menuTag\", {\r\n /**\r\n * Returns current menu tag.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Menu tag (item that contains sub-items)\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"menuTag\", {\r\n tag: this._menuTag\r\n }).tag;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"itemTag\", {\r\n /**\r\n * Returns tag to wrap items into.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Item tag\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"itemTag\", {\r\n tag: this._itemTag\r\n }).tag;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"labelTag\", {\r\n /**\r\n * Returns menu label tag.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Label tag\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"labelTag\", {\r\n tag: this._labelTag\r\n }).tag;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"iconTag\", {\r\n /**\r\n * Returns icon tag.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Icon tag\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"iconTag\", {\r\n tag: this._iconTag\r\n }).tag;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"align\", {\r\n /**\r\n * @return Horizontal alignment\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"align\", {\r\n align: this._align\r\n }).align;\r\n },\r\n /**\r\n * A horizontal alignment for the menu placement.\r\n *\r\n * @param value Horizontal alignment\r\n */\r\n set: function (value) {\r\n this._align = value;\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"verticalAlign\", {\r\n /**\r\n * @return Vertical alignment\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"verticalAlign\", {\r\n verticalAlign: this._verticalAlign\r\n }).verticalAlign;\r\n },\r\n /**\r\n * A vertical alignment for the menu placement.\r\n *\r\n * @param value Vertical alignment\r\n */\r\n set: function (value) {\r\n this._verticalAlign = value;\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"classPrefix\", {\r\n /**\r\n * @return Class name prefix\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"classPrefix\", {\r\n classPrefix: this._classPrefix\r\n }).classPrefix;\r\n },\r\n /**\r\n * Class name prefix.\r\n *\r\n * @default \"amexport\"\r\n * @param value Class name prefix\r\n */\r\n set: function (value) {\r\n this._classPrefix = value;\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"defaultStyles\", {\r\n /**\r\n * @return Should ExportMenu load its own CSS?\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"defaultStyles\", {\r\n defaultStyles: this._defaultStyles\r\n }).defaultStyles;\r\n },\r\n /**\r\n * Indicates whether [[ExportMenu]] should load external CSS to style itself.\r\n *\r\n * If set to `false`, the menu will not be styled, and will rely on some\r\n * external CSS.\r\n *\r\n * @default true\r\n * @param Should ExportMenu load its own CSS?\r\n */\r\n set: function (value) {\r\n if (this._defaultStyles != value) {\r\n this._defaultStyles = value;\r\n if (value) {\r\n this.loadDefaultCSS();\r\n }\r\n }\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Loads the default CSS.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ExportMenu.prototype.loadDefaultCSS = function () {\r\n this._disposers.push(exportCSS($dom.getShadowRoot(this.container), this.classPrefix));\r\n if (this._element) {\r\n this._element.style.display = \"\";\r\n }\r\n };\r\n Object.defineProperty(ExportMenu.prototype, \"tabindex\", {\r\n /**\r\n * @return Tab index\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"tabindex\", {\r\n tabindex: this._tabindex\r\n }).tabindex;\r\n },\r\n /**\r\n * A tab index for the menu.\r\n *\r\n * Tab index will influence the order in which elements on the chart and\r\n * the whole page are selected when pressing TAB key.\r\n *\r\n * @param value Tab index\r\n */\r\n set: function (value) {\r\n this._tabindex = value;\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"language\", {\r\n /**\r\n * @return A [[Language]] instance to be used\r\n */\r\n get: function () {\r\n var _this = this;\r\n var language = this._language.get();\r\n if (language == null) {\r\n language = new Language();\r\n // TODO code duplication with `set language()`\r\n this._language.set(language, language.events.on(\"localechanged\", function (ev) {\r\n _this.invalidate();\r\n }));\r\n }\r\n return language;\r\n },\r\n /**\r\n * A [[Language]] instance.\r\n *\r\n * @param value An instance of [[Language]]\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n this._language.set(value, value.events.on(\"localechanged\", function (ev) {\r\n _this.invalidate();\r\n }));\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Controlling the menu\r\n */\r\n /**\r\n * Removes all active classes from menu items. Useful on touch devices and\r\n * keyboard navigation where open menu can be closed instantly by clicking or\r\n * tapping outside it.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ExportMenu.prototype.close = function () {\r\n var _this = this;\r\n if (this.isDisposed()) {\r\n return;\r\n }\r\n if (this._ignoreNextClose) {\r\n this._ignoreNextClose = false;\r\n return;\r\n }\r\n if (this.closeOnClick) {\r\n this._element.style.pointerEvents = \"none\";\r\n setTimeout(function () {\r\n _this._element.style.pointerEvents = \"auto\";\r\n }, 100);\r\n }\r\n if (this._currentSelection) {\r\n this.setBlur(this._currentSelection);\r\n this._currentSelection = undefined;\r\n }\r\n if (this._element) {\r\n var items = this._element.getElementsByClassName(\"active\");\r\n for (var len = items.length, i = len - 1; i >= 0; i--) {\r\n if (items[i]) {\r\n $dom.removeClass(items[i], \"active\");\r\n }\r\n }\r\n }\r\n this.events.dispatchImmediately(\"closed\", {\r\n type: \"closed\",\r\n target: this\r\n });\r\n };\r\n /**\r\n * Selects a branch in the menu.\r\n *\r\n * Handles closing of currently open branch.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Branch to select\r\n */\r\n ExportMenu.prototype.selectBranch = function (branch) {\r\n var _this = this;\r\n if (this.isDisposed()) {\r\n return;\r\n }\r\n // Cancel previous closure\r\n if (branch.closeTimeout) {\r\n this.removeDispose(branch.closeTimeout);\r\n branch.closeTimeout = undefined;\r\n }\r\n // Add active class\r\n $dom.addClass(branch.element, \"active\");\r\n // Set expanded\r\n if (branch.submenuElement) {\r\n branch.submenuElement.setAttribute(\"aria-expanded\", \"true\");\r\n }\r\n // Remove current selection\r\n if (this._currentSelection && this._currentSelection !== branch && this._currentSelection.ascendants) {\r\n $iter.each($iter.concat($iter.fromArray([this._currentSelection]), this._currentSelection.ascendants.iterator()), function (ascendant) {\r\n if (!branch.ascendants.contains(ascendant) && branch !== ascendant) {\r\n _this.unselectBranch(ascendant, true);\r\n }\r\n });\r\n }\r\n // Select and/or cancel timeout for current ascendants\r\n $iter.each(branch.ascendants.iterator(), function (ascendant) {\r\n if (ascendant.closeTimeout) {\r\n _this.removeDispose(ascendant.closeTimeout);\r\n ascendant.closeTimeout = undefined;\r\n }\r\n $dom.addClass(ascendant.element, \"active\");\r\n });\r\n // Log current selection\r\n this._currentSelection = branch;\r\n // Invoke event\r\n if (this.events.isEnabled(\"branchselected\")) {\r\n var event_5 = {\r\n type: \"branchselected\",\r\n target: this,\r\n branch: branch\r\n };\r\n this.events.dispatchImmediately(\"branchselected\", event_5);\r\n }\r\n };\r\n /**\r\n * Unselects a branch. Also selects a branch one level up if necessary.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Branch to unselect\r\n * @param simple If `true`, only the branch will be unselected without selecting parent branch\r\n */\r\n ExportMenu.prototype.unselectBranch = function (branch, simple) {\r\n if (this.isDisposed()) {\r\n return;\r\n }\r\n // Remove active class\r\n $dom.removeClass(branch.element, \"active\");\r\n // Set expanded\r\n if (branch.submenuElement) {\r\n branch.submenuElement.removeAttribute(\"aria-expanded\");\r\n }\r\n // Remove current selection\r\n if (this._currentSelection == branch) {\r\n this._currentSelection = undefined;\r\n }\r\n // Invoke event\r\n if (this.events.isEnabled(\"branchunselected\")) {\r\n var event_6 = {\r\n type: \"branchunselected\",\r\n target: this,\r\n branch: branch\r\n };\r\n this.events.dispatchImmediately(\"branchunselected\", event_6);\r\n }\r\n };\r\n /**\r\n * Delay unselection of a branch. This can still be cancelled in some other\r\n * place if the branch or its children regain focus.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Branch to unselect\r\n * @param simple If `true`, only the branch will be unselected without selecting parent branch\r\n */\r\n ExportMenu.prototype.delayUnselectBranch = function (branch, simple) {\r\n var _this = this;\r\n if (this.isDisposed()) {\r\n return;\r\n }\r\n // Schedule branch unselection\r\n if (branch.closeTimeout) {\r\n this.removeDispose(branch.closeTimeout);\r\n branch.closeTimeout = undefined;\r\n }\r\n branch.closeTimeout = this.setTimeout(function () {\r\n _this.unselectBranch(branch, simple);\r\n }, this.closeDelay);\r\n // Schedule unselection of all ascendants\r\n // In case focus went away from the export menu altogether, this will ensure\r\n // that all items will be closed.\r\n // In case we're jumping to other menu item, those delayed unselections will\r\n // be cancelled by `selectBranch`\r\n if (simple !== true && branch.ascendants) {\r\n $iter.each(branch.ascendants.iterator(), function (ascendant) {\r\n _this.delayUnselectBranch(ascendant, true);\r\n });\r\n }\r\n };\r\n /**\r\n * Navigates the menu based on which direction kayboard key was pressed.\r\n *\r\n * @ignore Exclude from docs\r\n * @param key A key that was pressed\r\n */\r\n ExportMenu.prototype.moveSelection = function (key) {\r\n if (this.isDisposed()) {\r\n return;\r\n }\r\n // Check if there's a current selection\r\n if (!this._currentSelection) {\r\n return;\r\n }\r\n var newSelection;\r\n if (key == \"up\") {\r\n // Try moving up in current menu list, or to the last item if already\r\n // at the top\r\n newSelection = this.getPrevSibling(this._currentSelection);\r\n }\r\n else if (key == \"down\") {\r\n // Try moving down in current menu list, or to the top item if already\r\n // at the bottom\r\n newSelection = this.getNextSibling(this._currentSelection);\r\n }\r\n else if ((key == \"left\" && this.align == \"right\") || (key == \"right\" && this.align == \"left\")) {\r\n var menu = this.getSubMenu(this._currentSelection);\r\n // Go one level-deeper\r\n if (menu != null) {\r\n newSelection = menu[0];\r\n }\r\n }\r\n else if ((key == \"right\" && this.align == \"right\") || (key == \"left\" && this.align == \"left\")) {\r\n // Go one level-deeper\r\n newSelection = this.getParentItem(this._currentSelection);\r\n }\r\n if (newSelection && newSelection !== this._currentSelection) {\r\n this.selectBranch(newSelection);\r\n this.setFocus(newSelection);\r\n this._currentSelection = newSelection;\r\n }\r\n };\r\n /**\r\n * Returns all siblings of a menu item, including this same menu item.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Menu item\r\n * @return List of sibling menu items\r\n */\r\n ExportMenu.prototype.getSiblings = function (branch) {\r\n var parent = this.getParentItem(branch);\r\n if (parent && parent.menu) {\r\n return parent.menu;\r\n }\r\n else {\r\n return [];\r\n }\r\n };\r\n /**\r\n * Returns menu items parent item.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Menu item\r\n * @return Parent menu item\r\n */\r\n ExportMenu.prototype.getParentItem = function (branch) {\r\n if (branch.ascendants && branch.ascendants.length) {\r\n return branch.ascendants.getIndex(branch.ascendants.length - 1);\r\n }\r\n else {\r\n return undefined;\r\n }\r\n };\r\n /**\r\n * Returns next sibling in the same menu branch. If there is no next sibling,\r\n * the first one is returned. If there is just one item, that item is\r\n * returned. Unsupported menu items are skipped.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Menu item to search siblings for\r\n * @return Menu item\r\n */\r\n ExportMenu.prototype.getNextSibling = function (branch) {\r\n var siblings = this.getSiblings(branch);\r\n if (siblings.length > 1) {\r\n var next = siblings.indexOf(branch) + 1;\r\n next = siblings.length == next ? 0 : next;\r\n return siblings[next].unsupported ? this.getNextSibling(siblings[next]) : siblings[next];\r\n }\r\n else {\r\n return branch;\r\n }\r\n };\r\n /**\r\n * Returns previous sibling in the same menu branch. If there is no next\r\n * sibling, the first one is returned. If there is just one item, that item is\r\n * returned. Unsupported menu items are skipped.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Menu item to search siblings for\r\n * @return Menu item\r\n */\r\n ExportMenu.prototype.getPrevSibling = function (branch) {\r\n var siblings = this.getSiblings(branch);\r\n if (siblings.length > 1) {\r\n var prev = siblings.indexOf(branch) - 1;\r\n prev = prev == -1 ? siblings.length - 1 : prev;\r\n return siblings[prev].unsupported ? this.getPrevSibling(siblings[prev]) : siblings[prev];\r\n }\r\n else {\r\n return branch;\r\n }\r\n };\r\n /**\r\n * Attempts to set focus on particular menu element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Menu item\r\n */\r\n ExportMenu.prototype.setFocus = function (branch) {\r\n if (branch.interactions) {\r\n try {\r\n branch.interactions.element.focus();\r\n }\r\n catch (e) {\r\n // nothing\r\n }\r\n }\r\n };\r\n /**\r\n * Attempts to remove focus from the menu element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Menu item\r\n */\r\n ExportMenu.prototype.setBlur = function (branch) {\r\n if (branch.interactions) {\r\n try {\r\n branch.interactions.element.blur();\r\n }\r\n catch (e) {\r\n // nothing\r\n }\r\n }\r\n };\r\n /**\r\n * Hides the whole branch of menu.\r\n *\r\n * @param branch branch\r\n */\r\n ExportMenu.prototype.hideBranch = function (branch) {\r\n branch.element.style.display = \"none\";\r\n };\r\n /**\r\n * Show the branch of menu.\r\n *\r\n * @param branch branch\r\n */\r\n ExportMenu.prototype.showBranch = function (branch) {\r\n branch.element.style.display = \"\";\r\n };\r\n Object.defineProperty(ExportMenu.prototype, \"element\", {\r\n /**\r\n * The main element o fthe menu - usually `<ul>`.\r\n *\r\n * @since 4.10.6\r\n * @return Menu element\r\n */\r\n get: function () {\r\n return this._element;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ExportMenu;\r\n}(Validatable));\r\nexport { ExportMenu };\r\n//# sourceMappingURL=ExportMenu.js.map","/**\r\n * Handles date and time formatting\r\n */\r\nimport { __extends } from \"tslib\";\r\nimport { Language } from \"../utils/Language\";\r\nimport { BaseObject } from \"../Base\";\r\nimport { getTextFormatter } from \"../formatters/TextFormatter\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $strings from \"../utils/Strings\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $time from \"../utils/Time\";\r\n/**\r\n * Handles date and time formatting.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-date-time/} Tutorial on date/time formatting\r\n * @todo Better type casting of passed in date?\r\n * @todo Quarter support?\r\n * @todo When parsing named months make the search case-insensitive\r\n * @todo Escape a.m./p.m. properly when used in RegEx\r\n */\r\nvar DateFormatter = /** @class */ (function (_super) {\r\n __extends(DateFormatter, _super);\r\n /**\r\n * Constructor\r\n */\r\n function DateFormatter() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Date format.\r\n */\r\n _this._dateFormat = \"yyyy-MM-dd\";\r\n /**\r\n * Input date format.\r\n */\r\n _this._inputDateFormat = \"yyyy-MM-dd\";\r\n /**\r\n * Assume UTC time zone.\r\n */\r\n _this._utc = false;\r\n /**\r\n * If `timezone` is set, this will hold minute fraction of the timezone.\r\n *\r\n * @readonly\r\n * @ignore\r\n */\r\n _this.timezoneMinutes = 0;\r\n /**\r\n * First day of week.\r\n *\r\n * 0 - Sunday\r\n * 1 - Monday\r\n *\r\n * Etc.\r\n */\r\n _this._firstDayOfWeek = 1;\r\n /**\r\n * A list of month names.\r\n */\r\n _this.months = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\r\n /**\r\n * A list of short month names.\r\n */\r\n _this.monthsShort = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May(short)\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\r\n /**\r\n * A list of weekday names.\r\n */\r\n _this.weekdays = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\r\n /**\r\n * A list of short weekday names.\r\n */\r\n _this.weekdaysShort = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\r\n /**\r\n * Output format to produce. If the format calls for applying color to the\r\n * formatted value, this setting will determine what markup to use: SVG or\r\n * HTML.\r\n *\r\n * Available options: svg, html.\r\n *\r\n * @default \"svg\"\r\n */\r\n _this._outputFormat = \"svg\";\r\n /**\r\n * Should the first letter of the formatted date be capitalized?\r\n *\r\n * @default true\r\n */\r\n _this.capitalize = true;\r\n _this.className = \"DateFormatter\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(DateFormatter.prototype, \"language\", {\r\n /**\r\n * @return Language\r\n */\r\n get: function () {\r\n return this._language;\r\n },\r\n /**\r\n * A reference to [[Language]] object.\r\n *\r\n * @param value Language\r\n */\r\n set: function (value) {\r\n this._language = value;\r\n this.dateFormat = this._language.translate(\"_date\");\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Formats the date value according to specified format.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-date-time/} Tutorial on date/time formatting\r\n * @param source Date value\r\n * @param format Format\r\n * @return Formatted date string\r\n */\r\n DateFormatter.prototype.format = function (source, format, applyTimezone) {\r\n // No language?\r\n if (!this.language) {\r\n if (this.sprite) {\r\n this.language = this.sprite.language;\r\n }\r\n else {\r\n this.language = new Language();\r\n }\r\n }\r\n // No format passed in or it's empty\r\n if (typeof format === \"undefined\" || format === \"\") {\r\n format = this._dateFormat;\r\n }\r\n // Init return value\r\n var formatted;\r\n // Do casting if required\r\n // This will take care of timestamps as well as Date objects\r\n var date;\r\n if ($type.isString(source)) {\r\n // If it's a string, let's try parsing it using our own functionality\r\n date = this.parse(source);\r\n }\r\n else {\r\n date = $utils.anyToDate(source);\r\n }\r\n // Is it a built-in format or Intl.DateTimeFormat\r\n if ($type.isObject(format)) {\r\n try {\r\n if (this.intlLocales) {\r\n return new Intl.DateTimeFormat(this.intlLocales, format).format(date);\r\n }\r\n else {\r\n return new Intl.DateTimeFormat(undefined, format).format(date);\r\n }\r\n }\r\n catch (e) {\r\n return \"Invalid\";\r\n }\r\n }\r\n else {\r\n // Clean format\r\n format = $utils.cleanFormat(format);\r\n // get format info (it will also deal with parser caching)\r\n var info = this.parseFormat(format);\r\n // Should we apply custom time zone?\r\n if ($type.hasValue(this.timezoneOffset)) {\r\n date.setMinutes(date.getMinutes() + date.getTimezoneOffset() - this.timezoneOffset);\r\n }\r\n else if ($type.hasValue(this.timezone) && applyTimezone !== false) {\r\n date = $time.setTimezone(date, this.timezone);\r\n }\r\n // Check if it's a valid date\r\n if (!$type.isNumber(date.getTime())) {\r\n return this.language.translate(\"Invalid date\");\r\n }\r\n // Apply format\r\n formatted = this.applyFormat(date, info, this.language);\r\n // Capitalize\r\n if (this.capitalize) {\r\n formatted = formatted.replace(/^.{1}/, formatted.substr(0, 1).toUpperCase());\r\n }\r\n }\r\n // We're done\r\n return formatted;\r\n };\r\n /**\r\n * Parses format into structured infromation.\r\n *\r\n * @param format Format template\r\n */\r\n DateFormatter.prototype.parseFormat = function (format) {\r\n // Check cache\r\n var cached = this.getCache(format);\r\n if ($type.hasValue(cached)) {\r\n return cached;\r\n }\r\n // Init format parse info holder\r\n var info = {\r\n \"template\": \"\",\r\n \"parts\": []\r\n };\r\n // Let TextFormatter split into chunks\r\n var chunks = getTextFormatter().chunk(format, true);\r\n for (var i = 0; i < chunks.length; i++) {\r\n var chunk = chunks[i];\r\n if (chunk.type === \"value\") {\r\n // Just \"Date\"?\r\n if (chunk.text.match(/^date$/i) && $type.isString(this._dateFormat)) {\r\n chunk.text = this._dateFormat;\r\n }\r\n // Find all possible parts\r\n var matches = chunk.text.match(/G|yyyy|yyy|yy|y|YYYY|YYY|YY|Y|u|q|MMMMM|MMMM|MMM|MM|M|ww|w|W|dd|d|DDD|DD|D|F|g|EEEEE|EEEE|EEE|EE|E|eeeee|eeee|eee|ee|e|aaa|aa|a|hh|h|HH|H|KK|K|kk|k|mm|m|ss|s|SSS|SS|S|A|zzzz|zzz|zz|z|ZZ|Z|t|x|nnn|nn|n|i|I/g);\r\n // Found?\r\n if (matches) {\r\n // Populate template\r\n for (var x = 0; x < matches.length; x++) {\r\n info.parts.push(matches[x]);\r\n chunk.text = chunk.text.replace(matches[x], $strings.PLACEHOLDER);\r\n }\r\n }\r\n }\r\n // Apply to template\r\n info.template += chunk.text;\r\n }\r\n // Apply style formatting\r\n //info.template = getTextFormatter().format(info.template, this.outputFormat);\r\n // Save cache\r\n this.setCache(format, info);\r\n return info;\r\n };\r\n /**\r\n * Applies format to Date.\r\n *\r\n * @param date Date object\r\n * @param info Parsed format information\r\n * @param language Language\r\n * @return Formatted date string\r\n */\r\n DateFormatter.prototype.applyFormat = function (date, info, language) {\r\n // Init return value\r\n var res = info.template;\r\n // Get values\r\n var fullYear, month, weekday, day, hours, minutes, seconds, milliseconds, offset = date.getTimezoneOffset(), timestamp = date.getTime();\r\n if (this.utc) {\r\n fullYear = date.getUTCFullYear();\r\n month = date.getUTCMonth();\r\n weekday = date.getUTCDay();\r\n day = date.getUTCDate();\r\n hours = date.getUTCHours();\r\n minutes = date.getUTCMinutes();\r\n seconds = date.getUTCSeconds();\r\n milliseconds = date.getUTCMilliseconds();\r\n }\r\n else {\r\n fullYear = date.getFullYear();\r\n month = date.getMonth();\r\n weekday = date.getDay();\r\n day = date.getDate();\r\n hours = date.getHours();\r\n minutes = date.getMinutes();\r\n seconds = date.getSeconds();\r\n milliseconds = date.getMilliseconds();\r\n }\r\n // Go through each part and format/replace it in template\r\n for (var i = 0, len = info.parts.length; i < len; i++) {\r\n var value = \"\";\r\n switch (info.parts[i]) {\r\n case \"G\":\r\n value = language.translate(fullYear < 0\r\n ? \"_era_bc\"\r\n : \"_era_ad\");\r\n break;\r\n case \"yyyy\":\r\n value = Math.abs(fullYear).toString();\r\n if (fullYear < 0) {\r\n value += language.translate(\"_era_bc\");\r\n }\r\n break;\r\n case \"yyy\":\r\n case \"yy\":\r\n case \"y\":\r\n value = Math.abs(fullYear).toString().substr(-info.parts[i].length);\r\n if (fullYear < 0) {\r\n value += language.translate(\"_era_bc\");\r\n }\r\n break;\r\n case \"YYYY\":\r\n case \"YYY\":\r\n case \"YY\":\r\n case \"Y\":\r\n var week = $utils.getWeek(date);\r\n var year = fullYear;\r\n if (week == 1 && (weekday > 4)) {\r\n year--;\r\n }\r\n if (info.parts[i] == \"YYYY\") {\r\n value = Math.abs(year).toString();\r\n }\r\n else {\r\n value = Math.abs(year).toString().substr(-info.parts[i].length);\r\n }\r\n if (year < 0) {\r\n value += language.translate(\"_era_bc\");\r\n }\r\n break;\r\n case \"u\":\r\n // @todo\r\n break;\r\n case \"q\":\r\n value = \"\" + Math.ceil((date.getMonth() + 1) / 3);\r\n break;\r\n case \"MMMMM\":\r\n value = language.translate(this.months[month]).substr(0, 1);\r\n break;\r\n case \"MMMM\":\r\n value = language.translate(this.months[month]);\r\n break;\r\n case \"MMM\":\r\n value = language.translate(this.monthsShort[month]);\r\n break;\r\n case \"MM\":\r\n value = $utils.padString(month + 1, 2, \"0\");\r\n break;\r\n case \"M\":\r\n value = (month + 1).toString();\r\n break;\r\n case \"ww\":\r\n value = $utils.padString($utils.getWeek(date, this.utc), 2, \"0\");\r\n break;\r\n case \"w\":\r\n value = $utils.getWeek(date, this.utc).toString();\r\n break;\r\n case \"W\":\r\n value = $utils.getMonthWeek(date, this.utc).toString();\r\n break;\r\n case \"dd\":\r\n value = $utils.padString(day, 2, \"0\");\r\n break;\r\n case \"d\":\r\n value = day.toString();\r\n break;\r\n case \"DD\":\r\n case \"DDD\":\r\n value = $utils.padString($utils.getYearDay(date, this.utc).toString(), info.parts[i].length, \"0\");\r\n break;\r\n case \"D\":\r\n value = $utils.getYearDay(date, this.utc).toString();\r\n break;\r\n case \"F\":\r\n // @todo\r\n break;\r\n case \"g\":\r\n // @todo\r\n break;\r\n case \"t\":\r\n value = language.translateFunc(\"_dateOrd\").call(this, day);\r\n break;\r\n case \"E\":\r\n value = (weekday || 7).toString();\r\n break;\r\n case \"EE\":\r\n value = $utils.padString((weekday || 7).toString(), 2, \"0\");\r\n break;\r\n case \"EEE\":\r\n case \"eee\":\r\n value = language.translate(this.weekdaysShort[weekday]);\r\n break;\r\n case \"EEEE\":\r\n case \"eeee\":\r\n value = language.translate(this.weekdays[weekday]);\r\n break;\r\n case \"EEEEE\":\r\n case \"eeeee\":\r\n value = language.translate(this.weekdays[weekday]).substr(0, 1);\r\n break;\r\n case \"e\":\r\n case \"ee\":\r\n value = (weekday - this.firstDayOfWeek + 1).toString();\r\n if (info.parts[i] == \"ee\") {\r\n value = $utils.padString(value, 2, \"0\");\r\n }\r\n break;\r\n case \"a\":\r\n if (hours >= 12) {\r\n value = language.translate(\"PM\");\r\n }\r\n else {\r\n value = language.translate(\"AM\");\r\n }\r\n break;\r\n case \"aa\":\r\n if (hours >= 12) {\r\n value = language.translate(\"P.M.\");\r\n }\r\n else {\r\n value = language.translate(\"A.M.\");\r\n }\r\n break;\r\n case \"aaa\":\r\n if (hours >= 12) {\r\n value = language.translate(\"P\");\r\n }\r\n else {\r\n value = language.translate(\"A\");\r\n }\r\n break;\r\n case \"h\":\r\n value = $utils.get12Hours(hours).toString();\r\n break;\r\n case \"hh\":\r\n value = $utils.padString($utils.get12Hours(hours), 2, \"0\");\r\n break;\r\n case \"H\":\r\n value = hours.toString();\r\n break;\r\n case \"HH\":\r\n value = $utils.padString(hours, 2, \"0\");\r\n break;\r\n case \"K\":\r\n value = $utils.get12Hours(hours, 0).toString();\r\n break;\r\n case \"KK\":\r\n value = $utils.padString($utils.get12Hours(hours, 0), 2, \"0\");\r\n break;\r\n case \"k\":\r\n value = (hours + 1).toString();\r\n break;\r\n case \"kk\":\r\n value = $utils.padString(hours + 1, 2, \"0\");\r\n break;\r\n case \"m\":\r\n value = minutes.toString();\r\n break;\r\n case \"mm\":\r\n value = $utils.padString(minutes, 2, \"0\");\r\n break;\r\n case \"s\":\r\n value = seconds.toString();\r\n break;\r\n case \"ss\":\r\n value = $utils.padString(seconds, 2, \"0\");\r\n break;\r\n case \"S\":\r\n case \"SS\":\r\n case \"SSS\":\r\n value = Math.round((milliseconds / 1000) * Math.pow(10, info.parts[i].length)).toString();\r\n break;\r\n case \"x\":\r\n value = timestamp.toString();\r\n break;\r\n case \"n\":\r\n case \"nn\":\r\n case \"nnn\":\r\n value = $utils.padString(milliseconds, info.parts[i].length, \"0\");\r\n break;\r\n case \"z\":\r\n value = $utils.getTimeZone(date, false, false, this.utc);\r\n break;\r\n case \"zz\":\r\n value = $utils.getTimeZone(date, true, false, this.utc);\r\n break;\r\n case \"zzz\":\r\n value = $utils.getTimeZone(date, false, true, this.utc);\r\n break;\r\n case \"zzzz\":\r\n value = $utils.getTimeZone(date, true, true, this.utc);\r\n break;\r\n case \"Z\":\r\n case \"ZZ\":\r\n var tz = Math.abs(offset) / 60;\r\n var tzh = Math.floor(tz);\r\n var tzm = tz * 60 - tzh * 60;\r\n if (this.utc) {\r\n tzh = 0;\r\n tzm = 0;\r\n }\r\n if (info.parts[i] == \"Z\") {\r\n value = \"GMT\";\r\n value += offset > 0 ? \"-\" : \"+\";\r\n value += $utils.padString(tzh, 2) + \":\" + $utils.padString(tzm, 2);\r\n }\r\n else {\r\n value = offset > 0 ? \"-\" : \"+\";\r\n value += $utils.padString(tzh, 2) + $utils.padString(tzm, 2);\r\n }\r\n break;\r\n case \"i\":\r\n value = date.toISOString();\r\n break;\r\n case \"I\":\r\n value = date.toUTCString();\r\n break;\r\n }\r\n res = res.replace($strings.PLACEHOLDER, value);\r\n }\r\n return res;\r\n };\r\n /**\r\n * Parses any input value into Date object.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-date-time/#Parsing_Dates} Tutorial on date/time parsing\r\n * @param source Source value\r\n * @param format Source format\r\n * @return Date object\r\n */\r\n DateFormatter.prototype.parse = function (source, format) {\r\n // Format set?\r\n if (!$type.hasValue(format)) {\r\n format = this.inputDateFormat;\r\n }\r\n // Is it already a Date\r\n if (source instanceof Date) {\r\n return source;\r\n }\r\n // Is it a numeric timestamp\r\n if (typeof source === \"number\") {\r\n return new Date(source);\r\n }\r\n // No? Let's check if it's string, and try converting to it if nec\r\n if (typeof source !== \"string\") {\r\n source = source.toString();\r\n }\r\n // no language?\r\n if (!this.language) {\r\n if (this.sprite) {\r\n this.language = this.sprite.language;\r\n }\r\n else {\r\n this.language = new Language;\r\n }\r\n }\r\n // Init return value\r\n var res;\r\n // Init RegEx for parsing\r\n var reg = \"\";\r\n // Clean format\r\n format = $utils.cleanFormat(format);\r\n // Clip format to length of the source string\r\n format = format.substr(0, source.length);\r\n // Parse format\r\n var info = this.parseFormat(format);\r\n // Init parsed items holder\r\n var parsedIndexes = {\r\n \"year\": -1,\r\n \"year3\": -1,\r\n \"year2\": -1,\r\n \"year1\": -1,\r\n \"month\": -1,\r\n \"monthShort\": -1,\r\n \"monthLong\": -1,\r\n \"weekdayShort\": -1,\r\n \"weekdayLong\": -1,\r\n \"day\": -1,\r\n \"yearDay\": -1,\r\n \"week\": -1,\r\n \"hourBase0\": -1,\r\n \"hour12Base0\": -1,\r\n \"hourBase1\": -1,\r\n \"hour12Base1\": -1,\r\n \"minute\": -1,\r\n \"second\": -1,\r\n \"millisecond\": -1,\r\n \"millisecondDigits\": -1,\r\n \"am\": -1,\r\n \"zone\": -1,\r\n \"timestamp\": -1,\r\n \"iso\": -1\r\n };\r\n // Init values\r\n var resValues = {\r\n \"year\": 1970,\r\n \"month\": 0,\r\n \"day\": 1,\r\n \"hour\": 0,\r\n \"minute\": 0,\r\n \"second\": 0,\r\n \"millisecond\": 0,\r\n \"timestamp\": null,\r\n \"offset\": 0,\r\n \"utc\": this.utc\r\n };\r\n // Index adjuster\r\n var indexAdjust = 0, index = 0;\r\n // Iterate through all of the parts\r\n for (var i = 0; i < info.parts.length; i++) {\r\n // Set current match index\r\n index = i + indexAdjust + 1;\r\n switch (info.parts[i]) {\r\n case \"yyyy\":\r\n case \"YYYY\":\r\n reg += \"([0-9]{4})\";\r\n parsedIndexes.year = index;\r\n break;\r\n case \"yyy\":\r\n case \"YYY\":\r\n reg += \"([0-9]{3})\";\r\n parsedIndexes.year3 = index;\r\n break;\r\n case \"yy\":\r\n case \"YY\":\r\n reg += \"([0-9]{2})\";\r\n parsedIndexes.year2 = index;\r\n break;\r\n case \"y\":\r\n case \"Y\":\r\n reg += \"([0-9]{1})\";\r\n parsedIndexes.year1 = index;\r\n break;\r\n case \"MMMM\":\r\n reg += \"(\" + this.getStringList(this.months).join(\"|\") + \")\";\r\n parsedIndexes.monthLong = index;\r\n break;\r\n case \"MMM\":\r\n reg += \"(\" + this.getStringList(this.monthsShort).join(\"|\") + \")\";\r\n parsedIndexes.monthShort = index;\r\n break;\r\n case \"MM\":\r\n case \"M\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.month = index;\r\n break;\r\n case \"ww\":\r\n case \"w\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.week = index;\r\n break;\r\n case \"dd\":\r\n case \"d\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.day = index;\r\n break;\r\n case \"DDD\":\r\n case \"DD\":\r\n case \"D\":\r\n reg += \"([0-9]{3}|[0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.yearDay = index;\r\n break;\r\n case \"dddd\":\r\n reg += \"(\" + this.getStringList(this.weekdays).join(\"|\") + \")\";\r\n parsedIndexes.weekdayLong = index;\r\n break;\r\n case \"ddd\":\r\n reg += \"(\" + this.getStringList(this.weekdaysShort).join(\"|\") + \")\";\r\n parsedIndexes.weekdayShort = index;\r\n break;\r\n case \"aaa\":\r\n case \"aa\":\r\n case \"a\":\r\n // TODO: fix (escape regex)\r\n reg += \"(\" + this.getStringList([\"AM\", \"PM\", \"A\\.M\\.\", \"P\\.M\\.\", \"A\", \"P\"]).join(\"|\") + \")\";\r\n parsedIndexes.am = index;\r\n break;\r\n case \"hh\":\r\n case \"h\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.hour12Base1 = index;\r\n break;\r\n case \"HH\":\r\n case \"H\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.hourBase0 = index;\r\n break;\r\n case \"KK\":\r\n case \"K\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.hour12Base0 = index;\r\n break;\r\n case \"kk\":\r\n case \"k\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.hourBase1 = index;\r\n break;\r\n case \"mm\":\r\n case \"m\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.minute = index;\r\n break;\r\n case \"ss\":\r\n case \"s\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.second = index;\r\n break;\r\n case \"SSS\":\r\n case \"SS\":\r\n case \"S\":\r\n reg += \"([0-9]{3}|[0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.millisecond = index;\r\n parsedIndexes.millisecondDigits = info.parts[i].length;\r\n break;\r\n case \"nnn\":\r\n case \"nn\":\r\n case \"n\":\r\n reg += \"([0-9]{3}|[0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.millisecond = index;\r\n break;\r\n case \"x\":\r\n reg += \"([0-9]{1,})\";\r\n parsedIndexes.timestamp = index;\r\n break;\r\n case \"Z\":\r\n reg += \"GMT([-+]+[0-9]{2}:[0-9]{2})\";\r\n parsedIndexes.zone = index;\r\n break;\r\n case \"ZZ\":\r\n reg += \"([\\\\-+]+[0-9]{2}[0-9]{2})\";\r\n parsedIndexes.zone = index;\r\n break;\r\n case \"i\":\r\n reg += \"([0-9]{4})-?([0-9]{2})-?([0-9]{2})T?([0-9]{2}):?([0-9]{2}):?([0-9]{2})\\.?([0-9]{0,3})([zZ]|[+\\-][0-9]{2}:?[0-9]{2}|$)\";\r\n parsedIndexes.iso = index;\r\n indexAdjust += 7;\r\n break;\r\n case \"G\":\r\n case \"YYYY\":\r\n case \"YYY\":\r\n case \"YY\":\r\n case \"Y\":\r\n case \"MMMMM\":\r\n case \"W\":\r\n case \"EEEEE\":\r\n case \"EEEE\":\r\n case \"EEE\":\r\n case \"EE\":\r\n case \"E\":\r\n case \"eeeee\":\r\n case \"eeee\":\r\n case \"eee\":\r\n case \"ee\":\r\n case \"e\":\r\n case \"zzzz\":\r\n case \"zzz\":\r\n case \"zz\":\r\n case \"z\":\r\n case \"t\":\r\n // Ignore\r\n indexAdjust--;\r\n break;\r\n }\r\n reg += \"[^0-9]*\";\r\n }\r\n // Try matching\r\n var regex = new RegExp(reg);\r\n var matches = source.match(regex);\r\n if (matches) {\r\n // Populate the date object\r\n // Full year\r\n if (parsedIndexes.year > -1) {\r\n resValues.year = parseInt(matches[parsedIndexes.year]);\r\n }\r\n // 3-digit year\r\n if (parsedIndexes.year3 > -1) {\r\n var val = parseInt(matches[parsedIndexes.year3]);\r\n val += 1000;\r\n resValues.year = val;\r\n }\r\n // 2-digit year\r\n if (parsedIndexes.year2 > -1) {\r\n var val = parseInt(matches[parsedIndexes.year2]);\r\n if (val > 50) {\r\n val += 1000;\r\n }\r\n else {\r\n val += 2000;\r\n }\r\n resValues.year = val;\r\n }\r\n // 1-digit year\r\n if (parsedIndexes.year1 > -1) {\r\n var val = parseInt(matches[parsedIndexes.year1]);\r\n val = Math.floor((new Date().getFullYear()) / 10) * 10 + val;\r\n resValues.year = val;\r\n }\r\n // Full month\r\n if (parsedIndexes.monthLong > -1) {\r\n resValues.month = this.resolveMonth(matches[parsedIndexes.monthLong]);\r\n }\r\n // Short month\r\n if (parsedIndexes.monthShort > -1) {\r\n resValues.month = this.resolveShortMonth(matches[parsedIndexes.monthShort]);\r\n }\r\n // Numeric month\r\n if (parsedIndexes.month > -1) {\r\n resValues.month = parseInt(matches[parsedIndexes.month]) - 1;\r\n }\r\n // Weekday\r\n // @todo\r\n // Week\r\n if ((parsedIndexes.week > -1) && (parsedIndexes.day === -1)) {\r\n // We parse weeks ONLY if day is not explicitly set\r\n // TODO: this needs work\r\n // (but maybe later - I can hardly imagine anyone passing their dates in weeks)\r\n resValues.month = 0;\r\n resValues.day = $utils.getDayFromWeek(parseInt(matches[parsedIndexes.week]), resValues.year, 1, this.utc);\r\n }\r\n // Day\r\n if (parsedIndexes.day > -1) {\r\n resValues.day = parseInt(matches[parsedIndexes.day]);\r\n }\r\n // Year day\r\n if (parsedIndexes.yearDay > -1) {\r\n resValues.month = 0;\r\n resValues.day = parseInt(matches[parsedIndexes.yearDay]);\r\n }\r\n // 24 Hour (0-23)\r\n if (parsedIndexes.hourBase0 > -1) {\r\n resValues.hour = parseInt(matches[parsedIndexes.hourBase0]);\r\n }\r\n // 24 Hour (1-24)\r\n if (parsedIndexes.hourBase1 > -1) {\r\n resValues.hour = parseInt(matches[parsedIndexes.hourBase1]) - 1;\r\n }\r\n // 12 Hour (0-11)\r\n if (parsedIndexes.hour12Base0 > -1) {\r\n var val = parseInt(matches[parsedIndexes.hour12Base0]);\r\n if (val == 11) {\r\n val = 0;\r\n }\r\n if ((parsedIndexes.am > -1) && !this.isAm(matches[parsedIndexes.am])) {\r\n val += 12;\r\n }\r\n resValues.hour = val;\r\n }\r\n // 12 Hour (1-12)\r\n if (parsedIndexes.hour12Base1 > -1) {\r\n var val = parseInt(matches[parsedIndexes.hour12Base1]);\r\n if (val == 12) {\r\n val = 0;\r\n }\r\n if ((parsedIndexes.am > -1) && !this.isAm(matches[parsedIndexes.am])) {\r\n val += 12;\r\n }\r\n resValues.hour = val;\r\n }\r\n // Minute\r\n if (parsedIndexes.minute > -1) {\r\n resValues.minute = parseInt(matches[parsedIndexes.minute]);\r\n }\r\n // Second\r\n if (parsedIndexes.second > -1) {\r\n resValues.second = parseInt(matches[parsedIndexes.second]);\r\n }\r\n // Millisecond\r\n if (parsedIndexes.millisecond > -1) {\r\n var val = parseInt(matches[parsedIndexes.millisecond]);\r\n if (parsedIndexes.millisecondDigits == 2) {\r\n val *= 10;\r\n }\r\n else if (parsedIndexes.millisecondDigits == 1) {\r\n val *= 100;\r\n }\r\n resValues.millisecond = val;\r\n }\r\n // Timestamp\r\n if (parsedIndexes.timestamp > -1) {\r\n resValues.timestamp = parseInt(matches[parsedIndexes.timestamp]);\r\n var ts = new Date(resValues.timestamp);\r\n resValues.year = ts.getUTCFullYear();\r\n resValues.month = ts.getUTCMonth();\r\n resValues.day = ts.getUTCDate();\r\n resValues.hour = ts.getUTCHours();\r\n resValues.minute = ts.getUTCMinutes();\r\n resValues.second = ts.getUTCSeconds();\r\n resValues.millisecond = ts.getUTCMilliseconds();\r\n }\r\n // Adjust time zone\r\n if (parsedIndexes.zone > -1) {\r\n resValues.offset = this.resolveTimezoneOffset(new Date(resValues.year, resValues.month, resValues.day), matches[parsedIndexes.zone]);\r\n }\r\n // ISO\r\n if (parsedIndexes.iso > -1) {\r\n resValues.year = $type.toNumber(matches[parsedIndexes.iso + 0]);\r\n resValues.month = $type.toNumber(matches[parsedIndexes.iso + 1]) - 1;\r\n resValues.day = $type.toNumber(matches[parsedIndexes.iso + 2]);\r\n resValues.hour = $type.toNumber(matches[parsedIndexes.iso + 3]);\r\n resValues.minute = $type.toNumber(matches[parsedIndexes.iso + 4]);\r\n resValues.second = $type.toNumber(matches[parsedIndexes.iso + 5]);\r\n resValues.millisecond = $type.toNumber(matches[parsedIndexes.iso + 6]);\r\n if (matches[parsedIndexes.iso + 7] == \"Z\" || matches[parsedIndexes.iso + 7] == \"z\") {\r\n resValues.utc = true;\r\n }\r\n else if (matches[parsedIndexes.iso + 7] != \"\") {\r\n resValues.offset = this.resolveTimezoneOffset(new Date(resValues.year, resValues.month, resValues.day), matches[parsedIndexes.iso + 7]);\r\n }\r\n }\r\n // Create Date object\r\n if (resValues.utc) {\r\n res = new Date(Date.UTC(resValues.year, resValues.month, resValues.day, resValues.hour, resValues.minute, resValues.second, resValues.millisecond));\r\n }\r\n else {\r\n res = new Date(resValues.year, resValues.month, resValues.day, resValues.hour, resValues.minute + resValues.offset, resValues.second, resValues.millisecond);\r\n }\r\n }\r\n else {\r\n // Didn't match anything\r\n // Let's try dropping it into Date constructor and hope for the best\r\n res = new Date(source);\r\n }\r\n return res;\r\n };\r\n DateFormatter.prototype.resolveTimezoneOffset = function (date, zone) {\r\n var value = zone.match(/([+\\-]?)([0-9]{2}):?([0-9]{2})/);\r\n if (value) {\r\n var match = $type.getValue(zone.match(/([+\\-]?)([0-9]{2}):?([0-9]{2})/));\r\n var dir = match[1];\r\n var hour = match[2];\r\n var minute = match[3];\r\n var offset = parseInt(hour) * 60 + parseInt(minute);\r\n // Adjust offset\r\n // Making it negative does not seem to make sense, but it's right\r\n // because of how JavaScript calculates GMT offsets\r\n if (dir == \"+\") {\r\n offset *= -1;\r\n }\r\n // Check the difference in offset\r\n var originalOffset = (date || new Date()).getTimezoneOffset();\r\n var diff = offset - originalOffset;\r\n return diff;\r\n }\r\n return 0;\r\n };\r\n /**\r\n * Resolves month name (i.e. \"December\") into a month number (11).\r\n *\r\n * @param value Month name\r\n * @return Month number\r\n */\r\n DateFormatter.prototype.resolveMonth = function (value) {\r\n // Let's try English first\r\n var month = this.months.indexOf(value);\r\n if (month > -1) {\r\n return month;\r\n }\r\n // Try the translation\r\n if (this.language && !this.language.isDefault()) {\r\n month = this.language.translateAll(this.months).indexOf(value);\r\n if (month > -1) {\r\n return month;\r\n }\r\n }\r\n return 0;\r\n };\r\n /**\r\n * Resolves short month name (i.e. \"Dec\") into a month number.\r\n *\r\n * @param value Short month name\r\n * @return Month number\r\n */\r\n DateFormatter.prototype.resolveShortMonth = function (value) {\r\n // Let's try English first\r\n var month = this.monthsShort.indexOf(value);\r\n if (month > -1) {\r\n return month;\r\n }\r\n // Maybe long month (workaround for May)\r\n month = this.months.indexOf(value);\r\n if (month > -1) {\r\n return month;\r\n }\r\n // Try the translation\r\n if (this.language && !this.language.isDefault()) {\r\n month = this.language.translateAll(this.monthsShort).indexOf(value);\r\n if (month > -1) {\r\n return month;\r\n }\r\n }\r\n return 0;\r\n };\r\n /**\r\n * Checks if passed in string represents AM/PM notation in many of its\r\n * versions.\r\n *\r\n * @param value Source string\r\n * @return Is it AM/PM?\r\n */\r\n DateFormatter.prototype.isAm = function (value) {\r\n var list = this.getStringList([\"AM\", \"A.M.\", \"A\"]);\r\n return list.indexOf(value.toUpperCase()) > -1;\r\n };\r\n /**\r\n * Invalidates related [[Sprite]] causing it to redraw.\r\n */\r\n DateFormatter.prototype.invalidateSprite = function () {\r\n if (this.sprite) {\r\n this.sprite.invalidate();\r\n }\r\n };\r\n /**\r\n * Translates list of strings.\r\n *\r\n * @param list Source strings\r\n * @return Translated strings\r\n */\r\n DateFormatter.prototype.getStringList = function (list) {\r\n var res = [];\r\n for (var i = 0; i < list.length; i++) {\r\n // translate?\r\n if (this.language) {\r\n res.push($utils.escapeForRgex(this.language.translate(list[i])));\r\n }\r\n else {\r\n res.push($utils.escapeForRgex(list[i]));\r\n }\r\n }\r\n return res;\r\n };\r\n Object.defineProperty(DateFormatter.prototype, \"dateFormat\", {\r\n /**\r\n * @return Date format\r\n */\r\n get: function () {\r\n return this._dateFormat;\r\n },\r\n /**\r\n * Date format to use.\r\n *\r\n * If format is not supplied in-line in the string, this setting will be\r\n * used.\r\n *\r\n * @default \"yyyy-MM-dd\"\r\n * @param value Date format\r\n */\r\n set: function (value) {\r\n this._dateFormat = value;\r\n this.invalidateSprite();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateFormatter.prototype, \"inputDateFormat\", {\r\n /**\r\n * @return Date format\r\n */\r\n get: function () {\r\n return this._inputDateFormat;\r\n },\r\n /**\r\n * Date format to use when parsing dates.\r\n *\r\n * @default \"yyyy-MM-dd\"\r\n * @param value Date format\r\n */\r\n set: function (value) {\r\n this._inputDateFormat = value;\r\n this.invalidateSprite();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateFormatter.prototype, \"intlLocales\", {\r\n /**\r\n * @return Date format\r\n */\r\n get: function () {\r\n return this._intlLocales;\r\n },\r\n /**\r\n * Locales if you are using date formats in `Intl.DateTimeFormatOptions` syntax.\r\n *\r\n * @param value Locales\r\n */\r\n set: function (value) {\r\n this._intlLocales = value;\r\n this.invalidateSprite();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateFormatter.prototype, \"utc\", {\r\n /**\r\n * @return Use UTC?\r\n */\r\n get: function () {\r\n return this._utc;\r\n },\r\n /**\r\n * Should formatter use UTC functions?\r\n *\r\n * If UTC is used, all date/time values will be independent on client's\r\n * time zone.\r\n *\r\n * @param value Use UTC?\r\n */\r\n set: function (value) {\r\n this._utc = value;\r\n this.invalidateSprite();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateFormatter.prototype, \"timezoneOffset\", {\r\n /**\r\n * @return Offset (minutes)\r\n */\r\n get: function () {\r\n return this._timezoneOffset;\r\n },\r\n /**\r\n * If set, will apply specific offset in minutes before formatting the date\r\n * text.\r\n *\r\n * The value is a number of minutes from target time zone to UTC.\r\n *\r\n * E.g. `300` will recalculate Dates in \"GMT-5\" time zone.\r\n *\r\n * @param value Offset (minutes)\r\n */\r\n set: function (value) {\r\n if (this._timezoneOffset != value) {\r\n this._timezoneOffset = value;\r\n this.invalidateSprite();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateFormatter.prototype, \"timezone\", {\r\n /**\r\n * @return Timezone\r\n */\r\n get: function () {\r\n return this._timezone;\r\n },\r\n /**\r\n * If set, will format date/time in specific time zone.\r\n *\r\n * The value should be named time zone, e.g.:\r\n * `\"America/Vancouver\"`, `\"Australia/Sydney\"`, `\"UTC\"`.\r\n *\r\n * @since 4.10.1\r\n * @param value Timezone\r\n */\r\n set: function (value) {\r\n if (this._timezone != value) {\r\n this._timezone = value;\r\n this.timezoneMinutes = $time.getTimezoneMinutes(value);\r\n this.invalidateSprite();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateFormatter.prototype, \"firstDayOfWeek\", {\r\n /**\r\n * @return First day of week\r\n */\r\n get: function () {\r\n return this._firstDayOfWeek;\r\n },\r\n /**\r\n * First day of the week:\r\n *\r\n * * 0 - Sunday\r\n * * 1 - Monday\r\n * * 2 - Tuesday\r\n *\r\n * Etc.\r\n *\r\n * @param value First day of week\r\n */\r\n set: function (value) {\r\n this._firstDayOfWeek = value;\r\n this.invalidateSprite();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateFormatter.prototype, \"outputFormat\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Format\r\n */\r\n get: function () {\r\n return this._outputFormat;\r\n },\r\n /**\r\n * Output format for the formatted date.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Format\r\n */\r\n set: function (value) {\r\n this._outputFormat = value.toLowerCase();\r\n this.invalidateSprite();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return DateFormatter;\r\n}(BaseObject));\r\nexport { DateFormatter };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"DateFormatter\"] = DateFormatter;\r\n//# sourceMappingURL=DateFormatter.js.map","/**\r\n * Duration formatting functionality.\r\n */\r\nimport { __extends } from \"tslib\";\r\nimport { Language } from \"../utils/Language\";\r\nimport { BaseObject } from \"../Base\";\r\nimport { getTextFormatter } from \"../formatters/TextFormatter\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $strings from \"../utils/Strings\";\r\nimport * as $object from \"../utils/Object\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $math from \"../utils/Math\";\r\n/**\r\n * DurationFormatter class. Formats numbers as durations.\r\n *\r\n * `1000` as `16:40`\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-duration/} Tutorial on duration formatting\r\n */\r\nvar DurationFormatter = /** @class */ (function (_super) {\r\n __extends(DurationFormatter, _super);\r\n /**\r\n * Constructor\r\n */\r\n function DurationFormatter() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * A base value for negative numbers. Will treat all numbers below this value\r\n * as negative numbers.\r\n */\r\n _this._negativeBase = 0;\r\n /**\r\n * A base unit to consider values are in.\r\n *\r\n * @default \"s\"\r\n */\r\n _this._baseUnit = \"second\";\r\n /**\r\n * Output format to produce. If the format calls for applying color to the\r\n * formatted value, this setting will determine what markup to use: SVG or\r\n * HTML.\r\n *\r\n * Available options: svg, html.\r\n *\r\n * @default \"svg\"\r\n */\r\n _this._outputFormat = \"svg\";\r\n /**\r\n * How many milliseconds each unit represents.\r\n */\r\n _this._unitValues = {\r\n \"millisecond\": 1,\r\n \"second\": 1000,\r\n \"minute\": 60000,\r\n \"hour\": 3600000,\r\n \"day\": 86400000,\r\n \"week\": 604800000,\r\n \"month\": 2592000000,\r\n \"year\": 31536000000,\r\n };\r\n /**\r\n * Collection of aliases for units.\r\n */\r\n _this._unitAliases = {\r\n \"Y\": \"y\",\r\n \"D\": \"d\",\r\n \"H\": \"h\",\r\n \"K\": \"h\",\r\n \"k\": \"h\",\r\n \"n\": \"S\"\r\n };\r\n _this.className = \"DurationFormatter\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Formats the number according as duration.\r\n *\r\n * For example `1000` (base unit seconds) would be converted to `16:40` as in\r\n * 16 minutes and 40 seconds.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-duration/} Tutorial on duration formatting\r\n * @param value Value to format\r\n * @param format Format to apply\r\n * @param base Override base unit\r\n * @return Formatted number\r\n */\r\n DurationFormatter.prototype.format = function (value, format, base) {\r\n // no language?\r\n if (!this.language) {\r\n if (this.sprite) {\r\n this.language = this.sprite.language;\r\n }\r\n else {\r\n this.language = new Language;\r\n }\r\n }\r\n // no base unit?\r\n var baseUnit = base || this._baseUnit;\r\n // no format passed in or empty\r\n if (typeof format === \"undefined\" || format === \"\") {\r\n if ($type.hasValue(this.durationFormat)) {\r\n format = this.durationFormat;\r\n }\r\n else {\r\n format = this.getFormat($type.toNumber(value), null, baseUnit);\r\n }\r\n }\r\n // Clean format\r\n format = $utils.cleanFormat(format);\r\n // get format info (it will also deal with parser caching)\r\n var info = this.parseFormat(format, baseUnit);\r\n // cast to number just in case\r\n // TODO: maybe use better casting\r\n var source = Number(value);\r\n // format and replace the number\r\n var details;\r\n if (source > this._negativeBase) {\r\n details = info.positive;\r\n }\r\n else if (source < this._negativeBase) {\r\n details = info.negative;\r\n }\r\n else {\r\n details = info.zero;\r\n }\r\n // Format\r\n var formatted = this.applyFormat(source, details);\r\n // Apply color?\r\n if (details.color !== \"\") {\r\n if (this._outputFormat === \"svg\") {\r\n formatted = \"<tspan fill='\" + details.color + \"'>\" + formatted + \"</tspan>\";\r\n }\r\n else if (this._outputFormat === \"html\") {\r\n formatted = \"<span style='color: \" + details.color + \";'>\" + formatted + \"</span>\";\r\n }\r\n }\r\n return formatted;\r\n };\r\n /**\r\n * Parses supplied format into structured object which can be used to format\r\n * the number.\r\n *\r\n * @param format Format string, i.e. \"#,###.00\"\r\n * @param base Override base unit\r\n * @return Parsed information\r\n */\r\n DurationFormatter.prototype.parseFormat = function (format, base) {\r\n var _this = this;\r\n // Check cache\r\n var cached = this.getCache(format);\r\n if ($type.hasValue(cached)) {\r\n return cached;\r\n }\r\n // no base unit?\r\n var baseUnit = base || this._baseUnit;\r\n // Initialize duration parsing info\r\n var info = {\r\n \"positive\": {\r\n \"color\": \"\",\r\n \"template\": \"\",\r\n \"parts\": [],\r\n \"source\": \"\",\r\n \"baseUnit\": baseUnit,\r\n \"parsed\": false,\r\n \"absolute\": false\r\n },\r\n \"negative\": {\r\n \"color\": \"\",\r\n \"template\": \"\",\r\n \"parts\": [],\r\n \"source\": \"\",\r\n \"baseUnit\": baseUnit,\r\n \"parsed\": false,\r\n \"absolute\": false\r\n },\r\n \"zero\": {\r\n \"color\": \"\",\r\n \"template\": \"\",\r\n \"parts\": [],\r\n \"source\": \"\",\r\n \"baseUnit\": baseUnit,\r\n \"parsed\": false,\r\n \"absolute\": false\r\n }\r\n };\r\n // Escape double vertical bars (that mean display one vertical bar)\r\n format = format.replace(\"||\", $strings.PLACEHOLDER2);\r\n // Split it up and deal with different formats\r\n var parts = format.split(\"|\");\r\n info.positive.source = parts[0];\r\n if (typeof parts[2] === \"undefined\") {\r\n info.zero = info.positive;\r\n }\r\n else {\r\n info.zero.source = parts[2];\r\n }\r\n if (typeof parts[1] === \"undefined\") {\r\n info.negative = info.positive;\r\n }\r\n else {\r\n info.negative.source = parts[1];\r\n }\r\n // Parse each\r\n $object.each(info, function (part, item) {\r\n // Already parsed\r\n if (item.parsed) {\r\n return;\r\n }\r\n // Check cached\r\n if (typeof _this.getCache(item.source) !== \"undefined\") {\r\n info[part] = _this.getCache(item.source);\r\n return;\r\n }\r\n // Begin parsing\r\n var partFormat = item.source;\r\n // Check for [] directives\r\n var dirs = [];\r\n dirs = item.source.match(/^\\[([^\\]]*)\\]/);\r\n if (dirs && dirs.length && dirs[0] !== \"\") {\r\n partFormat = item.source.substr(dirs[0].length);\r\n item.color = dirs[1];\r\n }\r\n // Let TextFormatter split into chunks\r\n var chunks = getTextFormatter().chunk(partFormat, true);\r\n for (var i = 0; i < chunks.length; i++) {\r\n var chunk = chunks[i];\r\n // replace back double vertical bar\r\n chunk.text = chunk.text.replace($strings.PLACEHOLDER2, \"|\");\r\n if (chunk.type === \"value\") {\r\n // Just \"Duration\"?\r\n // if (chunk.text.toLowerCase() === \"duration\") {\r\n // \tchunk.text = durationFormat;\r\n // }\r\n // Check for \"a\" (absolute) modifier\r\n if (chunk.text.match(/[yYMdDwhHKkmsSn]+a/)) {\r\n item.absolute = true;\r\n chunk.text = chunk.text.replace(/([yYMdDwhHKkmsSn]+)a/, \"$1\");\r\n }\r\n // Find all possible parts\r\n var matches = chunk.text.match(/y+|Y+|M+|d+|D+|w+|h+|H+|K+|k+|m+|s+|S+|n+/g);\r\n if (matches) {\r\n // Populate template\r\n for (var x = 0; x < matches.length; x++) {\r\n // Is it an alias?\r\n if (!$type.hasValue(matches[x])) {\r\n matches[x] = _this._unitAliases[matches[x]];\r\n }\r\n item.parts.push(matches[x]);\r\n chunk.text = chunk.text.replace(matches[x], $strings.PLACEHOLDER);\r\n }\r\n }\r\n }\r\n // Apply to template\r\n item.template += chunk.text;\r\n }\r\n // Apply style formatting\r\n //item.template = getTextFormatter().format(item.template, this.outputFormat);\r\n // Save cache\r\n _this.setCache(item.source, item);\r\n // Mark this as parsed\r\n item.parsed = true;\r\n });\r\n // Save cache (the whole thing)\r\n this.setCache(format, info);\r\n return info;\r\n };\r\n /**\r\n * Applies parsed format to a numeric value.\r\n *\r\n * @param value Value\r\n * @param details Parsed format as returned by {parseFormat}\r\n * @return Formatted duration\r\n */\r\n DurationFormatter.prototype.applyFormat = function (value, details) {\r\n // Use absolute values\r\n var negative = !details.absolute && (value < this._negativeBase);\r\n value = Math.abs(value);\r\n // Recalculate to milliseconds\r\n var tstamp = this.toTimeStamp(value, details.baseUnit);\r\n // Init return value\r\n var res = details.template;\r\n // Iterate through duration parts\r\n for (var i = 0, len = details.parts.length; i < len; i++) {\r\n // Gather the part\r\n var part = details.parts[i];\r\n var unit = this.toTimeUnit(part.substr(0, 1));\r\n var digits = part.length;\r\n // Calculate current unit value\r\n var ints = Math.floor(tstamp / this._unitValues[unit]);\r\n res = res.replace($strings.PLACEHOLDER, $utils.padString(ints, digits, \"0\"));\r\n // Reduce timestamp\r\n tstamp -= ints * this._unitValues[unit];\r\n }\r\n // Reapply negative sign\r\n if (negative) {\r\n res = \"-\" + res;\r\n }\r\n return res;\r\n };\r\n /**\r\n * Converts numeric value to timestamp in milliseconds.\r\n *\r\n * @param value A source value\r\n * @param baseUnit Base unit the source value is in: \"q\", \"s\", \"i\", \"h\", \"d\", \"w\", \"m\", \"y\"\r\n * @return Value representation as a timestamp in milliseconds\r\n */\r\n DurationFormatter.prototype.toTimeStamp = function (value, baseUnit) {\r\n return value * this._unitValues[baseUnit];\r\n };\r\n DurationFormatter.prototype.toTimeUnit = function (code) {\r\n switch (code) {\r\n case \"S\":\r\n return \"millisecond\";\r\n case \"s\":\r\n return \"second\";\r\n case \"m\":\r\n return \"minute\";\r\n case \"h\":\r\n return \"hour\";\r\n case \"d\":\r\n return \"day\";\r\n case \"w\":\r\n return \"week\";\r\n case \"M\":\r\n return \"month\";\r\n case \"y\":\r\n return \"year\";\r\n }\r\n ;\r\n };\r\n /**\r\n * Invalidates the parent [[Sprite]] object.\r\n */\r\n DurationFormatter.prototype.invalidateSprite = function () {\r\n if (this.sprite) {\r\n this.sprite.invalidate();\r\n }\r\n };\r\n Object.defineProperty(DurationFormatter.prototype, \"baseUnit\", {\r\n /**\r\n * @return Base unit\r\n */\r\n get: function () {\r\n return this._baseUnit;\r\n },\r\n /**\r\n * Base unit the values are in.\r\n *\r\n * A base unit will be used to recalculate the numeric value to millisecond\r\n * timestamps.\r\n *\r\n * Available options:\r\n *\r\n * * \"millisecond\"\r\n * * \"second\"\r\n * * \"minute\"\r\n * * \"hour\"\r\n * * \"day\"\r\n * * \"week\"\r\n * * \"month\"\r\n * * \"year\"\r\n *\r\n * @default \"s\"\r\n * @param baseUnit A base unit\r\n */\r\n set: function (baseUnit) {\r\n this._baseUnit = baseUnit;\r\n this.invalidateSprite();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DurationFormatter.prototype, \"outputFormat\", {\r\n /**\r\n * Getter for output format.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Output format\r\n */\r\n get: function () {\r\n return this._outputFormat;\r\n },\r\n /**\r\n * Setter for output format: \"svg\" or \"html.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Output format\r\n */\r\n set: function (outputFormat) {\r\n this._outputFormat = outputFormat.toLowerCase();\r\n this.invalidateSprite();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns appropriate default format for the value.\r\n *\r\n * If `maxValue` is sepcified, it will use that value to determine the time\r\n * unit for the format.\r\n *\r\n * For example if your `baseUnit` is `\"second\"` and you pass in `10`, you\r\n * will get `\"10\"`.\r\n *\r\n * However, you might want it to be formatted in the context of bigger scale,\r\n * say 10 minutes (600 seconds). If you pass in `600` as `maxValue`, all\r\n * values, including small ones will use format with minutes, e.g.:\r\n * `00:10`, `00:50`, `12: 30`, etc.\r\n *\r\n * @param value Value to format\r\n * @param maxValue Maximum value to be used to determine format\r\n * @param baseUnit Base unit of the value\r\n * @return Format\r\n */\r\n DurationFormatter.prototype.getFormat = function (value, maxValue, baseUnit) {\r\n // Is format override set?\r\n if ($type.hasValue(this.durationFormat)) {\r\n return this.durationFormat;\r\n }\r\n // Get base unit\r\n if (!baseUnit) {\r\n baseUnit = this.baseUnit;\r\n }\r\n if ($type.hasValue(maxValue) && value != maxValue) {\r\n value = Math.abs(value);\r\n maxValue = Math.abs(maxValue);\r\n var maxUnit = this.getValueUnit($math.max(value, maxValue), baseUnit);\r\n //let diffUnit = this.getValueUnit(Math.abs(maxValue - value), baseUnit);\r\n //console.log(maxUnit, diffUnit);\r\n return this.durationFormats[baseUnit][maxUnit];\r\n }\r\n else {\r\n var unit = this.getValueUnit(value, baseUnit);\r\n return this.durationFormats[baseUnit][unit];\r\n }\r\n };\r\n /**\r\n * Returns value's closest denominator time unit, e.g 100 seconds is\r\n * `\"minute\"`, while 59 seconds would still be `second`.\r\n *\r\n * @param value Source duration value\r\n * @param baseUnit Base unit\r\n * @return Denominator\r\n */\r\n DurationFormatter.prototype.getValueUnit = function (value, baseUnit) {\r\n // Get base unit\r\n if (!baseUnit) {\r\n baseUnit = this.baseUnit;\r\n }\r\n // Convert to milliseconds\r\n var currentUnit;\r\n var ms = this.getMilliseconds(value, baseUnit);\r\n $object.eachContinue(this._unitValues, function (key, val) {\r\n if (key == baseUnit || currentUnit) {\r\n var num = ms / val;\r\n if (num <= 1) {\r\n if (!currentUnit) {\r\n currentUnit = key;\r\n }\r\n return false;\r\n }\r\n currentUnit = key;\r\n }\r\n return true;\r\n });\r\n return currentUnit;\r\n };\r\n /**\r\n * Converts value to milliseconds according to `baseUnit`.\r\n *\r\n * @param value Source duration value\r\n * @param baseUnit Base unit\r\n * @return Value in milliseconds\r\n */\r\n DurationFormatter.prototype.getMilliseconds = function (value, baseUnit) {\r\n // Get base unit\r\n if (!baseUnit) {\r\n baseUnit = this.baseUnit;\r\n }\r\n return value * this._unitValues[baseUnit];\r\n };\r\n Object.defineProperty(DurationFormatter.prototype, \"durationFormat\", {\r\n /**\r\n * @return Format\r\n */\r\n get: function () {\r\n return this._durationFormat;\r\n },\r\n /**\r\n * If set, this format will be used instead of the one determined dynamically\r\n * based on the basedUnit and range of values.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-duration/} Available fomatting codes\r\n * @param value Format\r\n */\r\n set: function (value) {\r\n if (this._durationFormat != value) {\r\n this._durationFormat = value;\r\n this.invalidateSprite();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DurationFormatter.prototype, \"durationFormats\", {\r\n /**\r\n * @return Formats\r\n */\r\n get: function () {\r\n if (!this._durationFormats) {\r\n this._durationFormats = {\r\n \"millisecond\": {\r\n \"millisecond\": this.language.translate(\"_duration_millisecond\"),\r\n \"second\": this.language.translate(\"_duration_millisecond_second\"),\r\n \"minute\": this.language.translate(\"_duration_millisecond_minute\"),\r\n \"hour\": this.language.translate(\"_duration_millisecond_hour\"),\r\n \"day\": this.language.translate(\"_duration_millisecond_day\"),\r\n \"week\": this.language.translate(\"_duration_millisecond_week\"),\r\n \"month\": this.language.translate(\"_duration_millisecond_month\"),\r\n \"year\": this.language.translate(\"_duration_millisecond_year\")\r\n },\r\n \"second\": {\r\n \"second\": this.language.translate(\"_duration_second\"),\r\n \"minute\": this.language.translate(\"_duration_second_minute\"),\r\n \"hour\": this.language.translate(\"_duration_second_hour\"),\r\n \"day\": this.language.translate(\"_duration_second_day\"),\r\n \"week\": this.language.translate(\"_duration_second_week\"),\r\n \"month\": this.language.translate(\"_duration_second_month\"),\r\n \"year\": this.language.translate(\"_duration_second_year\")\r\n },\r\n \"minute\": {\r\n \"minute\": this.language.translate(\"_duration_minute\"),\r\n \"hour\": this.language.translate(\"_duration_minute_hour\"),\r\n \"day\": this.language.translate(\"_duration_minute_day\"),\r\n \"week\": this.language.translate(\"_duration_minute_week\"),\r\n \"month\": this.language.translate(\"_duration_minute_month\"),\r\n \"year\": this.language.translate(\"_duration_minute_year\")\r\n },\r\n \"hour\": {\r\n \"hour\": this.language.translate(\"_duration_hour\"),\r\n \"day\": this.language.translate(\"_duration_hour_day\"),\r\n \"week\": this.language.translate(\"_duration_hour_week\"),\r\n \"month\": this.language.translate(\"_duration_hour_month\"),\r\n \"year\": this.language.translate(\"_duration_hour_year\")\r\n },\r\n \"day\": {\r\n \"day\": this.language.translate(\"_duration_day\"),\r\n \"week\": this.language.translate(\"_duration_day_week\"),\r\n \"month\": this.language.translate(\"_duration_day_month\"),\r\n \"year\": this.language.translate(\"_duration_day_year\")\r\n },\r\n \"week\": {\r\n \"week\": this.language.translate(\"_duration_week\"),\r\n \"month\": this.language.translate(\"_duration_week_month\"),\r\n \"year\": this.language.translate(\"_duration_week_year\")\r\n },\r\n \"month\": {\r\n \"month\": this.language.translate(\"_duration_month\"),\r\n \"year\": this.language.translate(\"_duration_month_year\")\r\n },\r\n \"year\": {\r\n \"year\": this.language.translate(\"_duration_year\")\r\n }\r\n };\r\n }\r\n return this._durationFormats;\r\n },\r\n /**\r\n * Duration formats for various combination of base units.\r\n *\r\n * @param value Formats\r\n */\r\n set: function (value) {\r\n this._durationFormats = value;\r\n this.invalidateSprite();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return DurationFormatter;\r\n}(BaseObject));\r\nexport { DurationFormatter };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"DurationFormatter\"] = DurationFormatter;\r\n//# sourceMappingURL=DurationFormatter.js.map","/**\r\n * Number formatting-related functionality.\r\n */\r\nimport { __extends } from \"tslib\";\r\nimport { Language } from \"../utils/Language\";\r\nimport { BaseObject } from \"../Base\";\r\nimport { getTextFormatter } from \"../formatters/TextFormatter\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $strings from \"../utils/Strings\";\r\nimport * as $object from \"../utils/Object\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $math from \"../utils/Math\";\r\n/**\r\n * NumberFormatter class. Formats numbers according to specified formats.\r\n *\r\n * @todo Apply translations to suffixes/prefixes\r\n */\r\nvar NumberFormatter = /** @class */ (function (_super) {\r\n __extends(NumberFormatter, _super);\r\n /**\r\n * Constructor\r\n */\r\n function NumberFormatter() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * A base value for negative numbers. Will treat all numbers below this value\r\n * as negative numbers.\r\n */\r\n _this._negativeBase = 0;\r\n /**\r\n * Holds number format.\r\n *\r\n * @default #,###.#####\r\n */\r\n _this._numberFormat = \"#,###.#####\";\r\n /**\r\n * Output format to produce. If the format calls for applying color to the\r\n * formatted value, this setting will determine what markup to use: SVG or\r\n * HTML.\r\n *\r\n * Available options: svg, html.\r\n *\r\n * @default \"svg\"\r\n */\r\n _this._outputFormat = \"svg\";\r\n /**\r\n * Any number smaller than this will be considered \"small\" number, which will\r\n * trigger special formatting if \"a\" format modifier is used.\r\n */\r\n _this._smallNumberThreshold = 1.00;\r\n _this.className = \"NumberFormatter\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n NumberFormatter.prototype.dispose = function () {\r\n _super.prototype.dispose.call(this);\r\n if (this.language) {\r\n this.language.dispose();\r\n }\r\n };\r\n Object.defineProperty(NumberFormatter.prototype, \"language\", {\r\n /**\r\n * @return Language\r\n */\r\n get: function () {\r\n if (!this._language) {\r\n if (this.sprite) {\r\n this._language = this.sprite.language;\r\n }\r\n else {\r\n this._language = new Language;\r\n }\r\n }\r\n return this._language;\r\n },\r\n /**\r\n * A reference to [[Language]] instance.\r\n *\r\n * Formatter will use language to translate various items, like number\r\n * suffixes, etc.\r\n *\r\n * @param value Language\r\n */\r\n set: function (value) {\r\n this._language = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Formats the number according to specific format.\r\n *\r\n * @param value Value to format\r\n * @param format Format to apply\r\n * @return Formatted number\r\n */\r\n NumberFormatter.prototype.format = function (value, format, precision) {\r\n // no format passed in or \"Number\"\r\n if (typeof format === \"undefined\" || ($type.isString(format) && format.toLowerCase() === \"number\")) {\r\n format = this._numberFormat;\r\n }\r\n // Init return value\r\n var formatted;\r\n // Cast to number just in case\r\n // TODO: maybe use better casting\r\n var source = Number(value);\r\n // Is it a built-in format or Intl.NumberFormatOptions\r\n if ($type.isObject(format)) {\r\n try {\r\n if (this.intlLocales) {\r\n return new Intl.NumberFormat(this.intlLocales, format).format(source);\r\n }\r\n else {\r\n return new Intl.NumberFormat(undefined, format).format(source);\r\n }\r\n }\r\n catch (e) {\r\n return \"Invalid\";\r\n }\r\n }\r\n else {\r\n // Clean format\r\n format = $utils.cleanFormat(format);\r\n // Get format info (it will also deal with parser caching)\r\n var info = this.parseFormat(format, this.language);\r\n // format and replace the number\r\n var details = void 0;\r\n if (source > this._negativeBase) {\r\n details = info.positive;\r\n }\r\n else if (source < this._negativeBase) {\r\n details = info.negative;\r\n }\r\n else {\r\n details = info.zero;\r\n }\r\n // Adjust precision\r\n if ($type.hasValue(precision) && !details.mod) {\r\n details = $object.clone(details);\r\n details.decimals.active = source == 0 ? 0 : precision;\r\n }\r\n // Format\r\n formatted = details.template.split($strings.PLACEHOLDER).join(this.applyFormat(source, details));\r\n }\r\n return formatted;\r\n };\r\n /**\r\n * Parses supplied format into structured object which can be used to format\r\n * the number.\r\n *\r\n * @param format Format string, i.e. \"#,###.00\"\r\n * @param language Language\r\n */\r\n NumberFormatter.prototype.parseFormat = function (format, language) {\r\n var _this = this;\r\n // Check cache\r\n var cached = this.getCache(format);\r\n if ($type.hasValue(cached)) {\r\n return cached;\r\n }\r\n // init format parse info holder\r\n var info = {\r\n \"positive\": {\r\n \"thousands\": {\r\n \"active\": -1,\r\n \"passive\": -1,\r\n \"interval\": -1,\r\n \"separator\": language.translateEmpty(\"_thousandSeparator\")\r\n },\r\n \"decimals\": {\r\n \"active\": -1,\r\n \"passive\": -1,\r\n \"separator\": language.translateEmpty(\"_decimalSeparator\")\r\n },\r\n \"template\": \"\",\r\n \"source\": \"\",\r\n \"parsed\": false\r\n },\r\n \"negative\": {\r\n \"thousands\": {\r\n \"active\": -1,\r\n \"passive\": -1,\r\n \"interval\": -1,\r\n \"separator\": language.translateEmpty(\"_thousandSeparator\")\r\n },\r\n \"decimals\": {\r\n \"active\": -1,\r\n \"passive\": -1,\r\n \"separator\": language.translateEmpty(\"_decimalSeparator\")\r\n },\r\n \"template\": \"\",\r\n \"source\": \"\",\r\n \"parsed\": false\r\n },\r\n \"zero\": {\r\n \"thousands\": {\r\n \"active\": -1,\r\n \"passive\": -1,\r\n \"interval\": -1,\r\n \"separator\": language.translateEmpty(\"_thousandSeparator\")\r\n },\r\n \"decimals\": {\r\n \"active\": -1,\r\n \"passive\": -1,\r\n \"separator\": language.translateEmpty(\"_decimalSeparator\")\r\n },\r\n \"template\": \"\",\r\n \"source\": \"\",\r\n \"parsed\": false\r\n }\r\n };\r\n // Escape double vertical bars (that mean display one vertical bar)\r\n format = format.replace(\"||\", $strings.PLACEHOLDER2);\r\n // Split it up and deal with different formats\r\n var parts = format.split(\"|\");\r\n info.positive.source = parts[0];\r\n if (typeof parts[2] === \"undefined\") {\r\n info.zero = info.positive;\r\n }\r\n else {\r\n info.zero.source = parts[2];\r\n }\r\n if (typeof parts[1] === \"undefined\") {\r\n info.negative = info.positive;\r\n }\r\n else {\r\n info.negative.source = parts[1];\r\n }\r\n // Parse each\r\n $object.each(info, function (part, item) {\r\n // Already parsed\r\n if (item.parsed) {\r\n return;\r\n }\r\n // Check cached\r\n if (typeof _this.getCache(item.source) !== \"undefined\") {\r\n info[part] = _this.getCache(item.source);\r\n return;\r\n }\r\n // Begin parsing\r\n var partFormat = item.source;\r\n // Just \"Number\"?\r\n if (partFormat.toLowerCase() === \"number\") {\r\n partFormat = $type.isString(_this._numberFormat) ? _this._numberFormat : \"#,###.#####\";\r\n }\r\n // Let TextFormatter split into chunks\r\n var chunks = getTextFormatter().chunk(partFormat, true);\r\n for (var i = 0; i < chunks.length; i++) {\r\n var chunk = chunks[i];\r\n // replace back double vertical bar\r\n chunk.text = chunk.text.replace($strings.PLACEHOLDER2, \"|\");\r\n if (chunk.type === \"value\") {\r\n // Parse format\r\n // Look for codes\r\n var matches = chunk.text.match(/[#0.,]+[ ]?[abesABES%!]?[abesABES‰!]?/);\r\n if (matches) {\r\n if (matches === null || matches[0] === \"\") {\r\n // no codes here - assume string\r\n // nothing to do here\r\n item.template += chunk.text;\r\n }\r\n else {\r\n // look for the format modifiers at the end\r\n var mods = matches[0].match(/[abesABES%‰!]{2}|[abesABES%‰]{1}$/);\r\n if (mods) {\r\n item.mod = mods[0].toLowerCase();\r\n item.modSpacing = matches[0].match(/[ ]{1}[abesABES%‰!]{1}$/) ? true : false;\r\n }\r\n // break the format up\r\n var a = matches[0].split(\".\");\r\n // Deal with thousands\r\n if (a[0] === \"\") {\r\n // No directives for thousands\r\n // Leave default settings (no formatting)\r\n }\r\n else {\r\n // Counts\r\n item.thousands.active = (a[0].match(/0/g) || []).length;\r\n item.thousands.passive = (a[0].match(/\\#/g) || []).length + item.thousands.active;\r\n // Separator interval\r\n var b = a[0].split(\",\");\r\n if (b.length === 1) {\r\n // No thousands separators\r\n // Do nothing\r\n }\r\n else {\r\n // Use length fo the last chunk as thousands length\r\n item.thousands.interval = $type.getValue(b.pop()).length;\r\n if (item.thousands.interval === 0) {\r\n item.thousands.interval = -1;\r\n }\r\n }\r\n }\r\n // Deal with decimals\r\n if (typeof (a[1]) === \"undefined\") {\r\n // No directives for decimals\r\n // Leave at defaults (no formatting)\r\n }\r\n else {\r\n // Counts\r\n item.decimals.active = (a[1].match(/0/g) || []).length;\r\n item.decimals.passive = (a[1].match(/\\#/g) || []).length + item.decimals.active;\r\n }\r\n // Add special code to template\r\n item.template += chunk.text.split(matches[0]).join($strings.PLACEHOLDER);\r\n }\r\n }\r\n }\r\n else {\r\n // Quoted string - take it as it is\r\n item.template += chunk.text;\r\n }\r\n }\r\n // Apply style formatting\r\n //item.template = getTextFormatter().format(item.template, this.outputFormat);\r\n // Save cache\r\n _this.setCache(item.source, item);\r\n // Mark this as parsed\r\n item.parsed = true;\r\n });\r\n // Save cache (the whole thing)\r\n this.setCache(format, info);\r\n return info;\r\n };\r\n /**\r\n * Applies parsed format to a numeric value.\r\n *\r\n * @param value Value\r\n * @param details Parsed format as returned by parseFormat()\r\n * @return Formatted number\r\n */\r\n NumberFormatter.prototype.applyFormat = function (value, details) {\r\n // Use absolute values\r\n var negative = value < 0;\r\n value = Math.abs(value);\r\n // Recalculate according to modifier\r\n var prefix = \"\", suffix = \"\";\r\n var mods = details.mod ? details.mod.split(\"\") : [];\r\n if (mods.indexOf(\"b\") !== -1) {\r\n var a_1 = this.applyPrefix(value, this.bytePrefixes, mods.indexOf(\"!\") !== -1);\r\n value = a_1[0];\r\n prefix = a_1[1];\r\n suffix = a_1[2];\r\n if (details.modSpacing) {\r\n suffix = \" \" + suffix;\r\n }\r\n }\r\n else if (mods.indexOf(\"a\") !== -1) {\r\n var a_2 = this.applyPrefix(value, value < this.smallNumberThreshold ? this.smallNumberPrefixes : this.bigNumberPrefixes, mods.indexOf(\"!\") !== -1);\r\n value = a_2[0];\r\n prefix = a_2[1];\r\n suffix = a_2[2];\r\n if (details.modSpacing) {\r\n suffix = \" \" + suffix;\r\n }\r\n }\r\n else if (mods.indexOf(\"%\") !== -1) {\r\n var ol = $math.min(value.toString().length + 2, 21);\r\n value *= 100;\r\n value = parseFloat(value.toPrecision(ol));\r\n suffix = \"%\";\r\n }\r\n else if (mods.indexOf(\"‰\") !== -1) {\r\n var ol = $math.min(value.toString().length + 3, 21);\r\n value *= 1000;\r\n value = parseFloat(value.toPrecision(ol));\r\n suffix = \"‰\";\r\n }\r\n // Round to passive\r\n if (mods.indexOf(\"e\") !== -1) {\r\n // convert the value to exponential\r\n var exp = void 0;\r\n if (details.decimals.passive >= 0) {\r\n exp = value.toExponential(details.decimals.passive).split(\"e\");\r\n }\r\n else {\r\n exp = value.toExponential().split(\"e\");\r\n }\r\n value = Number(exp[0]);\r\n suffix = \"e\" + exp[1];\r\n if (details.modSpacing) {\r\n suffix = \" \" + suffix;\r\n }\r\n }\r\n else if (details.decimals.passive === 0) {\r\n value = Math.round(value);\r\n }\r\n else if (details.decimals.passive > 0) {\r\n var d = Math.pow(10, details.decimals.passive);\r\n value = Math.round(value * d) / d;\r\n }\r\n // Init return value\r\n var res = \"\";\r\n // Calc integer and decimal parts\r\n var a = $utils.numberToString(value).split(\".\");\r\n // Format integers\r\n var ints = a[0];\r\n // Pad integers to active length\r\n if (ints.length < details.thousands.active) {\r\n ints = Array(details.thousands.active - ints.length + 1).join(\"0\") + ints;\r\n }\r\n // Insert thousands separators\r\n if (details.thousands.interval > 0) {\r\n var ip = [];\r\n var intsr = ints.split(\"\").reverse().join(\"\");\r\n for (var i = 0, len = ints.length; i <= len; i += details.thousands.interval) {\r\n var c = intsr.substr(i, details.thousands.interval).split(\"\").reverse().join(\"\");\r\n if (c !== \"\") {\r\n ip.unshift(c);\r\n }\r\n }\r\n ints = ip.join(details.thousands.separator);\r\n }\r\n // Add integers\r\n res += ints;\r\n // Add decimals\r\n if (a.length === 1) {\r\n a.push(\"\");\r\n }\r\n var decs = a[1];\r\n // Fill zeros?\r\n if (decs.length < details.decimals.active) {\r\n decs += Array(details.decimals.active - decs.length + 1).join(\"0\");\r\n }\r\n if (decs !== \"\") {\r\n res += details.decimals.separator + decs;\r\n }\r\n // Can't have empty return value\r\n if (res === \"\") {\r\n res = \"0\";\r\n }\r\n // Add minus sign back\r\n if (value !== 0 && negative && (mods.indexOf(\"s\") === -1)) {\r\n res = \"-\" + res;\r\n }\r\n // Add suffixes/prefixes\r\n if (prefix) {\r\n res = prefix + res;\r\n }\r\n if (suffix) {\r\n res += suffix;\r\n }\r\n return res;\r\n };\r\n /**\r\n * Chooses appropriate prefix and suffix based on the passed in rules.\r\n *\r\n * @param value Value\r\n * @param prefixes Prefix array\r\n * @param force Force application of a first prefix (@sice 4.5.4)\r\n * @return Result\r\n */\r\n NumberFormatter.prototype.applyPrefix = function (value, prefixes, force) {\r\n if (force === void 0) { force = false; }\r\n var newvalue = value;\r\n var prefix = \"\";\r\n var suffix = \"\";\r\n var applied = false;\r\n var k = 1;\r\n for (var i = 0, len = prefixes.length; i < len; i++) {\r\n if (prefixes[i].number <= value) {\r\n if (prefixes[i].number === 0) {\r\n newvalue = 0;\r\n }\r\n else {\r\n newvalue = value / prefixes[i].number;\r\n k = prefixes[i].number;\r\n }\r\n prefix = prefixes[i].prefix;\r\n suffix = prefixes[i].suffix;\r\n applied = true;\r\n }\r\n }\r\n if (!applied && force && prefixes.length && value != 0) {\r\n // Prefix was not applied. Use the first prefix.\r\n newvalue = value / prefixes[0].number;\r\n prefix = prefixes[0].prefix;\r\n suffix = prefixes[0].suffix;\r\n applied = true;\r\n }\r\n if (applied) {\r\n newvalue = parseFloat(newvalue.toPrecision($math.min(k.toString().length + Math.floor(newvalue).toString().replace(/[^0-9]*/g, \"\").length, 21)));\r\n }\r\n return [newvalue, prefix, suffix];\r\n };\r\n /**\r\n * Invalidates the parent [[Sprite]] object.\r\n */\r\n NumberFormatter.prototype.invalidateSprite = function () {\r\n if (this.sprite) {\r\n this.sprite.invalidate();\r\n }\r\n };\r\n Object.defineProperty(NumberFormatter.prototype, \"numberFormat\", {\r\n /**\r\n * @return A format to use for number formatting\r\n */\r\n get: function () {\r\n return this._numberFormat;\r\n },\r\n /**\r\n * Number format.\r\n *\r\n * @default \"#,###.#####\"\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-numbers/} Tutorial on number formatting\r\n * @param format A format to use for number formatting\r\n */\r\n set: function (format) {\r\n this._numberFormat = format;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NumberFormatter.prototype, \"intlLocales\", {\r\n /**\r\n * @return Date format\r\n */\r\n get: function () {\r\n return this._intlLocales;\r\n },\r\n /**\r\n * Locales if you are using date formats in `Intl.NumberFormatOptions` syntax.\r\n *\r\n * @see (@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat) about using Intl for number formatting\r\n * @param value Locales\r\n */\r\n set: function (value) {\r\n this._intlLocales = value;\r\n this.invalidateSprite();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NumberFormatter.prototype, \"negativeBase\", {\r\n /**\r\n * @return A format to use for number formatting\r\n */\r\n get: function () {\r\n return this._negativeBase;\r\n },\r\n /**\r\n * Negative base for negative numbers.\r\n *\r\n * @default 0\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-numbers/} Tutorial on number formatting\r\n * @param format A format to use for number formatting\r\n */\r\n set: function (value) {\r\n this._negativeBase = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NumberFormatter.prototype, \"bigNumberPrefixes\", {\r\n /**\r\n * @return Prefixes for big numbers\r\n */\r\n get: function () {\r\n if (!$type.hasValue(this._bigNumberPrefixes)) {\r\n this._bigNumberPrefixes = [\r\n { \"number\": 1e+3, \"suffix\": this.language.translate(\"_big_number_suffix_3\") },\r\n { \"number\": 1e+6, \"suffix\": this.language.translate(\"_big_number_suffix_6\") },\r\n { \"number\": 1e+9, \"suffix\": this.language.translate(\"_big_number_suffix_9\") },\r\n { \"number\": 1e+12, \"suffix\": this.language.translate(\"_big_number_suffix_12\") },\r\n { \"number\": 1e+15, \"suffix\": this.language.translate(\"_big_number_suffix_15\") },\r\n { \"number\": 1e+18, \"suffix\": this.language.translate(\"_big_number_suffix_18\") },\r\n { \"number\": 1e+21, \"suffix\": this.language.translate(\"_big_number_suffix_21\") },\r\n { \"number\": 1e+24, \"suffix\": this.language.translate(\"_big_number_suffix_24\") }\r\n ];\r\n }\r\n return this._bigNumberPrefixes;\r\n },\r\n /**\r\n * Prefixes for big numbers.\r\n *\r\n * It's an array of objects of number/prefix pairs.\r\n *\r\n * ```JSON\r\n * [\r\n * { \"number\": 1e+3, \"suffix\": \"K\" },\r\n * { \"number\": 1e+6, \"suffix\": \"M\" },\r\n * { \"number\": 1e+9, \"suffix\": \"G\" },\r\n * { \"number\": 1e+12, \"suffix\": \"T\" },\r\n * { \"number\": 1e+15, \"suffix\": \"P\" },\r\n * { \"number\": 1e+18, \"suffix\": \"E\" },\r\n * { \"number\": 1e+21, \"suffix\": \"Z\" },\r\n * { \"number\": 1e+24, \"suffix\": \"Y\" }\r\n * ]\r\n * ```\r\n *\r\n * If the number is bigger than the `number` ir will be converted to the\r\n * appropriate bigger number with prefix.\r\n *\r\n * E.g. as per above `1500` will be converted to `1.5K`.\r\n *\r\n * Please note that for this transformation to be enabled, you need to\r\n * enable it specific modifier in your format setting.\r\n *\r\n * The modifier for big/small number modification is \"a\":\r\n *\r\n * ```Text\r\n * {myfield.formatNumber(\"#,###.00a\")}\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-numbers/} Tutorial on number formatting\r\n * @param prefixes Prefixes for big numbers\r\n */\r\n set: function (prefixes) {\r\n this._bigNumberPrefixes = prefixes;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NumberFormatter.prototype, \"smallNumberPrefixes\", {\r\n /**\r\n * @return Prefixes for small numbers\r\n */\r\n get: function () {\r\n if (!$type.hasValue(this._smallNumberPrefixes)) {\r\n this._smallNumberPrefixes = [\r\n { \"number\": 1e-24, \"suffix\": this.language.translate(\"_small_number_suffix_24\") },\r\n { \"number\": 1e-21, \"suffix\": this.language.translate(\"_small_number_suffix_21\") },\r\n { \"number\": 1e-18, \"suffix\": this.language.translate(\"_small_number_suffix_18\") },\r\n { \"number\": 1e-15, \"suffix\": this.language.translate(\"_small_number_suffix_15\") },\r\n { \"number\": 1e-12, \"suffix\": this.language.translate(\"_small_number_suffix_12\") },\r\n { \"number\": 1e-9, \"suffix\": this.language.translate(\"_small_number_suffix_9\") },\r\n { \"number\": 1e-6, \"suffix\": this.language.translate(\"_small_number_suffix_6\") },\r\n { \"number\": 1e-3, \"suffix\": this.language.translate(\"_small_number_suffix_3\") }\r\n ];\r\n }\r\n return this._smallNumberPrefixes;\r\n },\r\n /**\r\n * Prefixes for big numbers.\r\n *\r\n * It's an array of objects of number/prefix pairs.\r\n *\r\n * ```JSON\r\n * [\r\n * { \"number\": 1e-24, \"suffix\": \"y\" },\r\n * { \"number\": 1e-21, \"suffix\": \"z\" },\r\n * { \"number\": 1e-18, \"suffix\": \"a\" },\r\n * { \"number\": 1e-15, \"suffix\": \"f\" },\r\n * { \"number\": 1e-12, \"suffix\": \"p\" },\r\n * { \"number\": 1e-9, \"suffix\": \"n\" },\r\n * { \"number\": 1e-6, \"suffix\": \"μ\" },\r\n * { \"number\": 1e-3, \"suffix\": \"m\" }\r\n * ]\r\n * ```\r\n *\r\n * If the number is smaller than the `number` ir will be converted to the\r\n * appropriate smaller number with prefix.\r\n *\r\n * E.g. as per above `0.0015` will be converted to `1.5m`.\r\n *\r\n * Please note that for this transformation to be enabled, you need to\r\n * enable it specific modifier in your format setting.\r\n *\r\n * The modifier for big/small number modification is \"a\":\r\n *\r\n * ```Text\r\n * {myfield.formatNumber(\"#,###.00a\")}\r\n * ```\r\n *\r\n * IMPORTANT: The order of the suffixes is important. The list must start\r\n * from the smallest number and work towards bigger ones.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-numbers/} Tutorial on number formatting\r\n * @param prefixes Prefixes for small numbers\r\n */\r\n set: function (prefixes) {\r\n this._smallNumberPrefixes = prefixes;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NumberFormatter.prototype, \"smallNumberThreshold\", {\r\n /**\r\n * @return Small number threshold\r\n */\r\n get: function () {\r\n return this._smallNumberThreshold;\r\n },\r\n /**\r\n * Any number smaller than this will be considered \"small\" number, which will\r\n * trigger special formatting if \"a\" format modifier is used.\r\n *\r\n * @since 4.6.8\r\n * @param value Small number threshold\r\n */\r\n set: function (value) {\r\n this._smallNumberThreshold = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NumberFormatter.prototype, \"bytePrefixes\", {\r\n /**\r\n * @return Prefixes for byte-size formatting\r\n */\r\n get: function () {\r\n if (!$type.hasValue(this._bytePrefixes)) {\r\n this._bytePrefixes = [\r\n { \"number\": 1, suffix: this.language.translate(\"_byte_suffix_B\") },\r\n { \"number\": 1024, suffix: this.language.translate(\"_byte_suffix_KB\") },\r\n { \"number\": 1048576, suffix: this.language.translate(\"_byte_suffix_MB\") },\r\n { \"number\": 1073741824, suffix: this.language.translate(\"_byte_suffix_GB\") },\r\n { \"number\": 1099511627776, suffix: this.language.translate(\"_byte_suffix_TB\") },\r\n { \"number\": 1125899906842624, suffix: this.language.translate(\"_byte_suffix_PB\") }\r\n ];\r\n }\r\n return this._bytePrefixes;\r\n },\r\n /**\r\n * Basically the same as `bigNumberPrefixes`, except base for calculation\r\n * is not thousand but byte (1024).\r\n *\r\n * The modifier is \"b\".\r\n *\r\n * ```Text\r\n * {myfield.formatNumber(\"#,###.00b\")}\r\n * ```\r\n *\r\n * The above `2048` will change to `2K`.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-numbers/} Tutorial on number formatting\r\n * @param prefixes Prefixes for byte-size formatting\r\n */\r\n set: function (prefixes) {\r\n this._bytePrefixes = prefixes;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NumberFormatter.prototype, \"outputFormat\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Output format\r\n */\r\n get: function () {\r\n return this._outputFormat;\r\n },\r\n /**\r\n * Ooutput format: \"svg\" or \"html\".\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Output format\r\n */\r\n set: function (outputFormat) {\r\n this._outputFormat = outputFormat.toLowerCase();\r\n this.invalidateSprite();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Replaces brackets with temporary placeholders.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Input text\r\n * @return Escaped text\r\n */\r\n NumberFormatter.prototype.escape = function (text) {\r\n return text.replace(\"||\", $strings.PLACEHOLDER2);\r\n };\r\n /**\r\n * Replaces placeholders back to brackets.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Escaped text\r\n * @return Unescaped text\r\n */\r\n NumberFormatter.prototype.unescape = function (text) {\r\n return text.replace($strings.PLACEHOLDER2, \"|\");\r\n };\r\n return NumberFormatter;\r\n}(BaseObject));\r\nexport { NumberFormatter };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"NumberFormatter\"] = NumberFormatter;\r\n//# sourceMappingURL=NumberFormatter.js.map","/**\r\n * Handles formatting of pseudo-markup in text.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../Base\";\r\nimport { AMElement } from \"../rendering/AMElement\";\r\nimport { Adapter } from \"../utils/Adapter\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $strings from \"../utils/Strings\";\r\nimport * as $type from \"../utils/Type\";\r\n/**\r\n * Handles formatting of pseudo-markdown in text.\r\n *\r\n * @todo Encode < > in output\r\n * @todo Add more adapters\r\n * @important\r\n */\r\nvar TextFormatter = /** @class */ (function (_super) {\r\n __extends(TextFormatter, _super);\r\n /**\r\n * Constructor\r\n */\r\n function TextFormatter() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Adapter.\r\n */\r\n _this.adapter = new Adapter(_this);\r\n _this.className = \"TextFormatter\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n TextFormatter.prototype.debug = function () { };\r\n /**\r\n * Formats the text according to specifications passed in.\r\n *\r\n * @param text Text to format\r\n * @param output Output format (svg, html)\r\n * @return Formatted text\r\n */\r\n TextFormatter.prototype.format = function (text, output) {\r\n // Apply default\r\n if (!$type.hasValue(output)) {\r\n output = \"svg\";\r\n }\r\n // Init return value\r\n var formatted = \"\";\r\n // Replace double (escaped) square spaces with remporary codes\r\n text = this.escape(text);\r\n // Divvy up the string by style tags\r\n var styles = text.match(/\\[([^\\]]*?)\\]/gm);\r\n if (!styles) {\r\n // Nothing to do here - no formatting elements\r\n return this.wrap(text, \"\", output);\r\n }\r\n // Get pure text - no style tags\r\n var texts = text.split(/\\[[^\\[\\]]*\\]/);\r\n // Go through each of the texts and wrap it in style tags\r\n for (var i = 0, len = texts.length; i < len; i++) {\r\n // Get text bit\r\n var t = texts[i];\r\n // Check if string is empty\r\n if (t === \"\") {\r\n continue;\r\n }\r\n // Run through an adapter\r\n t = this.adapter.apply(\"chunk\", t);\r\n // Get related style\r\n var s = \"\";\r\n if (i > 0) {\r\n s = styles[i - 1].replace('[', '').replace(']', '');\r\n }\r\n // Wrap text in tag\r\n formatted += this.wrap(t, s, output);\r\n }\r\n // Replace placeholders back\r\n formatted = this.unescape(formatted);\r\n // Return result\r\n return this.cleanUp(formatted);\r\n };\r\n /**\r\n * Replaces brackets with temporary placeholders.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Input text\r\n * @return Escaped text\r\n */\r\n TextFormatter.prototype.escape = function (text) {\r\n return text.\r\n replace(/\\[\\[/g, registry.getPlaceholder(\"1\")).\r\n replace(/([^\\/]{1})\\]\\]/g, \"$1\" + registry.getPlaceholder(\"2\")).\r\n replace(/\\]\\]/g, registry.getPlaceholder(\"2\")).\r\n replace(/\\{\\{/g, registry.getPlaceholder(\"3\")).\r\n replace(/\\}\\}/g, registry.getPlaceholder(\"4\")).\r\n replace(/\\'\\'/g, registry.getPlaceholder(\"5\"));\r\n };\r\n /**\r\n * Replaces placeholders back to brackets.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Escaped text\r\n * @return Unescaped text\r\n */\r\n TextFormatter.prototype.unescape = function (text) {\r\n return text.\r\n replace(new RegExp(registry.getPlaceholder(\"1\"), \"g\"), \"[[\").\r\n replace(new RegExp(registry.getPlaceholder(\"2\"), \"g\"), \"]]\").\r\n replace(new RegExp(registry.getPlaceholder(\"3\"), \"g\"), \"{{\").\r\n replace(new RegExp(registry.getPlaceholder(\"4\"), \"g\"), \"}}\").\r\n replace(new RegExp(registry.getPlaceholder(\"5\"), \"g\"), \"'\");\r\n };\r\n /**\r\n * Cleans up the text text for leftover double square brackets.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Input text\r\n * @return Cleaned up text\r\n */\r\n TextFormatter.prototype.cleanUp = function (text) {\r\n return text.\r\n replace(/\\[\\[/g, \"[\").\r\n replace(/\\]\\]/g, \"]\").\r\n replace(/\\{\\{/g, \"{\").\r\n replace(/\\}\\}/g, \"}\").\r\n replace(/\\'\\'/g, \"'\");\r\n };\r\n /**\r\n * Wraps text into corresponding tags.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Text to wrap\r\n * @param style Styles\r\n * @param output Format to output in (svg, html)\r\n * @return Formatted string\r\n */\r\n TextFormatter.prototype.wrap = function (text, style, output) {\r\n if (style === \"\" || style === \"/\") {\r\n //return text;\r\n style = \"\";\r\n }\r\n switch (output) {\r\n case \"html\":\r\n return this.wrapHtml(text, this.translateStyleShortcuts(style));\r\n default:\r\n return this.wrapSvg(text, this.translateStyleShortcuts(style));\r\n }\r\n };\r\n /**\r\n * Wraps text in styled SVG tag.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Text to wrap\r\n * @param style Style property\r\n * @return Formatted tag\r\n */\r\n TextFormatter.prototype.wrapSvg = function (text, style) {\r\n if (style === \"\") {\r\n return \"<tspan>\" + text + \"</tspan>\";\r\n }\r\n else {\r\n return \"<tspan style='\" + style + \"'>\" + text + \"</tspan>\";\r\n }\r\n };\r\n /**\r\n * Returns an SVG `<tspan>` element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Text\r\n * @param style Style\r\n * @return Element\r\n */\r\n TextFormatter.prototype.getSvgElement = function (text, style) {\r\n var element = new AMElement(\"tspan\");\r\n element.textContent = text;\r\n if (style) {\r\n element.node.setAttribute(\"style\", style);\r\n }\r\n return element;\r\n };\r\n /**\r\n * Wraps text in HTML <span> tag.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Text to wrap\r\n * @param style Style property\r\n * @return Formatted tag\r\n * @todo Translate SVG styles into HTML ones\r\n */\r\n TextFormatter.prototype.wrapHtml = function (text, style) {\r\n if (style === \"\") {\r\n return \"<span>\" + text + \"</span>\";\r\n }\r\n else {\r\n return \"<span style='\" + this.styleSvgToHtml(style) + \"'>\" + text + \"</span>\";\r\n }\r\n };\r\n /**\r\n * Returns an HTML `<span>` element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Text/HTML\r\n * @param style Style definition\r\n * @return HTML element\r\n */\r\n TextFormatter.prototype.getHtmlElement = function (text, style) {\r\n var element = document.createElement(\"span\");\r\n element.innerHTML = text;\r\n if (style) {\r\n element.setAttribute(\"style\", style);\r\n }\r\n return element;\r\n };\r\n /**\r\n * Trabslates SVG CSS into HTML CSS.\r\n *\r\n * @ignore Exclude from docs\r\n * @param style SVG CSS\r\n * @return HTML CSS\r\n * @todo Implement actual translation\r\n */\r\n TextFormatter.prototype.styleSvgToHtml = function (style) {\r\n style = style.replace(/fill:/, \"color:\");\r\n return style;\r\n };\r\n /**\r\n * Translates style shortcuts into full styles, i.e.:\r\n * \"bold\" => \"font-weight: bold\"\r\n * \"#f00\" => \"fill: #f00\"\r\n *\r\n * @ignore Exclude from docs\r\n * @param style Untranslated style\r\n * @return Translated style\r\n * @todo Implement actual translation\r\n */\r\n TextFormatter.prototype.translateStyleShortcuts = function (style) {\r\n if (style == \"\" || style == \"[ ]\") {\r\n return \"\";\r\n }\r\n var cached = registry.getCache(\"translateStyleShortcuts_\" + style);\r\n if (cached) {\r\n return cached;\r\n }\r\n // Pre-process quoted text\r\n var q = style.match(/('[^']*')|(\"[^\"]*\")/gi);\r\n if (q) {\r\n for (var i = 0; i < q.length; i++) {\r\n style = style.replace(q[i], q[i].replace(/['\"]*/g, \"\").replace(/[ ]+/g, \"+\"));\r\n }\r\n }\r\n // Get style parts\r\n var b = style.match(/([\\w\\-]*:[\\s]?[^;\\s\\]]*)|(\\#[\\w]{1,6})|([\\w]+)|(\\/)/gi);\r\n // Empty?\r\n if (!b) {\r\n return style;\r\n }\r\n // Check each part\r\n for (var i = 0; i < b.length; i++) {\r\n if (b[i].match(/^bold$/i)) {\r\n // Bold\r\n b[i] = \"font-weight:\" + b[i];\r\n }\r\n else if (b[i] == \"/\") {\r\n // Just closing tag\r\n // Do nothing\r\n b[i] = \"\";\r\n }\r\n else if (!b[i].match(/:/)) {\r\n // Color\r\n b[i] = \"fill:\" + b[i];\r\n }\r\n else {\r\n b[i] = b[i].replace(/\\+/g, \" \");\r\n }\r\n }\r\n var res = b.join(';');\r\n registry.setCache(\"translateStyleShortcuts_\" + style, res);\r\n return res;\r\n };\r\n /**\r\n * Splits string into chunks. (style blocks, quoted blocks, regular blocks)\r\n *\r\n * If the second parameter `quotedBlocks` is set to `true` this method will\r\n * also single out text blocks enclosed within single quotes that no\r\n * formatting should be applied to, and they should be displayed as is.\r\n *\r\n * Default for the above is `false`, so that you can use single quote in text\r\n * without escaping it.\r\n *\r\n * If enabled, single quotes can be escaped by doubling it - adding two\r\n * single quotes, which will be replaced by a one single quote in the final\r\n * output.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Text to chunk\r\n * @param quotedBlocks Use quoted blocks\r\n * @param noFormatting Formatting blocks will be treated as regular text\r\n * @return Array of string chunks\r\n */\r\n TextFormatter.prototype.chunk = function (text, quotedBlocks, noFormatting) {\r\n if (quotedBlocks === void 0) { quotedBlocks = false; }\r\n if (noFormatting === void 0) { noFormatting = false; }\r\n // Init result\r\n var res = [];\r\n // Replace double (escaped) square spaces and quotes with temporary codes\r\n text = this.escape(text);\r\n // Deal with style blocks\r\n var chunks = quotedBlocks ? text.split(\"'\") : [text];\r\n for (var i = 0; i < chunks.length; i++) {\r\n var chunk = chunks[i];\r\n // Empty?\r\n if (chunk === \"\") {\r\n continue;\r\n }\r\n if ((i % 2) === 0) {\r\n // Text outside quotes\r\n // Parse for style blocks which are \"text\" chunks, the rest chunks are\r\n // \"value\"\r\n chunk = chunk.replace(/\\]\\[/g, \"]\" + $strings.PLACEHOLDER + \"[\");\r\n chunk = chunk.replace(/\\[\\]/g, \"[ ]\");\r\n var chunks2 = chunk.split(/[\\[\\]]+/);\r\n for (var i2 = 0; i2 < chunks2.length; i2++) {\r\n var chunk2 = this.cleanUp(this.unescape(chunks2[i2]));\r\n // Placeholder?\r\n if (chunk2 === $strings.PLACEHOLDER) {\r\n continue;\r\n }\r\n // Empty?\r\n if (chunk2 === \"\") {\r\n continue;\r\n }\r\n // Block or value\r\n if ((i2 % 2) === 0) {\r\n res.push({\r\n \"type\": \"value\",\r\n \"text\": this.adapter.apply(\"chunk\", chunk2)\r\n });\r\n }\r\n else {\r\n res.push({\r\n \"type\": noFormatting ? \"value\" : \"format\",\r\n \"text\": \"[\" + chunk2 + \"]\"\r\n });\r\n }\r\n }\r\n }\r\n else {\r\n // A text within doublequotes\r\n // All chunks are \"text\"\r\n var chunks2 = chunk.split(/[\\[\\]]+/);\r\n for (var i2 = 0; i2 < chunks2.length; i2++) {\r\n var chunk2 = this.cleanUp(this.unescape(chunks2[i2]));\r\n // Empty?\r\n if (chunk2 === \"\") {\r\n continue;\r\n }\r\n // Block or text\r\n if ((i2 % 2) === 0) {\r\n res.push({\r\n \"type\": \"text\",\r\n \"text\": chunk2\r\n });\r\n }\r\n else if (this.isImage(chunk2)) {\r\n res.push({\r\n \"type\": \"image\",\r\n \"text\": \"[\" + chunk2 + \"]\"\r\n });\r\n }\r\n else {\r\n res.push({\r\n \"type\": \"format\",\r\n \"text\": \"[\" + chunk2 + \"]\"\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return res;\r\n };\r\n /**\r\n * Checks if supplied format contains image information and should be\r\n * formatted as such.\r\n * I.e.: `[img: myImage.png]`\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Format\r\n * @return `true` if it is an image\r\n */\r\n TextFormatter.prototype.isImage = function (text) {\r\n return text.match(/img[ ]?:/) ? true : false;\r\n };\r\n return TextFormatter;\r\n}(BaseObject));\r\nexport { TextFormatter };\r\nvar formatter;\r\n/**\r\n * Returns the global instance of [[TextFormatter]].\r\n *\r\n * All classes and instances should reuse this universal text formatter,\r\n * rather than create their own instance of it.\r\n */\r\nexport function getTextFormatter() {\r\n if (formatter == null) {\r\n formatter = new TextFormatter();\r\n }\r\n return formatter;\r\n}\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"TextFormatter\"] = TextFormatter;\r\n//# sourceMappingURL=TextFormatter.js.map","/**\r\n * Functionality related to inertia\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../Base\";\r\nimport { getInteraction } from \"./Interaction\";\r\nimport { AnimationDisposer } from \"../utils/Animation\";\r\nimport * as $type from \"../utils/Type\";\r\n/**\r\n * A point of inertia is to simulate gradually drecreasing motion even after\r\n * actual interaction by user, that caused it, has already ended.\r\n *\r\n * [[Inertia]] object will continue triggering the same [[Sprite]] handlers\r\n * as if the interaction was still happening, gradually reducing\r\n * shift/angle/scale values until full stop.\r\n *\r\n * Basically, from the target element's point of view, while inertia is\r\n * playing, it is still being interacted with by user, albeit with a\r\n * decreasing speed.\r\n */\r\nvar Inertia = /** @class */ (function (_super) {\r\n __extends(Inertia, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Inertia(interaction, type, point, startPoint) {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * List of animations currently playing.\r\n */\r\n _this.animations = [];\r\n _this.className = \"Inertia\";\r\n _this.interaction = interaction;\r\n _this.type = type;\r\n _this.point = point;\r\n _this.startPoint = startPoint;\r\n // Make animations disposable\r\n _this._disposers.push(new AnimationDisposer(_this.animations));\r\n return _this;\r\n }\r\n Object.defineProperty(Inertia.prototype, \"x\", {\r\n /**\r\n * Returns current X coordinate.\r\n *\r\n * @return X\r\n */\r\n get: function () {\r\n return this.point.x;\r\n },\r\n /**\r\n * Sets current X coordinate.\r\n *\r\n * Will trigger \"drag\" event for the target element.\r\n *\r\n * @param value X\r\n */\r\n set: function (value) {\r\n if ($type.isNumber(value)) {\r\n this.point.x = value;\r\n this.handleMove();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Inertia.prototype, \"y\", {\r\n /**\r\n * Returns current Y coordinate.\r\n *\r\n * @return Y\r\n */\r\n get: function () {\r\n return this.point.y;\r\n },\r\n /**\r\n * Sets current Y coordinate.\r\n *\r\n * Will trigger \"drag\" event for the target element.\r\n *\r\n * @param value Y\r\n */\r\n set: function (value) {\r\n if ($type.isNumber(value)) {\r\n this.point.y = value;\r\n this.handleMove();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Simulates dragging of element.\r\n */\r\n Inertia.prototype.handleMove = function () {\r\n // Prepare {InteractionEvent} object\r\n if (this.interaction.events.isEnabled(\"drag\")) {\r\n var imev = {\r\n type: \"drag\",\r\n target: this.interaction,\r\n shift: {\r\n x: this.x - this.startPoint.x,\r\n y: this.y - this.startPoint.y\r\n },\r\n startPoint: this.startPoint,\r\n point: {\r\n x: this.x,\r\n y: this.y\r\n },\r\n touch: false\r\n };\r\n // Call handler\r\n this.interaction.events.dispatchImmediately(\"drag\", imev);\r\n }\r\n };\r\n /**\r\n * Finishes up the inertia animation. (removes reference to this animation\r\n * object)\r\n */\r\n Inertia.prototype.done = function () {\r\n // Remove inertia animation from the object\r\n this.interaction.inertias.removeKey(this.type);\r\n // Move ended\r\n if (this.type === \"move\") {\r\n getInteraction().processDragStop(this.interaction);\r\n }\r\n // Destroy\r\n this.dispose();\r\n };\r\n return Inertia;\r\n}(BaseObject));\r\nexport { Inertia };\r\n//# sourceMappingURL=Inertia.js.map","/**\r\n * Interaction manages all aspects of user interaction - mouse move,\r\n * click, hover, drag events, touch gestures.\r\n *\r\n * [[InteractionObject]] elements that want to use certain events, must attach event\r\n * listeners to Interaction instance.\r\n *\r\n * Interaction itself will not modify [[InteractionObject]] elements, it will be up to\r\n * those elements to handle interaction information received via event triggers.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObjectEvents } from \"../Base\";\r\nimport { List } from \"../utils/List\";\r\nimport { Animation } from \"../utils/Animation\";\r\nimport { MultiDisposer } from \"../utils/Disposer\";\r\nimport { InteractionObject } from \"./InteractionObject\";\r\nimport { InteractionKeyboardObject } from \"./InteractionKeyboardObject\";\r\nimport { Dictionary } from \"../utils/Dictionary\";\r\nimport { Inertia } from \"./Inertia\";\r\nimport { addEventListener } from \"../utils/DOM\";\r\nimport { keyboard } from \"../utils/Keyboard\";\r\nimport { system } from \"./../System\";\r\nimport { options } from \"./../Options\";\r\nimport * as $ease from \"../utils/Ease\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $array from \"../utils/Array\";\r\nimport * as $dom from \"../utils/DOM\";\r\nimport * as $iter from \"../utils/Iterator\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $time from \"../utils/Time\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n* Interaction manages all aspects of user interaction - mouse move,\r\n* click, hover, drag events, touch gestures.\r\n*\r\n* [[InteractionObject]] elements that want to use certain events, must attach event\r\n* listeners to Interaction instance.\r\n*\r\n* Interaction itself will not modify [[InteractionObject]] elements, it will be up to\r\n* those elements to handle interaction information received via event triggers.\r\n*\r\n* @see {@link IInteractionEvents} for a list of available events\r\n*/\r\nvar Interaction = /** @class */ (function (_super) {\r\n __extends(Interaction, _super);\r\n /**\r\n * Constructor. Sets up universal document-wide move events to handle stuff\r\n * outside particular chart container.\r\n */\r\n function Interaction() {\r\n var _this = \r\n // Call super\r\n _super.call(this) || this;\r\n /**\r\n * An indicator of global events were already initialized.\r\n */\r\n _this._globalEventsAdded = false;\r\n /**\r\n * Holds which mouse event listeners to use.\r\n */\r\n _this._pointerEvents = {\r\n \"pointerdown\": \"mousedown\",\r\n \"pointerup\": \"mouseup\",\r\n \"pointermove\": \"mousemove\",\r\n \"pointercancel\": \"mouseup\",\r\n \"pointerover\": \"mouseover\",\r\n \"pointerout\": \"mouseout\",\r\n \"wheel\": \"wheel\"\r\n };\r\n /**\r\n * Indicates if Interaction should use only \"pointer\" type events, like\r\n * \"pointermove\", available in all modern browsers, ignoring \"legacy\"\r\n * events, like \"touchmove\".\r\n */\r\n _this._usePointerEventsOnly = false;\r\n /**\r\n * Use only touch events (for touch only devices such as tablets and phones)\r\n */\r\n _this._useTouchEventsOnly = false;\r\n /**\r\n * Add special hover events. Normally, touch device tap will also simulate\r\n * hover event. On some devices (ahem iOS) we want to prevent that so that\r\n * over/out events are not duplicated.\r\n */\r\n _this._addHoverEvents = true;\r\n /**\r\n * Indicates if passive mode options is supported by this browser.\r\n */\r\n _this._passiveSupported = false;\r\n /**\r\n * Holds list of delayed events\r\n */\r\n _this._delayedEvents = { out: [] };\r\n /**\r\n * List of objects that current have a pointer hovered over them.\r\n */\r\n _this.overObjects = new List();\r\n /**\r\n * List of objects that currently has a pressed pointer.\r\n */\r\n _this.downObjects = new List();\r\n /**\r\n * List of objects that need mouse position to be reported to them.\r\n */\r\n _this.trackedObjects = new List();\r\n /**\r\n * List of objects that are currently being dragged.\r\n */\r\n _this.transformedObjects = new List();\r\n /**\r\n * Holds all known pointers.\r\n */\r\n _this.pointers = new Dictionary();\r\n /**\r\n * Inertia options that need to be applied to after element drag, if it's\r\n * `inert = true`.\r\n *\r\n * This is just a default, which can and probably will be overridden by\r\n * actual elements.\r\n */\r\n _this.inertiaOptions = new Dictionary();\r\n /**\r\n * Default options for click events. These can be overridden in\r\n * [[InteractionObject]].\r\n */\r\n _this.hitOptions = {\r\n \"doubleHitTime\": 300,\r\n //\"delayFirstHit\": false,\r\n \"hitTolerance\": 10,\r\n \"noFocus\": true\r\n };\r\n /**\r\n * Default options for hover events. These can be overridden in\r\n * [[InteractionObject]].\r\n */\r\n _this.hoverOptions = {\r\n \"touchOutBehavior\": \"leave\",\r\n \"touchOutDelay\": 1000\r\n };\r\n /**\r\n * Default options for detecting a swipe gesture. These can be overridden in\r\n * [[InteractionObject]].\r\n */\r\n _this.swipeOptions = {\r\n \"time\": 500,\r\n \"verticalThreshold\": 75,\r\n \"horizontalThreshold\": 30\r\n };\r\n /**\r\n * Default options for keyboard operations. These can be overridden in\r\n * [[InteractionObject]].\r\n */\r\n _this.keyboardOptions = {\r\n \"speed\": 0.1,\r\n \"accelleration\": 1.2,\r\n \"accellerationDelay\": 2000\r\n };\r\n /**\r\n * Default options for keyboard operations. These can be overridden in\r\n * [[InteractionObject]].\r\n *\r\n * @since 4.5.14\r\n */\r\n _this.mouseOptions = {\r\n \"sensitivity\": 1\r\n };\r\n // Set class name\r\n _this.className = \"Interaction\";\r\n // Create InteractionObject for <body>\r\n _this.body = _this.getInteraction(document.body);\r\n _this._disposers.push(_this.body);\r\n // Detect browser capabilities and determine what event listeners to use\r\n if (window.hasOwnProperty(\"PointerEvent\")) {\r\n // IE10+/Edge without touch controls enabled\r\n _this._pointerEvents.pointerdown = \"pointerdown\";\r\n _this._pointerEvents.pointerup = \"pointerup\";\r\n _this._pointerEvents.pointermove = \"pointermove\";\r\n _this._pointerEvents.pointercancel = \"pointercancel\";\r\n _this._pointerEvents.pointerover = \"pointerover\";\r\n _this._pointerEvents.pointerout = \"pointerout\";\r\n //this._usePointerEventsOnly = true;\r\n }\r\n else if (window.hasOwnProperty(\"MSPointerEvent\")) {\r\n // IE9\r\n _this._pointerEvents.pointerdown = \"MSPointerDown\";\r\n _this._pointerEvents.pointerup = \"MSPointerUp\";\r\n _this._pointerEvents.pointermove = \"MSPointerMove\";\r\n _this._pointerEvents.pointercancel = \"MSPointerUp\";\r\n _this._pointerEvents.pointerover = \"MSPointerOver\";\r\n _this._pointerEvents.pointerout = \"MSPointerOut\";\r\n //this._usePointerEventsOnly = true;\r\n }\r\n else if ((typeof matchMedia !== \"undefined\") && matchMedia('(pointer:fine)').matches) {\r\n // This is only for Safari as it does not support PointerEvent\r\n // Do nothing and let it use regular `mouse*` events\r\n // Hi Apple ;)\r\n // Additionally disable hover events for iOS devices\r\n if ('ontouchstart' in window) {\r\n _this._addHoverEvents = false;\r\n _this._useTouchEventsOnly = true;\r\n }\r\n }\r\n else if (window.navigator.userAgent.match(/MSIE /)) {\r\n // Oh looky, an MSIE that does not support PointerEvent. Hi granpa IE9!\r\n _this._usePointerEventsOnly = true;\r\n }\r\n else if (_this.fullFF()) {\r\n // Old FF, let's use regular events.\r\n // (Newer FFs would be detected by the PointerEvent availability check)\r\n _this._usePointerEventsOnly = true;\r\n }\r\n else {\r\n // Uses defaults for normal browsers\r\n // We also assume that this must be a touch device that does not have\r\n // any pointer events\r\n _this._useTouchEventsOnly = true;\r\n }\r\n // Detect if device has a mouse\r\n // This is turning out to be not reliable\r\n // @todo remove\r\n /*if (!window.navigator.msPointerEnabled && (typeof matchMedia !== \"undefined\") && !matchMedia('(pointer:fine)').matches && !this.fullFF()) {\r\n this._useTouchEventsOnly = true;\r\n }*/\r\n // Detect proper mouse wheel events\r\n if (\"onwheel\" in document.createElement(\"div\")) {\r\n // Modern browsers\r\n _this._pointerEvents.wheel = \"wheel\";\r\n }\r\n else if ($type.hasValue(document.onmousewheel)) {\r\n // Webkit and IE support at least \"mousewheel\"\r\n _this._pointerEvents.wheel = \"mousewheel\";\r\n }\r\n // Set up default inertia options\r\n _this.inertiaOptions.setKey(\"move\", {\r\n \"time\": 100,\r\n \"duration\": 500,\r\n \"factor\": 1,\r\n \"easing\": $ease.polyOut3\r\n });\r\n _this.inertiaOptions.setKey(\"resize\", {\r\n \"time\": 100,\r\n \"duration\": 500,\r\n \"factor\": 1,\r\n \"easing\": $ease.polyOut3\r\n });\r\n // Set the passive mode support\r\n _this._passiveSupported = Interaction.passiveSupported;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * This is a nasty detection for Firefox. The reason why we have is that\r\n * Firefox ESR version does not support matchMedia correctly.\r\n *\r\n * On iOS, Firefox uses different userAgent, so we don't have to detect iOS.\r\n *\r\n * @return Full Firefox?\r\n */\r\n Interaction.prototype.fullFF = function () {\r\n return (window.navigator.userAgent.match(/Firefox/)) && !(window.navigator.userAgent.match(/Android/));\r\n };\r\n Interaction.prototype.debug = function () { };\r\n /**\r\n * ==========================================================================\r\n * Processing\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Sets up global events.\r\n *\r\n * We need this so that we can track drag movement beyond chart's container.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Interaction.prototype.addGlobalEvents = function () {\r\n var _this = this;\r\n if (!this._globalEventsAdded) {\r\n if (!this._useTouchEventsOnly) {\r\n this._disposers.push(addEventListener(document, this._pointerEvents.pointerdown, function (ev) { _this.handleGlobalPointerDown(ev); }));\r\n this._disposers.push(addEventListener(document, this._pointerEvents.pointermove, function (ev) { _this.handleGlobalPointerMove(ev); }));\r\n this._disposers.push(addEventListener(document, this._pointerEvents.pointerup, function (ev) { _this.handleGlobalPointerUp(ev); }));\r\n this._disposers.push(addEventListener(document, this._pointerEvents.pointercancel, function (ev) { _this.handleGlobalPointerUp(ev, true); }));\r\n this._disposers.push(addEventListener(document, \"mouseenter\", function (ev) {\r\n if (!$type.hasValue(ev.relatedTarget) && (ev.buttons == 0 || ev.which == 0)) {\r\n _this.handleDocumentLeave(ev);\r\n }\r\n }));\r\n }\r\n // No need to duplicate events for hubrid systems that support both\r\n // pointer events and touch events. Touch events are need only for\r\n // some touch-only systems, like Mobile Safari.\r\n if (!this._usePointerEventsOnly) {\r\n this._disposers.push(addEventListener(document, \"touchstart\", function (ev) { _this.handleGlobalTouchStart(ev); }));\r\n this._disposers.push(addEventListener(document, \"touchmove\", function (ev) { _this.handleGlobalTouchMove(ev); }));\r\n this._disposers.push(addEventListener(document, \"touchend\", function (ev) { _this.handleGlobalTouchEnd(ev); }));\r\n }\r\n this._disposers.push(addEventListener(document, \"keydown\", function (ev) { _this.handleGlobalKeyDown(ev); }));\r\n this._disposers.push(addEventListener(document, \"keyup\", function (ev) { _this.handleGlobalKeyUp(ev); }));\r\n this._globalEventsAdded = true;\r\n }\r\n };\r\n /**\r\n * Sets if [[InteractionObject]] is clickable.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io [[InteractionObject]] instance\r\n */\r\n Interaction.prototype.processClickable = function (io) {\r\n // Add or remove touch events\r\n this.processTouchable(io);\r\n };\r\n /**\r\n * Sets if [[InteractionObject]] will display context menu when right-clicked.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io [[InteractionObject]] instance\r\n */\r\n Interaction.prototype.processContextMenu = function (io) {\r\n if (io.contextMenuDisabled) {\r\n if (!io.eventDisposers.hasKey(\"contextMenuDisabled\")) {\r\n io.eventDisposers.setKey(\"contextMenuDisabled\", addEventListener(io.element, \"contextmenu\", function (e) {\r\n e.preventDefault();\r\n }));\r\n }\r\n }\r\n else {\r\n if (io.eventDisposers.hasKey(\"contextMenuDisabled\")) {\r\n io.eventDisposers.getKey(\"contextMenuDisabled\").dispose();\r\n }\r\n }\r\n };\r\n /**\r\n * Sets if [[InteractionObject]] is hoverable.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io [[InteractionObject]] instance\r\n */\r\n Interaction.prototype.processHoverable = function (io) {\r\n var _this = this;\r\n if (io.hoverable || io.trackable) {\r\n // Add global events\r\n this.addGlobalEvents();\r\n // Add hover styles\r\n this.applyCursorOverStyle(io);\r\n // Add local events\r\n if (!io.eventDisposers.hasKey(\"hoverable\") && this._addHoverEvents) {\r\n io.eventDisposers.setKey(\"hoverable\", new MultiDisposer([\r\n addEventListener(io.element, this._pointerEvents.pointerout, function (e) { return _this.handlePointerOut(io, e); }),\r\n addEventListener(io.element, this._pointerEvents.pointerover, function (e) { return _this.handlePointerOver(io, e); })\r\n ]));\r\n }\r\n if (io.trackable) {\r\n //sprite.addEventListener(\"touchmove\", this.handleTouchMove, false, this);\r\n }\r\n }\r\n else {\r\n var disposer = io.eventDisposers.getKey(\"hoverable\");\r\n if (disposer != null) {\r\n disposer.dispose();\r\n io.eventDisposers.removeKey(\"hoverable\");\r\n }\r\n }\r\n // Add or remove touch events\r\n this.processTouchable(io);\r\n };\r\n /**\r\n * Sets up [[InteractionObject]] as movable. Movable can be any\r\n * transformation, e.g. drag, swipe, resize, track.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n */\r\n Interaction.prototype.processMovable = function (io) {\r\n // Add unified events\r\n if (io.draggable || io.swipeable || io.trackable || io.resizable) {\r\n // Prep the element\r\n if (!this.isGlobalElement(io) && !io.isTouchProtected) {\r\n this.prepElement(io);\r\n }\r\n // Add hover styles\r\n this.applyCursorOverStyle(io);\r\n }\r\n // Add or remove touch events\r\n this.processTouchable(io);\r\n };\r\n /**\r\n * Checks if [[InteractionObject]] is trackable and sets relative events.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n */\r\n Interaction.prototype.processTrackable = function (io) {\r\n this.processHoverable(io);\r\n this.processMovable(io);\r\n if (io.trackable) {\r\n this.trackedObjects.moveValue(io);\r\n }\r\n else {\r\n this.trackedObjects.removeValue(io);\r\n }\r\n };\r\n /**\r\n * Checks if [[InteractionObject]] is draggable.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n */\r\n Interaction.prototype.processDraggable = function (io) {\r\n this.processMovable(io);\r\n };\r\n /**\r\n * Checks if [[InteractionObject]] is swipeable and sets relative events.\r\n *\r\n * A swipe event is triggered when a horizontal drag of 75px or more (and\r\n * less than 30px vertically) occurs within 700 milliseconds. This can be\r\n * overridden in sprites [[swipeOptions]].\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n */\r\n Interaction.prototype.processSwipeable = function (io) {\r\n this.processMovable(io);\r\n };\r\n /**\r\n * Checks if [[InteractionObject]] is resizable and attaches required events\r\n * to it.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n */\r\n Interaction.prototype.processResizable = function (io) {\r\n this.processMovable(io);\r\n };\r\n /**\r\n * Checks if [[InteractionObject]] is supposed to capture mouse wheel events\r\n * and prepares it to catch those events.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n */\r\n Interaction.prototype.processWheelable = function (io) {\r\n var _this = this;\r\n if (io.wheelable) {\r\n //io.hoverable = true;\r\n if (!io.eventDisposers.hasKey(\"wheelable\")) {\r\n io.eventDisposers.setKey(\"wheelable\", new MultiDisposer([\r\n addEventListener(io.element, this._pointerEvents.wheel, function (e) { return _this.handleMouseWheel(io, e); }, this._passiveSupported ? { passive: false } : false),\r\n io.events.on(\"out\", function (e) {\r\n if (io.wheelable) {\r\n _this.unlockWheel();\r\n }\r\n }),\r\n io.events.on(\"over\", function (e) {\r\n if (io.wheelable) {\r\n _this.lockWheel();\r\n }\r\n })\r\n ]));\r\n }\r\n }\r\n else {\r\n var disposer = io.eventDisposers.getKey(\"wheelable\");\r\n if (disposer != null) {\r\n disposer.dispose();\r\n io.eventDisposers.removeKey(\"wheelable\");\r\n }\r\n }\r\n };\r\n /**\r\n * Checks if [[InteractionObject]] is focusable. A focusable element is an\r\n * element that will be highlighted when users presses TAB key. If the\r\n * element is focusable, this function will attach relative focus/blur\r\n * events to it.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n */\r\n Interaction.prototype.processFocusable = function (io) {\r\n var _this = this;\r\n if (io.focusable === true && (io.tabindex > -1) && !this._useTouchEventsOnly) {\r\n if (!io.eventDisposers.hasKey(\"focusable\")) {\r\n io.eventDisposers.setKey(\"focusable\", new MultiDisposer([\r\n addEventListener(io.element, \"focus\", function (e) { return _this.handleFocus(io, e); }),\r\n addEventListener(io.element, \"blur\", function (e) { return _this.handleBlur(io, e); }),\r\n addEventListener(io.element, this._pointerEvents.pointerdown, function (e) { return _this.handleFocusBlur(io, e); }),\r\n addEventListener(io.element, \"touchstart\", function (e) { return _this.handleFocusBlur(io, e); }, this._passiveSupported ? { passive: false } : false)\r\n ]));\r\n }\r\n }\r\n else {\r\n var disposer = io.eventDisposers.getKey(\"focusable\");\r\n if (disposer != null) {\r\n disposer.dispose();\r\n io.eventDisposers.removeKey(\"focusable\");\r\n }\r\n }\r\n };\r\n /**\r\n * Checks if [[InteractionObject]] is \"touchable\". It means any interaction\r\n * whatsoever: mouse click, touch screen tap, swipe, drag, resize, etc.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n */\r\n Interaction.prototype.processTouchable = function (io) {\r\n var _this = this;\r\n // Add unified events\r\n if (io.clickable || io.hoverable || io.trackable || io.draggable || io.swipeable || io.resizable) {\r\n // Add global events\r\n this.addGlobalEvents();\r\n // Add local events\r\n if (!io.eventDisposers.hasKey(\"touchable\")) {\r\n if (!this._useTouchEventsOnly && !this._usePointerEventsOnly) {\r\n io.eventDisposers.setKey(\"touchable\", new MultiDisposer([\r\n addEventListener(io.element, this._pointerEvents.pointerdown, function (e) { return _this.handlePointerDown(io, e); }),\r\n addEventListener(io.element, \"touchstart\", function (e) { return _this.handleTouchDown(io, e); }, this._passiveSupported ? { passive: false } : false)\r\n ]));\r\n }\r\n else if (!this._useTouchEventsOnly) {\r\n io.eventDisposers.setKey(\"touchable\", addEventListener(io.element, this._pointerEvents.pointerdown, function (e) { return _this.handlePointerDown(io, e); }));\r\n }\r\n else if (!this._usePointerEventsOnly) {\r\n io.eventDisposers.setKey(\"touchable\", addEventListener(io.element, \"touchstart\", function (e) { return _this.handleTouchDown(io, e); }, this._passiveSupported ? { passive: false } : false));\r\n }\r\n }\r\n }\r\n else {\r\n var disposer = io.eventDisposers.getKey(\"touchable\");\r\n if (disposer != null) {\r\n disposer.dispose();\r\n io.eventDisposers.removeKey(\"touchable\");\r\n }\r\n }\r\n };\r\n /**\r\n * ==========================================================================\r\n * Non-pointer events\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Dispatches \"focus\" event when element gains focus.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.handleFocus = function (io, ev) {\r\n if (!io.focusable) {\r\n ev.preventDefault();\r\n return;\r\n }\r\n io.isFocused = true;\r\n if (io.events.isEnabled(\"focus\") && !system.isPaused) {\r\n var imev = {\r\n type: \"focus\",\r\n target: io,\r\n event: ev\r\n };\r\n io.events.dispatchImmediately(\"focus\", imev);\r\n }\r\n };\r\n /**\r\n * Used by regular click events to prevent focus if \"noFocus\" is set.\r\n *\r\n * This should not be called by \"focus\" handlers.\r\n *\r\n * @param io Element\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.handleFocusBlur = function (io, ev) {\r\n if (io.focusable !== false && this.getHitOption(io, \"noFocus\")) {\r\n io.events.once(\"focus\", function () {\r\n io.events.disableType(\"blur\");\r\n $dom.blur();\r\n if (io.sprite) {\r\n io.sprite.handleBlur();\r\n }\r\n io.events.enableType(\"blur\");\r\n });\r\n }\r\n };\r\n /**\r\n * Dispatches \"blur\" event when element loses focus.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.handleBlur = function (io, ev) {\r\n if (!io.focusable) {\r\n ev.preventDefault();\r\n return;\r\n }\r\n io.isFocused = false;\r\n if (io.events.isEnabled(\"blur\") && !system.isPaused) {\r\n var imev = {\r\n type: \"blur\",\r\n target: io,\r\n event: ev\r\n };\r\n io.events.dispatchImmediately(\"blur\", imev);\r\n }\r\n };\r\n /**\r\n * ==========================================================================\r\n * Global keyboard-related even handlers\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Checks if there is an item that has currently focus and that they key is\r\n * one of the directional keys. If both of the conditions are true, it\r\n * creates an object to simulate movement of dragable element with keyboard.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev An original keyboard event\r\n */\r\n Interaction.prototype.handleGlobalKeyDown = function (ev) {\r\n if (this.focusedObject) {\r\n if (keyboard.isKey(ev, \"esc\")) {\r\n // ESC removes focus\r\n $dom.blur();\r\n }\r\n else if (this.focusedObject.draggable && keyboard.isKey(ev, [\"up\", \"down\", \"left\", \"right\"])) {\r\n // Prevent scrolling of the document\r\n ev.preventDefault();\r\n // Get focused object\r\n var io = this.focusedObject;\r\n // Get particular key\r\n var disposerKey = \"interactionKeyboardObject\";\r\n // If such disposer already exists we know the event is going on so we\r\n // just move on\r\n if (io.eventDisposers.hasKey(disposerKey)) {\r\n return;\r\n }\r\n // Create a keyboard mover\r\n var ko = new InteractionKeyboardObject(io, ev);\r\n io.eventDisposers.setKey(disposerKey, ko);\r\n switch (keyboard.getEventKey(ev)) {\r\n case \"up\":\r\n ko.directionY = -1;\r\n break;\r\n case \"down\":\r\n ko.directionY = 1;\r\n break;\r\n case \"left\":\r\n ko.directionX = -1;\r\n break;\r\n case \"right\":\r\n ko.directionX = 1;\r\n break;\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Dispatches related events when the keyboard key is realeasd.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev An original keyboard event\r\n */\r\n Interaction.prototype.handleGlobalKeyUp = function (ev) {\r\n var disposerKey = \"interactionKeyboardObject\";\r\n if (this.focusedObject) {\r\n var disposer = this.focusedObject.eventDisposers.getKey(disposerKey);\r\n if (disposer != null) {\r\n // Prevent scrolling of the document\r\n ev.preventDefault();\r\n // Dispose stuff\r\n disposer.dispose();\r\n this.focusedObject.eventDisposers.removeKey(disposerKey);\r\n }\r\n // Does focused object have \"hit\" event?\r\n if (keyboard.isKey(ev, \"enter\")\r\n && this.focusedObject.sprite\r\n && !this.focusedObject.sprite.events.isEnabled(\"toggled\")) {\r\n if (this.focusedObject.sprite.events.isEnabled(\"hit\")) {\r\n this.focusedObject.dispatchImmediately(\"hit\");\r\n }\r\n else if (this.focusedObject.sprite.showTooltipOn == \"hit\") {\r\n this.focusedObject.dispatchImmediately(\"up\");\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * ==========================================================================\r\n * Global pointer-related even handlers\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Handler for a global \"pointermove\" event.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event object\r\n */\r\n Interaction.prototype.handleGlobalPointerMove = function (ev) {\r\n // Get pointer\r\n var pointer = this.getPointer(ev);\r\n // Update current point position\r\n pointer.point = this.getPointerPoint(ev);\r\n // Prepare and fire global event\r\n if (this.events.isEnabled(\"track\") && !system.isPaused) {\r\n var imev = {\r\n type: \"track\",\r\n target: this,\r\n event: ev,\r\n pointer: pointer,\r\n touch: pointer.touch\r\n };\r\n this.events.dispatchImmediately(\"track\", imev);\r\n }\r\n // Track\r\n this.addBreadCrumb(pointer, pointer.point);\r\n // Process further\r\n this.handleGlobalMove(pointer, ev);\r\n };\r\n /**\r\n * Handler for a global \"pointerdown\" event.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event object\r\n */\r\n Interaction.prototype.handleGlobalPointerDown = function (ev) {\r\n // Remove delayed hovers\r\n this.processDelayed();\r\n // Get pointer\r\n var pointer = this.getPointer(ev);\r\n // Prepare and fire global event\r\n if (this.events.isEnabled(\"down\") && !system.isPaused) {\r\n var imev = {\r\n type: \"down\",\r\n target: this,\r\n event: ev,\r\n pointer: pointer,\r\n touch: pointer.touch\r\n };\r\n this.events.dispatchImmediately(\"down\", imev);\r\n }\r\n };\r\n /**\r\n * Prevents touch action from firing.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event\r\n */\r\n Interaction.prototype.preventTouchAction = function (ev) {\r\n if (!ev.defaultPrevented) {\r\n ev.preventDefault();\r\n }\r\n };\r\n /**\r\n * Handler for a global \"pointerup\" event.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event object\r\n */\r\n Interaction.prototype.handleGlobalPointerUp = function (ev, cancelled) {\r\n if (cancelled === void 0) { cancelled = false; }\r\n // Get pointer\r\n var pointer = this.getPointer(ev);\r\n // Prepare and fire global event\r\n if (this.events.isEnabled(\"up\") && !system.isPaused) {\r\n var imev = {\r\n type: \"up\",\r\n target: this,\r\n event: ev,\r\n pointer: pointer,\r\n touch: pointer.touch\r\n };\r\n this.events.dispatchImmediately(\"up\", imev);\r\n }\r\n // Process further\r\n this.handleGlobalUp(pointer, ev, cancelled);\r\n };\r\n /**\r\n * ==========================================================================\r\n * Global touch-related even handlers\r\n * ==========================================================================\r\n */\r\n /**\r\n * Handler for a global \"touchmove\" event.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event object\r\n */\r\n Interaction.prototype.handleGlobalTouchMove = function (ev) {\r\n // Process each changed touch point\r\n for (var i = 0; i < ev.changedTouches.length; i++) {\r\n // Get pointer\r\n var pointer = this.getPointer(ev.changedTouches[i]);\r\n // Update current point position\r\n pointer.point = this.getPointerPoint(ev.changedTouches[i]);\r\n // Prepare and fire global event\r\n if (this.events.isEnabled(\"track\") && !system.isPaused) {\r\n var imev = {\r\n type: \"track\",\r\n target: this,\r\n event: ev,\r\n pointer: pointer,\r\n touch: pointer.touch\r\n };\r\n this.events.dispatchImmediately(\"track\", imev);\r\n }\r\n // Track\r\n this.addBreadCrumb(pointer, pointer.point);\r\n // Process further\r\n this.handleGlobalMove(pointer, ev);\r\n }\r\n };\r\n /**\r\n * Handler for a global \"touchstart\" event.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event object\r\n */\r\n Interaction.prototype.handleGlobalTouchStart = function (ev) {\r\n // Remove delayed hovers\r\n this.processDelayed();\r\n // Process each changed touch point\r\n for (var i = 0; i < ev.changedTouches.length; i++) {\r\n // Get pointer\r\n var pointer = this.getPointer(ev.changedTouches[i]);\r\n // Prepare and fire global event\r\n if (!this._usePointerEventsOnly && this.events.isEnabled(\"down\") && !system.isPaused) {\r\n var imev = {\r\n type: \"down\",\r\n target: this,\r\n event: ev,\r\n pointer: pointer,\r\n touch: pointer.touch\r\n };\r\n this.events.dispatchImmediately(\"down\", imev);\r\n }\r\n }\r\n };\r\n /**\r\n * Handler for a global \"touchend\" event.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event object\r\n */\r\n Interaction.prototype.handleGlobalTouchEnd = function (ev) {\r\n // Process each changed touch point\r\n for (var i = 0; i < ev.changedTouches.length; i++) {\r\n // Get pointer\r\n var pointer = this.getPointer(ev.changedTouches[i]);\r\n // Prepare and fire global event\r\n if (this.events.isEnabled(\"up\") && !system.isPaused) {\r\n var imev = {\r\n type: \"up\",\r\n target: this,\r\n event: ev,\r\n pointer: pointer,\r\n touch: pointer.touch\r\n };\r\n this.events.dispatchImmediately(\"up\", imev);\r\n }\r\n // Handle element-related events\r\n this.handleGlobalUp(pointer, ev);\r\n }\r\n };\r\n /**\r\n * ==========================================================================\r\n * Element-specific pointer-related even handlers\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Handles event when pointer is over [[InteractionObject]] and button is\r\n * pressed.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.handlePointerDown = function (io, ev) {\r\n // Stop further propagation so we don't get multiple triggers on hybrid\r\n // devices (both mouse and touch capabilities)\r\n //ev.preventDefault();\r\n //ev.stopPropagation();\r\n //if (ev.defaultPrevented) {\r\n //}\r\n // Get pointer\r\n var pointer = this.getPointer(ev);\r\n // Ignore if it's anything but mouse's primary button\r\n if (!pointer.touch && ev.which != 1 && ev.which != 3) {\r\n return;\r\n }\r\n // Set mouse button\r\n pointer.button = ev.which;\r\n // Reset pointer\r\n this.resetPointer(pointer, ev);\r\n // Process down\r\n this.handleDown(io, pointer, ev);\r\n };\r\n /**\r\n * Handles event when [[InteractionObject]] is hovered by a mouse pointer.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.handlePointerOver = function (io, ev) {\r\n // Get pointer\r\n var pointer = this.getPointer(ev);\r\n // Process down\r\n this.handleOver(io, pointer, ev);\r\n };\r\n /**\r\n * Handles event when [[InteractionObject]] loses hover from a mouse pointer.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.handlePointerOut = function (io, ev) {\r\n // Get pointer\r\n var pointer = this.getPointer(ev);\r\n // Process down\r\n this.handleOut(io, pointer, ev);\r\n };\r\n /**\r\n * Handles event when mouse wheel is crolled over the [[InteractionObject]].\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param ev Original event\r\n * @todo Investigate more-cross browser stuff https://developer.mozilla.org/en-US/docs/Web/Events/wheel\r\n */\r\n Interaction.prototype.handleMouseWheel = function (io, ev) {\r\n // Get pointer\r\n var pointer = this.getPointer(ev);\r\n // Update current point position\r\n pointer.point = this.getPointerPoint(ev);\r\n // Init delta values\r\n var deltaX = 0, deltaY = 0;\r\n // Set up modifier\r\n // This is needed because FireFox reports wheel deltas in \"lines\" instead\r\n // of pixels so we have to approximate pixel value\r\n var mod = 1;\r\n if (ev.deltaMode == 1) {\r\n mod = 50;\r\n }\r\n // Adjust configurable sensitivity\r\n mod *= this.getMouseOption(io, \"sensitivity\");\r\n // Calculate deltas\r\n if (ev instanceof WheelEvent) {\r\n deltaX = Math.round((-1 * ev.wheelDeltaX) || ev.deltaX) * mod;\r\n deltaY = Math.round((-1 * ev.wheelDeltaY) || ev.deltaY) * mod;\r\n }\r\n else {\r\n throw new Error(\"Invalid event type\");\r\n }\r\n // Handle the event\r\n this.handleWheel(io, pointer, deltaX, deltaY, ev);\r\n };\r\n /**\r\n * ==========================================================================\r\n * Element-specific touch-related even handlers\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Handles an event when an [[InteractionObject]] is touched on a touch\r\n * device.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.handleTouchDown = function (io, ev) {\r\n // Stop further propagation so we don't get multiple triggers on hybrid\r\n // devices (both mouse and touch capabilities)\r\n //this.maybePreventDefault(io, ev);\r\n //return;\r\n // Process each changed touch point\r\n for (var i = 0; i < ev.changedTouches.length; i++) {\r\n // Get pointer\r\n var pointer = this.getPointer(ev.changedTouches[i]);\r\n this.maybePreventDefault(io, ev, pointer);\r\n // Reset pointer\r\n this.resetPointer(pointer, ev.changedTouches[i]);\r\n // Process down\r\n this.handleDown(io, pointer, ev);\r\n }\r\n };\r\n /**\r\n * ==========================================================================\r\n * Universal handlers\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Handles click/tap. Checks for doublehit.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Interaction object\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.handleHit = function (io, pointer, ev) {\r\n // Check if this is a double-hit\r\n var now = $time.getTime();\r\n if (io.lastHit && (io.lastHit >= (now - this.getHitOption(io, \"doubleHitTime\")))) {\r\n // Yup - it's a double-hit\r\n // Cancel the hit\r\n //clearTimeout(io.lastHitPointer.hitTimeout);\r\n // If it happened too fast it probably means that hybrid device just\r\n // generated two events for the same tap\r\n if ((now - io.lastHit) < 100) {\r\n // Ignore\r\n return;\r\n }\r\n // Clear last hit\r\n io.lastHit = undefined;\r\n io.lastHitPointer = undefined;\r\n // Dispatch event\r\n if (io.events.isEnabled(\"doublehit\") && !system.isPaused) {\r\n var imev = {\r\n type: \"doublehit\",\r\n target: io,\r\n point: pointer.point,\r\n event: ev,\r\n touch: pointer.touch\r\n };\r\n io.events.dispatchImmediately(\"doublehit\", imev);\r\n }\r\n }\r\n else {\r\n // Log last hit\r\n io.lastHit = now;\r\n io.lastHitPointer = pointer;\r\n if (pointer.button === 3) {\r\n // Execute HIT now\r\n if (io.events.isEnabled(\"rightclick\") && !system.isPaused) {\r\n var imev = {\r\n type: \"rightclick\",\r\n target: io,\r\n event: ev\r\n };\r\n io.events.dispatchImmediately(\"rightclick\", imev);\r\n }\r\n }\r\n else {\r\n if (io.events.isEnabled(\"hit\") && !system.isPaused) {\r\n var imev = {\r\n type: \"hit\",\r\n target: io,\r\n event: ev,\r\n point: pointer.point,\r\n touch: pointer.touch\r\n };\r\n io.events.dispatchImmediately(\"hit\", imev);\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Handles pointer hovering over [[InteractionObject]].\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Interaction object\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n * @param soft Invoked by helper function\r\n */\r\n Interaction.prototype.handleOver = function (io, pointer, ev, soft) {\r\n if (soft === void 0) { soft = false; }\r\n if (!io.hoverable) {\r\n return;\r\n }\r\n var hoversPaused = false;\r\n if (this.shouldCancelHovers(pointer) && this.areTransformed() && this.moved(pointer, this.getHitOption(io, \"hitTolerance\"))) {\r\n hoversPaused = true;\r\n this.cancelAllHovers(ev);\r\n }\r\n // Remove any delayed outs\r\n this.processDelayed();\r\n // Add pointer\r\n io.overPointers.moveValue(pointer);\r\n // Check if object is not yet hovered\r\n if (!io.isRealHover) {\r\n // Set element as hovered\r\n if (!hoversPaused) {\r\n io.isHover = true;\r\n io.isRealHover = true;\r\n this.overObjects.moveValue(io);\r\n }\r\n // Generate body track event. This is needed so that if element loads\r\n // under unmoved mouse cursor, we still need all the actions that are\r\n // required to happen to kick in.\r\n this.handleTrack(this.body, pointer, ev, true);\r\n // Event\r\n if (io.events.isEnabled(\"over\") && !system.isPaused && !hoversPaused) {\r\n var imev = {\r\n type: \"over\",\r\n target: io,\r\n event: ev,\r\n pointer: pointer,\r\n touch: pointer.touch\r\n };\r\n io.events.dispatchImmediately(\"over\", imev);\r\n }\r\n }\r\n };\r\n /**\r\n * Handles when [[InteractionObject]] is no longer hovered.\r\n *\r\n * If `soft = true`, this means that method is being invoked by some other\r\n * code, not hard \"out\" function, like `handleUp` which implies we need to\r\n * run additional checks before unhovering the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Interaction object\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n * @param soft Invoked by helper function\r\n * @param force Force imediate out\r\n */\r\n Interaction.prototype.handleOut = function (io, pointer, ev, soft, force) {\r\n var _this = this;\r\n if (soft === void 0) { soft = false; }\r\n if (force === void 0) { force = false; }\r\n if (!io.hoverable) {\r\n return;\r\n }\r\n // Remove pointer\r\n io.overPointers.removeValue(pointer);\r\n // Check if element is still hovered\r\n if (io.isHover && (!io.hasDelayedOut || force)) {\r\n // Should we run additional checks?\r\n if (soft && io.overPointers.length) {\r\n // There are still pointers hovering - don't do anything else and\r\n // wait until either no over pointers are there or we get a hard out\r\n // event.\r\n return;\r\n }\r\n // Should we delay \"out\" if this is happening on a touch device?\r\n if (pointer.touch && !force && !this.old(pointer)) {\r\n // This is a touch pointer, and it hasn't moved, let's pretend\r\n // the object is still hovered, and act as per \"behavior\" setting\r\n var behavior = this.getHoverOption(io, \"touchOutBehavior\");\r\n if (behavior == \"leave\") {\r\n // Set to \"leave\", so we do not execute any \"out\" event.\r\n // It will be handled by any other interaction that happens\r\n // afterwards.\r\n this._delayedEvents.out.push({\r\n type: \"out\",\r\n io: io,\r\n pointer: pointer,\r\n event: ev,\r\n keepUntil: $time.getTime() + 500\r\n });\r\n io.hasDelayedOut = true;\r\n return;\r\n }\r\n else if (behavior == \"delay\" && this.getHoverOption(io, \"touchOutDelay\")) {\r\n this._delayedEvents.out.push({\r\n type: \"out\",\r\n io: io,\r\n pointer: pointer,\r\n event: ev,\r\n keepUntil: $time.getTime() + 500,\r\n timeout: this.setTimeout(function () {\r\n _this.handleOut(io, pointer, ev, true);\r\n }, this.getHoverOption(io, \"touchOutDelay\"))\r\n });\r\n return;\r\n }\r\n else {\r\n // Nothing for \"remove\" - that's how it works \"out-of-the-box\"\r\n }\r\n }\r\n // Set element as not hovered\r\n io.isHover = false;\r\n this.overObjects.removeValue(io);\r\n // Invoke event\r\n if (!io.isDisposed() && io.events.isEnabled(\"out\") && !system.isPaused) {\r\n var imev = {\r\n type: \"out\",\r\n target: io,\r\n event: ev,\r\n pointer: pointer,\r\n touch: pointer.touch\r\n };\r\n io.events.dispatchImmediately(\"out\", imev);\r\n }\r\n // Reset object from lefover delayed outs, pointers\r\n io.overPointers.clear();\r\n io.hasDelayedOut = false;\r\n // @todo (clean delayed)\r\n }\r\n };\r\n /**\r\n * Processes dalyed events, such as \"out\" event that was initiated for\r\n * elements by touch.\r\n */\r\n Interaction.prototype.processDelayed = function () {\r\n var delayedEvent;\r\n while (true) {\r\n delayedEvent = this._delayedEvents.out.pop();\r\n if (!delayedEvent) {\r\n break;\r\n }\r\n if (delayedEvent.timeout) {\r\n delayedEvent.timeout.dispose();\r\n }\r\n this.handleOut(delayedEvent.io, delayedEvent.pointer, delayedEvent.event, false, true);\r\n }\r\n };\r\n /**\r\n * Performs tasks on pointer down.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.handleDown = function (io, pointer, ev) {\r\n // Need to prevent default event from happening on transformable objects\r\n this.maybePreventDefault(io, ev, pointer);\r\n // Stop inertia animations if they're currently being played out\r\n if (io.inert) {\r\n this.stopInertia(io);\r\n }\r\n // Trigger hover because some touch devices won't trigger over events\r\n // on their own\r\n this.handleOver(io, pointer, ev, true);\r\n // Add pointer to list\r\n io.downPointers.moveValue(pointer);\r\n // Apply styles if necessary\r\n this.applyCursorDownStyle(io, pointer);\r\n // Check if object is already down\r\n if (!io.isDown) {\r\n // Lose focus if needed\r\n if (io.focusable !== false && this.getHitOption(io, \"noFocus\") && this.focusedObject) {\r\n $dom.blur();\r\n }\r\n // Set object as hovered\r\n io.isDown = true;\r\n this.downObjects.moveValue(io);\r\n // Prep object for dragging and/or resizing\r\n if (io.draggable) {\r\n this.processDragStart(io, pointer, ev);\r\n }\r\n if (io.resizable) {\r\n this.processResizeStart(io, pointer, ev);\r\n }\r\n }\r\n // Dispatch \"down\" event\r\n if (io.events.isEnabled(\"down\") && !system.isPaused) {\r\n var imev = {\r\n type: \"down\",\r\n target: io,\r\n event: ev,\r\n pointer: pointer,\r\n touch: pointer.touch\r\n };\r\n io.events.dispatchImmediately(\"down\", imev);\r\n }\r\n };\r\n /**\r\n * Performs tasks on pointer up.\r\n *\r\n * @ignore Exclude from docs\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.handleGlobalUp = function (pointer, ev, cancelled) {\r\n var _this = this;\r\n if (cancelled === void 0) { cancelled = false; }\r\n var sorted = this.downObjects.values.slice();\r\n sorted.sort(function (x, y) {\r\n if (x && y) {\r\n var pos = x.element.compareDocumentPosition(y.element);\r\n if (pos & Node.DOCUMENT_POSITION_CONTAINED_BY) {\r\n return 1;\r\n }\r\n else if (pos & Node.DOCUMENT_POSITION_CONTAINS) {\r\n return -1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n }\r\n else {\r\n return 0;\r\n }\r\n });\r\n // Process all down objects\r\n $array.each(sorted, function (io) {\r\n // Check if this particular pointer is pressing down\r\n // on object\r\n if (io && io.downPointers.contains(pointer)) {\r\n _this.handleUp(io, pointer, ev, cancelled);\r\n }\r\n });\r\n };\r\n /**\r\n * Simulates all pointers being up once mouse leaves document area.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.handleDocumentLeave = function (ev) {\r\n var _this = this;\r\n // Process all down objects\r\n $iter.each(this.downObjects.backwards().iterator(), function (io) {\r\n io.downPointers.each(function (pointer) {\r\n _this.handleUp(io, pointer, ev);\r\n });\r\n });\r\n };\r\n /**\r\n * Handles when [[InteractionObject]] is no longer hovered.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Interaction object\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.handleUp = function (io, pointer, ev, cancelled) {\r\n if (cancelled === void 0) { cancelled = false; }\r\n // Restore cursor style\r\n this.restoreCursorDownStyle(io, pointer);\r\n // Remove pointer from the list\r\n io.downPointers.removeValue(pointer);\r\n // Trigger out because some touch devices won't trigger out events\r\n // on their own\r\n if (pointer.touch || this._useTouchEventsOnly) {\r\n this.handleOut(io, pointer, ev, true);\r\n }\r\n // Check if object still down\r\n if (io.isDown) {\r\n // Check if there are no other pointers hovering this element\r\n if (io.downPointers.length == 0) {\r\n // Set element as no longer down\r\n io.isDown = false;\r\n this.downObjects.removeValue(io);\r\n }\r\n // Dispatch \"up\" event\r\n if (io.events.isEnabled(\"up\") && !system.isPaused) {\r\n var imev = {\r\n type: \"up\",\r\n target: io,\r\n event: ev,\r\n pointer: pointer,\r\n touch: pointer.touch\r\n };\r\n io.events.dispatchImmediately(\"up\", imev);\r\n }\r\n // Check if this was not a cancelled event.\r\n // If event was canelled (which might happen if gesture resulted in\r\n // navigation or page scroll) there's no point in triggering hit and\r\n // other actions.\r\n if (!cancelled) {\r\n // Handle swiping-related stuff\r\n if (io.swipeable && this.swiped(io, pointer)) {\r\n // Swiped - nothing else should happen\r\n this.handleSwipe(io, pointer, ev);\r\n }\r\n else {\r\n // Check if it maybe a click\r\n if (io.clickable && !this.moved(pointer, this.getHitOption(io, \"hitTolerance\"))) {\r\n this.handleHit(io, pointer, ev);\r\n }\r\n // Handle inertia\r\n if (io.inert && this.moved(pointer, this.getHitOption(io, \"hitTolerance\"))) {\r\n this.handleInertia(io, pointer);\r\n }\r\n else if (io.draggable) {\r\n this.processDragStop(io, pointer, ev);\r\n }\r\n if (io.resizable) {\r\n this.processResizeStop(io, pointer, ev);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Checks if event needs to be prevented on draggable and such items, so that\r\n * touch gestures like navigation and scroll do not kick in.\r\n *\r\n * @param io Object\r\n * @param ev Event\r\n */\r\n Interaction.prototype.maybePreventDefault = function (io, ev, pointer) {\r\n if ($type.hasValue(ev)\r\n && (io.draggable || io.swipeable || io.trackable || io.resizable)\r\n && !this.isGlobalElement(io)\r\n && ev.cancelable !== false\r\n && (!io.isTouchProtected || !pointer || !pointer.touch)) {\r\n ev.preventDefault();\r\n }\r\n };\r\n /**\r\n * Cancels all hovers on all currently hovered objects.\r\n *\r\n * @param pointer Pointer\r\n * @param ev Event\r\n */\r\n Interaction.prototype.cancelAllHovers = function (ev) {\r\n var _this = this;\r\n //this.overObjects.each((io) => {\r\n $iter.each(this.overObjects.backwards().iterator(), function (io) {\r\n if (io) {\r\n var pointer = io.overPointers.getIndex(0);\r\n _this.handleOut(io, pointer, ev, true, true);\r\n }\r\n });\r\n };\r\n /**\r\n * Checks if hovers should be cancelled on transform as per global options.\r\n * @param pointer Pointer\r\n * @return Cancel?\r\n */\r\n Interaction.prototype.shouldCancelHovers = function (pointer) {\r\n return options.disableHoverOnTransform == \"always\" || (options.disableHoverOnTransform == \"touch\" && pointer.touch);\r\n };\r\n /**\r\n * Handles pointer move.\r\n *\r\n * @ignore Exclude from docs\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.handleGlobalMove = function (pointer, ev) {\r\n var _this = this;\r\n // Process hovered elements\r\n // We check if the element became unhovered without reporting the mouseout\r\n // event. (it happens in some cases)\r\n if (!pointer.touch) {\r\n var target_1 = $dom.eventTarget(pointer.lastEvent);\r\n $iter.each(this.overObjects.backwards().iterator(), function (io) {\r\n // Is this pointer relevant to element?\r\n if (io && io.overPointers.contains(pointer) && io.hoverable) {\r\n // Check if the element is still hovered\r\n var reset = false;\r\n if (io.element && pointer.lastEvent) {\r\n if (!$dom.contains(io.element, target_1)) {\r\n reset = true;\r\n }\r\n }\r\n else {\r\n reset = true;\r\n }\r\n if (reset) {\r\n _this.handleOut(io, pointer, ev, true);\r\n }\r\n }\r\n });\r\n }\r\n // Process down elements\r\n $iter.each(this.transformedObjects.backwards().iterator(), function (io) {\r\n // Is this pointer relevant to element?\r\n if (io.downPointers.contains(pointer) &&\r\n // Swipe still happening?\r\n !(io.swipeable && _this.swiping(io, pointer)) &&\r\n (io.draggable || io.resizable)) {\r\n _this.handleTransform(io, ev);\r\n }\r\n });\r\n // Process tracked elements\r\n $iter.each(this.trackedObjects.backwards().iterator(), function (io) {\r\n // Is this pointer relevant to element?\r\n if (!io.overPointers.contains(pointer)) {\r\n _this.handleTrack(io, pointer, ev);\r\n }\r\n });\r\n };\r\n /**\r\n * Handles reporting of pointer movement.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n * @param skipCheck Sould we skip check if cursor actually moved\r\n */\r\n Interaction.prototype.handleTrack = function (io, pointer, ev, skipCheck) {\r\n if (skipCheck === void 0) { skipCheck = false; }\r\n // Do nothing if the cursor did not actually move\r\n if (!skipCheck && !this.moved(pointer, 0)) {\r\n return;\r\n }\r\n // Initiate TRACK event\r\n if (io.events.isEnabled(\"track\") && !system.isPaused) {\r\n var imev = {\r\n type: \"track\",\r\n target: io,\r\n event: ev,\r\n point: pointer.point,\r\n pointer: pointer,\r\n touch: pointer.touch\r\n };\r\n io.events.dispatchImmediately(\"track\", imev);\r\n }\r\n };\r\n /**\r\n * Handles swipe action.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.handleSwipe = function (io, pointer, ev) {\r\n // We pass in InteractionEvent with shift in mouse coordinates\r\n // between when the drag started and ended\r\n if (io.events.isEnabled(\"swipe\") && !system.isPaused) {\r\n var imev = {\r\n type: \"swipe\",\r\n target: io,\r\n event: ev,\r\n touch: pointer.touch\r\n };\r\n io.events.dispatchImmediately(\"swipe\", imev);\r\n }\r\n if (pointer.startPoint.x < pointer.point.x) {\r\n if (io.events.isEnabled(\"swiperight\") && !system.isPaused) {\r\n var imev = {\r\n type: \"swiperight\",\r\n target: io,\r\n event: ev,\r\n touch: pointer.touch\r\n };\r\n io.events.dispatchImmediately(\"swiperight\", imev);\r\n }\r\n }\r\n else {\r\n if (io.events.isEnabled(\"swipeleft\") && !system.isPaused) {\r\n var imev = {\r\n type: \"swipeleft\",\r\n target: io,\r\n event: ev,\r\n touch: pointer.touch\r\n };\r\n io.events.dispatchImmediately(\"swipeleft\", imev);\r\n }\r\n }\r\n };\r\n /**\r\n * Handles event triggering for wheel rotation.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n * @param deltaX Horizontal shift\r\n * @param deltaY Vertical shift\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.handleWheel = function (io, pointer, deltaX, deltaY, ev) {\r\n var shift = {\r\n x: deltaX,\r\n y: deltaY\r\n };\r\n // Trigger generic WHEEL event\r\n if (io.events.isEnabled(\"wheel\") && !system.isPaused) {\r\n io.events.dispatchImmediately(\"wheel\", {\r\n type: \"wheel\",\r\n target: io,\r\n event: ev,\r\n point: pointer.point,\r\n shift: shift\r\n });\r\n }\r\n // Trigger direction-specific events\r\n // Horizontal\r\n if (deltaX < 0) {\r\n if (io.events.isEnabled(\"wheelleft\") && !system.isPaused) {\r\n io.events.dispatchImmediately(\"wheelleft\", {\r\n type: \"wheelleft\",\r\n target: io,\r\n event: ev,\r\n point: pointer.point,\r\n shift: shift\r\n });\r\n }\r\n }\r\n else if (deltaX > 0) {\r\n if (io.events.isEnabled(\"swiperight\") && !system.isPaused) {\r\n io.events.dispatchImmediately(\"wheelright\", {\r\n type: \"wheelright\",\r\n target: io,\r\n event: ev,\r\n point: pointer.point,\r\n shift: shift\r\n });\r\n }\r\n // Vertical\r\n }\r\n else if (deltaY < 0) {\r\n if (io.events.isEnabled(\"wheelup\") && !system.isPaused) {\r\n io.events.dispatchImmediately(\"wheelup\", {\r\n type: \"wheelup\",\r\n target: io,\r\n event: ev,\r\n point: pointer.point,\r\n shift: shift\r\n });\r\n }\r\n }\r\n else if (deltaY > 0) {\r\n if (io.events.isEnabled(\"wheeldown\") && !system.isPaused) {\r\n io.events.dispatchImmediately(\"wheeldown\", {\r\n type: \"wheeldown\",\r\n target: io,\r\n event: ev,\r\n point: pointer.point,\r\n shift: shift\r\n });\r\n }\r\n }\r\n };\r\n /**\r\n * Initiates inertia checking sub-routines for different movement types:\r\n * drag, resize.\r\n *\r\n * @ignore Exclude from docs\r\n * @param sprite\r\n * @param pointer\r\n */\r\n Interaction.prototype.handleInertia = function (io, pointer) {\r\n if (io.draggable && io.downPointers.length === 0) {\r\n this.handleMoveInertia(io, pointer);\r\n }\r\n if (io.resizable && io.downPointers.length > 1) {\r\n this.handleResizeInertia(io, pointer);\r\n }\r\n };\r\n /**\r\n * Continues moving the element to simulate the effect of inertia. Happens\r\n * when `inert` and `draggable` object is dragged and then released.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n */\r\n Interaction.prototype.handleMoveInertia = function (io, pointer) {\r\n var interaction = io;\r\n var type = \"move\";\r\n var point = {\r\n \"x\": pointer.point.x,\r\n \"y\": pointer.point.y\r\n };\r\n var startPoint = {\r\n \"x\": pointer.startPoint.x,\r\n \"y\": pointer.startPoint.y\r\n };\r\n // Init inertia object\r\n var inertia = new Inertia(interaction, type, point, startPoint);\r\n // Get inertia data\r\n var ref = this.getTrailPoint(pointer, $time.getTime() - this.getInertiaOption(io, \"move\", \"time\"));\r\n if (typeof ref === \"undefined\") {\r\n this.processDragStop(io, pointer, pointer.lastUpEvent);\r\n return;\r\n }\r\n // Init animation options\r\n var factor = this.getInertiaOption(io, \"move\", \"factor\");\r\n var animationOptions = [{\r\n \"to\": pointer.point.x + (pointer.point.x - ref.point.x) * factor,\r\n \"property\": \"x\"\r\n }, {\r\n \"to\": pointer.point.y + (pointer.point.y - ref.point.y) * factor,\r\n \"property\": \"y\"\r\n }];\r\n // Start animation\r\n var animation = new Animation(inertia, animationOptions, this.getInertiaOption(io, \"move\", \"duration\"), this.getInertiaOption(io, \"move\", \"easing\")).start();\r\n this._disposers.push(animation.events.on(\"animationended\", function (ev) {\r\n inertia.done();\r\n }));\r\n // Add inertia object\r\n io.inertias.setKey(\"move\", inertia);\r\n };\r\n /**\r\n * Continues resizing of a `resizable` element after it is resized and\r\n * released.\r\n *\r\n * **NOTE:** this is is just a placeholder function. No actual fucntionality\r\n * is implemented, yet.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n */\r\n Interaction.prototype.handleResizeInertia = function (io, pointer) {\r\n // Some day, folks. Some day...\r\n };\r\n /**\r\n * Recalculates element's position and size based on position of\r\n * all its related pointers.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.handleTransform = function (io, ev) {\r\n // Get primary pointer and its respective points\r\n var pointer1 = io.downPointers.getIndex(0);\r\n var point1 = null;\r\n var startPoint1 = null;\r\n if (pointer1) {\r\n point1 = pointer1.point;\r\n startPoint1 = pointer1.startPoint;\r\n }\r\n // Init secondary pointer\r\n var pointer2;\r\n var point2;\r\n var startPoint2;\r\n // Use center of the sprite to simulate \"second\" point of touch\r\n point2 = {\r\n \"x\": io.originalPosition.x,\r\n \"y\": io.originalPosition.y\r\n };\r\n startPoint2 = point2;\r\n // Determine if it's a sinngle pointer or multi\r\n var singlePoint = true;\r\n for (var i = 1; i < io.downPointers.length; i++) {\r\n // Get pointer\r\n var nextPointer = io.downPointers.getIndex(i);\r\n // Doublecheck if it's not the same pointer by comparing original position\r\n if (startPoint1.x != nextPointer.startPoint.x && startPoint1.y != nextPointer.startPoint.y) {\r\n // Several pointers down\r\n singlePoint = false;\r\n // Get second pointer\r\n pointer2 = nextPointer;\r\n point2 = pointer2.point;\r\n startPoint2 = pointer2.startPoint;\r\n // Stop looking\r\n break;\r\n }\r\n }\r\n // Primary touch point moved?\r\n var pointer1Moved = pointer1 && this.moved(pointer1, 0);\r\n // Report DRAG_START if necessary\r\n if (io.draggable && pointer1 && pointer1.dragStartEvents && pointer1.dragStartEvents.length && pointer1Moved) {\r\n if (io.events.isEnabled(\"dragstart\") && !system.isPaused) {\r\n io.events.dispatchImmediately(\"dragstart\", pointer1.dragStartEvents.shift());\r\n }\r\n //delete pointer1.dragStartEvents;\r\n }\r\n // Determine what we do in order of superiority\r\n if (singlePoint && io.draggable) {\r\n // We have only one pointer and the Sprite is draggable\r\n // There's nothing else to be done - just move it\r\n this.handleTransformMove(io, point1, startPoint1, ev, pointer1Moved, pointer1.touch);\r\n if (this.shouldCancelHovers(pointer1) && this.moved(pointer1, this.getHitOption(io, \"hitTolerance\"))) {\r\n this.cancelAllHovers(ev);\r\n }\r\n }\r\n else {\r\n // Check if second touch point moved\r\n var pointer2Moved = pointer2 && this.moved(pointer2, 0);\r\n if ((this.shouldCancelHovers(pointer1) && this.moved(pointer1, this.getHitOption(io, \"hitTolerance\")))\r\n ||\r\n (this.shouldCancelHovers(pointer2) && this.moved(pointer2, this.getHitOption(io, \"hitTolerance\")))) {\r\n this.cancelAllHovers(ev);\r\n }\r\n if (io.draggable && io.resizable) {\r\n //this.handleTransformAll(io, point1, startPoint1, point2, startPoint2, ev, pointer1Moved && pointer2Moved);\r\n this.handleTransformMove(io, point1, startPoint1, ev, pointer1Moved && pointer2Moved, pointer1.touch);\r\n this.handleTransformResize(io, point1, startPoint1, point2, startPoint2, ev, pointer1Moved && pointer2Moved, pointer1.touch);\r\n }\r\n else {\r\n if (io.draggable) {\r\n this.handleTransformMove(io, point1, startPoint1, ev, pointer1Moved, pointer1.touch);\r\n }\r\n if (io.resizable && (!singlePoint || ev.ctrlKey)) {\r\n this.handleTransformResize(io, point1, startPoint1, point2, startPoint2, ev, pointer1Moved && pointer2Moved, pointer1.touch);\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Handles movement of the dragged element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param point Current point of the pointer\r\n * @param startPoint Starting point of the pointer\r\n * @param ev Original event\r\n * @param pointerMoved Did pointer move?\r\n */\r\n Interaction.prototype.handleTransformMove = function (io, point, startPoint, ev, pointerMoved, touch) {\r\n if (pointerMoved) {\r\n if (io.events.isEnabled(\"drag\") && !system.isPaused && (!io.isTouchProtected || !touch)) {\r\n var imev = {\r\n type: \"drag\",\r\n target: io,\r\n event: ev,\r\n shift: {\r\n \"x\": point.x - startPoint.x,\r\n \"y\": point.y - startPoint.y\r\n },\r\n startPoint: startPoint,\r\n point: point,\r\n touch: touch\r\n };\r\n io.events.dispatchImmediately(\"drag\", imev);\r\n }\r\n }\r\n };\r\n /**\r\n * Handles resizing of the element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param point1 Current position of reference point #1\r\n * @param startPoint1 Original position of reference point #1\r\n * @param point2 Current position of reference point #2\r\n * @param startPoint2 Original position of reference point #2\r\n * @param ev Original event\r\n * @param pointerMoved Did pointer move?\r\n */\r\n Interaction.prototype.handleTransformResize = function (io, point1, startPoint1, point2, startPoint2, ev, pointerMoved, touch) {\r\n if (io.events.isEnabled(\"resize\") && !system.isPaused && (!io.isTouchProtected || !touch)) {\r\n var imev = {\r\n type: \"resize\",\r\n target: io,\r\n event: ev,\r\n scale: $math.getScale(point1, startPoint1, point2, startPoint2),\r\n startPoint1: startPoint1,\r\n point1: point1,\r\n startPoint2: startPoint2,\r\n point2: point2,\r\n touch: touch\r\n };\r\n io.events.dispatchImmediately(\"resize\", imev);\r\n }\r\n };\r\n /**\r\n * Handles all the preparations of the element when it starts to be dragged.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.processDragStart = function (io, pointer, ev) {\r\n // Add to draggedObjects\r\n this.transformedObjects.moveValue(io);\r\n if (this.shouldCancelHovers(pointer)) {\r\n this.cancelAllHovers(ev);\r\n }\r\n // Report \"dragstart\"\r\n var imev = {\r\n type: \"dragstart\",\r\n target: io,\r\n event: ev,\r\n touch: pointer ? pointer.touch : false\r\n };\r\n // Log object that we are starting to drag, so we can check against and\r\n // avoid hovers on other objects that might be in the path of movement.\r\n if (pointer) {\r\n pointer.dragTarget = io;\r\n //pointer.startPoint = pointer.point;\r\n }\r\n /**\r\n * If pointer is set we will not fire the event until the pointer has\r\n * actually moved. If it's not set we don't have to wait for anything, so we\r\n * just fire off the event right away.\r\n */\r\n if (pointer && pointer.dragStartEvents) {\r\n pointer.dragStartEvents.push(imev);\r\n }\r\n else {\r\n if (!system.isPaused) {\r\n io.dispatchImmediately(\"dragstart\", imev);\r\n }\r\n }\r\n };\r\n /**\r\n * Finishes up element drag operation.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.processDragStop = function (io, pointer, ev) {\r\n // Pointer set?\r\n if (!pointer) {\r\n pointer = this.getDragPointer(io);\r\n }\r\n // Unset drag object\r\n if (pointer) {\r\n pointer.dragTarget = undefined;\r\n }\r\n // Removed from transformedObjects\r\n this.transformedObjects.removeValue(io);\r\n // Unlock document\r\n //this.unlockDocument();\r\n // Report dragstop\r\n if (!pointer || this.moved(pointer, 0)) {\r\n if (io.events.isEnabled(\"dragstop\") && !system.isPaused) {\r\n var imev = {\r\n type: \"dragstop\",\r\n target: io,\r\n touch: pointer ? pointer.touch : false\r\n };\r\n io.events.dispatchImmediately(\"dragstop\", imev);\r\n }\r\n }\r\n };\r\n /**\r\n * Handles all the preparations of the element when it starts to be resized.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.processResizeStart = function (io, pointer, ev) {\r\n // Add to draggedObjects\r\n this.transformedObjects.moveValue(io);\r\n };\r\n /**\r\n * Finishes up element drag operation.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n */\r\n Interaction.prototype.processResizeStop = function (io, pointer, ev) {\r\n // Removed from transformedObjects\r\n this.transformedObjects.removeValue(io);\r\n };\r\n /**\r\n * ==========================================================================\r\n * Controls for InteractionObjects initiating directly\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Manually triggers drag start on the element. Could be useful in cases\r\n * where tracking or dragging one element can also influence dragging another\r\n * element.\r\n *\r\n * Passing in `pointer` reference is advisable. If not passed in it will try\r\n * to determine which pointer to attach to. However, it's better to specify\r\n * it explicitly.\r\n *\r\n * @param io Element\r\n * @param pointer Pointer\r\n */\r\n Interaction.prototype.dragStart = function (io, pointer) {\r\n if (!pointer) {\r\n pointer = this.getDragPointer(io);\r\n }\r\n if (pointer) {\r\n this.handleDown(io, pointer, pointer.lastDownEvent);\r\n }\r\n };\r\n /**\r\n * Manually ends drag on the element.\r\n *\r\n * @param io Element\r\n * @param pointer Pointer\r\n */\r\n Interaction.prototype.dragStop = function (io, pointer, cancelled) {\r\n if (!pointer) {\r\n pointer = this.getDragPointer(io);\r\n }\r\n if (pointer && !cancelled) {\r\n this.handleGlobalUp(pointer, pointer.lastUpEvent, cancelled);\r\n }\r\n };\r\n /**\r\n * This method uses a fuzzy logic to find the pointer to be used for dragging.\r\n * Beware that this is not a rock-solid solution. If there are a few objects\r\n * being dragged at the same time, you may get unexepected results.\r\n *\r\n * @param io InteractionObject to get pointers from\r\n * @return Pointer currently being used for dragging\r\n */\r\n Interaction.prototype.getDragPointer = function (io) {\r\n if (io) {\r\n // InteractionObject is supplied\r\n // Use it's first down pointer\r\n return io.downPointers.getIndex(0);\r\n }\r\n else if (this.transformedObjects.length) {\r\n // Use first dragged object\r\n return this.getDragPointer(this.transformedObjects.getIndex(0));\r\n }\r\n else {\r\n return undefined;\r\n }\r\n };\r\n /**\r\n * ==========================================================================\r\n * Utils\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Returns pointer id for the given event object.\r\n *\r\n * @param ev Event\r\n * @return Pointer ID\r\n */\r\n Interaction.prototype.getPointerId = function (ev) {\r\n var id = \"\";\r\n if ($type.hasValue(ev.identifier)) {\r\n id = \"\" + ev.identifier;\r\n }\r\n else if ($type.hasValue(ev.pointerId)) {\r\n id = \"\" + ev.pointerId;\r\n }\r\n else {\r\n id = \"m\";\r\n }\r\n return id.replace(\"-\", \"\");\r\n };\r\n /**\r\n * Returns a cursor position of the event.\r\n *\r\n * @param ev Original event\r\n * @return Event point\r\n */\r\n Interaction.prototype.getPointerPoint = function (ev) {\r\n return {\r\n \"x\": ev.clientX,\r\n \"y\": ev.clientY\r\n };\r\n };\r\n /**\r\n * Returns [[Pointer]] object that is associated with the Event.\r\n *\r\n * If no such [[Pointer]] object exists, it is created.\r\n *\r\n * @param ev Event\r\n * @return Pointer\r\n */\r\n Interaction.prototype.getPointer = function (ev) {\r\n // Get pointer id\r\n var id = this.getPointerId(ev);\r\n // Get current coordinates\r\n var point = this.getPointerPoint(ev);\r\n // Look for the pointer in the Dictionary if it maybe already exists\r\n var pointer;\r\n if (this.pointers.hasKey(id)) {\r\n // We already have such pointer\r\n pointer = this.pointers.getKey(id);\r\n // We need this, because Edge reuses pointer ids across touch and mouse\r\n pointer.touch = this.isPointerTouch(ev);\r\n // Reset pointer\r\n //pointer.point = point;\r\n }\r\n else {\r\n // Init pointer\r\n pointer = {\r\n \"id\": id,\r\n //\"touch\": !(ev instanceof MouseEvent) || ((<any>ev).pointerType && (<any>ev).pointerType != \"pointer\"),\r\n //\"touch\": !(ev instanceof MouseEvent) || ((<any>ev).pointerType && (<any>ev).pointerType != \"mouse\"),\r\n \"touch\": this.isPointerTouch(ev),\r\n \"startPoint\": point,\r\n \"startTime\": $time.getTime(),\r\n \"point\": point,\r\n \"track\": [],\r\n \"swipeCanceled\": false,\r\n \"dragStartEvents\": []\r\n };\r\n // Add first breadcrumb\r\n this.addBreadCrumb(pointer, point);\r\n // Add for re-use later\r\n this.pointers.setKey(id, pointer);\r\n }\r\n // Log last event\r\n pointer.lastEvent = ev;\r\n this.lastPointer = pointer;\r\n return pointer;\r\n };\r\n /**\r\n * Determines if pointer event originated from a touch pointer or mouse.\r\n *\r\n * @param ev Original event\r\n * @return Touch pointer?\r\n */\r\n Interaction.prototype.isPointerTouch = function (ev) {\r\n if (typeof Touch !== \"undefined\" && ev instanceof Touch) {\r\n return true;\r\n }\r\n else if (typeof PointerEvent !== \"undefined\" && ev instanceof PointerEvent && $type.hasValue(ev.pointerType)) {\r\n switch (ev.pointerType) {\r\n case \"touch\":\r\n case \"pen\":\r\n case 2:\r\n return true;\r\n case \"mouse\":\r\n case 4:\r\n return false;\r\n default:\r\n return !(ev instanceof MouseEvent);\r\n }\r\n }\r\n else if ($type.hasValue(ev.type)) {\r\n if (ev.type.match(/^mouse/)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n /**\r\n * Resets the poiner to original state, i.e. cleans movement information,\r\n * starting point, etc.\r\n *\r\n * @param pointer Pointer\r\n */\r\n Interaction.prototype.resetPointer = function (pointer, ev) {\r\n // Get current coordinates\r\n var point = this.getPointerPoint(ev);\r\n ;\r\n pointer.startTime = $time.getTime();\r\n pointer.startPoint = { x: point.x, y: point.y };\r\n pointer.point = { x: point.x, y: point.y };\r\n pointer.track = [];\r\n pointer.swipeCanceled = false;\r\n //clearTimeout(pointer.swipeTimeout);\r\n //clearTimeout(pointer.holdTimeout);\r\n };\r\n /**\r\n * Adds a \"breadcrumb\" point to the [[Pointer]] to log its movement path.\r\n *\r\n * @param pointer Pointer\r\n * @param point Point coordinates\r\n */\r\n Interaction.prototype.addBreadCrumb = function (pointer, point) {\r\n pointer.track.push({\r\n \"timestamp\": $time.getTime(),\r\n \"point\": point\r\n });\r\n };\r\n /**\r\n * Prepares the document for various touch-related operations.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Interaction.prototype.lockDocument = function () {\r\n this.prepElement(this.body);\r\n };\r\n /**\r\n * Restores document functionality.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Interaction.prototype.unlockDocument = function () {\r\n if (this.transformedObjects.length == 0) {\r\n this.restoreAllStyles(this.body);\r\n }\r\n };\r\n /**\r\n * Lock element (disable all touch)\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Interaction.prototype.lockElement = function (io) {\r\n this.prepElement(io);\r\n };\r\n /**\r\n * Restores element's functionality.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Interaction.prototype.unlockElement = function (io) {\r\n this.restoreAllStyles(io);\r\n };\r\n /**\r\n * Locks document's wheel scroll.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Interaction.prototype.lockWheel = function () {\r\n window.addEventListener(this._pointerEvents.wheel, this.wheelLockEvent, this._passiveSupported ? { passive: false } : false);\r\n };\r\n /**\r\n * Unlocks document's wheel scroll.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Interaction.prototype.unlockWheel = function () {\r\n window.removeEventListener(this._pointerEvents.wheel, this.wheelLockEvent);\r\n };\r\n /**\r\n * Checks if top element at pointer's position belongs to the SVG.\r\n *\r\n * @ignore Exlude from docs\r\n * @param pointer Pointer\r\n * @param svg The <svg> element\r\n * @param id A unique identifier of the object that is checking for locality\r\n * @return Belongs to SVG\r\n */\r\n Interaction.prototype.isLocalElement = function (pointer, svg, id) {\r\n var cached = this.getCache(\"local_pointer_\" + pointer.id);\r\n if ($type.hasValue(cached)) {\r\n return cached;\r\n }\r\n var doc = ($dom.getRoot(svg) || document);\r\n if (doc.elementFromPoint) {\r\n var target = doc.elementFromPoint(pointer.point.x, pointer.point.y);\r\n var local = target && $dom.contains(svg, target);\r\n this.setCache(\"local_pointer_\" + pointer.id + \"_\" + id, local, 100);\r\n return local;\r\n }\r\n return false;\r\n };\r\n /**\r\n * A function that cancels mouse wheel scroll.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event object\r\n * @return Returns `false` to cancel\r\n */\r\n Interaction.prototype.wheelLockEvent = function (ev) {\r\n ev.preventDefault();\r\n return false;\r\n };\r\n /**\r\n * Applies a set of styles to an element. Stores the original styles so they\r\n * can be restored later.\r\n *\r\n * @ignore\r\n * @param io Element\r\n */\r\n Interaction.prototype.prepElement = function (io) {\r\n var el = io.element;\r\n if (el) {\r\n // Define possible props\r\n var props = [\r\n \"touchAction\", \"webkitTouchAction\", \"MozTouchAction\", \"MSTouchAction\", \"msTouchAction\", \"oTouchAction\",\r\n \"userSelect\", \"webkitUserSelect\", \"MozUserSelect\", \"MSUserSelect\", \"msUserSelect\", \"oUserSelect\",\r\n \"touchSelect\", \"webkitTouchSelect\", \"MozTouchSelect\", \"MSTouchSelect\", \"msTouchSelect\", \"oTouchSelect\",\r\n \"touchCallout\", \"webkitTouchCallout\", \"MozTouchCallout\", \"MSTouchCallout\", \"msTouchCallout\", \"oTouchCallout\",\r\n \"contentZooming\", \"webkitContentZooming\", \"MozContentZooming\", \"MSContentZooming\", \"msContentZooming\", \"oContentZooming\",\r\n \"userDrag\", \"webkitUserDrag\", \"MozUserDrag\", \"MSUserDrag\", \"msUserDrag\", \"oUserDrag\"\r\n ];\r\n for (var i = 0; i < props.length; i++) {\r\n if (props[i] in el.style) {\r\n this.setTemporaryStyle(io, props[i], \"none\");\r\n }\r\n }\r\n // Remove iOS-specific selection;\r\n this.setTemporaryStyle(io, \"tapHighlightColor\", \"rgba(0, 0, 0, 0)\");\r\n //this.setTemporaryStyle(io, \"webkitOverflowScrolling\", \"none\");\r\n }\r\n };\r\n /**\r\n * Restores replaced styles\r\n *\r\n * @ignore\r\n * @param io Element\r\n */\r\n Interaction.prototype.unprepElement = function (io) {\r\n var el = io.element;\r\n if (el) {\r\n // Define possible props\r\n var props = [\r\n \"touchAction\", \"webkitTouchAction\", \"MozTouchAction\", \"MSTouchAction\", \"msTouchAction\", \"oTouchAction\",\r\n \"userSelect\", \"webkitUserSelect\", \"MozUserSelect\", \"MSUserSelect\", \"msUserSelect\", \"oUserSelect\",\r\n \"touchSelect\", \"webkitTouchSelect\", \"MozTouchSelect\", \"MSTouchSelect\", \"msTouchSelect\", \"oTouchSelect\",\r\n \"touchCallout\", \"webkitTouchCallout\", \"MozTouchCallout\", \"MSTouchCallout\", \"msTouchCallout\", \"oTouchCallout\",\r\n \"contentZooming\", \"webkitContentZooming\", \"MozContentZooming\", \"MSContentZooming\", \"msContentZooming\", \"oContentZooming\",\r\n \"userDrag\", \"webkitUserDrag\", \"MozUserDrag\", \"MSUserDrag\", \"msUserDrag\", \"oUserDrag\"\r\n ];\r\n for (var i = 0; i < props.length; i++) {\r\n if (props[i] in el.style) {\r\n this.restoreStyle(io, props[i]);\r\n }\r\n }\r\n // Remove iOS-specific selection;\r\n this.restoreStyle(io, \"tapHighlightColor\");\r\n //this.restoreStyle(io, \"webkitOverflowScrolling\");\r\n }\r\n };\r\n /**\r\n * Returns an option associated with hit events.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param option Option key\r\n * @return Option value\r\n */\r\n Interaction.prototype.getHitOption = function (io, option) {\r\n var res = io.hitOptions[option];\r\n if (typeof res === \"undefined\") {\r\n res = this.hitOptions[option];\r\n }\r\n return res;\r\n };\r\n /**\r\n * Returns an option associated with hover events.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param option Option key\r\n * @return Option value\r\n */\r\n Interaction.prototype.getHoverOption = function (io, option) {\r\n var res = io.hoverOptions[option];\r\n if (typeof res === \"undefined\") {\r\n res = this.hoverOptions[option];\r\n }\r\n return res;\r\n };\r\n /**\r\n * Returns an option associated with swipe events.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param option Option key\r\n * @return Option value\r\n */\r\n Interaction.prototype.getSwipeOption = function (io, option) {\r\n var res = io.swipeOptions[option];\r\n if (typeof res === \"undefined\") {\r\n res = this.swipeOptions[option];\r\n }\r\n return res;\r\n };\r\n /**\r\n * Returns an option for keyboard.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param option Option key\r\n * @return Option value\r\n */\r\n Interaction.prototype.getKeyboardOption = function (io, option) {\r\n var res = io.keyboardOptions[option];\r\n if (typeof res === \"undefined\") {\r\n res = this.keyboardOptions[option];\r\n }\r\n return res;\r\n };\r\n /**\r\n * Returns an option for mouse.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param option Option key\r\n * @return Option value\r\n */\r\n Interaction.prototype.getMouseOption = function (io, option) {\r\n var res = io.mouseOptions[option];\r\n if (typeof res === \"undefined\") {\r\n res = this.mouseOptions[option];\r\n }\r\n return res;\r\n };\r\n /**\r\n * Returns an option associated with inertia.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param type Inertia type\r\n * @param option Option key\r\n * @return Option value\r\n */\r\n Interaction.prototype.getInertiaOption = function (io, type, option) {\r\n var options = io.inertiaOptions.getKey(type);\r\n var res;\r\n if (options && $type.hasValue(options[option])) {\r\n res = options[option];\r\n }\r\n else {\r\n res = this.inertiaOptions.getKey(type)[option];\r\n }\r\n return res;\r\n };\r\n /**\r\n * Stops currently going on inertia. Useful if inertia is currently being\r\n * animated and the object is being interacted with.\r\n *\r\n * @param io Element\r\n */\r\n Interaction.prototype.stopInertia = function (io) {\r\n var x;\r\n var inertias = [\"move\", \"resize\"];\r\n for (var i = 0; i < inertias.length; i++) {\r\n x = inertias[i];\r\n if (io.inertias.hasKey(x)) {\r\n var inertia = io.inertias.getKey(x);\r\n if (inertia) {\r\n inertia.dispose();\r\n //io.inertiaAnimations.removeKey(x);\r\n //this.processDragStop(io);\r\n continue;\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Check if swiping is currently being performed on an object.\r\n *\r\n * @param io Element\r\n * @param pointer Pointer to check\r\n * @return `true` if swiping\r\n */\r\n Interaction.prototype.swiping = function (io, pointer) {\r\n var now = $time.getTime();\r\n if (pointer.swipeCanceled || !io.swipeable) {\r\n return false;\r\n }\r\n else if ((Math.abs(pointer.startPoint.y - pointer.point.y) < this.getSwipeOption(io, \"verticalThreshold\")) &&\r\n (pointer.startTime > (now - this.getSwipeOption(io, \"time\")))) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n /**\r\n * Returns `true` if a successfull swipe action was performed on an element.\r\n *\r\n * @param io Element\r\n * @param pointer Pointer\r\n * @return Swiped?\r\n */\r\n Interaction.prototype.swiped = function (io, pointer) {\r\n var now = $time.getTime();\r\n if (pointer.swipeCanceled) {\r\n return false;\r\n }\r\n else if ((Math.abs(pointer.startPoint.x - pointer.point.x) > this.getSwipeOption(io, \"horizontalThreshold\")) &&\r\n (Math.abs(pointer.startPoint.y - pointer.point.y) < this.getSwipeOption(io, \"verticalThreshold\")) &&\r\n (pointer.startTime > (now - this.getSwipeOption(io, \"time\")))) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n /**\r\n * Applies style to mouse cursor based on its stage in relation to\r\n * [[InteractionObject]].\r\n *\r\n * @ignore Exclude from docs\r\n * @param Element\r\n */\r\n Interaction.prototype.applyCursorOverStyle = function (io) {\r\n // Get sprite's cursor ooptions\r\n var options = io.cursorOptions;\r\n if (!$type.hasValue(options.overStyle)) {\r\n return;\r\n }\r\n // Apply cursor down styles\r\n for (var i = 0; i < options.overStyle.length; i++) {\r\n $dom.setStyle(io.element, options.overStyle[i].property, options.overStyle[i].value);\r\n }\r\n };\r\n /**\r\n * Applies style to mouse cursor based on its stage in relation to\r\n * [[InteractionObject]].\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n */\r\n Interaction.prototype.applyCursorDownStyle = function (io, pointer) {\r\n // Not applicable for touch pointers since they don't display a cursor\r\n if (pointer && pointer.touch) {\r\n return;\r\n }\r\n var downStyle = io.cursorOptions.downStyle;\r\n // Is down?\r\n if (io.downPointers.contains(pointer) && $type.hasValue(downStyle)) {\r\n // Apply cursor down styles\r\n for (var i = 0; i < downStyle.length; i++) {\r\n this.setTemporaryStyle(this.body, downStyle[i].property, downStyle[i].value);\r\n this.setTemporaryStyle(io, downStyle[i].property, downStyle[i].value);\r\n }\r\n }\r\n };\r\n /**\r\n * Restores original cursor style for the element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n */\r\n Interaction.prototype.restoreCursorDownStyle = function (io, pointer) {\r\n // Not applicable for touch pointers since they don't display a cursor\r\n if (pointer && pointer.touch) {\r\n return;\r\n }\r\n var downStyle = io.cursorOptions.downStyle;\r\n // Is down?\r\n if (io.downPointers.contains(pointer) && $type.hasValue(downStyle)) {\r\n // Apply cursor down styles\r\n for (var i = 0; i < downStyle.length; i++) {\r\n this.restoreStyle(this.body, downStyle[i].property);\r\n this.restoreStyle(io, downStyle[i].property);\r\n }\r\n }\r\n };\r\n /**\r\n * Sets style on the body of the document.\r\n *\r\n * @ignore Exclude from docs\r\n * @param style Style definitions\r\n */\r\n Interaction.prototype.setGlobalStyle = function (style) {\r\n var body = getInteraction().body;\r\n var styles = ($type.isArray(style) ? style : [style]);\r\n for (var i = 0; i < styles.length; i++) {\r\n this.setTemporaryStyle(body, styles[i].property, styles[i].value);\r\n }\r\n };\r\n /**\r\n * Restores style on the body of the document.\r\n *\r\n * @ignore Exclude from docs\r\n * @param style Style definitions\r\n */\r\n Interaction.prototype.restoreGlobalStyle = function (style) {\r\n var body = getInteraction().body;\r\n var styles = ($type.isArray(style) ? style : [style]);\r\n for (var i = 0; i < styles.length; i++) {\r\n this.restoreStyle(body, styles[i].property);\r\n }\r\n };\r\n /**\r\n * Checks if element is a non-cahrt element.\r\n *\r\n * @param io InteractionObject\r\n * @return Global element?\r\n */\r\n Interaction.prototype.isGlobalElement = function (io) {\r\n return document.body === io.element;\r\n };\r\n /**\r\n * Checks if pointer has moved since it was created.\r\n *\r\n * @param pointer Pointer\r\n * @param tolerance Tolerance in pixels\r\n * @param minTime Minimum time required for the pointer to be down to be considered moved\r\n * @return `true` if the pointer has moved\r\n */\r\n Interaction.prototype.moved = function (pointer, tolerance, minTime) {\r\n /*// If there was more time, we don't care if cursor actually moved\r\n let duration = $time.getTime() - pointer.startTime;\r\n if ($type.hasValue(minTime) && (minTime > duration)) {\r\n return false;\r\n }*/\r\n if (minTime === void 0) { minTime = 300; }\r\n // That was quick measure shift\r\n var shift = this.getShift(pointer);\r\n return (Math.abs(shift.x) > tolerance) || (Math.abs(shift.y) > tolerance);\r\n };\r\n /**\r\n * Returns if pointer is \"old\", meaning it has been pressing for more than\r\n * X milliseconds.\r\n *\r\n * @ignore\r\n * @param pointer Pointer\r\n * @param minTime Minimum time to consider pointer old\r\n * @return {boolean}\r\n */\r\n Interaction.prototype.old = function (pointer, minTime) {\r\n if (minTime === void 0) { minTime = 300; }\r\n return $time.getTime() - pointer.startTime > minTime;\r\n };\r\n /**\r\n * Returns total a shift in pointers coordinates between its original\r\n * position and now.\r\n *\r\n * @param pointer Pointer\r\n * @return Shift in coordinates (x/y)\r\n */\r\n Interaction.prototype.getShift = function (pointer) {\r\n return {\r\n \"x\": pointer.startPoint.x - pointer.point.x,\r\n \"y\": pointer.startPoint.y - pointer.point.y\r\n };\r\n };\r\n /**\r\n * Returns a point from [[Pointer]]'s move history at a certain timetamp.\r\n *\r\n * @param pointer Pointer\r\n * @param timestamp Timestamp\r\n * @return Point\r\n */\r\n Interaction.prototype.getTrailPoint = function (pointer, timestamp) {\r\n var res;\r\n for (var i = 0; i < pointer.track.length; i++) {\r\n if (pointer.track[i].timestamp >= timestamp) {\r\n res = pointer.track[i];\r\n break;\r\n }\r\n }\r\n return res;\r\n };\r\n /**\r\n * Checks if same pointer already exists in the list.\r\n *\r\n * @param list List to check agains\r\n * @param pointer Pointer\r\n * @return Exists?\r\n */\r\n Interaction.prototype.pointerExists = function (list, pointer) {\r\n var exists = false;\r\n list.each(function (item) {\r\n if (item == pointer) {\r\n return;\r\n }\r\n exists = item.point.x == pointer.point.x && item.point.y == pointer.point.y;\r\n });\r\n return exists;\r\n };\r\n /**\r\n * Returns an [[InteractionObject]] representation of a DOM element.\r\n *\r\n * You can use this on any HTML or SVG element, to add interactive features\r\n * to it.\r\n *\r\n * @param element Element\r\n * @return InteractionObject\r\n */\r\n Interaction.prototype.getInteraction = function (element) {\r\n return new InteractionObject(element);\r\n };\r\n /**\r\n * Sets a style property on an element. Stores original value to be restored\r\n * later with [[restoreStyle]].\r\n *\r\n * @see {@link restoreStyle}\r\n * @param io Element\r\n * @param property Property\r\n * @param value Value\r\n */\r\n Interaction.prototype.setTemporaryStyle = function (io, property, value) {\r\n // Get element\r\n //let el = io.element.tagName == \"g\" ? <SVGSVGElement>io.element.parentNode : io.element;\r\n var el = io.element;\r\n // Save original property if it is set and hasn't been saved before already\r\n if ($type.hasValue(el.style[property]) && !io.replacedStyles.hasKey(property)) {\r\n io.replacedStyles.setKey(property, el.style[property]);\r\n }\r\n // Replace with the new one\r\n $dom.setStyle(el, property, value);\r\n };\r\n /**\r\n * Restores specific style on an element.\r\n *\r\n * @param io Element\r\n * @param property Style property\r\n */\r\n Interaction.prototype.restoreStyle = function (io, property) {\r\n // Reset style\r\n if (io.replacedStyles.hasKey(property)) {\r\n io.element.style[property] = io.replacedStyles.getKey(property);\r\n io.replacedStyles.removeKey(property);\r\n }\r\n else {\r\n delete io.element.style[property];\r\n }\r\n };\r\n /**\r\n * Restore temporarily reset styles on an element.\r\n *\r\n * @param io Element\r\n */\r\n Interaction.prototype.restoreAllStyles = function (io) {\r\n $iter.each(io.replacedStyles.iterator(), function (a) {\r\n var key = a[0];\r\n var value = a[1];\r\n io.element.style[key] = value;\r\n io.replacedStyles.removeKey(key);\r\n });\r\n };\r\n /**\r\n * Disposes this object and cleans up after itself.\r\n */\r\n Interaction.prototype.dispose = function () {\r\n if (!this.isDisposed()) {\r\n _super.prototype.dispose.call(this);\r\n this.restoreAllStyles(this.body);\r\n this.unlockWheel();\r\n }\r\n };\r\n // @ts-ignore Used for debugging\r\n Interaction.prototype.log = function (text, ev, io) {\r\n var show = true;\r\n if (show) {\r\n // Touchlist?\r\n if (ev.changedTouches) {\r\n for (var i = 0; i < ev.changedTouches.length; i++) {\r\n this.logTouch(text, ev.type, ev.changedTouches[i]);\r\n }\r\n return;\r\n }\r\n // Get type\r\n var type = \"\";\r\n if (ev.pointerType) {\r\n switch (ev.pointerType) {\r\n case 2:\r\n type = \"touch\";\r\n break;\r\n case 4:\r\n type = \"mouse\";\r\n break;\r\n default:\r\n type = ev.pointerType;\r\n break;\r\n }\r\n }\r\n else if (typeof TouchEvent != \"undefined\" && ev instanceof TouchEvent) {\r\n type = \"touch\";\r\n }\r\n else if (ev.type.match(/^mouse/)) {\r\n type = \"mouse\";\r\n }\r\n else {\r\n type = \"???\";\r\n }\r\n // Get ID\r\n var id = \"\";\r\n if ($type.hasValue(ev.identifier)) {\r\n id = ev.identifier;\r\n }\r\n else if ($type.hasValue(ev.pointerId)) {\r\n id = ev.pointerId;\r\n }\r\n else {\r\n id = \"???\";\r\n }\r\n if (io) {\r\n console.log(text + \" (\" + io.uid + \") \" + ev.type + \" \" + type + \" \" + id);\r\n }\r\n else {\r\n console.log(text + \" \" + ev.type + \" \" + type + \" \" + id);\r\n }\r\n }\r\n };\r\n /**\r\n * Checks whether there are currently any objects being transformed (dragged\r\n * or resized).\r\n *\r\n * If `except` is set, that object will be ignored.\r\n *\r\n * @since 4.9.3\r\n * @param except Ignore this object(s)\r\n * @return Objects are being transformed\r\n */\r\n Interaction.prototype.areTransformed = function (except) {\r\n var count = this.transformedObjects.length;\r\n if (except) {\r\n var ex = $type.isArray(except) ? except : [except];\r\n for (var i = 0; i < ex.length; i++) {\r\n if (this.transformedObjects.contains(ex[i])) {\r\n count--;\r\n }\r\n }\r\n }\r\n return count > 0;\r\n };\r\n /**\r\n * Log.\r\n */\r\n Interaction.prototype.logTouch = function (text, type, ev) {\r\n console.log(text + \" \" + type + \" \" + \"touch\" + \" \" + ev.identifier);\r\n };\r\n Object.defineProperty(Interaction, \"passiveSupported\", {\r\n /**\r\n * Indicates if passive mode options is supported by this browser.\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (this._passiveSupported == null) {\r\n // Check for passive mode support\r\n try {\r\n var options_1 = Object.defineProperty({}, \"passive\", {\r\n get: function () {\r\n _this._passiveSupported = true;\r\n }\r\n });\r\n window.addEventListener(\"test\", options_1, options_1);\r\n window.removeEventListener(\"test\", options_1, options_1);\r\n }\r\n catch (err) {\r\n this._passiveSupported = false;\r\n }\r\n }\r\n return this._passiveSupported;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Interaction;\r\n}(BaseObjectEvents));\r\nexport { Interaction };\r\nvar interaction = null;\r\n/**\r\n * Returns a single unified global instance of [[Interaction]].\r\n *\r\n * All code should use this function, rather than create their own instances\r\n * of [[Interaction]].\r\n */\r\nexport function getInteraction() {\r\n if (interaction == null) {\r\n interaction = new Interaction();\r\n }\r\n return interaction;\r\n}\r\n//# sourceMappingURL=Interaction.js.map","/**\r\n * Functionality related simulating of dragging of elements using keyboard.\r\n */\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { getInteraction } from \"./Interaction\";\r\nimport { system } from \"../System\";\r\nimport * as $array from \"../utils/Array\";\r\n/**\r\n * [[InteractionKeyboardObject]] is used to simulate dragging of the `draggable`\r\n * element using keyboard arrows.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nvar InteractionKeyboardObject = /** @class */ (function () {\r\n /**\r\n * Constructor.\r\n *\r\n * @param io An InteractionObject\r\n */\r\n function InteractionKeyboardObject(io, ev) {\r\n /**\r\n * Indicates if this object has already been deleted. Any\r\n * destruction/disposal code should take this into account when deciding\r\n * wheter to run potentially costly disposal operations if they already have\r\n * been run.\r\n */\r\n this._disposed = false;\r\n /**\r\n * Indicates direction of current horizontal movement.\r\n *\r\n * 0 - not moving horizontally\r\n * 1 - moving right\r\n * -1 - moving left\r\n */\r\n this.directionX = 0;\r\n /**\r\n * Indicates direction of current vertical movement.\r\n *\r\n * 0 - not moving vertically\r\n * 1 - moving down\r\n * -1 - moving up\r\n */\r\n this.directionY = 0;\r\n this.interaction = io;\r\n this.keyboardEvent = ev;\r\n this._startedOn = new Date().getTime();\r\n getInteraction().processDragStart(io);\r\n system.animations.push(this);\r\n this.update();\r\n }\r\n /**\r\n * It's an update method which is called by the system if\r\n * [[InteractionObject]] is used as animation.\r\n *\r\n * This will update coordinates of the element based on the movement\r\n * directions.\r\n */\r\n InteractionKeyboardObject.prototype.update = function () {\r\n // Init and get settings\r\n var io = this.interaction;\r\n var speed = getInteraction().getKeyboardOption(io, \"speed\"), accelleration = getInteraction().getKeyboardOption(io, \"accelleration\"), accellerationDelay = getInteraction().getKeyboardOption(io, \"accellerationDelay\"), shift = {\r\n x: 0,\r\n y: 0\r\n };\r\n // If SHIFT key is pressed we slash speed by half and disable accelleration\r\n if (this.keyboardEvent.shiftKey) {\r\n speed *= 0.5;\r\n accelleration = 1;\r\n }\r\n // If CTRL is pressed we increase speed by x2\r\n else if (this.keyboardEvent.ctrlKey) {\r\n speed *= 2;\r\n }\r\n // Get elapsed time\r\n var ms = new Date().getTime() - this._startedOn;\r\n var accelleratedMs = ms - accellerationDelay;\r\n // Add accellerated movement\r\n if ((accelleration > 0) && (accelleratedMs > 0)) {\r\n var accellerationFactor = ms / accellerationDelay;\r\n ms = accellerationDelay;\r\n shift.x += this.directionX * (speed * accelleration * accellerationFactor * accelleratedMs);\r\n shift.y += this.directionY * (speed * accelleration * accellerationFactor * accelleratedMs);\r\n }\r\n // Calculate position\r\n shift.x += this.directionX * (speed * ms);\r\n shift.y += this.directionY * (speed * ms);\r\n // Simulate move on Interaction\r\n getInteraction().handleTransformMove(io, shift, { x: 0, y: 0 }, this.keyboardEvent, true, false);\r\n };\r\n /**\r\n * Returns if this object has been already been disposed.\r\n *\r\n * @return Is disposed?\r\n */\r\n InteractionKeyboardObject.prototype.isDisposed = function () {\r\n return this._disposed;\r\n };\r\n /**\r\n * Disposes this object. Removes from system animations.\r\n */\r\n InteractionKeyboardObject.prototype.dispose = function () {\r\n if (!this._disposed) {\r\n getInteraction().processDragStop(this.interaction);\r\n $array.remove(system.animations, this);\r\n }\r\n };\r\n return InteractionKeyboardObject;\r\n}());\r\nexport { InteractionKeyboardObject };\r\n//# sourceMappingURL=InteractionKeyboardObject.js.map","/**\r\n * Interaction Object module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { InteractionObjectEventDispatcher } from \"./InteractionObjectEvents\";\r\nimport { BaseObjectEvents } from \"../Base\";\r\nimport { List } from \"../utils/List\";\r\nimport { Dictionary, DictionaryDisposer } from \"../utils/Dictionary\";\r\nimport { getInteraction } from \"./Interaction\";\r\nimport * as $type from \"../utils/Type\";\r\n/**\r\n * Re-exports\r\n */\r\nexport { InteractionObjectEventDispatcher };\r\n/**\r\n * Interaction object represents an object that is subject for any kind of\r\n * interaction with it with any input devices: mouse, touch or keyboard.\r\n *\r\n * Any DOM element can be wrapped into an Internaction object which in turn\r\n * enables attaching various interaction events to it, such as: hit, drag,\r\n * swipe, etc.\r\n *\r\n * To create an [[InteractionObject]] out of a [[Sprite]], use:\r\n * `interaction.getInteractionFromSprite(sprite: Sprite)`\r\n *\r\n * To create an [[InteractionObject]] out of a a regular element:\r\n * `interaction.getInteraction(element: HTMLElement)`\r\n */\r\nvar InteractionObject = /** @class */ (function (_super) {\r\n __extends(InteractionObject, _super);\r\n /**\r\n * Constructor\r\n */\r\n function InteractionObject(element) {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * @ignore\r\n * An [[EventDispatcher]] instance which holds events for this object\r\n */\r\n _this._eventDispatcher = new InteractionObjectEventDispatcher(_this);\r\n /**\r\n * Collection of Disposers for various events. (so that those get disposed\r\n * when the whole InteractionObject is disposed)\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this.eventDisposers = new Dictionary();\r\n /**\r\n * A [[Dictionary]] that holds temporarily replaced original style values for\r\n * HTML element, so that they can be restored when the functionality that\r\n * replaced them is done.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this.replacedStyles = new Dictionary();\r\n _this._clickable = false;\r\n _this._contextMenuDisabled = false;\r\n _this._hoverable = false;\r\n _this._trackable = false;\r\n _this._draggable = false;\r\n _this._swipeable = false;\r\n _this._resizable = false;\r\n _this._wheelable = false;\r\n _this._inert = false;\r\n /**\r\n * Is element currently hovered?\r\n */\r\n _this._isHover = false;\r\n /**\r\n * Was this element hovered via pointer or is it just \"pretenting\" to be\r\n * hovered.\r\n *\r\n * @ignore\r\n */\r\n _this.isRealHover = false;\r\n /**\r\n * Is the element hovered by touch pointer?\r\n */\r\n _this._isHoverByTouch = false;\r\n /**\r\n * Has element got any pointers currently pressing down on it?\r\n */\r\n _this._isDown = false;\r\n /**\r\n * Does element have focus?\r\n */\r\n _this._isFocused = false;\r\n /**\r\n * Is element currently protected from touch interactions?\r\n */\r\n _this._isTouchProtected = false;\r\n /**\r\n * Options used for inertia functionality.\r\n */\r\n _this._inertiaOptions = new Dictionary();\r\n /**\r\n * A collection of different inertia types, currently playing out.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this.inertias = new Dictionary();\r\n /**\r\n * Click/tap options.\r\n */\r\n _this._hitOptions = {};\r\n /**\r\n * Hover options.\r\n */\r\n _this._hoverOptions = {};\r\n /**\r\n * Swipe gesture options.\r\n */\r\n _this._swipeOptions = {};\r\n /**\r\n * Keyboard options.\r\n */\r\n _this._keyboardOptions = {};\r\n /**\r\n * Mouse options.\r\n */\r\n _this._mouseOptions = {};\r\n /**\r\n * Cursor options.\r\n */\r\n _this._cursorOptions = {\r\n \"defaultStyle\": [{\r\n \"property\": \"cursor\",\r\n \"value\": \"default\"\r\n }]\r\n };\r\n _this._disposers.push(_this._eventDispatcher);\r\n _this._element = element;\r\n _this.className = \"InteractionObject\";\r\n _this._disposers.push(new DictionaryDisposer(_this.inertias));\r\n _this._disposers.push(new DictionaryDisposer(_this.eventDisposers));\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n ;\r\n Object.defineProperty(InteractionObject.prototype, \"events\", {\r\n /**\r\n * An [[EventDispatcher]] instance which holds events for this object\r\n */\r\n get: function () {\r\n return this._eventDispatcher;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"isHover\", {\r\n /**\r\n * @return Hovered?\r\n */\r\n get: function () {\r\n return this._isHover;\r\n },\r\n /**\r\n * Indicates if this element is currently hovered.\r\n *\r\n * @param value Hovered?\r\n */\r\n set: function (value) {\r\n if (this.isHover != value) {\r\n this._isHover = value;\r\n if (value) {\r\n getInteraction().overObjects.moveValue(this);\r\n }\r\n else {\r\n this.isRealHover = false;\r\n getInteraction().overObjects.removeValue(this);\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"isHoverByTouch\", {\r\n /**\r\n * @return Hovered?\r\n */\r\n get: function () {\r\n return this._isHoverByTouch;\r\n },\r\n /**\r\n * Indicates if this element is currently hovered.\r\n *\r\n * @param value Hovered?\r\n */\r\n set: function (value) {\r\n if (this.isHoverByTouch != value) {\r\n this._isHoverByTouch = value;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"overPointers\", {\r\n /**\r\n * A list of pointers currently over the element.\r\n *\r\n * @see {@link Pointer}\r\n * @return List if pointers currently hovering the element\r\n */\r\n get: function () {\r\n if (!this._overPointers) {\r\n this._overPointers = new List();\r\n }\r\n return this._overPointers;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"isDown\", {\r\n /**\r\n * @return Has down pointers?\r\n */\r\n get: function () {\r\n return this._isDown;\r\n },\r\n /**\r\n * Indicates if this element has currently any pointers pressing on it.\r\n *\r\n * @param value Has down pointers?\r\n */\r\n set: function (value) {\r\n if (this.isDown != value) {\r\n this._isDown = value;\r\n if (value) {\r\n getInteraction().downObjects.moveValue(this);\r\n }\r\n else {\r\n getInteraction().downObjects.removeValue(this);\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"downPointers\", {\r\n /**\r\n * A list of pointers currently pressing down on this element.\r\n *\r\n * @see {@link Pointer}\r\n * @return List of down pointers\r\n */\r\n get: function () {\r\n if (!this._downPointers) {\r\n this._downPointers = new List();\r\n }\r\n return this._downPointers;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"isFocused\", {\r\n /**\r\n * @return Focused?\r\n */\r\n get: function () {\r\n return this._isFocused;\r\n },\r\n /**\r\n * Indicates if this element is currently focused.\r\n *\r\n * @param value Focused?\r\n */\r\n set: function (value) {\r\n if (this.isFocused != value) {\r\n this._isFocused = value;\r\n if (value) {\r\n getInteraction().focusedObject = this;\r\n }\r\n else {\r\n getInteraction().focusedObject = undefined;\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"isTouchProtected\", {\r\n /**\r\n * @ignore\r\n * @return Touch protected?\r\n */\r\n get: function () {\r\n return this._isTouchProtected;\r\n },\r\n /**\r\n * Indicates if this element is currently being protected from touch actions.\r\n *\r\n * @ignore\r\n * @param value Touch protected?\r\n */\r\n set: function (value) {\r\n if (this._isTouchProtected != value) {\r\n this._isTouchProtected = value;\r\n if (value) {\r\n getInteraction().unprepElement(this);\r\n }\r\n else if (this.draggable || this.swipeable || this.trackable || this.resizable) {\r\n getInteraction().prepElement(this);\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"clickable\", {\r\n /**\r\n * @return Clickable?\r\n */\r\n get: function () {\r\n return this._clickable;\r\n },\r\n /**\r\n * Is element clickable? Clickable elements will generate \"hit\" events when\r\n * clicked or tapped.\r\n *\r\n * @param value Clickable?\r\n */\r\n set: function (value) {\r\n if (this._clickable !== value) {\r\n this._clickable = value;\r\n getInteraction().processClickable(this);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"contextMenuDisabled\", {\r\n /**\r\n * @return Context menu disabled?\r\n */\r\n get: function () {\r\n return this._contextMenuDisabled;\r\n },\r\n /**\r\n * Should element prevent context menu to be displayed, e.g. when\r\n * right-clicked?\r\n *\r\n * @default false\r\n * @param value Context menu disabled?\r\n */\r\n set: function (value) {\r\n if (this._contextMenuDisabled !== value) {\r\n this._contextMenuDisabled = value;\r\n getInteraction().processContextMenu(this);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"hoverable\", {\r\n /**\r\n * @return Hoverable?\r\n */\r\n get: function () {\r\n return this._hoverable;\r\n },\r\n /**\r\n * Indicates if element should generate hover events.\r\n *\r\n * @param value Hoverable?\r\n */\r\n set: function (value) {\r\n if (this._hoverable !== value) {\r\n this._hoverable = value;\r\n getInteraction().processHoverable(this);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"trackable\", {\r\n /**\r\n * @return Track pointer?\r\n */\r\n get: function () {\r\n return this._trackable;\r\n },\r\n /**\r\n * Indicates if pointer movement over element should be tracked.\r\n *\r\n * @param value Track pointer?\r\n */\r\n set: function (value) {\r\n if (this._trackable !== value) {\r\n this._trackable = value;\r\n getInteraction().processTrackable(this);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"draggable\", {\r\n /**\r\n * @return Draggable?\r\n */\r\n get: function () {\r\n return this._draggable;\r\n },\r\n /**\r\n * Indicates if element can be dragged. (moved)\r\n *\r\n * @param value Draggable?\r\n */\r\n set: function (value) {\r\n if (this._draggable !== value) {\r\n this._draggable = value;\r\n getInteraction().processDraggable(this);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"swipeable\", {\r\n /**\r\n * @return Track swipe?\r\n */\r\n get: function () {\r\n return this._swipeable;\r\n },\r\n /**\r\n * Indicates whether element should react to swipe gesture.\r\n *\r\n * @param value Track swipe?\r\n */\r\n set: function (value) {\r\n if (this._swipeable !== value) {\r\n this._swipeable = value;\r\n getInteraction().processSwipeable(this);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"resizable\", {\r\n /**\r\n * @return Resizeble?\r\n */\r\n get: function () {\r\n return this._resizable;\r\n },\r\n /**\r\n * Indicates if element can be resized.\r\n *\r\n * @param value Resizeable?\r\n */\r\n set: function (value) {\r\n if (this._resizable !== value) {\r\n this._resizable = value;\r\n getInteraction().processResizable(this);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"wheelable\", {\r\n /**\r\n * @return Track wheel?\r\n */\r\n get: function () {\r\n return this._wheelable;\r\n },\r\n /**\r\n * Indicates whether track moouse wheel rotation over element.\r\n *\r\n * @param value Track wheel?\r\n */\r\n set: function (value) {\r\n if (this._wheelable !== value) {\r\n this._wheelable = value;\r\n getInteraction().processWheelable(this);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"inert\", {\r\n /**\r\n * @return Inert?\r\n */\r\n get: function () {\r\n return this._inert;\r\n },\r\n /**\r\n * Indicates if element is inert, i.e. if it should carry movement momentum\r\n * after it is dragged and released.\r\n *\r\n * @param value Inert?\r\n */\r\n set: function (value) {\r\n if (this._inert !== value) {\r\n this._inert = value;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"focusable\", {\r\n /**\r\n * @return Focusable?\r\n */\r\n get: function () {\r\n return this._focusable;\r\n },\r\n /**\r\n * Indicates if element can gain focus.\r\n *\r\n * @param value Focusable?\r\n */\r\n set: function (value) {\r\n if (this._focusable !== value) {\r\n this._focusable = value;\r\n if (this._focusable && this.tabindex == -1) {\r\n this._tabindex = 1;\r\n }\r\n getInteraction().processFocusable(this);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"tabindex\", {\r\n /**\r\n * @return Tab index\r\n */\r\n get: function () {\r\n return $type.getValueDefault(this._tabindex, -1);\r\n },\r\n /**\r\n * Element's tab index.\r\n *\r\n * @param value Tab index\r\n */\r\n set: function (value) {\r\n if (this._tabindex !== value) {\r\n this._tabindex = value;\r\n if (value > -1) {\r\n this.focusable = true;\r\n }\r\n getInteraction().processFocusable(this);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"element\", {\r\n /**\r\n * @return Element\r\n */\r\n get: function () {\r\n return this._element;\r\n },\r\n /**\r\n * A DOM element associated with this element.\r\n *\r\n * @param element Element\r\n */\r\n set: function (element) {\r\n this._element = element;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"originalPosition\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Position.\r\n */\r\n get: function () {\r\n return this._originalPosition || { x: 0, y: 0 };\r\n },\r\n /**\r\n * Element's original position.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Position\r\n */\r\n set: function (value) {\r\n this._originalPosition = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"originalScale\", {\r\n /**\r\n * @return Scale\r\n */\r\n get: function () {\r\n return $type.getValueDefault(this._originalScale, 1);\r\n },\r\n /**\r\n * Element's original scale.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Scale\r\n */\r\n set: function (value) {\r\n if (this._originalScale !== value) {\r\n this._originalScale = value;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"originalAngle\", {\r\n /**\r\n * @return Angle\r\n */\r\n get: function () {\r\n return $type.getValueDefault(this._originalAngle, 0);\r\n },\r\n /**\r\n * Element's original angle.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Angle\r\n */\r\n set: function (value) {\r\n if (this._originalAngle !== value) {\r\n this._originalAngle = value;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"inertiaOptions\", {\r\n /**\r\n * @return Options\r\n */\r\n get: function () {\r\n if (this.sprite && this.sprite._adapterO) {\r\n return this.sprite._adapterO.apply(\"inertiaOptions\", this._inertiaOptions);\r\n }\r\n else {\r\n return this._inertiaOptions;\r\n }\r\n },\r\n /**\r\n * Inertia options.\r\n *\r\n * @param value Options\r\n */\r\n set: function (value) {\r\n this._inertiaOptions = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"hitOptions\", {\r\n /**\r\n * @return Options\r\n */\r\n get: function () {\r\n if (this.sprite && this.sprite._adapterO) {\r\n return this.sprite._adapterO.apply(\"hitOptions\", this._hitOptions);\r\n }\r\n else {\r\n return this._hitOptions;\r\n }\r\n },\r\n /**\r\n * Hit options.\r\n *\r\n * @param value Options\r\n */\r\n set: function (value) {\r\n this._hitOptions = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"hoverOptions\", {\r\n /**\r\n * @return Options\r\n */\r\n get: function () {\r\n if (this.sprite && this.sprite._adapterO) {\r\n return this.sprite._adapterO.apply(\"hoverOptions\", this._hoverOptions);\r\n }\r\n else {\r\n return this._hoverOptions;\r\n }\r\n },\r\n /**\r\n * Hover options.\r\n *\r\n * @param value Options\r\n */\r\n set: function (value) {\r\n this._hoverOptions = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"swipeOptions\", {\r\n /**\r\n * @return Options\r\n */\r\n get: function () {\r\n if (this.sprite && this.sprite._adapterO) {\r\n return this.sprite._adapterO.apply(\"swipeOptions\", this._swipeOptions);\r\n }\r\n else {\r\n return this._swipeOptions;\r\n }\r\n },\r\n /**\r\n * Swipe options.\r\n *\r\n * @param value Options\r\n */\r\n set: function (value) {\r\n this._swipeOptions = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"keyboardOptions\", {\r\n /**\r\n * @return Options\r\n */\r\n get: function () {\r\n if (this.sprite && this.sprite._adapterO) {\r\n return this.sprite._adapterO.apply(\"keyboardOptions\", this._keyboardOptions);\r\n }\r\n else {\r\n return this._keyboardOptions;\r\n }\r\n },\r\n /**\r\n * Keyboard options.\r\n *\r\n * @param value Options\r\n */\r\n set: function (value) {\r\n this._keyboardOptions = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"mouseOptions\", {\r\n /**\r\n * @return Options\r\n */\r\n get: function () {\r\n if (this.sprite && this.sprite._adapterO) {\r\n return this.sprite._adapterO.apply(\"mouseOptions\", this._mouseOptions);\r\n }\r\n else {\r\n return this._mouseOptions;\r\n }\r\n },\r\n /**\r\n * Mouse options.\r\n *\r\n * Enables controlling options related to the mouse, for example sensitivity\r\n * of its mouse wheel.\r\n *\r\n * E.g. the below will reduce chart's wheel-zoom speed to half its default\r\n * speed:\r\n *\r\n * ```TypeScript\r\n * chart.plotContainer.mouseOptions.sensitivity = 0.5;\r\n * ```\r\n * ```JavaScript\r\n * chart.plotContainer.mouseOptions.sensitivity = 0.5;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"plotContainer\": {\r\n * \"mouseOptions\": {\r\n * \"sensitivity\": 0.5\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * @since 4.5.14\r\n * @param value Options\r\n */\r\n set: function (value) {\r\n this._mouseOptions = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InteractionObject.prototype, \"cursorOptions\", {\r\n /**\r\n * @return Options\r\n */\r\n get: function () {\r\n if (this.sprite && this.sprite._adapterO) {\r\n return this.sprite._adapterO.apply(\"cursorOptions\", this._cursorOptions);\r\n }\r\n else {\r\n return this._cursorOptions;\r\n }\r\n },\r\n /**\r\n * Cursor options.\r\n *\r\n * @param value Options\r\n */\r\n set: function (value) {\r\n this._cursorOptions = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies all properties and related assets from another object of the same\r\n * type.\r\n *\r\n * @param source Source object\r\n */\r\n InteractionObject.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.inertiaOptions = source.inertiaOptions;\r\n this.hitOptions = source.hitOptions;\r\n this.hoverOptions = source.hoverOptions;\r\n this.swipeOptions = source.swipeOptions;\r\n this.keyboardOptions = source.keyboardOptions;\r\n this.cursorOptions = source.cursorOptions;\r\n this.contextMenuDisabled = source.contextMenuDisabled;\r\n getInteraction().applyCursorOverStyle(this);\r\n };\r\n /**\r\n * @ignore Exclude from docs\r\n */\r\n InteractionObject.prototype.setEventDisposer = function (key, value, f) {\r\n var disposer = this.eventDisposers.getKey(key);\r\n if (value) {\r\n if (disposer == null) {\r\n this.eventDisposers.setKey(key, f());\r\n }\r\n }\r\n else {\r\n if (disposer != null) {\r\n disposer.dispose();\r\n this.eventDisposers.removeKey(key);\r\n }\r\n }\r\n };\r\n /**\r\n * Disposes object.\r\n */\r\n InteractionObject.prototype.dispose = function () {\r\n _super.prototype.dispose.call(this);\r\n // Remove from all interaction registries\r\n var interaction = getInteraction();\r\n interaction.overObjects.removeValue(this);\r\n interaction.downObjects.removeValue(this);\r\n interaction.trackedObjects.removeValue(this);\r\n interaction.transformedObjects.removeValue(this);\r\n // Unlock document wheel\r\n if (this.isHover && this.wheelable) {\r\n interaction.unlockWheel();\r\n }\r\n if (interaction.focusedObject === this) {\r\n interaction.focusedObject = undefined;\r\n }\r\n };\r\n return InteractionObject;\r\n}(BaseObjectEvents));\r\nexport { InteractionObject };\r\n//# sourceMappingURL=InteractionObject.js.map","import { __extends } from \"tslib\";\r\nimport { TargetedEventDispatcher } from \"../utils/EventDispatcher\";\r\nimport { MultiDisposer, CounterDisposer } from \"../utils/Disposer\";\r\n/**\r\n * Represents an Event Dispatcher for [[InteractionObject]].\r\n *\r\n * Besides regular [[EventDispatcher]] functionality it adds new events with\r\n * direct application to DOM nodes. Primarily used to handle keyboard events,\r\n * but can turn into something else moving forward.\r\n */\r\nvar InteractionObjectEventDispatcher = /** @class */ (function (_super) {\r\n __extends(InteractionObjectEventDispatcher, _super);\r\n function InteractionObjectEventDispatcher() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n /**\r\n * Holds a list of Disposers for DOM events added.\r\n */\r\n _this._domEvents = {};\r\n return _this;\r\n }\r\n /**\r\n * Adds a DOM event and returns Disposer.\r\n *\r\n * @return Disposer\r\n */\r\n InteractionObjectEventDispatcher.prototype._addDOMEvent = function (type, key, listener, context) {\r\n var _this = this;\r\n if (!this._domEvents[type]) {\r\n var callback_1 = function (e) {\r\n listener.call(context, key, e);\r\n };\r\n this.target.element.addEventListener(type, callback_1, false);\r\n this._domEvents[type] = new CounterDisposer(function () {\r\n delete _this._domEvents[type];\r\n _this.target.element.removeEventListener(type, callback_1, false);\r\n });\r\n }\r\n return this._domEvents[type].increment();\r\n };\r\n InteractionObjectEventDispatcher.prototype._dispatchKeyboardEvent = function (key, ev) {\r\n // TODO use this.dispatchImmediately ?\r\n if (this.target.events.isEnabled(key)) {\r\n this.target.events.dispatchImmediately(key, {\r\n type: key,\r\n target: this.target,\r\n event: ev\r\n });\r\n }\r\n };\r\n InteractionObjectEventDispatcher.prototype._on = function (once, type, callback, context, shouldClone, dispatch) {\r\n var info = _super.prototype._on.call(this, once, type, callback, context, shouldClone, dispatch);\r\n var disposers = [info.disposer];\r\n switch (type) {\r\n case \"hit\":\r\n case \"doublehit\":\r\n case \"rightclick\":\r\n case \"down\":\r\n case \"up\":\r\n this.target.clickable = true;\r\n break;\r\n case \"drag\":\r\n case \"dragstart\":\r\n case \"dragstop\":\r\n this.target.draggable = true;\r\n break;\r\n case \"track\":\r\n this.target.trackable = true;\r\n break;\r\n case \"resize\":\r\n this.target.resizable = true;\r\n break;\r\n case \"swipe\":\r\n case \"swipeleft\":\r\n case \"swiperight\":\r\n this.target.swipeable = true;\r\n break;\r\n case \"wheel\":\r\n case \"wheelup\":\r\n case \"wheeldown\":\r\n case \"wheelleft\":\r\n case \"wheelright\":\r\n this.target.wheelable = true;\r\n break;\r\n case \"over\":\r\n case \"out\":\r\n this.target.hoverable = true;\r\n break;\r\n case \"focus\":\r\n case \"blur\":\r\n case \"focusin\":\r\n case \"focusout\":\r\n this.target.focusable = true;\r\n break;\r\n case \"keydown\":\r\n disposers.push(this._addDOMEvent(type, type, this._dispatchKeyboardEvent, this));\r\n break;\r\n case \"keyup\":\r\n disposers.push(this._addDOMEvent(type, type, this._dispatchKeyboardEvent, this));\r\n break;\r\n case \"keypress\":\r\n disposers.push(this._addDOMEvent(type, type, this._dispatchKeyboardEvent, this));\r\n break;\r\n case \"input\":\r\n disposers.push(this._addDOMEvent(type, type, this._dispatchKeyboardEvent, this));\r\n break;\r\n }\r\n info.disposer = new MultiDisposer(disposers);\r\n return info;\r\n };\r\n return InteractionObjectEventDispatcher;\r\n}(TargetedEventDispatcher));\r\nexport { InteractionObjectEventDispatcher };\r\n//# sourceMappingURL=InteractionObjectEvents.js.map","/**\r\n * Mouse-related functionality\r\n */\r\n/**\r\n * Defines static methods that hold style list for various mouse cursor styles,\r\n * maintaining browser compatibility.\r\n */\r\nvar MouseCursorStyle = /** @class */ (function () {\r\n function MouseCursorStyle() {\r\n }\r\n /**\r\n * Styles for \"grab\" mouse cursor.\r\n */\r\n MouseCursorStyle.grab = [{\r\n \"property\": \"cursor\",\r\n \"value\": \"move\"\r\n }, {\r\n \"property\": \"cursor\",\r\n \"value\": \"grab\"\r\n }, {\r\n \"property\": \"cursor\",\r\n \"value\": \"-webkit-grab\"\r\n }];\r\n /**\r\n * Styles for \"grabbing\" mouse cursor.\r\n */\r\n MouseCursorStyle.grabbing = [{\r\n \"property\": \"cursor\",\r\n \"value\": \"move\"\r\n }, {\r\n \"property\": \"cursor\",\r\n \"value\": \"grabbing\"\r\n }, {\r\n \"property\": \"cursor\",\r\n \"value\": \"-webkit-grabbing\"\r\n }];\r\n /**\r\n * Styles for \"pointer\" mouse cursor. (usually used for links)\r\n */\r\n MouseCursorStyle.pointer = [{\r\n \"property\": \"cursor\",\r\n \"value\": \"pointer\"\r\n }];\r\n /**\r\n * Styles for default mouse cursor. (browser determines style)\r\n */\r\n MouseCursorStyle.default = [{\r\n \"property\": \"cursor\",\r\n \"value\": \"default\"\r\n }];\r\n /**\r\n * Styles for horizontal bi-directional resize mouse cursor.\r\n */\r\n MouseCursorStyle.horizontalResize = [{\r\n \"property\": \"cursor\",\r\n \"value\": \"ew-resize\"\r\n }];\r\n /**\r\n * Styles for vertical bi-directional mouse cursor.\r\n */\r\n MouseCursorStyle.verticalResize = [{\r\n \"property\": \"cursor\",\r\n \"value\": \"ns-resize\"\r\n }];\r\n /**\r\n * Styles for \"no-allowed\" cursor.\r\n * @since 4.7.15\r\n */\r\n MouseCursorStyle.notAllowed = [{\r\n \"property\": \"cursor\",\r\n \"value\": \"not-allowed\"\r\n }];\r\n /**\r\n * Styles for \"text\" cursor.\r\n * @since 4.9.12\r\n */\r\n MouseCursorStyle.text = [{\r\n \"property\": \"cursor\",\r\n \"value\": \"text\"\r\n }];\r\n return MouseCursorStyle;\r\n}());\r\nexport { MouseCursorStyle };\r\n//# sourceMappingURL=Mouse.js.map","/**\r\n * [[AMElement]] represents any SVG element and related functionality.\r\n */\r\nimport * as $dom from \"../utils/DOM\";\r\nimport * as $object from \"../utils/Object\";\r\nimport * as $type from \"../utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A base class for all SVG elements. Provides low-level DOM functionality.\r\n *\r\n * All visual elements extend this class.\r\n */\r\nvar AMElement = /** @class */ (function () {\r\n /**\r\n * Constructor creates a new element or uses the one that was passed in.\r\n *\r\n * @param element Element reference node type\r\n */\r\n function AMElement(element) {\r\n /**\r\n * Indicates if the element was already disposed.\r\n */\r\n this._isDisposed = false;\r\n /**\r\n * Current X coordinate.\r\n */\r\n this._x = 0;\r\n /**\r\n * Current Y coordinate.\r\n */\r\n this._y = 0;\r\n /**\r\n *\r\n */\r\n this._rotationY = 0;\r\n /**\r\n *\r\n */\r\n this._rotationX = 0;\r\n /**\r\n * Current rotation.\r\n */\r\n this._rotation = 0;\r\n /**\r\n * Current scale.\r\n */\r\n this._scale = 1;\r\n if (typeof element === \"string\") {\r\n this.node = document.createElementNS($dom.SVGNS, element);\r\n }\r\n else {\r\n this.node = element;\r\n }\r\n }\r\n /**\r\n * Removes element's node from DOM.\r\n */\r\n AMElement.prototype.removeNode = function () {\r\n if (this.node) {\r\n if (this.node.parentNode) {\r\n this.node.parentNode.removeChild(this.node);\r\n }\r\n }\r\n };\r\n Object.defineProperty(AMElement.prototype, \"transformString\", {\r\n /**\r\n * Returns `transform` attribute of the element.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Transform attribute value\r\n */\r\n get: function () {\r\n if (this.node) {\r\n return this._transformString;\r\n /*\r\n const value = this.node.getAttribute(\"transform\");\r\n \r\n if (value !== null) {\r\n return value;\r\n }*/\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Appply position, rotation and scale properties via elemen's `transform`\r\n * property\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AMElement.prototype.transform = function () {\r\n var transfromString = \"translate(\" + this._x + \",\" + this._y + \")\";\r\n if (this._scale != 1) {\r\n transfromString += ((transfromString ? \" \" : \"\") + \"scale(\" + this._scale + \")\");\r\n }\r\n if (this._rotation != 0) {\r\n var rotateString = \"rotate(\" + this._rotation + \")\";\r\n if (this._rotationX && this._rotationY) {\r\n rotateString = \"rotate(\" + this._rotation + \" \" + this._rotationX + \" \" + this._rotationY + \")\";\r\n }\r\n transfromString += ((transfromString ? \" \" : \"\") + rotateString);\r\n }\r\n this._transformString = transfromString;\r\n this.node.setAttribute(\"transform\", transfromString);\r\n };\r\n /**\r\n * Returns bounding box of the element.\r\n *\r\n * ATTENTION: Bounding box calculations are extremely costly so should be\r\n * used sparingly and cached whenever possible.\r\n *\r\n * @return Bounding rectangle\r\n */\r\n AMElement.prototype.getBBox = function () {\r\n var bbox = {\r\n width: 0,\r\n height: 0,\r\n x: 0,\r\n y: 0\r\n };\r\n // FF would fail if getBBox() is called without node added to parent\r\n if (this.node && this.node.parentNode) {\r\n try { // again for ff. TODO: check if this doesn't slow down\r\n var svgbbox = this.node.getBBox();\r\n bbox.x = svgbbox.x;\r\n bbox.y = svgbbox.y;\r\n bbox.width = svgbbox.width;\r\n bbox.height = svgbbox.height;\r\n }\r\n catch (err) { }\r\n }\r\n return bbox;\r\n };\r\n /**\r\n * Moves the element to new coordinates.\r\n *\r\n * @param x Target X\r\n * @param y Target Y\r\n */\r\n AMElement.prototype.moveTo = function (point) {\r\n if (point) {\r\n var x = point.x;\r\n var y = point.y;\r\n if (this._x != x || this._y != y) {\r\n this._x = x;\r\n this._y = y;\r\n this.transform();\r\n }\r\n }\r\n };\r\n Object.defineProperty(AMElement.prototype, \"content\", {\r\n /**\r\n * Returns element's contents as SVG markup.\r\n *\r\n * @return Contents\r\n */\r\n get: function () {\r\n // @todo Do not use `innerHTML` as this is not reliable and will not work on all browsers\r\n return this.node.innerHTML || \"\";\r\n },\r\n /**\r\n * Element's SVG contents.\r\n *\r\n * @param value Contents\r\n */\r\n set: function (value) {\r\n // @todo Do not use `innerHTML` as this is not reliable and will not work on all browsers\r\n this.node.innerHTML = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AMElement.prototype, \"textContent\", {\r\n /**\r\n * @return Text contents\r\n */\r\n get: function () {\r\n return this.node.textContent || \"\";\r\n },\r\n /**\r\n * Text contents of the SVG element.\r\n *\r\n * @param value Text contents\r\n */\r\n set: function (value) {\r\n this.node.textContent = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AMElement.prototype, \"x\", {\r\n /**\r\n * @return X coordinate (px)\r\n */\r\n get: function () {\r\n return this._x;\r\n },\r\n /**\r\n * Element's X position in pixels.\r\n *\r\n * @param value X coordinate (px)\r\n */\r\n set: function (value) {\r\n if (this._x != value) {\r\n this._x = value;\r\n this.transform();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AMElement.prototype, \"y\", {\r\n /**\r\n * @return Y coordinate (px)\r\n */\r\n get: function () {\r\n return this._y;\r\n },\r\n /**\r\n * Element's Y position in pixels.\r\n *\r\n * @param value Y coordinate (px)\r\n */\r\n set: function (value) {\r\n if (this._y != value) {\r\n this._y = value;\r\n this.transform();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AMElement.prototype, \"rotation\", {\r\n /**\r\n * @return Rotation\r\n */\r\n get: function () {\r\n return this._rotation;\r\n },\r\n /**\r\n * Element's rotation in degrees.\r\n *\r\n * @param value Rotation\r\n */\r\n set: function (angle) {\r\n if (this._rotation != angle) {\r\n this._rotation = angle;\r\n this.transform();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AMElement.prototype, \"rotationX\", {\r\n /**\r\n * @ignore\r\n */\r\n get: function () {\r\n return this._rotationX;\r\n },\r\n /**\r\n * @ignore\r\n */\r\n set: function (x) {\r\n if (this._rotationX != x) {\r\n this._rotationX = x;\r\n this.transform();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AMElement.prototype, \"rotationY\", {\r\n /**\r\n * @ignore\r\n */\r\n get: function () {\r\n return this._rotationY;\r\n },\r\n /**\r\n * @ignore\r\n */\r\n set: function (y) {\r\n if (this._rotationY != y) {\r\n this._rotationY = y;\r\n this.transform();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AMElement.prototype, \"scale\", {\r\n /**\r\n * @return Scale\r\n */\r\n get: function () {\r\n return this._scale;\r\n },\r\n /**\r\n * Element's scale where 1 is original size.\r\n *\r\n * Setting to 0.5 will reduce element's size by 50%, 2 will make element\r\n * twice as large, etc.\r\n *\r\n * @param value Scale\r\n */\r\n set: function (value) {\r\n if (this._scale != value) {\r\n this._scale = value;\r\n this.transform();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Removes an attribute from element.\r\n *\r\n * @param attribute Attribute to remove\r\n */\r\n AMElement.prototype.removeAttr = function (attribute) {\r\n this.node.removeAttribute(attribute);\r\n };\r\n /**\r\n * Sets a set of attributes on a element.\r\n *\r\n * @param attributes An object with attribute names (key) and values\r\n * @return The same element\r\n */\r\n AMElement.prototype.attr = function (attributes) {\r\n var _this = this;\r\n $object.each(attributes, function (attributeName, attributeValue) {\r\n if (!$type.hasValue(attributeValue)) {\r\n _this.node.removeAttribute(attributeName);\r\n }\r\n else {\r\n // this is for performance testing\r\n //if(attributeValue == this.node.getAttribute(attributeName)){\r\n //\tconsole.log(attributeName, attributeValue)\r\n //}\r\n _this.node.setAttribute(attributeName, attributeValue);\r\n }\r\n });\r\n return this;\r\n };\r\n /**\r\n * Returns a value of a node attribute.\r\n *\r\n * @param attribute Attribute name\r\n * @return Attribute value\r\n */\r\n AMElement.prototype.getAttr = function (attribute) {\r\n return this.node.getAttribute(attribute);\r\n };\r\n /**\r\n * Sets a single attribute of the element's node using namesspace.\r\n *\r\n * @param ns Namespace\r\n * @param attribute Attribute\r\n * @param value Value\r\n * @return The same element\r\n */\r\n AMElement.prototype.attrNS = function (ns, attribute, value) {\r\n this.node.setAttributeNS(ns, attribute, value);\r\n return this;\r\n };\r\n /**\r\n * Returns a namespaced attribute value from node.\r\n *\r\n * @param ns Namespace\r\n * @param attribute Attribute\r\n * @return Attribute value\r\n */\r\n AMElement.prototype.getAttrNS = function (ns, attribute) {\r\n return this.node.getAttributeNS(ns, attribute);\r\n };\r\n /**\r\n * Removes `style` attribute from node.\r\n *\r\n * @param attribute Attribute to remove\r\n */\r\n AMElement.prototype.removeStyle = function (attribute) {\r\n // @todo Review because it's a bit messy and maybe not needed (pratically not used)\r\n this.node.style[attribute] = null;\r\n delete this.node.style[attribute];\r\n };\r\n /**\r\n * Returns style attribute value.\r\n *\r\n * @param attribute Style attribute value\r\n * @return Attribute value\r\n */\r\n AMElement.prototype.getStyle = function (attribute) {\r\n // @todo Review because it's a bit messy and maybe not needed (pratically not used)\r\n return this.node.style[attribute];\r\n };\r\n /**\r\n * Adds style attributes to element's node.\r\n *\r\n * @param attributes Object containing attribute: value pairs\r\n * @return The same element\r\n */\r\n AMElement.prototype.addStyle = function (attributes) {\r\n var _this = this;\r\n // @todo Review because it's a bit messy and maybe not needed (pratically not used)\r\n $object.each(attributes, function (attributeName, attributeValue) {\r\n if (!$type.hasValue(attributeValue)) {\r\n _this.removeStyle(attributeName);\r\n }\r\n else {\r\n _this.node.style[attributeName] = attributeValue;\r\n }\r\n });\r\n return this;\r\n };\r\n /**\r\n * Adds a class to element.\r\n *\r\n * @param name Class name\r\n */\r\n AMElement.prototype.addClass = function (name) {\r\n $dom.addClass(this.node, name);\r\n };\r\n /**\r\n * Removes a class from element.\r\n *\r\n * @param name Class name\r\n */\r\n AMElement.prototype.removeClass = function (name) {\r\n $dom.removeClass(this.node, name);\r\n };\r\n /**\r\n * Sets a class name on element.\r\n *\r\n * @param name Class name\r\n */\r\n AMElement.prototype.setClass = function (name) {\r\n this.node.setAttribute(\"class\", name);\r\n };\r\n /**\r\n * Removes all element's child nodes, basically leaving it empty.\r\n */\r\n AMElement.prototype.removeChildNodes = function () {\r\n // remove all children\r\n while (this.node.childNodes.length > 0) {\r\n this.node.removeChild(this.node.firstChild);\r\n }\r\n };\r\n /**\r\n * Was this element already been disposed?\r\n *\r\n * @return Disposed?\r\n */\r\n AMElement.prototype.isDisposed = function () {\r\n return this._isDisposed;\r\n };\r\n /**\r\n * Disposes element.\r\n */\r\n AMElement.prototype.dispose = function () {\r\n this.removeNode();\r\n };\r\n return AMElement;\r\n}());\r\nexport { AMElement };\r\n//# sourceMappingURL=AMElement.js.map","import { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AMElement } from \"./AMElement\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates an SVG `<g>` element.\r\n *\r\n * SVG groups are used for elements that need more elements just one.\r\n *\r\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Element/g} About `<g>` element\r\n */\r\nvar Group = /** @class */ (function (_super) {\r\n __extends(Group, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param elementName Element type (should be \"g\")\r\n */\r\n function Group(elementName) {\r\n return _super.call(this, elementName) || this;\r\n }\r\n /**\r\n * Adds an element to group.\r\n *\r\n * This will manipulate DOM. `element` will be physically moved into group.\r\n *\r\n * @param element Element\r\n */\r\n Group.prototype.add = function (element) {\r\n if (element) {\r\n this.node.appendChild(element.node);\r\n }\r\n };\r\n /**\r\n * Adds an element to group.\r\n *\r\n * This will manipulate DOM. `element` will be physically moved into group.\r\n *\r\n * @param element Element\r\n */\r\n Group.prototype.addToBack = function (element) {\r\n if (element) {\r\n var first = this.node.childNodes[0];\r\n if (first) {\r\n if (first != element.node) {\r\n this.node.insertBefore(element.node, first);\r\n }\r\n }\r\n else {\r\n this.node.appendChild(element.node);\r\n }\r\n }\r\n };\r\n /**\r\n * Removes the `element` from group.\r\n *\r\n * Please note that this will not dispose the element itself, it will just\r\n * remove it from the group.\r\n *\r\n * @param element Element\r\n */\r\n Group.prototype.removeElement = function (element) {\r\n // todo: not sure about the speed, need to investigate, maybe it's faster to check if node is a child\r\n if (element) {\r\n try {\r\n if (element.node && element.node.parentNode == this.node) {\r\n this.node.removeChild(element.node);\r\n }\r\n }\r\n catch (err) {\r\n }\r\n }\r\n };\r\n /**\r\n * Checks if this group already has the child element added\r\n *\r\n * @param element\r\n * @return {boolean}\r\n */\r\n Group.prototype.hasChild = function (element) {\r\n for (var i = 0; i < this.node.childNodes.length; i++) {\r\n if (this.node.childNodes[i] == element.node) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n Object.defineProperty(Group.prototype, \"content\", {\r\n /**\r\n * @return SVG markup\r\n */\r\n get: function () {\r\n return this.node.innerHTML;\r\n },\r\n /**\r\n * Content of the group element.\r\n *\r\n * Can be used to add a lot of proprietary SVG markup into group.\r\n *\r\n * @param value SVG markup\r\n */\r\n set: function (value) {\r\n this.node.innerHTML = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Removes all children from the group.\r\n */\r\n Group.prototype.removeChildren = function () {\r\n if (this.node.childNodes) {\r\n while (this.node.childNodes.length > 0) {\r\n var childNode = this.node.firstChild;\r\n if (childNode && childNode.parentNode) {\r\n childNode.parentNode.removeChild(childNode);\r\n }\r\n }\r\n }\r\n };\r\n return Group;\r\n}(AMElement));\r\nexport { Group };\r\n//# sourceMappingURL=Group.js.map","/**\r\n * Paper class just like the white sheet of pressed fiber it draws its name\r\n * inspiration from is used as a starting point to start a drawing.\r\n *\r\n * Before we can start adding elements (drawing) we need to take out a new sheet\r\n * of paper, or in this instance create a blank SVG element.\r\n *\r\n * This class creates such element, as well as implements methods needed to\r\n * start adding elements to it.\r\n */\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AMElement } from \"./AMElement\";\r\nimport { Group } from \"./Group\";\r\nimport { SVGContainer } from \"./SVGContainer\";\r\nimport * as $dom from \"../utils/DOM\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Paper class which when instantiated will create an SVG element as well as\r\n * some of the sub-elements like `<desc>`, `<defs>`.\r\n *\r\n * Use its methods like `addGroup` and `append` to add elements to the paper.\r\n */\r\nvar Paper = /** @class */ (function () {\r\n /**\r\n * Creates main `<svg>` container and related elements.\r\n *\r\n * @param container A reference to HTML element to create `<svg>` in\r\n */\r\n function Paper(container, id) {\r\n // Store container reference\r\n this.container = container;\r\n this.id = id;\r\n // Create SVG element\r\n var svg = document.createElementNS($dom.SVGNS, \"svg\");\r\n svg.setAttribute(\"version\", \"1.1\");\r\n svg.setAttributeNS($dom.XMLNS, \"xmlns\", $dom.SVGNS);\r\n svg.setAttributeNS($dom.XMLNS, \"xmlns:xlink\", $dom.XLINK);\r\n svg.setAttribute(\"role\", \"group\");\r\n this.container.appendChild(svg);\r\n // Add description\r\n //let desc: SVGElement = <SVGElement>document.createElementNS($dom.SVGNS, \"desc\");\r\n //desc.appendChild(document.createTextNode(\"JavaScript chart by amCharts\"));\r\n //svg.appendChild(desc);\r\n // Add defs\r\n this.defs = document.createElementNS($dom.SVGNS, \"defs\");\r\n svg.appendChild(this.defs);\r\n // Set width and height to fit container\r\n svg.style.width = \"100%\";\r\n svg.style.height = \"100%\";\r\n svg.style.overflow = \"visible\";\r\n // Store variable\r\n this.svg = svg;\r\n }\r\n /**\r\n * Creates and returns a new element. Does not attach it to Paper yet.\r\n *\r\n * @param elementName Element name\r\n * @return New element\r\n */\r\n Paper.prototype.add = function (elementName) {\r\n return new AMElement(elementName);\r\n };\r\n /**\r\n * Creates and returns a new Group element. Does not attach it to Paper.\r\n *\r\n * @param groupName Element name\r\n * @return New Group\r\n */\r\n Paper.prototype.addGroup = function (groupName) {\r\n return new Group(groupName);\r\n };\r\n /**\r\n * Appends an element to Paper.\r\n *\r\n * @param element Element to append\r\n */\r\n Paper.prototype.append = function (element) {\r\n if (element) {\r\n this.svg.appendChild(element.node);\r\n }\r\n };\r\n /**\r\n * Appends an element to `<defs>` block of the Paper.\r\n *\r\n * @param element Element\r\n */\r\n Paper.prototype.appendDef = function (element) {\r\n if (element) {\r\n this.defs.appendChild(element.node);\r\n }\r\n };\r\n /**\r\n * Creates and returns new `<foreignObject>` element. Does not append it to\r\n * Paper.\r\n *\r\n * @return A foreignObject element\r\n */\r\n Paper.prototype.foreignObject = function () {\r\n var element = new AMElement(\"foreignObject\");\r\n //this.append(element);\r\n return element;\r\n };\r\n /**\r\n * Checks if browser supports `<foreignObject>` elements.\r\n *\r\n * @return Supports `foreignObject`?\r\n */\r\n Paper.prototype.supportsForeignObject = function () {\r\n return document.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#Extensibility\", \"1.1\");\r\n };\r\n return Paper;\r\n}());\r\nexport { Paper };\r\nvar ghostPaper = null;\r\n/**\r\n * A [[Paper]] instance to create elements, that are not yet ready to be\r\n * placed in visible DOM.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport function getGhostPaper() {\r\n if (ghostPaper === null) {\r\n // ghost is used to draw elements while real paper is not yet created or Sprite doesn't know parent yet\r\n var ghostDiv = document.createElement(\"div\");\r\n ghostDiv.hidden = true;\r\n ghostDiv.style.width = \"1px\";\r\n ghostDiv.style.height = \"1px\";\r\n ghostDiv.style.position = \"absolute\";\r\n ghostDiv.style.zIndex = \"-1000000\";\r\n document.body.appendChild(ghostDiv);\r\n var ghostSvgContainer = new SVGContainer(ghostDiv, true);\r\n ghostPaper = new Paper(ghostSvgContainer.SVGContainer, \"ghost\");\r\n }\r\n return ghostPaper;\r\n}\r\n//# sourceMappingURL=Paper.js.map","/**\r\n * A collection of functions that deals with path calculations.\r\n */\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $type from \"../utils/Type\";\r\nimport { getGhostPaper } from \"../rendering/Paper\";\r\nimport { options } from \"../Options\";\r\n/**\r\n * ============================================================================\r\n * PATH FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Returns an SVG path from a number of points.\r\n *\r\n * @ignore Exclude from docs\r\n * @param points An array of line elbow points\r\n * @return SVG path\r\n */\r\nexport function polyline(points) {\r\n var path = lineTo(points[0]);\r\n var prevPoint = { x: 0, y: 0 };\r\n var minStep = options.minPolylineStep;\r\n if (!$type.isNumber(minStep)) {\r\n minStep = 0.5;\r\n }\r\n for (var i = 0, len = points.length; i < len; i++) {\r\n var point = points[i];\r\n if ($math.getDistance(point, prevPoint) > minStep) {\r\n path += lineTo(point);\r\n prevPoint = point;\r\n }\r\n }\r\n return path;\r\n}\r\n/**\r\n * Returns a starting point of an SVG path.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point Starting point\r\n * @return SVG path\r\n */\r\nexport function moveTo(point) {\r\n return \" M\" + $math.round(point.x, 4) + \",\" + $math.round(point.y, 4) + \" \";\r\n}\r\n/**\r\n * Returns a line part of SVG path.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point SVG path\r\n * @return SVG path\r\n */\r\nexport function lineTo(point) {\r\n return \" L\" + $math.round(point.x, 4) + \",\" + $math.round(point.y, 4) + \" \";\r\n}\r\n/**\r\n * Returns a quadratic curve part of an SVG path.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point End point of the curve\r\n * @param controlPoint Control point\r\n * @return SVG path\r\n */\r\nexport function quadraticCurveTo(point, controlPoint) {\r\n return \" Q\" + $math.round(controlPoint.x, 4)\r\n + \",\" + $math.round(controlPoint.y, 4) + \" \" + $math.round(point.x, 4)\r\n + \",\" + $math.round(point.y, 4);\r\n}\r\n/**\r\n * Returns a cubic curve part of an SVG path.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point End point of the curve\r\n * @param controlPointA Control point A\r\n * @param controlPointB Control point B\r\n * @return SVG path\r\n */\r\nexport function cubicCurveTo(point, controlPointA, controlPointB) {\r\n return \" C\" + $math.round(controlPointA.x, 4)\r\n + \",\" + $math.round(controlPointA.y, 4) + \" \" + $math.round(controlPointB.x, 4)\r\n + \",\" + $math.round(controlPointB.y, 4) + \" \" + $math.round(point.x, 4)\r\n + \",\" + $math.round(point.y, 4);\r\n}\r\n/**\r\n * Returns a terminator for an SVG path.\r\n *\r\n * @ignore Exclude from docs\r\n * @return SVG path\r\n */\r\nexport function closePath() {\r\n return \" Z\";\r\n}\r\n/**\r\n * Returns an arc part of an SVG path.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Better parameter descriptions\r\n * @param startAngle Starting angle\r\n * @param arc Arc\r\n * @param radius Radius\r\n * @param radiusY Vertical radius\r\n * @return SVG path\r\n */\r\nexport function arcTo(startAngle, arc, radius, radiusY) {\r\n if (arc == 0) {\r\n return \"\";\r\n }\r\n if (!$type.isNumber(radiusY)) {\r\n radiusY = radius;\r\n }\r\n var path = \"\";\r\n var c = \",\";\r\n var segments = Math.ceil(Math.abs(arc) / 180);\r\n var l = 1;\r\n if (arc < 0) {\r\n l = 0;\r\n }\r\n // previous, as we use a not A\r\n var pax = 0;\r\n var pay = 0;\r\n // center\r\n var cx = -$math.cos(startAngle) * radius;\r\n var cy = -$math.sin(startAngle) * radiusY;\r\n // foir very short angles and big radius, solves artefacts\r\n if (arc < 0.5 && radius > 3000) {\r\n var endAngle = startAngle + arc;\r\n var ax = $math.round($math.cos(endAngle) * radius, 4);\r\n var ay = $math.round($math.sin(endAngle) * radiusY, 4);\r\n return lineTo({ x: ax, y: ay });\r\n }\r\n for (var i = 0; i < segments; i++) {\r\n var endAngle = startAngle + arc / segments * (i + 1);\r\n var ax = $math.round($math.cos(endAngle) * radius + cx - pax, 4);\r\n var ay = $math.round($math.sin(endAngle) * radiusY + cy - pay, 4);\r\n path += \" a\" + radius + c + radiusY + c + 0 + c + 0 + c + l + c + ax + c + ay;\r\n pax = ax;\r\n pay = ay;\r\n }\r\n return path;\r\n}\r\n/**\r\n * Creates an arc path.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param startAngle [description]\r\n * @param arc [description]\r\n * @param radius [description]\r\n * @param innerRadius [description]\r\n * @param radiusY [description]\r\n * @param cornerRadius [description]\r\n * @param innerCornerRadius [description]\r\n * @return SVG path\r\n */\r\nexport function arc(startAngle, arc, radius, innerRadius, radiusY, cornerRadius, innerCornerRadius) {\r\n if (arc == 0) {\r\n return \"\";\r\n }\r\n if (!$type.isNumber(innerRadius)) {\r\n innerRadius = 0;\r\n }\r\n if (radius == 0 && innerRadius <= 0) {\r\n return \"\";\r\n }\r\n if (radius < innerRadius) {\r\n var temp = radius;\r\n radius = innerRadius;\r\n innerRadius = temp;\r\n if ($type.isNumber(radiusY)) {\r\n radiusY = radiusY / innerRadius * radius;\r\n }\r\n }\r\n arc = $math.min(arc, 360);\r\n if (arc == 360) {\r\n cornerRadius = 0;\r\n innerCornerRadius = 0;\r\n }\r\n var endAngle = startAngle + arc;\r\n var crSin = $math.sin($math.min(arc, 45) / 2);\r\n radiusY = $type.isNumber(radiusY) ? radiusY : radius;\r\n cornerRadius = cornerRadius || 0;\r\n innerCornerRadius = $type.isNumber(innerCornerRadius) ? innerCornerRadius : cornerRadius;\r\n var innerRadiusY = (radiusY / radius) * innerRadius;\r\n var cornerRadiusY = (radiusY / radius) * cornerRadius;\r\n var innerCornerRadiusY = (radiusY / radius) * innerCornerRadius;\r\n cornerRadius = $math.fitToRange(cornerRadius, 0, (radius - innerRadius) / 2);\r\n cornerRadiusY = $math.fitToRange(cornerRadiusY, 0, (radiusY - innerRadiusY) / 2);\r\n innerCornerRadius = $math.fitToRange(innerCornerRadius, 0, (radius - innerRadius) / 2);\r\n innerCornerRadiusY = $math.fitToRange(innerCornerRadiusY, 0, (radiusY - innerRadiusY) / 2);\r\n cornerRadius = $math.round($math.fitToRange(cornerRadius, 0, radius * crSin), 4);\r\n cornerRadiusY = $math.round($math.fitToRange(cornerRadiusY, 0, radiusY * crSin), 4);\r\n innerCornerRadius = $math.round($math.fitToRange(innerCornerRadius, 0, innerRadius * crSin), 4);\r\n innerCornerRadiusY = $math.round($math.fitToRange(innerCornerRadiusY, 0, innerRadiusY * crSin), 4);\r\n var crAngle = Math.asin(cornerRadius / radius / 2) * $math.DEGREES * 2;\r\n var crAngleY = Math.asin(cornerRadiusY / radiusY / 2) * $math.DEGREES * 2;\r\n if (innerRadius < innerCornerRadius) {\r\n innerRadius = innerCornerRadius;\r\n }\r\n if (innerRadiusY < innerCornerRadiusY) {\r\n innerRadiusY = innerCornerRadiusY;\r\n }\r\n var crInnerAngle = Math.asin(innerCornerRadius / innerRadius / 2) * $math.DEGREES * 2;\r\n var crInnerAngleY = Math.asin(innerCornerRadiusY / innerRadiusY / 2) * $math.DEGREES * 2;\r\n if (!$type.isNumber(crInnerAngle)) {\r\n crInnerAngle = 0;\r\n }\r\n if (!$type.isNumber(crInnerAngleY)) {\r\n crInnerAngleY = 0;\r\n }\r\n var middleAngle = startAngle + arc / 2;\r\n var mPoint = { x: $math.round($math.cos(middleAngle) * innerRadius, 4), y: $math.sin(middleAngle) * innerRadiusY };\r\n var a0 = { x: $math.cos(startAngle) * (innerRadius + innerCornerRadius), y: $math.sin(startAngle) * (innerRadiusY + innerCornerRadiusY) };\r\n var b0 = { x: $math.cos(startAngle) * (radius - cornerRadius), y: $math.sin(startAngle) * (radiusY - cornerRadiusY) };\r\n var c0 = { x: $math.cos(endAngle) * (radius - cornerRadius), y: $math.sin(endAngle) * (radiusY - cornerRadiusY) };\r\n var d0 = { x: $math.cos(endAngle) * (innerRadius + innerCornerRadius), y: $math.sin(endAngle) * (innerRadiusY + innerCornerRadiusY) };\r\n var b1 = { x: $math.cos(startAngle + crAngle) * radius, y: $math.sin(startAngle + crAngleY) * radiusY };\r\n var d1 = { x: $math.cos(endAngle - crInnerAngle) * innerRadius, y: $math.sin(endAngle - crInnerAngleY) * innerRadiusY };\r\n // some magic math\r\n innerCornerRadius += innerCornerRadius * $math.sin(crInnerAngle / 2);\r\n innerCornerRadiusY += innerCornerRadiusY * $math.sin(crInnerAngleY / 2);\r\n if (crInnerAngle > (endAngle - startAngle) / 2) {\r\n d1 = mPoint;\r\n }\r\n var path = \"\";\r\n // start from b if this is full circle\r\n if (arc == 360) {\r\n path = moveTo(b0);\r\n }\r\n // otherwise start from a\r\n else {\r\n path = moveTo(a0);\r\n path += lineTo(b0);\r\n path += arcToPoint(b1, cornerRadius, cornerRadiusY, true);\r\n }\r\n // draw arc\r\n path += arcTo(startAngle + crAngle, arc - 2 * crAngle, radius, radiusY);\r\n // draw inner arc\r\n if ($type.isNumber(innerRadius) && innerRadius != 0) {\r\n // move to B if this is full circle\r\n if (arc == 360 && cornerRadius == 0) {\r\n path += moveTo(d0);\r\n }\r\n // draw line otherwise\r\n else {\r\n path += arcToPoint(c0, cornerRadius, cornerRadiusY, true);\r\n path += lineTo(d0);\r\n path += arcToPoint(d1, innerCornerRadius, innerCornerRadiusY, true);\r\n }\r\n path += arcTo(endAngle - crInnerAngle, -(arc - 2 * crInnerAngle), innerRadius, innerRadiusY);\r\n if (arc < 360 || cornerRadius > 0) {\r\n path += arcToPoint(a0, innerCornerRadius, innerCornerRadiusY, true);\r\n }\r\n path += lineTo(a0);\r\n }\r\n else {\r\n path += arcToPoint(c0, cornerRadius, cornerRadiusY, true);\r\n if (arc < 360) {\r\n path += lineTo(a0);\r\n }\r\n }\r\n return path;\r\n}\r\n/**\r\n * Creates a path for an arc to specific coordinate.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param point Reference point\r\n * @param radius Radius\r\n * @param radiusY Vertical radius (for skewed arcs)\r\n * @param sweepFlag [description]\r\n * @param largeArcFlag [description]\r\n * @param xAxisRotation [description]\r\n * @return Arc path\r\n */\r\nexport function arcToPoint(point, radius, radiusY, sweepFlag, largeArcFlag, xAxisRotation) {\r\n if (radius == 0) {\r\n return \"\";\r\n }\r\n xAxisRotation = xAxisRotation || 0;\r\n largeArcFlag = Boolean(largeArcFlag);\r\n sweepFlag = Boolean(sweepFlag);\r\n var c = \",\";\r\n var sweepFlagValue = +sweepFlag; // converts to 1 or 0\r\n var largeArcFlagValue = +largeArcFlag; // converts to 1 or 0\r\n return \" A\" + radius + c + radiusY + c + xAxisRotation + c + largeArcFlagValue + c + sweepFlagValue + c + $math.round(point.x, 4) + c + $math.round(point.y, 4);\r\n}\r\n/**\r\n * Creates a new rectangle.\r\n *\r\n * @ignore Exclude from docs\r\n * @param width Width (px)\r\n * @param height Height (px)\r\n * @param x X position\r\n * @param y Y position\r\n * @return Rectangle\r\n */\r\nexport function rectangle(width, height, x, y) {\r\n if (!$type.isNumber(x)) {\r\n x = 0;\r\n }\r\n if (!$type.isNumber(y)) {\r\n y = 0;\r\n }\r\n return moveTo({ x: x, y: y }) + lineTo({ x: x + width, y: y }) + lineTo({ x: x + width, y: y + height }) + lineTo({ x: x, y: y + height }) + closePath();\r\n}\r\n/**\r\n * Converts a rectangle to an SVG path.\r\n *\r\n * @ignore Exclude from docs\r\n * @param rect Rectangle\r\n * @param ccw Counter-clockwise?\r\n * @return SVG path\r\n */\r\nexport function rectToPath(rect, ccw) {\r\n var c = \",\";\r\n var L = \" L\";\r\n if (ccw) {\r\n return \"M\" + rect.x\r\n + c + rect.y + L + rect.x\r\n + c + (rect.y + rect.height) + L + (rect.x + rect.width)\r\n + c + (rect.y + rect.height) + L + (rect.x + rect.width)\r\n + c + rect.y + L + rect.x\r\n + c + rect.y;\r\n }\r\n else {\r\n return \"M\" + rect.x\r\n + c + rect.y + L + (rect.x + rect.width)\r\n + c + rect.y + L + (rect.x + rect.width)\r\n + c + (rect.y + rect.height) + L + rect.x\r\n + c + (rect.y + rect.height) + L + rect.x\r\n + c + rect.y;\r\n }\r\n}\r\n/**\r\n * Converts SVG path to array of points.\r\n *\r\n * Note, this is experimental feature based on method which is deprecated\r\n * on some browsers and some browsers do not support it at all.\r\n *\r\n * You can save the output of this function, but not rely on it completely.\r\n */\r\nexport function pathToPoints(path, pointCount) {\r\n var paper = getGhostPaper();\r\n var svgPath = paper.add(\"path\").node;\r\n svgPath.setAttribute(\"d\", path);\r\n if (svgPath.getPointAtLength && svgPath.getTotalLength) {\r\n var length_1 = svgPath.getTotalLength();\r\n var toPoints = [];\r\n for (var i = 0; i < pointCount; i++) {\r\n var point = svgPath.getPointAtLength(i / pointCount * length_1);\r\n toPoints.push({ x: point.x, y: point.y });\r\n }\r\n return toPoints;\r\n }\r\n svgPath.remove();\r\n}\r\nexport function spiralPoints(cx, cy, radius, radiusY, innerRadius, step, radiusStep, startAngle, endAngle) {\r\n if (!$type.isNumber(startAngle)) {\r\n startAngle = 0;\r\n }\r\n if (!$type.isNumber(startAngle)) {\r\n endAngle = startAngle;\r\n }\r\n var r = innerRadius + 0.01;\r\n var angle = startAngle * $math.RADIANS;\r\n var points = [];\r\n while (r < radius + radiusStep) {\r\n var stepSize = step;\r\n if (stepSize / 2 > r) {\r\n stepSize = 2 * r;\r\n }\r\n angle += 2 * Math.asin(stepSize / 2 / r);\r\n if (angle * $math.DEGREES > endAngle + ((radius - innerRadius) / radiusStep) * 360) {\r\n break;\r\n }\r\n var degrees = angle * $math.DEGREES;\r\n var point = { x: cx + r * Math.cos(angle), y: cy + r * radiusY / radius * Math.sin(angle) };\r\n points.push(point);\r\n r = innerRadius + degrees / 360 * radiusStep;\r\n }\r\n points.shift();\r\n return points;\r\n}\r\nexport function pointsToPath(points) {\r\n if (!points || points.length == 0) {\r\n return \"\";\r\n }\r\n var path = moveTo(points[0]);\r\n if (points && points.length > 0) {\r\n for (var i = 1; i < points.length; i++) {\r\n path += lineTo(points[i]);\r\n }\r\n }\r\n return path;\r\n}\r\n//# sourceMappingURL=Path.js.map","import * as $array from \"./Array\";\r\nimport * as $log from \"./Log\";\r\nvar Native = /** @class */ (function () {\r\n function Native() {\r\n var _this = this;\r\n this._targets = [];\r\n this._observer = new ResizeObserver(function (entries) {\r\n $array.each(entries, function (entry) {\r\n $array.each(_this._targets, function (x) {\r\n if (x.target === entry.target) {\r\n x.callback();\r\n }\r\n });\r\n });\r\n });\r\n }\r\n Native.prototype.addTarget = function (target, callback) {\r\n this._observer.observe(target, { box: \"content-box\" });\r\n this._targets.push({ target: target, callback: callback });\r\n };\r\n Native.prototype.removeTarget = function (target) {\r\n this._observer.unobserve(target);\r\n $array.keepIf(this._targets, function (x) {\r\n return x.target !== target;\r\n });\r\n };\r\n return Native;\r\n}());\r\nvar Raf = /** @class */ (function () {\r\n function Raf() {\r\n this._targets = [];\r\n }\r\n Raf.prototype.addTarget = function (target, callback) {\r\n var _this = this;\r\n if (this._targets.length === 0) {\r\n var lastTime_1 = null;\r\n var loop_1 = function () {\r\n var currentTime = Date.now();\r\n if (lastTime_1 === null || currentTime > (lastTime_1 + Raf.delay)) {\r\n lastTime_1 = currentTime;\r\n $array.each(_this._targets, function (x) {\r\n var newSize = x.target.getBoundingClientRect();\r\n if (newSize.width !== x.size.width || newSize.height !== x.size.height) {\r\n x.size = newSize;\r\n x.callback();\r\n }\r\n });\r\n }\r\n _this._timer = requestAnimationFrame(loop_1);\r\n };\r\n this._timer = requestAnimationFrame(loop_1);\r\n }\r\n var size = target.getBoundingClientRect();\r\n this._targets.push({ target: target, callback: callback, size: size });\r\n };\r\n Raf.prototype.removeTarget = function (target) {\r\n $array.keepIf(this._targets, function (x) {\r\n return x.target !== target;\r\n });\r\n if (this._targets.length === 0) {\r\n cancelAnimationFrame(this._timer);\r\n }\r\n };\r\n Raf.delay = 200;\r\n return Raf;\r\n}());\r\nvar observer = null;\r\nfunction makeSensor() {\r\n if (observer === null) {\r\n if (typeof ResizeObserver !== \"undefined\") {\r\n observer = new Native();\r\n }\r\n else {\r\n observer = new Raf();\r\n }\r\n }\r\n return observer;\r\n}\r\nvar ResizeSensor = /** @class */ (function () {\r\n function ResizeSensor(element, callback) {\r\n this._disposed = false;\r\n this._sensor = makeSensor();\r\n this._element = element;\r\n this._sensor.addTarget(element, callback);\r\n }\r\n ResizeSensor.prototype.isDisposed = function () {\r\n return this._disposed;\r\n };\r\n ResizeSensor.prototype.dispose = function () {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n this._sensor.removeTarget(this._element);\r\n }\r\n };\r\n Object.defineProperty(ResizeSensor.prototype, \"sensor\", {\r\n get: function () {\r\n return this._sensor;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Deprecated: do not use.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ResizeSensor.prototype.reset = function () {\r\n $log.warn(\"resizeSensor.reset() is no longer needed and can be removed\");\r\n };\r\n return ResizeSensor;\r\n}());\r\nexport { ResizeSensor };\r\n//# sourceMappingURL=ResizeSensor.js.map","/**\r\n * This functionality is related to the HTML wrapper that houses `<svg>` tag.\r\n */\r\nimport { Popup } from \"../elements/Popup\";\r\nimport { Modal } from \"../elements/Modal\";\r\nimport { ListTemplate, ListDisposer } from \"../utils/List\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $dom from \"../utils/DOM\";\r\nimport * as $array from \"../utils/Array\";\r\nimport * as $type from \"../utils/Type\";\r\nimport { ResizeSensor } from \"../utils/ResizeSensor\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A array of all SVG Containers (one SVG container per chart instance).\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport var svgContainers = [];\r\n/**\r\n * A class used to create an HTML wrapper for the SVG contents.\r\n */\r\nvar SVGContainer = /** @class */ (function () {\r\n /**\r\n * Constructor\r\n *\r\n * * Creates an HTML wrapper for SVG\r\n */\r\n function SVGContainer(htmlElement, ghost) {\r\n var _this = this;\r\n /**\r\n * Indicates if this object has already been deleted. Any\r\n * destruction/disposal code should take this into account when deciding\r\n * wheter to run potentially costly disposal operations if they already have\r\n * been run.\r\n */\r\n this._disposed = false;\r\n /**\r\n * If this component is in a separate HTML container, `autoResize` means the\r\n * module will constantly measure container's size and adopt contents to it.\r\n */\r\n this.autoResize = true;\r\n /**\r\n * Holds list of references to [[Sprite]] objects that should not be exported\r\n * when exporting chart to an image.\r\n *\r\n * @ignore\r\n */\r\n this.nonExportableSprites = [];\r\n /**\r\n * List of objects that need to be disposed when this one is disposed.\r\n */\r\n this._disposers = [];\r\n this.cssScale = 1;\r\n // This is needed so that it won't resize while printing, so that way printing works correctly.\r\n this._printing = false;\r\n // Log parent HTML element\r\n this.htmlElement = htmlElement;\r\n if (!ghost) {\r\n this._printing = false;\r\n this.initSensor();\r\n this._disposers.push($dom.addEventListener(window, \"beforeprint\", function () {\r\n _this._printing = true;\r\n }));\r\n this._disposers.push($dom.addEventListener(window, \"afterprint\", function () {\r\n _this._printing = false;\r\n }));\r\n }\r\n // Adds to containers array\r\n svgContainers.push(this);\r\n /**\r\n * Create child div for the container - it will have svg node\r\n * It might seem that this container is not necessay, however having it solves\r\n * a problems with mouse position detection and some other.\r\n */\r\n var svgContainer = document.createElement(\"div\");\r\n var style = svgContainer.style;\r\n style.width = \"100%\";\r\n style.height = \"100%\";\r\n style.position = \"relative\";\r\n htmlElement.appendChild(svgContainer);\r\n this.SVGContainer = svgContainer;\r\n }\r\n /**\r\n * (Re)Initializes a resize sensor.\r\n */\r\n SVGContainer.prototype.initSensor = function () {\r\n var _this = this;\r\n if (this.resizeSensor) {\r\n this.resizeSensor.dispose();\r\n }\r\n var callback = function () {\r\n if (_this.autoResize && !_this._printing) {\r\n _this.measure();\r\n }\r\n };\r\n this.resizeSensor = new ResizeSensor(this.htmlElement, callback);\r\n this._disposers.push(this.resizeSensor);\r\n };\r\n /**\r\n * Measures size of parent HTML element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n SVGContainer.prototype.measure = function () {\r\n var width = $utils.width(this.htmlElement);\r\n var height = $utils.height(this.htmlElement);\r\n var container = this.container;\r\n if (container) {\r\n if (this.width != width || this.height != height) {\r\n this.width = width;\r\n this.height = height;\r\n if (width > 0) {\r\n container.maxWidth = width;\r\n }\r\n if (height > 0) {\r\n container.maxHeight = height;\r\n }\r\n $dom.fixPixelPerfect(this.SVGContainer);\r\n }\r\n if (!container.maxWidth) {\r\n container.maxWidth = 0;\r\n }\r\n if (!container.maxHeight) {\r\n container.maxHeight = 0;\r\n }\r\n this.cssScale = 1;\r\n this.checkTransform(this.htmlElement);\r\n }\r\n };\r\n Object.defineProperty(SVGContainer.prototype, \"container\", {\r\n /**\r\n * @return Container\r\n */\r\n get: function () {\r\n return this._container;\r\n },\r\n /**\r\n * A [[Container]] element which is placed into container.\r\n *\r\n * @param container Container\r\n */\r\n set: function (container) {\r\n this._container = container;\r\n this.measure();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns if this object has been already been disposed.\r\n *\r\n * @return Is disposed?\r\n */\r\n SVGContainer.prototype.isDisposed = function () {\r\n return this._disposed;\r\n };\r\n /**\r\n * Removes this container from SVG container list in system, which\r\n * effectively disables size change monitoring for it.\r\n */\r\n SVGContainer.prototype.dispose = function () {\r\n if (!this._disposed) {\r\n $array.remove(svgContainers, this);\r\n }\r\n $array.each(this._disposers, function (item) {\r\n item.dispose();\r\n });\r\n };\r\n Object.defineProperty(SVGContainer.prototype, \"hideOverflow\", {\r\n /**\r\n * Indicates if chart container should have its style set\r\n * to `overflow: hidden`.\r\n *\r\n * Normally, we don't want that, so that certain elements, such as tooltips,\r\n * would be able to go outside chart area.\r\n *\r\n * There is one issue though. Some browsers ignore SVG masks and would\r\n * display scrollbars if chart elements, that go outside chart area extend\r\n * outside window.\r\n *\r\n * This is especially true for [[MapChart]], which can have its elements\r\n * extend very widely when zoomed in. Even if those parts are not visible\r\n * because of SVG masks, some browsers might still display window scrollbars.\r\n *\r\n * This is why we set this setting to `true` in [[MapChart]].\r\n *\r\n * Other charts use default of `false`.\r\n */\r\n set: function (value) {\r\n if (value) {\r\n this.SVGContainer.style.overflow = \"hidden\";\r\n }\r\n else {\r\n this.SVGContainer.style.overflow = \"\";\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SVGContainer.prototype, \"modal\", {\r\n /**\r\n * ==========================================================================\r\n * MODAL/POPUP RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * Returns a [[Modal]] instance, associated with this chart.\r\n * (elements top parent)\r\n *\r\n * Accessing modal does not make it appear. To make a modal appear, use\r\n * `showModal()` method.\r\n *\r\n * @see {@link Modal} for more information about using Modal windows\r\n * @return Modal instance\r\n */\r\n get: function () {\r\n if (!$type.hasValue(this._modal)) {\r\n // Create new modal\r\n this._modal = new Modal();\r\n this._modal.container = this.SVGContainer;\r\n // Add to disposers\r\n this._disposers.push(this._modal);\r\n }\r\n return this._modal;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Opens a modal window with specific content (`text` parameter) and,\r\n * optionally, `title`.\r\n *\r\n * The `text` parameter can contain HTML content.\r\n *\r\n * @see {@link Modal} for more information about using Modal windows\r\n * @param text Modal contents\r\n * @param title Title for the modal window\r\n */\r\n SVGContainer.prototype.openModal = function (text, title) {\r\n // Hide previous modal\r\n this.closeModal();\r\n // Create modal\r\n var modal = this.modal;\r\n modal.content = text;\r\n modal.readerTitle = title || \"\";\r\n modal.title = title || \"\";\r\n modal.open();\r\n return modal;\r\n };\r\n /**\r\n * Hides modal window if there is one currently open.\r\n */\r\n SVGContainer.prototype.closeModal = function () {\r\n if (this._modal) {\r\n this.modal.close();\r\n }\r\n };\r\n Object.defineProperty(SVGContainer.prototype, \"popups\", {\r\n /**\r\n * A list of popups for this chart.\r\n *\r\n * @return Popups\r\n */\r\n get: function () {\r\n if (!$type.hasValue(this._popups)) {\r\n // Create popup template\r\n var popupTemplate = new Popup();\r\n popupTemplate.container = this.SVGContainer;\r\n // Create the list\r\n this._popups = new ListTemplate(popupTemplate);\r\n // Add to disposers\r\n this._disposers.push(new ListDisposer(this._popups));\r\n this._disposers.push(this._popups.template);\r\n }\r\n return this._popups;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates, opens, and returns a new [[Popup]] window.\r\n *\r\n * `text` can be any valid HTML.\r\n *\r\n * `title` is currently not supported.\r\n *\r\n * @param text Popup contents\r\n * @param title Popup title\r\n * @return Popup instance\r\n */\r\n SVGContainer.prototype.openPopup = function (text, title) {\r\n var popup = this.popups.create();\r\n popup.content = text;\r\n if ($type.hasValue(title)) {\r\n popup.title = title;\r\n }\r\n popup.open();\r\n return popup;\r\n };\r\n /**\r\n * Closes all currently open popup windows\r\n */\r\n SVGContainer.prototype.closeAllPopups = function () {\r\n this.popups.each(function (popup) {\r\n popup.close();\r\n });\r\n };\r\n Object.defineProperty(SVGContainer.prototype, \"readerAlertElement\", {\r\n /**\r\n * ==========================================================================\r\n * ACCESSIBILITY STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * A `<div>` element used as as placeholder to trigger screen alerts.\r\n *\r\n * @sunce 4.9.2\r\n * @return Element\r\n */\r\n get: function () {\r\n if (!$type.hasValue(this._readerAlertElement)) {\r\n // Create element\r\n var div = document.createElement(\"div\");\r\n div.setAttribute(\"role\", \"alert\");\r\n div.style.zIndex = \"-100000\";\r\n div.style.opacity = \"0\";\r\n div.style.position = \"absolute\";\r\n div.style.top = \"0\";\r\n this.SVGContainer.appendChild(div);\r\n this._readerAlertElement = div;\r\n }\r\n return this._readerAlertElement;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Triggers screen reader read out a message.\r\n *\r\n * @since 4.9.2\r\n * @param text Alert text\r\n */\r\n SVGContainer.prototype.readerAlert = function (text) {\r\n this.readerAlertElement.innerHTML = text;\r\n };\r\n /**\r\n * ==========================================================================\r\n * OTHER STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n SVGContainer.prototype.checkTransform = function (div) {\r\n if (window.getComputedStyle) {\r\n if (div && div.style) {\r\n var style = window.getComputedStyle(div, null);\r\n if (style) {\r\n var matrix = style.getPropertyValue(\"-webkit-transform\") ||\r\n style.getPropertyValue(\"-moz-transform\") ||\r\n style.getPropertyValue(\"-ms-transform\") ||\r\n style.getPropertyValue(\"-o-transform\") ||\r\n style.getPropertyValue(\"transform\");\r\n if (matrix && matrix !== \"none\") {\r\n var values = matrix.split('(')[1].split(')')[0].split(',');\r\n var a = Number(values[0]);\r\n var b = Number(values[1]);\r\n var scale = Math.sqrt(a * a + b * b);\r\n if (!isNaN(scale)) {\r\n this.cssScale *= scale;\r\n }\r\n }\r\n }\r\n }\r\n if (div.parentNode && div.parentNode instanceof HTMLElement) {\r\n this.checkTransform(div.parentNode);\r\n }\r\n }\r\n };\r\n return SVGContainer;\r\n}());\r\nexport { SVGContainer };\r\n//# sourceMappingURL=SVGContainer.js.map","import { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { registry } from \"../Registry\";\r\nimport * as $path from \"./Path\";\r\nimport * as $array from \"../utils/Array\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $math from \"../utils/Math\";\r\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nvar Tension = /** @class */ (function () {\r\n /**\r\n * Constructor.\r\n *\r\n * @param tensionX [description]\r\n * @param tensionY [description]\r\n */\r\n function Tension(tensionX, tensionY) {\r\n this._tensionX = tensionX;\r\n this._tensionY = tensionY;\r\n }\r\n /**\r\n * [smooth description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param points [description]\r\n * @return [description]\r\n */\r\n Tension.prototype.smooth = function (points) {\r\n for (var i = points.length - 1; i > 0; i--) {\r\n var p0 = points[i];\r\n var p1 = points[i - 1];\r\n if (Math.abs(p0.x - p1.x) < 0.1 && Math.abs(p0.y - p1.y) < 0.1) {\r\n points.splice(i - 1, 1);\r\n }\r\n }\r\n var tensionX = this._tensionX;\r\n var tensionY = this._tensionY;\r\n if (points.length < 3 || (tensionX >= 1 && tensionY >= 1)) {\r\n return $path.polyline(points);\r\n }\r\n var first = points[0];\r\n var last = points[points.length - 1];\r\n var closed = false;\r\n if ($math.round(first.x, 3) == $math.round(last.x) && $math.round(first.y) == $math.round(last.y)) {\r\n closed = true;\r\n }\r\n // Can't moveTo here, as it wont be possible to have fill then.\r\n var path = \"\";\r\n for (var i = 0, len = points.length - 1; i < len; i++) {\r\n var p0 = points[i - 1];\r\n var p1 = points[i];\r\n var p2 = points[i + 1];\r\n var p3 = points[i + 2];\r\n if (i === 0) {\r\n if (closed) {\r\n p0 = points[points.length - 2];\r\n }\r\n else {\r\n p0 = points[i];\r\n }\r\n }\r\n else if (i == points.length - 2) {\r\n if (closed) {\r\n p3 = points[1];\r\n }\r\n else {\r\n p3 = points[i + 1];\r\n }\r\n }\r\n var controlPointA = $math.getCubicControlPointA(p0, p1, p2, p3, tensionX, tensionY);\r\n var controlPointB = $math.getCubicControlPointB(p0, p1, p2, p3, tensionX, tensionY);\r\n path += $path.cubicCurveTo(p2, controlPointA, controlPointB);\r\n }\r\n return path;\r\n };\r\n return Tension;\r\n}());\r\nexport { Tension };\r\n/**\r\n * Returns a waved line SVG path between two points.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point1 Starting point\r\n * @param point2 Ending point\r\n * @param waveLength Wave length\r\n * @param waveHeight Wave height\r\n * @param adjustWaveLength Adjust wave length based on the actual line length\r\n * @return SVG path\r\n */\r\nexport function wavedLine(point1, point2, waveLength, waveHeight, tension, adjustWaveLength) {\r\n var x1 = point1.x;\r\n var y1 = point1.y;\r\n var x2 = point2.x;\r\n var y2 = point2.y;\r\n var distance = $math.getDistance(point1, point2);\r\n if (adjustWaveLength) {\r\n waveLength = distance / Math.round(distance / waveLength);\r\n }\r\n var d = registry.getCache($utils.stringify([\"wavedLine\", point1.x, point2.x, point1.y, point2.y, waveLength, waveHeight]));\r\n if (!d) {\r\n if (distance > 0) {\r\n var angle = Math.atan2(y2 - y1, x2 - x1);\r\n var cos = Math.cos(angle);\r\n var sin = Math.sin(angle);\r\n var waveLengthX = waveLength * cos;\r\n var waveLengthY = waveLength * sin;\r\n if (waveLength <= 1 || waveHeight <= 1) {\r\n d = $path.lineTo(point2);\r\n }\r\n else {\r\n var halfWaveCount = Math.round(2 * distance / waveLength);\r\n var points = [];\r\n var sign_1 = 1;\r\n if (x2 < x1) {\r\n sign_1 *= -1;\r\n }\r\n if (y2 < y1) {\r\n sign_1 *= -1;\r\n }\r\n for (var i = 0; i <= halfWaveCount; i++) {\r\n sign_1 *= -1;\r\n var x = x1 + i * waveLengthX / 2 + sign_1 * waveHeight / 2 * sin;\r\n var y = y1 + i * waveLengthY / 2 - sign_1 * waveHeight / 2 * cos;\r\n points.push({ x: x, y: y });\r\n }\r\n d = new Tension(tension, tension).smooth(points);\r\n }\r\n }\r\n else {\r\n d = \"\";\r\n }\r\n registry.setCache($utils.stringify([\"wavedLine\", point1.x, point2.x, point1.y, point2.y, waveLength, waveHeight]), d);\r\n }\r\n return d;\r\n}\r\nvar Monotone = /** @class */ (function () {\r\n function Monotone(reversed, info) {\r\n this._reversed = reversed;\r\n this._closed = info.closed;\r\n }\r\n // According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\r\n // \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\r\n // with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\r\n Monotone.prototype._curve = function (x0, x1, y0, y1, t0, t1) {\r\n var dx = (x1 - x0) / 3;\r\n if (this._reversed) {\r\n return $path.cubicCurveTo({ x: y1, y: x1 }, { x: y0 + dx * t0, y: x0 + dx }, { x: y1 - dx * t1, y: x1 - dx });\r\n }\r\n else {\r\n return $path.cubicCurveTo({ x: x1, y: y1 }, { x: x0 + dx, y: y0 + dx * t0 }, { x: x1 - dx, y: y1 - dx * t1 });\r\n }\r\n };\r\n Monotone.prototype.smooth = function (points) {\r\n var _this = this;\r\n var x0 = NaN;\r\n var x1 = NaN;\r\n var y0 = NaN;\r\n var y1 = NaN;\r\n var t0 = NaN;\r\n var point = 0;\r\n var output = \"\";\r\n $array.each(points, function (_a) {\r\n var x = _a.x, y = _a.y;\r\n if (_this._reversed) {\r\n var temp = x;\r\n x = y;\r\n y = temp;\r\n }\r\n var t1 = NaN;\r\n if (!(x === x1 && y === y1)) {\r\n switch (point) {\r\n case 0:\r\n point = 1;\r\n if (_this._reversed) {\r\n output += $path.lineTo({ x: y, y: x });\r\n }\r\n else {\r\n output += $path.lineTo({ x: x, y: y });\r\n }\r\n break;\r\n case 1:\r\n point = 2;\r\n break;\r\n case 2:\r\n point = 3;\r\n output += _this._curve(x0, x1, y0, y1, slope2(x0, x1, y0, y1, t1 = slope3(x0, x1, y0, y1, x, y)), t1);\r\n break;\r\n default:\r\n output += _this._curve(x0, x1, y0, y1, t0, t1 = slope3(x0, x1, y0, y1, x, y));\r\n break;\r\n }\r\n x0 = x1;\r\n x1 = x;\r\n y0 = y1;\r\n y1 = y;\r\n t0 = t1;\r\n }\r\n });\r\n switch (point) {\r\n case 2:\r\n if (this._reversed) {\r\n output += $path.lineTo({ x: y1, y: x1 });\r\n }\r\n else {\r\n output += $path.lineTo({ x: x1, y: y1 });\r\n }\r\n break;\r\n case 3:\r\n output += this._curve(x0, x1, y0, y1, t0, slope2(x0, x1, y0, y1, t0));\r\n break;\r\n }\r\n if (this._closed) {\r\n output += $path.closePath();\r\n }\r\n return output;\r\n };\r\n return Monotone;\r\n}());\r\nexport { Monotone };\r\n// TODO move this someplace else\r\nfunction sign(x) {\r\n return x < 0 ? -1 : 1;\r\n}\r\nfunction slope2(x0, x1, y0, y1, t) {\r\n var h = x1 - x0;\r\n return h ? (3 * (y1 - y0) / h - t) / 2 : t;\r\n}\r\nfunction slope3(x0, x1, y0, y1, x2, y2) {\r\n var h0 = x1 - x0;\r\n var h1 = x2 - x1;\r\n var s0 = (y1 - y0) / (h0 || h1 < 0 && -0);\r\n var s1 = (y2 - y1) / (h1 || h0 < 0 && -0);\r\n var p = (s0 * h1 + s1 * h0) / (h0 + h1);\r\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\r\n}\r\nvar MonotoneX = /** @class */ (function (_super) {\r\n __extends(MonotoneX, _super);\r\n function MonotoneX(info) {\r\n return _super.call(this, false, info) || this;\r\n }\r\n return MonotoneX;\r\n}(Monotone));\r\nexport { MonotoneX };\r\nvar MonotoneY = /** @class */ (function (_super) {\r\n __extends(MonotoneY, _super);\r\n function MonotoneY(info) {\r\n return _super.call(this, true, info) || this;\r\n }\r\n return MonotoneY;\r\n}(Monotone));\r\nexport { MonotoneY };\r\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nvar Basis = /** @class */ (function () {\r\n /**\r\n * Constructor.\r\n *\r\n * @param info [description]\r\n */\r\n function Basis(info) {\r\n this._closed = info.closed;\r\n }\r\n /**\r\n * [smooth description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param points [description]\r\n * @return [description]\r\n */\r\n Basis.prototype.smooth = function (points) {\r\n var _this = this;\r\n var x0 = NaN;\r\n var x1 = NaN;\r\n var x2 = NaN;\r\n var x3 = NaN;\r\n var x4 = NaN;\r\n var y0 = NaN;\r\n var y1 = NaN;\r\n var y2 = NaN;\r\n var y3 = NaN;\r\n var y4 = NaN;\r\n var point = 0;\r\n var output = \"\";\r\n var pushCurve = function (x, y) {\r\n output += $path.cubicCurveTo({\r\n x: (x0 + 4 * x1 + x) / 6,\r\n y: (y0 + 4 * y1 + y) / 6\r\n }, {\r\n x: (2 * x0 + x1) / 3,\r\n y: (2 * y0 + y1) / 3\r\n }, {\r\n x: (x0 + 2 * x1) / 3,\r\n y: (y0 + 2 * y1) / 3\r\n });\r\n };\r\n var pushPoint = function (_a) {\r\n var x = _a.x, y = _a.y;\r\n switch (point) {\r\n case 0:\r\n point = 1;\r\n if (_this._closed) {\r\n x2 = x;\r\n y2 = y;\r\n }\r\n else {\r\n output += $path.lineTo({ x: x, y: y });\r\n }\r\n break;\r\n case 1:\r\n point = 2;\r\n if (_this._closed) {\r\n x3 = x;\r\n y3 = y;\r\n }\r\n break;\r\n case 2:\r\n point = 3;\r\n if (_this._closed) {\r\n x4 = x;\r\n y4 = y;\r\n output += $path.moveTo({ x: (x0 + 4 * x1 + x) / 6, y: (y0 + 4 * y1 + y) / 6 });\r\n break;\r\n }\r\n else {\r\n output += $path.lineTo({ x: (5 * x0 + x1) / 6, y: (5 * y0 + y1) / 6 });\r\n // fall-through\r\n }\r\n default:\r\n pushCurve(x, y);\r\n break;\r\n }\r\n x0 = x1;\r\n x1 = x;\r\n y0 = y1;\r\n y1 = y;\r\n };\r\n $array.each(points, pushPoint);\r\n if (this._closed) {\r\n switch (point) {\r\n case 1:\r\n output += $path.moveTo({ x: x2, y: y2 });\r\n output += $path.closePath();\r\n break;\r\n case 2:\r\n output += $path.moveTo({ x: (x2 + 2 * x3) / 3, y: (y2 + 2 * y3) / 3 });\r\n output += $path.lineTo({ x: (x3 + 2 * x2) / 3, y: (y3 + 2 * y2) / 3 });\r\n output += $path.closePath();\r\n break;\r\n case 3:\r\n pushPoint({ x: x2, y: y2 });\r\n pushPoint({ x: x3, y: y3 });\r\n pushPoint({ x: x4, y: y4 });\r\n break;\r\n }\r\n }\r\n else {\r\n switch (point) {\r\n case 3:\r\n pushCurve(x1, y1);\r\n // fall-through\r\n case 2:\r\n output += $path.lineTo({ x: x1, y: y1 });\r\n break;\r\n }\r\n output += $path.closePath();\r\n }\r\n return output;\r\n };\r\n return Basis;\r\n}());\r\nexport { Basis };\r\n//# sourceMappingURL=Smoothing.js.map","import { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../../Base\";\r\nimport { registry } from \"../../Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A base class for color modifiers.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nvar ColorModifier = /** @class */ (function (_super) {\r\n __extends(ColorModifier, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ColorModifier() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ColorModifier\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Modifies color value.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Original color\r\n * @return Modified\r\n */\r\n ColorModifier.prototype.modify = function (value) {\r\n return value;\r\n };\r\n return ColorModifier;\r\n}(BaseObject));\r\nexport { ColorModifier };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ColorModifier\"] = ColorModifier;\r\n//# sourceMappingURL=ColorModifier.js.map","import { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { ColorModifier } from \"./ColorModifier\";\r\nimport { registry } from \"../../Registry\";\r\nimport * as $math from \"../../utils/Math\";\r\nimport * as $type from \"../../utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * This class can be used to modify linear gradient steps, changing visual\r\n * properties like lightness, brightness, opacity of each set.\r\n *\r\n * It can also set offsets for each gradient step.\r\n *\r\n * E.g. if I want to fill a columns in a column series to be a solid fill from\r\n * top to 80% of height, then gradually fades out, I can use the following\r\n * gradient modifier as a `fillModifier`:\r\n *\r\n * ```TypeScript\r\n * let fillModifier = new am4core.GradientModifier();\r\n * fillModifier.opacities = [1, 1, 0];\r\n * fillModifier.offsets = [0, 0.8, 1];\r\n * columnSeries.columns.template.fillModifier = fillModifier;\r\n * ```\r\n * ```JavaScript\r\n * var fillModifier = new am4core.GradientModifier();\r\n * fillModifier.opacities = [1, 1, 0];\r\n * fillModifier.offsets = [0, 0.8, 1];\r\n * columnSeries.columns.template.fillModifier = fillModifier;\r\n * ```\r\n * ```JSON\r\n * \"series\": [{\r\n * \"type\": \"ColumnSeries\",\r\n * \"columns\": {\r\n * \"fillModifier\": {\r\n * \"type\": \"GradientModifier\",\r\n * \"opacities\": [1, 1, 0],\r\n * \"offsets\": [0, 0.8, 1]\r\n * }\r\n * }\r\n * }]\r\n * ```\r\n */\r\nvar GradientModifier = /** @class */ (function (_super) {\r\n __extends(GradientModifier, _super);\r\n /**\r\n * Constructor.\r\n */\r\n function GradientModifier() {\r\n var _this = _super.call(this) || this;\r\n _this.lightnesses = [];\r\n _this.brightnesses = [];\r\n _this.opacities = [];\r\n _this.offsets = [];\r\n _this.className = \"GradientModifier\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(GradientModifier.prototype, \"lightnesses\", {\r\n /**\r\n * @return Lightness values\r\n */\r\n get: function () {\r\n return this._lightnesses;\r\n },\r\n /**\r\n * An array of lightness values for each step.\r\n *\r\n * @param value Lightness values\r\n */\r\n set: function (value) {\r\n this._lightnesses = value;\r\n this._brightnesses = [];\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(GradientModifier.prototype, \"brightnesses\", {\r\n /**\r\n * @return Brightness values\r\n */\r\n get: function () {\r\n return this._brightnesses;\r\n },\r\n /**\r\n * An array of brightness values for each step.\r\n *\r\n * @param value Brightness values\r\n */\r\n set: function (value) {\r\n this._brightnesses = value;\r\n this._lightnesses = [];\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(GradientModifier.prototype, \"opacities\", {\r\n /**\r\n * @return Opacity values\r\n */\r\n get: function () {\r\n return this._opacities;\r\n },\r\n /**\r\n * An array of opacity values for each step.\r\n *\r\n * @param value Opacity values\r\n */\r\n set: function (value) {\r\n this._opacities = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(GradientModifier.prototype, \"offsets\", {\r\n /**\r\n * @return Offsets\r\n */\r\n get: function () {\r\n return this._offsets;\r\n },\r\n /**\r\n * An array of relative position (0-1) for each step.\r\n *\r\n * If not set, all steps will be of equal relative length.\r\n *\r\n * @param value Offsets\r\n */\r\n set: function (value) {\r\n this._offsets = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Modifies the color based on step setting.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Source color\r\n * @return A gradient that matches set modification rules\r\n */\r\n GradientModifier.prototype.modify = function (value) {\r\n // Clear current gradient\r\n this.gradient.clear();\r\n // Get step count\r\n var count = 0;\r\n if (this.opacities) {\r\n count = $math.max(count, this.opacities.length);\r\n }\r\n if (this.lightnesses) {\r\n count = $math.max(count, this.lightnesses.length);\r\n }\r\n if (this.brightnesses) {\r\n count = $math.max(count, this.brightnesses.length);\r\n }\r\n // Init step values\r\n var opacity = 1, lightness, brightness;\r\n // Apply steps\r\n for (var i = 0; i < count; i++) {\r\n // Take base color\r\n var color = value;\r\n // Check if there are any parameters for this step\r\n if (this.opacities && $type.isNumber(this.opacities[i])) {\r\n opacity = this.opacities[i];\r\n }\r\n if (this.lightnesses && $type.isNumber(this.lightnesses[i])) {\r\n lightness = this.lightnesses[i];\r\n brightness = undefined;\r\n }\r\n if (this.brightnesses && $type.isNumber(this.brightnesses[i])) {\r\n brightness = this.brightnesses[i];\r\n lightness = undefined;\r\n }\r\n // Check if we need to brighten/lighten color\r\n if ($type.isNumber(brightness)) {\r\n color = value.brighten(this.brightnesses[i]);\r\n }\r\n else if ($type.isNumber(lightness)) {\r\n color = value.lighten(this.lightnesses[i]);\r\n }\r\n // Get offset (it's OK if it's undefined)\r\n var offset = this.offsets[i];\r\n // Apply step\r\n this.gradient.addColor(color, opacity, offset);\r\n }\r\n return this.gradient;\r\n };\r\n GradientModifier.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this._offsets = source.offsets;\r\n this._brightnesses = source.brightnesses;\r\n this._lightnesses = source.lightnesses;\r\n this._opacities = source.opacities;\r\n };\r\n return GradientModifier;\r\n}(ColorModifier));\r\nexport { GradientModifier };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"GradientModifier\"] = GradientModifier;\r\n//# sourceMappingURL=GradientModifier.js.map","/**\r\n * Contains code and logic for generating linear gradients.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../../Base\";\r\nimport { List } from \"../../utils/List\";\r\nimport { getGhostPaper } from \"../Paper\";\r\nimport { registry } from \"../../Registry\";\r\nimport * as $iter from \"../../utils/Iterator\";\r\nimport * as $math from \"../../utils/Math\";\r\nimport * as $type from \"../../utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Linear gradient class.\r\n */\r\nvar LinearGradient = /** @class */ (function (_super) {\r\n __extends(LinearGradient, _super);\r\n /**\r\n * Constructor.\r\n */\r\n function LinearGradient() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * List of colors switch definitions in a gradient.\r\n */\r\n _this._stops = new List();\r\n /**\r\n * Gradient direction.\r\n */\r\n _this._rotation = 0;\r\n _this.className = \"LinearGradient\";\r\n _this._stops.events.on(\"setIndex\", _this.validate, _this);\r\n _this._stops.events.on(\"inserted\", _this.validate, _this);\r\n // Create element\r\n _this.element = _this.paper.addGroup(\"linearGradient\");\r\n _this.id = \"gradient-\" + registry.getUniqueId();\r\n _this.element.attr({ \"id\": _this.id });\r\n _this._disposers.push(_this.element);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws gradient.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n LinearGradient.prototype.validate = function () {\r\n var _this = this;\r\n var rotation = (this._rotation + 90) * $math.RADIANS;\r\n var x1 = Math.round(50 + Math.sin(rotation + Math.PI) * 50) + '%';\r\n var y1 = Math.round(50 + Math.cos(rotation) * 50) + '%';\r\n var x2 = Math.round(50 + Math.sin(rotation) * 50) + '%';\r\n var y2 = Math.round(50 + Math.cos(rotation + Math.PI) * 50) + '%';\r\n var gradientElement = this.element;\r\n gradientElement.removeChildNodes();\r\n gradientElement.attr({ \"x1\": x1, \"x2\": x2, \"y1\": y1, \"y2\": y2 });\r\n $iter.each($iter.indexed(this._stops.iterator()), function (a) {\r\n var i = a[0];\r\n var stop = a[1];\r\n var offset = stop.offset;\r\n if (!$type.isNumber(offset)) {\r\n offset = i / (_this._stops.length - 1);\r\n }\r\n var gradientStop = _this.paper.add(\"stop\");\r\n if ($type.hasValue(stop.color)) {\r\n gradientStop.attr({ \"stop-color\": stop.color.toString() });\r\n }\r\n if ($type.isNumber(stop.opacity)) {\r\n gradientStop.attr({ \"stop-opacity\": stop.opacity });\r\n }\r\n if ($type.isNumber(offset)) {\r\n gradientStop.attr({ \"offset\": offset });\r\n }\r\n gradientElement.add(gradientStop);\r\n });\r\n };\r\n /**\r\n * Clears the gradient.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n LinearGradient.prototype.clear = function () {\r\n this._stops.clear();\r\n };\r\n /**\r\n * Adds a color step to the gradient.\r\n *\r\n * @param color Color (hex code or named color)\r\n * @param opacity Opacity (value from 0 to 1; 0 completely transaprent, 1 fully opaque)\r\n * @param offset Position of color in the gradient (value 0 to 1; 0 meaning start of the gradient and 1 end)\r\n */\r\n LinearGradient.prototype.addColor = function (color, opacity, offset) {\r\n this._stops.push({ color: color, opacity: opacity, offset: offset });\r\n };\r\n Object.defineProperty(LinearGradient.prototype, \"stops\", {\r\n /**\r\n * A list of color stops in the gradient.\r\n *\r\n * @return Stops\r\n */\r\n get: function () {\r\n return this._stops;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LinearGradient.prototype, \"paper\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Paper\r\n */\r\n get: function () {\r\n if (this._paper) {\r\n return this._paper;\r\n }\r\n return getGhostPaper();\r\n },\r\n /**\r\n * [[Paper]] instace to use for the gradient.\r\n *\r\n * @ignore Exclude from docs\r\n * @param paper Paper\r\n */\r\n set: function (paper) {\r\n if (this._paper != paper) {\r\n this._paper = paper;\r\n this.validate();\r\n paper.appendDef(this.element);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LinearGradient.prototype, \"rotation\", {\r\n /**\r\n * @return Rotation\r\n */\r\n get: function () {\r\n return this._rotation;\r\n },\r\n /**\r\n * Rotation (direction) of the gradient in degrees.\r\n *\r\n * @param value Rotation\r\n */\r\n set: function (value) {\r\n //this.element.attr({ \"gradientTransform\": \"rotate(\" + value + \" 10 100)\" });\r\n this._rotation = value;\r\n this.validate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n LinearGradient.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.stops.copyFrom(source.stops);\r\n this._rotation = source.rotation;\r\n };\r\n Object.defineProperty(LinearGradient.prototype, \"gradientUnits\", {\r\n /**\r\n * Which units are used when drawing gradient filter.\r\n *\r\n * Use `\"userSpaceOnUse\"` when applying gradient on a perfectly straight line.\r\n *\r\n * @since 4.9.17\r\n * @default objectBoundingBox\r\n * @param value Filter units\r\n */\r\n set: function (value) {\r\n this.element.attr({ gradientUnits: value });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return LinearGradient;\r\n}(BaseObject));\r\nexport { LinearGradient };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"LinearGradient\"] = LinearGradient;\r\n//# sourceMappingURL=LinearGradient.js.map","import { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { LinearGradient } from \"./LinearGradient\";\r\nimport { GradientModifier } from \"./GradientModifier\";\r\nimport { registry } from \"../../Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * This class can be used to modify linear gradient steps, changing visual\r\n * properties like lightness, brightness, opacity of each set.\r\n *\r\n * It can also set offsets for each gradient step.\r\n *\r\n * E.g. if I want to fill a columns in a column series to be a solid fill from\r\n * top to 80% of height, then gradually fades out, I can use the following\r\n * gradient modifier as a `fillModifier`:\r\n *\r\n * ```TypeScript\r\n * let fillModifier = new am4core.LinearGradientModifier();\r\n * fillModifier.opacities = [1, 1, 0];\r\n * fillModifier.offsets = [0, 0.8, 1];\r\n * columnSeries.columns.template.fillModifier = fillModifier;\r\n * ```\r\n * ```JavaScript\r\n * var fillModifier = new am4core.LinearGradientModifier();\r\n * fillModifier.opacities = [1, 1, 0];\r\n * fillModifier.offsets = [0, 0.8, 1];\r\n * columnSeries.columns.template.fillModifier = fillModifier;\r\n * ```\r\n * ```JSON\r\n * \"series\": [{\r\n * \"type\": \"ColumnSeries\",\r\n * \"columns\": {\r\n * \"fillModifier\": {\r\n * \"type\": \"LinearGradientModifier\",\r\n * \"opacities\": [1, 1, 0],\r\n * \"offsets\": [0, 0.8, 1]\r\n * }\r\n * }\r\n * }]\r\n * ```\r\n */\r\nvar LinearGradientModifier = /** @class */ (function (_super) {\r\n __extends(LinearGradientModifier, _super);\r\n /**\r\n * Constructor.\r\n */\r\n function LinearGradientModifier() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"LinearGradientModifier\";\r\n _this.gradient = new LinearGradient();\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n LinearGradientModifier.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.gradient = source.gradient.clone();\r\n };\r\n return LinearGradientModifier;\r\n}(GradientModifier));\r\nexport { LinearGradientModifier };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"LinearGradientModifier\"] = LinearGradientModifier;\r\n//# sourceMappingURL=LinearGradientModifier.js.map","/**\r\n * Pattern module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../../Base\";\r\nimport { getGhostPaper } from \"../Paper\";\r\nimport { List, ListDisposer } from \"../../utils/List\";\r\nimport { Animation, AnimationDisposer } from \"../../utils/Animation\";\r\nimport { registry } from \"../../Registry\";\r\nimport { InterfaceColorSet } from \"../../utils/InterfaceColorSet\";\r\nimport * as $iter from \"../../utils/Iterator\";\r\nimport * as $object from \"../../utils/Object\";\r\nimport * as $type from \"../../utils/Type\";\r\n;\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Base class to define patterns.\r\n */\r\nvar Pattern = /** @class */ (function (_super) {\r\n __extends(Pattern, _super);\r\n //public propertyValues = new Dictionary<PatternProperties, any>();\r\n /**\r\n * Constructor\r\n */\r\n function Pattern() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * List of elements the pattern consists of.\r\n */\r\n _this._elements = new List();\r\n /**\r\n * A storage for Filter property/value pairs.\r\n *\r\n * @ignore Exclude from docs\r\n * @see {@link PatternProperties}\r\n */\r\n _this.properties = {};\r\n _this.className = \"Pattern\";\r\n // Set defaults\r\n _this.width = 10;\r\n _this.height = 10;\r\n _this.x = 0;\r\n _this.y = 0;\r\n _this.patternUnits = \"userSpaceOnUse\";\r\n var interfaceColors = new InterfaceColorSet();\r\n _this.backgroundFill = interfaceColors.getFor(\"background\");\r\n _this.backgroundOpacity = 0;\r\n _this.fillOpacity = 1;\r\n _this.fill = interfaceColors.getFor(\"alternativeBackground\");\r\n _this.stroke = interfaceColors.getFor(\"alternativeBackground\");\r\n _this.strokeOpacity = 1;\r\n _this.strokeWidth = 1;\r\n _this.shapeRendering = \"crispEdges\";\r\n _this.rotation = 0;\r\n // Create main group to store pattern elements inelements\r\n _this.element = _this.paper.addGroup(\"pattern\");\r\n _this.id = \"pattern-\" + registry.getUniqueId();\r\n _this.element.attr({ \"id\": _this.id });\r\n _this._disposers.push(_this.element);\r\n // Make elements disposable\r\n _this._disposers.push(new ListDisposer(_this._elements));\r\n // Request again to trigger getter/setter code\r\n _this.patternUnits = _this.patternUnits;\r\n _this.width = _this.width;\r\n _this.height = _this.height;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the pattern.\r\n */\r\n Pattern.prototype.draw = function () {\r\n var _this = this;\r\n var patternElement = this.element;\r\n if (patternElement) {\r\n patternElement.removeChildNodes();\r\n var background = this.paper.add(\"rect\");\r\n background.attr({ \"width\": this.width, \"height\": this.height, \"shape-rendering\": \"crispEdges\", \"fill\": this.backgroundFill.hex, \"fill-opacity\": this.backgroundOpacity, \"stroke\": this.backgroundFill.hex, \"stroke-opacity\": 0 });\r\n patternElement.add(background);\r\n patternElement.attr({ \"x\": this.x, \"y\": this.y, \"width\": this.width, \"height\": this.height, \"stroke\": this.stroke.hex, \"fill\": this.fill.hex, \"fill-opacity\": this.fillOpacity, \"stroke-opacity\": this.strokeOpacity, \"stroke-width\": this.strokeWidth, \"shape-rendering\": this.shapeRendering, \"patternUnits\": this.patternUnits, \"stroke-dasharray\": this.strokeDasharray });\r\n $iter.each(this._elements.iterator(), function (element) {\r\n element.rotation = _this.rotation;\r\n element.rotationX = _this.properties[\"rotationX\"];\r\n element.rotationY = _this.properties[\"rotationY\"];\r\n _this.element.add(element);\r\n });\r\n }\r\n };\r\n /**\r\n * Animate pattern properties.\r\n *\r\n * @see {@link Animation}\r\n * @param animationOptions Animation options\r\n * @param duration Duration (ms)\r\n * @param easing Easing function\r\n * @return Animation instance\r\n */\r\n Pattern.prototype.animate = function (animationOptions, duration, easing) {\r\n return new Animation(this, animationOptions, duration, easing).start();\r\n };\r\n /**\r\n * Adds an element to the pattern.\r\n *\r\n * @param element Element\r\n */\r\n Pattern.prototype.addElement = function (element) {\r\n this._elements.push(element);\r\n this._disposers.push(element);\r\n };\r\n /**\r\n * Remove an element from the pattern.\r\n *\r\n * @param element Element\r\n */\r\n Pattern.prototype.removeElement = function (element) {\r\n this._elements.removeValue(element);\r\n this.removeDispose(element);\r\n };\r\n Object.defineProperty(Pattern.prototype, \"elements\", {\r\n /**\r\n * Returns the list of SVG elements comprising the pattern.\r\n *\r\n * @return Pattern elements\r\n */\r\n get: function () {\r\n return this._elements;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Pattern.prototype, \"fillOpacity\", {\r\n /**\r\n * @return Opacity (0-1)\r\n */\r\n get: function () {\r\n return this.properties[\"fillOpacity\"];\r\n },\r\n /**\r\n * Pattern fill opacity. (0-1)\r\n *\r\n * @param value Opacity (0-1)\r\n */\r\n set: function (value) {\r\n this.properties[\"fillOpacity\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Pattern.prototype, \"fill\", {\r\n /**\r\n * @return Fill color\r\n */\r\n get: function () {\r\n return this.properties[\"fill\"];\r\n },\r\n /**\r\n * Fill color of the pattern.\r\n *\r\n * @param value Fill color\r\n */\r\n set: function (value) {\r\n this.properties[\"fill\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Pattern.prototype, \"backgroundFill\", {\r\n /**\r\n * @return Background color\r\n */\r\n get: function () {\r\n return this.properties[\"backgroundFill\"];\r\n },\r\n /**\r\n * Pattern background fill color.\r\n *\r\n * @param value Background color\r\n */\r\n set: function (value) {\r\n this.properties[\"backgroundFill\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Pattern.prototype, \"backgroundOpacity\", {\r\n /**\r\n * @return Background opacity (0-1)\r\n */\r\n get: function () {\r\n return this.properties[\"backgroundOpacity\"];\r\n },\r\n /**\r\n * Pattern backgorund opacity. (0-1)\r\n *\r\n * @param value Background opacity (0-1)\r\n */\r\n set: function (value) {\r\n this.properties[\"backgroundOpacity\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Pattern.prototype, \"stroke\", {\r\n /**\r\n * @return Color\r\n */\r\n get: function () {\r\n return this.properties[\"stroke\"];\r\n },\r\n /**\r\n * Pattern stroke (border) color.\r\n *\r\n * @param value Color\r\n */\r\n set: function (value) {\r\n this.properties[\"stroke\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Pattern.prototype, \"strokeOpacity\", {\r\n /**\r\n * @return Opacity (0-1)\r\n */\r\n get: function () {\r\n return this.properties[\"strokeOpacity\"];\r\n },\r\n /**\r\n * Pattern stroke opacity. (0-1)\r\n *\r\n * @param value Opacity (0-1)\r\n */\r\n set: function (value) {\r\n this.properties[\"strokeOpacity\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Pattern.prototype, \"strokeWidth\", {\r\n /**\r\n * @return Stroke thickness (px)\r\n */\r\n get: function () {\r\n return this.properties[\"strokeWidth\"];\r\n },\r\n /**\r\n * Pattern stroke thickness in pixels.\r\n *\r\n * @param value Stroke thickness (px)\r\n */\r\n set: function (value) {\r\n this.properties[\"strokeWidth\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Pattern.prototype, \"shapeRendering\", {\r\n get: function () {\r\n return this.properties[\"shapeRendering\"];\r\n },\r\n /**\r\n * Shape rendering\r\n * @param value [description]\r\n */\r\n set: function (value) {\r\n this.properties[\"shapeRendering\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Pattern.prototype, \"rotation\", {\r\n /**\r\n * @return Rotation\r\n */\r\n get: function () {\r\n return this.properties[\"rotation\"];\r\n },\r\n /**\r\n * Pattern rotation in degrees.\r\n *\r\n * @param value Rotation\r\n */\r\n set: function (value) {\r\n this.properties[\"rotation\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Pattern.prototype, \"patternUnits\", {\r\n /**\r\n * @return Units\r\n */\r\n get: function () {\r\n return this.properties[\"patternUnits\"];\r\n },\r\n /**\r\n * Pattern measuring units.\r\n *\r\n * Available options: \"userSpaceOnUse\" | \"objectBoundingBox\".\r\n *\r\n * @param value Units\r\n */\r\n set: function (value) {\r\n this.properties[\"patternUnits\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Pattern.prototype, \"width\", {\r\n /**\r\n * @return Width (px)\r\n */\r\n get: function () {\r\n return this.properties[\"width\"];\r\n },\r\n /**\r\n * Pattern width in pixels.\r\n *\r\n * @param value Width (px)\r\n */\r\n set: function (value) {\r\n this.properties[\"width\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Pattern.prototype, \"height\", {\r\n /**\r\n * @return Height (px)\r\n */\r\n get: function () {\r\n return this.properties[\"height\"];\r\n },\r\n /**\r\n * Pattern height in pixels.\r\n *\r\n * @param value Height (px)\r\n */\r\n set: function (value) {\r\n this.properties[\"height\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Pattern.prototype, \"x\", {\r\n /**\r\n * @return X (px)\r\n */\r\n get: function () {\r\n return this.properties[\"x\"];\r\n },\r\n /**\r\n * X position. (pixels)\r\n *\r\n * @param value X (px)\r\n */\r\n set: function (value) {\r\n this.properties[\"x\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Pattern.prototype, \"y\", {\r\n /**\r\n * @return Y (px)\r\n */\r\n get: function () {\r\n return this.properties[\"y\"];\r\n },\r\n /**\r\n * Y position (px).\r\n *\r\n * @param value Y (px)\r\n */\r\n set: function (value) {\r\n this.properties[\"y\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Pattern.prototype, \"paper\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Paper\r\n */\r\n get: function () {\r\n if (this._paper) {\r\n return this._paper;\r\n }\r\n return getGhostPaper();\r\n },\r\n /**\r\n * [[Paper]] instance to draw pattern in.\r\n *\r\n * @ignore Exclude from docs\r\n * @param paper Paper\r\n */\r\n set: function (paper) {\r\n if (this._paper != paper) {\r\n this._paper = paper;\r\n this.draw();\r\n paper.appendDef(this.element);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies properties from another Pattern instance.\r\n *\r\n * @param source Source pattern\r\n */\r\n Pattern.prototype.copyFrom = function (source) {\r\n var _this = this;\r\n _super.prototype.copyFrom.call(this, source);\r\n $object.each(source.properties, function (key, value) {\r\n _this[key] = value;\r\n });\r\n };\r\n Object.defineProperty(Pattern.prototype, \"animations\", {\r\n /**\r\n * A list of animations currently running on the patter.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Animation list\r\n */\r\n get: function () {\r\n if (!this._animations) {\r\n this._animations = [];\r\n this._disposers.push(new AnimationDisposer(this._animations));\r\n }\r\n return this._animations;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Pattern.prototype, \"strokeDasharray\", {\r\n /**\r\n * @return `stroke-dasharray`\r\n */\r\n get: function () {\r\n return this.properties[\"strokeDashArray\"];\r\n },\r\n /**\r\n * A `stroke-dasharray` for the stroke (outline).\r\n *\r\n * \"Dasharray\" allows setting rules to make lines dashed, dotted, etc.\r\n *\r\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray} for more info on `stroke-dasharray`\r\n * @param value `stroke-dasharray`\r\n */\r\n set: function (value) {\r\n this.properties[\"strokeDashArray\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n Pattern.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Set up series\r\n if ($type.hasValue(config.elements) && $type.isArray(config.elements)) {\r\n for (var i = 0, len = config.elements.length; i < len; i++) {\r\n var element = config.elements[i];\r\n if ($type.hasValue(element[\"type\"])) {\r\n var sprite = this.createEntryInstance(element);\r\n if (sprite instanceof BaseObject) {\r\n sprite.config = element;\r\n }\r\n this.addElement($type.hasValue(element[\"typeProperty\"])\r\n ? sprite[element[\"typeProperty\"]]\r\n : sprite.element);\r\n }\r\n }\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n return Pattern;\r\n}(BaseObject));\r\nexport { Pattern };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Pattern\"] = Pattern;\r\n//# sourceMappingURL=Pattern.js.map","/**\r\n * Contains code and logic for generating radial gradients.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../../Base\";\r\nimport { List } from \"../../utils/List\";\r\nimport { getGhostPaper } from \"../Paper\";\r\nimport { registry } from \"../../Registry\";\r\nimport * as $iter from \"../../utils/Iterator\";\r\nimport * as $type from \"../../utils/Type\";\r\nimport { Percent } from \"../../utils/Percent\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Radial gradient class.\r\n */\r\nvar RadialGradient = /** @class */ (function (_super) {\r\n __extends(RadialGradient, _super);\r\n /**\r\n * Constructor\r\n */\r\n function RadialGradient() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * List of colors switch definitions in a gradient.\r\n */\r\n _this._stops = new List();\r\n _this.element = _this.paper.addGroup(\"radialGradient\");\r\n _this.id = \"gradient-\" + registry.getUniqueId();\r\n _this.element.attr({ \"id\": _this.id });\r\n _this._disposers.push(_this.element);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws gradient.\r\n */\r\n RadialGradient.prototype.draw = function () {\r\n var _this = this;\r\n var gradientElement = this.element;\r\n if ($type.isNumber(this.cx)) {\r\n var value = this.cx;\r\n if (value instanceof Percent) {\r\n value = value.percent + \"%\";\r\n }\r\n gradientElement.attr({ \"cx\": value });\r\n }\r\n if ($type.isNumber(this.cy)) {\r\n var value = this.cy;\r\n if (value instanceof Percent) {\r\n value = value.percent + \"%\";\r\n }\r\n gradientElement.attr({ \"cy\": value });\r\n }\r\n if (this.fx) {\r\n var value = this.fx;\r\n if (value instanceof Percent) {\r\n value = value.percent + \"%\";\r\n }\r\n gradientElement.attr({ \"fx\": value });\r\n }\r\n if (this.fy) {\r\n var value = this.fy;\r\n if (value instanceof Percent) {\r\n value = value.percent + \"%\";\r\n }\r\n gradientElement.attr({ \"fy\": value });\r\n }\r\n gradientElement.removeChildNodes();\r\n $iter.each($iter.indexed(this._stops.iterator()), function (a) {\r\n var i = a[0];\r\n var stop = a[1];\r\n var offset = stop.offset;\r\n if (!$type.isNumber(offset)) {\r\n offset = i / (_this._stops.length - 1);\r\n }\r\n var gradientStop = _this.paper.add(\"stop\");\r\n if ($type.hasValue(stop.color)) {\r\n gradientStop.attr({ \"stop-color\": stop.color.toString() });\r\n }\r\n if ($type.isNumber(stop.opacity)) {\r\n gradientStop.attr({ \"stop-opacity\": stop.opacity });\r\n }\r\n if ($type.isNumber(offset)) {\r\n gradientStop.attr({ \"offset\": offset });\r\n }\r\n gradientElement.add(gradientStop);\r\n });\r\n };\r\n /**\r\n * Adds a color step to the gradient.\r\n *\r\n * @param color Color (hex code or named color)\r\n * @param opacity Opacity (value from 0 to 1; 0 completely transaprent, 1 fully opaque)\r\n * @param offset Position of color in the gradient (value 0 to 1; 0 meaning start of the gradient and 1 end)\r\n */\r\n RadialGradient.prototype.addColor = function (color, opacity, offset) {\r\n this._stops.push({ color: color, opacity: opacity, offset: offset });\r\n this.draw();\r\n };\r\n Object.defineProperty(RadialGradient.prototype, \"paper\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Paper\r\n */\r\n get: function () {\r\n if (this._paper) {\r\n return this._paper;\r\n }\r\n return getGhostPaper();\r\n },\r\n /**\r\n * A [[Paper]] instace to use for the gradient.\r\n *\r\n * @ignore Exclude from docs\r\n * @param paper Paper\r\n */\r\n set: function (paper) {\r\n if (this._paper != paper) {\r\n this._paper = paper;\r\n this.draw();\r\n paper.appendDef(this.element);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RadialGradient.prototype, \"cx\", {\r\n get: function () {\r\n return this._cx;\r\n },\r\n /**\r\n * Center x coordinate of the gradient, can be set as number or Percent\r\n *\r\n * @param point Center point\r\n */\r\n set: function (value) {\r\n this._cx = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RadialGradient.prototype, \"cy\", {\r\n get: function () {\r\n return this._cy;\r\n },\r\n /**\r\n * Center y coordinate of the gradient, can be set as number or Percent\r\n *\r\n * @param point Center point\r\n */\r\n set: function (value) {\r\n this._cy = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RadialGradient.prototype, \"fx\", {\r\n get: function () {\r\n return this._fx;\r\n },\r\n /**\r\n * y coordinate of the focal point of a gradient, can be set in pixels or as Percent\r\n *\r\n * @param point Center point\r\n */\r\n set: function (value) {\r\n this._fx = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RadialGradient.prototype, \"fy\", {\r\n get: function () {\r\n return this._fy;\r\n },\r\n /**\r\n * y coordinate of the focal point of a gradient, can be set in pixels or as Percent\r\n *\r\n * @param point Center point\r\n */\r\n set: function (value) {\r\n this._fy = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n RadialGradient.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.stops.copyFrom(source.stops);\r\n this.cx = source.cx;\r\n this.cy = source.cy;\r\n this.fx = source.fx;\r\n this.fy = source.fy;\r\n };\r\n Object.defineProperty(RadialGradient.prototype, \"stops\", {\r\n /**\r\n * A list of color stops in the gradient.\r\n *\r\n * @return Stops\r\n */\r\n get: function () {\r\n return this._stops;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Clears the gradient.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n RadialGradient.prototype.clear = function () {\r\n this._stops.clear();\r\n };\r\n return RadialGradient;\r\n}(BaseObject));\r\nexport { RadialGradient };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"RadialGradient\"] = RadialGradient;\r\n//# sourceMappingURL=RadialGradient.js.map","/**\r\n * Module for \"Desaturate\" filter.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Filter } from \"./Filter\";\r\nimport { registry } from \"../../Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creats a \"Desaturate\" filter\r\n */\r\nvar DesaturateFilter = /** @class */ (function (_super) {\r\n __extends(DesaturateFilter, _super);\r\n /**\r\n * Constructor\r\n */\r\n function DesaturateFilter() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"DesaturateFilter\";\r\n // Create elements\r\n // NOTE: we do not need to add each individual element to `_disposers`\r\n // because `filterPrimitives` has an event handler which automatically adds\r\n // anything added to it to `_disposers`\r\n _this.feColorMatrix = _this.paper.add(\"feColorMatrix\");\r\n _this.feColorMatrix.attr({ \"type\": \"saturate\" });\r\n _this.filterPrimitives.push(_this.feColorMatrix);\r\n // Set default properties\r\n _this.width = 120;\r\n _this.height = 120;\r\n _this.saturation = 0;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(DesaturateFilter.prototype, \"saturation\", {\r\n /**\r\n * @return Saturation (0-1)\r\n */\r\n get: function () {\r\n return this.properties[\"saturation\"];\r\n },\r\n /**\r\n * Saturation.\r\n *\r\n * 0 - completely desaturated.\r\n * 1 - fully saturated (gray).\r\n *\r\n * @param value Saturation (0-1)\r\n */\r\n set: function (value) {\r\n this.properties[\"saturation\"] = value;\r\n this.feColorMatrix.attr({ \"values\": value.toString() });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return DesaturateFilter;\r\n}(Filter));\r\nexport { DesaturateFilter };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"DesaturateFilter\"] = DesaturateFilter;\r\n//# sourceMappingURL=DesaturateFilter.js.map","/**\r\n * Module for \"Drop Shadow\" filter.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Filter } from \"./Filter\";\r\nimport { color } from \"../../utils/Color\";\r\nimport { registry } from \"../../Registry\";\r\n;\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creats a \"Drop Shadow\" filter.\r\n */\r\nvar DropShadowFilter = /** @class */ (function (_super) {\r\n __extends(DropShadowFilter, _super);\r\n /**\r\n * Constructor\r\n */\r\n function DropShadowFilter() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"DropShadowFilter\";\r\n // Create elements\r\n // NOTE: we do not need to add each individual element to `_disposers`\r\n // because `filterPrimitives` has an event handler which automatically adds\r\n // anything added to it to `_disposers`\r\n _this.color = color(\"#000\");\r\n _this.feGaussianBlur = _this.paper.add(\"feGaussianBlur\");\r\n _this.feGaussianBlur.attr({ \"result\": \"blurOut\", \"in\": \"SourceGraphic\" });\r\n _this.filterPrimitives.push(_this.feGaussianBlur);\r\n _this.feOffset = _this.paper.add(\"feOffset\");\r\n _this.feOffset.attr({ \"result\": \"offsetBlur\" });\r\n _this.filterPrimitives.push(_this.feOffset);\r\n _this.feFlood = _this.paper.add(\"feFlood\");\r\n _this.feFlood.attr({ \"flood-color\": _this.color });\r\n _this.filterPrimitives.push(_this.feFlood);\r\n _this.feComposite = _this.paper.add(\"feComposite\");\r\n _this.feComposite.attr({ \"in2\": \"offsetBlur\", operator: \"in\" });\r\n _this.filterPrimitives.push(_this.feComposite);\r\n _this.feMerge = _this.paper.addGroup(\"feMerge\");\r\n _this.feMerge.add(_this.paper.add(\"feMergeNode\"));\r\n _this.feMerge.add(_this.paper.add(\"feMergeNode\").attr({ \"in\": \"SourceGraphic\" }));\r\n _this.filterPrimitives.push(_this.feMerge);\r\n // Set default properties\r\n _this.width = 200;\r\n _this.height = 200;\r\n _this.blur = 1.5;\r\n _this.dx = 3;\r\n _this.dy = 3;\r\n _this.opacity = 0.5;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(DropShadowFilter.prototype, \"color\", {\r\n /**\r\n * @return Color\r\n */\r\n get: function () {\r\n return this.properties.color;\r\n },\r\n /**\r\n * Shadow color.\r\n *\r\n * @param value Color\r\n */\r\n set: function (value) {\r\n this.properties.color = value;\r\n if (this.feFlood) {\r\n this.feFlood.attr({ \"flood-color\": value });\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DropShadowFilter.prototype, \"opacity\", {\r\n /**\r\n * @return Opacity (0-1)\r\n */\r\n get: function () {\r\n return this.properties.opacity;\r\n },\r\n /**\r\n * Opacity of the shadow. (0-1)\r\n *\r\n * @param value Opacity (0-1)\r\n */\r\n set: function (value) {\r\n this.properties.opacity = value;\r\n this.feFlood.attr({ \"flood-opacity\": value });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DropShadowFilter.prototype, \"dx\", {\r\n /**\r\n * @return Horizontal offset (px)\r\n */\r\n get: function () {\r\n return this.properties.dx;\r\n },\r\n /**\r\n * Horizontal offset in pixels.\r\n *\r\n * @param value Horizontal offset (px)\r\n */\r\n set: function (value) {\r\n this.properties.dx = value;\r\n this.feOffset.attr({ \"dx\": value / this.scale });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DropShadowFilter.prototype, \"dy\", {\r\n /**\r\n * @return Vertical offset (px)\r\n */\r\n get: function () {\r\n return this.properties.dy;\r\n },\r\n /**\r\n * Vertical offset in pixels.\r\n *\r\n * @param value Vertical offset (px)\r\n */\r\n set: function (value) {\r\n this.properties.dy = value;\r\n this.feOffset.attr({ \"dy\": value / this.scale });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DropShadowFilter.prototype, \"blur\", {\r\n /**\r\n * @return Blur\r\n */\r\n get: function () {\r\n return this.properties.blur;\r\n },\r\n /**\r\n * Blur.\r\n *\r\n * @param value Blur\r\n */\r\n set: function (value) {\r\n this.properties.blur = value;\r\n this.feGaussianBlur.attr({ \"stdDeviation\": value / this.scale });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * [updateScale description]\r\n *\r\n * @todo Description\r\n */\r\n DropShadowFilter.prototype.updateScale = function () {\r\n this.dx = this.dx;\r\n this.dy = this.dy;\r\n this.blur = this.blur;\r\n };\r\n return DropShadowFilter;\r\n}(Filter));\r\nexport { DropShadowFilter };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"DropShadowFilter\"] = DropShadowFilter;\r\n//# sourceMappingURL=DropShadowFilter.js.map","/**\r\n * This module contains a base class for an SVG filter.\r\n *\r\n * Filters can be used to decorate, change and transform just about any DOM\r\n * element.\r\n *\r\n * A Filter works by applying one or more effects (primitives) to SVG element.\r\n *\r\n * For more information on how SVG filters work, refer to\r\n * [this MDN tutorial](https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/SVG_Filters_Tutorial).\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../../Base\";\r\nimport { getGhostPaper } from \"../Paper\";\r\nimport { Animation, AnimationDisposer } from \"../../utils/Animation\";\r\nimport { List } from \"../../utils/List\";\r\nimport * as $object from \"../../utils/Object\";\r\nimport * as $iter from \"../../utils/Iterator\";\r\n;\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Base filter class.\r\n *\r\n * This class while can be instantiated will not do anything. It is just a base\r\n * functionality for any other \"real\" filters to extend.\r\n *\r\n * Filters can be used to decorate, change and transform just about any DOM\r\n * element.\r\n *\r\n * A Filter works by applying one or more effects (primitives) to SVG element.\r\n *\r\n * For more information on how SVG filters work, refer to\r\n * [this MDN tutorial](https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/SVG_Filters_Tutorial).\r\n *\r\n * @todo Example\r\n */\r\nvar Filter = /** @class */ (function (_super) {\r\n __extends(Filter, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Filter() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * A storage for Filter property/value pairs.\r\n *\r\n * @ignore Exclude from docs\r\n * @see {@link FilterProperties}\r\n */\r\n _this.properties = {};\r\n /**\r\n * Identifies if this object is a \"template\" and should not be treated as\r\n * real object that is drawn or actually used in the chart.\r\n */\r\n _this.isTemplate = false;\r\n /**\r\n * [_scale description]\r\n *\r\n * @todo Description\r\n */\r\n _this._scale = 1;\r\n /**\r\n * [_nonScaling description]\r\n *\r\n * @todo Description\r\n */\r\n _this._nonScaling = true;\r\n _this.className = \"Filter\";\r\n // Create a list to hold primitives (effect elements)\r\n _this.filterPrimitives = new List();\r\n _this.properties.filterUnits = \"objectBoundingBox\";\r\n // Automatically add added primitives to `_disposers` so they are discarded\r\n // when Filter object is destroyed (disposed)\r\n _this.filterPrimitives.events.on(\"inserted\", function (ev) {\r\n _this._disposers.push(ev.newValue);\r\n });\r\n // Set default dimensions\r\n _this.width = 120;\r\n _this.height = 120;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Appends actual filter elements to the filter group.\r\n *\r\n * @ignore Exclude from docs\r\n * @param filterElement An SVG `<group>` element to add filter element to\r\n */\r\n Filter.prototype.appendPrimitives = function (filterElement) {\r\n $iter.each(this.filterPrimitives.iterator(), function (filterPrimitive) {\r\n filterElement.add(filterPrimitive);\r\n });\r\n };\r\n /**\r\n * Uses Transitions filter's values from current to target. This is used to\r\n * smoothly appear filter, rather than it pop into effect.\r\n *\r\n * @ignore Exclude from docs\r\n * @param animationOptions Animation options\r\n * @param duration Duration in milliseconds\r\n * @param easing Easing function\r\n * @return Animation instance\r\n */\r\n Filter.prototype.animate = function (animationOptions, duration, easing) {\r\n var animation = new Animation(this, animationOptions, duration, easing).start();\r\n return animation;\r\n };\r\n Object.defineProperty(Filter.prototype, \"width\", {\r\n /**\r\n * @return Width (%)\r\n */\r\n get: function () {\r\n return this.properties[\"width\"];\r\n },\r\n /**\r\n * Width of the filter element in percent.\r\n *\r\n * If the filter is designed to \"bleed out\" of the original target element,\r\n * like for example a shadow, you need this bigger than 100, or the\r\n * non-fitting parts will be clipped.\r\n *\r\n * @default 120\r\n * @param value Width (px)\r\n */\r\n set: function (value) {\r\n this.properties[\"width\"] = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Filter.prototype, \"height\", {\r\n /**\r\n * @return Height\r\n */\r\n get: function () {\r\n return this.properties[\"height\"];\r\n },\r\n /**\r\n * Height of the filter element in percent.\r\n *\r\n * If the filter is designed to \"bleed out\" of the original target element,\r\n * like for example a shadow, you need this bigger than 100, or the\r\n * non-fitting parts will be clipped.\r\n *\r\n * @default 120\r\n * @param value Height (%)\r\n */\r\n set: function (value) {\r\n this.properties[\"height\"] = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies properties from another [[Filter]] object.\r\n *\r\n * @param filter Source [[Filter]] object\r\n */\r\n Filter.prototype.copyFrom = function (filter) {\r\n var _this = this;\r\n _super.prototype.copyFrom.call(this, filter);\r\n $object.each(filter.properties, function (key, value) {\r\n _this[key] = value;\r\n });\r\n };\r\n Object.defineProperty(Filter.prototype, \"paper\", {\r\n /**\r\n * @return Paper\r\n */\r\n get: function () {\r\n if (this._paper) {\r\n return this._paper;\r\n }\r\n return getGhostPaper();\r\n },\r\n /**\r\n * Sets [[Paper]] instance to create filter's elements in.\r\n *\r\n * @ignore Exclude from docs\r\n * @param paper Paper\r\n */\r\n set: function (paper) {\r\n if (this._paper != paper) {\r\n this._paper = paper;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Filter.prototype, \"animations\", {\r\n /**\r\n * All animations currently in play.\r\n *\r\n * @ignore Exclude from docs\r\n * @return List of animations\r\n */\r\n get: function () {\r\n if (!this._animations) {\r\n this._animations = [];\r\n this._disposers.push(new AnimationDisposer(this._animations));\r\n }\r\n return this._animations;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Filter.prototype, \"scale\", {\r\n /**\r\n * @ignore Exclude from docs\r\n */\r\n get: function () {\r\n return this._scale;\r\n },\r\n /**\r\n * [[Sprite]] uses this method to inform filter about it's scale.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n set: function (value) {\r\n this._scale = value;\r\n this.updateScale();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Updates filter properties which depend on scale.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Filter.prototype.updateScale = function () {\r\n // Dummy method for extending classes to override.\r\n };\r\n Object.defineProperty(Filter.prototype, \"filterUnits\", {\r\n /**\r\n * @return Filter units\r\n */\r\n get: function () {\r\n return this.properties.filterUnits;\r\n },\r\n /**\r\n * Which units are used when drawing filter.\r\n *\r\n * Use `\"userSpaceOnUse\"` when applying filters on a perfectly straight line.\r\n *\r\n * @since 4.9.17\r\n * @default objectBoundingBox\r\n * @param value Filter units\r\n */\r\n set: function (value) {\r\n this.properties.filterUnits = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Filter.prototype, \"nonScaling\", {\r\n /**\r\n * @return Non scaling?\r\n */\r\n get: function () {\r\n return this._nonScaling;\r\n },\r\n /**\r\n * If a filter is non scaling, it will look the same even if the sprite is\r\n * scaled, otherwise filter will scale together with a [[Sprite]].\r\n *\r\n * @default false\r\n * @param value Non scaling?\r\n */\r\n set: function (value) {\r\n this._nonScaling = value;\r\n if (!value) {\r\n this._scale = 1;\r\n }\r\n this.updateScale();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Filter.prototype, \"sprite\", {\r\n /**\r\n * A target element this filter is currently attached to.\r\n *\r\n * We need to keep track of it because one filter can be used for just one\r\n * element, so we have to remove it from the old \"parent\" when attaching to\r\n * the new one.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Target element\r\n */\r\n set: function (value) {\r\n this.setSprite(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets filter's target element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Element filter is being attached to\r\n */\r\n Filter.prototype.setSprite = function (value) {\r\n if (this._sprite && this._sprite != value) {\r\n this._sprite.filters.removeValue(this);\r\n }\r\n this._sprite = value;\r\n };\r\n return Filter;\r\n}(BaseObject));\r\nexport { Filter };\r\n//# sourceMappingURL=Filter.js.map","/**\r\n * Module for \"Lighten\" filter.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Filter } from \"./Filter\";\r\nimport { registry } from \"../../Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a \"Lighten\" filter.\r\n */\r\nvar LightenFilter = /** @class */ (function (_super) {\r\n __extends(LightenFilter, _super);\r\n /**\r\n * Constructor\r\n */\r\n function LightenFilter() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"LightenFilter\";\r\n // Create elements\r\n // NOTE: we do not need to add each individual element to `_disposers`\r\n // because `filterPrimitives` has an event handler which automatically adds\r\n // anything added to it to `_disposers`\r\n _this.feColorMatrix = _this.paper.add(\"feColorMatrix\");\r\n _this.feColorMatrix.attr({ \"type\": \"matrix\" });\r\n _this.filterPrimitives.push(_this.feColorMatrix);\r\n // Set default properties\r\n _this.lightness = 0;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(LightenFilter.prototype, \"lightness\", {\r\n /**\r\n * @return Lightness\r\n */\r\n get: function () {\r\n return this.properties[\"lightness\"];\r\n },\r\n /**\r\n * Lightness of the target colors.\r\n *\r\n * If `lightness` is a positive number, the filter will make all colors\r\n * lighter.\r\n *\r\n * If `lightness` is negative, colors will be darkened.\r\n *\r\n * @param value Lightness\r\n */\r\n set: function (value) {\r\n this.properties[\"lightness\"] = value;\r\n var v = value + 1;\r\n this.feColorMatrix.attr({ \"values\": v + \" 0 0 0 0 0 \" + v + \" 0 0 0 0 0 \" + v + \" 0 0 0 0 0 1 0\" });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return LightenFilter;\r\n}(Filter));\r\nexport { LightenFilter };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"LightenFilter\"] = LightenFilter;\r\n//# sourceMappingURL=LightenFilter.js.map","/**\r\n * An Adapter can be used to apply chained synchronous transformations to any\r\n * value at runtime.\r\n *\r\n * Each type class using Adapters must have `adapters` property and adapter\r\n * interface defined.\r\n *\r\n * Adapters can be used to allow external code to apply transformations to any\r\n * value at any time.\r\n *\r\n * For example we have a Weather class which has a method `now()` which returns\r\n * current temperature.\r\n *\r\n * ```\r\n * function now() {\r\n * // ... calculate temperature\r\n * let temp = \"Temperature now is \" + degrees + \"F\";\r\n * return temp;\r\n * }\r\n * ```\r\n *\r\n * Now, supposed we want to let other classes to modify the output of the\r\n * `now()`? We just apply an adapter to the `temp` before it is returned:\r\n *\r\n * ```\r\n * temp = this.adapters.apply(\"now\", {\r\n * temp: temp,\r\n * degrees: degrees\r\n * }).temp;\r\n * ```\r\n *\r\n * Some other class might tap onto it by defining an Adapter that calculates\r\n * the temperature in Celsius:\r\n *\r\n * weather.adapters.add(\"now\", (arg) => {\r\n * arg.temp += \"(\" + farenheitToCelsius(arg.degrees) + \"C)\";\r\n * return arh;\r\n * });\r\n *\r\n * Furthermore some time-related class could add time:\r\n *\r\n * weather.adapters.add(\"now\", (arg) => {\r\n * arg.temp += \"; the time now is \" + (new Date().toLocaleString());\r\n * return arh;\r\n * });\r\n *\r\n * So without adapters we would get output like this:\r\n *\r\n * ```\r\n * Temperature now is 90F\r\n * ```\r\n *\r\n * With adapters applied we now have:\r\n *\r\n * ```\r\n * Temperature now is 90F (32C); the time now is 12/11/2012, 7:00:00 PM\r\n * ```\r\n */\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { SortedList } from \"./SortedList\";\r\nimport * as $number from \"./Number\";\r\nimport * as $order from \"./Order\";\r\nimport * as $iter from \"../utils/Iterator\";\r\nimport * as $array from \"../utils/Array\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $object from \"../utils/Object\";\r\n/**\r\n * ============================================================================\r\n * GLOBAL ADAPTER\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A global adapter is an adpater that is attached to a class type rather than\r\n * specific object instance.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nvar GlobalAdapter = /** @class */ (function () {\r\n function GlobalAdapter() {\r\n /**\r\n * Callback id iterator.\r\n */\r\n this._callbackId = 0;\r\n /**\r\n * A list of if callbacks (adapters).\r\n */\r\n this._callbacks = new SortedList(function (left, right) {\r\n return $order.or($number.order(left.priority, right.priority), $number.order(left.id, right.id));\r\n });\r\n }\r\n /**\r\n * Adds a global callback which is not specific to any particular object.\r\n * Whenever an adapter in any object of the specific class type is invoked\r\n * global adapters will kick in.\r\n *\r\n * @param type Class type\r\n * @param key Adapter key\r\n * @param callback Callback function\r\n * @param priority Priority (higher priority meaning adapter will be applied later)\r\n * @param scope Callback function scaope\r\n */\r\n GlobalAdapter.prototype.addAll = function (type, key, callback, priority, scope) {\r\n if (priority === void 0) { priority = 0; }\r\n this._callbacks.insert({\r\n id: ++this._callbackId,\r\n key: key,\r\n callback: callback,\r\n priority: priority,\r\n scope: scope,\r\n type: type\r\n });\r\n };\r\n /**\r\n * Returns if there are adapters for specific type available.\r\n *\r\n * @param type Adapter type\r\n * @param key Adapter key\r\n * @return {boolean}\r\n */\r\n GlobalAdapter.prototype.isEnabled = function (type, key) {\r\n return $array.any(this._callbacks.values, function (x) { return x.key === key && type instanceof x.type; });\r\n };\r\n /**\r\n * Applies global adapters for the object of the specific type.\r\n *\r\n * @param type Class type\r\n * @param key Adapter key\r\n * @param value Value\r\n */\r\n GlobalAdapter.prototype.applyAll = function (type, key, value) {\r\n // This is needed to improve the performance and reduce garbage collection\r\n var callbacks = this._callbacks.values;\r\n var length = callbacks.length;\r\n if (length == 0) {\r\n return value;\r\n }\r\n // Cycle through all callbacks and find the ones we need to use\r\n for (var i = 0; i < length; ++i) {\r\n var item = callbacks[i];\r\n if (item.key === key && type instanceof item.type) {\r\n value = item.callback.call(item.scope, value, type, key);\r\n }\r\n }\r\n return value;\r\n };\r\n return GlobalAdapter;\r\n}());\r\nexport { GlobalAdapter };\r\n/**\r\n * A global Adapter for plugins that want to add specific\r\n * functionality for any chart, not just specific instance.\r\n *\r\n * If you want to add an adapter which applies to all instances of the same\r\n * object type, like, for instance all slices in PieSeries, you can use\r\n * global adapter.\r\n *\r\n * Global adapter is a system-wide instance, accessible via `globalAdapter`.\r\n *\r\n * ```TypeScript\r\n * am4core.globalAdapter.addAll<am4charts.IPieSeriesAdapters, am4charts.PieSeries, \"fill\">(am4charts.PieSeries, \"fill\", (value, target, key) => {\r\n * return am4core.color(\"#005500\");\r\n * });\r\n * ```\r\n * ```JavaScript\r\n * am4core.globalAdapter.addAll(am4charts.PieSeries, \"fill\", (value, target, key) => {\r\n * return am4core.color(\"#005500\");\r\n * });\r\n * ```\r\n *\r\n * @ignore\r\n */\r\nexport var globalAdapter = new GlobalAdapter();\r\n/**\r\n * ============================================================================\r\n * REGULAR ADAPTER\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Adapter allows adding ordered callback functions and associating them with a\r\n * string-based key. An Adapter user can then easily invoke those callbacks to\r\n * apply custom functions on its input, output or intermediate values.\r\n *\r\n * Custom code and plugins can add their own callbacks to modify and enhance\r\n * core functionality.\r\n *\r\n * See the description of `add()` for an example.\r\n *\r\n * Almost any object in amCharts4 has own adapter, accessible with `adapter`\r\n * property.\r\n *\r\n * Any adapters added to it will be applied to that object only.\r\n *\r\n * ### Global Adapters\r\n *\r\n * If you want to add an adapter which applies to all instances of the same\r\n * object type, like, for instance all slices in PieSeries, you can use\r\n * global adapter.\r\n *\r\n * Global adapter is a system-wide instance, accessible via `globalAdapter`.\r\n *\r\n * ```TypeScript\r\n * am4core.globalAdapter.addAll<am4charts.IPieSeriesAdapters, am4charts.PieSeries, \"fill\">(am4charts.PieSeries. \"fill\", (value, target, key) => {\r\n * return am4core.color(\"#005500\");\r\n * });\r\n * ```\r\n * ```JavaScript\r\n * am4core.globalAdapter.addAll(am4charts.PieSeries. \"fill\", (value, target, key) => {\r\n * return am4core.color(\"#005500\");\r\n * });\r\n * ```\r\n *\r\n * {@link https://www.amcharts.com/docs/v4/reference/adapter_module/#globalAdapter_property More info}.\r\n *\r\n * @important\r\n */\r\nvar Adapter = /** @class */ (function () {\r\n /**\r\n * Constructor, sets the object referece this Adapter should be used for.\r\n *\r\n * @param c Object\r\n */\r\n function Adapter(c) {\r\n /**\r\n * Internal counter for callback ids.\r\n */\r\n this._callbackId = 0;\r\n /**\r\n * A list of adapter callbacks.\r\n *\r\n * @param $number.order(left.priority, right.priority) [description]\r\n * @param $number.order(left.id, right.id));\t} [description]\r\n */\r\n this._callbacks = new SortedList(function (left, right) {\r\n return $order.or($number.order(left.priority, right.priority), $number.order(left.id, right.id));\r\n });\r\n this._disabled = {};\r\n this.object = c;\r\n // TODO this exposes the internal events\r\n this.events = this._callbacks.events;\r\n }\r\n /**\r\n * Adds a callback for a specific key.\r\n *\r\n * ```TypeScript\r\n * // Override fill color value and make all slices green\r\n * chart.series.template.adapter.add(\"fill\", (value, target, key) => {\r\n * return am4core.color(\"#005500\");\r\n * });\r\n * ```\r\n * ```JavaScript\r\n * // Override fill color value and make all slices green\r\n * chart.series.template.adapter.add(\"fill\", function(value, target, key) {\r\n * return am4core.color(\"#005500\");\r\n * });\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"adapter\": {\r\n * \t// Override fill color value and make all slices green\r\n * \t\"fill\": function(value, target, key) {\r\n * \t return am4core.color(\"#005500\");\r\n * \t}\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * The above will call user-defined function (adapter) whenever `fill` value\r\n * is requested from the Pie series, allowing it to override the default\r\n * using custom code and any fuzzy logic.\r\n *\r\n * There can be any number of adapters set on one property key.\r\n *\r\n * In this case adapters will be applied in daisy-chain fashion. The first\r\n * adapter in queue will make its transformation. The next one will have\r\n * the output of the first adapter as a starting value, etc.\r\n *\r\n * The order of the adapters are determined either by the order they were\r\n * added in, or their `priority` value.\r\n *\r\n * The heigher the `priority`, the later in the game adapter will be applied.\r\n *\r\n * @param key Key\r\n * @param callback A callback function\r\n * @param priority The higher priority, the more chance the adapter will be applied last\r\n * @param scope Scope for the callback function\r\n */\r\n Adapter.prototype.add = function (key, callback, priority, scope) {\r\n if (priority === void 0) { priority = 0; }\r\n this._callbacks.insert({\r\n id: ++this._callbackId,\r\n key: key,\r\n callback: callback,\r\n priority: priority,\r\n scope: scope\r\n });\r\n };\r\n /**\r\n * Checks whether specific adapter is already set.\r\n *\r\n * @param key Key\r\n * @param callback A callback function\r\n * @param priority The higher priority, the more chance the adapter will be applied last\r\n * @param scope Scope for the callback function\r\n * @returns Adapter set?\r\n */\r\n Adapter.prototype.has = function (key, callback, priority, scope) {\r\n if (priority === void 0) { priority = 0; }\r\n return $iter.contains(this._callbacks.iterator(), function (item) {\r\n return item.key === key && item.callback === callback && item.priority === priority && item.scope === scope;\r\n });\r\n };\r\n /**\r\n * Removes adapter callbacks for the specific `key`.\r\n *\r\n * If `priority` is specified, only callbacks for that priority are removed.\r\n *\r\n * @param key Key\r\n * @param priority Priority\r\n * @todo Implement\r\n */\r\n Adapter.prototype.remove = function (key, priority) {\r\n var _this = this;\r\n // It has to make a copy because it removes the elements while iterating\r\n // TODO inefficient\r\n // TODO should this re-enable the key ?\r\n $array.each($iter.toArray(this._callbacks.iterator()), function (item) {\r\n // TODO test this\r\n if (item.key === key && (!$type.isNumber(priority) || priority === item.priority)) {\r\n _this._callbacks.remove(item);\r\n }\r\n });\r\n };\r\n /**\r\n * Enable applying adapters for a certain key, if it was disabled before by\r\n * `disableKey()`.\r\n *\r\n * @param key Key\r\n */\r\n Adapter.prototype.enableKey = function (key) {\r\n delete this._disabled[key];\r\n };\r\n /**\r\n * Disable applying adapters for a certain key.\r\n *\r\n * Optionally, can set how many applies to skip before automatically\r\n * re-enabling the applying.\r\n *\r\n * @param key Key\r\n * @param amount Number of applies to skip\r\n */\r\n Adapter.prototype.disableKey = function (key, amount) {\r\n if (amount === void 0) { amount = Infinity; }\r\n this._disabled[key] = amount;\r\n };\r\n Adapter.prototype._hasListenersByType = function (key) {\r\n return $array.any(this._callbacks.values, function (x) { return x.key === key; });\r\n };\r\n /**\r\n * Returns if there are any enabled adapters set for the specific `key`.\r\n *\r\n * @returns Are there any adapters for the key?\r\n */\r\n Adapter.prototype.isEnabled = function (key) {\r\n return this._disabled[key] == null && (this._hasListenersByType(key) || globalAdapter.isEnabled(this.object, key));\r\n };\r\n Adapter.prototype._shouldDispatch = function (key) {\r\n var count = this._disabled[key];\r\n if (!$type.isNumber(count)) {\r\n return true;\r\n }\r\n else {\r\n if (count <= 1) {\r\n delete this._disabled[key];\r\n }\r\n else {\r\n --this._disabled[key];\r\n }\r\n return false;\r\n }\r\n };\r\n /**\r\n * Passes the input value through all the callbacks for the defined `key`.\r\n *\r\n * @param key Key\r\n * @param value Input value\r\n * @param ...rest Rest of the parameters to be passed into callback\r\n * @return Output value\r\n */\r\n Adapter.prototype.apply = function (key, value) {\r\n if (this._shouldDispatch(key)) {\r\n // This is needed to improve the performance and reduce garbage collection\r\n var callbacks = this._callbacks.values;\r\n var length_1 = callbacks.length;\r\n if (length_1 > 0) {\r\n for (var i = 0; i < length_1; ++i) {\r\n var item = callbacks[i];\r\n if (item.key === key) {\r\n value = item.callback.call(item.scope, value, this.object, key);\r\n }\r\n }\r\n }\r\n // Apply global adapters\r\n value = globalAdapter.applyAll(this.object, key, value);\r\n return value;\r\n }\r\n else {\r\n return value;\r\n }\r\n };\r\n /**\r\n * Returns all adapter keys which are in this adapter.\r\n *\r\n * @return Adapter keys\r\n */\r\n Adapter.prototype.keys = function () {\r\n // TODO inefficient\r\n return $iter.toArray($iter.map(this._callbacks.iterator(), function (x) { return x.key; }));\r\n };\r\n /**\r\n * Copies all the adapter callbacks from `source`.\r\n *\r\n * @param source An Adapter to copy items from\r\n */\r\n Adapter.prototype.copyFrom = function (source) {\r\n var _this = this;\r\n $iter.each(source._callbacks.iterator(), function (x) {\r\n _this.add(x.key, x.callback, x.priority, x.scope);\r\n });\r\n $object.each(source._disabled, function (key, val) {\r\n _this._disabled[key] = val;\r\n });\r\n };\r\n /**\r\n * Clears all callbacks from this Adapter.\r\n */\r\n Adapter.prototype.clear = function () {\r\n // TODO should this also re-enable all the keys ?\r\n this._callbacks.clear();\r\n };\r\n return Adapter;\r\n}());\r\nexport { Adapter };\r\n//# sourceMappingURL=Adapter.js.map","/**\r\n * Animation module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObjectEvents } from \"../Base\";\r\nimport { SVGDefaults } from \"../defs/SVGDefaults\";\r\nimport { Disposer } from \"../utils/Disposer\";\r\nimport { Color } from \"../utils/Color\";\r\nimport { Percent, percent } from \"../utils/Percent\";\r\nimport * as $async from \"../utils/AsyncPending\";\r\nimport * as $ease from \"../utils/Ease\";\r\nimport * as $colors from \"../utils/Colors\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $array from \"../utils/Array\";\r\nimport * as $type from \"../utils/Type\";\r\nimport { system } from \"../System\";\r\nimport { options } from \"../Options\";\r\n/**\r\n * Calls a `callback` function for the `duration` of milliseconds.\r\n *\r\n * @todo Needed?\r\n * @deprecated Not used anywhere\r\n * @ignore Exclude from docs\r\n * @param duration Duration (ms)\r\n * @param callback Callback function\r\n * @return Disposer\r\n */\r\nexport function animate(duration, callback) {\r\n var disposed = false;\r\n // TODO use performance.now() ?\r\n var startTime = Date.now();\r\n function loop(now) {\r\n if (!disposed) {\r\n var diff = now - startTime;\r\n if (diff >= duration) {\r\n callback(1);\r\n }\r\n else {\r\n $async.nextFrame(loop);\r\n callback(diff / duration);\r\n }\r\n }\r\n }\r\n $async.nextFrame(loop);\r\n return new Disposer(function () {\r\n disposed = true;\r\n });\r\n}\r\n/**\r\n * Returns numeric value accoring to progress between start and end values.\r\n *\r\n * @param progress Progress (0-1)\r\n * @param from\r\n * @param to\r\n * @return Value according to progress\r\n */\r\nfunction getProgressNumber(progress, from, to) {\r\n return from + ((to - from) * progress);\r\n}\r\n/**\r\n * Returns [[Percent]] value accoring to progress between start and end\r\n * values.\r\n *\r\n * @param progress Progress (0-1)\r\n * @param from\r\n * @param to\r\n * @return Value according to progress\r\n */\r\nfunction getProgressPercent(progress, from, to) {\r\n return new Percent(getProgressNumber(progress, from.percent, to.percent));\r\n}\r\n/**\r\n * Returns color value accoring to progress between start and end values.\r\n *\r\n * @param progress Progress (0-1)\r\n * @param from\r\n * @param to\r\n * @return Color according to progress\r\n */\r\nfunction getProgressColor(progress, from, to) {\r\n var color = new Color($colors.interpolate(from.rgb, to.rgb, progress));\r\n if (from.alpha != to.alpha) {\r\n color.alpha = from.alpha + (to.alpha - from.alpha) * progress;\r\n }\r\n return color;\r\n}\r\n/**\r\n * [getHybridProperty description]\r\n *\r\n * @todo Description\r\n * @param property [description]\r\n * @param type [description]\r\n * @return [description]\r\n */\r\nfunction getHybridProperty(property, type) {\r\n return type + property.charAt(0).toUpperCase() + property.substr(1);\r\n}\r\nvar AnimationDisposer = /** @class */ (function () {\r\n function AnimationDisposer(array) {\r\n this._disposer = new Disposer(function () {\r\n while (array.length !== 0) {\r\n array[0].dispose();\r\n }\r\n });\r\n }\r\n AnimationDisposer.prototype.isDisposed = function () {\r\n return this._disposer.isDisposed();\r\n };\r\n AnimationDisposer.prototype.dispose = function () {\r\n this._disposer.dispose();\r\n };\r\n return AnimationDisposer;\r\n}());\r\nexport { AnimationDisposer };\r\n/**\r\n * Animation can be used to transition certain properties on an object that\r\n * implements [[IAnimatable]] interface.\r\n *\r\n * @see {@link IAnimationEvents} for a list of available events\r\n */\r\nvar Animation = /** @class */ (function (_super) {\r\n __extends(Animation, _super);\r\n /**\r\n * Constructor\r\n *\r\n * @param object An object animation should run on\r\n * @param animationOptions One or several (array) of animation options\r\n * @param duration Duration (ms)\r\n * @param easing Easing function\r\n */\r\n function Animation(object, animationOptions, duration, easing) {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Duration of the animation in milliseconds.\r\n */\r\n _this.duration = 0;\r\n /**\r\n * Easing function to use.\r\n *\r\n * @see {@link Ease}\r\n */\r\n _this.easing = $ease.linear;\r\n /**\r\n * Contains progress of the current animation: 0 (start) to 1 (end).\r\n */\r\n _this.progress = 0;\r\n /**\r\n * Indicated how many times animation should loop.\r\n */\r\n _this._loop = 0;\r\n /**\r\n * Animation is paused.\r\n */\r\n _this._pause = false;\r\n /**\r\n * Holds reference to timeout for delayed play.\r\n */\r\n _this._delayTimeout = null;\r\n /**\r\n * Elapsed time in currently playing animation.\r\n */\r\n _this._time = 0;\r\n _this._isFinished = false;\r\n _this.className = \"Animation\";\r\n // Override duration if animations disabled system-wide\r\n if (options.animationsEnabled === false) {\r\n duration = 0;\r\n }\r\n // Set parameters\r\n _this.object = object;\r\n _this.animationOptions = $array.toArray(animationOptions);\r\n _this.duration = duration;\r\n if (easing) {\r\n _this.easing = easing;\r\n }\r\n // Run check if there are already animations playing on the same properties\r\n // and stop them - the last animation takes precedence\r\n //this.stopSameAnimations();\r\n /*if ($type.hasValue(callback)) {\r\n // TODO don't use .call\r\n this.events.on(\"animationended\", callback, object);\r\n }*/\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n // TODO verify that this is correct\r\n Animation.prototype.debug = function () { };\r\n /**\r\n * Disposes this object, clears up after itself.\r\n */\r\n Animation.prototype.dispose = function () {\r\n _super.prototype.dispose.call(this);\r\n this.pause();\r\n };\r\n /**\r\n * Delays animation start by X milliseconds.\r\n *\r\n * @param delay Delay (ms)\r\n * @return Animation\r\n */\r\n Animation.prototype.delay = function (delay) {\r\n var _this = this;\r\n //@todo Maybe not use `bind()`\r\n if (delay > 0) {\r\n this.pause();\r\n // This is so that it will get disposed if `this.object` is disposed\r\n // TODO hacky, figure out a better way\r\n $array.move(this.object.animations, this);\r\n var id_1 = setTimeout(function () {\r\n _this._delayTimeout = null;\r\n _this.start();\r\n }, delay);\r\n this._delayTimeout = new Disposer(function () {\r\n clearTimeout(id_1);\r\n });\r\n }\r\n return this;\r\n };\r\n Animation.prototype._start = function () {\r\n this._isFinished = false;\r\n // Clear delay timeout if there was one\r\n if (this._delayTimeout) {\r\n this.removeDispose(this._delayTimeout);\r\n this._delayTimeout = null;\r\n }\r\n // Run check if there are already animations playing on the same properties\r\n // and stop them - the last animation takes precedence\r\n this.stopSameAnimations();\r\n // Reset counters\r\n this._pause = false;\r\n // Register animation\r\n $array.move(system.animations, this);\r\n // Register this animation in object's `animations` list\r\n $array.move(this.object.animations, this);\r\n system.requestFrame();\r\n };\r\n /**\r\n * Starts animation.\r\n *\r\n * @return Animation\r\n */\r\n Animation.prototype.start = function () {\r\n this._start();\r\n this._startTime = Date.now();\r\n this._time = 0;\r\n this.staticOptions = [];\r\n // Process initial property values\r\n for (var i = this.animationOptions.length - 1; i >= 0; i--) {\r\n var options_1 = this.animationOptions[i];\r\n if (!$type.hasValue(options_1.from)) {\r\n if (options_1.childObject) {\r\n options_1.from = options_1.childObject[options_1.property];\r\n }\r\n else {\r\n options_1.from = this.object[options_1.property];\r\n if (!$type.hasValue(options_1.from)) {\r\n options_1.from = SVGDefaults[options_1.property];\r\n }\r\n }\r\n /*if (!$type.hasValue(options.from)) {\r\n throw Error(\"Could not get initial transition value.\");\r\n }*/\r\n }\r\n if (options_1.from == options_1.to) { // || options.to == (<any>this.object)[options.property]){ this is not good, as dataItem.value is set to final at once, and we animate workingValue\r\n $array.remove(this.animationOptions, options_1);\r\n }\r\n else if (!$type.hasValue(options_1.from) || (!(options_1.from instanceof Percent) && (options_1.to instanceof Percent)) || ((options_1.from instanceof Percent) && !(options_1.to instanceof Percent))) {\r\n // Initial value is undefined, treat it as static\r\n this.staticOptions.push(options_1);\r\n $array.remove(this.animationOptions, options_1);\r\n }\r\n else {\r\n // Use different update methods for different value types\r\n if ($type.isNumber(options_1.to)) {\r\n // Numeric value\r\n options_1.updateMethod = getProgressNumber;\r\n // Check if initial value is not Percent\r\n if (options_1.from instanceof Percent) {\r\n // It is. Let's convert it to pixel value\r\n // @todo Check if we can do this in a less hacky way\r\n var convertedFrom = this.object[getHybridProperty(options_1.property, \"pixel\")];\r\n if (!isNaN(convertedFrom)) {\r\n options_1.from = convertedFrom;\r\n }\r\n else {\r\n this.staticOptions.push(options_1);\r\n $array.remove(this.animationOptions, options_1);\r\n }\r\n }\r\n else if (isNaN(options_1.from)) {\r\n // Static value\r\n this.staticOptions.push(options_1);\r\n $array.remove(this.animationOptions, options_1);\r\n }\r\n }\r\n else {\r\n // Check if maybe we have a color or percent value\r\n if (options_1.to instanceof Color) {\r\n // Yup - set resolved named color\r\n //options.from = $colors.stringToColor(<string>options.from);\r\n if (options_1.from) {\r\n options_1.updateMethod = getProgressColor;\r\n }\r\n else {\r\n // Static value\r\n this.staticOptions.push(options_1);\r\n $array.remove(this.animationOptions, options_1);\r\n }\r\n }\r\n else if (options_1.to instanceof Percent) {\r\n // Percent\r\n options_1.updateMethod = getProgressPercent;\r\n // Check if the initial value is maybe in pixels\r\n if (!isNaN(options_1.from)) {\r\n // It is. Let's convert it\r\n // @todo Check if we can do this in a less hacky way\r\n var convertedFrom = this.object[getHybridProperty(options_1.property, \"relative\")];\r\n if (!isNaN(convertedFrom)) {\r\n options_1.from = percent(convertedFrom * 100);\r\n }\r\n }\r\n }\r\n else {\r\n // Static value\r\n this.staticOptions.push(options_1);\r\n $array.remove(this.animationOptions, options_1);\r\n }\r\n }\r\n }\r\n }\r\n // Apply static options (just in case they were reset by previous\r\n // animation loop)\r\n this.applyStaticOptions();\r\n if (this.events.isEnabled(\"animationstarted\")) {\r\n var event_1 = {\r\n type: \"animationstarted\",\r\n target: this,\r\n progress: this.progress\r\n };\r\n this.events.dispatchImmediately(\"animationstarted\", event_1);\r\n }\r\n this.update();\r\n // If duration is 0, just end animation\r\n if (this.duration === 0) {\r\n this.end();\r\n }\r\n return this;\r\n };\r\n /**\r\n * Sets loop count for the animation. If parameter is not a valid number the\r\n * animation will keep on looping indefinitely.\r\n *\r\n * @param count Number of times to loop animation\r\n * @return Animation\r\n */\r\n Animation.prototype.loop = function (count) {\r\n if (!$type.isNumber(count)) {\r\n count = Infinity;\r\n }\r\n this._loop = count;\r\n return this;\r\n };\r\n /**\r\n * Pauses animation.\r\n *\r\n * @return Animation\r\n */\r\n Animation.prototype.pause = function () {\r\n this._pause = true;\r\n if (this._delayTimeout) {\r\n this.removeDispose(this._delayTimeout);\r\n this._delayTimeout = null;\r\n }\r\n $array.remove(system.animations, this);\r\n $array.remove(this.object.animations, this);\r\n return this;\r\n };\r\n /**\r\n * Resumes paused animation.\r\n *\r\n * @return Animation\r\n */\r\n Animation.prototype.resume = function () {\r\n this._start();\r\n this._startTime = Date.now() - this._time;\r\n return this;\r\n };\r\n /**\r\n * Jumps to animation end. If animation is set to loop, this will start\r\n * another round of animation from start.\r\n *\r\n * @return Animation\r\n */\r\n Animation.prototype.end = function () {\r\n // Pause and complete the progress\r\n if (this._loop == 0) {\r\n this.pause();\r\n }\r\n this.setProgress(1);\r\n // Apply static options\r\n this.applyStaticOptions();\r\n if (this.events.isEnabled(\"animationended\")) {\r\n var event_2 = {\r\n type: \"animationended\",\r\n target: this,\r\n progress: this.progress\r\n };\r\n this.events.dispatchImmediately(\"animationended\", event_2);\r\n }\r\n // Check if we should loop\r\n if (this._loop > 0) {\r\n this._loop--;\r\n this.start();\r\n }\r\n else {\r\n this.stop();\r\n this._isFinished = true;\r\n }\r\n return this;\r\n };\r\n /**\r\n * Stops animation immediately leaving properties in their current values.\r\n */\r\n Animation.prototype.kill = function () {\r\n this.pause();\r\n this._isFinished = true;\r\n };\r\n /**\r\n * Returns indicator if this animation is finished or not\r\n *\r\n * @return Is finished?\r\n */\r\n Animation.prototype.isFinished = function () {\r\n return this._isFinished;\r\n };\r\n /**\r\n * Applies static options that can't be animated.\r\n */\r\n Animation.prototype.applyStaticOptions = function () {\r\n var _this = this;\r\n $array.each(this.staticOptions, function (options) {\r\n if (options.childObject) {\r\n options.childObject[options.property] = _this.progress == 1 ? options.to : options.from;\r\n }\r\n else {\r\n _this.object[options.property] = _this.progress == 1 ? options.to : options.from;\r\n }\r\n });\r\n };\r\n /**\r\n * Stops animation.\r\n *\r\n * When animation is stopped, the properties of the target object will remain\r\n * where they were at the moment when `stop()` was called.\r\n *\r\n * @param skipEvent Do not trigger `animationstopped` event\r\n * @return Animation\r\n */\r\n Animation.prototype.stop = function (skipEvent) {\r\n this.pause();\r\n if (!skipEvent) {\r\n if (this.events.isEnabled(\"animationstopped\")) {\r\n var event_3 = {\r\n type: \"animationstopped\",\r\n target: this,\r\n progress: this.progress\r\n };\r\n this.events.dispatchImmediately(\"animationstopped\", event_3);\r\n }\r\n }\r\n return this;\r\n };\r\n /**\r\n * Sets current progress and updates object's numeric and color values.\r\n *\r\n * @param progress Progress (0-1)\r\n */\r\n Animation.prototype.setProgress = function (progress) {\r\n var _this = this;\r\n this._time = this.duration * progress; // just in case we call this from outside\r\n $array.each(this.animationOptions, function (options) {\r\n if (options.updateMethod && $type.hasValue(options.from)) {\r\n var value = options.updateMethod(progress, options.from, options.to);\r\n if (options.childObject) {\r\n options.childObject[options.property] = value;\r\n }\r\n else {\r\n _this.object[options.property] = value;\r\n }\r\n }\r\n });\r\n this.progress = progress;\r\n if (this.events.isEnabled(\"animationprogress\")) {\r\n var event_4 = {\r\n type: \"animationprogress\",\r\n target: this,\r\n progress: this.progress\r\n };\r\n this.events.dispatchImmediately(\"animationprogress\", event_4);\r\n }\r\n system.requestFrame();\r\n };\r\n /**\r\n * Tracks and sets progress according to time or frames.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Animation\r\n */\r\n Animation.prototype.update = function () {\r\n if (!this._pause) {\r\n var progress = void 0;\r\n this._time = $math.fitToRange(Date.now() - this._startTime, 0, this.duration);\r\n var timeProgress = this._time / this.duration;\r\n progress = this.easing(timeProgress);\r\n if (this.duration == 0 || !$type.isNumber(progress) || timeProgress >= 1) {\r\n progress = 1;\r\n }\r\n this.setProgress(progress);\r\n if ($math.round(this._time / this.duration, 6) == 1) {\r\n this.end();\r\n }\r\n }\r\n return this;\r\n };\r\n Object.defineProperty(Animation.prototype, \"delayed\", {\r\n /**\r\n * Returns `true` if this animation is delayed.\r\n *\r\n * @readonly\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this._delayTimeout ? true : false;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Checks other animations currently running on the same object and removes\r\n * overlapping options from those other animations that are contained in\r\n * this animation.\r\n *\r\n * This is needed to ensure that no two confurent animations step on each\r\n * other's toes by trying to animate the same property.\r\n */\r\n Animation.prototype.stopSameAnimations = function () {\r\n var _this = this;\r\n // stop animation of the same property\r\n // TODO make this more efficient\r\n // TODO don't copy the array\r\n $array.each($array.copy(this.object.animations), function (animation) {\r\n if (animation !== _this && !animation.delayed) {\r\n var killed_1 = [];\r\n $array.each(_this.animationOptions, function (newOptions) {\r\n $array.each(animation.animationOptions, function (oldOptions) {\r\n if (newOptions.property == oldOptions.property && newOptions.childObject == oldOptions.childObject) {\r\n killed_1.push(oldOptions);\r\n if (animation.animationOptions.length == 0) {\r\n animation.kill();\r\n }\r\n }\r\n });\r\n });\r\n $array.each(killed_1, function (oldOptions) {\r\n $array.remove(animation.animationOptions, oldOptions);\r\n });\r\n }\r\n });\r\n };\r\n /**\r\n * Adds easing functions to \"function\" fields.\r\n *\r\n * @param field Field name\r\n * @return Assign as function?\r\n */\r\n Animation.prototype.asFunction = function (field) {\r\n return field == \"easing\" || _super.prototype.asIs.call(this, field);\r\n };\r\n return Animation;\r\n}(BaseObjectEvents));\r\nexport { Animation };\r\n//# sourceMappingURL=Animation.js.map","import * as $math from \"./Math\";\r\nimport * as $type from \"./Type\";\r\n/**\r\n * ============================================================================\r\n * UTILITY FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Searches `array` for `value`.\r\n *\r\n * Returns -1 if not found.\r\n *\r\n * @param array Source array\r\n * @param value Value to search\r\n * @returns Index\r\n */\r\nexport function indexOf(array, value) {\r\n var length = array.length;\r\n for (var i = 0; i < length; ++i) {\r\n // TODO handle NaN\r\n if (array[i] === value) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\n/**\r\n * Calls `test` for each element in `array`.\r\n *\r\n * If `test` returns `true` then it immediately returns `true`.\r\n *\r\n * If `test` returns `false` for all of the elements in `array` then it returns `false`.\r\n *\r\n * @param array Source array\r\n * @param test Function which is called on each element\r\n * @returns Whether `test` returned true or not\r\n */\r\nexport function any(array, test) {\r\n var length = array.length;\r\n for (var i = 0; i < length; ++i) {\r\n if (test(array[i])) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n/**\r\n * Calls `fn` function for every member of array and returns a new array out\r\n * of all outputs.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n * @returns New array\r\n */\r\nexport function map(array, fn) {\r\n var length = array.length;\r\n var output = new Array(length);\r\n for (var i = 0; i < length; ++i) {\r\n output[i] = fn(array[i], i);\r\n }\r\n return output;\r\n}\r\n/**\r\n * Iterates through all items in array and calls `fn` function for each of\r\n * them.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n */\r\nexport function each(array, fn) {\r\n var length = array.length;\r\n for (var i = 0; i < length; ++i) {\r\n fn(array[i], i);\r\n }\r\n}\r\n/**\r\n * Iterates through all items in array in reverse order and calls `fn` function for each of\r\n * them.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n */\r\nexport function eachReverse(array, fn) {\r\n var i = array.length;\r\n while (i--) {\r\n fn(array[i], i);\r\n }\r\n}\r\n/**\r\n * Iterates through all items in array and calls `fn` function for each of\r\n * them.\r\n *\r\n * If `fn` call evaluates to `false`, further iteration is cancelled.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n */\r\nexport function eachContinue(array, fn) {\r\n var length = array.length;\r\n for (var i = 0; i < length; ++i) {\r\n if (!fn(array[i], i)) {\r\n break;\r\n }\r\n }\r\n}\r\n/**\r\n * Shifts an item at `index` towards beginning of the array.\r\n *\r\n * @param array Source array\r\n * @param index Target element index\r\n */\r\nexport function shiftLeft(array, index) {\r\n var length = array.length;\r\n for (var i = index; i < length; ++i) {\r\n array[i - index] = array[i];\r\n }\r\n array.length = length - index;\r\n}\r\n/**\r\n * Returns the last item of the array.\r\n *\r\n * @param array Source array\r\n * @returns Last item\r\n */\r\nexport function last(array) {\r\n var length = array.length;\r\n return length ? array[length - 1] : undefined;\r\n}\r\n/**\r\n * Returns the first item of the array.\r\n *\r\n * @param array Source array\r\n * @returns Last item\r\n */\r\nexport function first(array) {\r\n return array[0];\r\n}\r\n/**\r\n * Inserts `element` into `array` at `index`.\r\n *\r\n * Caps `index` to be between `0` and `array.length`\r\n *\r\n * @param array Source array\r\n * @param element Item to insert\r\n * @param array Index to insert item at\r\n */\r\nexport function insert(array, element, index) {\r\n //if (array) {\r\n index = $math.fitToRange(index, 0, array.length);\r\n array.splice(index, 0, element);\r\n //}\r\n}\r\n/**\r\n * Removes all copies of `element` from `array` (if they exist) and then\r\n * inserts `element` at `index`.\r\n *\r\n * @param array Source array\r\n * @param element Item\r\n * @param array Index to move item to\r\n */\r\nexport function setIndex(array, element, index) {\r\n remove(array, element);\r\n insert(array, element, index);\r\n}\r\n/**\r\n * Pushes all of the elements from `input` into `array`.\r\n *\r\n * @param array Output array\r\n * @param input Input array\r\n */\r\nexport function pushAll(array, input) {\r\n var length = input.length;\r\n for (var i = 0; i < length; ++i) {\r\n array.push(input[i]);\r\n }\r\n}\r\n/**\r\n * Removes `element` from `array`.\r\n *\r\n * If there are multiple copies of `element`, they are all removed.\r\n *\r\n * @param array Source array\r\n * @param element Item to remove\r\n */\r\nexport function remove(array, element) {\r\n var found = false;\r\n var index = array.indexOf(element);\r\n if (index !== -1) {\r\n found = true;\r\n array.splice(index, 1);\r\n var length_1 = array.length;\r\n while (index < length_1) {\r\n // TODO handle NaN\r\n if (array[index] === element) {\r\n array.splice(index, 1);\r\n --length_1;\r\n }\r\n else {\r\n ++index;\r\n }\r\n }\r\n }\r\n return found;\r\n}\r\n/**\r\n * Adds an `element` to `array`.\r\n *\r\n * If array already contains and item like this, it is removed before adding\r\n * it again.\r\n *\r\n * Optionally `toIndex` can be specified to add element at specific index.\r\n *\r\n * @param array Source array\r\n * @param element Item to add\r\n * @param array Index to move item to\r\n */\r\nexport function move(array, element, toIndex) {\r\n // @todo this implementation must be the same as the List.moveValue method\r\n // @todo don't do anything if the desired index is the same as the current index\r\n var index = indexOf(array, element);\r\n // @todo remove all old values rather than only the first ?\r\n if (index !== -1) {\r\n removeIndex(array, index);\r\n }\r\n if (toIndex == null) {\r\n array.push(element);\r\n }\r\n else {\r\n insertIndex(array, toIndex, element);\r\n }\r\n}\r\n/**\r\n * Inserts `element` into `array` at `index`.\r\n *\r\n * If `index` is not provided, it will insert `element` at the end of `array`.\r\n *\r\n * @param array Source array\r\n * @param element Item to add\r\n * @param array Index to add item at\r\n */\r\nexport function add(array, element, index) {\r\n // Append to the end if index is not set\r\n if (!$type.isNumber(index)) {\r\n array.push(element);\r\n }\r\n // Add to the beginning of array if index is 0\r\n else if (index === 0) {\r\n array.unshift(element);\r\n }\r\n // Add to indicated place if index is set\r\n else {\r\n array.splice(index, 0, element);\r\n }\r\n}\r\n/**\r\n * Removes `element` from `array` (if it exists) and then inserts `element` at\r\n * `index`.\r\n *\r\n * If `index` is not provided, it will insert `element` at the end of `array`.\r\n *\r\n * @param array Source array\r\n * @param element Item to remove\r\n * @param array Index to move item to\r\n */\r\nexport function replace(array, element, index) {\r\n // check if exists\r\n var ind = array.indexOf(element);\r\n // remove if exists\r\n if (ind !== -1) {\r\n array.splice(ind, 1);\r\n }\r\n // add to end if index is not set\r\n if (!$type.isNumber(index)) {\r\n array.push(element);\r\n }\r\n // add to indicated place if index is set\r\n else {\r\n array.splice(index, 0, element);\r\n }\r\n}\r\n/**\r\n * Wraps `input` in an array, if it isn't already an array.\r\n *\r\n * @param input Source value\r\n * @return An array\r\n */\r\nexport function toArray(input) {\r\n if (Array.isArray(input)) {\r\n return input;\r\n }\r\n else {\r\n return [input];\r\n }\r\n}\r\n/**\r\n * Returns `true` if `element` exists in `array`.\r\n *\r\n * @param array Source array\r\n * @param element Item to search for\r\n * @returns Item in array?\r\n */\r\nexport function has(array, element) {\r\n return indexOf(array, element) !== -1;\r\n}\r\n/**\r\n * Returns a shallow copy of `array`.\r\n *\r\n * @param array Source array\r\n * @returns Copy of the array\r\n */\r\nexport function copy(array) {\r\n var length = array.length;\r\n // It's faster to create the array with a pre-defined length\r\n var output = new Array(length);\r\n for (var i = 0; i < length; ++i) {\r\n // Because the array has a pre-defined length, we have to assign rather than push\r\n // This is also faster than pushing\r\n output[i] = array[i];\r\n }\r\n return output;\r\n}\r\n/**\r\n * Returns a copy of `array` which contains all the elements between `start`\r\n * and `end`. (including `start` and excluding `end`)\r\n *\r\n * If `end` is not provided, it defaults to `array.length`.\r\n *\r\n * @param array Source array\r\n * @param start Start index\r\n * @param end End index\r\n * @returns Part of the array\r\n */\r\nexport function slice(array, start, end) {\r\n if (end === void 0) { end = array.length; }\r\n var output = new Array(end - start);\r\n for (var i = start; i < end; ++i) {\r\n output[i - start] = array[i];\r\n }\r\n return output;\r\n}\r\n/**\r\n * Inserts a value into array at specific index.\r\n *\r\n * @param array Source array\r\n * @param index Index\r\n * @param value Value to insert\r\n */\r\nexport function insertIndex(array, index, value) {\r\n array.splice(index, 0, value);\r\n}\r\n/**\r\n * Removes a value from array at specific index.\r\n *\r\n * @param array Source array\r\n * @param index Index\r\n */\r\nexport function removeIndex(array, index) {\r\n array.splice(index, 1);\r\n}\r\n/**\r\n * Orders an array using specific `ordering` function and returns index of\r\n * the `value`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param array Source array\r\n * @param ordering An ordering function\r\n * @param value Value to search for\r\n * @returns Result of the search\r\n */\r\nexport function getSortedIndex(array, ordering, value) {\r\n var start = 0;\r\n var end = array.length;\r\n var found = false;\r\n while (start < end) {\r\n // TODO is this faster/slower than using Math.floor ?\r\n var pivot = (start + end) >> 1;\r\n var order = ordering(value, array[pivot]);\r\n // less\r\n if (order < 0) {\r\n end = pivot;\r\n // equal\r\n }\r\n else if (order === 0) {\r\n found = true;\r\n start = pivot + 1;\r\n // more\r\n }\r\n else {\r\n start = pivot + 1;\r\n }\r\n }\r\n return {\r\n found: found,\r\n index: (found ? start - 1 : start)\r\n };\r\n}\r\n/**\r\n * Searches the array using custom function and returns index of the item if\r\n * found.\r\n *\r\n * Will call `matches` function on all items of the array. If return value\r\n * evaluates to `true`, index is returned.\r\n *\r\n * Otherwise returns -1.\r\n *\r\n * @param array Source array\r\n * @param matches Search function\r\n * @returns Index of the item if found\r\n */\r\nexport function findIndex(array, matches) {\r\n var length = array.length;\r\n for (var i = 0; i < length; ++i) {\r\n if (matches(array[i], i)) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\n/**\r\n * Searches the array using custom function and returns item if found.\r\n *\r\n * Will call `matches` function on all items of the array. If return value\r\n * evaluates to `true`, index is returned.\r\n *\r\n * Otherwise returns `undefined`.\r\n *\r\n * @param array Source array\r\n * @param matches Search function\r\n * @returns Item if found\r\n */\r\nexport function find(array, matches) {\r\n var index = findIndex(array, matches);\r\n if (index !== -1) {\r\n return array[index];\r\n }\r\n}\r\n/**\r\n * Iterates through all items in array and calls `fn` function for each of\r\n * them.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n */\r\nexport function shuffle(array) {\r\n // https://stackoverflow.com/a/2450976/449477\r\n var currentIndex = array.length, temporaryValue, randomIndex;\r\n // While there remain elements to shuffle...\r\n while (0 !== currentIndex) {\r\n // Pick a remaining element...\r\n randomIndex = Math.floor(Math.random() * currentIndex);\r\n currentIndex -= 1;\r\n // And swap it with the current element.\r\n temporaryValue = array[currentIndex];\r\n array[currentIndex] = array[randomIndex];\r\n array[randomIndex] = temporaryValue;\r\n }\r\n}\r\nexport function keepIf(array, keep) {\r\n var length = array.length;\r\n var i = 0;\r\n while (i < length) {\r\n if (keep(array[i])) {\r\n ++i;\r\n }\r\n else {\r\n array.splice(i, 1);\r\n --length;\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=Array.js.map","/**\r\n * A collection of low-level async operation stuff.\r\n */\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport * as $array from \"./Array\";\r\nvar pendingFrame = false;\r\nvar nextQueue = [];\r\nvar readQueue = [];\r\nvar writeQueue = [];\r\nvar idleQueue = [];\r\nvar fps = 1000 / 60;\r\n/**\r\n * [raf description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport var raf = (typeof requestAnimationFrame === \"function\"\r\n ? function (fn) {\r\n requestAnimationFrame(fn);\r\n }\r\n : function (fn) {\r\n setTimeout(fn, fps);\r\n });\r\n/**\r\n * [frameLoop description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nfunction frameLoop() {\r\n var now = Date.now();\r\n var length = nextQueue.length;\r\n for (var i = 0; i < length; ++i) {\r\n nextQueue[i](now);\r\n }\r\n $array.shiftLeft(nextQueue, length);\r\n for (var i = 0; i < readQueue.length; ++i) {\r\n readQueue[i](now);\r\n }\r\n readQueue.length = 0;\r\n for (var i = 0; i < writeQueue.length; ++i) {\r\n writeQueue[i](now);\r\n }\r\n writeQueue.length = 0;\r\n if (nextQueue.length === 0 && readQueue.length === 0) {\r\n pendingFrame = false;\r\n }\r\n else {\r\n raf(frameLoop);\r\n }\r\n}\r\n/**\r\n * [pendFrame description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nfunction pendFrame() {\r\n if (!pendingFrame) {\r\n pendingFrame = true;\r\n raf(frameLoop);\r\n }\r\n}\r\n/**\r\n * [nextFrame description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param fn [description]\r\n */\r\nexport function nextFrame(fn) {\r\n nextQueue.push(fn);\r\n pendFrame();\r\n}\r\n/**\r\n * [readFrame description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param fn [description]\r\n */\r\nexport function readFrame(fn) {\r\n readQueue.push(fn);\r\n pendFrame();\r\n}\r\n/**\r\n * [writeFrame description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param fn [description]\r\n */\r\nexport function writeFrame(fn) {\r\n writeQueue.push(fn);\r\n pendFrame();\r\n}\r\n/**\r\n * [whenIdle description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param fn [description]\r\n */\r\nexport function whenIdle(fn) {\r\n idleQueue.push(fn);\r\n}\r\n/**\r\n * [triggerIdle description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @todo Maybe don't trigger a callback which was added while in the middle of triggering?\r\n */\r\nexport function triggerIdle() {\r\n var now = Date.now();\r\n var length = idleQueue.length;\r\n for (var i = 0; i < length; ++i) {\r\n idleQueue.shift()(now);\r\n }\r\n}\r\n//# sourceMappingURL=AsyncPending.js.map","// Also detects iOS\r\nexport function isSafari() {\r\n return /apple/i.test(navigator.vendor);\r\n}\r\nexport function isInternetExplorer() {\r\n return /MSIE |Trident\\//.test(navigator.userAgent);\r\n}\r\n//# sourceMappingURL=Browser.js.map","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Dictionary } from \"./Dictionary\";\r\nimport * as $type from \"./Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Represents object cache.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Better storage\r\n * @todo TTL logging\r\n * @todo Garbage collector\r\n */\r\nvar Cache = /** @class */ (function () {\r\n function Cache() {\r\n /**\r\n * Storage for cache items.\r\n */\r\n this._storage = new Dictionary();\r\n /**\r\n * Default TTL in milliseconds.\r\n */\r\n this.ttl = 1000;\r\n }\r\n /**\r\n * Caches or updates cached value, resets TTL.\r\n *\r\n * If `ttl` is set to zero, item will never expire.\r\n *\r\n * @param owner An id of the object that owns this cache\r\n * @param key Index key\r\n * @param value Value\r\n * @param ttl TTL of the cache to live in milliseconds\r\n */\r\n Cache.prototype.set = function (owner, key, value, ttl) {\r\n // Create if storage does not exist for this owner\r\n var ownerStorage = this._storage.insertKeyIfEmpty(owner, function () { return new Dictionary(); });\r\n // Create cache item\r\n var item = {\r\n \"touched\": new Date().getTime(),\r\n \"ttl\": $type.isNumber(ttl) ? ttl : this.ttl,\r\n \"value\": value\r\n };\r\n // Set\r\n ownerStorage.setKey(key, item);\r\n };\r\n /**\r\n * Rerturns cached item, respecting TTL.\r\n *\r\n * @param owner An id of the object that owns this cache\r\n * @param key Index key\r\n * @param value Value to return if cache not available\r\n * @return Value, or `undefined` if not set\r\n */\r\n Cache.prototype.get = function (owner, key, value) {\r\n if (value === void 0) { value = undefined; }\r\n // \t\t || ypeof this._storage[owner][key] === \"undefined\" || this._storage[owner][key].expired === true) {\r\n if (this._storage.hasKey(owner)) {\r\n var ownerStorage = this._storage.getKey(owner);\r\n if (ownerStorage.hasKey(key)) {\r\n var cacheItem = ownerStorage.getKey(key);\r\n if (cacheItem.ttl && ((cacheItem.touched + cacheItem.ttl) < new Date().getTime())) {\r\n cacheItem.expired = true;\r\n }\r\n if (cacheItem.expired) {\r\n ownerStorage.removeKey(key);\r\n return value;\r\n }\r\n return cacheItem.value;\r\n }\r\n else {\r\n return value;\r\n }\r\n }\r\n else {\r\n return value;\r\n }\r\n };\r\n /**\r\n * Clears cache for specific owner or everything.\r\n *\r\n * @param owner Owner to clear cache for\r\n */\r\n Cache.prototype.clear = function (owner) {\r\n if (owner) {\r\n this._storage.removeKey(owner);\r\n }\r\n else {\r\n this._storage.clear();\r\n }\r\n };\r\n return Cache;\r\n}());\r\nexport { Cache };\r\n/**\r\n * ============================================================================\r\n * GLOBAL INSTANCE\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A global instance of cache. Use this instance to cache any values.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport var cache = new Cache();\r\n//# sourceMappingURL=Cache.js.map","/**\r\n * This module contains Color object definition\r\n */\r\nimport { registry } from \"../Registry\";\r\nimport * as $colors from \"./Colors\";\r\nimport * as $type from \"./Type\";\r\n/**\r\n * Represents a color.\r\n *\r\n * `Color` accepts value only in [[iRGB]] object format. To create `Color`\r\n * object by parsing it from any supported string-based formats, use helper\r\n * [[color]] function:\r\n *\r\n * ```TypeScript\r\n * am4core.color(\"#ff0000\");\r\n * am4core.color(\"#f00\");\r\n * am4core.color(\"rgb(255, 0, 0)\");\r\n * am4core.color(\"rgba(255, 0, 0, 0.5)\");\r\n * am4core.color({ r: 255, g: 0, b: 0 });\r\n * am4core.color(\"red\");\r\n * ```\r\n * ```JavaScript\r\n * am4core.color(\"#ff0000\");\r\n * am4core.color(\"#f00\");\r\n * am4core.color(\"rgb(255, 0, 0)\");\r\n * am4core.color(\"rgba(255, 0, 0, 0.5)\");\r\n * am4core.color({ r: 255, g: 0, b: 0 });\r\n * am4core.color(\"red\");\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/colors/} for color-related info\r\n */\r\nvar Color = /** @class */ (function () {\r\n /**\r\n * Constructor\r\n *\r\n * @param color Source color\r\n */\r\n function Color(color) {\r\n this._value = color;\r\n }\r\n Object.defineProperty(Color.prototype, \"rgb\", {\r\n /**\r\n * Returns [[iRGB]] representation of the color.\r\n *\r\n * @return RGB object\r\n */\r\n get: function () {\r\n return this._value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Color.prototype, \"hex\", {\r\n /**\r\n * Returns color hex value string, e.g. \"#FF0000\".\r\n *\r\n * @return Hex color code\r\n */\r\n get: function () {\r\n return this._value ? $colors.rgbToHex(this._value) : \"none\";\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Color.prototype, \"rgba\", {\r\n /**\r\n * Returns an `rgba()` representation of the color, e.g.:\r\n * `rgba(255, 0, 0, 0.5)`.\r\n *\r\n * @return rgba color string\r\n */\r\n get: function () {\r\n return this._value ? $colors.rgbToRGBA(this._value) : \"none\";\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Color.prototype, \"alpha\", {\r\n /**\r\n * Returns current transparency.\r\n *\r\n * @return Alpha (0-1)\r\n */\r\n get: function () {\r\n if (this._value != null && this._value.a != null) {\r\n return this._value.a;\r\n }\r\n else {\r\n return 1;\r\n }\r\n },\r\n /**\r\n * Set alpha (transparency) of the color.\r\n *\r\n * @param value Alpha (0-1)\r\n */\r\n set: function (value) {\r\n if (this._value) {\r\n this._value.a = value;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Color.prototype, \"lightColor\", {\r\n /**\r\n * Returns current light color setting.\r\n *\r\n * @return Color\r\n */\r\n get: function () {\r\n if (!this._lightColor) {\r\n this._lightColor = new Color({ r: 255, g: 255, b: 255 });\r\n }\r\n return this._lightColor;\r\n },\r\n /**\r\n * Sets \"light\" color. Used when determining contrasting color.\r\n *\r\n * @param color Color\r\n */\r\n set: function (color) {\r\n this._lightColor = color;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Color.prototype, \"darkColor\", {\r\n /**\r\n * Returns current dark color setting.\r\n *\r\n * @return Color\r\n */\r\n get: function () {\r\n if (!this._darkColor) {\r\n this._darkColor = new Color({ r: 0, g: 0, b: 0 });\r\n }\r\n return this._darkColor;\r\n },\r\n /**\r\n * Sets \"dark\" color. Used when determining contrasting color.\r\n *\r\n * @param color Color\r\n */\r\n set: function (color) {\r\n this._darkColor = color;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Overrides `toString` method so that [[Color]] object can be used as\r\n * string.\r\n *\r\n * @ignore Exclude from docs\r\n * @return String represantion of color (usable in CSS)\r\n */\r\n Color.prototype.toString = function () {\r\n return this.alpha < 1 ? this.rgba : this.hex;\r\n };\r\n /**\r\n * Returns a new [[Color]] which is percent lighter (positive value),\r\n * or darker (negative value).\r\n *\r\n * Parameter is in the scale of -1 to 1.\r\n *\r\n * @param percent Increase/decrease lightness by X\r\n * @return New Color\r\n */\r\n Color.prototype.lighten = function (percent) {\r\n return new Color($colors.lighten(this.rgb, percent));\r\n };\r\n /**\r\n * Returns a new [[Color]] which is percent brighter (positive value),\r\n * or darker (negative value).\r\n *\r\n * Parameter is in the scale of -1 to 1.\r\n *\r\n * @param percent Increase/decrease brightness by X\r\n * @return New Color\r\n */\r\n Color.prototype.brighten = function (percent) {\r\n return new Color($colors.brighten(this.rgb, percent));\r\n };\r\n /**\r\n * Returns a new [[Color]] based on current color with specific saturation\r\n * applied.\r\n *\r\n * `saturation` can be in the range of 0 (fully desaturated) to 1 (fully\r\n * saturated).\r\n *\r\n * @param saturation Saturation (0-1)\r\n * @return New (saturated) color\r\n */\r\n Color.prototype.saturate = function (saturation) {\r\n return new Color($colors.saturate(this.rgb, saturation));\r\n };\r\n Object.defineProperty(Color.prototype, \"alternative\", {\r\n /**\r\n * Returns a either light or dark color that contrasts specifically with\r\n * this color.\r\n *\r\n * Uses properties `darkColor` (default black) and `lightColor` (default\r\n * white).\r\n *\r\n * Useful when determining which color label should be on a colored\r\n * background, so that it stands out.\r\n *\r\n * @return Contrasting color\r\n */\r\n get: function () {\r\n if (this.rgb != null) {\r\n return $colors.isLight(this.rgb) ? this.darkColor : this.lightColor;\r\n }\r\n else {\r\n throw new Error(\"Color does not exist\");\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Color;\r\n}());\r\nexport { Color };\r\n/**\r\n * Resolves an input variable to a normal [[iRGB]] color and creates [[Color]]\r\n * object for it.\r\n *\r\n * @param value Input value\r\n * @param alpha Alpha (0-1)\r\n * @return Color object\r\n */\r\nexport function color(value, alpha) {\r\n if (!$type.hasValue(value)) {\r\n return new Color(undefined);\r\n }\r\n if (typeof value == \"string\") {\r\n var cacheId = \"_color_\" + value + \"_\" + (alpha || \"1\");\r\n var cached = registry.getCache(cacheId);\r\n if (cached) {\r\n return new Color({\r\n r: cached.r,\r\n g: cached.g,\r\n b: cached.b,\r\n a: cached.a\r\n });\r\n }\r\n var rgb = $colors.rgb(value, alpha);\r\n registry.setCache(cacheId, rgb);\r\n return new Color(rgb);\r\n }\r\n // Check if it's already a Color object\r\n if (value instanceof Color) {\r\n if ($type.hasValue(alpha)) {\r\n value.alpha = alpha;\r\n }\r\n return value;\r\n }\r\n // Not a string or Color instance, it's the iRGB object then\r\n return new Color(value);\r\n}\r\n/**\r\n * Checks if supplied argument is instance of [[Color]].\r\n *\r\n * @param value Input value\r\n * @return Is Color?\r\n */\r\nexport function isColor(value) {\r\n return value instanceof Color;\r\n}\r\n/**\r\n * Converts any value to [[Color]].\r\n *\r\n * @param value Input value\r\n * @return Color\r\n */\r\nexport function castColor(value) {\r\n return color(value);\r\n}\r\n/**\r\n * Converts any value into a [[Color]].\r\n *\r\n * @param value Source value\r\n * @return Color object\r\n */\r\nexport function toColor(value) {\r\n if ($type.hasValue(value) && !isColor(value)) {\r\n return castColor(value);\r\n }\r\n return value;\r\n}\r\n//# sourceMappingURL=Color.js.map","/**\r\n * This module contains ColorSet object definition\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../Base\";\r\nimport { Color, color } from \"./Color\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $colors from \"./Colors\";\r\nimport * as $type from \"./Type\";\r\nimport * as $utils from \"./Utils\";\r\nimport * as $math from \"./Math\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Represents a set of colors. Can also generate colors according to set rules.\r\n *\r\n * @important\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/colors/} for color-related info\r\n */\r\nvar ColorSet = /** @class */ (function (_super) {\r\n __extends(ColorSet, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ColorSet() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Holds the list of the colors in this set. (preset or auto-generated)\r\n */\r\n _this._list = [];\r\n /**\r\n * Current step in a color generator's cycle.\r\n */\r\n _this._currentStep = 0;\r\n /**\r\n * If set to non-zero value, the ColorSet will start iterating colors from\r\n * that particular index, not the first color in the list.\r\n */\r\n _this._startIndex = 0;\r\n /**\r\n * Current pass in the color generator's cycle. Normally a generator would\r\n * cycle through all available hue range, then repeat it, alternating other\r\n * color properties, to generate distinctive colors.\r\n */\r\n _this._currentPass = 0;\r\n /**\r\n * A base color. If there are no colors pre-set in the color list, ColorSet\r\n * will use this color as a base when generating new ones, applying\r\n * `stepOptions` and `passOptions` to this base color.\r\n */\r\n _this.baseColor = new Color({\r\n r: 103,\r\n g: 183,\r\n b: 220\r\n });\r\n /**\r\n * Modifications to apply with each new generated color.\r\n */\r\n _this.stepOptions = {};\r\n /**\r\n * Modifications to apply on top of `stepOptions` for each \"pass\" of the\r\n * color generation.\r\n *\r\n * A \"pass\" is when ColorSet generates `minColors` number of colors.\r\n */\r\n _this.passOptions = {\r\n brighten: -0.2\r\n };\r\n /**\r\n * An index increment to use when iterating through color list.\r\n *\r\n * Default is 1, which means returning each and every color.\r\n *\r\n * Setting it to a bigger number will make ColorSet `next()` iterator skip\r\n * some colors.\r\n *\r\n * E.g. setting to 2, will return every second color in the list.\r\n *\r\n * This is useful, when the color list has colors that are too close each\r\n * other for contrast.\r\n *\r\n * However, having bigger number will mean that `next()` iterator will go\r\n * through the list quicker, and the generator will kick sooner.\r\n */\r\n _this.step = 1;\r\n /**\r\n * A number of colors to generate in one \"pass\".\r\n *\r\n * This setting can be automatically overridden, if ColorSet has a list of\r\n * pre-set colors. In such case ColorSet will generate exactly the same\r\n * number of colors with each pass as there were colors in original set.\r\n */\r\n _this.minColors = 20;\r\n /**\r\n * Do not let the \"lightness\" of generated color to fall below this\r\n * threshold.\r\n */\r\n _this.minLightness = 0.2;\r\n /**\r\n * Do not let the \"lightness\" of generated color to get above this threshold.\r\n */\r\n _this.maxLightness = 0.9;\r\n /**\r\n * Randomly shuffle generated colors.\r\n */\r\n _this.shuffle = false;\r\n /**\r\n * When colors are generated, based on `stepOptions`, each generated color\r\n * gets either lighter or darker.\r\n *\r\n * If this is set to `true`, color generator will switch to opposing spectrum\r\n * when reaching `minLightness` or `maxLightness`.\r\n *\r\n * E.g. if we start off with a red color, then gradually generate lighter\r\n * colors through rose shades, then switch back to dark red and gradually\r\n * increase the lightness of it until it reaches the starting red.\r\n *\r\n * If set to `false` it will stop there and cap lightness at whatever level\r\n * we hit `minLightness` or `maxLightness`, which may result in a number of\r\n * the same colors.\r\n */\r\n _this.wrap = true;\r\n /**\r\n * Re-use same colors in the pre-set list, when ColorSet runs out of colors,\r\n * rather than start generating new ones.\r\n */\r\n _this.reuse = false;\r\n /**\r\n * Saturation of colors. This will change saturation of all colors of color\r\n * set.\r\n *\r\n * It is recommended to set this in theme, as changing it at run time won't\r\n * make the items to redraw and change color.\r\n */\r\n _this.saturation = 1;\r\n _this.className = \"ColorSet\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(ColorSet.prototype, \"list\", {\r\n /**\r\n * Returns current list of colors.\r\n *\r\n * If there are none, a new list of colors is generated, based on various\r\n * ColorSet settings.\r\n *\r\n * @return Color list\r\n */\r\n get: function () {\r\n if (!this._list) {\r\n this.generate(this.minColors);\r\n }\r\n return this._list;\r\n },\r\n /**\r\n * Sets a list of pre-defined colors to use for the iterator.\r\n *\r\n * @param value Color list\r\n */\r\n set: function (value) {\r\n this._list = value;\r\n this.reset();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Gets reusable color.\r\n *\r\n * @param index Index of color\r\n * @return Color\r\n */\r\n ColorSet.prototype.getReusableColor = function (index) {\r\n if (this._list.length == 0) {\r\n this.generate(1);\r\n return this.list[0];\r\n }\r\n else {\r\n var tmpstep = index - (Math.floor(index / this._list.length) * this.list.length);\r\n return this.list[tmpstep];\r\n }\r\n };\r\n /**\r\n * Returns next color in the list using internal iterator counter.\r\n *\r\n * If `step` is set to something other than 1, it may return other color than\r\n * exact next one in the list.\r\n *\r\n * @return Color\r\n */\r\n ColorSet.prototype.next = function () {\r\n var color;\r\n if (this.list.length <= this._currentStep) {\r\n if (this.reuse) {\r\n color = this.getReusableColor(this._currentStep);\r\n }\r\n else {\r\n this.generate($math.max(this.minColors, this._currentStep + 1));\r\n color = this.list[this._currentStep];\r\n }\r\n }\r\n else {\r\n color = this.list[this._currentStep];\r\n }\r\n this._currentStep += this.step;\r\n return color.saturate(this.saturation);\r\n };\r\n /**\r\n * Returns a color at specific index in the list.\r\n *\r\n * @param i Index\r\n * @return Color\r\n */\r\n ColorSet.prototype.getIndex = function (i) {\r\n var color;\r\n if (this.list.length <= i) {\r\n if (this.reuse) {\r\n color = this.getReusableColor(i);\r\n }\r\n else {\r\n this.generate(this.minColors);\r\n color = this.getIndex(i);\r\n }\r\n }\r\n else {\r\n color = this.list[i];\r\n }\r\n return color.saturate(this.saturation);\r\n };\r\n /**\r\n * Resets internal iterator.\r\n *\r\n * Calling `next()` after this will return the very first color in the color\r\n * list, even if it was already returned before.\r\n */\r\n ColorSet.prototype.reset = function () {\r\n this._currentStep = this._startIndex;\r\n };\r\n Object.defineProperty(ColorSet.prototype, \"currentStep\", {\r\n /**\r\n * @return Step\r\n */\r\n get: function () {\r\n return this._currentStep;\r\n },\r\n /**\r\n * Sets current color iteration. You can use this property to skip some\r\n * colors from iteration. E.g. setting it to `10` will skip first ten\r\n * colors.\r\n *\r\n * Please note that the number is zero-based.\r\n *\r\n * @param value Step\r\n */\r\n set: function (value) {\r\n this._currentStep = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ColorSet.prototype, \"startIndex\", {\r\n /**\r\n * @return Index\r\n */\r\n get: function () {\r\n return this._startIndex;\r\n },\r\n /**\r\n * If set to non-zero value, the ColorSet will start iterating colors from\r\n * that particular index, not the first color in the list.\r\n *\r\n * @default 0\r\n * @since 4.4.9\r\n * @param value Index\r\n */\r\n set: function (value) {\r\n this._startIndex = value;\r\n this.reset();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Generates colors based on the various ColorSet settings.\r\n *\r\n * @param count Number of colors to generate\r\n */\r\n ColorSet.prototype.generate = function (count) {\r\n // Init\r\n var curColor = this.currentColor;\r\n var hsl = $colors.rgbToHsl($type.getValue(curColor.rgb));\r\n var hueStep = $type.hasValue(this.stepOptions.hue) ? this.stepOptions.hue : 1 / count;\r\n var mods = {\r\n brighten: 0,\r\n lighten: 0,\r\n hue: hsl.h,\r\n lightness: hsl.l,\r\n saturation: hsl.s\r\n };\r\n // Generate list of hues, and shuffle them\r\n var hues = [];\r\n var startIndex = this.list.length == 0 ? 0 : 1;\r\n if (this.reuse) {\r\n for (var i = startIndex; i <= count; i++) {\r\n hues.push($colors.rgbToHsl($type.getValue(this._list[i].rgb)).h);\r\n }\r\n }\r\n else {\r\n for (var i = startIndex; i <= count; i++) {\r\n var h = hsl.h + hueStep * i;\r\n if (this.wrap && (h > 1)) {\r\n h -= 1;\r\n }\r\n hues.push(h);\r\n }\r\n }\r\n // Shuffle colors randomly\r\n if (this.shuffle) {\r\n hues.sort(function (a, b) {\r\n return Math.random() - 0.5;\r\n });\r\n }\r\n // Generate colors by rotating hue\r\n for (var i = 0; i < count; i++) {\r\n // Update hue\r\n if (this.reuse) {\r\n hsl = $colors.rgbToHsl($type.getValue(this._list[i].rgb));\r\n }\r\n else {\r\n hsl.h = hues.shift();\r\n }\r\n // Apply HSL mods\r\n this.applyStepOptions(hsl, mods, i, this._currentPass);\r\n // Convert back to Color\r\n var c = color($colors.hslToRgb(hsl));\r\n // Apply regular color mods\r\n var brighten = (this.stepOptions.brighten || 0) * i + (this.passOptions.brighten || 0) * this._currentPass;\r\n if (brighten != 0) {\r\n if (this.wrap) {\r\n brighten = $utils.fitNumberRelative(brighten, this.minLightness, this.maxLightness);\r\n }\r\n else {\r\n brighten = $utils.fitNumber(brighten, this.minLightness, this.maxLightness);\r\n }\r\n c = c.brighten(brighten);\r\n }\r\n var lighten = (this.stepOptions.lighten || 0) * i + (this.passOptions.lighten || 0) * this._currentPass;\r\n if (lighten != 0) {\r\n if (this.wrap) {\r\n lighten = $utils.fitNumberRelative(lighten, this.minLightness, this.maxLightness);\r\n }\r\n else {\r\n lighten = $utils.fitNumber(lighten, this.minLightness, this.maxLightness);\r\n }\r\n c = c.lighten(lighten);\r\n }\r\n this._list.push(c);\r\n }\r\n this._currentPass++;\r\n };\r\n Object.defineProperty(ColorSet.prototype, \"currentColor\", {\r\n /**\r\n * Returns current last color. It's either the last color in the list of\r\n * colors, or `baseColor` if list is empty.\r\n *\r\n * @return Color\r\n */\r\n get: function () {\r\n if (this._list.length == 0) {\r\n return this.baseColor.saturate(this.saturation);\r\n }\r\n else {\r\n return this._list[this._list.length - 1].saturate(this.saturation);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Generates modifiers for color, based on what step and pass.\r\n *\r\n * @param hsl Curren HSL value of the color to modify\r\n * @param base The modifiers that were before modification to use as a base\r\n * @param step Current step\r\n * @param pass Current pass\r\n */\r\n ColorSet.prototype.applyStepOptions = function (hsl, base, step, pass) {\r\n // Process lightness\r\n hsl.l = base.lightness + (this.stepOptions.lightness || 0) * step + (this.passOptions.lightness || 0) * pass;\r\n if (this.wrap) {\r\n if (hsl.l > 1) {\r\n hsl.l = hsl.l - Math.floor(hsl.l);\r\n }\r\n else if (hsl.l < 0) {\r\n hsl.l = -(hsl.l - Math.floor(hsl.l));\r\n }\r\n hsl.l = $utils.fitNumberRelative(hsl.l, this.minLightness, this.maxLightness);\r\n }\r\n else {\r\n if (hsl.l > 1) {\r\n hsl.l = 1;\r\n }\r\n else if (hsl.l < 0) {\r\n hsl.l = 0;\r\n }\r\n hsl.l = $utils.fitNumber(hsl.l, this.minLightness, this.maxLightness);\r\n }\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n ColorSet.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Cast colors\r\n if ($type.hasValue(config.list) && $type.isArray(config.list)) {\r\n for (var i = 0, len = config.list.length; i < len; i++) {\r\n if (!(config.list[i] instanceof Color)) {\r\n config.list[i] = color(config.list[i]);\r\n }\r\n }\r\n }\r\n if ($type.hasValue(config.baseColor) && !(config.baseColor instanceof Color)) {\r\n config.baseColor = color(config.baseColor);\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n return ColorSet;\r\n}(BaseObject));\r\nexport { ColorSet };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ColorSet\"] = ColorSet;\r\n//# sourceMappingURL=ColorSet.js.map","/**\r\n * A collection of color-related functions\r\n */\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport * as $math from \"./Math\";\r\nimport * as $type from \"./Type\";\r\n/**\r\n * Define named colors for easy resolution to RGB.\r\n */\r\nvar namedColors = {\r\n aliceblue: { r: 240, g: 248, b: 255 },\r\n antiquewhite: { r: 250, g: 235, b: 215 },\r\n aqua: { r: 0, g: 255, b: 255 },\r\n aquamarine: { r: 127, g: 255, b: 212 },\r\n azure: { r: 240, g: 255, b: 255 },\r\n beige: { r: 245, g: 245, b: 220 },\r\n bisque: { r: 255, g: 228, b: 196 },\r\n black: { r: 0, g: 0, b: 0 },\r\n blanchedalmond: { r: 255, g: 235, b: 205 },\r\n blue: { r: 0, g: 0, b: 255 },\r\n blueviolet: { r: 138, g: 43, b: 226 },\r\n brown: { r: 165, g: 42, b: 42 },\r\n burlywood: { r: 222, g: 184, b: 135 },\r\n cadetblue: { r: 95, g: 158, b: 160 },\r\n chartreuse: { r: 127, g: 255, b: 0 },\r\n chocolate: { r: 210, g: 105, b: 30 },\r\n coral: { r: 255, g: 127, b: 80 },\r\n cornflowerblue: { r: 100, g: 149, b: 237 },\r\n cornsilk: { r: 255, g: 248, b: 220 },\r\n crimson: { r: 220, g: 20, b: 60 },\r\n cyan: { r: 0, g: 255, b: 255 },\r\n darkblue: { r: 0, g: 0, b: 139 },\r\n darkcyan: { r: 0, g: 139, b: 139 },\r\n darkgoldenrod: { r: 184, g: 134, b: 11 },\r\n darkgray: { r: 169, g: 169, b: 169 },\r\n darkgrey: { r: 169, g: 169, b: 169 },\r\n darkgreen: { r: 0, g: 100, b: 0 },\r\n darkkhaki: { r: 189, g: 183, b: 107 },\r\n darkmagenta: { r: 139, g: 0, b: 139 },\r\n darkolivegreen: { r: 85, g: 107, b: 47 },\r\n darkorange: { r: 255, g: 140, b: 0 },\r\n darkorchid: { r: 153, g: 50, b: 204 },\r\n darkred: { r: 139, g: 0, b: 0 },\r\n darksalmon: { r: 233, g: 150, b: 122 },\r\n darkseagreen: { r: 143, g: 188, b: 143 },\r\n darkslateblue: { r: 72, g: 61, b: 139 },\r\n darkslategray: { r: 47, g: 79, b: 79 },\r\n darkslategrey: { r: 47, g: 79, b: 79 },\r\n darkturquoise: { r: 0, g: 206, b: 209 },\r\n darkviolet: { r: 148, g: 0, b: 211 },\r\n deeppink: { r: 255, g: 20, b: 147 },\r\n deepskyblue: { r: 0, g: 191, b: 255 },\r\n dimgray: { r: 105, g: 105, b: 105 },\r\n dimgrey: { r: 105, g: 105, b: 105 },\r\n dodgerblue: { r: 30, g: 144, b: 255 },\r\n firebrick: { r: 178, g: 34, b: 34 },\r\n floralwhite: { r: 255, g: 250, b: 240 },\r\n forestgreen: { r: 34, g: 139, b: 34 },\r\n fuchsia: { r: 255, g: 0, b: 255 },\r\n gainsboro: { r: 220, g: 220, b: 220 },\r\n ghostwhite: { r: 248, g: 248, b: 255 },\r\n gold: { r: 255, g: 215, b: 0 },\r\n goldenrod: { r: 218, g: 165, b: 32 },\r\n gray: { r: 128, g: 128, b: 128 },\r\n grey: { r: 128, g: 128, b: 128 },\r\n green: { r: 0, g: 128, b: 0 },\r\n greenyellow: { r: 173, g: 255, b: 47 },\r\n honeydew: { r: 240, g: 255, b: 240 },\r\n hotpink: { r: 255, g: 105, b: 180 },\r\n indianred: { r: 205, g: 92, b: 92 },\r\n indigo: { r: 75, g: 0, b: 130 },\r\n ivory: { r: 255, g: 255, b: 240 },\r\n khaki: { r: 240, g: 230, b: 140 },\r\n lavender: { r: 230, g: 230, b: 250 },\r\n lavenderblush: { r: 255, g: 240, b: 245 },\r\n lawngreen: { r: 124, g: 252, b: 0 },\r\n lemonchiffon: { r: 255, g: 250, b: 205 },\r\n lightblue: { r: 173, g: 216, b: 230 },\r\n lightcoral: { r: 240, g: 128, b: 128 },\r\n lightcyan: { r: 224, g: 255, b: 255 },\r\n lightgoldenrodyellow: { r: 250, g: 250, b: 210 },\r\n lightgray: { r: 211, g: 211, b: 211 },\r\n lightgrey: { r: 211, g: 211, b: 211 },\r\n lightgreen: { r: 144, g: 238, b: 144 },\r\n lightpink: { r: 255, g: 182, b: 193 },\r\n lightsalmon: { r: 255, g: 160, b: 122 },\r\n lightseagreen: { r: 32, g: 178, b: 170 },\r\n lightskyblue: { r: 135, g: 206, b: 250 },\r\n lightslategray: { r: 119, g: 136, b: 153 },\r\n lightslategrey: { r: 119, g: 136, b: 153 },\r\n lightsteelblue: { r: 176, g: 196, b: 222 },\r\n lightyellow: { r: 255, g: 255, b: 224 },\r\n lime: { r: 0, g: 255, b: 0 },\r\n limegreen: { r: 50, g: 205, b: 50 },\r\n linen: { r: 250, g: 240, b: 230 },\r\n magenta: { r: 255, g: 0, b: 255 },\r\n maroon: { r: 128, g: 0, b: 0 },\r\n mediumaquamarine: { r: 102, g: 205, b: 170 },\r\n mediumblue: { r: 0, g: 0, b: 205 },\r\n mediumorchid: { r: 186, g: 85, b: 211 },\r\n mediumpurple: { r: 147, g: 112, b: 219 },\r\n mediumseagreen: { r: 60, g: 179, b: 113 },\r\n mediumslateblue: { r: 123, g: 104, b: 238 },\r\n mediumspringgreen: { r: 0, g: 250, b: 154 },\r\n mediumturquoise: { r: 72, g: 209, b: 204 },\r\n mediumvioletred: { r: 199, g: 21, b: 133 },\r\n midnightblue: { r: 25, g: 25, b: 112 },\r\n mintcream: { r: 245, g: 255, b: 250 },\r\n mistyrose: { r: 255, g: 228, b: 225 },\r\n moccasin: { r: 255, g: 228, b: 181 },\r\n navajowhite: { r: 255, g: 222, b: 173 },\r\n navy: { r: 0, g: 0, b: 128 },\r\n oldlace: { r: 253, g: 245, b: 230 },\r\n olive: { r: 128, g: 128, b: 0 },\r\n olivedrab: { r: 107, g: 142, b: 35 },\r\n orange: { r: 255, g: 165, b: 0 },\r\n orangered: { r: 255, g: 69, b: 0 },\r\n orchid: { r: 218, g: 112, b: 214 },\r\n palegoldenrod: { r: 238, g: 232, b: 170 },\r\n palegreen: { r: 152, g: 251, b: 152 },\r\n paleturquoise: { r: 175, g: 238, b: 238 },\r\n palevioletred: { r: 219, g: 112, b: 147 },\r\n papayawhip: { r: 255, g: 239, b: 213 },\r\n peachpuff: { r: 255, g: 218, b: 185 },\r\n peru: { r: 205, g: 133, b: 63 },\r\n pink: { r: 255, g: 192, b: 203 },\r\n plum: { r: 221, g: 160, b: 221 },\r\n powderblue: { r: 176, g: 224, b: 230 },\r\n purple: { r: 128, g: 0, b: 128 },\r\n rebeccapurple: { r: 102, g: 51, b: 153 },\r\n red: { r: 255, g: 0, b: 0 },\r\n rosybrown: { r: 188, g: 143, b: 143 },\r\n royalblue: { r: 65, g: 105, b: 225 },\r\n saddlebrown: { r: 139, g: 69, b: 19 },\r\n salmon: { r: 250, g: 128, b: 114 },\r\n sandybrown: { r: 244, g: 164, b: 96 },\r\n seagreen: { r: 46, g: 139, b: 87 },\r\n seashell: { r: 255, g: 245, b: 238 },\r\n sienna: { r: 160, g: 82, b: 45 },\r\n silver: { r: 192, g: 192, b: 192 },\r\n skyblue: { r: 135, g: 206, b: 235 },\r\n slateblue: { r: 106, g: 90, b: 205 },\r\n slategray: { r: 112, g: 128, b: 144 },\r\n slategrey: { r: 112, g: 128, b: 144 },\r\n snow: { r: 255, g: 250, b: 250 },\r\n springgreen: { r: 0, g: 255, b: 127 },\r\n steelblue: { r: 70, g: 130, b: 180 },\r\n tan: { r: 210, g: 180, b: 140 },\r\n teal: { r: 0, g: 128, b: 128 },\r\n thistle: { r: 216, g: 191, b: 216 },\r\n tomato: { r: 255, g: 99, b: 71 },\r\n turquoise: { r: 64, g: 224, b: 208 },\r\n violet: { r: 238, g: 130, b: 238 },\r\n wheat: { r: 245, g: 222, b: 179 },\r\n white: { r: 255, g: 255, b: 255 },\r\n whitesmoke: { r: 245, g: 245, b: 245 },\r\n yellow: { r: 255, g: 255, b: 0 },\r\n yellowgreen: { r: 154, g: 205, b: 50 }\r\n};\r\n/**\r\n * Tries to resolve a named color into a hex color representation.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Color name\r\n * @return Color\r\n * @deprecated\r\n * @hidden\r\n */\r\n/*export function resolveNamedColor(value: string): Color {\r\n return (<any>namedColors)[value] ? (<any>namedColors)[value] : undefined;\r\n}*/\r\n/**\r\n * Converts a proper color hex code (i.e. \"#FF5500\") or named color (i.e. \"red\")\r\n * into an {iRGB} object. If the code is not correctly formatted, an RGB of\r\n * black is returned.\r\n *\r\n * @ignore Exclude from docs\r\n * @param color Color code\r\n * @param alpha Alpha (0-1)\r\n * @return RGB\r\n */\r\nexport function rgb(color, alpha) {\r\n // Init return value\r\n var rgb;\r\n // Try resolving color format\r\n // Named color?\r\n if (namedColors[color]) {\r\n rgb = namedColors[color];\r\n }\r\n // Hex code?\r\n else if (color.charAt(0) === \"#\") {\r\n rgb = hexToRgb(color);\r\n }\r\n // rgb() format?\r\n else if (color.match(/^rgba?\\(/)) {\r\n rgb = rgbaToRgb(color);\r\n }\r\n // Was not able to resolve?\r\n if (!rgb) {\r\n rgb = { r: 0, g: 0, b: 0, a: 1 };\r\n }\r\n // Set alpha\r\n if ($type.hasValue(alpha)) {\r\n rgb.a = alpha;\r\n }\r\n return rgb;\r\n}\r\n/**\r\n * Converts a hex color code (i.e. \"#FF5500\") to an [[iRGB]] object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param hex Hex color code\r\n * @return RGB\r\n */\r\nexport function hexToRgb(hex) {\r\n // Expand shorthand form (e.g. \"03F\") to full form (e.g. \"0033FF\")\r\n var shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\r\n hex = hex.replace(shorthandRegex, function (m, r, g, b) {\r\n return r + r + g + g + b + b;\r\n });\r\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n return result ? {\r\n r: parseInt(result[1], 16),\r\n g: parseInt(result[2], 16),\r\n b: parseInt(result[3], 16)\r\n } : hexToRgbWithAlpha(hex);\r\n}\r\n/**\r\n * Converts a hex color code with alpha (i.e. \"#FF5500128\") to an [[iRGB]] object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param hex Hex color code\r\n * @return RGB\r\n */\r\nexport function hexToRgbWithAlpha(hex) {\r\n // Expand shorthand form (e.g. \"03FA\") to full form (e.g. \"0033FFAA\")\r\n var shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])([a-f\\d])$/i;\r\n hex = hex.replace(shorthandRegex, function (m, r, g, b, a) {\r\n return r + r + g + g + b + b + a + a;\r\n });\r\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n return result ? {\r\n r: parseInt(result[1], 16),\r\n g: parseInt(result[2], 16),\r\n b: parseInt(result[3], 16),\r\n a: parseInt(result[4], 16) / 256\r\n } : undefined;\r\n}\r\n/**\r\n * Converts color strings in format like `rgb()` and `rgba()` to [[iRGB]].\r\n *\r\n * @ignore Exclude from docs\r\n * @param color Color code\r\n * @return RGB\r\n */\r\nexport function rgbaToRgb(color) {\r\n color = color.replace(/[ ]/g, \"\");\r\n // Init\r\n var matches = color.match(/^rgb\\(([0-9]*),([0-9]*),([0-9]*)\\)/i);\r\n // Try rgb() format\r\n if (matches) {\r\n matches.push(\"1\");\r\n }\r\n else {\r\n matches = color.match(/^rgba\\(([0-9]*),([0-9]*),([0-9]*),([.0-9]*)\\)/i);\r\n if (!matches) {\r\n return;\r\n }\r\n }\r\n return {\r\n r: parseInt(matches[1]),\r\n g: parseInt(matches[2]),\r\n b: parseInt(matches[3]),\r\n a: parseFloat(matches[4])\r\n };\r\n}\r\n/**\r\n * Converts an [[iRGB]] object into a hex color code.\r\n *\r\n * @ignore Exclude from docs\r\n * @param rgb RGB\r\n * @return Hex color code\r\n */\r\nexport function rgbToHex(rgb) {\r\n return \"#\" + pad2(rgb.r.toString(16)) + pad2(rgb.g.toString(16)) + pad2(rgb.b.toString(16));\r\n}\r\n/**\r\n * Converts an [[iRGB]] object into its `rgb()` or `rgba()` representation.\r\n *\r\n * @ignore Exclude from docs\r\n * @param rgb RGB\r\n * @return `rgba()` syntax\r\n */\r\nexport function rgbToRGBA(rgb) {\r\n if ($type.hasValue(rgb.a) && rgb.a !== 1) {\r\n return \"rgba(\" + rgb.r + \",\" + rgb.g + \",\" + rgb.b + \",\" + rgb.a + \")\";\r\n }\r\n else {\r\n return \"rgb(\" + rgb.r + \",\" + rgb.g + \",\" + rgb.b + \")\";\r\n }\r\n}\r\n/**\r\n * Pads a 1-digit string with a zero.\r\n *\r\n * @ignore Exclude from docs\r\n * @param c Input string\r\n * @return Padded string\r\n */\r\nexport function pad2(c) {\r\n return c.length == 1 ? \"0\" + c : \"\" + c;\r\n}\r\n/**\r\n * Returns an intermediate color between two colors based on the relative\r\n * position. Position needs to be in range between 0 and 1. Zero meaning the\r\n * resulting color will be closest to the first reference color.\r\n *\r\n * @ignore Exclude from docs\r\n * @param color1 First reference color\r\n * @param color2 Second reference color\r\n * @param percent Relative position (0-1)\r\n * @return Interpolated color\r\n */\r\nexport function interpolate(rgb1, rgb2, percent) {\r\n percent = $math.fitToRange(percent, 0, 1);\r\n if (rgb1) {\r\n if (rgb2) {\r\n return {\r\n r: rgb1.r + Math.round((rgb2.r - rgb1.r) * percent),\r\n g: rgb1.g + Math.round((rgb2.g - rgb1.g) * percent),\r\n b: rgb1.b + Math.round((rgb2.b - rgb1.b) * percent),\r\n a: (rgb1.a || 1) + Math.round(((rgb2.a || 1) - (rgb1.a || 1)) * percent)\r\n };\r\n }\r\n else {\r\n return rgb1;\r\n }\r\n }\r\n else if (rgb2) {\r\n return rgb2;\r\n }\r\n else {\r\n return rgb1;\r\n }\r\n}\r\n/**\r\n * Returns a color that is `percent` brighter than the reference color.\r\n *\r\n * @ignore Exclude from docs\r\n * @param color Reference color\r\n * @param percent Brightness percent\r\n * @return Hex code of the new color\r\n */\r\nexport function lighten(rgb, percent) {\r\n if (rgb) {\r\n return {\r\n r: Math.max(0, Math.min(255, rgb.r + getLightnessStep(rgb.r, percent))),\r\n g: Math.max(0, Math.min(255, rgb.g + getLightnessStep(rgb.g, percent))),\r\n b: Math.max(0, Math.min(255, rgb.b + getLightnessStep(rgb.b, percent))),\r\n a: rgb.a\r\n };\r\n }\r\n else {\r\n // TODO is this correct ?\r\n return rgb;\r\n }\r\n}\r\n;\r\n/**\r\n * Gets lightness step.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Value\r\n * @param percent Percent\r\n * @return Step\r\n */\r\nexport function getLightnessStep(value, percent) {\r\n var base = percent > 0 ? 255 - value : value;\r\n return Math.round(base * percent);\r\n}\r\n/**\r\n * Returns a color that is `percent` brighter than the source `color`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param color Source color\r\n * @param percent Brightness percent\r\n * @return New color\r\n */\r\nexport function brighten(rgb, percent) {\r\n if (rgb) {\r\n var base = Math.min(Math.max(rgb.r, rgb.g, rgb.b), 230);\r\n //let base = Math.max(rgb.r, rgb.g, rgb.b);\r\n var step = getLightnessStep(base, percent);\r\n return {\r\n r: Math.max(0, Math.min(255, Math.round(rgb.r + step))),\r\n g: Math.max(0, Math.min(255, Math.round(rgb.g + step))),\r\n b: Math.max(0, Math.min(255, Math.round(rgb.b + step))),\r\n a: rgb.a\r\n };\r\n }\r\n else {\r\n // TODO is this correct ?\r\n return rgb;\r\n }\r\n}\r\n;\r\n/**\r\n * Returns brightness step.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Value\r\n * @param percent Percent\r\n * @return Step\r\n */\r\nexport function getBrightnessStep(value, percent) {\r\n var base = 255; //percent > 0 ? 255 - value : value;\r\n return Math.round(base * percent);\r\n}\r\n/**\r\n * Returns a new [[iRGB]] object based on `rgb` parameter with specific\r\n * saturation applied.\r\n *\r\n * `saturation` can be in the range of 0 (fully desaturated) to 1 (fully\r\n * saturated).\r\n *\r\n * @ignore Exclude from docs\r\n * @param color Base color\r\n * @param saturation Saturation (0-1)\r\n * @return New color\r\n */\r\nexport function saturate(rgb, saturation) {\r\n if (rgb == null || saturation == 1) {\r\n return rgb;\r\n }\r\n var hsl = rgbToHsl(rgb);\r\n hsl.s = saturation;\r\n return hslToRgb(hsl);\r\n}\r\n/*\r\n// not used\r\nexport function rgbToMatrix(rgb: iRGB): string {\r\n let r = $type.toText($math.round((rgb.r || 0) / 255, 10));\r\n let g = $type.toText($math.round((rgb.g || 0) / 255, 10));\r\n let b = $type.toText($math.round((rgb.b || 0) / 255, 10));\r\n let a = $type.toText(rgb.a || 1);\r\n return\t r + \" 0 0 0 0\" +\r\n \" 0 \" + g + \" 0 0 0\" +\r\n \" 0 0 \" + b + \" 0 0\" +\r\n \" 0 0 0 \" + a + \" 0\";\r\n}\r\n*/\r\n/**\r\n * The functions below are taken and adapted from Garry Tan's blog post:\r\n * http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c\r\n *\r\n * The further attributions go mjijackson.com, which now seems to be defunct.\r\n */\r\n/**\r\n * Converts an HSL color value to RGB. Conversion formula\r\n * adapted from http://en.wikipedia.org/wiki/HSL_color_space.\r\n * Assumes h, s, and l are contained in the set [0, 1] and\r\n * returns r, g, and b in the set [0, 255].\r\n *\r\n * Function adapted from:\r\n * http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c\r\n *\r\n * @ignore Exclude from docs\r\n * @param h The hue\r\n * @param s The saturation\r\n * @param l The lightness\r\n * @return The RGB representation\r\n */\r\nexport function hslToRgb(color) {\r\n var r, g, b;\r\n var h = color.h;\r\n var s = color.s;\r\n var l = color.l;\r\n if (s == 0) {\r\n r = g = b = l; // achromatic\r\n }\r\n else {\r\n var hue2rgb = function hue2rgb(p, q, t) {\r\n if (t < 0) {\r\n t += 1;\r\n }\r\n if (t > 1) {\r\n t -= 1;\r\n }\r\n if (t < 1 / 6) {\r\n return p + (q - p) * 6 * t;\r\n }\r\n if (t < 1 / 2) {\r\n return q;\r\n }\r\n if (t < 2 / 3) {\r\n return p + (q - p) * (2 / 3 - t) * 6;\r\n }\r\n return p;\r\n };\r\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\r\n var p = 2 * l - q;\r\n r = hue2rgb(p, q, h + 1 / 3);\r\n g = hue2rgb(p, q, h);\r\n b = hue2rgb(p, q, h - 1 / 3);\r\n }\r\n return {\r\n r: Math.round(r * 255),\r\n g: Math.round(g * 255),\r\n b: Math.round(b * 255)\r\n };\r\n}\r\n/**\r\n * Converts an RGB color value to HSL. Conversion formula\r\n * adapted from http://en.wikipedia.org/wiki/HSL_color_space.\r\n * Assumes r, g, and b are contained in the set [0, 255] and\r\n * returns h, s, and l in the set [0, 1].\r\n *\r\n * Function adapted from:\r\n * http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c\r\n *\r\n * @ignore Exclude from docs\r\n * @param r The red color value\r\n * @param g The green color value\r\n * @param b The blue color value\r\n * @return The HSL representation\r\n */\r\nexport function rgbToHsl(color) {\r\n var r = color.r / 255;\r\n var g = color.g / 255;\r\n var b = color.b / 255;\r\n var max = Math.max(r, g, b);\r\n var min = Math.min(r, g, b);\r\n var h = 0;\r\n var s = 0;\r\n var l = (max + min) / 2;\r\n if (max === min) {\r\n h = s = 0; // achromatic\r\n }\r\n else {\r\n var d = max - min;\r\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\r\n switch (max) {\r\n case r:\r\n h = (g - b) / d + (g < b ? 6 : 0);\r\n break;\r\n case g:\r\n h = (b - r) / d + 2;\r\n break;\r\n case b:\r\n h = (r - g) / d + 4;\r\n break;\r\n }\r\n h /= 6;\r\n }\r\n return {\r\n h: h,\r\n s: s,\r\n l: l\r\n };\r\n}\r\n/**\r\n * Converts an RGB color value to HSV. Conversion formula\r\n * adapted from http://en.wikipedia.org/wiki/HSV_color_space.\r\n * Assumes r, g, and b are contained in the set [0, 255] and\r\n * returns h, s, and v in the set [0, 1].\r\n *\r\n * @ignore Exclude from docs\r\n * @param Number r The red color value\r\n * @param Number g The green color value\r\n * @param Number b The blue color value\r\n * @return Array The HSV representation\r\n */\r\nexport function rgbToHsv(color) {\r\n var r = color.r / 255;\r\n var g = color.g / 255;\r\n var b = color.b / 255;\r\n var max = Math.max(r, g, b), min = Math.min(r, g, b);\r\n var h = 0;\r\n var s = 0;\r\n var v = max;\r\n var d = max - min;\r\n s = max == 0 ? 0 : d / max;\r\n if (max == min) {\r\n h = 0; // achromatic\r\n }\r\n else {\r\n switch (max) {\r\n case r:\r\n h = (g - b) / d + (g < b ? 6 : 0);\r\n break;\r\n case g:\r\n h = (b - r) / d + 2;\r\n break;\r\n case b:\r\n h = (r - g) / d + 4;\r\n break;\r\n }\r\n h /= 6;\r\n }\r\n return {\r\n h: h,\r\n s: s,\r\n v: v\r\n };\r\n}\r\n/**\r\n * Converts an HSV color value to RGB. Conversion formula\r\n * adapted from http://en.wikipedia.org/wiki/HSV_color_space.\r\n * Assumes h, s, and v are contained in the set [0, 1] and\r\n * returns r, g, and b in the set [0, 255].\r\n *\r\n * @ignore Exclude from docs\r\n * @param Number h The hue\r\n * @param Number s The saturation\r\n * @param Number v The value\r\n * @return Array The RGB representation\r\n */\r\nexport function hsvToRgb(color) {\r\n var r = 0;\r\n var g = 0;\r\n var b = 0;\r\n var h = color.h;\r\n var s = color.s;\r\n var v = color.v;\r\n var i = Math.floor(h * 6);\r\n var f = h * 6 - i;\r\n var p = v * (1 - s);\r\n var q = v * (1 - f * s);\r\n var t = v * (1 - (1 - f) * s);\r\n switch (i % 6) {\r\n case 0:\r\n r = v;\r\n g = t;\r\n b = p;\r\n break;\r\n case 1:\r\n r = q;\r\n g = v;\r\n b = p;\r\n break;\r\n case 2:\r\n r = p;\r\n g = v;\r\n b = t;\r\n break;\r\n case 3:\r\n r = p;\r\n g = q;\r\n b = v;\r\n break;\r\n case 4:\r\n r = t;\r\n g = p;\r\n b = v;\r\n break;\r\n case 5:\r\n r = v;\r\n g = p;\r\n b = q;\r\n break;\r\n }\r\n return {\r\n r: Math.round(r * 255),\r\n g: Math.round(g * 255),\r\n b: Math.round(b * 255)\r\n };\r\n}\r\n/**\r\n * Returns `true` if color is \"light\". Useful indetermining which contrasting\r\n * color to use for elements over this color. E.g.: you would want to use\r\n * black text over light background, and vice versa.\r\n *\r\n * @ignore Exclude from docs\r\n * @param color Source color\r\n * @return Light?\r\n */\r\nexport function isLight(color) {\r\n return ((color.r * 299) + (color.g * 587) + (color.b * 114)) / 1000 >= 128;\r\n}\r\n//# sourceMappingURL=Colors.js.map","/**\r\n * A collection of DOM-related functions.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Disposer } from \"./Disposer\";\r\nimport { readFrame, writeFrame } from \"./AsyncPending\";\r\nimport { options } from \"../Options\";\r\nimport * as $object from \"./Object\";\r\nimport * as $array from \"./Array\";\r\nimport * as $type from \"./Type\";\r\n/**\r\n * SVG namespace.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport var SVGNS = \"http://www.w3.org/2000/svg\";\r\n/**\r\n * XML namespace.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport var XMLNS = \"http://www.w3.org/2000/xmlns/\";\r\n/**\r\n * XLINK namespace.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport var XLINK = \"http://www.w3.org/1999/xlink\";\r\n/**\r\n * Function that adds a disposable event listener directly to a DOM element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dom A DOM element to add event to\r\n * @param type Event type\r\n * @param listener Event listener\r\n * @returns Disposable event\r\n */\r\nexport function addEventListener(dom, type, listener, options) {\r\n //@todo proper type check for options: EventListenerOptions | boolean (TS for some reason gives error on passive parameter)\r\n //console.log(type, dom);\r\n dom.addEventListener(type, listener, options || false);\r\n return new Disposer(function () {\r\n dom.removeEventListener(type, listener, options || false);\r\n });\r\n}\r\n/**\r\n * Finds and returns an element reference using following logic:\r\n * * If we pass in an element instance, we just return it back.\r\n * * If we pass in a string, the function looks for an element with such id.\r\n * * If no element with such id is found, we grab the first element with a tag name like this.\r\n *\r\n * @ignore Exclude from docs\r\n * @param el Element definition (reference, or id, or tag name)\r\n * @return Element reference\r\n * @todo Review this function as it seems pretty fuzzy and hacky\r\n */\r\nexport function getElement(el) {\r\n if ($type.isString(el)) {\r\n var e = document.getElementById(el);\r\n if (e == null) {\r\n e = document.getElementsByClassName(el)[0];\r\n }\r\n if (e instanceof HTMLElement) {\r\n return e;\r\n }\r\n }\r\n else if (el instanceof HTMLElement) {\r\n return el;\r\n }\r\n}\r\n/**\r\n * Adds a class name to an HTML or SVG element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element\r\n * @param className Class name to add\r\n */\r\nexport function addClass(element, className) {\r\n if (!element) {\r\n return;\r\n }\r\n if (element.classList) {\r\n var classes = className.split(\" \");\r\n $array.each(classes, function (name) {\r\n element.classList.add(name);\r\n });\r\n }\r\n else {\r\n var currentClassName = element.getAttribute(\"class\");\r\n if (currentClassName) {\r\n element.setAttribute(\"class\", currentClassName.split(\" \").filter(function (item) {\r\n return item !== className;\r\n }).join(\" \") + \" \" + className);\r\n }\r\n else {\r\n element.setAttribute(\"class\", className);\r\n }\r\n //element.className = element.className.replace(new RegExp(\"^\" + className + \"| \" + className), \"\") + \" \" + className;\r\n }\r\n}\r\n/**\r\n * Removes a class name from an HTML or SVG element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element\r\n * @param className Class name to add\r\n */\r\nexport function removeClass(element, className) {\r\n if (!element) {\r\n return;\r\n }\r\n if (element.classList) {\r\n element.classList.remove(className);\r\n }\r\n else {\r\n var currentClassName = element.getAttribute(\"class\");\r\n if (currentClassName) {\r\n element.setAttribute(\"class\", currentClassName.split(\" \").filter(function (item) {\r\n return item !== className;\r\n }).join(\" \"));\r\n }\r\n //element.className = element.className.replace(new RegExp(\"^\" + className + \"| \" + className), \"\");\r\n }\r\n}\r\n/**\r\n * Sets style property on DOM element.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Still needed?\r\n */\r\nexport function setStyle(element, property, value) {\r\n element.style[property] = value;\r\n}\r\n/**\r\n * Gets the computed style value for an element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport function getComputedStyle(element, property) {\r\n if (element.currentStyle) {\r\n return element.currentStyle[property];\r\n }\r\n return document.defaultView.getComputedStyle(element, null).getPropertyValue(property);\r\n}\r\n/**\r\n * Removes focus from any element by shifting focus to body.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport function blur() {\r\n if (document.activeElement && document.activeElement != document.body) {\r\n if (document.activeElement.blur) {\r\n document.activeElement.blur();\r\n }\r\n else {\r\n var input = document.createElement(\"button\");\r\n input.style.position = \"fixed\";\r\n input.style.top = \"0px\";\r\n input.style.left = \"-10000px\";\r\n document.body.appendChild(input);\r\n input.focus();\r\n input.blur();\r\n document.body.removeChild(input);\r\n }\r\n }\r\n}\r\n/**\r\n * Tries to focus the element.\r\n *\r\n * @ignore Exlude from docs\r\n * @param element Element to focus\r\n */\r\nexport function focus(element) {\r\n if (element instanceof HTMLElement) {\r\n element.focus();\r\n }\r\n else {\r\n var input = document.createElement(\"input\");\r\n var fo = document.createElementNS(SVGNS, \"foreignObject\");\r\n fo.appendChild(input);\r\n element.appendChild(fo);\r\n input.focus();\r\n input.disabled = true;\r\n fo.remove();\r\n }\r\n /*if ((<any>element).focus != undefined) {\r\n (<any>element).focus();\r\n }\r\n else if (element instanceof SVGSVGElement) {\r\n // Not implemented\r\n // @todo implement focus fallback\r\n }*/\r\n}\r\n/**\r\n * Returns markup for the element including the element tag itself.\r\n * SVG elements do not support `outerHTML` so this functions applies of\r\n * a workaround which creates a new temporary wrapper, clones element and uses\r\n * wrapper's `innerHTML`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element to get full markup for\r\n * @return Markup\r\n * @deprecated Not in use anywhere\r\n */\r\nexport function outerHTML(element) {\r\n if (element.outerHTML) {\r\n return element.outerHTML;\r\n }\r\n else {\r\n var twrap = document.createElement(\"div\");\r\n var tnode = element.cloneNode(true);\r\n twrap.appendChild(tnode);\r\n var content = twrap.innerHTML;\r\n return content;\r\n }\r\n}\r\n/**\r\n * Checks if element is a valid DOM node.\r\n *\r\n * @ignore Exclude from docs\r\n * @param el Element\r\n * @return `true` if element is a valid DOM node\r\n */\r\nexport function isElement(el) {\r\n return el instanceof Object && el && el.nodeType === 1;\r\n}\r\n/**\r\n * Checks of element `a` contains element `b`.\r\n *\r\n * @param a Aleged ascendant\r\n * @param b Aleged descendant\r\n * @return Contains?\r\n */\r\nexport function contains(a, b) {\r\n var cursor = b;\r\n while (true) {\r\n if (a === cursor) {\r\n return true;\r\n }\r\n else if (cursor.parentNode == null) {\r\n // TODO better ShadowRoot detection\r\n if (cursor.host == null) {\r\n return false;\r\n }\r\n else {\r\n cursor = cursor.host;\r\n }\r\n }\r\n else {\r\n cursor = cursor.parentNode;\r\n }\r\n }\r\n}\r\n/**\r\n * Returns the shadow root of the element or null\r\n *\r\n * @param a Node\r\n * @return Root\r\n */\r\nexport function getShadowRoot(a) {\r\n var cursor = a;\r\n while (true) {\r\n if (cursor.parentNode == null) {\r\n // TODO better ShadowRoot detection\r\n if (cursor.host != null) {\r\n return cursor;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n else {\r\n cursor = cursor.parentNode;\r\n }\r\n }\r\n}\r\n/**\r\n * Returns the root of the element (either the Document or the ShadowRoot)\r\n *\r\n * @param a Node\r\n * @return Root\r\n */\r\nexport function getRoot(a) {\r\n // TODO replace with Node.prototype.getRootNode\r\n var owner = a.ownerDocument;\r\n var cursor = a;\r\n while (true) {\r\n if (cursor.parentNode == null) {\r\n // If the cursor is the document, or it is a ShadowRoot\r\n // TODO better ShadowRoot detection\r\n if (cursor === owner || cursor.host != null) {\r\n return cursor;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n else {\r\n cursor = cursor.parentNode;\r\n }\r\n }\r\n}\r\n/**\r\n * Gets the true target of the Event.\r\n *\r\n * This is needed to make events work with the shadow DOM.\r\n *\r\n * @param event Event\r\n * @return EventTarget\r\n */\r\nexport function eventTarget(event) {\r\n if (typeof event.composedPath === \"function\") {\r\n return event.composedPath()[0];\r\n }\r\n else {\r\n return event.target;\r\n }\r\n}\r\n/**\r\n * Copies attributes from one element to another.\r\n *\r\n * @ignore Exclude from docs\r\n * @param source Element to copy attributes from\r\n * @param target Element to copy attributes to\r\n */\r\nexport function copyAttributes(source, target) {\r\n $array.each(source.attributes, function (attr) {\r\n // TODO what if it's null ?\r\n if (attr.value != null) {\r\n target.setAttribute(attr.name, attr.value);\r\n }\r\n });\r\n}\r\n/**\r\n * [fixPixelPerfect description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param el Element\r\n */\r\nexport function fixPixelPerfect(el) {\r\n readFrame(function () {\r\n // sometimes IE doesn't like this\r\n // TODO figure out a way to remove this\r\n try {\r\n var rect = el.getBoundingClientRect();\r\n var left_1 = rect.left - Math.round(rect.left);\r\n var top_1 = rect.top - Math.round(rect.top);\r\n if (left_1 !== 0) {\r\n writeFrame(function () {\r\n el.style.left = left_1 + \"px\";\r\n });\r\n }\r\n if (top_1 !== 0) {\r\n writeFrame(function () {\r\n el.style.top = top_1 + \"px\";\r\n });\r\n }\r\n }\r\n catch (e) { }\r\n });\r\n}\r\n/**\r\n * [rootStylesheet description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nvar rootStylesheet;\r\n/**\r\n * [getStylesheet description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @return [description]\r\n */\r\nfunction getStylesheet(element) {\r\n if (element == null) {\r\n if (!$type.hasValue(rootStylesheet)) {\r\n // TODO use createElementNS ?\r\n var e = document.createElement(\"style\");\r\n e.type = \"text/css\";\r\n if (options.nonce != \"\") {\r\n e.setAttribute(\"nonce\", options.nonce);\r\n }\r\n document.head.appendChild(e);\r\n rootStylesheet = e.sheet;\r\n }\r\n return rootStylesheet;\r\n }\r\n else {\r\n // TODO use createElementNS ?\r\n var e = document.createElement(\"style\");\r\n e.type = \"text/css\";\r\n if (options.nonce != \"\") {\r\n e.setAttribute(\"nonce\", options.nonce);\r\n }\r\n element.appendChild(e);\r\n return e.sheet;\r\n }\r\n}\r\n/**\r\n * [makeStylesheet description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param selector [description]\r\n * @return [description]\r\n */\r\nfunction appendStylesheet(root, selector) {\r\n var index = root.cssRules.length;\r\n root.insertRule(selector + \"{}\", index);\r\n return root.cssRules[index];\r\n}\r\n/**\r\n * Defines a class for a CSS rule.\r\n *\r\n * Can be used to dynamically add CSS to the document.\r\n */\r\nvar StyleRule = /** @class */ (function (_super) {\r\n __extends(StyleRule, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param selector CSS selector\r\n * @param styles An object of style attribute - value pairs\r\n */\r\n function StyleRule(element, selector, styles) {\r\n var _this = this;\r\n var root = getStylesheet(element);\r\n // TODO test this\r\n _this = _super.call(this, function () {\r\n // TODO a bit hacky\r\n var index = $array.indexOf(root.cssRules, _this._rule);\r\n if (index === -1) {\r\n throw new Error(\"Could not dispose StyleRule\");\r\n }\r\n else {\r\n // TODO if it's empty remove it from the DOM ?\r\n root.deleteRule(index);\r\n }\r\n }) || this;\r\n _this._rule = appendStylesheet(root, selector);\r\n $object.each(styles, function (key, value) {\r\n _this.setStyle(key, value);\r\n });\r\n return _this;\r\n }\r\n Object.defineProperty(StyleRule.prototype, \"selector\", {\r\n /**\r\n * @return CSS selector\r\n */\r\n get: function () {\r\n return this._rule.selectorText;\r\n },\r\n /**\r\n * A CSS selector text.\r\n *\r\n * E.g.: `.myClass p`\r\n *\r\n * @param selector CSS selector\r\n */\r\n set: function (selector) {\r\n this._rule.selectorText = selector;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets the same style properties with browser-specific prefixes.\r\n *\r\n * @param name Attribute name\r\n * @param value Attribute value\r\n */\r\n StyleRule.prototype._setVendorPrefixName = function (name, value) {\r\n var style = this._rule.style;\r\n style.setProperty(\"-webkit-\" + name, value, \"\");\r\n style.setProperty(\"-moz-\" + name, value, \"\");\r\n style.setProperty(\"-ms-\" + name, value, \"\");\r\n style.setProperty(\"-o-\" + name, value, \"\");\r\n style.setProperty(name, value, \"\");\r\n };\r\n /**\r\n * Sets a value for specific style attribute.\r\n *\r\n * @param name Attribute\r\n * @param value Value\r\n */\r\n StyleRule.prototype.setStyle = function (name, value) {\r\n if (name === \"transition\") {\r\n this._setVendorPrefixName(name, value);\r\n }\r\n else {\r\n this._rule.style.setProperty(name, value, \"\");\r\n }\r\n };\r\n return StyleRule;\r\n}(Disposer));\r\nexport { StyleRule };\r\n/**\r\n * An internal counter for unique style ids.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nvar styleId = 0;\r\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nvar StyleClass = /** @class */ (function (_super) {\r\n __extends(StyleClass, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param styles An object of style attribute - value pairs\r\n * @param name Class name\r\n */\r\n function StyleClass(element, styles, name) {\r\n var _this = this;\r\n var className = (!$type.hasValue(name)\r\n // TODO generate the classname randomly\r\n ? \"__style_\" + (++styleId) + \"__\"\r\n : name);\r\n _this = _super.call(this, element, \".\" + className, styles) || this;\r\n _this._className = className;\r\n return _this;\r\n }\r\n Object.defineProperty(StyleClass.prototype, \"className\", {\r\n /**\r\n * @return Class name\r\n */\r\n get: function () {\r\n return this._className;\r\n },\r\n /**\r\n * Class name.\r\n *\r\n * @param name Class name\r\n */\r\n set: function (name) {\r\n this._className = name;\r\n this.selector = \".\" + name;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts the whole class to\r\n * @ignore Exclude from docs\r\n */\r\n StyleClass.prototype.toString = function () {\r\n return this._className;\r\n };\r\n return StyleClass;\r\n}(StyleRule));\r\nexport { StyleClass };\r\nexport function ready(f) {\r\n if (document.readyState !== \"loading\") {\r\n f();\r\n }\r\n else {\r\n var listener_1 = function () {\r\n if (document.readyState !== \"loading\") {\r\n document.removeEventListener(\"readystatechange\", listener_1);\r\n f();\r\n }\r\n };\r\n document.addEventListener(\"readystatechange\", listener_1);\r\n }\r\n}\r\n/**\r\n * Returns a font fmaily name for the element (directly set or\r\n * computed/inherited).\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element\r\n * @return Font family\r\n */\r\nexport function findFont(element) {\r\n // Check if element has styles set\r\n var font = getComputedStyle(element, \"font-family\");\r\n if (!font) {\r\n // Completely transparent. Look for a parent\r\n var parent_1 = element.parentElement || element.parentNode;\r\n if (parent_1) {\r\n return findFont(parent_1);\r\n }\r\n else {\r\n return undefined;\r\n }\r\n }\r\n else {\r\n return font;\r\n }\r\n}\r\n/**\r\n * Returns a font fmaily name for the element (directly set or\r\n * computed/inherited).\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element\r\n * @return Font family\r\n */\r\nexport function findFontSize(element) {\r\n // Check if element has styles set\r\n var font = getComputedStyle(element, \"font-size\");\r\n if (!font) {\r\n // Completely transparent. Look for a parent\r\n var parent_2 = element.parentElement || element.parentNode;\r\n if (parent_2) {\r\n return findFontSize(parent_2);\r\n }\r\n else {\r\n return undefined;\r\n }\r\n }\r\n else {\r\n return font;\r\n }\r\n}\r\n/**\r\n * Checks whether element is not visible, whether directly or via its\r\n * ascendants.\r\n *\r\n * @param element Target element\r\n * @return Hidden?\r\n */\r\nexport function isHidden(element) {\r\n return (element.offsetParent === null);\r\n}\r\n/**\r\n * Checks wthether element is in the current viewport.\r\n *\r\n * @since 2.5.5\r\n * @param el Element\r\n * @return Within viewport?\r\n */\r\nexport function isElementInViewport(el, viewportTarget) {\r\n // Get position data of the element\r\n var rect = el.getBoundingClientRect();\r\n // Convert to array\r\n var targets = $type.isArray(viewportTarget) ? viewportTarget : viewportTarget ? [viewportTarget] : [];\r\n // Should we measure against specific viewport element?\r\n if (targets.length) {\r\n for (var i = 0; i < targets.length; i++) {\r\n var target = targets[i];\r\n // Check if viewport itself is visible\r\n if (!isElementInViewport(target)) {\r\n return false;\r\n }\r\n // Check if element is visible within the viewport\r\n var viewportRect = target.getBoundingClientRect();\r\n if (rect.top >= 0 &&\r\n rect.left >= 0 &&\r\n rect.top <= (viewportRect.top + viewportRect.height) &&\r\n rect.left <= (viewportRect.left + viewportRect.width)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n return (rect.top >= 0 &&\r\n rect.left >= 0 &&\r\n rect.top <= (window.innerHeight || document.documentElement.clientHeight) &&\r\n rect.left <= (window.innerWidth || document.documentElement.clientWidth));\r\n}\r\n//# sourceMappingURL=DOM.js.map","import { __extends, __generator, __read } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Disposer } from \"./Disposer\";\r\nimport { EventDispatcher } from \"./EventDispatcher\";\r\nimport * as $object from \"./Object\";\r\nimport * as $iter from \"./Iterator\";\r\nimport * as $string from \"./String\";\r\n/**\r\n * A disposable dictionary, which when disposed itself will call `dispose()`\r\n * method on all its items.\r\n */\r\nvar DictionaryDisposer = /** @class */ (function (_super) {\r\n __extends(DictionaryDisposer, _super);\r\n function DictionaryDisposer(dict) {\r\n var _this = this;\r\n var disposer = dict.events.on(\"removed\", function (x) {\r\n x.oldValue.dispose();\r\n }, undefined, false);\r\n _this = _super.call(this, function () {\r\n disposer.dispose();\r\n // TODO clear the dictionary ?\r\n $iter.each(dict.iterator(), function (a) {\r\n var v = a[1];\r\n v.dispose();\r\n });\r\n }) || this;\r\n return _this;\r\n }\r\n return DictionaryDisposer;\r\n}(Disposer));\r\nexport { DictionaryDisposer };\r\n/**\r\n * A Dictionary is collection where values of some type can be mapped to\r\n * string keys.\r\n *\r\n * You might call it an \"associative list\" or \"associative array\".\r\n */\r\nvar Dictionary = /** @class */ (function () {\r\n /**\r\n * Constructor\r\n */\r\n function Dictionary() {\r\n /**\r\n * Event dispatcher.\r\n */\r\n this.events = new EventDispatcher();\r\n this._dictionary = {};\r\n }\r\n /**\r\n * Returns `true` if key exists in Dictionary.\r\n *\r\n * @param key The key to search for\r\n * @return `true` if key exists, `false` if it doesn't\r\n */\r\n Dictionary.prototype.hasKey = function (key) {\r\n return $object.hasKey(this._dictionary, key);\r\n };\r\n /**\r\n * Returns the value for a specific key.\r\n *\r\n * @param key The key to search for\r\n * @return Value for the key, or `undefined` if it doesn't exist\r\n */\r\n Dictionary.prototype.getKey = function (key) {\r\n return this._dictionary[key];\r\n };\r\n /**\r\n * Inserts value at specific key.\r\n *\r\n * Will thrown an exception if the key already exists in the dictionary.\r\n *\r\n * @param key Key\r\n * @param value Value\r\n */\r\n Dictionary.prototype.insertKey = function (key, value) {\r\n if ($object.hasKey(this._dictionary, key)) {\r\n throw new Error(\"Key \" + key + \" already exists in dictionary\");\r\n }\r\n else {\r\n this._dictionary[key] = value;\r\n if (this.events.isEnabled(\"insertKey\")) {\r\n this.events.dispatchImmediately(\"insertKey\", {\r\n type: \"insertKey\",\r\n target: this,\r\n key: key,\r\n newValue: value\r\n });\r\n }\r\n }\r\n };\r\n /**\r\n * Adds or updates key/value into dictionary.\r\n *\r\n * If the key already exists, the old value will be overwritten.\r\n *\r\n * If the new value is exactly the same as the old value (using ===), it won't do anything.\r\n *\r\n * @param key Key\r\n * @param value Value\r\n */\r\n Dictionary.prototype.setKey = function (key, value) {\r\n if ($object.hasKey(this._dictionary, key)) {\r\n var oldValue = this._dictionary[key];\r\n if (oldValue !== value) {\r\n this._dictionary[key] = value;\r\n if (this.events.isEnabled(\"setKey\")) {\r\n this.events.dispatchImmediately(\"setKey\", {\r\n type: \"setKey\",\r\n target: this,\r\n key: key,\r\n oldValue: oldValue,\r\n newValue: value\r\n });\r\n }\r\n if (this.events.isEnabled(\"removed\")) {\r\n this.events.dispatchImmediately(\"removed\", {\r\n type: \"removed\",\r\n target: this,\r\n oldValue: oldValue\r\n });\r\n }\r\n }\r\n }\r\n else {\r\n this._dictionary[key] = value;\r\n if (this.events.isEnabled(\"insertKey\")) {\r\n this.events.dispatchImmediately(\"insertKey\", {\r\n type: \"insertKey\",\r\n target: this,\r\n key: key,\r\n newValue: value\r\n });\r\n }\r\n }\r\n };\r\n /**\r\n * Updates the value at specific `key` using custom function.\r\n *\r\n * Passes in current value into the function, and uses its output as a new\r\n * value.\r\n *\r\n * If the new value is exactly the same as the old value (using ===), it won't do anything.\r\n *\r\n * @ignore Exclude from docs\r\n * @param key Key\r\n * @param fn Function to transform the value\r\n */\r\n Dictionary.prototype.updateKey = function (key, fn) {\r\n if ($object.hasKey(this._dictionary, key)) {\r\n var oldValue = this._dictionary[key];\r\n var newValue = fn(oldValue);\r\n if (oldValue !== newValue) {\r\n this._dictionary[key] = newValue;\r\n if (this.events.isEnabled(\"setKey\")) {\r\n this.events.dispatchImmediately(\"setKey\", {\r\n type: \"setKey\",\r\n target: this,\r\n key: key,\r\n oldValue: oldValue,\r\n newValue: newValue\r\n });\r\n }\r\n if (this.events.isEnabled(\"removed\")) {\r\n this.events.dispatchImmediately(\"removed\", {\r\n type: \"removed\",\r\n target: this,\r\n oldValue: oldValue\r\n });\r\n }\r\n }\r\n }\r\n else {\r\n throw new Error(\"Key \" + key + \" doesn't exist in dictionary\");\r\n }\r\n };\r\n /**\r\n * Removes value at specific `key` from dictionary.\r\n *\r\n * @param key Key to remove\r\n */\r\n Dictionary.prototype.removeKey = function (key) {\r\n if ($object.hasKey(this._dictionary, key)) {\r\n var oldValue = this._dictionary[key];\r\n delete this._dictionary[key];\r\n if (this.events.isEnabled(\"removeKey\")) {\r\n this.events.dispatchImmediately(\"removeKey\", {\r\n type: \"removeKey\",\r\n target: this,\r\n key: key,\r\n oldValue: oldValue\r\n });\r\n }\r\n if (this.events.isEnabled(\"removed\")) {\r\n this.events.dispatchImmediately(\"removed\", {\r\n type: \"removed\",\r\n target: this,\r\n oldValue: oldValue\r\n });\r\n }\r\n }\r\n };\r\n /**\r\n * [insertKeyIfEmpty description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo description\r\n * @param key [description]\r\n * @param ifEmpty [description]\r\n * @return [description]\r\n */\r\n Dictionary.prototype.insertKeyIfEmpty = function (key, ifEmpty) {\r\n if (!this.hasKey(key)) {\r\n this.insertKey(key, ifEmpty());\r\n }\r\n return this.getKey(key);\r\n };\r\n /**\r\n * Removes all items from the dictionary.\r\n */\r\n Dictionary.prototype.clear = function () {\r\n var _this = this;\r\n // TODO dispatch this after clear\r\n if (this.events.isEnabled(\"removed\")) {\r\n $object.each(this._dictionary, function (key, value) {\r\n _this.events.dispatchImmediately(\"removed\", {\r\n type: \"removed\",\r\n target: _this,\r\n oldValue: value\r\n });\r\n });\r\n }\r\n this._dictionary = {};\r\n if (this.events.isEnabled(\"cleared\")) {\r\n this.events.dispatchImmediately(\"cleared\", {\r\n type: \"cleared\",\r\n target: this\r\n });\r\n }\r\n };\r\n /**\r\n * Copies items from another Dictionary.\r\n *\r\n * @param source A Dictionary to copy items from\r\n */\r\n Dictionary.prototype.copyFrom = function (source) {\r\n var _this = this;\r\n $iter.each(source.iterator(), function (a) {\r\n // TODO fix this type cast\r\n _this.setKey(a[0], a[1]);\r\n });\r\n };\r\n /**\r\n * Returns an interator that can be used to iterate through all items in\r\n * the dictionary.\r\n *\r\n * @return Iterator\r\n */\r\n Dictionary.prototype.iterator = function () {\r\n // @todo fix this type after the Iterator bug is fixed\r\n // https://github.com/Microsoft/TypeScript/issues/16730\r\n return $object.entries(this._dictionary);\r\n };\r\n /**\r\n * Returns an ES6 iterator for the keys/values of the dictionary.\r\n */\r\n Dictionary.prototype[Symbol.iterator] = function () {\r\n var _a, _b, _i, key;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n _a = [];\r\n for (_b in this._dictionary)\r\n _a.push(_b);\r\n _i = 0;\r\n _c.label = 1;\r\n case 1:\r\n if (!(_i < _a.length)) return [3 /*break*/, 4];\r\n key = _a[_i];\r\n if (!$object.hasKey(this._dictionary, key)) return [3 /*break*/, 3];\r\n return [4 /*yield*/, [key, this._dictionary[key]]];\r\n case 2:\r\n _c.sent();\r\n _c.label = 3;\r\n case 3:\r\n _i++;\r\n return [3 /*break*/, 1];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n };\r\n /**\r\n * Calls `f` for each key/value in the dictionary.\r\n */\r\n Dictionary.prototype.each = function (f) {\r\n $iter.each(this.iterator(), function (_a) {\r\n var _b = __read(_a, 2), key = _b[0], value = _b[1];\r\n return f(key, value);\r\n });\r\n };\r\n /**\r\n * Returns an iterator that can be used to iterate through all items in\r\n * the dictionary, ordered by key.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Iterator\r\n */\r\n Dictionary.prototype.sortedIterator = function () {\r\n return $iter.sort(this.iterator(), function (x, y) { return $string.order(x[0], y[0]); });\r\n };\r\n return Dictionary;\r\n}());\r\nexport { Dictionary };\r\n/**\r\n * A version of a [[Dictionary]] that has a \"template\".\r\n *\r\n * A template is an instance of an object, that can be used to create new\r\n * elements in the list without actually needing to create instances for those.\r\n *\r\n * When new element is created in the list, e.g. by calling its `create()`\r\n * method, an exact copy of the element is created (including properties and\r\n * other attributes), inserted into the list and returned.\r\n */\r\nvar DictionaryTemplate = /** @class */ (function (_super) {\r\n __extends(DictionaryTemplate, _super);\r\n /**\r\n * Constructor\r\n *\r\n * @param t Template object\r\n */\r\n function DictionaryTemplate(t) {\r\n var _this = _super.call(this) || this;\r\n _this.template = t;\r\n return _this;\r\n }\r\n Object.defineProperty(DictionaryTemplate.prototype, \"template\", {\r\n /**\r\n * @return Template object\r\n */\r\n get: function () {\r\n return this._template;\r\n },\r\n /**\r\n * A \"template\" object to copy all properties from when creating new list\r\n * items.\r\n *\r\n * @param v Template object\r\n */\r\n set: function (v) {\r\n v.isTemplate = true;\r\n this._template = v;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies all elements from other dictionary.\r\n *\r\n * @param source Source dictionary\r\n */\r\n DictionaryTemplate.prototype.copyFrom = function (source) {\r\n var _this = this;\r\n $iter.each(source.iterator(), function (a) {\r\n // TODO fix this type cast\r\n // TODO why does this need to clone ?\r\n _this.setKey(a[0], a[1].clone());\r\n });\r\n };\r\n /**\r\n * Instantiates a new object of the specified type, adds it to specified\r\n * `key` in the dictionary, and returns it.\r\n *\r\n * @param make Item type to use. Will use the default type for the dictionary if not specified.\r\n * @return Newly created item\r\n */\r\n DictionaryTemplate.prototype.create = function (key) {\r\n var _this = this;\r\n return this.insertKeyIfEmpty(key, function () { return _this.template.clone(); });\r\n };\r\n return DictionaryTemplate;\r\n}(Dictionary));\r\nexport { DictionaryTemplate };\r\n//# sourceMappingURL=Dictionary.js.map","import { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport * as $array from \"./Array\";\r\nimport * as $type from \"./Type\";\r\n/**\r\n * A base class for disposable objects.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nvar Disposer = /** @class */ (function () {\r\n /**\r\n * Constructor.\r\n *\r\n * @param dispose Function that disposes object\r\n */\r\n function Disposer(dispose) {\r\n this._disposed = false;\r\n this._dispose = dispose;\r\n }\r\n /**\r\n * Checks if object is disposed.\r\n *\r\n * @return Disposed?\r\n */\r\n Disposer.prototype.isDisposed = function () {\r\n return this._disposed;\r\n };\r\n /**\r\n * Disposes the object.\r\n */\r\n Disposer.prototype.dispose = function () {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n this._dispose();\r\n }\r\n };\r\n return Disposer;\r\n}());\r\nexport { Disposer };\r\n/**\r\n * A collection of related disposers that can be disposed in one go.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nvar MultiDisposer = /** @class */ (function (_super) {\r\n __extends(MultiDisposer, _super);\r\n function MultiDisposer(disposers) {\r\n return _super.call(this, function () {\r\n $array.each(disposers, function (x) {\r\n x.dispose();\r\n });\r\n }) || this;\r\n }\r\n return MultiDisposer;\r\n}(Disposer));\r\nexport { MultiDisposer };\r\n/**\r\n * A special kind of Disposer that has attached value set.\r\n *\r\n * If a new value is set using `set()` method, the old disposer value is\r\n * disposed.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nvar MutableValueDisposer = /** @class */ (function (_super) {\r\n __extends(MutableValueDisposer, _super);\r\n /**\r\n * Constructor.\r\n */\r\n function MutableValueDisposer() {\r\n var _this = _super.call(this, function () {\r\n if ($type.hasValue(_this._disposer)) {\r\n _this._disposer.dispose();\r\n _this._disposer = undefined;\r\n }\r\n }) || this;\r\n return _this;\r\n }\r\n /**\r\n * Returns current value.\r\n *\r\n * @return Value\r\n */\r\n MutableValueDisposer.prototype.get = function () {\r\n return this._value;\r\n };\r\n /**\r\n * Sets value and disposes previous disposer if it was set.\r\n *\r\n * @param value New value\r\n * @param disposer Disposer\r\n */\r\n MutableValueDisposer.prototype.set = function (value, disposer) {\r\n if ($type.hasValue(this._disposer)) {\r\n this._disposer.dispose();\r\n }\r\n this._disposer = disposer;\r\n this._value = value;\r\n };\r\n /**\r\n * Resets the disposer value.\r\n */\r\n MutableValueDisposer.prototype.reset = function () {\r\n this.set(undefined, undefined);\r\n };\r\n return MutableValueDisposer;\r\n}(Disposer));\r\nexport { MutableValueDisposer };\r\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nvar CounterDisposer = /** @class */ (function (_super) {\r\n __extends(CounterDisposer, _super);\r\n function CounterDisposer() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n /**\r\n * [_counter description]\r\n *\r\n * @todo Description\r\n */\r\n _this._counter = 0;\r\n return _this;\r\n }\r\n /**\r\n * [increment description]\r\n *\r\n * @todo Description\r\n */\r\n CounterDisposer.prototype.increment = function () {\r\n var _this = this;\r\n // TODO throw an error if it is disposed\r\n ++this._counter;\r\n // TODO make this more efficient\r\n return new Disposer(function () {\r\n --_this._counter;\r\n if (_this._counter === 0) {\r\n _this.dispose();\r\n }\r\n });\r\n };\r\n return CounterDisposer;\r\n}(Disposer));\r\nexport { CounterDisposer };\r\n//# sourceMappingURL=Disposer.js.map","/**\r\n * A collection of easing functions\r\n *\r\n * Parts of this collection are taken from D3.js library (https://d3js.org/)\r\n */\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport * as $math from \"../utils/Math\";\r\nimport { registry } from \"../Registry\";\r\n/**\r\n * The functions below are from D3.js library (https://d3js.org/)\r\n *\r\n * ----------------------------------------------------------------------------\r\n * Copyright 2017 Mike Bostock\r\n *\r\n * Redistribution and use in source and binary forms, with or without\r\n * modification, are permitted provided that the following conditions are met:\r\n *\r\n * 1. Redistributions of source code must retain the above copyright notice,\r\n * this list of conditions and the following disclaimer.\r\n *\r\n * 2. Redistributions in binary form must reproduce the above copyright notice,\r\n * this list of conditions and the following disclaimer in the documentation\r\n * and/or other materials provided with the distribution.\r\n *\r\n * 3. Neither the name of the copyright holder nor the names of its\r\n * contributors may be used to endorse or promote products derived from this\r\n * software without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n * ----------------------------------------------------------------------------\r\n * @hidden\r\n */\r\n/**\r\n * ============================================================================\r\n * LINEAR FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Easing function: \"linear\".\r\n */\r\nexport function linear(t) {\r\n return +t;\r\n}\r\nregistry.registeredClasses[\"ease.linear\"] = linear;\r\n/**\r\n * Easing function: \"quadIn\".\r\n */\r\nexport function quadIn(t) {\r\n return t * t;\r\n}\r\nregistry.registeredClasses[\"ease.quadIn\"] = quadIn;\r\n/**\r\n * Easing function: \"quadOut\".\r\n */\r\nexport function quadOut(t) {\r\n return t * (2 - t);\r\n}\r\nregistry.registeredClasses[\"ease.quadOut\"] = quadOut;\r\n/**\r\n * Easing function: \"quadInOut\".\r\n */\r\nexport function quadInOut(t) {\r\n t *= 2;\r\n return (t <= 1 ? t * t : --t * (2 - t) + 1) / 2;\r\n}\r\nregistry.registeredClasses[\"ease.quadInOut\"] = quadInOut;\r\n/**\r\n * Easing function: \"polyIn\".\r\n */\r\nexport function polyIn(t, e) {\r\n return Math.pow(t, e);\r\n}\r\nregistry.registeredClasses[\"ease.polyIn\"] = polyIn;\r\n/**\r\n * Easing function: \"polyOut\".\r\n */\r\nexport function polyOut(t, e) {\r\n return 1 - Math.pow(1 - t, e);\r\n}\r\nregistry.registeredClasses[\"ease.polyOut\"] = polyOut;\r\n/**\r\n * Easing function: \"polyInOut\".\r\n */\r\nexport function polyInOut(t, e) {\r\n t *= 2;\r\n return (t <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\r\n}\r\nregistry.registeredClasses[\"ease.polyInOut\"] = polyInOut;\r\n/**\r\n * Easing function: \"polyIn3\".\r\n */\r\nexport function polyIn3(t) {\r\n return polyIn(t, 3);\r\n}\r\nregistry.registeredClasses[\"ease.polyIn3\"] = polyIn3;\r\n/**\r\n * Easing function: \"polyOut3\".\r\n */\r\nexport function polyOut3(t) {\r\n return polyOut(t, 3);\r\n}\r\nregistry.registeredClasses[\"ease.polyOut3\"] = polyOut3;\r\n/**\r\n * Easing function: \"polyInOut3\".\r\n */\r\nexport function polyInOut3(t) {\r\n return polyInOut(t, 3);\r\n}\r\nregistry.registeredClasses[\"ease.polyInOut3\"] = polyInOut3;\r\n/**\r\n * ============================================================================\r\n * EXPONENTIAL FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Easing function: \"expIn\".\r\n */\r\nexport function expIn(t) {\r\n return Math.pow(2, 10 * t - 10);\r\n}\r\nregistry.registeredClasses[\"ease.expIn\"] = expIn;\r\n/**\r\n * Easing function: \"expOut\".\r\n */\r\nexport function expOut(t) {\r\n return 1 - Math.pow(2, -10 * t);\r\n}\r\nregistry.registeredClasses[\"ease.expOut\"] = expOut;\r\n/**\r\n * Easing function: \"expInOut\".\r\n */\r\nexport function expInOut(t) {\r\n t *= 2;\r\n return (t <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2;\r\n}\r\nregistry.registeredClasses[\"ease.expInOut\"] = expInOut;\r\n/**\r\n * ============================================================================\r\n * SINE FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Easing function: \"sinIn\".\r\n */\r\nexport function sinIn(t) {\r\n return 1 - Math.cos(t * $math.HALFPI);\r\n}\r\nregistry.registeredClasses[\"ease.sinIn\"] = sinIn;\r\n/**\r\n * Easing function: \"sinOut\".\r\n */\r\nexport function sinOut(t) {\r\n return Math.sin(t * $math.HALFPI);\r\n}\r\nregistry.registeredClasses[\"ease.sinOut\"] = sinOut;\r\n/**\r\n * Easing function: \"sinInOut\".\r\n */\r\nexport function sinInOut(t) {\r\n return (1 - Math.cos($math.PI * t)) / 2;\r\n}\r\nregistry.registeredClasses[\"ease.sinInOut\"] = sinInOut;\r\n/**\r\n * ============================================================================\r\n * CUBIC FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Easing function: \"cubicIn\".\r\n */\r\nexport function cubicIn(t) {\r\n return t * t * t;\r\n}\r\nregistry.registeredClasses[\"ease.cubicIn\"] = cubicIn;\r\n/**\r\n * Easing function: \"cubicOut\".\r\n */\r\nexport function cubicOut(t) {\r\n return --t * t * t + 1;\r\n}\r\nregistry.registeredClasses[\"ease.cubicOut\"] = cubicOut;\r\n/**\r\n * Easing function: \"cubicInOut\".\r\n */\r\nexport function cubicInOut(t) {\r\n t *= 2;\r\n return (t <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\r\n}\r\nregistry.registeredClasses[\"ease.cubicInOut\"] = cubicInOut;\r\n/**\r\n * ============================================================================\r\n * CIRCLE FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Easing function: \"circleIn\".\r\n */\r\nexport function circleIn(t) {\r\n return 1 - Math.sqrt(1 - t * t);\r\n}\r\nregistry.registeredClasses[\"ease.circleIn\"] = circleIn;\r\n/**\r\n * Easing function: \"circleOut\".\r\n */\r\nexport function circleOut(t) {\r\n return Math.sqrt(1 - --t * t);\r\n}\r\nregistry.registeredClasses[\"ease.circleOut\"] = circleOut;\r\n/**\r\n * Easing function: \"circleInOut\".\r\n */\r\nexport function circleInOut(t) {\r\n t *= 2;\r\n return (t <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\r\n}\r\nregistry.registeredClasses[\"ease.circleInOut\"] = circleInOut;\r\n/**\r\n * ============================================================================\r\n * BOUNCE FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nvar b1 = 4 / 11, b2 = 6 / 11, b3 = 8 / 11, b4 = 3 / 4, b5 = 9 / 11, b6 = 10 / 11, b7 = 15 / 16, b8 = 21 / 22, b9 = 63 / 64, b0 = 1 / b1 / b1;\r\n/**\r\n * Easing function: \"bounceIn\".\r\n */\r\nexport function bounceIn(t) {\r\n return 1 - bounceOut(1 - t);\r\n}\r\nregistry.registeredClasses[\"ease.bounceIn\"] = bounceIn;\r\n/**\r\n * Easing function: \"bounceOut\".\r\n */\r\nexport function bounceOut(t) {\r\n t = +t;\r\n return t < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\r\n}\r\nregistry.registeredClasses[\"ease.bounceOut\"] = bounceOut;\r\n/**\r\n * Easing function: \"bounceInOut\".\r\n */\r\nexport function bounceInOut(t) {\r\n t *= 2;\r\n return (t <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\r\n}\r\nregistry.registeredClasses[\"ease.bounceInOut\"] = bounceInOut;\r\n/**\r\n * ============================================================================\r\n * ELASTIC FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nvar tau = 2 * Math.PI;\r\nvar amplitude = 1;\r\nvar period = 0.3 / tau;\r\nvar s = Math.asin(1 / amplitude) * period;\r\n/**\r\n * Easing function: \"elasticIn\".\r\n *\r\n * @function elasticIn\r\n * @param a Amplitude\r\n * @param p period\r\n */\r\nexport function elasticIn(t) {\r\n return amplitude * Math.pow(2, 10 * --t) * Math.sin((s - t) / period);\r\n}\r\nregistry.registeredClasses[\"ease.elasticIn\"] = elasticIn;\r\n/**\r\n * Easing function: \"elasticOut\".\r\n *\r\n * @function elasticOut\r\n * @param a Amplitude\r\n * @param p period\r\n */\r\nexport function elasticOut(t) {\r\n return 1 - amplitude * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / period);\r\n}\r\nregistry.registeredClasses[\"ease.elasticOut\"] = elasticOut;\r\n/**\r\n * Easing function: \"elasticInOut\".\r\n *\r\n * @function elasticInOut\r\n * @param a Amplitude\r\n * @param p period\r\n */\r\nexport function elasticInOut(t) {\r\n t = t * 2 - 1;\r\n return (t < 0\r\n ? amplitude * Math.pow(2, 10 * t) * Math.sin((s - t) / period)\r\n : 2 - amplitude * Math.pow(2, -10 * t) * Math.sin((s + t) / period)) / 2;\r\n}\r\nregistry.registeredClasses[\"ease.elasticInOut\"] = elasticInOut;\r\n//# sourceMappingURL=Ease.js.map","/**\r\n * Event Dispatcher module is used for registering listeners and dispatching\r\n * events across amCharts system.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Disposer } from \"./Disposer\";\r\nimport * as $array from \"./Array\";\r\nimport * as $async from \"./AsyncPending\";\r\nimport * as $type from \"./Type\";\r\n/*export interface IEventDispatcher<T> {\r\n isDisposed(): boolean;\r\n dispose(): void;\r\n hasListeners(): boolean;\r\n enable(): void;\r\n disable(): void;\r\n enableType<Key extends keyof T>(type: Key): void;\r\n disableType<Key extends keyof T>(type: Key, amount?: number): void;\r\n isEnabled<Key extends keyof T>(type: Key): boolean;\r\n has<C, Key extends keyof T>(type: Key, callback?: (this: C, event: T[Key]) => void, context?: C): boolean;\r\n dispatchImmediately<Key extends keyof T>(type: Key, event: T[Key]): void;\r\n dispatch<Key extends keyof T>(type: Key, event: T[Key]): void;\r\n onAll<C, Key extends keyof T>(callback: (this: C, type: Key, event: T[Key]) => void, context?: C): IDisposer;\r\n on<C, Key extends keyof T>(type: Key, callback: (this: C, event: T[Key]) => void, context?: C): IDisposer;\r\n once<C, Key extends keyof T>(type: Key, callback: (this: C, event: T[Key]) => void, context?: C): IDisposer;\r\n off<C, Key extends keyof T>(type: Key, callback: (this: C, event: T[Key]) => void, context?: C): void;\r\n off<C, Key extends keyof T>(type: Key, callback: (this: C, event: T[Key]) => void, context?: C): void;\r\n copyFrom(source: this): void;\r\n}*/\r\n/**\r\n * Universal Event Dispatcher.\r\n *\r\n * @important\r\n */\r\nvar EventDispatcher = /** @class */ (function () {\r\n /**\r\n * Constructor\r\n */\r\n function EventDispatcher() {\r\n this._listeners = [];\r\n this._killed = [];\r\n this._disabled = {};\r\n this._iterating = 0;\r\n this._enabled = true;\r\n this._disposed = false;\r\n }\r\n /**\r\n * Returns if this object has been already disposed.\r\n *\r\n * @return Disposed?\r\n */\r\n EventDispatcher.prototype.isDisposed = function () {\r\n return this._disposed;\r\n };\r\n /**\r\n * Dispose (destroy) this object.\r\n */\r\n EventDispatcher.prototype.dispose = function () {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n var a = this._listeners;\r\n this._iterating = 1;\r\n this._listeners = null;\r\n this._disabled = null;\r\n try {\r\n $array.each(a, function (x) {\r\n x.disposer.dispose();\r\n });\r\n }\r\n finally {\r\n this._killed = null;\r\n this._iterating = null;\r\n }\r\n }\r\n };\r\n /**\r\n * Checks if this particular event dispatcher has any listeners set.\r\n *\r\n * @return Has listeners?\r\n */\r\n EventDispatcher.prototype.hasListeners = function () {\r\n return this._listeners.length !== 0;\r\n };\r\n /**\r\n * Checks if this particular event dispatcher has any particular listeners set.\r\n *\r\n * @return Has particular event listeners?\r\n */\r\n EventDispatcher.prototype.hasListenersByType = function (type) {\r\n return $array.any(this._listeners, function (x) { return (x.type === null || x.type === type) && !x.killed; });\r\n };\r\n /**\r\n * Enable dispatching of events if they were previously disabled by\r\n * `disable()`.\r\n */\r\n EventDispatcher.prototype.enable = function () {\r\n this._enabled = true;\r\n };\r\n /**\r\n * Disable dispatching of events until re-enabled by `enable()`.\r\n */\r\n EventDispatcher.prototype.disable = function () {\r\n this._enabled = false;\r\n };\r\n /**\r\n * Enable dispatching particular event, if it was disabled before by\r\n * `disableType()`.\r\n *\r\n * @param type Event type\r\n */\r\n EventDispatcher.prototype.enableType = function (type) {\r\n delete this._disabled[type];\r\n };\r\n /**\r\n * Disable dispatching of events for a certain event type.\r\n *\r\n * Optionally, can set how many dispatches to skip before automatically\r\n * re-enabling the dispatching.\r\n *\r\n * @param type Event type\r\n * @param amount Number of event dispatches to skip\r\n */\r\n EventDispatcher.prototype.disableType = function (type, amount) {\r\n if (amount === void 0) { amount = Infinity; }\r\n this._disabled[type] = amount;\r\n };\r\n /**\r\n * Removes listener from dispatcher.\r\n *\r\n * Will throw an exception if such listener does not exists.\r\n *\r\n * @param listener Listener to remove\r\n */\r\n EventDispatcher.prototype._removeListener = function (listener) {\r\n if (this._iterating === 0) {\r\n var index = this._listeners.indexOf(listener);\r\n if (index === -1) {\r\n throw new Error(\"Invalid state: could not remove listener\");\r\n }\r\n this._listeners.splice(index, 1);\r\n }\r\n else {\r\n this._killed.push(listener);\r\n }\r\n };\r\n /**\r\n * Removes existing listener by certain parameters.\r\n *\r\n * @param once Listener's once setting\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n */\r\n EventDispatcher.prototype._removeExistingListener = function (once, type, callback, context) {\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n this._eachListener(function (info) {\r\n if (info.once === once && // TODO is this correct ?\r\n info.type === type &&\r\n (callback == null || info.callback === callback) &&\r\n info.context === context) {\r\n info.disposer.dispose();\r\n }\r\n });\r\n };\r\n /**\r\n * Checks if dispatching for particular event type is enabled.\r\n *\r\n * @param type Event type\r\n * @return Enabled?\r\n */\r\n EventDispatcher.prototype.isEnabled = function (type) {\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n // TODO is this check correct ?\r\n return this._enabled && this._listeners.length > 0 && this.hasListenersByType(type) && this._disabled[type] == null;\r\n };\r\n /**\r\n * Checks if there's already a listener with specific parameters.\r\n *\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @return Has listener?\r\n */\r\n EventDispatcher.prototype.has = function (type, callback, context) {\r\n var index = $array.findIndex(this._listeners, function (info) {\r\n return info.once !== true && // Ignoring \"once\" listeners\r\n info.type === type &&\r\n (callback == null || info.callback === callback) &&\r\n info.context === context;\r\n });\r\n return index !== -1;\r\n };\r\n /**\r\n * Checks whether event of the particular type should be dispatched.\r\n *\r\n * @param type Event type\r\n * @return Dispatch?\r\n */\r\n EventDispatcher.prototype._shouldDispatch = function (type) {\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n var count = this._disabled[type];\r\n if (!$type.isNumber(count)) {\r\n return this._enabled;\r\n }\r\n else {\r\n if (count <= 1) {\r\n delete this._disabled[type];\r\n }\r\n else {\r\n --this._disabled[type];\r\n }\r\n return false;\r\n }\r\n };\r\n /**\r\n * [_eachListener description]\r\n *\r\n * All of this extra code is needed when a listener is removed while iterating\r\n *\r\n * @todo Description\r\n * @param fn [description]\r\n */\r\n EventDispatcher.prototype._eachListener = function (fn) {\r\n var _this = this;\r\n ++this._iterating;\r\n try {\r\n $array.each(this._listeners, fn);\r\n }\r\n finally {\r\n --this._iterating;\r\n // TODO should this be inside or outside the finally ?\r\n if (this._iterating === 0 && this._killed.length !== 0) {\r\n // Remove killed listeners\r\n $array.each(this._killed, function (killed) {\r\n _this._removeListener(killed);\r\n });\r\n this._killed.length = 0;\r\n }\r\n }\r\n };\r\n /**\r\n * Dispatches an event immediately without waiting for next cycle.\r\n *\r\n * @param type Event type\r\n * @param event Event object\r\n * @todo automatically add in type and target properties if they are missing\r\n */\r\n EventDispatcher.prototype.dispatchImmediately = function (type, event) {\r\n if (this._shouldDispatch(type)) {\r\n // TODO check if it's faster to use an object of listeners rather than a single big array\r\n // TODO if the function throws, maybe it should keep going ?\r\n this._eachListener(function (listener) {\r\n if (!listener.killed && (listener.type === null || listener.type === type)) {\r\n listener.dispatch(type, event);\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * Shelves the event to be dispatched within next update cycle.\r\n *\r\n * @param type Event type\r\n * @param event Event object\r\n * @todo automatically add in type and target properties if they are missing\r\n */\r\n EventDispatcher.prototype.dispatch = function (type, event) {\r\n if (this._shouldDispatch(type)) {\r\n this._eachListener(function (listener) {\r\n // TODO check if it's faster to use an object of listeners rather than a single big array\r\n if (!listener.killed && (listener.type === null || listener.type === type)) {\r\n // TODO if the function throws, maybe it should keep going ?\r\n // TODO dispatch during the update cycle, rather than using whenIdle\r\n $async.whenIdle(function () {\r\n if (!listener.killed) {\r\n listener.dispatch(type, event);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * Creates, catalogs and returns an [[EventListener]].\r\n *\r\n * Event listener can be disposed.\r\n *\r\n * @param once Listener's once setting\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @param shouldClone Whether the listener should be copied when the EventDispatcher is copied\r\n * @param dispatch\r\n * @returns An event listener\r\n */\r\n EventDispatcher.prototype._on = function (once, type, callback, context, shouldClone, dispatch) {\r\n var _this = this;\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n this._removeExistingListener(once, type, callback, context);\r\n var info = {\r\n type: type,\r\n callback: callback,\r\n context: context,\r\n shouldClone: shouldClone,\r\n dispatch: dispatch,\r\n killed: false,\r\n once: once,\r\n disposer: new Disposer(function () {\r\n info.killed = true;\r\n _this._removeListener(info);\r\n })\r\n };\r\n this._listeners.push(info);\r\n return info;\r\n };\r\n /**\r\n * Creates an event listener to be invoked on **any** event.\r\n *\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @param shouldClone Whether the listener should be copied when the EventDispatcher is copied\r\n * @returns A disposable event listener\r\n * @todo what if `listen` is called on the same function twice ?\r\n */\r\n EventDispatcher.prototype.onAll = function (callback, context, shouldClone) {\r\n if (shouldClone === void 0) { shouldClone = true; }\r\n return this._on(false, null, callback, context, shouldClone, function (type, event) { return callback.call(context, type, event); }).disposer;\r\n };\r\n /**\r\n * Creates an event listener to be invoked on a specific event type.\r\n *\r\n * ```TypeScript\r\n * series.events.on(\"hidden\", (ev) => {\r\n * console.log(\"Series hidden: \" + ev.target.name);\r\n * }, this);\r\n * ```\r\n * ```JavaScript\r\n * series.events.on(\"hidden\", function(ev) {\r\n * console.log(\"Series hidden: \" + ev.target.name);\r\n * }, this);\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"events\": {\r\n * \t\"hidden\": function(ev) {\r\n * \t console.log(\"Series hidden: \" + ev.target.name);\r\n * \t}\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * The above will invoke our custom event handler whenever series we put\r\n * event on is hidden.\r\n *\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @param shouldClone Whether the listener should be copied when the EventDispatcher is copied\r\n * @returns A disposable event listener\r\n * @todo what if `listen` is called on the same function twice ?\r\n */\r\n EventDispatcher.prototype.on = function (type, callback, context, shouldClone) {\r\n if (shouldClone === void 0) { shouldClone = true; }\r\n return this._on(false, type, callback, context, shouldClone, function (type, event) { return callback.call(context, event); }).disposer;\r\n };\r\n /**\r\n * Creates an event listener to be invoked on a specific event type once.\r\n *\r\n * Once the event listener is invoked, it is automatically disposed.\r\n *\r\n * ```TypeScript\r\n * series.events.on(\"hidden\", (ev) => {\r\n * console.log(\"Series hidden: \" + ev.target.name);\r\n * }, this);\r\n * ```\r\n * ```JavaScript\r\n * series.events.on(\"hidden\", function(ev) {\r\n * console.log(\"Series hidden: \" + ev.target.name);\r\n * }, this);\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"events\": {\r\n * \t\"hidden\": function(ev) {\r\n * \t console.log(\"Series hidden: \" + ev.target.name);\r\n * \t}\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * The above will invoke our custom event handler the first time series we\r\n * put event on is hidden.\r\n *\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @param shouldClone Whether the listener should be copied when the EventDispatcher is copied\r\n * @returns A disposable event listener\r\n * @todo what if `listen` is called on the same function twice ?\r\n */\r\n EventDispatcher.prototype.once = function (type, callback, context, shouldClone) {\r\n if (shouldClone === void 0) { shouldClone = true; }\r\n var x = this._on(true, type, callback, context, shouldClone, function (type, event) {\r\n x.disposer.dispose();\r\n callback.call(context, event);\r\n });\r\n // TODO maybe this should return a different Disposer ?\r\n return x.disposer;\r\n };\r\n /**\r\n * Removes the event listener with specific parameters.\r\n *\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n */\r\n EventDispatcher.prototype.off = function (type, callback, context) {\r\n this._removeExistingListener(false, type, callback, context);\r\n };\r\n /**\r\n * Copies all dispatcher parameters, including listeners, from another event\r\n * dispatcher.\r\n *\r\n * @param source Source event dispatcher\r\n */\r\n EventDispatcher.prototype.copyFrom = function (source) {\r\n var _this = this;\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n if (source === this) {\r\n throw new Error(\"Cannot copyFrom the same TargetedEventDispatcher\");\r\n }\r\n $array.each(source._listeners, function (x) {\r\n // TODO is this correct ?\r\n if (!x.killed && x.shouldClone) {\r\n if (x.type === null) {\r\n _this.onAll(x.callback, x.context);\r\n }\r\n else if (x.once) {\r\n _this.once(x.type, x.callback, x.context);\r\n }\r\n else {\r\n _this.on(x.type, x.callback, x.context);\r\n }\r\n }\r\n });\r\n };\r\n return EventDispatcher;\r\n}());\r\nexport { EventDispatcher };\r\n/**\r\n * A version of the [[EventDispatcher]] that dispatches events for a specific\r\n * target object.\r\n *\r\n * @important\r\n */\r\nvar TargetedEventDispatcher = /** @class */ (function (_super) {\r\n __extends(TargetedEventDispatcher, _super);\r\n /**\r\n * Constructor\r\n *\r\n * @param target Event dispatcher target\r\n */\r\n function TargetedEventDispatcher(target) {\r\n var _this = _super.call(this) || this;\r\n _this.target = target;\r\n return _this;\r\n }\r\n /**\r\n * Copies all dispatcher parameters, including listeners, from another event\r\n * dispatcher.\r\n *\r\n * @param source Source event dispatcher\r\n */\r\n TargetedEventDispatcher.prototype.copyFrom = function (source) {\r\n var _this = this;\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n if (source === this) {\r\n throw new Error(\"Cannot copyFrom the same TargetedEventDispatcher\");\r\n }\r\n $array.each(source._listeners, function (x) {\r\n // TODO very hacky\r\n if (x.context === source.target) {\r\n return;\r\n }\r\n // TODO is this correct ?\r\n if (!x.killed && x.shouldClone) {\r\n if (x.type === null) {\r\n _this.onAll(x.callback, x.context);\r\n }\r\n else if (x.once) {\r\n _this.once(x.type, x.callback, x.context);\r\n }\r\n else {\r\n _this.on(x.type, x.callback, x.context);\r\n }\r\n }\r\n });\r\n };\r\n return TargetedEventDispatcher;\r\n}(EventDispatcher));\r\nexport { TargetedEventDispatcher };\r\n//# sourceMappingURL=EventDispatcher.js.map","/**\r\n * This module contains a version of ColorSet that can (and should) be used for\r\n * coloring UI elements.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../Base\";\r\nimport { registry } from \"../Registry\";\r\nimport { color } from \"./Color\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * This module contains a version of ColorSet that can (and should) be used for\r\n * coloring UI elements.\r\n *\r\n * The main difference from the basic [[ColorSet]] is that instead of sequenced\r\n * colors, it uses a concept of named colors.\r\n *\r\n * This way, every element in the UI can extract an exact color theme author\r\n * meant for the specific purpose, like strokes, backgrounds, etc.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/colors/} for color-related info\r\n */\r\nvar InterfaceColorSet = /** @class */ (function (_super) {\r\n __extends(InterfaceColorSet, _super);\r\n /**\r\n * Constructor\r\n */\r\n function InterfaceColorSet() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Maps the list of purposes (like \"stroke\") to an index of color of the\r\n * color set.\r\n */\r\n _this._purposes = {\r\n stroke: color(\"#e5e5e5\"),\r\n fill: color(\"#f3f3f3\"),\r\n primaryButton: color(\"#6794dc\"),\r\n primaryButtonHover: color(\"#6771dc\"),\r\n primaryButtonDown: color(\"#68dc75\"),\r\n primaryButtonActive: color(\"#68dc75\"),\r\n primaryButtonText: color(\"#FFFFFF\"),\r\n primaryButtonStroke: color(\"#FFFFFF\"),\r\n secondaryButton: color(\"#d9d9d9\"),\r\n secondaryButtonHover: color(\"#d9d9d9\").brighten(-0.25),\r\n secondaryButtonDown: color(\"#d9d9d9\").brighten(-0.35),\r\n secondaryButtonActive: color(\"#d9d9d9\").brighten(0.35),\r\n secondaryButtonText: color(\"#000000\"),\r\n secondaryButtonStroke: color(\"#FFFFFF\"),\r\n grid: color(\"#000000\"),\r\n background: color(\"#ffffff\"),\r\n alternativeBackground: color(\"#000000\"),\r\n text: color(\"#000000\"),\r\n alternativeText: color(\"#FFFFFF\"),\r\n disabledBackground: color(\"#999999\"),\r\n positive: color(\"#67dc75\"),\r\n negative: color(\"#dc6788\")\r\n };\r\n _this.className = \"InterfaceColorSet\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n InterfaceColorSet.prototype.debug = function () { };\r\n /**\r\n * Returns a color to be used for the specific purpose.\r\n *\r\n * ```TypeScript\r\n * let uicolors = new am4core.InterfaceColorSet();\r\n * console.log(uicolors.getFor(\"stroke\"));\r\n * ```\r\n * ```JavaScript\r\n * var uicolors = new am4core.InterfaceColorSet();\r\n * console.log(uicolors.getFor(\"stroke\"));\r\n * ```\r\n *\r\n * @param purpose Color use purpuse\r\n * @return Color\r\n */\r\n InterfaceColorSet.prototype.getFor = function (purpose) {\r\n return this._purposes[purpose];\r\n };\r\n /**\r\n * Sets color to be used for the specific purpose.\r\n *\r\n * @param purpose Color use purpose\r\n * @param color Color\r\n */\r\n InterfaceColorSet.prototype.setFor = function (purpose, color) {\r\n this._purposes[purpose] = color;\r\n };\r\n return InterfaceColorSet;\r\n}(BaseObject));\r\nexport { InterfaceColorSet };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"InterfaceColorSet\"] = InterfaceColorSet;\r\n//# sourceMappingURL=InterfaceColorSet.js.map","import * as $array from \"./Array\";\r\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport function fromArray(array) {\r\n return function (push) {\r\n var length = array.length;\r\n for (var i = 0; i < length; ++i) {\r\n if (!push(array[i])) {\r\n break;\r\n }\r\n }\r\n };\r\n}\r\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport function length(iter) {\r\n var sum = 0;\r\n iter(function (_) {\r\n ++sum;\r\n return true;\r\n });\r\n return sum;\r\n}\r\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport function toArray(iter) {\r\n var output = [];\r\n iter(function (value) {\r\n output.push(value);\r\n return true;\r\n });\r\n return output;\r\n}\r\n/**\r\n * [iter description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport function eachContinue(iter, fn) {\r\n iter(fn);\r\n}\r\n/**\r\n * [iter description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport function each(iter, fn) {\r\n iter(function (value) {\r\n fn(value);\r\n return true;\r\n });\r\n}\r\n/**\r\n * [iter description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport function sort(iter, fn) {\r\n return fromArray(toArray(iter).sort(fn));\r\n}\r\n/**\r\n * [A description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport function map(iter, fn) {\r\n return function (push) { return iter(function (value) { return push(fn(value)); }); };\r\n}\r\n/**\r\n * [iter description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport function filter(iter, fn) {\r\n return function (push) { return iter(function (value) {\r\n if (fn(value)) {\r\n return push(value);\r\n }\r\n else {\r\n return true;\r\n }\r\n }); };\r\n}\r\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport function concat() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n return function (push) {\r\n var go = true;\r\n var push2 = function (value) { return (go = push(value)); };\r\n var length = args.length;\r\n for (var i = 0; i < length; ++i) {\r\n args[i](push2);\r\n if (!go) {\r\n break;\r\n }\r\n }\r\n };\r\n}\r\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport function flatten(iter) {\r\n return function (push) {\r\n var go = true;\r\n var push2 = function (value) { return (go = push(value)); };\r\n iter(function (value) {\r\n value(push2);\r\n return go;\r\n });\r\n };\r\n}\r\n/**\r\n * [number description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport function indexed(iter) {\r\n return function (push) {\r\n var index = 0;\r\n iter(function (value) { return push([index++, value]); });\r\n };\r\n}\r\n/**\r\n * [iter description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport function findIndex(iter, matches) {\r\n var found = false;\r\n var i = 0;\r\n iter(function (value) {\r\n if (matches(value)) {\r\n found = true;\r\n return false;\r\n }\r\n else {\r\n ++i;\r\n return true;\r\n }\r\n });\r\n return (found ? i : -1);\r\n}\r\n/**\r\n * [iter description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport function find(iter, matches) {\r\n var output;\r\n iter(function (value) {\r\n if (matches(value)) {\r\n output = value;\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n });\r\n return output;\r\n}\r\n/**\r\n * [A description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport function findMap(iter, matches) {\r\n var output;\r\n iter(function (value) {\r\n var v = matches(value);\r\n if (v !== null) {\r\n output = v;\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n });\r\n return output;\r\n}\r\n/**\r\n * [iter description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport function contains(iter, matches) {\r\n var output = false;\r\n iter(function (value) {\r\n if (matches(value)) {\r\n output = true;\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n });\r\n return output;\r\n}\r\n/**\r\n * [A description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport function foldl(iter, init, fn) {\r\n iter(function (value) {\r\n init = fn(init, value);\r\n return true;\r\n });\r\n return init;\r\n}\r\n/**\r\n * [min2 description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param left [description]\r\n * @param right [description]\r\n * @return [description]\r\n */\r\nfunction min2(left, right) {\r\n if (left == null || right < left) {\r\n return right;\r\n }\r\n else {\r\n return left;\r\n }\r\n}\r\n/**\r\n * [min description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Verify that this works correctly\r\n * @todo Description\r\n * @param a [description]\r\n * @return [description]\r\n */\r\nexport function min(a) {\r\n return foldl(a, null, min2);\r\n}\r\n/**\r\n * [max2 description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param left [description]\r\n * @param right [description]\r\n * @return [description]\r\n */\r\nfunction max2(left, right) {\r\n if (left == null || right > left) {\r\n return right;\r\n }\r\n else {\r\n return left;\r\n }\r\n}\r\n/**\r\n * [max description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Verify that this works correctly\r\n * @todo Description\r\n * @param a [description]\r\n * @return [description]\r\n */\r\nexport function max(a) {\r\n return foldl(a, null, max2);\r\n}\r\n/**\r\n * [join description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param iter [description]\r\n * @param separator [description]\r\n * @return [description]\r\n */\r\nexport function join(iter, separator) {\r\n if (separator === void 0) { separator = \"\"; }\r\n var first = true;\r\n var init = \"\";\r\n iter(function (value) {\r\n if (first) {\r\n first = false;\r\n }\r\n else {\r\n init += separator;\r\n }\r\n init += value;\r\n return true;\r\n });\r\n return init;\r\n}\r\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nvar ListIterator = /** @class */ (function () {\r\n /**\r\n * Constructor\r\n *\r\n * @param list [description]\r\n * @param create [description]\r\n */\r\n function ListIterator(list, create) {\r\n // flag specifies if iterator should create new list item if it is reqested for a nextItem but there is no more left in the list\r\n this.createNewItems = false;\r\n this.list = list;\r\n this._create = create;\r\n this.reset();\r\n }\r\n ListIterator.prototype.reset = function () {\r\n this._listCopy = toArray(this.list.iterator());\r\n };\r\n ListIterator.prototype.clear = function () {\r\n this._listCopy.length = 0;\r\n };\r\n ListIterator.prototype.getFirst = function () {\r\n return this.returnItem(0);\r\n };\r\n ListIterator.prototype.getLast = function () {\r\n return this.returnItem(this._listCopy.length - 1);\r\n };\r\n ListIterator.prototype.find = function (fn) {\r\n var index = $array.findIndex(this._listCopy, fn);\r\n if (index !== -1) {\r\n var item = this._listCopy[index];\r\n // TODO use removeIndex instead ?\r\n $array.remove(this._listCopy, item);\r\n return item;\r\n }\r\n else {\r\n return this.getLast();\r\n }\r\n };\r\n ListIterator.prototype.removeItem = function (item) {\r\n return $array.remove(this._listCopy, item);\r\n };\r\n ListIterator.prototype.returnItem = function (index) {\r\n if (index >= 0 && index < this._listCopy.length) {\r\n var item = this._listCopy[index];\r\n // TODO use removeIndex instead ?\r\n $array.remove(this._listCopy, item);\r\n return item;\r\n }\r\n else if (this.createNewItems) {\r\n return this._create();\r\n }\r\n };\r\n ListIterator.prototype.iterator = function () {\r\n return fromArray(this._listCopy);\r\n };\r\n return ListIterator;\r\n}());\r\nexport { ListIterator };\r\n//# sourceMappingURL=Iterator.js.map","/**\r\n * A collection of keyboard-related utilities accessible via `keyboard`\r\n * instance.\r\n */\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport * as $type from \"./Type\";\r\n/**\r\n * A class that represents collection of keyboard-related utilities.\r\n *\r\n * Do not instantiate this class directly, but rather use `keyboard` variable.\r\n */\r\nvar Keyboard = /** @class */ (function () {\r\n function Keyboard() {\r\n }\r\n /**\r\n * Returns a named key based on information contained in the event or\r\n * \"other\".\r\n *\r\n * @param ev A keyboard event\r\n * @return Keyboard named key\r\n */\r\n Keyboard.prototype.getEventKey = function (ev) {\r\n // Get the key code\r\n var code = ev.keyCode || ev.which, key;\r\n // Map to internal key\r\n switch (code) {\r\n case 38:\r\n key = \"up\";\r\n break;\r\n case 40:\r\n key = \"down\";\r\n break;\r\n case 37:\r\n key = \"left\";\r\n break;\r\n case 39:\r\n key = \"right\";\r\n break;\r\n case 13:\r\n key = \"enter\";\r\n break;\r\n case 27:\r\n key = \"esc\";\r\n break;\r\n case 36:\r\n key = \"home\";\r\n break;\r\n case 35:\r\n key = \"end\";\r\n break;\r\n case 9:\r\n key = \"tab\";\r\n break;\r\n case 17:\r\n key = \"ctrl\";\r\n break;\r\n case 18:\r\n key = \"alt\";\r\n break;\r\n case 16:\r\n key = \"shift\";\r\n break;\r\n case 32:\r\n key = \"space\";\r\n break;\r\n case 36:\r\n key = \"home\";\r\n break;\r\n case 35:\r\n key = \"end\";\r\n break;\r\n case 33:\r\n key = \"pgup\";\r\n break;\r\n case 34:\r\n key = \"pgdn\";\r\n break;\r\n case 45:\r\n key = \"ins\";\r\n break;\r\n case 46:\r\n key = \"del\";\r\n break;\r\n case 107:\r\n key = \"plus\";\r\n break;\r\n case 109:\r\n key = \"minus\";\r\n break;\r\n default:\r\n key = \"other\";\r\n break;\r\n }\r\n return key;\r\n };\r\n /**\r\n * Checks if event key is one or more of the selected named keys.\r\n *\r\n * @param ev Keyboard event\r\n * @param key Named key or array of keys\r\n * @return Is event key one of the list?\r\n */\r\n Keyboard.prototype.isKey = function (ev, key) {\r\n var eventKey = this.getEventKey(ev);\r\n if ($type.isString(key)) {\r\n key = [key];\r\n }\r\n return key.indexOf(eventKey) !== -1;\r\n };\r\n /**\r\n * Returns `true` if shift key was presset at the moment of the event.\r\n *\r\n * @param ev Event object\r\n * @return Was shift pressed?\r\n */\r\n Keyboard.prototype.shiftKey = function (ev) {\r\n return ev.shiftKey;\r\n };\r\n /**\r\n * Returns `true` if ctrl key was presset at the moment of the event.\r\n *\r\n * @param ev Event object\r\n * @return Was ctrl pressed?\r\n */\r\n Keyboard.prototype.ctrlKey = function (ev) {\r\n return ev.ctrlKey;\r\n };\r\n /**\r\n * Returns `true` if alt key was presset at the moment of the event\r\n * @param ev Event object\r\n * @return Was alt pressed?\r\n */\r\n Keyboard.prototype.altKey = function (ev) {\r\n return ev.altKey;\r\n };\r\n /**\r\n * Returns `true` if meta key was presset at the moment of the event\r\n * @param ev Event object\r\n * @return Was meta pressed?\r\n */\r\n Keyboard.prototype.metaKey = function (ev) {\r\n return ev.metaKey;\r\n };\r\n return Keyboard;\r\n}());\r\nexport { Keyboard };\r\n/**\r\n * A single [[Keyboard]] instance to be reused across all elements so that\r\n * they don't need to instantiate their own.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport var keyboard = new Keyboard();\r\n//# sourceMappingURL=Keyboard.js.map","/**\r\n * amCharts 4 locale\r\n *\r\n * Locale: en\r\n * Language: International English\r\n * Author: Martynas Majeris\r\n *\r\n * Follow instructions in [on this page](https://www.amcharts.com/docs/v4/tutorials/creating-translations/) to make corrections or add new translations.\r\n *\r\n * ---\r\n * Edit but leave the header section above this line. You can remove any\r\n * subsequent comment sections.\r\n * ---\r\n *\r\n * Use this file as a template to create translations. Leave the key part in\r\n * English intact. Fill the value with a translation.\r\n *\r\n * Empty string means no translation, so default \"International English\"\r\n * will be used.\r\n *\r\n * If you need the translation to literally be an empty string, use `null`\r\n * instead.\r\n *\r\n * IMPORTANT:\r\n * When translating make good effort to keep the translation length\r\n * at least the same chartcount as the English, especially for short prompts.\r\n *\r\n * Having significantly longer prompts may distort the actual charts.\r\n *\r\n * NOTE:\r\n * Some prompts - like months or weekdays - come in two versions: full and\r\n * shortened.\r\n *\r\n * If there's no official shortened version of these in your language, and it\r\n * would not be possible to invent such short versions that don't seem weird\r\n * to native speakers of that language, fill those with the same as full\r\n * version.\r\n *\r\n * PLACEHOLDERS:\r\n * Some prompts have placeholders like \"%1\". Those will be replaced by actual\r\n * values during translation and should be retained in the translated prompts.\r\n *\r\n * Placeholder positions may be changed to better suit structure of the\r\n * sentence.\r\n *\r\n * For example \"From %1 to %2\", when actually used will replace \"%1\" with an\r\n * actual value representing range start, and \"%2\" will be replaced by end\r\n * value.\r\n *\r\n * E.g. in a Scrollbar for Value axis \"From %1 to %2\" will become\r\n * \"From 100 to 200\". You may translate \"From\" and \"to\", as well as re-arrange\r\n * the order of the prompt itself, but make sure the \"%1\" and \"%2\" remain, in\r\n * places where they will make sense.\r\n *\r\n * Save the file as language_LOCALE, i.e. `en_GB.ts`, `fr_FR.ts`, etc.\r\n */\r\nexport default {\r\n // Number formatting options.\r\n // \r\n // Please check with the local standards which separator is accepted to be\r\n // used for separating decimals, and which for thousands.\r\n \"_decimalSeparator\": \".\",\r\n \"_thousandSeparator\": \",\",\r\n // Suffixes for numbers\r\n // When formatting numbers, big or small numers might be reformatted to\r\n // shorter version, by applying a suffix.\r\n // \r\n // For example, 1000000 might become \"1m\".\r\n // Or 1024 might become \"1KB\" if we're formatting byte numbers.\r\n // \r\n // This section defines such suffixes for all such cases.\r\n \"_big_number_suffix_3\": \"k\",\r\n \"_big_number_suffix_6\": \"M\",\r\n \"_big_number_suffix_9\": \"G\",\r\n \"_big_number_suffix_12\": \"T\",\r\n \"_big_number_suffix_15\": \"P\",\r\n \"_big_number_suffix_18\": \"E\",\r\n \"_big_number_suffix_21\": \"Z\",\r\n \"_big_number_suffix_24\": \"Y\",\r\n \"_small_number_suffix_3\": \"m\",\r\n \"_small_number_suffix_6\": \"μ\",\r\n \"_small_number_suffix_9\": \"n\",\r\n \"_small_number_suffix_12\": \"p\",\r\n \"_small_number_suffix_15\": \"f\",\r\n \"_small_number_suffix_18\": \"a\",\r\n \"_small_number_suffix_21\": \"z\",\r\n \"_small_number_suffix_24\": \"y\",\r\n \"_byte_suffix_B\": \"B\",\r\n \"_byte_suffix_KB\": \"KB\",\r\n \"_byte_suffix_MB\": \"MB\",\r\n \"_byte_suffix_GB\": \"GB\",\r\n \"_byte_suffix_TB\": \"TB\",\r\n \"_byte_suffix_PB\": \"PB\",\r\n // Default date formats for various periods.\r\n // \r\n // This should reflect official or de facto formatting universally accepted\r\n // in the country translation is being made for\r\n // Available format codes here:\r\n // https://www.amcharts.com/docs/v4/concepts/formatters/formatting-date-time/#Format_codes\r\n // \r\n // This will be used when formatting date/time for particular granularity,\r\n // e.g. \"_date_hour\" will be shown whenever we need to show time as hours.\r\n // \r\n // \"date\" is used as in default date format when showing standalone dates.\r\n \"_date\": \"yyyy-MM-dd\",\r\n \"_date_millisecond\": \"mm:ss SSS\",\r\n \"_date_second\": \"HH:mm:ss\",\r\n \"_date_minute\": \"HH:mm\",\r\n \"_date_hour\": \"HH:mm\",\r\n \"_date_day\": \"MMM dd\",\r\n \"_date_week\": \"ww\",\r\n \"_date_month\": \"MMM\",\r\n \"_date_year\": \"yyyy\",\r\n // Default duration formats for various base units.\r\n // \r\n // This will be used by DurationFormatter to format numeric values into\r\n // duration.\r\n // \r\n // Notice how each duration unit comes in several versions. This is to ensure\r\n // that each base unit is shown correctly.\r\n // \r\n // For example, if we have baseUnit set to \"second\", meaning our duration is\r\n // in seconds.\r\n // \r\n // If we pass in `50` to formatter, it will know that we have just 50 seconds\r\n // (less than a minute) so it will use format in `\"_duration_second\"` (\"ss\"),\r\n // and the formatted result will be in like `\"50\"`.\r\n // \r\n // If we pass in `70`, which is more than a minute, the formatter will switch\r\n // to `\"_duration_second_minute\"` (\"mm:ss\"), resulting in \"01:10\" formatted\r\n // text.\r\n // \r\n // Available codes here:\r\n // https://www.amcharts.com/docs/v4/concepts/formatters/formatting-duration/#Available_Codes\r\n \"_duration_millisecond\": \"SSS\",\r\n \"_duration_millisecond_second\": \"ss.SSS\",\r\n \"_duration_millisecond_minute\": \"mm:ss SSS\",\r\n \"_duration_millisecond_hour\": \"hh:mm:ss SSS\",\r\n \"_duration_millisecond_day\": \"d'd' mm:ss SSS\",\r\n \"_duration_millisecond_week\": \"d'd' mm:ss SSS\",\r\n \"_duration_millisecond_month\": \"M'm' dd'd' mm:ss SSS\",\r\n \"_duration_millisecond_year\": \"y'y' MM'm' dd'd' mm:ss SSS\",\r\n \"_duration_second\": \"ss\",\r\n \"_duration_second_minute\": \"mm:ss\",\r\n \"_duration_second_hour\": \"hh:mm:ss\",\r\n \"_duration_second_day\": \"d'd' hh:mm:ss\",\r\n \"_duration_second_week\": \"d'd' hh:mm:ss\",\r\n \"_duration_second_month\": \"M'm' dd'd' hh:mm:ss\",\r\n \"_duration_second_year\": \"y'y' MM'm' dd'd' hh:mm:ss\",\r\n \"_duration_minute\": \"mm\",\r\n \"_duration_minute_hour\": \"hh:mm\",\r\n \"_duration_minute_day\": \"d'd' hh:mm\",\r\n \"_duration_minute_week\": \"d'd' hh:mm\",\r\n \"_duration_minute_month\": \"M'm' dd'd' hh:mm\",\r\n \"_duration_minute_year\": \"y'y' MM'm' dd'd' hh:mm\",\r\n \"_duration_hour\": \"hh'h'\",\r\n \"_duration_hour_day\": \"d'd' hh'h'\",\r\n \"_duration_hour_week\": \"d'd' hh'h'\",\r\n \"_duration_hour_month\": \"M'm' dd'd' hh'h'\",\r\n \"_duration_hour_year\": \"y'y' MM'm' dd'd' hh'h'\",\r\n \"_duration_day\": \"d'd'\",\r\n \"_duration_day_week\": \"d'd'\",\r\n \"_duration_day_month\": \"M'm' dd'd'\",\r\n \"_duration_day_year\": \"y'y' MM'm' dd'd'\",\r\n \"_duration_week\": \"w'w'\",\r\n \"_duration_week_month\": \"w'w'\",\r\n \"_duration_week_year\": \"w'w'\",\r\n \"_duration_month\": \"M'm'\",\r\n \"_duration_month_year\": \"y'y' MM'm'\",\r\n \"_duration_year\": \"y'y'\",\r\n // Era translations\r\n \"_era_ad\": \"AD\",\r\n \"_era_bc\": \"BC\",\r\n // Day part, used in 12-hour formats, e.g. 5 P.M.\r\n // Please note that these come in 3 variants:\r\n // * one letter (e.g. \"A\")\r\n // * two letters (e.g. \"AM\")\r\n // * two letters with dots (e.g. \"A.M.\")\r\n // \r\n // All three need to to be translated even if they are all the same. Some\r\n // users might use one, some the other.\r\n \"A\": \"\",\r\n \"P\": \"\",\r\n \"AM\": \"\",\r\n \"PM\": \"\",\r\n \"A.M.\": \"\",\r\n \"P.M.\": \"\",\r\n // Date-related stuff.\r\n // \r\n // When translating months, if there's a difference, use the form which is\r\n // best for a full date, e.g. as you would use it in \"2018 January 1\".\r\n // \r\n // Note that May is listed twice. This is because in English May is the same\r\n // in both long and short forms, while in other languages it may not be the\r\n // case. Translate \"May\" to full word, while \"May(short)\" to shortened\r\n // version.\r\n // \r\n // Should month names and weekdays be capitalized or not?\r\n // \r\n // Rule of thumb is this: if the names should always be capitalized,\r\n // regardless of name position within date (\"January\", \"21st January 2018\",\r\n // etc.) use capitalized names. Otherwise enter all lowercase.\r\n // \r\n // The date formatter will automatically capitalize names if they are the\r\n // first (or only) word in resulting date.\r\n \"January\": \"\",\r\n \"February\": \"\",\r\n \"March\": \"\",\r\n \"April\": \"\",\r\n \"May\": \"\",\r\n \"June\": \"\",\r\n \"July\": \"\",\r\n \"August\": \"\",\r\n \"September\": \"\",\r\n \"October\": \"\",\r\n \"November\": \"\",\r\n \"December\": \"\",\r\n \"Jan\": \"\",\r\n \"Feb\": \"\",\r\n \"Mar\": \"\",\r\n \"Apr\": \"\",\r\n \"May(short)\": \"May\",\r\n \"Jun\": \"\",\r\n \"Jul\": \"\",\r\n \"Aug\": \"\",\r\n \"Sep\": \"\",\r\n \"Oct\": \"\",\r\n \"Nov\": \"\",\r\n \"Dec\": \"\",\r\n // Weekdays.\r\n \"Sunday\": \"\",\r\n \"Monday\": \"\",\r\n \"Tuesday\": \"\",\r\n \"Wednesday\": \"\",\r\n \"Thursday\": \"\",\r\n \"Friday\": \"\",\r\n \"Saturday\": \"\",\r\n \"Sun\": \"\",\r\n \"Mon\": \"\",\r\n \"Tue\": \"\",\r\n \"Wed\": \"\",\r\n \"Thu\": \"\",\r\n \"Fri\": \"\",\r\n \"Sat\": \"\",\r\n // Date ordinal function.\r\n // \r\n // This is used when adding number ordinal when formatting days in dates.\r\n // \r\n // E.g. \"January 1st\", \"February 2nd\".\r\n // \r\n // The function accepts day number, and returns a string to be added to the\r\n // day, like in default English translation, if we pass in 2, we will receive\r\n // \"nd\" back.\r\n \"_dateOrd\": function (day) {\r\n var res = \"th\";\r\n if ((day < 11) || (day > 13)) {\r\n switch (day % 10) {\r\n case 1:\r\n res = \"st\";\r\n break;\r\n case 2:\r\n res = \"nd\";\r\n break;\r\n case 3:\r\n res = \"rd\";\r\n break;\r\n }\r\n }\r\n return res;\r\n },\r\n // Various chart controls.\r\n // Shown as a tooltip on zoom out button.\r\n \"Zoom Out\": \"\",\r\n // Timeline buttons\r\n \"Play\": \"\",\r\n \"Stop\": \"\",\r\n // Chart's Legend screen reader title.\r\n \"Legend\": \"\",\r\n // Legend's item screen reader indicator.\r\n \"Click, tap or press ENTER to toggle\": \"\",\r\n // Shown when the chart is busy loading something.\r\n \"Loading\": \"\",\r\n // Shown as the first button in the breadcrumb navigation, e.g.:\r\n // Home > First level > ...\r\n \"Home\": \"\",\r\n // Chart types.\r\n // Those are used as default screen reader titles for the main chart element\r\n // unless developer has set some more descriptive title.\r\n \"Chart\": \"\",\r\n \"Serial chart\": \"\",\r\n \"X/Y chart\": \"\",\r\n \"Pie chart\": \"\",\r\n \"Gauge chart\": \"\",\r\n \"Radar chart\": \"\",\r\n \"Sankey diagram\": \"\",\r\n \"Flow diagram\": \"\",\r\n \"Chord diagram\": \"\",\r\n \"TreeMap chart\": \"\",\r\n \"Force directed tree\": \"\",\r\n \"Sliced chart\": \"\",\r\n // Series types.\r\n // Used to name series by type for screen readers if they do not have their\r\n // name set.\r\n \"Series\": \"\",\r\n \"Candlestick Series\": \"\",\r\n \"OHLC Series\": \"\",\r\n \"Column Series\": \"\",\r\n \"Line Series\": \"\",\r\n \"Pie Slice Series\": \"\",\r\n \"Funnel Series\": \"\",\r\n \"Pyramid Series\": \"\",\r\n \"X/Y Series\": \"\",\r\n // Map-related stuff.\r\n \"Map\": \"\",\r\n \"Press ENTER to zoom in\": \"\",\r\n \"Press ENTER to zoom out\": \"\",\r\n \"Use arrow keys to zoom in and out\": \"\",\r\n \"Use plus and minus keys on your keyboard to zoom in and out\": \"\",\r\n // Export-related stuff.\r\n // These prompts are used in Export menu labels.\r\n // \r\n // \"Export\" is the top-level menu item.\r\n // \r\n // \"Image\", \"Data\", \"Print\" as second-level indicating type of export\r\n // operation.\r\n // \r\n // Leave actual format untranslated, unless you absolutely know that they\r\n // would convey more meaning in some other way.\r\n \"Export\": \"\",\r\n \"Image\": \"\",\r\n \"Data\": \"\",\r\n \"Print\": \"\",\r\n \"Press ENTER or use arrow keys to navigate\": \"\",\r\n \"Click, tap or press ENTER to open\": \"\",\r\n \"Click, tap or press ENTER to print.\": \"\",\r\n \"Click, tap or press ENTER to export as %1.\": \"\",\r\n 'To save the image, right-click this link and choose \"Save picture as...\"': \"\",\r\n 'To save the image, right-click thumbnail on the left and choose \"Save picture as...\"': \"\",\r\n \"(Press ESC to close this message)\": \"\",\r\n \"Image Export Complete\": \"\",\r\n \"Export operation took longer than expected. Something might have gone wrong.\": \"\",\r\n \"Saved from\": \"\",\r\n \"PNG\": \"\",\r\n \"JPG\": \"\",\r\n \"GIF\": \"\",\r\n \"SVG\": \"\",\r\n \"PDF\": \"\",\r\n \"JSON\": \"\",\r\n \"CSV\": \"\",\r\n \"XLSX\": \"\",\r\n // Scrollbar-related stuff.\r\n // \r\n // Scrollbar is a control which can zoom and pan the axes on the chart.\r\n // \r\n // Each scrollbar has two grips: left or right (for horizontal scrollbar) or\r\n // upper and lower (for vertical one).\r\n // \r\n // Prompts change in relation to whether Scrollbar is vertical or horizontal.\r\n // \r\n // The final section is used to indicate the current range of selection.\r\n \"Use TAB to select grip buttons or left and right arrows to change selection\": \"\",\r\n \"Use left and right arrows to move selection\": \"\",\r\n \"Use left and right arrows to move left selection\": \"\",\r\n \"Use left and right arrows to move right selection\": \"\",\r\n \"Use TAB select grip buttons or up and down arrows to change selection\": \"\",\r\n \"Use up and down arrows to move selection\": \"\",\r\n \"Use up and down arrows to move lower selection\": \"\",\r\n \"Use up and down arrows to move upper selection\": \"\",\r\n \"From %1 to %2\": \"\",\r\n \"From %1\": \"\",\r\n \"To %1\": \"\",\r\n // Data loader-related.\r\n \"No parser available for file: %1\": \"\",\r\n \"Error parsing file: %1\": \"\",\r\n \"Unable to load file: %1\": \"\",\r\n \"Invalid date\": \"\",\r\n // Common actions\r\n \"Close\": \"\",\r\n \"Minimize\": \"\"\r\n};\r\n//# sourceMappingURL=en.js.map","/**\r\n * Language module contains everything related to language-specific operations:\r\n * * Translating prompts\r\n * * Translating functions\r\n * * Date format localizations\r\n */\r\nimport { __extends, __read, __spread } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObjectEvents } from \"../Base\";\r\nimport { Adapter } from \"./Adapter\";\r\nimport * as $array from \"./Array\";\r\nimport * as $type from \"./Type\";\r\nimport en from \"../../../lang/en\";\r\nimport { options } from \"../Options\";\r\n;\r\n;\r\n/**\r\n * Handles all language-related tasks, like loading and storing translations,\r\n * translating prompts, lists of prompts and even functions.\r\n *\r\n * Almost every object in amCharts4 universe will have a `language` property,\r\n * which can be accessed for prompt translation.\r\n *\r\n * @see {@link ILanguageAdapters} for a list of available Adapters\r\n * @todo Make prompt keys case-insensitive\r\n * @important\r\n */\r\nvar Language = /** @class */ (function (_super) {\r\n __extends(Language, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Language() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Adapter.\r\n */\r\n _this.adapter = new Adapter(_this);\r\n /**\r\n * Current locale.\r\n */\r\n _this._locale = en;\r\n /**\r\n * Default locale. A locale to fall back to if none is specified, or\r\n * if there's no translation for the prompt for the current language.\r\n */\r\n _this._defaultLocale = en;\r\n _this.className = \"Language\";\r\n // Set default language if necessary\r\n if ($type.hasValue(options.defaultLocale)) {\r\n _this.locale = options.defaultLocale;\r\n }\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Returns locale that is currently used.\r\n *\r\n * @param locale Force locale. Will use current language if not set.\r\n * @return Locale\r\n */\r\n Language.prototype.getLocale = function (locale) {\r\n if (locale == null) {\r\n locale = this._locale;\r\n }\r\n return this.adapter.apply(\"locale\", {\r\n locale: locale\r\n }).locale;\r\n };\r\n /**\r\n * Returns the translation of the string.\r\n *\r\n * If the translation is empty, it will return untranslated prompt.\r\n *\r\n * Third parameter and up are strings that can be used to replace \"%X\"\r\n * placeholders in prompt.\r\n *\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * // Results in \"This is a first translation test\"\r\n * chart.language.translate(\"This is a %1 translation %2\", null, \"first\", \"test\");\r\n * ```\r\n * ```JavaScriptScript\r\n * // Results in \"This is a first translation test\"\r\n * chart.language.translate(\"This is a %1 translation %2\", null, \"first\", \"test\");\r\n * ```\r\n *\r\n * @param prompt A string to translate\r\n * @param locale Force translation into specific locale, e.g. fr_FR\r\n * @param rest Parameters to replace in string\r\n * @return Translation\r\n */\r\n Language.prototype.translate = function (prompt, locale) {\r\n var rest = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n rest[_i - 2] = arguments[_i];\r\n }\r\n // Get langauge\r\n locale = this.getLocale(locale);\r\n // Init translation\r\n var translation = prompt;\r\n // Get translations for the locale\r\n var translations = this.getTranslations(locale);\r\n var value = translations[prompt];\r\n // Try to look for the translation\r\n if (value === null) {\r\n value = \"\";\r\n }\r\n else if ($type.hasValue(value)) {\r\n // It might be an empty string\r\n if (value) {\r\n translation = value;\r\n }\r\n }\r\n else if (locale !== this._defaultLocale) {\r\n // Try to look in default language\r\n return this.translate.apply(this, __spread([prompt, this._defaultLocale], rest));\r\n }\r\n // Replace %1, %2, etc params\r\n if (rest.length) {\r\n for (var len = rest.length, i = 0; i < len; ++i) {\r\n translation = translation.split(\"%\" + (i + 1)).join(rest[i]);\r\n }\r\n }\r\n // Return the translation\r\n return this.adapter.apply(\"translate\", {\r\n translation: translation,\r\n locale: locale\r\n }).translation;\r\n };\r\n /**\r\n * Non-type-checked translation.\r\n *\r\n * Can be used by plugins and other code that may have their own non-standard\r\n * translation prompts.\r\n *\r\n * @since 4.5.5\r\n * @param prompt A string to translate\r\n * @param locale Force translation into specific locale, e.g. fr_FR\r\n * @param rest Parameters to replace in string\r\n * @return Translation\r\n */\r\n Language.prototype.translateAny = function (prompt, locale) {\r\n var rest = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n rest[_i - 2] = arguments[_i];\r\n }\r\n return this.translate.apply(this, __spread([prompt, locale], rest));\r\n };\r\n /**\r\n * Sets a prompt translation.\r\n *\r\n * @since 4.9.35\r\n * @param prompt Prompt in English\r\n * @param translation Translation\r\n * @param locale Locale\r\n */\r\n Language.prototype.setTranslationAny = function (prompt, translation, locale) {\r\n var localeTarget = locale || this.locale;\r\n localeTarget[prompt] = translation;\r\n };\r\n /**\r\n * Translates prompt.\r\n *\r\n * If translation is empty, it will return empty string, which is a different\r\n * behavior than that of regular `translate`.\r\n *\r\n * @param prompt A string to translate\r\n * @param locale Force translation into specific locale, e.g. fr_FR\r\n * @param ...rest Parameters to replace in string\r\n * @return Translation\r\n */\r\n Language.prototype.translateEmpty = function (prompt, locale) {\r\n var rest = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n rest[_i - 2] = arguments[_i];\r\n }\r\n var translation = this.translate.apply(this, __spread([prompt, locale], rest));\r\n return translation == prompt ? \"\" : translation;\r\n };\r\n /**\r\n * Translates a function.\r\n *\r\n * This method will return a function reference, but will not run it. It's\r\n * up to the caller script to run the function.\r\n *\r\n * @param prompt A function id to translate\r\n * @param locale Force translation into specific locale. e.g. fr_FR\r\n * @return A language-specific version of the function\r\n * @todo Apply adapter\r\n */\r\n Language.prototype.translateFunc = function (prompt, locale) {\r\n // Get langauge\r\n locale = this.getLocale(locale);\r\n // Get translations for the locale\r\n var translations = this.getTranslations(locale);\r\n var value = translations[prompt];\r\n // Try to look for the translation\r\n if (value != null) {\r\n return value;\r\n }\r\n // Try to look in default language\r\n if (locale !== this._defaultLocale) {\r\n return this.translateFunc(prompt, this._defaultLocale);\r\n }\r\n // Fail - return empty function\r\n return function () {\r\n return \"\";\r\n };\r\n };\r\n /**\r\n * Translates a list of prompts in one go.\r\n *\r\n * @param list An array of strings to translate\r\n * @param locale Force translation into specific locale. e.g. fr_FR\r\n * @return An array of translated strings in the same order as source list\r\n */\r\n Language.prototype.translateAll = function (list, locale) {\r\n var _this = this;\r\n // Translate all items in the list\r\n if (!this.isDefault()) {\r\n return $array.map(list, function (x) { return _this.translate(x, locale); });\r\n }\r\n else {\r\n return list;\r\n }\r\n };\r\n /**\r\n * Returns `true` if the currently selected locale is a default locale.\r\n *\r\n * @return `true` if locale is default; `false` if it is not.\r\n */\r\n Language.prototype.isDefault = function () {\r\n return this._defaultLocale === this._locale;\r\n };\r\n Object.defineProperty(Language.prototype, \"locale\", {\r\n /**\r\n * @return Locale definition\r\n */\r\n get: function () {\r\n return this._locale;\r\n },\r\n /**\r\n * Current locale.\r\n *\r\n * @param value Locale definition (translations)\r\n */\r\n set: function (value) {\r\n if (this._locale != value) {\r\n this._locale = value;\r\n if (this.events.isEnabled(\"localechanged\")) {\r\n var event_1 = {\r\n type: \"localechanged\",\r\n locale: value,\r\n target: this\r\n };\r\n this.events.dispatchImmediately(\"localechanged\", event_1);\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns translations for a given locale.\r\n *\r\n * @ignore\r\n * @deprecated\r\n * @param locale Locale\r\n * @return Translations\r\n */\r\n Language.prototype.getTranslations = function (locale) {\r\n return this.adapter.apply(\"translations\", {\r\n translations: locale,\r\n locale: locale\r\n }).translations;\r\n };\r\n return Language;\r\n}(BaseObjectEvents));\r\nexport { Language };\r\n//# sourceMappingURL=Language.js.map","import { __extends, __generator } from \"tslib\";\r\nimport { Disposer, MultiDisposer } from \"./Disposer\";\r\nimport { EventDispatcher } from \"./EventDispatcher\";\r\nimport * as $array from \"./Array\";\r\nimport * as $iter from \"./Iterator\";\r\n/**\r\n * @todo Description\r\n */\r\nvar IndexedIterable = /** @class */ (function () {\r\n /**\r\n * Constructor.\r\n *\r\n * @param array List items\r\n * @param start Start index\r\n * @param end End index\r\n */\r\n function IndexedIterable(array, start, end) {\r\n this._array = array;\r\n this._start = start;\r\n this._end = end;\r\n }\r\n /**\r\n * Returns a list item iterator.\r\n *\r\n * @return Iterator\r\n */\r\n IndexedIterable.prototype.iterator = function () {\r\n var _this = this;\r\n return function (push) {\r\n if (_this._start !== _this._end) {\r\n if (_this._start < _this._end) {\r\n for (var i = _this._start; i < _this._end; ++i) {\r\n if (!push(_this._array[i])) {\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = _this._start - 1; i >= _this._end; --i) {\r\n if (!push(_this._array[i])) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n };\r\n /**\r\n * Returns an interable list sorted backwards than current list.\r\n *\r\n * @return List\r\n */\r\n IndexedIterable.prototype.backwards = function () {\r\n return new IndexedIterable(this._array, this._end, this._start);\r\n };\r\n /**\r\n * Returns a new list consisting only of specific range of items between\r\n * `start` and `end` indexes.\r\n *\r\n * @param start Start index\r\n * @param end End index\r\n * @return List\r\n */\r\n IndexedIterable.prototype.range = function (start, end) {\r\n if (start <= end) {\r\n if (this._start === this._end) {\r\n return this;\r\n }\r\n else if (this._start < this._end) {\r\n var diff = end - start;\r\n start = Math.max(this._start + start, this._start);\r\n end = Math.min(start + diff, this._end);\r\n return new IndexedIterable(this._array, start, end);\r\n }\r\n else {\r\n var diff = end - start;\r\n start = Math.max(this._start - start, this._end);\r\n end = Math.max(start - diff, this._end);\r\n return new IndexedIterable(this._array, start, end);\r\n }\r\n }\r\n else {\r\n throw new Error(\"Start index must be lower than end index\");\r\n }\r\n };\r\n return IndexedIterable;\r\n}());\r\nexport { IndexedIterable };\r\n/**\r\n * ListGrouper organizes [[List]] items into groups.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nvar ListGrouper = /** @class */ (function (_super) {\r\n __extends(ListGrouper, _super);\r\n /**\r\n * Constructor.\r\n */\r\n function ListGrouper(list, getKey, sort) {\r\n var _this = _super.call(this, [\r\n list.events.on(\"inserted\", function (x) {\r\n var value = x.newValue;\r\n var key = _this._getKey(value);\r\n var index = 0;\r\n $iter.eachContinue(list.iterator(), function (x) {\r\n if (x === value) {\r\n return false;\r\n }\r\n else if (_this._getKey(x) === key) {\r\n ++index;\r\n }\r\n return true;\r\n });\r\n _this._insert(value, key, index);\r\n }, undefined, false),\r\n list.events.on(\"removed\", function (x) {\r\n _this._remove(x.oldValue);\r\n }, undefined, false)\r\n ]) || this;\r\n /**\r\n * Grouping keys.\r\n */\r\n _this._keys = [];\r\n /**\r\n * List item groups.\r\n */\r\n _this._groups = {};\r\n _this._getKey = getKey;\r\n _this._sort = sort;\r\n $iter.each(list.iterator(), function (x) {\r\n _this._insert(x, getKey(x));\r\n });\r\n return _this;\r\n }\r\n /**\r\n * Inserts an item (`x`) to a specific group (`key`) and specific `index`.\r\n *\r\n * @param x Item\r\n * @param key Group name\r\n * @param index Index\r\n */\r\n ListGrouper.prototype._insert = function (x, key, index) {\r\n if (this._groups[key] == null) {\r\n this._groups[key] = [];\r\n // TODO code duplication with SortedList\r\n var _a = $array.getSortedIndex(this._keys, this._sort, key), found = _a.found, index_1 = _a.index;\r\n if (found) {\r\n throw new Error(\"Key already exists: \" + key);\r\n }\r\n else {\r\n $array.insertIndex(this._keys, index_1, key);\r\n }\r\n }\r\n if (index == null) {\r\n this._groups[key].push(x);\r\n }\r\n else {\r\n $array.insertIndex(this._groups[key], index, x);\r\n }\r\n };\r\n /**\r\n * Removes an item from the list.\r\n *\r\n * @param x Item to remove\r\n */\r\n ListGrouper.prototype._remove = function (x) {\r\n var key = this._getKey(x);\r\n var values = this._groups[key];\r\n if (values != null) {\r\n $array.remove(values, x);\r\n if (values.length === 0) {\r\n delete this._groups[key];\r\n var _a = $array.getSortedIndex(this._keys, this._sort, key), found = _a.found, index = _a.index;\r\n if (found) {\r\n $array.removeIndex(this._keys, index);\r\n }\r\n else {\r\n throw new Error(\"Key doesn't exist: \" + key);\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Returns an iterator for the list.\r\n *\r\n * The iterator will iterate through all items in all groups.\r\n *\r\n * @return Iterator\r\n */\r\n ListGrouper.prototype.iterator = function () {\r\n var _this = this;\r\n return $iter.flatten($iter.map($iter.fromArray(this._keys), function (key) {\r\n return $iter.fromArray(_this._groups[key]);\r\n }));\r\n };\r\n return ListGrouper;\r\n}(MultiDisposer));\r\nexport { ListGrouper };\r\n/**\r\n * A disposable list, which when disposed itself will call `dispose()` method\r\n * on all its items.\r\n */\r\nvar ListDisposer = /** @class */ (function (_super) {\r\n __extends(ListDisposer, _super);\r\n function ListDisposer(list, disposeOnRemove) {\r\n if (disposeOnRemove === void 0) { disposeOnRemove = true; }\r\n var _this = this;\r\n if (disposeOnRemove) {\r\n var disposer_1 = list.events.on(\"removed\", function (x) {\r\n x.oldValue.dispose();\r\n }, undefined, false);\r\n _this = _super.call(this, function () {\r\n disposer_1.dispose();\r\n // TODO clear the list ?\r\n $iter.each(list.iterator(), function (x) {\r\n x.dispose();\r\n });\r\n }) || this;\r\n }\r\n else {\r\n _this = _super.call(this, function () {\r\n // TODO clear the list ?\r\n $iter.each(list.iterator(), function (x) {\r\n x.dispose();\r\n });\r\n }) || this;\r\n }\r\n return _this;\r\n }\r\n return ListDisposer;\r\n}(Disposer));\r\nexport { ListDisposer };\r\n/**\r\n * Checks if specific index fits into length.\r\n *\r\n * @param index Index\r\n * @param len Length\r\n */\r\nfunction checkBounds(index, len) {\r\n if (!(index >= 0 && index < len)) {\r\n throw new Error(\"Index out of bounds: \" + index);\r\n }\r\n}\r\n/**\r\n * A List class is used to hold a number of indexed items of the same type.\r\n */\r\nvar List = /** @class */ (function () {\r\n /**\r\n * Constructor\r\n *\r\n * @param initial Inital list of values to add to list\r\n */\r\n function List(initial) {\r\n if (initial === void 0) { initial = []; }\r\n /**\r\n * Event dispatcher.\r\n */\r\n this.events = new EventDispatcher();\r\n this._values = initial;\r\n }\r\n Object.defineProperty(List.prototype, \"values\", {\r\n /**\r\n * An array of values in the list.\r\n *\r\n * Do not use this property to add values. Rather use dedicated methods, like\r\n * `push()`, `removeIndex()`, etc.\r\n *\r\n * @readonly\r\n * @return List values\r\n */\r\n get: function () {\r\n return this._values;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Checks if list contains specific item reference.\r\n *\r\n * @param item Item to search for\r\n * @return `true` if found, `false` if not found\r\n */\r\n List.prototype.contains = function (value) {\r\n return this._values.indexOf(value) !== -1;\r\n };\r\n /**\r\n * Removes specific item from the list.\r\n *\r\n * @param item An item to remove\r\n */\r\n List.prototype.removeValue = function (value) {\r\n var i = 0;\r\n var length = this._values.length;\r\n while (i < length) {\r\n // TODO handle NaN\r\n if (this._values[i] === value) {\r\n this.removeIndex(i);\r\n --length;\r\n }\r\n else {\r\n ++i;\r\n }\r\n }\r\n };\r\n /**\r\n * Searches the list for specific item and returns its index.\r\n *\r\n * @param item An item to search for\r\n * @return Index or -1 if not found\r\n */\r\n List.prototype.indexOf = function (value) {\r\n return $array.indexOf(this._values, value);\r\n };\r\n Object.defineProperty(List.prototype, \"length\", {\r\n /**\r\n * Number of items in list.\r\n *\r\n * @readonly\r\n * @return Number of items\r\n */\r\n get: function () {\r\n return this._values.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Checks if there's a value at specific index.\r\n *\r\n * @param index Index\r\n * @return Value exists?\r\n */\r\n List.prototype.hasIndex = function (index) {\r\n return index >= 0 && index < this._values.length;\r\n };\r\n /**\r\n * Returns an item at specified index.\r\n *\r\n * @param index Index\r\n * @return List item\r\n */\r\n List.prototype.getIndex = function (index) {\r\n return this._values[index];\r\n };\r\n /**\r\n * Sets value at specific index.\r\n *\r\n * If there's already a value at the index, it is overwritten.\r\n *\r\n * @param index Index\r\n * @param value New value\r\n * @return New value\r\n */\r\n List.prototype.setIndex = function (index, value) {\r\n checkBounds(index, this._values.length);\r\n var oldValue = this._values[index];\r\n // Do nothing if the old value and the new value are the same\r\n if (oldValue !== value) {\r\n this._values[index] = value;\r\n if (this.events.isEnabled(\"setIndex\")) {\r\n this.events.dispatchImmediately(\"setIndex\", {\r\n type: \"setIndex\",\r\n target: this,\r\n index: index,\r\n oldValue: oldValue,\r\n newValue: value\r\n });\r\n }\r\n if (this.events.isEnabled(\"removed\")) {\r\n this.events.dispatchImmediately(\"removed\", {\r\n type: \"removed\",\r\n target: this,\r\n oldValue: oldValue\r\n });\r\n }\r\n if (this.events.isEnabled(\"inserted\")) {\r\n this.events.dispatchImmediately(\"inserted\", {\r\n type: \"inserted\",\r\n target: this,\r\n newValue: value\r\n });\r\n }\r\n }\r\n return oldValue;\r\n };\r\n /**\r\n * Adds an item to the list at a specific index, which pushes all the other\r\n * items further down the list.\r\n *\r\n * @param index Index\r\n * @param item An item to add\r\n */\r\n List.prototype.insertIndex = function (index, value) {\r\n checkBounds(index, this._values.length + 1);\r\n $array.insertIndex(this._values, index, value);\r\n if (this.events.isEnabled(\"insertIndex\")) {\r\n this.events.dispatchImmediately(\"insertIndex\", {\r\n type: \"insertIndex\",\r\n target: this,\r\n index: index,\r\n newValue: value\r\n });\r\n }\r\n if (this.events.isEnabled(\"inserted\")) {\r\n this.events.dispatchImmediately(\"inserted\", {\r\n type: \"inserted\",\r\n target: this,\r\n newValue: value\r\n });\r\n }\r\n };\r\n /**\r\n * [_sortQuicksort description]\r\n *\r\n * @todo Description\r\n * @param low [description]\r\n * @param high [description]\r\n * @param order [description]\r\n */\r\n List.prototype._sortQuicksort = function (low, high, order) {\r\n if (low < high) {\r\n var p = this._sortPartition(low, high, order);\r\n this._sortQuicksort(low, p, order);\r\n this._sortQuicksort(p + 1, high, order);\r\n }\r\n };\r\n /**\r\n * [_sortPartition description]\r\n *\r\n * @todo Description\r\n * @param low [description]\r\n * @param high [description]\r\n * @param order [description]\r\n * @return [description]\r\n */\r\n List.prototype._sortPartition = function (low, high, order) {\r\n var values = this._values;\r\n var pivot = values[low];\r\n var i = low - 1;\r\n var j = high + 1;\r\n for (;;) {\r\n do {\r\n ++i;\r\n } while (order(values[i], pivot) < 0);\r\n do {\r\n --j;\r\n } while (order(values[j], pivot) > 0);\r\n if (i >= j) {\r\n return j;\r\n }\r\n else {\r\n this.swap(i, j);\r\n }\r\n }\r\n };\r\n /**\r\n * Reorders list items according to specific ordering function.\r\n *\r\n * @param order Ordering function\r\n */\r\n List.prototype.sort = function (order) {\r\n // https://en.wikipedia.org/wiki/Quicksort#Hoare_partition_scheme\r\n // @todo faster implementation of this\r\n // @todo test this\r\n this._sortQuicksort(0, this._values.length - 1, order);\r\n };\r\n /**\r\n * Swaps indexes of two items in the list.\r\n *\r\n * @param a Item 1\r\n * @param b Item 2\r\n */\r\n List.prototype.swap = function (a, b) {\r\n var len = this._values.length;\r\n checkBounds(a, len);\r\n checkBounds(b, len);\r\n if (a !== b) {\r\n var value_a = this._values[a];\r\n var value_b = this._values[b];\r\n this._values[a] = value_b;\r\n if (this.events.isEnabled(\"setIndex\")) {\r\n this.events.dispatchImmediately(\"setIndex\", {\r\n type: \"setIndex\",\r\n target: this,\r\n index: a,\r\n oldValue: value_a,\r\n newValue: value_b\r\n });\r\n }\r\n this._values[b] = value_a;\r\n if (this.events.isEnabled(\"setIndex\")) {\r\n this.events.dispatchImmediately(\"setIndex\", {\r\n type: \"setIndex\",\r\n target: this,\r\n index: b,\r\n oldValue: value_b,\r\n newValue: value_a\r\n });\r\n }\r\n }\r\n };\r\n /**\r\n * Removes a value at specific index.\r\n *\r\n * @param index Index of value to remove\r\n * @return Removed value\r\n */\r\n List.prototype.removeIndex = function (index) {\r\n checkBounds(index, this._values.length);\r\n var oldValue = this._values[index];\r\n $array.removeIndex(this._values, index);\r\n if (this.events.isEnabled(\"removeIndex\")) {\r\n this.events.dispatchImmediately(\"removeIndex\", {\r\n type: \"removeIndex\",\r\n target: this,\r\n index: index,\r\n oldValue: oldValue\r\n });\r\n }\r\n if (this.events.isEnabled(\"removed\")) {\r\n this.events.dispatchImmediately(\"removed\", {\r\n type: \"removed\",\r\n target: this,\r\n oldValue: oldValue\r\n });\r\n }\r\n return oldValue;\r\n };\r\n /**\r\n * Moves an item to a specific index within the list.\r\n *\r\n * If the index is not specified it will move the item to the end of the\r\n * list.\r\n *\r\n * @param value Item to move\r\n * @param index Index to place item at\r\n */\r\n List.prototype.moveValue = function (value, toIndex) {\r\n // TODO don't do anything if the desired index is the same as the current index\r\n var index = this.indexOf(value);\r\n // TODO remove all old values rather than only the first ?\r\n if (index !== -1) {\r\n var oldValue = this._values[index];\r\n $array.removeIndex(this._values, index);\r\n if (this.events.isEnabled(\"removeIndex\")) {\r\n this.events.dispatchImmediately(\"removeIndex\", {\r\n type: \"removeIndex\",\r\n target: this,\r\n index: index,\r\n oldValue: oldValue\r\n });\r\n }\r\n }\r\n if (toIndex == null) {\r\n toIndex = this._values.length;\r\n this._values.push(value);\r\n }\r\n else {\r\n $array.insertIndex(this._values, toIndex, value);\r\n }\r\n if (this.events.isEnabled(\"insertIndex\")) {\r\n this.events.dispatchImmediately(\"insertIndex\", {\r\n type: \"insertIndex\",\r\n target: this,\r\n index: toIndex,\r\n newValue: value\r\n });\r\n }\r\n if (index === -1) {\r\n if (this.events.isEnabled(\"inserted\")) {\r\n this.events.dispatchImmediately(\"inserted\", {\r\n type: \"inserted\",\r\n target: this,\r\n newValue: value\r\n });\r\n }\r\n }\r\n };\r\n /**\r\n * Adds an item to the end of the list.\r\n *\r\n * @param item An item to add\r\n */\r\n List.prototype.push = function (value) {\r\n var index = this._values.push(value) - 1;\r\n if (this.events.isEnabled(\"insertIndex\")) {\r\n this.events.dispatchImmediately(\"insertIndex\", {\r\n type: \"insertIndex\",\r\n target: this,\r\n index: index,\r\n newValue: value\r\n });\r\n }\r\n if (this.events.isEnabled(\"inserted\")) {\r\n this.events.dispatchImmediately(\"inserted\", {\r\n type: \"inserted\",\r\n target: this,\r\n newValue: value\r\n });\r\n }\r\n return value;\r\n };\r\n /**\r\n * Adds an item as a first item in the list.\r\n *\r\n * @param item An item to add\r\n */\r\n List.prototype.unshift = function (value) {\r\n this.insertIndex(0, value);\r\n };\r\n /**\r\n * Adds multiple items to the list.\r\n *\r\n * @param items An Array of items to add\r\n */\r\n List.prototype.pushAll = function (values) {\r\n var _this = this;\r\n $array.each(values, function (value) {\r\n _this.push(value);\r\n });\r\n };\r\n /**\r\n * Copies and adds items from abother list.\r\n *\r\n * @param source A list top copy items from\r\n */\r\n List.prototype.copyFrom = function (source) {\r\n this.pushAll(source._values);\r\n };\r\n /**\r\n * Returns the last item from the list, and removes it.\r\n *\r\n * @return Item\r\n */\r\n List.prototype.pop = function () {\r\n var index = this._values.length - 1;\r\n return index < 0 ? undefined : this.removeIndex(this._values.length - 1);\r\n };\r\n /**\r\n * Returns the first item from the list, and removes it.\r\n *\r\n * @return Item\r\n */\r\n List.prototype.shift = function () {\r\n return this._values.length ? this.removeIndex(0) : undefined;\r\n };\r\n /**\r\n * Sets multiple items to the list.\r\n *\r\n * All current items are removed.\r\n *\r\n * @param newArray New items\r\n */\r\n List.prototype.setAll = function (newArray) {\r\n var _this = this;\r\n // @tod if a value exists in both the new and old arrays, don't send remove/insert events\r\n var oldArray = $array.copy(this._values);\r\n this._values.length = 0;\r\n $array.each(newArray, function (value) {\r\n _this._values.push(value);\r\n });\r\n if (this.events.isEnabled(\"setAll\")) {\r\n this.events.dispatchImmediately(\"setAll\", {\r\n type: \"setAll\",\r\n target: this,\r\n oldArray: oldArray,\r\n newArray: this._values // TODO make a copy ?\r\n });\r\n }\r\n if (this.events.isEnabled(\"removed\")) {\r\n $array.each(oldArray, function (x) {\r\n _this.events.dispatchImmediately(\"removed\", {\r\n type: \"removed\",\r\n target: _this,\r\n oldValue: x\r\n });\r\n });\r\n }\r\n if (this.events.isEnabled(\"inserted\")) {\r\n $array.each(this._values, function (x) {\r\n _this.events.dispatchImmediately(\"inserted\", {\r\n type: \"inserted\",\r\n target: _this,\r\n newValue: x\r\n });\r\n });\r\n }\r\n };\r\n /**\r\n * Removes all items from the list.\r\n */\r\n List.prototype.clear = function () {\r\n this.setAll([]);\r\n };\r\n /**\r\n * Returns a list iterator.\r\n *\r\n * @return Iterator\r\n */\r\n List.prototype.iterator = function () {\r\n return $iter.fromArray(this._values);\r\n };\r\n /**\r\n * Returns an ES6 iterator for the list.\r\n */\r\n List.prototype[Symbol.iterator] = function () {\r\n var length, i;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n length = this._values.length;\r\n i = 0;\r\n _a.label = 1;\r\n case 1:\r\n if (!(i < length)) return [3 /*break*/, 4];\r\n return [4 /*yield*/, this._values[i]];\r\n case 2:\r\n _a.sent();\r\n _a.label = 3;\r\n case 3:\r\n ++i;\r\n return [3 /*break*/, 1];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n };\r\n /**\r\n * Calls `f` for each element in the list.\r\n *\r\n * `f` should have at least one parameter defined which will get a current\r\n * item, with optional second argument - index.\r\n */\r\n List.prototype.each = function (f) {\r\n $array.each(this._values, f);\r\n };\r\n /**\r\n * Returns a specific range of list items, which can be iterated.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Code duplication with IndexedIterable\r\n * @param start Start index\r\n * @param end End index\r\n * @return Range\r\n */\r\n List.prototype.range = function (start, end) {\r\n if (start <= end) {\r\n var diff = end - start;\r\n start = Math.max(start, 0);\r\n end = Math.min(start + diff, this._values.length);\r\n return new IndexedIterable(this._values, start, end);\r\n }\r\n else {\r\n throw new Error(\"Start index must be lower than end index\");\r\n }\r\n };\r\n /**\r\n * Returns an iterator that has list items sorted backwards.\r\n *\r\n * @ignore Exclude from docs\r\n * @return List\r\n */\r\n List.prototype.backwards = function () {\r\n return new IndexedIterable(this._values, this._values.length, 0);\r\n };\r\n return List;\r\n}());\r\nexport { List };\r\n/**\r\n * A version of a [[List]] that has a \"template\".\r\n *\r\n * A template is an instance of an object, that can be used to create new\r\n * elements in the list without actually needing to create instances for those.\r\n *\r\n * When new element is created in the list, e.g. by calling its `create()`\r\n * method, an exact copy of the element is created (including properties and\r\n * other attributes), inserted into the list and returned.\r\n */\r\nvar ListTemplate = /** @class */ (function (_super) {\r\n __extends(ListTemplate, _super);\r\n /**\r\n * Constructor\r\n *\r\n * @param t Template object\r\n */\r\n function ListTemplate(t) {\r\n var _this = _super.call(this) || this;\r\n _this.template = t;\r\n return _this;\r\n }\r\n Object.defineProperty(ListTemplate.prototype, \"template\", {\r\n /**\r\n * @return Template object\r\n */\r\n get: function () {\r\n return this._template;\r\n },\r\n /**\r\n * A \"template\" object to copy all properties from when creating new list\r\n * items.\r\n *\r\n * @param v Template object\r\n */\r\n set: function (v) {\r\n v.isTemplate = true;\r\n this._template = v;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies all elements from other list.\r\n *\r\n * @param source Source list\r\n */\r\n ListTemplate.prototype.copyFrom = function (source) {\r\n var _this = this;\r\n $iter.each(source.iterator(), function (value) {\r\n _this.push(value.clone());\r\n });\r\n };\r\n ListTemplate.prototype.create = function (make) {\r\n var clone = (make != null\r\n ? new make()\r\n : this.template.clone());\r\n this.push(clone);\r\n return clone;\r\n };\r\n /**\r\n * Creates an exact clone of the list, including its items and template.\r\n *\r\n * @return New list\r\n */\r\n ListTemplate.prototype.clone = function () {\r\n var out = new ListTemplate(this.template);\r\n var values = this.values;\r\n var length = values.length;\r\n for (var i = 0; i < length; ++i) {\r\n out.push(values[i].clone());\r\n }\r\n return out;\r\n };\r\n return ListTemplate;\r\n}(List));\r\nexport { ListTemplate };\r\n//# sourceMappingURL=List.js.map","import { __read, __spread } from \"tslib\";\r\nimport { options } from \"../Options\";\r\n/**\r\n * Outputs string to console if `verbose` is `true`.\r\n */\r\nexport function log() {\r\n var messages = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n messages[_i] = arguments[_i];\r\n }\r\n if (options.verbose) {\r\n if (console) {\r\n console.log.apply(console, __spread(messages));\r\n }\r\n }\r\n}\r\n/**\r\n * Outputs a warning to the console.\r\n */\r\nexport function warn() {\r\n var messages = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n messages[_i] = arguments[_i];\r\n }\r\n if (!options.suppressWarnings) {\r\n if (console) {\r\n console.warn.apply(console, __spread(messages));\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=Log.js.map","/**\r\n * A collection of Math-related functions\r\n *\r\n * @todo Comment trigonometric functions?\r\n */\r\nimport * as $type from \"./Type\";\r\n/**\r\n * ============================================================================\r\n * CONSTANTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nexport var PI = Math.PI;\r\nexport var HALFPI = PI / 2;\r\nexport var RADIANS = PI / 180;\r\nexport var DEGREES = 180 / PI;\r\n/**\r\n * Converts any value and fits it into a specific value range.\r\n *\r\n * @param value Source value\r\n * @param min Minimum allowable value\r\n * @param max Maximum allowable value\r\n * @return Number\r\n */\r\nexport function toNumberRange(value, min, max) {\r\n if ($type.hasValue(value)) {\r\n value = $type.toNumber(value);\r\n return fitToRange(value, min, max);\r\n }\r\n return value;\r\n}\r\n/**\r\n * Rounds the numeric value to whole number or specific precision of set.\r\n *\r\n * @param value Value\r\n * @param precision Precision (number of decimal points)\r\n * @param floor In case value ends with 0.5 and precision is 0, we might need to floor the value instead of ceiling it.\r\n * @return Rounded value\r\n */\r\nexport function round(value, precision, floor) {\r\n if (!$type.isNumber(precision) || precision <= 0) {\r\n var rounded = Math.round(value);\r\n if (floor) {\r\n if (rounded - value == 0.5) {\r\n rounded--;\r\n }\r\n }\r\n return rounded;\r\n }\r\n else {\r\n var d = Math.pow(10, precision);\r\n return Math.round(value * d) / d;\r\n }\r\n}\r\n/**\r\n * Ceils the numeric value to whole number or specific precision of set.\r\n *\r\n * @param value Value\r\n * @param precision Precision (number of decimal points)\r\n * @return Rounded value\r\n */\r\nexport function ceil(value, precision) {\r\n if (!$type.isNumber(precision) || precision <= 0) {\r\n return Math.ceil(value);\r\n }\r\n else {\r\n var d = Math.pow(10, precision);\r\n return Math.ceil(value * d) / d;\r\n }\r\n}\r\n/**\r\n * Stretches `t` so that it will always be between `from` and `to`.\r\n *\r\n * @param t Number from 0 to 1\r\n * @param from Lowest possible value\r\n * @param to Highest possible value\r\n * @return Adjusted value\r\n */\r\nexport function stretch(t, from, to) {\r\n return (t * (to - from)) + from;\r\n}\r\n/**\r\n * Adjust numeric value so it fits to specific value range.\r\n *\r\n * @param value Value\r\n * @param minValue Lowest possible value\r\n * @param maxValue Highest possible value\r\n * @return Adjusted value\r\n */\r\nexport function fitToRange(value, minValue, maxValue) {\r\n if ($type.isNumber(minValue)) {\r\n if ($type.isNumber(maxValue) && maxValue < minValue) {\r\n var temp = maxValue;\r\n maxValue = minValue;\r\n minValue = temp;\r\n }\r\n if (value < minValue) {\r\n value = minValue;\r\n }\r\n }\r\n if ($type.isNumber(maxValue)) {\r\n if (value > maxValue) {\r\n value = maxValue;\r\n }\r\n }\r\n return value;\r\n}\r\n/**\r\n * Returns sine of a number.\r\n *\r\n * @param value Value\r\n * @return Sine\r\n */\r\nexport function sin(value) {\r\n return round(Math.sin(RADIANS * value), 10);\r\n}\r\n/**\r\n * Returns tan of a number.\r\n *\r\n * @param value Value\r\n * @return Sine\r\n */\r\nexport function tan(value) {\r\n return round(Math.tan(RADIANS * value), 10);\r\n}\r\n/**\r\n * Returns cosine of a number.\r\n *\r\n * @param value Value\r\n * @return Cosine\r\n */\r\nexport function cos(value) {\r\n return round(Math.cos(RADIANS * value), 10);\r\n}\r\nexport function max(left, right) {\r\n if ($type.isNumber(left)) {\r\n if ($type.isNumber(right)) {\r\n if (right > left) {\r\n return right;\r\n }\r\n else {\r\n return left;\r\n }\r\n }\r\n else {\r\n return left;\r\n }\r\n }\r\n else if ($type.isNumber(right)) {\r\n return right;\r\n }\r\n else {\r\n return null;\r\n }\r\n}\r\nexport function min(left, right) {\r\n if ($type.isNumber(left)) {\r\n if ($type.isNumber(right)) {\r\n if (right < left) {\r\n return right;\r\n }\r\n else {\r\n return left;\r\n }\r\n }\r\n else {\r\n return left;\r\n }\r\n }\r\n else if ($type.isNumber(right)) {\r\n return right;\r\n }\r\n else {\r\n return null;\r\n }\r\n}\r\n/**\r\n * Returns the closest value from the array of values to the reference value.\r\n *\r\n * @param values Array of values\r\n * @param value Reference value\r\n * @return Closes value from the array\r\n */\r\nexport function closest(values, referenceValue) {\r\n return values.reduce(function (prev, curr) {\r\n return (Math.abs(curr - referenceValue) < Math.abs(prev - referenceValue) ? curr : prev);\r\n });\r\n}\r\n/**\r\n * Checks whether two ranges of values intersect.\r\n *\r\n * @param range1 Range 1\r\n * @param range2 Range 2\r\n * @return Any intersecting numbers?\r\n */\r\nexport function intersect(range1, range2) {\r\n var start1 = $type.getValue(range1.start);\r\n var start2 = $type.getValue(range2.start);\r\n var end1 = $type.getValue(range1.end);\r\n var end2 = $type.getValue(range2.end);\r\n return Math.max(start1, start2) <= Math.min(end1, end2);\r\n}\r\n/**\r\n * Inverts the range of values.\r\n *\r\n * @param range Range\r\n */\r\nexport function invertRange(range) {\r\n var start = $type.getValue(range.start);\r\n var end = $type.getValue(range.end);\r\n return { start: 1 - end, end: 1 - start };\r\n}\r\n/**\r\n * Returns an intersection range between two ranges of values.\r\n *\r\n * @param range1 Range 1\r\n * @param range2 Range 2\r\n * @return Intersecting value range\r\n */\r\nexport function intersection(range1, range2) {\r\n var start1 = $type.getValue(range1.start);\r\n var start2 = $type.getValue(range2.start);\r\n var end1 = $type.getValue(range1.end);\r\n var end2 = $type.getValue(range2.end);\r\n var startMax = Math.max(start1, start2);\r\n var endMin = Math.min(end1, end2);\r\n if (endMin < startMax) {\r\n return undefined;\r\n }\r\n else {\r\n return { start: startMax, end: endMin };\r\n }\r\n}\r\n/**\r\n * Returns pixel \"distance\" between two points.\r\n *\r\n * If second point is not specified, distance from {x:0, y:0} point is\r\n * calculated.\r\n *\r\n * @param point1 Point 1\r\n * @param point2 Point 2\r\n * @return Distance in relative pixels\r\n */\r\nexport function getDistance(point1, point2) {\r\n if (!point1) {\r\n return 0;\r\n }\r\n if (!point2) {\r\n point2 = { x: 0, y: 0 };\r\n }\r\n return Math.sqrt(Math.pow(Math.abs(point1.x - point2.x), 2) + Math.pow(Math.abs(point1.y - point2.y), 2));\r\n}\r\n/**\r\n * Returns pixel \"horizontal distance\" between two points.\r\n *\r\n * If second point is not specified, distance from {x:0, y:0} point is\r\n * calculated.\r\n *\r\n * @param point1 Point 1\r\n * @param point2 Point 2\r\n * @return Distance in relative pixels\r\n */\r\nexport function getHorizontalDistance(point1, point2) {\r\n if (!point1) {\r\n return 0;\r\n }\r\n if (!point2) {\r\n point2 = { x: 0, y: 0 };\r\n }\r\n return Math.abs(point1.x - point2.x);\r\n}\r\n/**\r\n * Returns pixel \"vertical distance\" between two points.\r\n *\r\n * If second point is not specified, distance from {x:0, y:0} point is\r\n * calculated.\r\n *\r\n * @param point1 Point 1\r\n * @param point2 Point 2\r\n * @return Distance in relative pixels\r\n */\r\nexport function getVerticalDistance(point1, point2) {\r\n if (!point1) {\r\n return 0;\r\n }\r\n if (!point2) {\r\n point2 = { x: 0, y: 0 };\r\n }\r\n return Math.abs(point1.y - point2.y);\r\n}\r\n/**\r\n * Returns approximate pixel \"distance\" between two points of cubic curve\r\n *\r\n * If second point is not specified, distance from {x:0, y:0} point is\r\n * calculated.\r\n *\r\n * @param point1 Point 1\r\n * @param point2 Point 2\r\n * @param controlPointA Control Point 1\r\n * @param controlPointB Control Point 2\r\n * @param stepCount number of steps (the more, the more accurate result)\r\n * @return Distance in relative pixels\r\n */\r\nexport function getCubicCurveDistance(point1, point2, controlPointA, controlPointB, stepCount) {\r\n if (!point1) {\r\n return 0;\r\n }\r\n if (!point2) {\r\n point2 = { x: 0, y: 0 };\r\n }\r\n var distance = 0;\r\n var prevPoint = point1;\r\n if (stepCount > 0) {\r\n for (var s = 0; s <= stepCount; s++) {\r\n var point = getPointOnCubicCurve(point1, point2, controlPointA, controlPointB, s / stepCount);\r\n distance += getDistance(prevPoint, point);\r\n prevPoint = point;\r\n }\r\n }\r\n return distance;\r\n}\r\n/**\r\n * Returns scale based on original and end position of the two points.\r\n *\r\n * @param point1 Current position of point 1\r\n * @param startPoint1 Start position of point 1\r\n * @param point2 Current position of point 1\r\n * @param startPoint2 Start position of point 2\r\n * @return Scale Calculated scale\r\n */\r\nexport function getScale(point1, startPoint1, point2, startPoint2) {\r\n var initialDistance = getDistance(startPoint1, startPoint2);\r\n var currentDistance = getDistance(point1, point2);\r\n return Math.abs(currentDistance / initialDistance);\r\n}\r\n/**\r\n * Returns an exact mid point between two points.\r\n *\r\n * @param point1 Position of point 1\r\n * @param point2 Position of point 2\r\n * @return Mid point Position of mid-point\r\n */\r\nexport function getMidPoint(point1, point2, position) {\r\n if (!$type.isNumber(position)) {\r\n position = 0.5;\r\n }\r\n return {\r\n \"x\": (point1.x + (point2.x - point1.x) * position),\r\n \"y\": (point1.y + (point2.y - point1.y) * position)\r\n };\r\n}\r\n/**\r\n * Returns difference in angles between starting and ending position of two\r\n * vectors.\r\n *\r\n * @param point1 Current position of point 1\r\n * @param startPoint1 Start position of point 1\r\n * @param point2 Current position of point 1\r\n * @param startPoint2 Start position of point 2\r\n * @return Angle difference in degrees\r\n */\r\nexport function getRotation(point1, startPoint1, point2, startPoint2) {\r\n // Get start and end angles\r\n var startAngle = getAngle(startPoint1, startPoint2);\r\n var angle = getAngle(point1, point2);\r\n // Calculate angle\r\n var diff = startAngle - angle;\r\n if (diff < 0) {\r\n diff += 360;\r\n }\r\n return diff;\r\n}\r\n/**\r\n * Calculates angle of the vector based on two or one point.\r\n *\r\n * @param point1 Point 1\r\n * @param point2 Point 2\r\n * @return Angle in degrees\r\n */\r\nexport function getAngle(point1, point2) {\r\n if (!point2) {\r\n point2 = { x: point1.x * 2, y: point1.y * 2 };\r\n }\r\n var diffX = point2.x - point1.x;\r\n var diffY = point2.y - point1.y;\r\n var angle = Math.atan2(diffY, diffX) * DEGREES;\r\n if (angle < 0) {\r\n angle += 360;\r\n }\r\n return normalizeAngle(angle);\r\n}\r\n/**\r\n * Returns the shift in coordinates of the center when item is rotated, moved\r\n * and scaled at the same time.\r\n *\r\n * @param center Current center\r\n * @param point1 Frst reference point\r\n * @param startPoint1 Original position of the first reference point\r\n * @param point2 Second reference point\r\n * @param startPoint2 Original position of the first reference point\r\n * @return Shift in center point coordinates\r\n */\r\nexport function getCenterShift(center, point1, startPoint1, point2, startPoint2) {\r\n // Get angle\r\n var angle = getRotation(point1, startPoint1, point2, startPoint2) - 90;\r\n if (angle < 0) {\r\n angle += 360;\r\n }\r\n // Get distance between new position\r\n var distance = getDistance(point1, point2);\r\n // Calculate new X\r\n var x = Math.cos(angle) / distance + point1.x;\r\n var y = Math.cos(angle) / distance + point1.y;\r\n var shift = {\r\n \"x\": x - center.x,\r\n \"y\": y - center.y\r\n };\r\n return shift;\r\n}\r\n/**\r\n * Converts an array of points into a bounding box rectangle.\r\n *\r\n * Array can contain any number of points.\r\n *\r\n * @param points Points\r\n * @return Bounding box rectangle\r\n */\r\nexport function getBBox(points) {\r\n if (points) {\r\n var length_1 = points.length;\r\n if (length_1 !== 0) {\r\n var left = void 0;\r\n var right = void 0;\r\n var top_1;\r\n var bottom = void 0;\r\n for (var i = 0; i < length_1; i++) {\r\n var point = points[i];\r\n if (!$type.isNumber(right) || (point.x > right)) {\r\n right = point.x;\r\n }\r\n if (!$type.isNumber(left) || (point.x < left)) {\r\n left = point.x;\r\n }\r\n if (!$type.isNumber(top_1) || (point.y < top_1)) {\r\n top_1 = point.y;\r\n }\r\n if (!$type.isNumber(bottom) || (point.y > bottom)) {\r\n bottom = point.y;\r\n }\r\n }\r\n return { x: left, y: top_1, width: right - left, height: bottom - top_1 };\r\n }\r\n }\r\n return { x: 0, y: 0, width: 0, height: 0 };\r\n}\r\n/**\r\n * Returns a [[IRectangle]] object representing a common rectangle that fits\r\n * all passed in rectangles in it.\r\n *\r\n * @param rectangles An array of rectangles\r\n * @return Common rectangle\r\n */\r\nexport function getCommonRectangle(rectangles) {\r\n var length = rectangles.length;\r\n if (length !== 0) {\r\n var minX = void 0;\r\n var minY = void 0;\r\n var maxX = void 0;\r\n var maxY = void 0;\r\n for (var i = 0; i < length; i++) {\r\n var rectangle = rectangles[i];\r\n minX = min(rectangle.x, minX);\r\n minY = min(rectangle.y, minY);\r\n maxX = max(rectangle.x + rectangle.width, maxX);\r\n maxY = max(rectangle.y + rectangle.height, maxY);\r\n }\r\n return { x: minX, y: minY, width: maxX - minX, height: maxY - minY };\r\n }\r\n}\r\n/**\r\n * [getPointOnQuadraticCurve description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param pointA [description]\r\n * @param pointB [description]\r\n * @param controlPoint [description]\r\n * @param position [description]\r\n * @return [description]\r\n */\r\nexport function getPointOnQuadraticCurve(pointA, pointB, controlPoint, position) {\r\n var x = (1 - position) * (1 - position) * pointA.x + 2 * (1 - position) * position * controlPoint.x + position * position * pointB.x;\r\n var y = (1 - position) * (1 - position) * pointA.y + 2 * (1 - position) * position * controlPoint.y + position * position * pointB.y;\r\n return { x: x, y: y };\r\n}\r\n/**\r\n * [getPointOnCubicCurve description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param pointA [description]\r\n * @param pointB [description]\r\n * @param controlPointA [description]\r\n * @param controlPointB [description]\r\n * @param position [description]\r\n * @return [description]\r\n */\r\nexport function getPointOnCubicCurve(pointA, pointB, controlPointA, controlPointB, position) {\r\n var point = { x: 0, y: 0 };\r\n var mt1 = 1 - position;\r\n var mt2 = mt1 * mt1;\r\n var mt3 = mt2 * mt1;\r\n point.x = pointA.x * mt3 + controlPointA.x * 3 * mt2 * position + controlPointB.x * 3 * mt1 * position * position + pointB.x * position * position * position;\r\n point.y = pointA.y * mt3 + controlPointA.y * 3 * mt2 * position + controlPointB.y * 3 * mt1 * position * position + pointB.y * position * position * position;\r\n return point;\r\n}\r\n/**\r\n * [getCubicControlPointA description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param p0 [description]\r\n * @param p1 [description]\r\n * @param p2 [description]\r\n * @param p3 [description]\r\n * @param tensionX [description]\r\n * @param tensionY [description]\r\n * @return [description]\r\n */\r\nexport function getCubicControlPointA(p0, p1, p2, p3, tensionX, tensionY) {\r\n tensionX = adjustTension(tensionX);\r\n tensionY = adjustTension(tensionY);\r\n return { x: ((-p0.x + p1.x / tensionX + p2.x) * tensionX), y: ((-p0.y + p1.y / tensionY + p2.y) * tensionY) };\r\n}\r\n/**\r\n * [getCubicControlPointB description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param p0 [description]\r\n * @param p1 [description]\r\n * @param p2 [description]\r\n * @param p3 [description]\r\n * @param tensionX [description]\r\n * @param tensionY [description]\r\n * @return [description]\r\n */\r\nexport function getCubicControlPointB(p0, p1, p2, p3, tensionX, tensionY) {\r\n tensionX = adjustTension(tensionX);\r\n tensionY = adjustTension(tensionY);\r\n return { x: ((p1.x + p2.x / tensionX - p3.x) * tensionX), y: ((p1.y + p2.y / tensionY - p3.y) * tensionY) };\r\n}\r\n/**\r\n * [adjustTension description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param tension [description]\r\n * @return [description]\r\n */\r\nexport function adjustTension(tension) {\r\n return 1 - tension + 0.00001;\r\n}\r\n/**\r\n * [normalizeAngle description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param value [description]\r\n * @return [description]\r\n */\r\nexport function normalizeAngle(value) {\r\n if (value == 360) {\r\n return 360;\r\n }\r\n return value % 360;\r\n}\r\n/**\r\n * [normalizeAngleToRange description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @todo review this with various angles, can be tested on radar chart with custom start/end angles\r\n * @param value [description]\r\n * @param startAngle [description]\r\n * @param endAngle [description]\r\n * @return [description]\r\n */\r\nexport function fitAngleToRange(value, startAngle, endAngle) {\r\n if (startAngle > endAngle) {\r\n var temp = startAngle;\r\n startAngle = endAngle;\r\n endAngle = temp;\r\n }\r\n value = normalizeAngle(value);\r\n var count = (startAngle - normalizeAngle(startAngle)) / 360;\r\n if (value < startAngle) {\r\n value += 360 * (count + 1);\r\n }\r\n var maxEnd = startAngle + (endAngle - startAngle) / 2 + 180;\r\n var maxStart = startAngle + (endAngle - startAngle) / 2 - 180;\r\n if (value > endAngle) {\r\n if (value - 360 > startAngle) {\r\n value -= 360;\r\n }\r\n else {\r\n if (value < maxEnd) {\r\n value = endAngle;\r\n }\r\n else {\r\n value = startAngle;\r\n }\r\n }\r\n }\r\n if (value < startAngle) {\r\n if (value > maxStart) {\r\n value = startAngle;\r\n }\r\n else {\r\n value = endAngle;\r\n }\r\n }\r\n return value;\r\n}\r\n/**\r\n * Returns [[IRectangle]] of an arc in relative values, assuming that the\r\n * center is at the circle center.\r\n *\r\n * Used to find out max radius of an arc.\r\n *\r\n * @ignore Exclude from docs\r\n * @param startAngle Start angle\r\n * @param endAngle End angle\r\n * @param radius \t Relative radius\r\n * @return Rectangle\r\n */\r\nexport function getArcRect(startAngle, endAngle, radius) {\r\n var minX = Number.MAX_VALUE;\r\n var minY = Number.MAX_VALUE;\r\n var maxX = -Number.MAX_VALUE;\r\n var maxY = -Number.MAX_VALUE;\r\n var bpoints = [];\r\n if (!$type.isNumber(radius)) {\r\n radius = 1;\r\n }\r\n bpoints.push(getArcPoint(radius, startAngle));\r\n bpoints.push(getArcPoint(radius, endAngle));\r\n var fromAngle = Math.min(Math.floor(startAngle / 90) * 90, Math.floor(endAngle / 90) * 90);\r\n var toAngle = Math.max(Math.ceil(startAngle / 90) * 90, Math.ceil(endAngle / 90) * 90);\r\n for (var angle = fromAngle; angle <= toAngle; angle += 90) {\r\n if (angle >= startAngle && angle <= endAngle) {\r\n bpoints.push(getArcPoint(radius, angle));\r\n }\r\n }\r\n for (var i = 0; i < bpoints.length; i++) {\r\n var pt = bpoints[i];\r\n if (pt.x < minX) {\r\n minX = pt.x;\r\n }\r\n if (pt.y < minY) {\r\n minY = pt.y;\r\n }\r\n if (pt.x > maxX) {\r\n maxX = pt.x;\r\n }\r\n if (pt.y > maxY) {\r\n maxY = pt.y;\r\n }\r\n }\r\n return ({ x: minX, y: minY, width: maxX - minX, height: maxY - minY });\r\n}\r\n/**\r\n * Returns point on arc\r\n *\r\n * @param center point\r\n * @param radius\r\n * @param arc\r\n * @return {boolean}\r\n */\r\nexport function getArcPoint(radius, arc) {\r\n return ({ x: radius * cos(arc), y: radius * sin(arc) });\r\n}\r\n/**\r\n * Returns true if a point is within rectangle\r\n *\r\n * @param point\r\n * @param rectangle\r\n * @return {boolean}\r\n */\r\nexport function isInRectangle(point, rectangle) {\r\n if (point.x >= rectangle.x && point.x <= rectangle.x + rectangle.width && point.y >= rectangle.y && point.y <= rectangle.y + rectangle.height) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexport function getLineIntersection(pointA1, pointA2, pointB1, pointB2) {\r\n var x = ((pointA1.x * pointA2.y - pointA2.x * pointA1.y) * (pointB1.x - pointB2.x) - (pointA1.x - pointA2.x) * (pointB1.x * pointB2.y - pointB1.y * pointB2.x)) / ((pointA1.x - pointA2.x) * (pointB1.y - pointB2.y) - (pointA1.y - pointA2.y) * (pointB1.x - pointB2.x));\r\n var y = ((pointA1.x * pointA2.y - pointA2.x * pointA1.y) * (pointB1.y - pointB2.y) - (pointA1.y - pointA2.y) * (pointB1.x * pointB2.y - pointB1.y * pointB2.x)) / ((pointA1.x - pointA2.x) * (pointB1.y - pointB2.y) - (pointA1.y - pointA2.y) * (pointB1.x - pointB2.x));\r\n return { x: x, y: y };\r\n}\r\n//# sourceMappingURL=Math.js.map","/**\r\n * A collection of network-related functions\r\n */\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport * as $type from \"./Type\";\r\n/**\r\n * Loads an external file via its URL.\r\n *\r\n * Please note that this is an asynchronous function.\r\n *\r\n * It will not return the result, but rather a `Promise`.\r\n *\r\n * You can use the `await` notion, or `then()`.\r\n *\r\n * ```TypeScript\r\n * // Using await\r\n * let response = await Net.load( \"http://www.my.com/data.json\" );\r\n * console.log( response.response );\r\n *\r\n * // Using then()\r\n * Net.load( \"http://www.my.com/data.json\" ).then( ( response ) => {\r\n * console.log( response.response );\r\n * } );\r\n * ```\r\n * ```JavaScript\r\n * // Using then()\r\n * Net.load( \"http://www.my.com/data.json\" ).then( function( response ) {\r\n * console.log( response.response );\r\n * } );\r\n * ```\r\n *\r\n * @async\r\n * @param url URL for the file to load\r\n * @param target A target element that is requesting the net load\r\n * @param options Request options\r\n * @return Result (Promise)\r\n */\r\nexport function load(url, target, options) {\r\n return new Promise(function (success, error) {\r\n // Is return type Blob?\r\n var isBlob = $type.hasValue(options) && options.responseType == \"blob\";\r\n // Create request and set up handlers\r\n var xhr = new XMLHttpRequest();\r\n xhr.onload = function () {\r\n if (xhr.status === 200) {\r\n var response = void 0;\r\n var blob_1;\r\n if (isBlob) {\r\n blob_1 = xhr.response;\r\n readBlob(blob_1).then(function (response) {\r\n var output = {\r\n xhr: xhr,\r\n error: false,\r\n response: response,\r\n blob: blob_1,\r\n type: xhr.getResponseHeader(\"Content-Type\"),\r\n target: target\r\n };\r\n success(output);\r\n });\r\n return;\r\n }\r\n else {\r\n response = xhr.responseText || xhr.response;\r\n }\r\n var output = {\r\n xhr: xhr,\r\n error: false,\r\n response: response,\r\n blob: blob_1,\r\n type: xhr.getResponseHeader(\"Content-Type\"),\r\n target: target\r\n };\r\n success(output);\r\n }\r\n else {\r\n error({\r\n xhr: xhr,\r\n error: true,\r\n type: xhr.getResponseHeader(\"Content-Type\"),\r\n target: target\r\n });\r\n }\r\n };\r\n xhr.onerror = function () {\r\n error({\r\n xhr: xhr,\r\n error: true,\r\n type: xhr.getResponseHeader(\"Content-Type\"),\r\n target: target\r\n });\r\n };\r\n // Open request\r\n xhr.open(\"GET\", url, true);\r\n if (options && options.withCredentials) {\r\n xhr.withCredentials = true;\r\n }\r\n // Process options\r\n if ($type.hasValue(options)) {\r\n if ($type.hasValue(options.requestHeaders)) {\r\n for (var i = 0; i < options.requestHeaders.length; i++) {\r\n var header = options.requestHeaders[i];\r\n xhr.setRequestHeader(header.key, header.value);\r\n }\r\n }\r\n if ($type.hasValue(options.responseType)) {\r\n xhr.responseType = options.responseType;\r\n }\r\n }\r\n // Send request\r\n xhr.send();\r\n });\r\n}\r\n/**\r\n * Returns textual representation of a Blob object.\r\n *\r\n * @param blob Target blob\r\n * @return Text promise\r\n */\r\nexport function readBlob(blob) {\r\n return new Promise(function (success, error) {\r\n var reader = new FileReader();\r\n reader.onload = function (event) {\r\n success(reader.result);\r\n };\r\n reader.onerror = function (e) {\r\n error(e);\r\n };\r\n reader.readAsText(blob);\r\n });\r\n}\r\n//# sourceMappingURL=Net.js.map","/**\r\n * ============================================================================\r\n * COMPARING FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Comparing function used for ordering.\r\n *\r\n * @ignore Exclude from docs\r\n * @param a Number 1\r\n * @param b Number 2\r\n * @return Result\r\n */\r\nexport function order(a, b) {\r\n if (a === b) {\r\n return 0;\r\n }\r\n else if (a < b) {\r\n return -1;\r\n }\r\n else {\r\n return 1;\r\n }\r\n}\r\n//# sourceMappingURL=Number.js.map","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport * as $array from \"./Array\";\r\nimport * as $type from \"./Type\";\r\n/**\r\n * ============================================================================\r\n * UTILITY FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Returns an iterator for all entries in object.\r\n *\r\n * Can be used to safely iterate through all properties of the object.\r\n *\r\n * @param object Source object\r\n * @returns Iterator\r\n */\r\nexport function entries(object) {\r\n return function (push) {\r\n // TODO make this more efficient ?\r\n for (var key in object) {\r\n if (hasKey(object, key)) {\r\n if (!push([key, object[key]])) {\r\n break;\r\n }\r\n }\r\n }\r\n };\r\n}\r\n/**\r\n * Returns an array of object's property names.\r\n *\r\n * @param object Source object\r\n * @returns Object property names\r\n */\r\nexport function keys(object) {\r\n var output = [];\r\n for (var key in object) {\r\n if (hasKey(object, key)) {\r\n output.push(key);\r\n }\r\n }\r\n return output;\r\n}\r\n/**\r\n * Returns an array of object's property names ordered using specific ordering\r\n * function.\r\n *\r\n * @param object Source object\r\n * @param order Ordering function\r\n * @returns Object property names\r\n */\r\nexport function keysOrdered(object, order) {\r\n return keys(object).sort(order);\r\n}\r\n/**\r\n * Checks if `object` has a specific `key`.\r\n *\r\n * @param object Source object\r\n * @param key Property name\r\n * @returns Has key?\r\n */\r\nexport function hasKey(object, key) {\r\n return {}.hasOwnProperty.call(object, key);\r\n}\r\n/**\r\n * Returns value of the specific `key`.\r\n *\r\n * @param object Source object\r\n * @param key Property name\r\n * @returns Key value\r\n */\r\nexport function getKey(object, key) {\r\n return object[key];\r\n}\r\n/**\r\n * Iterates through all properties of the object calling `fn` for each of them.\r\n *\r\n * If return value of the function evaluates to `false` further iteration is\r\n * cancelled.\r\n *\r\n * @param object Source object\r\n * @param fn Callback function\r\n */\r\nexport function eachContinue(object, fn) {\r\n for (var key in object) {\r\n if (hasKey(object, key)) {\r\n if (!fn(key, object[key])) {\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * Iterates through all properties of the object calling `fn` for each of them.\r\n *\r\n * @param object Source object\r\n * @param fn Callback function\r\n */\r\nexport function each(object, fn) {\r\n eachContinue(object, function (key, value) {\r\n fn(key, value);\r\n return true;\r\n });\r\n}\r\n/**\r\n * Orders object properties using custom `ord` function and iterates through\r\n * them calling `fn` for each of them.\r\n *\r\n * @param object Source object\r\n * @param fn Callback function\r\n * @param order Ordering function\r\n */\r\nexport function eachOrdered(object, fn, ord) {\r\n $array.each(keysOrdered(object, ord), function (key) {\r\n fn(key, object[key]);\r\n });\r\n}\r\n/**\r\n * Returns a copy of the object.\r\n *\r\n * @param object Source object\r\n * @returns Copy of the object\r\n */\r\nexport function copy(object) {\r\n return Object.assign({}, object);\r\n}\r\n/**\r\n * Merges two objects and returns a new object that contains properties from\r\n * both source objects.\r\n *\r\n * @param object1 Source object #1\r\n * @param object2 Source object #2\r\n * @returns Combined object\r\n */\r\nexport function merge(object1, object2) {\r\n return Object.assign({}, object1, object2);\r\n}\r\n/**\r\n * Returns object clone.\r\n *\r\n * @param object Source object\r\n * @returns Clone\r\n */\r\nexport function clone(object) {\r\n return JSON.parse(JSON.stringify(object));\r\n}\r\n/**\r\n * Copies a list of properties from one object to another.\r\n *\r\n * Will not copy empty properties.\r\n *\r\n * @param source Source object\r\n * @param target Target object\r\n * @param keys List of keys to copy\r\n */\r\nexport function copyProperties(source, target, keys) {\r\n $array.each(keys, function (key) {\r\n if ($type.hasValue(source[key])) {\r\n target[key] = source[key];\r\n }\r\n });\r\n}\r\n/**\r\n * Copies a list of properties from one object to another only if target does't have value of the property set.\r\n *\r\n * Will not copy empty properties.\r\n *\r\n * @param source Source object\r\n * @param target Target object\r\n * @param keys List of keys to copy\r\n */\r\nexport function softCopyProperties(source, target, keys) {\r\n $array.each(keys, function (key) {\r\n if ($type.hasValue(source[key]) && !($type.hasValue(target[key]))) {\r\n target[key] = source[key];\r\n }\r\n });\r\n}\r\n/**\r\n * Copies a list of properties from one object to another.\r\n *\r\n * Will copy empty properties.\r\n *\r\n * @param source Source object\r\n * @param target Target object\r\n * @param keys List of keys to copy\r\n */\r\nexport function forceCopyProperties(source, target, keys) {\r\n $array.each(keys, function (key) {\r\n target[key] = source[key];\r\n });\r\n}\r\n/**\r\n * Copies all properties from one object to another.\r\n *\r\n * @param from Source object\r\n * @param to Target object\r\n */\r\nexport function copyAllProperties(from, to) {\r\n copyProperties(from, to, keys(from));\r\n}\r\n//# sourceMappingURL=Object.js.map","/**\r\n * A collection of functions for ordering.\r\n */\r\n/**\r\n * [reverse description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param a [description]\r\n * @return [description]\r\n */\r\nexport function reverse(a) {\r\n switch (a) {\r\n case 0:\r\n return 0;\r\n case -1:\r\n return 1;\r\n case 1:\r\n return -1;\r\n }\r\n}\r\n/**\r\n * [or description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param a Item 1\r\n * @param b Item 2\r\n * @return [description]\r\n */\r\nexport function or(a, b) {\r\n if (a === 0) {\r\n return b;\r\n }\r\n else {\r\n return a;\r\n }\r\n}\r\n//# sourceMappingURL=Order.js.map","/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Represents a relative value (percent).\r\n *\r\n * The Percent object, can be instantiated using two ways:\r\n *\r\n * * Via `new Percent(X)`.\r\n * * Via `am4core.percent(X)`.\r\n *\r\n * `Percent` type objects can be used in a number of dual-measuring or\r\n * positioning properties, like `width`. E.g.:\r\n *\r\n * ```TypeScript\r\n * chart.paddingRight = new Percent(10);\r\n * // or\r\n * chart.paddingRight = am4core.percent(10);\r\n * ```\r\n * ```JavaScript\r\n * chart.paddingRight = new Percent(10);\r\n * // or\r\n * chart.paddingRight = am4core.percent(10);\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"paddingRight\": \"10%\"\r\n * }\r\n * ```\r\n */\r\nvar Percent = /** @class */ (function () {\r\n /**\r\n * Constructor.\r\n *\r\n * @param percent Percent value\r\n */\r\n function Percent(percent) {\r\n this._value = percent;\r\n }\r\n Object.defineProperty(Percent.prototype, \"value\", {\r\n /**\r\n * Relative value.\r\n *\r\n * E.g. 100% is 1, 50% is 0.5, etc.\r\n *\r\n * This is useful to apply transformations to other values. E.g.:\r\n *\r\n * ```TypeScript\r\n * let value = 256;\r\n * let percent = new am4core.Percent(50);\r\n * console.log(value * percent.value); // outputs 128\r\n * ```\r\n * ```JavaScript\r\n * var value = 256;\r\n * var percent = new am4core.Percent(50);\r\n * console.log(value * percent.value); // outputs 128\r\n * ```\r\n *\r\n * Alternatively, you can use `am4core.percent()` helper function:\r\n *\r\n * ```TypeScript\r\n * let value = 256;\r\n * let percent = am4core.percent(50);\r\n * console.log(value * percent.value); // outputs 128\r\n * ```\r\n * ```JavaScript\r\n * var value = 256;\r\n * var percent = am4core.percent(50);\r\n * console.log(value * percent.value); // outputs 128\r\n * ```\r\n *\r\n * @readonly\r\n * @return Relative value\r\n */\r\n get: function () {\r\n return this._value / 100;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Percent.prototype, \"percent\", {\r\n /**\r\n * Value in percent.\r\n *\r\n * @return Percent\r\n */\r\n get: function () {\r\n return this._value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Percent.prototype.toString = function () {\r\n return \"\" + this._value + \"%\";\r\n };\r\n return Percent;\r\n}());\r\nexport { Percent };\r\n/**\r\n * Converts numeric percent value to a proper [[Percent]] object.\r\n *\r\n * ```TypeScript\r\n * pieSeries.radius = am4core.percent(80);\r\n * ```\r\n * ```JavaScript\r\n * pieSeries.radius = am4core.percent(80);\r\n * ```\r\n *\r\n * @param value Percent\r\n * @return Percent object\r\n */\r\nexport function percent(value) {\r\n return new Percent(value);\r\n}\r\n/**\r\n * Checks if value is a [[Percent]] object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Input value\r\n * @return Is percent?\r\n */\r\nexport function isPercent(value) {\r\n return value instanceof Percent;\r\n}\r\n//# sourceMappingURL=Percent.js.map","/**\r\n * Responsive functionality module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObjectEvents } from \"../Base\";\r\nimport { List } from \"../utils/List\";\r\nimport { Adapter } from \"../utils/Adapter\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $iter from \"../utils/Iterator\";\r\nimport * as $array from \"../utils/Array\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $object from \"../utils/Object\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Responsive is responsible for overriding certain properties when conditions\r\n * are met.\r\n *\r\n * This class is used to dynamically apply and change certain chart properties\r\n * based on the current values of properties.\r\n *\r\n * Mainly, this is used with [[Sprite]]'s dimensional properties, like\r\n * `pixelWidth` and `pixelHeight`. However, it can be used to dynamically\r\n * change any property, based on any other property's value.\r\n *\r\n * A default responsive rules are disabled.\r\n *\r\n * To enable, set `enabled = false`. E.g.:\r\n *\r\n * ```TypeScript\r\n * chart.responsive.enabled = true;\r\n * ```\r\n * ```JavaScript\r\n * chart.responsive.enabled = true;\r\n * ```\r\n *\r\n * @see {@link IResponsiveEvents} for a list of available events\r\n * @see {@link IResponsiveAdapters} for a list of available Adapters\r\n * @todo Add default rules\r\n * @todo Watch for rule modification\r\n * @important\r\n */\r\nvar Responsive = /** @class */ (function (_super) {\r\n __extends(Responsive, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Responsive() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Holds a list of responsive rules organized by object type.\r\n */\r\n _this._rules = new List();\r\n /**\r\n * Holds the list of the default responsive rules.\r\n * @deprecated\r\n */\r\n //protected _defaultRules = new List<IResponsiveRule>();\r\n /**\r\n * Holds the list of currently applied rules.\r\n */\r\n _this._appliedRules = {};\r\n /**\r\n * Used to keep track of objects that have rules applied at the moment.\r\n */\r\n _this._appliedTargets = [];\r\n /**\r\n * Use default rules in addition to the user-defined ones?\r\n */\r\n _this._useDefault = true;\r\n /**\r\n * Adapter.\r\n */\r\n _this.adapter = new Adapter(_this);\r\n /**\r\n * Indicates of responsive rules application is enabled.\r\n */\r\n _this._enabled = false;\r\n /**\r\n * Holds disposers for all events added by this class.\r\n */\r\n _this._responsiveDisposers = [];\r\n /**\r\n * Collection of objects and state ids that do not have any properties set.\r\n */\r\n _this._noStates = [];\r\n _this.className = \"Responsive\";\r\n // Set up rules list events\r\n _this.rules.events.on(\"inserted\", function () { _this.checkRules(); }, true);\r\n _this.rules.events.on(\"removed\", function () { _this.checkRules(); }, true);\r\n _this._disposers.push(_this.rules.events);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(Responsive.prototype, \"component\", {\r\n /**\r\n * @return Target object\r\n */\r\n get: function () {\r\n return this._component;\r\n },\r\n /**\r\n * A target object that responsive rules will need to be applied to.\r\n *\r\n * @param value Target object\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n // Check if it's the same\r\n if (value == this._component) {\r\n return;\r\n }\r\n // Check if we already have a set up component and remove its events\r\n this.disposeResponsiveHandlers();\r\n // Set\r\n this._component = value;\r\n // Set up resize monitoring events\r\n this._responsiveDisposers.push($type.getValue(this.component).events.on(\"sizechanged\", function () { _this.checkRules(); }, this));\r\n this._responsiveDisposers.push($type.getValue(this.component).events.on(\"datavalidated\", function () {\r\n if (_this._component.isReady()) {\r\n _this.checkRules(true);\r\n }\r\n }, this));\r\n // Enable resoponsive\r\n this.enabled = true;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Responsive.prototype, \"enabled\", {\r\n /**\r\n * @return Apply responsive rules?\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"enabled\", this._enabled);\r\n },\r\n /**\r\n * Should responsive rules be checked against and applied?\r\n *\r\n * @default false\r\n * @param value Apply responsive rules?\r\n */\r\n set: function (value) {\r\n if (this._enabled != value) {\r\n this._enabled = value;\r\n // Run `applyRules` so that any currently applied rules can be reset\r\n this.applyRules();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Responsive.prototype, \"useDefault\", {\r\n /**\r\n * @return Use default rules?\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"useDefault\", this._useDefault);\r\n },\r\n /**\r\n * Should default responsive rules be applied in addition to user-defined\r\n * ones.\r\n *\r\n * User-defined rules will take precedence over default rules whenever they\r\n * produce conflicting settings.\r\n *\r\n * @default true\r\n * @param value Use default rules?\r\n */\r\n set: function (value) {\r\n if (this._useDefault != value) {\r\n this._useDefault = value;\r\n // Run `applyRules` so that any currently applied rules can be reset\r\n this.applyRules();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Responsive.prototype, \"rules\", {\r\n /**\r\n * @return User-defined rules\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"rules\", this._rules);\r\n },\r\n /**\r\n * User-defined responsive rules.\r\n *\r\n * User-defined rules will take precedence over default rules whenever they\r\n * produce conflicting settings.\r\n *\r\n * Use `allRules` to get all applicable rules including default and\r\n * user-defined ones.\r\n *\r\n * @param value User-defined rules\r\n */\r\n set: function (value) {\r\n this._rules = value;\r\n this._enabled = true;\r\n this.applyRules();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Responsive.prototype, \"defaultRules\", {\r\n /**\r\n * Default responsive rules.\r\n *\r\n * @readonly\r\n * @return List of responsive rules\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"defaultRules\", defaultRules);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Responsive.prototype, \"allRules\", {\r\n /**\r\n * Returns all rules: default rules (if not disabled) combined with\r\n * user-defined ones.\r\n *\r\n * @readonly\r\n * @return List of all applicable rules\r\n */\r\n get: function () {\r\n // Create empty list\r\n var rules = new List();\r\n // Add default rules if not disabled\r\n // A code, requesting `allRules` must ensure loading of default rules\r\n // by calling `loadDefaultRules()`\r\n if (this.useDefault) {\r\n rules.copyFrom(this.defaultRules);\r\n }\r\n // Add user-defined ones\r\n rules.copyFrom(this.rules);\r\n return this.adapter.apply(\"allRules\", rules);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Checks if rule by the particular id currently applied.\r\n *\r\n * @param ruleId Rule ID\r\n * @return Is currently applied?\r\n */\r\n Responsive.prototype.isApplied = function (ruleId) {\r\n var rule = this._appliedRules[ruleId];\r\n return $type.hasValue(rule) ? rule : false;\r\n };\r\n /**\r\n * Checks which responsive rules currently satisfy their conditions and\r\n * should be applied, or unapplied.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Responsive.prototype.checkRules = function (force) {\r\n var _this = this;\r\n if (force === void 0) { force = false; }\r\n // Check if there are any rules\r\n var rules = this.allRules;\r\n if (!rules || rules.length == 0) {\r\n return;\r\n }\r\n // Init a list of rules to be applied\r\n var rulesChanged = false;\r\n var component = $type.getValue(this.component);\r\n // Check which rules match\r\n $iter.each(rules.iterator(), function (rule) {\r\n // Check if rule has an id\r\n if (!rule.id) {\r\n rule.id = registry.getUniqueId();\r\n }\r\n // Init indicator if this rule should be applied\r\n var apply = rule.relevant(component);\r\n // Let's check if this rule needs to be applied\r\n if ((apply && !_this.isApplied(rule.id)) || (!apply && _this.isApplied(rule.id))) {\r\n rulesChanged = true;\r\n }\r\n _this._appliedRules[rule.id] = apply;\r\n });\r\n if (force) {\r\n rulesChanged = true;\r\n }\r\n // Check if we need to re-apply the rules\r\n if (rulesChanged) {\r\n if (!this.component.isReady()) {\r\n // The chart is not yet ready (built)\r\n // We will hide the chart and delay application of rules\r\n // until \"ready\" event kicks in\r\n //component.hide(0);\r\n component.hidden = true;\r\n component.events.once(\"ready\", function (ev) {\r\n ev.target.show(0);\r\n _this.applyRules();\r\n });\r\n return;\r\n }\r\n this.dispatchImmediately(\"ruleschanged\");\r\n this.applyRules();\r\n }\r\n };\r\n /**\r\n * Applies current rules to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param target Target object\r\n * @todo Better type check\r\n */\r\n Responsive.prototype.applyRules = function (target) {\r\n var _this = this;\r\n // If no target supplied, we assume the top-level element\r\n var newTarget = ($type.hasValue(target)\r\n ? target\r\n : $type.getValue(this.component));\r\n // Check each rule\r\n var defaultStateApplied = false;\r\n if (this.enabled) {\r\n var isApplied_1 = false;\r\n $iter.each(this.allRules.iterator(), function (rule) {\r\n // Get relevant state\r\n var state = _this.getState(rule, newTarget);\r\n // If there's a state, it means it needs to be applied\r\n if (state) {\r\n // Check if default state was already applied to this element.\r\n // We don't want to go resetting default states to ALL element,\r\n // if they don't have responsive states.\r\n if (!defaultStateApplied) {\r\n // Nope, reset states (instantly).\r\n if ($array.indexOf(_this._appliedTargets, newTarget.uid) !== -1) {\r\n // But only if this element has any rules applied, otherwise no\r\n // point in setting current state\r\n newTarget.setState(_this.getDefaultState(newTarget), 0);\r\n }\r\n defaultStateApplied = true;\r\n }\r\n // Is this rule currently applied?\r\n if (_this.isApplied($type.getValue(rule.id))) {\r\n // Yes. Apply the responsive state\r\n state.transitionDuration = 0;\r\n _this.setTargetState(newTarget, state);\r\n _this.dispatchImmediately(\"ruleapplied\", {\r\n rule: rule\r\n });\r\n isApplied_1 = true;\r\n }\r\n }\r\n });\r\n if (isApplied_1) {\r\n $array.replace(this._appliedTargets, newTarget.uid);\r\n }\r\n else {\r\n $array.remove(this._appliedTargets, newTarget.uid);\r\n }\r\n }\r\n // Apply rules to the children\r\n if (newTarget.children) {\r\n $iter.each(newTarget.children.iterator(), function (child) {\r\n _this.applyRules(child);\r\n });\r\n }\r\n };\r\n /**\r\n * Returns a relative state for the rule/target, or `undefined` if no state is\r\n * needed.\r\n *\r\n * @param rule [description]\r\n * @param target [description]\r\n * @return [description]\r\n */\r\n Responsive.prototype.getState = function (rule, target) {\r\n var stateId = \"responsive-\" + rule.id;\r\n var tmpId = target.uid + \"_\" + stateId;\r\n if ($array.indexOf(this._noStates, tmpId) !== -1) {\r\n return;\r\n }\r\n else if (!target.states.hasKey(stateId)) {\r\n var state = rule.state(target, stateId);\r\n if (!state) {\r\n this._noStates.push(tmpId);\r\n }\r\n return state;\r\n }\r\n else {\r\n return target.states.getKey(stateId);\r\n }\r\n };\r\n /**\r\n * Creates and returns default responsive rule for the target.\r\n *\r\n * This rule will be used to \"reset\" to non-responsive values.\r\n * @param target Target Sprite\r\n * @return State\r\n */\r\n Responsive.prototype.getDefaultState = function (target) {\r\n if (target.states.hasKey(\"responsive-default\")) {\r\n return target.states.getKey(\"responsive-default\");\r\n }\r\n return target.states.create(\"responsive-default\");\r\n };\r\n /**\r\n * Sets state on the target element and updates default state with the\r\n * overwritten values if needed.\r\n *\r\n * @param target Target\r\n * @param state State\r\n */\r\n Responsive.prototype.setTargetState = function (target, state) {\r\n var _this = this;\r\n // Update default state\r\n var defaultState = this.getDefaultState(target);\r\n $object.each(state.properties, function (key, val) {\r\n if (!$type.hasValue(defaultState.properties[key])) {\r\n defaultState.properties[key] = _this.getValue(target, key);\r\n }\r\n });\r\n target.setState(state);\r\n };\r\n /**\r\n * Gets a value from an element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param target Target object\r\n * @param property Property\r\n * @return Property value\r\n */\r\n Responsive.prototype.getValue = function (target, property) {\r\n // This is a bit hacky, first we check if the property exist.\r\n // If it doesn't we try accessing target's property directly\r\n var value = target.getPropertyValue(property);\r\n if (!$type.hasValue(value) && $type.hasValue(target[property])) {\r\n value = target[property];\r\n }\r\n return value;\r\n };\r\n /**\r\n * Disposes the object.\r\n */\r\n Responsive.prototype.dispose = function () {\r\n this.disposeResponsiveHandlers();\r\n _super.prototype.dispose.call(this);\r\n };\r\n /**\r\n * Disposes all event handlers.\r\n */\r\n Responsive.prototype.disposeResponsiveHandlers = function () {\r\n var disposer = this._responsiveDisposers.pop();\r\n while (disposer) {\r\n disposer.dispose();\r\n disposer = this._responsiveDisposers.pop();\r\n }\r\n };\r\n return Responsive;\r\n}(BaseObjectEvents));\r\nexport { Responsive };\r\n/**\r\n * [defaultRules description]\r\n *\r\n * @todo description\r\n */\r\nexport var defaultRules = new List();\r\ndefaultRules.events.on(\"inserted\", function (ev) {\r\n ev.newValue.id = registry.getUniqueId();\r\n});\r\n/**\r\n *\r\n * @todo description\r\n */\r\nvar ResponsiveBreakpoints = /** @class */ (function () {\r\n function ResponsiveBreakpoints() {\r\n }\r\n // Breakpoint functions (for use in `relevant` clause of the responsive rules)\r\n ResponsiveBreakpoints.widthXXS = function (container) {\r\n return container.pixelWidth <= ResponsiveBreakpoints.XXS;\r\n };\r\n ResponsiveBreakpoints.widthXS = function (container) {\r\n return container.pixelWidth <= ResponsiveBreakpoints.XS;\r\n };\r\n ResponsiveBreakpoints.widthS = function (container) {\r\n return container.pixelWidth <= ResponsiveBreakpoints.S;\r\n };\r\n ResponsiveBreakpoints.widthM = function (container) {\r\n return container.pixelWidth <= ResponsiveBreakpoints.M;\r\n };\r\n ResponsiveBreakpoints.widthL = function (container) {\r\n return container.pixelWidth <= ResponsiveBreakpoints.L;\r\n };\r\n ResponsiveBreakpoints.widthXL = function (container) {\r\n return container.pixelWidth <= ResponsiveBreakpoints.XL;\r\n };\r\n ResponsiveBreakpoints.widthXXL = function (container) {\r\n return container.pixelWidth <= ResponsiveBreakpoints.XXL;\r\n };\r\n ResponsiveBreakpoints.heightXXS = function (container) {\r\n return container.pixelHeight <= ResponsiveBreakpoints.XXS;\r\n };\r\n ResponsiveBreakpoints.heightXS = function (container) {\r\n return container.pixelHeight <= ResponsiveBreakpoints.XS;\r\n };\r\n ResponsiveBreakpoints.heightS = function (container) {\r\n return container.pixelHeight <= ResponsiveBreakpoints.S;\r\n };\r\n ResponsiveBreakpoints.heightM = function (container) {\r\n return container.pixelHeight <= ResponsiveBreakpoints.M;\r\n };\r\n ResponsiveBreakpoints.heightL = function (container) {\r\n return container.pixelHeight <= ResponsiveBreakpoints.L;\r\n };\r\n ResponsiveBreakpoints.heightXL = function (container) {\r\n return container.pixelHeight <= ResponsiveBreakpoints.XL;\r\n };\r\n ResponsiveBreakpoints.heightXXL = function (container) {\r\n return container.pixelHeight <= ResponsiveBreakpoints.XXL;\r\n };\r\n ResponsiveBreakpoints.isXXS = function (container) {\r\n return (container.pixelWidth <= ResponsiveBreakpoints.XXS) && (container.pixelHeight <= ResponsiveBreakpoints.XXS);\r\n };\r\n ResponsiveBreakpoints.isXS = function (container) {\r\n return (container.pixelWidth <= ResponsiveBreakpoints.XS) && (container.pixelHeight <= ResponsiveBreakpoints.XS);\r\n };\r\n ResponsiveBreakpoints.isS = function (container) {\r\n return (container.pixelWidth <= ResponsiveBreakpoints.S) && (container.pixelHeight <= ResponsiveBreakpoints.S);\r\n };\r\n ResponsiveBreakpoints.isM = function (container) {\r\n return (container.pixelWidth <= ResponsiveBreakpoints.M) && (container.pixelHeight <= ResponsiveBreakpoints.M);\r\n };\r\n ResponsiveBreakpoints.isL = function (container) {\r\n return (container.pixelWidth <= ResponsiveBreakpoints.L) && (container.pixelHeight <= ResponsiveBreakpoints.L);\r\n };\r\n ResponsiveBreakpoints.isXL = function (container) {\r\n return (container.pixelWidth <= ResponsiveBreakpoints.XL) && (container.pixelHeight <= ResponsiveBreakpoints.XL);\r\n };\r\n ResponsiveBreakpoints.isXXL = function (container) {\r\n return (container.pixelWidth <= ResponsiveBreakpoints.XXL) && (container.pixelHeight <= ResponsiveBreakpoints.XXL);\r\n };\r\n ResponsiveBreakpoints.maybeXXS = function (container) {\r\n return (container.pixelWidth <= ResponsiveBreakpoints.XXS) || (container.pixelHeight <= ResponsiveBreakpoints.XXS);\r\n };\r\n ResponsiveBreakpoints.maybeXS = function (container) {\r\n return (container.pixelWidth <= ResponsiveBreakpoints.XS) || (container.pixelHeight <= ResponsiveBreakpoints.XS);\r\n };\r\n ResponsiveBreakpoints.maybeS = function (container) {\r\n return (container.pixelWidth <= ResponsiveBreakpoints.S) || (container.pixelHeight <= ResponsiveBreakpoints.S);\r\n };\r\n ResponsiveBreakpoints.maybeM = function (container) {\r\n return (container.pixelWidth <= ResponsiveBreakpoints.M) || (container.pixelHeight <= ResponsiveBreakpoints.M);\r\n };\r\n ResponsiveBreakpoints.maybeL = function (container) {\r\n return (container.pixelWidth <= ResponsiveBreakpoints.L) || (container.pixelHeight <= ResponsiveBreakpoints.L);\r\n };\r\n ResponsiveBreakpoints.maybeXL = function (container) {\r\n return (container.pixelWidth <= ResponsiveBreakpoints.XL) || (container.pixelHeight <= ResponsiveBreakpoints.XL);\r\n };\r\n ResponsiveBreakpoints.maybeXXL = function (container) {\r\n return (container.pixelWidth <= ResponsiveBreakpoints.XXL) || (container.pixelHeight <= ResponsiveBreakpoints.XXL);\r\n };\r\n // Named pixel breakpoints\r\n ResponsiveBreakpoints.XXS = 100;\r\n ResponsiveBreakpoints.XS = 200;\r\n ResponsiveBreakpoints.S = 300;\r\n ResponsiveBreakpoints.M = 400;\r\n ResponsiveBreakpoints.L = 600;\r\n ResponsiveBreakpoints.XL = 800;\r\n ResponsiveBreakpoints.XXL = 1000;\r\n return ResponsiveBreakpoints;\r\n}());\r\nexport { ResponsiveBreakpoints };\r\n//# sourceMappingURL=Responsive.js.map","import { __extends, __generator } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { EventDispatcher } from \"./EventDispatcher\";\r\nimport * as $array from \"./Array\";\r\nimport * as $iter from \"./Iterator\";\r\nimport * as $type from \"./Type\";\r\n/**\r\n * Ordered list contains values of any type in an indexed array.\r\n */\r\nvar OrderedList = /** @class */ (function () {\r\n /**\r\n * Constructor\r\n *\r\n * @param initial Inital list of values to add to list\r\n */\r\n function OrderedList(initial) {\r\n /**\r\n * Holds list values.\r\n */\r\n this._values = [];\r\n /**\r\n * Event dispatcher.\r\n */\r\n this.events = new EventDispatcher();\r\n if (initial != null) {\r\n this.setAll(initial);\r\n }\r\n }\r\n Object.defineProperty(OrderedList.prototype, \"values\", {\r\n /**\r\n * All items of the list.\r\n *\r\n * Do not modify the list directly. Rather use `insert()` and `remove()`\r\n * methods.\r\n *\r\n * @return List values\r\n */\r\n get: function () {\r\n return this._values;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Inserts a value into list item array.\r\n *\r\n * @param value Value\r\n */\r\n OrderedList.prototype._insert = function (value) {\r\n this._values.push(value);\r\n return this._values.length - 1;\r\n };\r\n Object.defineProperty(OrderedList.prototype, \"length\", {\r\n /**\r\n * Number of items in the list.\r\n *\r\n * @readonly\r\n * @return Length\r\n */\r\n get: function () {\r\n return this._values.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns the index of the specific `value`.\r\n *\r\n * -1 if not found.\r\n *\r\n * @param value Value\r\n * @return Index\r\n */\r\n OrderedList.prototype.indexOf = function (value) {\r\n return $array.indexOf(this._values, value);\r\n };\r\n /**\r\n * Checks if list contains the `value`.\r\n *\r\n * @param value Value\r\n * @return In the list?\r\n */\r\n OrderedList.prototype.contains = function (value) {\r\n return this.indexOf(value) !== -1;\r\n };\r\n /**\r\n * Returns an item at specific `index`.\r\n *\r\n * @param index Index\r\n * @return Item\r\n */\r\n OrderedList.prototype.getIndex = function (index) {\r\n return this._values[index];\r\n };\r\n Object.defineProperty(OrderedList.prototype, \"first\", {\r\n /**\r\n * First item in the list.\r\n *\r\n * @return Item\r\n */\r\n get: function () {\r\n return this._values[0];\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(OrderedList.prototype, \"last\", {\r\n /**\r\n * Last item in the list.\r\n *\r\n * @return Item\r\n */\r\n get: function () {\r\n return this._values[this._values.length - 1];\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Inserts a value into list.\r\n *\r\n * @param value Value\r\n */\r\n OrderedList.prototype.insert = function (value) {\r\n var index = this._insert(value);\r\n if (this.events.isEnabled(\"inserted\")) {\r\n this.events.dispatchImmediately(\"inserted\", {\r\n type: \"inserted\",\r\n target: this,\r\n index: index,\r\n newValue: value\r\n });\r\n }\r\n };\r\n /**\r\n * Removes an item with the `value` from the list.\r\n *\r\n * @param value Value\r\n */\r\n OrderedList.prototype.remove = function (value) {\r\n var index = this.indexOf(value);\r\n if (index !== -1) {\r\n var oldValue = this._values[index];\r\n $array.removeIndex(this._values, index);\r\n if (this.events.isEnabled(\"removed\")) {\r\n this.events.dispatchImmediately(\"removed\", {\r\n type: \"removed\",\r\n target: this,\r\n index: index,\r\n oldValue: oldValue,\r\n });\r\n }\r\n }\r\n };\r\n /**\r\n * Sets multiple items to the list.\r\n *\r\n * All current items are removed.\r\n *\r\n * @param newArray New items\r\n */\r\n OrderedList.prototype.setAll = function (newArray) {\r\n var _this = this;\r\n $array.eachReverse(this._values, function (x, i) {\r\n _this._values.pop();\r\n if (_this.events.isEnabled(\"removed\")) {\r\n _this.events.dispatchImmediately(\"removed\", {\r\n type: \"removed\",\r\n target: _this,\r\n index: i,\r\n oldValue: x\r\n });\r\n }\r\n });\r\n $array.each(newArray, function (value) {\r\n _this.insert(value);\r\n });\r\n };\r\n /**\r\n * Removes all items from the list.\r\n */\r\n OrderedList.prototype.clear = function () {\r\n this.setAll([]);\r\n };\r\n /**\r\n * Returns part of the list between `start` and `end` indexes, as a new\r\n * [[OrderedList]].\r\n *\r\n * @param start Start index\r\n * @param end End index\r\n * @return Items in range\r\n */\r\n OrderedList.prototype.slice = function (start, end) {\r\n var out = new OrderedList();\r\n out._values = this._values.slice(start, end);\r\n return out;\r\n };\r\n /**\r\n * Finds a closest available index to the `value` in specified direction.\r\n *\r\n * @ignore exclude from docs\r\n * @param value value to search for\r\n * @param fn A callback function that returns value of the item\r\n * @param direction Direciton\r\n * @return Index\r\n */\r\n OrderedList.prototype.findClosestIndex = function (value, fn, direction) {\r\n if (direction === void 0) { direction = \"any\"; }\r\n // Init temporary values\r\n var closestIndex = -1;\r\n var closestValue;\r\n var closestDifference;\r\n var i = 0;\r\n $iter.eachContinue(this.iterator(), function (element) {\r\n var item = fn(element);\r\n // Calc difference\r\n if (direction === \"any\") {\r\n // Exact match?\r\n if (item === value) {\r\n // Found exact value - don't bother searching further\r\n closestIndex = i;\r\n return false;\r\n }\r\n var difference = Math.abs(value - item);\r\n if (!$type.hasValue(closestDifference) || (closestDifference > difference)) {\r\n closestIndex = i;\r\n closestValue = item;\r\n closestDifference = difference;\r\n }\r\n }\r\n else if (direction === \"left\" && (item < value)) {\r\n if (!$type.hasValue(closestValue) || (closestValue < item)) {\r\n closestIndex = i;\r\n closestValue = item;\r\n }\r\n }\r\n else if (direction === \"right\" && (item >= value)) {\r\n if (!$type.hasValue(closestValue) || (closestValue >= item)) {\r\n closestIndex = i;\r\n closestValue = item;\r\n }\r\n }\r\n ++i;\r\n return true;\r\n });\r\n // Found nothing?\r\n if (closestIndex === -1) {\r\n if (direction === \"left\") {\r\n // Use First one\r\n closestIndex = 0;\r\n }\r\n else if (direction === \"right\") {\r\n // Use last item\r\n closestIndex = this.length - 1;\r\n }\r\n }\r\n return closestIndex;\r\n };\r\n /**\r\n * Returns a list iterator.\r\n *\r\n * @return Iterator\r\n */\r\n OrderedList.prototype.iterator = function () {\r\n return $iter.fromArray(this._values);\r\n };\r\n /**\r\n * Returns an ES6 iterator for the list.\r\n */\r\n OrderedList.prototype[Symbol.iterator] = function () {\r\n var length, i;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n length = this._values.length;\r\n i = 0;\r\n _a.label = 1;\r\n case 1:\r\n if (!(i < length)) return [3 /*break*/, 4];\r\n return [4 /*yield*/, this._values[i]];\r\n case 2:\r\n _a.sent();\r\n _a.label = 3;\r\n case 3:\r\n ++i;\r\n return [3 /*break*/, 1];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n };\r\n /**\r\n * Calls `f` for each element in the list.\r\n */\r\n OrderedList.prototype.each = function (f) {\r\n $array.each(this._values, f);\r\n };\r\n return OrderedList;\r\n}());\r\nexport { OrderedList };\r\n/**\r\n * A list where all items are ordered according to specific ordering function,\r\n * which is passed in via constructor parameter, when creating an instance of\r\n * [[SortedList]].\r\n */\r\nvar SortedList = /** @class */ (function (_super) {\r\n __extends(SortedList, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param sort Ordering function\r\n */\r\n function SortedList(sort) {\r\n var _this = _super.call(this) || this;\r\n _this._ordering = sort;\r\n return _this;\r\n }\r\n /**\r\n * Inserts item into the list.\r\n *\r\n * @param value Item\r\n */\r\n SortedList.prototype._insert = function (value) {\r\n var index = $array.getSortedIndex(this._values, this._ordering, value).index;\r\n $array.insertIndex(this._values, index, value);\r\n return index;\r\n };\r\n /**\r\n * Returns index of the item in list if found.\r\n *\r\n * -1 if item is not in the list.\r\n *\r\n * @param value Item to search for\r\n * @return Index\r\n */\r\n SortedList.prototype.indexOf = function (value) {\r\n var _a = $array.getSortedIndex(this._values, this._ordering, value), found = _a.found, index = _a.index;\r\n if (found) {\r\n return index;\r\n }\r\n else {\r\n return -1;\r\n }\r\n };\r\n /**\r\n * [udpate description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param value [description]\r\n */\r\n SortedList.prototype.update = function (value) {\r\n // @todo test this\r\n var index = $array.indexOf(this._values, value);\r\n // @todo throw an error if it doesn't exist ?\r\n if (index !== -1) {\r\n var last = this._values.length - 1;\r\n // Check if the current ordering is correct\r\n if (!((index === 0 || this._ordering(this._values[index - 1], value) < 0) &&\r\n (index === last || this._ordering(value, this._values[index + 1]) < 0))) {\r\n // TODO send remove/insert/move events\r\n $array.removeIndex(this._values, index);\r\n this._insert(value);\r\n }\r\n }\r\n };\r\n return SortedList;\r\n}(OrderedList));\r\nexport { SortedList };\r\n/**\r\n * A version of a [[OrderedList]] that has a \"template\".\r\n *\r\n * A template is an instance of an object, that can be used to create new\r\n * elements in the list without actually needing to create instances for those.\r\n *\r\n * When new element is created in the list, e.g. by calling its `create()`\r\n * method, an exact copy of the element is created (including properties and\r\n * other attributes), inserted into the list and returned.\r\n */\r\nvar OrderedListTemplate = /** @class */ (function (_super) {\r\n __extends(OrderedListTemplate, _super);\r\n /**\r\n * Constructor\r\n *\r\n * @param t Template object\r\n */\r\n function OrderedListTemplate(t) {\r\n var _this = _super.call(this) || this;\r\n _this.template = t;\r\n return _this;\r\n }\r\n Object.defineProperty(OrderedListTemplate.prototype, \"template\", {\r\n /**\r\n * @return Template object\r\n */\r\n get: function () {\r\n return this._template;\r\n },\r\n /**\r\n * A \"template\" object to copy all properties from when creating new list\r\n * items.\r\n *\r\n * @param v Template object\r\n */\r\n set: function (v) {\r\n v.isTemplate = true;\r\n this._template = v;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies all elements from other list.\r\n *\r\n * @param source Source list\r\n */\r\n OrderedListTemplate.prototype.copyFrom = function (source) {\r\n var _this = this;\r\n $iter.each(source.iterator(), function (value) {\r\n _this.insert(value.clone());\r\n });\r\n };\r\n /**\r\n * Returns part of the list, starting at `start` and ending at `end` indexes,\r\n * as a new [[OrderedListTemplate]].\r\n *\r\n * @param start Start index\r\n * @param end End index\r\n * @return New list\r\n */\r\n OrderedListTemplate.prototype.slice = function (start, end) {\r\n var out = new OrderedListTemplate(this.template);\r\n out._values = this._values.slice(start, end);\r\n return out;\r\n };\r\n OrderedListTemplate.prototype.create = function (make) {\r\n var clone = (make != null\r\n ? new make()\r\n : this.template.clone());\r\n this.insert(clone);\r\n return clone;\r\n };\r\n return OrderedListTemplate;\r\n}(OrderedList));\r\nexport { OrderedListTemplate };\r\n/**\r\n * A version of a [[SortedList]] that has a \"template\".\r\n *\r\n * A template is an instance of an object, that can be used to create new\r\n * elements in the list without actually needing to create instances for those.\r\n *\r\n * When new element is created in the list, e.g. by calling its `create()`\r\n * method, an exact copy of the element is created (including properties and\r\n * other attributes), inserted into the list and returned.\r\n */\r\nvar SortedListTemplate = /** @class */ (function (_super) {\r\n __extends(SortedListTemplate, _super);\r\n /**\r\n * Constructor\r\n *\r\n * @param t Template object\r\n * @param sort Ordering function\r\n */\r\n function SortedListTemplate(t, sort) {\r\n var _this = _super.call(this, sort) || this;\r\n _this.template = t;\r\n return _this;\r\n }\r\n Object.defineProperty(SortedListTemplate.prototype, \"template\", {\r\n /**\r\n * @return Template object\r\n */\r\n get: function () {\r\n return this._template;\r\n },\r\n /**\r\n * A \"template\" object to copy all properties from when creating new list\r\n * items.\r\n *\r\n * @param v Template object\r\n */\r\n set: function (v) {\r\n v.isTemplate = true;\r\n this._template = v;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies all elements from other list.\r\n *\r\n * @param source Source list\r\n */\r\n SortedListTemplate.prototype.copyFrom = function (source) {\r\n var _this = this;\r\n $iter.each(source.iterator(), function (value) {\r\n _this.insert(value.clone());\r\n });\r\n };\r\n SortedListTemplate.prototype.create = function (make) {\r\n var clone = (make != null\r\n ? new make()\r\n : this.template.clone());\r\n this.insert(clone);\r\n return clone;\r\n };\r\n return SortedListTemplate;\r\n}(SortedList));\r\nexport { SortedListTemplate };\r\n//# sourceMappingURL=SortedList.js.map","/**\r\n * ============================================================================\r\n * COMPARING FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Comparing function used for ordering.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Use localeCompare\r\n * @param a Item 1\r\n * @param b Item 2\r\n * @return Result\r\n */\r\nexport function order(a, b) {\r\n if (a === b) {\r\n return 0;\r\n }\r\n else if (a < b) {\r\n return -1;\r\n }\r\n else {\r\n return 1;\r\n }\r\n}\r\n/**\r\n * ============================================================================\r\n * OTHER FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Repeats a `string` number of times as set in `amount`.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Make this faster\r\n * @param string Source string\r\n * @param amount Number of times to repeat string\r\n * @return New string\r\n */\r\nexport function repeat(string, amount) {\r\n return new Array(amount + 1).join(string);\r\n}\r\n/**\r\n * Generates a random string `characters` length.\r\n *\r\n * @param chars Number of characters\r\n * @return Random string\r\n */\r\nexport function random(chars) {\r\n var res = \"\";\r\n var choice = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n for (var i = 0; i < chars; i++) {\r\n res += choice.charAt(Math.floor(Math.random() * choice.length));\r\n }\r\n return res;\r\n}\r\n//# sourceMappingURL=String.js.map","/**\r\n * A collection of String-based constants.\r\n * @hidden\r\n * @ignore Exclude from docs\r\n */\r\n/**\r\n * @ignore Exclude from docs\r\n */\r\nexport var PX = \"px\";\r\n/**\r\n * @ignore Exclude from docs\r\n */\r\nexport var STRING = \"string\";\r\n/**\r\n * @ignore Exclude from docs\r\n */\r\nexport var NUMBER = \"number\";\r\n/**\r\n * @ignore Exclude from docs\r\n */\r\nexport var DATE = \"date\";\r\n/**\r\n * @ignore Exclude from docs\r\n */\r\nexport var DURATION = \"duration\";\r\n/**\r\n * @ignore Exclude from docs\r\n */\r\nexport var PLACEHOLDER = \"__§§§__\";\r\n/**\r\n * @ignore Exclude from docs\r\n */\r\nexport var PLACEHOLDER2 = \"__§§§§__\";\r\n//# sourceMappingURL=Strings.js.map","import * as $type from \"../utils/Type\";\r\n/**\r\n * Maps time period names to their numeric representations in milliseconds.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport var timeUnitDurations = {\r\n millisecond: 1,\r\n second: 1000,\r\n minute: 60000,\r\n hour: 3600000,\r\n day: 86400000,\r\n week: 604800000,\r\n month: 2592000000,\r\n year: 31536000000\r\n};\r\n/**\r\n * Returns the next time unit that goes after source `unit`.\r\n *\r\n * E.g. \"hour\" is the next unit after \"minute\", etc.\r\n *\r\n * @ignore Exclude from docs\r\n * @param unit Source time unit\r\n * @return Next time unit\r\n */\r\nexport function getNextUnit(unit) {\r\n switch (unit) {\r\n case \"year\":\r\n return;\r\n case \"month\":\r\n return \"year\";\r\n case \"week\":\r\n return \"month\";\r\n case \"day\":\r\n return \"month\"; // not a mistake\r\n case \"hour\":\r\n return \"day\";\r\n case \"minute\":\r\n return \"hour\";\r\n case \"second\":\r\n return \"minute\";\r\n case \"millisecond\":\r\n return \"second\";\r\n }\r\n}\r\n/**\r\n * Returns number of milliseconds in the `count` of time `unit`.\r\n *\r\n * Available units: \"millisecond\", \"second\", \"minute\", \"hour\", \"day\", \"week\",\r\n * \"month\", and \"year\".\r\n *\r\n * @ignore Exclude from docs\r\n * @param unit Time unit\r\n * @param count Number of units\r\n * @return Milliseconds\r\n */\r\nexport function getDuration(unit, count) {\r\n if (!$type.hasValue(count)) {\r\n count = 1;\r\n }\r\n return timeUnitDurations[unit] * count;\r\n}\r\n/**\r\n * Returns current `Date` object.\r\n *\r\n * @return Current date\r\n */\r\nexport function now() {\r\n return new Date();\r\n}\r\n/**\r\n * Returns current timestamp.\r\n *\r\n * @return Current timestamp\r\n */\r\nexport function getTime() {\r\n return now().getTime();\r\n}\r\n/**\r\n * Returns a copy of the `Date` object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param date Source date\r\n * @return Copy\r\n */\r\nexport function copy(date) {\r\n return new Date(date.getTime()); // todo: check if this is ok. new Date(date) used to strip milliseconds on FF in v3\r\n}\r\n/**\r\n * Checks if the `unit` part of two `Date` objects do not match. Two dates\r\n * represent a \"range\" of time, rather the same time date.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dateOne Date 1\r\n * @param dateTwo Date 2\r\n * @param unit Time unit to check\r\n * @return Range?\r\n */\r\nexport function checkChange(dateOne, dateTwo, unit, utc) {\r\n dateOne = new Date(dateOne.getTime());\r\n dateTwo = new Date(dateTwo.getTime());\r\n var timeZoneOffset1 = 0;\r\n var timeZoneOffset2 = 0;\r\n if (!utc && unit != \"millisecond\") {\r\n timeZoneOffset1 = dateOne.getTimezoneOffset();\r\n dateOne.setUTCMinutes(dateOne.getUTCMinutes() - timeZoneOffset1);\r\n timeZoneOffset2 = dateTwo.getTimezoneOffset();\r\n dateTwo.setUTCMinutes(dateTwo.getUTCMinutes() - timeZoneOffset2);\r\n }\r\n var changed = false;\r\n switch (unit) {\r\n case \"year\":\r\n if (dateOne.getUTCFullYear() != dateTwo.getUTCFullYear()) {\r\n changed = true;\r\n }\r\n break;\r\n case \"month\":\r\n if (dateOne.getUTCFullYear() != dateTwo.getUTCFullYear()) {\r\n changed = true;\r\n }\r\n else if (dateOne.getUTCMonth() != dateTwo.getUTCMonth()) {\r\n changed = true;\r\n }\r\n break;\r\n case \"day\":\r\n if (dateOne.getUTCMonth() != dateTwo.getUTCMonth()) {\r\n changed = true;\r\n }\r\n else if (dateOne.getUTCDate() != dateTwo.getUTCDate()) {\r\n changed = true;\r\n }\r\n break;\r\n case \"hour\":\r\n if (dateOne.getUTCHours() != dateTwo.getUTCHours()) {\r\n changed = true;\r\n }\r\n break;\r\n case \"minute\":\r\n if (dateOne.getUTCMinutes() != dateTwo.getUTCMinutes()) {\r\n changed = true;\r\n }\r\n break;\r\n case \"second\":\r\n if (dateOne.getUTCSeconds() != dateTwo.getUTCSeconds()) {\r\n changed = true;\r\n }\r\n break;\r\n case \"millisecond\":\r\n if (dateOne.getTime() != dateTwo.getTime()) {\r\n changed = true;\r\n }\r\n break;\r\n }\r\n if (changed) {\r\n return true;\r\n }\r\n var nextUnit = getNextUnit(unit);\r\n if (nextUnit) {\r\n dateOne.setUTCMinutes(dateOne.getUTCMinutes() + timeZoneOffset1);\r\n dateTwo.setUTCMinutes(dateTwo.getUTCMinutes() + timeZoneOffset2);\r\n return checkChange(dateOne, dateTwo, nextUnit, utc);\r\n }\r\n else {\r\n return false;\r\n }\r\n}\r\n/**\r\n * Adds `count` of time `unit` to the source date. Returns a modified `Date` object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param date Source date\r\n * @param unit Time unit\r\n * @param count Number of units to add\r\n * @return Modified date\r\n */\r\nexport function add(date, unit, count, utc) {\r\n var timeZoneOffset = 0;\r\n if (!utc && unit != \"millisecond\") {\r\n timeZoneOffset = date.getTimezoneOffset();\r\n date.setUTCMinutes(date.getUTCMinutes() - timeZoneOffset);\r\n }\r\n switch (unit) {\r\n case \"day\":\r\n var day = date.getUTCDate();\r\n date.setUTCDate(day + count);\r\n break;\r\n case \"second\":\r\n var seconds = date.getUTCSeconds();\r\n date.setUTCSeconds(seconds + count);\r\n break;\r\n case \"millisecond\":\r\n var milliseconds = date.getUTCMilliseconds();\r\n date.setUTCMilliseconds(milliseconds + count);\r\n break;\r\n case \"hour\":\r\n var hours = date.getUTCHours();\r\n date.setUTCHours(hours + count);\r\n break;\r\n case \"minute\":\r\n var minutes = date.getUTCMinutes();\r\n date.setUTCMinutes(minutes + count);\r\n break;\r\n case \"year\":\r\n var year = date.getUTCFullYear();\r\n date.setUTCFullYear(year + count);\r\n break;\r\n case \"month\":\r\n var month = date.getUTCMonth();\r\n date.setUTCMonth(month + count);\r\n break;\r\n case \"week\":\r\n var wday = date.getUTCDate();\r\n date.setUTCDate(wday + count * 7);\r\n break;\r\n }\r\n if (!utc && unit != \"millisecond\") {\r\n date.setUTCMinutes(date.getUTCMinutes() + timeZoneOffset);\r\n if (unit == \"day\" || unit == \"week\" || unit == \"month\" || unit == \"year\") {\r\n var newTimeZoneOffset = date.getTimezoneOffset();\r\n if (newTimeZoneOffset != timeZoneOffset) {\r\n var diff = newTimeZoneOffset - timeZoneOffset;\r\n date.setUTCMinutes(date.getUTCMinutes() + diff);\r\n // solves issues if newe time falls back to old time zone\r\n if (date.getTimezoneOffset() != newTimeZoneOffset) {\r\n date.setUTCMinutes(date.getUTCMinutes() - diff);\r\n }\r\n }\r\n }\r\n }\r\n return date;\r\n}\r\n/**\r\n * \"Rounds\" the date to specific time unit.\r\n *\r\n * @ignore Exclude from docs\r\n * @param date Source date\r\n * @param unit Time unit\r\n * @param count Number of units to round to\r\n * @param firstDateOfWeek First day of week\r\n * @param roundMinutes Minutes to round to (some timezones use non-whole hour)\r\n * @param timezone Use specific named timezone when rounding\r\n * @return New date\r\n */\r\nexport function round(date, unit, count, firstDateOfWeek, utc, firstDate, roundMinutes, timezone) {\r\n if (roundMinutes === void 0) { roundMinutes = 0; }\r\n if (!$type.isNumber(count)) {\r\n count = 1;\r\n }\r\n var timeZoneOffset = 0;\r\n if (timezone && [\"day\", \"month\", \"week\", \"year\"].indexOf(unit) != -1) {\r\n date = setTimezone(date, timezone);\r\n }\r\n if (!utc && unit != \"millisecond\") {\r\n timeZoneOffset = date.getTimezoneOffset();\r\n date.setUTCMinutes(date.getUTCMinutes() - timeZoneOffset);\r\n }\r\n switch (unit) {\r\n case \"day\":\r\n var day = date.getUTCDate();\r\n if (count > 1) {\r\n //\tday = Math.floor(day / count) * count;\r\n if (firstDate) {\r\n firstDate = round(firstDate, \"day\", 1);\r\n var difference = date.getTime() - firstDate.getTime();\r\n var unitCount = Math.floor(difference / getDuration(\"day\") / count);\r\n var duration = getDuration(\"day\", unitCount * count);\r\n date.setTime(firstDate.getTime() + duration - timeZoneOffset * getDuration(\"minute\"));\r\n }\r\n }\r\n else {\r\n date.setUTCDate(day);\r\n }\r\n date.setUTCHours(0, 0, 0, 0);\r\n break;\r\n case \"second\":\r\n var seconds = date.getUTCSeconds();\r\n if (count > 1) {\r\n seconds = Math.floor(seconds / count) * count;\r\n }\r\n date.setUTCSeconds(seconds, 0);\r\n break;\r\n case \"millisecond\":\r\n if (count == 1) {\r\n return date; // much better for perf!\r\n }\r\n var milliseconds = date.getUTCMilliseconds();\r\n milliseconds = Math.floor(milliseconds / count) * count;\r\n date.setUTCMilliseconds(milliseconds);\r\n break;\r\n case \"hour\":\r\n var hours = date.getUTCHours();\r\n if (count > 1) {\r\n hours = Math.floor(hours / count) * count;\r\n }\r\n date.setUTCHours(hours, roundMinutes, 0, 0);\r\n break;\r\n case \"minute\":\r\n var minutes = date.getUTCMinutes();\r\n milliseconds = date.getUTCMilliseconds();\r\n if (count > 1) {\r\n minutes = Math.floor(minutes / count) * count;\r\n }\r\n date.setUTCMinutes(minutes, 0, 0);\r\n break;\r\n case \"month\":\r\n var month = date.getUTCMonth();\r\n if (count > 1) {\r\n month = Math.floor(month / count) * count;\r\n }\r\n date.setUTCMonth(month, 1);\r\n date.setUTCHours(0, roundMinutes, 0, 0);\r\n break;\r\n case \"year\":\r\n var year = date.getUTCFullYear();\r\n if (count > 1) {\r\n year = Math.floor(year / count) * count;\r\n }\r\n date.setUTCFullYear(year, 0, 1);\r\n date.setUTCHours(0, roundMinutes, 0, 0);\r\n //let nonUTCDateY = new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\r\n //timeZoneOffset = nonUTCDateY.getTimezoneOffset();\r\n break;\r\n case \"week\":\r\n var wday = date.getUTCDate();\r\n var weekDay = date.getUTCDay();\r\n if (!$type.isNumber(firstDateOfWeek)) {\r\n firstDateOfWeek = 1;\r\n }\r\n // todo: rounding when count is not 1\r\n if (weekDay >= firstDateOfWeek) {\r\n wday = wday - weekDay + firstDateOfWeek;\r\n }\r\n else {\r\n wday = wday - (7 + weekDay) + firstDateOfWeek;\r\n }\r\n date.setUTCDate(wday);\r\n date.setUTCHours(0, roundMinutes, 0, 0);\r\n break;\r\n }\r\n if (!utc && unit != \"millisecond\") {\r\n date.setUTCMinutes(date.getUTCMinutes() + timeZoneOffset);\r\n if (unit == \"day\" || unit == \"week\" || unit == \"month\" || unit == \"year\") {\r\n var newTimeZoneOffset = date.getTimezoneOffset();\r\n if (newTimeZoneOffset != timeZoneOffset) {\r\n var diff = newTimeZoneOffset - timeZoneOffset;\r\n date.setUTCMinutes(date.getUTCMinutes() + diff);\r\n }\r\n }\r\n }\r\n return date;\r\n}\r\n/**\r\n * Returns a new `Date` object which corresponds to the source date in a\r\n * specific timezone.\r\n *\r\n * @since 4.10.1\r\n * @param date Source date\r\n * @param timezone Timezone identifier\r\n * @return Recalculated new Date\r\n */\r\nexport function setTimezone(date, timezone) {\r\n var d = new Date(date.toLocaleString(\"en-US\", { timeZone: timezone }));\r\n return d;\r\n}\r\n/**\r\n * Returns minute fraction of the set timezone.\r\n *\r\n * @since 4.10.12\r\n * @param timezone Timezone identifier\r\n * @return Minutes\r\n */\r\nexport function getTimezoneMinutes(timezone) {\r\n var d = new Date();\r\n d.setHours(0, 0, 0, 0);\r\n var d2 = setTimezone(d, timezone);\r\n return d2.getMinutes();\r\n}\r\n//# sourceMappingURL=Time.js.map","/**\r\n * A collection of utility functions for various type checks and conversion\r\n * @todo Review unused functions for removal\r\n * @hidden\r\n */\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { percent, isPercent } from \"./Percent\";\r\n/**\r\n * ============================================================================\r\n * TYPE CHECK\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Returns `true` if value is not a number (NaN).\r\n *\r\n * @param value Input value\r\n * @return Is NaN?\r\n * @deprecated Is not used anywhere. JS built-in isNaN is used everywhere. Maybe we don't need this, or if we do, then we should use it everywhere\r\n */\r\nexport function isNaN(value) {\r\n return Number(value) !== value;\r\n}\r\n/**\r\n * Returns a type of the value.\r\n *\r\n * @param value Input value\r\n * @return Type of the value\r\n */\r\nexport function getType(value) {\r\n return ({}).toString.call(value);\r\n}\r\n/**\r\n * Returns a default value if the passed in value is empty.\r\n *\r\n * @param value Input value\r\n * @param optional Default value\r\n * @return Value or default value whichever is available\r\n * @deprecated Not used anywhere\r\n */\r\nexport function getDefault(value, optional) {\r\n return value || optional;\r\n}\r\n/**\r\n * Checks if the passed in value is a string.\r\n *\r\n * @param value Value\r\n * @return Is string?\r\n * @throws {Error}\r\n * @deprecated Not used anywhere\r\n */\r\nexport function checkString(value) {\r\n if (typeof value === \"string\") {\r\n return true;\r\n }\r\n else {\r\n throw new Error(\"Expected a string but got \" + getType(value));\r\n }\r\n}\r\n/**\r\n * Checks if the passed in value is a boolean.\r\n *\r\n * @param value Value\r\n * @return Is boolean?\r\n * @throws {Error}\r\n * @deprecated Not used anywhere\r\n */\r\nexport function checkBoolean(value) {\r\n if (typeof value === \"boolean\") {\r\n return true;\r\n }\r\n else {\r\n throw new Error(\"Expected a boolean but got \" + getType(value));\r\n }\r\n}\r\n/**\r\n * Checks if the passed in value is a number.\r\n *\r\n * @param value Value\r\n * @return Is number?\r\n * @throws {Error}\r\n */\r\nexport function checkNumber(value) {\r\n if (typeof value === \"number\") {\r\n if (isNaN(value)) {\r\n throw new Error(\"Expected a number but got NaN\");\r\n }\r\n }\r\n else {\r\n throw new Error(\"Expected a number but got \" + getType(value));\r\n }\r\n return true;\r\n}\r\n/**\r\n * Checks if the passed in value is an object.\r\n *\r\n * @param value Value\r\n * @return Is object?\r\n * @throws {Error}\r\n * @todo Is the input type correct?\r\n * @deprecated Not used anywhere\r\n */\r\nexport function checkObject(value) {\r\n var t = getType(value);\r\n if (t === \"[object Object]\") {\r\n return true;\r\n }\r\n else {\r\n throw new Error(\"Expected an object but got \" + t);\r\n }\r\n}\r\n/**\r\n * Checks if the passed in value is an array.\r\n *\r\n * @param value Value\r\n * @return Is array?\r\n * @throws {Error}\r\n * @deprecated Not used anywhere\r\n */\r\nexport function checkArray(value) {\r\n if (Array.isArray(value)) {\r\n return true;\r\n }\r\n else {\r\n throw new Error(\"Expected an array but got \" + getType(value));\r\n }\r\n}\r\n/**\r\n * Checks if the passed in value is a Date object.\r\n *\r\n * @param value Value\r\n * @return Is Date object?\r\n * @throws {Error}\r\n * @deprecated Not used anywhere\r\n */\r\nexport function checkDate(value) {\r\n var t = getType(value);\r\n if (t === \"[object Date]\") {\r\n return true;\r\n }\r\n else {\r\n throw new Error(\"Expected a date but got \" + t);\r\n }\r\n}\r\n/**\r\n * ============================================================================\r\n * TYPE CASTING\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Casts string or a number into string.\r\n *\r\n * @param value Input\r\n * @return String value\r\n * @deprecated Not used anywhere\r\n */\r\nexport function castString(value) {\r\n if (typeof value === \"string\") {\r\n return value;\r\n }\r\n else if (typeof value === \"number\") {\r\n return \"\" + value;\r\n }\r\n else {\r\n throw new Error(\"Expected a string or number but got \" + getType(value));\r\n }\r\n}\r\n/**\r\n * Casts string or a number into a number.\r\n *\r\n * @param value Input value\r\n * @return Number value\r\n * @throws {Error}\r\n */\r\nexport function castNumber(value) {\r\n if (typeof value === \"string\") {\r\n var number = +value;\r\n if (isNaN(number)) {\r\n throw new Error(\"Cannot cast string \" + JSON.stringify(value) + \" to a number\");\r\n }\r\n else {\r\n return number;\r\n }\r\n }\r\n else if (typeof value === \"number\") {\r\n if (isNaN(value)) {\r\n throw new Error(\"Expected a number but got NaN\");\r\n }\r\n else {\r\n return value;\r\n }\r\n }\r\n else {\r\n var t = getType(value);\r\n if (t === \"[object Date]\") {\r\n return value.getTime();\r\n }\r\n else {\r\n throw new Error(\"Expected a string, number, or date but got \" + t);\r\n }\r\n }\r\n}\r\n/**\r\n * Casts number, string or Date into a Date object.\r\n *\r\n * @param value Input value\r\n * @return Date object\r\n * @deprecated Not used anywhere\r\n * @throws {Error}\r\n * @hidden\r\n * @deprecated\r\n */\r\n/*export function castDate(value: string | number | Date, formatter?: DateFormatter): Date {\r\n if (typeof value === \"string\") {\r\n if (formatter) {\r\n return formatter.parse(value);\r\n }\r\n return new Date(value);\r\n\r\n } else if (typeof value === \"number\") {\r\n return new Date(value);\r\n\r\n } else {\r\n const t = getType(value);\r\n\r\n if (t === \"[object Date]\") {\r\n return value;\r\n\r\n } else {\r\n throw new Error(\"Expected a string, number, or date but got \" + t);\r\n }\r\n }\r\n}*/\r\n/**\r\n * ============================================================================\r\n * QUICK CONVERSION\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Converts any value into `boolean`.\r\n *\r\n * @param value Source value\r\n * @return `true` or `false`\r\n */\r\nexport function toBoolean(value) {\r\n return value ? true : false;\r\n}\r\n/**\r\n * Converts any value into a `number`.\r\n *\r\n * @param value Source value\r\n * @return Number representation of value\r\n */\r\nexport function toNumber(value) {\r\n if (hasValue(value) && !isNumber(value)) {\r\n var converted = Number(value);\r\n if (isNaN(converted) && isString(value) && value != \"\") {\r\n return toNumber(value.replace(/[^0-9.\\-]+/g, ''));\r\n }\r\n return converted;\r\n }\r\n return value;\r\n}\r\n/**\r\n * Converts any value into a string (text).\r\n *\r\n * @param value Source value\r\n * @return String representation of the input\r\n */\r\nexport function toText(value) {\r\n if (hasValue(value) && !isString(value)) {\r\n if (isNumber(value)) {\r\n return castString(value);\r\n }\r\n else if (isObject(value)) {\r\n return value.toString();\r\n }\r\n }\r\n return value;\r\n}\r\n/**\r\n * Converts any value to a number or [[Percent]].\r\n *\r\n * If the parameter is a string and contains \"%\", it will\r\n * convert it into a [[Percent]].\r\n *\r\n * Otherwise, it will convert into a number.\r\n *\r\n * @param value Number or percent\r\n * @return Percent object\r\n */\r\nexport function toNumberOrPercent(value) {\r\n if (!hasValue(value) || isNumber(value) || isPercent(value)) {\r\n return value;\r\n }\r\n if (isString(value) && value.indexOf(\"%\") != -1) {\r\n return percent(toNumber(value));\r\n }\r\n return toNumber(value);\r\n}\r\n/**\r\n * Checks if a variable has a value.\r\n *\r\n * @param a Input value\r\n * @returns Has value?\r\n */\r\nexport function hasValue(a) {\r\n return a != null;\r\n}\r\n/**\r\n * Returns a value or throws an {Error} exception if the variable has not\r\n * value.\r\n *\r\n * @param a Input value\r\n * @returns Value\r\n */\r\nexport function getValue(a) {\r\n if (hasValue(a)) {\r\n return a;\r\n }\r\n else {\r\n throw new Error(\"Value doesn't exist\");\r\n }\r\n}\r\n/**\r\n * Returns a value, or returns the default value if it doesn't have a value.\r\n *\r\n * @param a Input value\r\n * @returns Value\r\n */\r\nexport function getValueDefault(a, defaultValue) {\r\n if (hasValue(a)) {\r\n return a;\r\n }\r\n else {\r\n return defaultValue;\r\n }\r\n}\r\n/**\r\n * ============================================================================\r\n * TYPE CHECK\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Checks if parameter is `Date`.\r\n *\r\n * @param value Input value\r\n * @return Is Date?\r\n */\r\nexport function isDate(value) {\r\n return getType(value) === \"[object Date]\";\r\n}\r\n/**\r\n * Checks if parameter is `string`.\r\n *\r\n * @param value Input value\r\n * @return Is string?\r\n */\r\nexport function isString(value) {\r\n return typeof value === \"string\";\r\n}\r\n/**\r\n * Checks if parameter is `number`.\r\n *\r\n * @param value Input value\r\n * @return Is number?\r\n */\r\nexport function isNumber(value) {\r\n return typeof value === \"number\" && Number(value) == value;\r\n}\r\n/**\r\n * Checks if parameter is `object`.\r\n *\r\n * @param value Input value\r\n * @return Is object?\r\n */\r\nexport function isObject(value) {\r\n return typeof value === \"object\" && value != null;\r\n}\r\n/**\r\n * Checks if parameter is `Array`.\r\n *\r\n * @param value Input value\r\n * @return Is Array?\r\n */\r\nexport function isArray(value) {\r\n return Array.isArray(value);\r\n}\r\n//# sourceMappingURL=Type.js.map","/**\r\n * A collection of universal utility functions.\r\n */\r\nimport { Percent } from \"./Percent\";\r\nimport { isSafari } from \"./Browser\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $string from \"./String\";\r\nimport * as $strings from \"./Strings\";\r\nimport * as $object from \"./Object\";\r\nimport * as $array from \"./Array\";\r\n/**\r\n * ============================================================================\r\n * MISC FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Marks a value as being used (e.g. because the value has side effects).\r\n */\r\nexport function used(value) { }\r\n/**\r\n * Copies all properties of one object to the other, omitting undefined.\r\n *\r\n * @param fromObject Source object\r\n * @param toObject Target object\r\n * @return Updated target object\r\n * @todo Maybe consolidate with utils.copy?\r\n */\r\nexport function copyProperties(source, target) {\r\n $object.each(source, function (key, value) {\r\n // only if value is set\r\n if ($type.hasValue(value)) {\r\n target[key] = value;\r\n }\r\n });\r\n return target;\r\n}\r\n/**\r\n * Removes target from url\r\n */\r\nexport function stripHash(url) {\r\n return /^[^#]*/.exec(url)[0];\r\n}\r\nexport function getBaseURI() {\r\n var url = \"#\";\r\n // Needed until https://bugs.webkit.org/show_bug.cgi?id=189499 is fixed\r\n if (isSafari()) {\r\n var baseURI = document.baseURI;\r\n if (baseURI) {\r\n baseURI = stripHash(baseURI);\r\n var loc = stripHash(location.href);\r\n if (baseURI !== loc) {\r\n url = loc + url;\r\n }\r\n }\r\n }\r\n return url;\r\n}\r\n/**\r\n * Copies all properties of one object to the other, omitting undefined, but only if property in target object doesn't have a value set.\r\n *\r\n * @param fromObject Source object\r\n * @param toObject Target object\r\n * @return Updated target object\r\n * @todo Maybe consolidate with utils.copy?\r\n */\r\nexport function softCopyProperties(source, target) {\r\n $object.each(source, function (key, value) {\r\n // only if value is set\r\n if ($type.hasValue(value) && !($type.hasValue(target[key]))) {\r\n target[key] = value;\r\n }\r\n });\r\n return target;\r\n}\r\n/**\r\n * Copies all properties of one object to the other.\r\n *\r\n * @param source Source object\r\n * @param recipient Target object\r\n * @return Updated target object\r\n */\r\nexport function copy(source, target) {\r\n $object.each(source, function (key, value) {\r\n target[key] = value;\r\n });\r\n return target;\r\n}\r\n/**\r\n * Checks if value is not empty (undefined or zero-length string).\r\n *\r\n * @param value Value to check\r\n * @return `true` if value is not \"empty\"\r\n */\r\nexport function isNotEmpty(value) {\r\n return $type.hasValue(value) && (value.toString() !== \"\");\r\n}\r\n/**\r\n * [relativeToValue description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param percent [description]\r\n * @param full [description]\r\n * @return [description]\r\n */\r\nexport function relativeToValue(percent, full) {\r\n if ($type.isNumber(percent)) {\r\n return percent;\r\n }\r\n else if (percent != null && $type.isNumber(percent.value) && $type.isNumber(full)) {\r\n return full * percent.value;\r\n }\r\n else {\r\n return 0;\r\n }\r\n}\r\n/**\r\n * [relativeRadiusToValue description]\r\n *\r\n * Differs from relativeToValue so that if a value is negative, it subtracts\r\n * it from full value.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param percent [description]\r\n * @param full [description]\r\n * @param subtractIfNegative [description]\r\n * @return [description]\r\n */\r\nexport function relativeRadiusToValue(percent, full, subtractIfNegative) {\r\n var value;\r\n if ($type.isNumber(percent)) {\r\n value = percent;\r\n if (value < 0) {\r\n if (subtractIfNegative) {\r\n value = full + value;\r\n }\r\n else {\r\n value = full - value;\r\n }\r\n }\r\n }\r\n else if (percent != null && $type.isNumber(percent.value)) {\r\n value = full * percent.value;\r\n }\r\n return value;\r\n}\r\n/**\r\n * [valueToRelative description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param value [description]\r\n * @param full [description]\r\n * @return [description]\r\n */\r\nexport function valueToRelative(value, full) {\r\n if (value instanceof Percent) {\r\n return value.value;\r\n }\r\n else {\r\n return value / full;\r\n }\r\n}\r\n/**\r\n * Returns pixel ratio of the current screen (used on retina displays).\r\n *\r\n * @return Pixel ratio\r\n */\r\nexport function getPixelRatio() {\r\n var ratio = window.devicePixelRatio || 1;\r\n return ratio;\r\n}\r\n/**\r\n * ============================================================================\r\n * STRING FORMATTING FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Converts camelCased text to dashed version:\r\n * (\"thisIsString\" > \"this-is-string\")\r\n *\r\n * @param str Input\r\n * @return Output\r\n */\r\nexport function camelToDashed(str) {\r\n return str.replace(/\\W+/g, '-').replace(/([a-z\\d])([A-Z])/g, '$1-$2').toLowerCase();\r\n}\r\n/**\r\n * Converts tring to uppercase.\r\n *\r\n * @param str String to convert\r\n * @return uppercased string\r\n * @todo Maybe make it better\r\n */\r\nexport function capitalize(str) {\r\n var arr = str.split(\"\");\r\n arr[0] = arr[0].toUpperCase();\r\n return arr.join(\"\");\r\n}\r\n/**\r\n * Converts any value into its string representation.\r\n *\r\n * @param value Value\r\n * @return String represantation of the value\r\n */\r\nexport function stringify(value) {\r\n return JSON.stringify(value);\r\n}\r\n/**\r\n * Escapes string so it can safely be used in a Regex.\r\n *\r\n * @param value Unsescaped string\r\n * @return Escaped string\r\n */\r\nexport function escapeForRgex(value) {\r\n return value.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\r\n}\r\n/**\r\n * Splits the text into multiple lines, respecting maximum character count.\r\n * Prioretizes splitting on spaces and punctuation. Falls back on splitting\r\n * mid-word if there's no other option.\r\n *\r\n * @param text Text\r\n * @param maxChars Maximum number of characters per line\r\n * @return An array of split text\r\n */\r\nexport function splitTextByCharCount(text, maxChars, fullWords, rtl, fullWordFallback) {\r\n // Maybe the text fits?\r\n if (text.length <= maxChars) {\r\n return [text];\r\n }\r\n // Init result\r\n var res = [];\r\n // Split by words or by charts\r\n if (fullWords) {\r\n // Split by words first\r\n // Split by spacing\r\n var currentIndex = -1;\r\n //let tmpText = text.replace(/([,;:!?\\\\\\/\\.]+[\\s]+|[\\s])/g, $strings.PLACEHOLDER + \"$1\" + $strings.PLACEHOLDER);\r\n var tmpText = text.replace(/([,;:!?\\\\\\/\\.]+|[\\s])/g, $strings.PLACEHOLDER + \"$1\" + $strings.PLACEHOLDER);\r\n var words = tmpText.split($strings.PLACEHOLDER);\r\n // Glue end-of-word punctuation to the word itself\r\n for (var i = 1; i < words.length; i++) {\r\n var word = words[i];\r\n if ((word == \".\" || word == \",\") && words[i - 1].match(/[\\w]+$/)) {\r\n words[i - 1] += word;\r\n words[i] = \"\";\r\n }\r\n }\r\n // Process each word\r\n for (var i = 0; i < words.length; i++) {\r\n // Get word and symbol count\r\n var word = words[i];\r\n var wordLength = word.length;\r\n // Ignore empty words\r\n if (wordLength === 0) {\r\n continue;\r\n }\r\n // Check word length\r\n if ((wordLength > maxChars) && (fullWords !== true || fullWordFallback != false)) {\r\n //if (wordLength > maxChars) {\r\n // A single word is longer than allowed symbol count\r\n // Break it up\r\n if (rtl) {\r\n word = reverseString(word);\r\n }\r\n var parts = word.match(new RegExp(\".{1,\" + maxChars + \"}\", \"g\"));\r\n // TODO is this correct ?\r\n if (parts) {\r\n if (rtl) {\r\n for (var x = 0; x < parts.length; x++) {\r\n parts[x] = reverseString(parts[x]);\r\n }\r\n //parts.reverse();\r\n }\r\n res = res.concat(parts);\r\n }\r\n }\r\n else {\r\n // Init current line\r\n if (currentIndex === -1) {\r\n res.push(\"\");\r\n currentIndex = 0;\r\n }\r\n // Check if we need to break into another line\r\n if (((res[currentIndex].length + wordLength + 1) > maxChars) && res[currentIndex] !== \"\") {\r\n res.push(\"\");\r\n currentIndex++;\r\n }\r\n // Add word\r\n res[currentIndex] += word;\r\n }\r\n // Update index\r\n currentIndex = res.length - 1;\r\n }\r\n }\r\n else {\r\n // Splitting by anywhere (living la vida facil)\r\n var parts = text.match(new RegExp(\".{1,\" + maxChars + \"}\", \"g\"));\r\n if (parts) {\r\n if (rtl) {\r\n for (var x = 0; x < parts.length; x++) {\r\n parts[x] = reverseString(parts[x]);\r\n }\r\n }\r\n res = parts;\r\n }\r\n }\r\n // Do we have only one word that does not fit?\r\n // Since fullWords is set and we can't split the word, we end up with empty\r\n // set.\r\n if (res.length == 1 && fullWords && fullWordFallback && (res[0].length > maxChars)) {\r\n res = [];\r\n }\r\n return res;\r\n}\r\n/**\r\n * Truncates the text to certain character count.\r\n *\r\n * Will add ellipsis if the string is truncated. Optionally, can truncate on\r\n * full words only.\r\n *\r\n * For RTL support, pass in the fifth parameter as `true`.\r\n *\r\n * @param text Input text\r\n * @param maxChars Maximum character count of output\r\n * @param ellipsis Ellipsis string, i.e. \"...\"\r\n * @param fullWords If `true`, will not break mid-word, unless there's a single word and it does not with into `maxChars`\r\n * @param rtl Is this an RTL text?\r\n * @return Truncated text\r\n */\r\nexport function truncateWithEllipsis(text, maxChars, ellipsis, fullWords, rtl) {\r\n if (text.length <= maxChars) {\r\n return text;\r\n }\r\n // Calc max chars\r\n maxChars -= ellipsis.length;\r\n if (maxChars < 1) {\r\n maxChars = 1;\r\n //ellipsis = \"\";\r\n }\r\n // Get lines\r\n var lines = splitTextByCharCount(text, maxChars, fullWords, rtl);\r\n // Use first line\r\n return (lines[0] || \"\") + ellipsis;\r\n}\r\n/**\r\n * Removes whitespace from beginning and end of the string.\r\n *\r\n * @param str Input\r\n * @return Output\r\n */\r\nexport function trim(str) {\r\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\");\r\n}\r\n;\r\n/**\r\n * Removes whitespace from end of the string.\r\n *\r\n * @param str Input\r\n * @return Output\r\n */\r\nexport function rtrim(str) {\r\n return str.replace(/[\\s\\uFEFF\\xA0]+$/g, \"\");\r\n}\r\n;\r\n/**\r\n * Removes whitespace from beginning of the string.\r\n *\r\n * @param str Input\r\n * @return Output\r\n */\r\nexport function ltrim(str) {\r\n return str.replace(/^[\\s\\uFEFF\\xA0]+/g, \"\");\r\n}\r\n;\r\n/**\r\n * Reverses string.\r\n *\r\n * @param str Input\r\n * @return Output\r\n */\r\nexport function reverseString(str) {\r\n return str.split(\"\").reverse().join(\"\");\r\n}\r\n/**\r\n * Removes quotes from the string.\r\n *\r\n * @param str Input\r\n * @return Output\r\n */\r\nexport function unquote(str) {\r\n var res = str.trim();\r\n res = str.replace(/^'(.*)'$/, \"$1\");\r\n if (res == str) {\r\n res = str.replace(/^\"(.*)\"$/, \"$1\");\r\n }\r\n return res;\r\n}\r\n/**\r\n * Pads a string with additional characters to certain length.\r\n *\r\n * @param value A numeric value\r\n * @param len Result string length in characters\r\n * @param char A character to use for padding\r\n * @return Padded value as string\r\n */\r\nexport function padString(value, len, char) {\r\n if (len === void 0) { len = 0; }\r\n if (char === void 0) { char = \"0\"; }\r\n if (typeof value !== \"string\") {\r\n value = value.toString();\r\n }\r\n return len > value.length ? Array(len - value.length + 1).join(char) + value : value;\r\n}\r\n/**\r\n * Tries to determine format type.\r\n *\r\n * @ignore Exclude from docs\r\n * @param format Format string\r\n * @return Format type (\"string\" | \"number\" | \"date\" | \"duration\")\r\n */\r\nexport function getFormat(format) {\r\n // Undefined?\r\n if (typeof format === \"undefined\") {\r\n return $strings.STRING;\r\n }\r\n // Cleanup and lowercase format\r\n format = format.toLowerCase().replace(/^\\[[^\\]]*\\]/, \"\");\r\n // Remove style tags\r\n format = format.replace(/\\[[^\\]]+\\]/, \"\");\r\n // Trim\r\n format = format.trim();\r\n // Check for any explicit format hints (i.e. /Date)\r\n var hints = format.match(/\\/(date|number|duration)$/);\r\n if (hints) {\r\n return hints[1];\r\n }\r\n // Check for explicit hints\r\n if (format === $strings.NUMBER) {\r\n return $strings.NUMBER;\r\n }\r\n if (format === $strings.DATE) {\r\n return $strings.DATE;\r\n }\r\n if (format === $strings.DURATION) {\r\n return $strings.DURATION;\r\n }\r\n // Detect number formatting symbols\r\n if (format.match(/[#0]/)) {\r\n return $strings.NUMBER;\r\n }\r\n // Detect date formatting symbols\r\n if (format.match(/[ymwdhnsqaxkzgtei]/)) {\r\n return $strings.DATE;\r\n }\r\n // Nothing? Let's display as string\r\n return $strings.STRING;\r\n}\r\n/**\r\n * Cleans up format:\r\n * * Strips out formatter hints\r\n *\r\n * @ignore Exclude from docs\r\n * @param format Format\r\n * @return Cleaned format\r\n */\r\nexport function cleanFormat(format) {\r\n return format.replace(/\\/(date|number|duration)$/i, \"\");\r\n}\r\n/**\r\n * Strips all tags from the string.\r\n *\r\n * @param text Source string\r\n * @return String without tags\r\n */\r\nexport function stripTags(text) {\r\n return text ? text.replace(/<[^>]*>/g, \"\") : text;\r\n}\r\n/**\r\n * Removes new lines and tags from a string.\r\n *\r\n * @param text String to conver\r\n * @return Converted string\r\n */\r\nexport function plainText(text) {\r\n return text ? stripTags((\"\" + text).replace(/[\\n\\r]+/g, \". \")) : text;\r\n}\r\n/**\r\n * ============================================================================\r\n * TYPE CONVERSION FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Converts numeric value into string. Deals with large or small numbers that\r\n * would otherwise use exponents.\r\n *\r\n * @param value Numeric value\r\n * @return Numeric value as string\r\n */\r\nexport function numberToString(value) {\r\n // TODO handle Infinity and -Infinity\r\n if ($type.isNaN(value)) {\r\n return \"NaN\";\r\n }\r\n if (value === Infinity) {\r\n return \"Infinity\";\r\n }\r\n if (value === -Infinity) {\r\n return \"-Infinity\";\r\n }\r\n // Negative 0\r\n if ((value === 0) && (1 / value === -Infinity)) {\r\n return \"-0\";\r\n }\r\n // Preserve negative and deal with absoute values\r\n var negative = value < 0;\r\n value = Math.abs(value);\r\n // TODO test this\r\n var parsed = $type.getValue(/^([0-9]+)(?:\\.([0-9]+))?(?:e[\\+\\-]([0-9]+))?$/.exec(\"\" + value));\r\n var digits = parsed[1];\r\n var decimals = parsed[2] || \"\";\r\n var res;\r\n // Leave the nummber as it is if it does not use exponents\r\n if (parsed[3] == null) {\r\n res = (decimals === \"\" ? digits : digits + \".\" + decimals);\r\n }\r\n else {\r\n var exponent = +parsed[3];\r\n // Deal with decimals\r\n if (value < 1) {\r\n var zeros = exponent - 1;\r\n res = \"0.\" + $string.repeat(\"0\", zeros) + digits + decimals;\r\n // Deal with integers\r\n }\r\n else {\r\n var zeros = exponent - decimals.length;\r\n if (zeros === 0) {\r\n res = digits + decimals;\r\n }\r\n else if (zeros < 0) {\r\n res = digits + decimals.slice(0, zeros) + \".\" + decimals.slice(zeros);\r\n }\r\n else {\r\n res = digits + decimals + $string.repeat(\"0\", zeros);\r\n }\r\n }\r\n }\r\n return negative ? \"-\" + res : res;\r\n}\r\n/**\r\n * Converts anything to Date object.\r\n *\r\n * @param value A value of any type\r\n * @return Date object representing a value\r\n */\r\nexport function anyToDate(value) {\r\n if ($type.isDate(value)) {\r\n // TODO maybe don't create a new Date ?\r\n var date = new Date(value);\r\n // This is needed because IE does not copy over milliseconds\r\n date.setMilliseconds(value.getMilliseconds());\r\n return date;\r\n }\r\n else if ($type.isNumber(value)) {\r\n return new Date(value);\r\n }\r\n else {\r\n // Try converting to number (assuming timestamp)\r\n var num = Number(value);\r\n if (!$type.isNumber(num)) {\r\n return new Date(value);\r\n }\r\n else {\r\n return new Date(num);\r\n }\r\n }\r\n}\r\n/**\r\n * Tries converting any value to a number.\r\n *\r\n * @param value Source value\r\n * @return Number\r\n */\r\nexport function anyToNumber(value) {\r\n if ($type.isDate(value)) {\r\n return value.getTime();\r\n }\r\n else if ($type.isNumber(value)) {\r\n return value;\r\n }\r\n else if ($type.isString(value)) {\r\n // Try converting to number (assuming timestamp)\r\n var num = Number(value);\r\n if (!$type.isNumber(num)) {\r\n // Failing\r\n return undefined;\r\n }\r\n else {\r\n return num;\r\n }\r\n }\r\n}\r\n/**\r\n * ============================================================================\r\n * DATE-RELATED FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Returns a year day.\r\n *\r\n * @param date Date\r\n * @param utc Assume UTC dates?\r\n * @return Year day\r\n * @todo Account for UTC\r\n */\r\nexport function getYearDay(date, utc) {\r\n if (utc === void 0) { utc = false; }\r\n var start = new Date(date.getFullYear(), 0, 0);\r\n var diff = (date.getTime() - start.getTime()) + ((start.getTimezoneOffset() - date.getTimezoneOffset()) * 60 * 1000);\r\n var oneDay = 1000 * 60 * 60 * 24;\r\n return Math.floor(diff / oneDay);\r\n}\r\n/**\r\n * Returns week number for a given date.\r\n *\r\n * @param date Date\r\n * @param utc Assume UTC dates?\r\n * @return Week number\r\n * @todo Account for UTC\r\n */\r\nexport function getWeek(date, utc) {\r\n if (utc === void 0) { utc = false; }\r\n var day = getYearDay(date, utc) - 1;\r\n var week = Math.floor((day - (date.getDay() || 7) + 10) / 7);\r\n if (week === 0) {\r\n week = 53;\r\n }\r\n else if (week === 53) {\r\n week = 1;\r\n }\r\n return week;\r\n}\r\n/**\r\n * Returns a week number in the month.\r\n *\r\n * @param date Source Date\r\n * @param utc Assume UTC dates?\r\n * @return Week number in month\r\n */\r\nexport function getMonthWeek(date, utc) {\r\n if (utc === void 0) { utc = false; }\r\n var firstWeek = getWeek(new Date(date.getFullYear(), date.getMonth(), 1), utc);\r\n var currentWeek = getWeek(date, utc);\r\n if (currentWeek == 1) {\r\n currentWeek = 53;\r\n }\r\n return currentWeek - firstWeek + 1;\r\n}\r\n/**\r\n * Returns a year day out of the given week number.\r\n *\r\n * @param week Week\r\n * @param year Year\r\n * @param weekday Weekday\r\n * @param utc Assume UTC dates\r\n * @return Day in a year\r\n */\r\nexport function getDayFromWeek(week, year, weekday, utc) {\r\n if (weekday === void 0) { weekday = 1; }\r\n if (utc === void 0) { utc = false; }\r\n var date = new Date(year, 0, 4, 0, 0, 0, 0);\r\n if (utc) {\r\n date.setUTCFullYear(year);\r\n }\r\n var day = week * 7 + weekday - ((date.getDay() || 7) + 3);\r\n return day;\r\n}\r\n/**\r\n * Returns 12-hour representation out of the 24-hour hours.\r\n *\r\n * @param hours 24-hour number\r\n * @return 12-hour number\r\n */\r\nexport function get12Hours(hours, base) {\r\n if (hours > 12) {\r\n hours -= 12;\r\n }\r\n else if (hours === 0) {\r\n hours = 12;\r\n }\r\n return $type.hasValue(base) ? hours + (base - 1) : hours;\r\n}\r\n/**\r\n * Returns a string name of the tome zone.\r\n *\r\n * @param date Date object\r\n * @param long Should return long (\"Pacific Standard Time\") or short abbreviation (\"PST\")\r\n * @param savings Include information if it's in daylight savings mode\r\n * @param utc Assume UTC dates\r\n * @return Time zone name\r\n */\r\nexport function getTimeZone(date, long, savings, utc) {\r\n if (long === void 0) { long = false; }\r\n if (savings === void 0) { savings = false; }\r\n if (utc === void 0) { utc = false; }\r\n if (utc) {\r\n return long ? \"Coordinated Universal Time\" : \"UTC\";\r\n }\r\n var wotz = date.toLocaleString(\"UTC\");\r\n var wtz = date.toLocaleString(\"UTC\", { timeZoneName: long ? \"long\" : \"short\" }).substr(wotz.length);\r\n //wtz = wtz.replace(/[+-]+[0-9]+$/, \"\");\r\n if (savings === false) {\r\n wtz = wtz.replace(/ (standard|daylight|summer|winter) /i, \" \");\r\n }\r\n return wtz;\r\n}\r\n/**\r\n * ============================================================================\r\n * NUMBER-RELATED FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Returns a random number between `from` and `to`.\r\n *\r\n * @param from From number\r\n * @param to To number\r\n * @return Random number\r\n */\r\nexport function random(from, to) {\r\n return Math.floor(Math.random() * (to - from)) + from;\r\n}\r\n/**\r\n * Fits the number into specific `min` and `max` bounds.\r\n *\r\n * @param value Input value\r\n * @param min Minimum value\r\n * @param max Maximum value\r\n * @return Possibly adjusted value\r\n */\r\nexport function fitNumber(value, min, max) {\r\n if (value > max) {\r\n return max;\r\n }\r\n else if (value < min) {\r\n return min;\r\n }\r\n return value;\r\n}\r\n/**\r\n * Fits the number into specific `min` and `max` bounds.\r\n *\r\n * If the value is does not fit withing specified range, it \"wraps\" around the\r\n * values.\r\n *\r\n * For example, if we have input value 10 with min set at 1 and max set at 8,\r\n * the value will not fit. The remainder that does not fit (2) will be added\r\n * to `min`, resulting in 3.\r\n *\r\n * The output of regular `fitNumber()` would return 8 instead.\r\n *\r\n * @param value Input value\r\n * @param min Minimum value\r\n * @param max Maximum value\r\n * @return Possibly adjusted value\r\n */\r\nexport function fitNumberRelative(value, min, max) {\r\n var gap = max - min;\r\n if (value > max) {\r\n value = min + (value - gap * Math.floor(value / gap));\r\n }\r\n else if (value < min) {\r\n value = min + (value - gap * Math.floor(value / gap));\r\n }\r\n return value;\r\n}\r\n/**\r\n * ============================================================================\r\n * SPRITE-RELATED FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Converts SVG element coordinates to coordinates within specific [[Sprite]].\r\n *\r\n * @param point SVG coordinates\r\n * @param sprite Sprite\r\n * @return Sprite coordinates\r\n */\r\nexport function svgPointToSprite(point, sprite) {\r\n var x = point.x;\r\n var y = point.y;\r\n var sprites = [];\r\n if (sprite) {\r\n while ($type.hasValue(sprite.parent)) {\r\n sprites.push(sprite);\r\n sprite = sprite.parent;\r\n }\r\n sprites.reverse();\r\n for (var i = 0; i < sprites.length; i++) {\r\n var sprite_1 = sprites[i];\r\n var angle = sprite_1.rotation;\r\n var relativeX = x - sprite_1.pixelX - sprite_1.ex;\r\n var relativeY = y - sprite_1.pixelY - sprite_1.ey;\r\n if (sprite_1.dx) {\r\n x -= sprite_1.dx;\r\n }\r\n if (sprite_1.dy) {\r\n y -= sprite_1.dy;\r\n }\r\n var scale = sprite_1.scale;\r\n // this handles nonscaling\r\n if (sprite_1.group) {\r\n scale = sprite_1.group.scale;\r\n }\r\n x = ($math.cos(-angle) * relativeX - $math.sin(-angle) * relativeY) / scale - sprite_1.pixelPaddingLeft;\r\n y = ($math.cos(-angle) * relativeY + $math.sin(-angle) * relativeX) / scale - sprite_1.pixelPaddingTop;\r\n }\r\n }\r\n return { x: x, y: y };\r\n}\r\n/**\r\n * Converts coordinates within [[Sprite]] to coordinates relative to the whole\r\n * SVG element.\r\n *\r\n * @param point Sprite coordinates\r\n * @param sprite Sprite\r\n * @return SVG coordinates\r\n */\r\nexport function spritePointToSvg(point, sprite) {\r\n var x = point.x;\r\n var y = point.y;\r\n if (sprite) {\r\n while ($type.hasValue(sprite.parent)) {\r\n var angle = sprite.rotation;\r\n x += sprite.pixelPaddingLeft + sprite.ex;\r\n y += sprite.pixelPaddingTop + sprite.ey;\r\n var scale = sprite.scale;\r\n // this handles nonscaling\r\n if (sprite.group) {\r\n scale = sprite.group.scale;\r\n }\r\n var relativeX = sprite.pixelX + ((x * $math.cos(angle) - y * $math.sin(angle))) * scale;\r\n var relativeY = sprite.pixelY + ((x * $math.sin(angle) + y * $math.cos(angle))) * scale;\r\n if (sprite.dx) {\r\n relativeX += sprite.dx;\r\n }\r\n if (sprite.dy) {\r\n relativeY += sprite.dy;\r\n }\r\n x = relativeX;\r\n y = relativeY;\r\n sprite = sprite.parent;\r\n }\r\n }\r\n return { x: x, y: y };\r\n}\r\n/**\r\n * Converts coordinates of one sprite to another.\r\n *\r\n * @param point Sprite coordinates\r\n * @param sprite Sprite\r\n * @param toSprite Sprite\r\n * @return converted coordinates\r\n */\r\nexport function spritePointToSprite(point, sprite, toSprite) {\r\n return svgPointToSprite(spritePointToSvg(point, sprite), toSprite);\r\n}\r\n/**\r\n * Converts a rectangle expressed in SVG element coordinates to coordinates\r\n * within specific [[Sprite]].\r\n *\r\n * @param rect SVG rectangle\r\n * @param sprite Sprite\r\n * @return Sprite rectangle\r\n */\r\nexport function svgRectToSprite(rect, sprite) {\r\n var p1 = svgPointToSprite(rect, sprite);\r\n var p2 = svgPointToSprite({ x: rect.x + rect.width, y: rect.y + rect.height }, sprite);\r\n return { x: p1.x, y: p1.y, width: p2.x - p1.x, height: p2.y - p1.y };\r\n}\r\n/**\r\n * Converts a rectangle expressed in [[Sprite]] coordinates to SVG coordinates.\r\n *\r\n * @param rect Sprite rectangle\r\n * @param sprite Sprite\r\n * @return SVG rectangle\r\n */\r\nexport function spriteRectToSvg(rect, sprite) {\r\n var p1 = spritePointToSvg(rect, sprite);\r\n var p2 = spritePointToSvg({ x: rect.x + rect.width, y: rect.y + rect.height }, sprite);\r\n return { x: p1.x, y: p1.y, width: p2.x - p1.x, height: p2.y - p1.y };\r\n}\r\n/**\r\n * Converts global document-wide coordinates to coordinates within SVG element.\r\n *\r\n * @param point Global coordinates\r\n * @param svgContainer SVG element\r\n * @return SVG coordinates\r\n */\r\nexport function documentPointToSvg(point, svgContainer, cssScale) {\r\n try {\r\n var bbox = svgContainer.getBoundingClientRect();\r\n if (!$type.isNumber(cssScale)) {\r\n cssScale = 1;\r\n }\r\n return {\r\n \"x\": (point.x - bbox.left) / cssScale,\r\n \"y\": (point.y - bbox.top) / cssScale\r\n };\r\n }\r\n catch (e) {\r\n return point;\r\n }\r\n}\r\n/**\r\n * Converts SVG coordinates to global document-wide coordinates.\r\n *\r\n * @param point SVG coordinates\r\n * @param svgContainer SVG element\r\n * @return Global coordinates\r\n */\r\nexport function svgPointToDocument(point, svgContainer) {\r\n try {\r\n var bbox = svgContainer.getBoundingClientRect();\r\n return {\r\n \"x\": point.x + bbox.left,\r\n \"y\": point.y + bbox.top\r\n };\r\n }\r\n catch (e) {\r\n return point;\r\n }\r\n}\r\n/**\r\n * Converts document-wide global coordinates to coordinates within specific\r\n * [[Sprite]].\r\n *\r\n * @param point Global coordinates\r\n * @param sprite Sprite\r\n * @return Sprite coordinates\r\n */\r\nexport function documentPointToSprite(point, sprite) {\r\n if (sprite && sprite.htmlContainer) {\r\n var svgPoint = documentPointToSvg(point, $type.getValue(sprite.htmlContainer), sprite.svgContainer.cssScale);\r\n return svgPointToSprite(svgPoint, sprite);\r\n }\r\n else {\r\n return point;\r\n }\r\n}\r\n/**\r\n * Converts coordinates within [[Sprite]] to global document coordinates.\r\n *\r\n * @param point Sprite coordinates\r\n * @param sprite Sprite\r\n * @return Global coordinates\r\n */\r\nexport function spritePointToDocument(point, sprite) {\r\n if (sprite && sprite.htmlContainer) {\r\n var svgPoint = spritePointToSvg(point, sprite);\r\n return svgPointToDocument(svgPoint, $type.getValue(sprite.htmlContainer));\r\n }\r\n else {\r\n return point;\r\n }\r\n}\r\n/**\r\n * ============================================================================\r\n * DEPRECATED FUNCTIONS\r\n * @todo Review and remove\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Returns element's width.\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element\r\n * @return Width (px)\r\n * @deprecated Not used anywhere\r\n */\r\nexport function width(element) {\r\n var cs = getComputedStyle(element);\r\n var paddingX = parseFloat(cs.paddingLeft) + parseFloat(cs.paddingRight);\r\n var borderX = parseFloat(cs.borderLeftWidth) + parseFloat(cs.borderRightWidth);\r\n return element.clientWidth - paddingX - borderX;\r\n}\r\n/**\r\n * Returns element's height.\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element\r\n * @return Height (px)\r\n * @deprecated Not used anywhere\r\n */\r\nexport function height(element) {\r\n var cs = getComputedStyle(element);\r\n var paddingY = parseFloat(cs.paddingTop) + parseFloat(cs.paddingBottom);\r\n var borderY = parseFloat(cs.borderTopWidth) + parseFloat(cs.borderBottomWidth);\r\n return element.clientHeight - paddingY - borderY;\r\n}\r\n/**\r\n * Returns number of decimals\r\n *\r\n * @ignore Exclude from docs\r\n * @param number Input number\r\n * @return Number of decimals\r\n */\r\nexport function decimalPlaces(number) {\r\n var match = ('' + number).match(/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/);\r\n if (!match) {\r\n return 0;\r\n }\r\n return Math.max(0, (match[1] ? match[1].length : 0) - (match[2] ? +match[2] : 0));\r\n}\r\nvar urlRegexp = /^([a-zA-Z][a-zA-Z0-9\\+\\.\\-]*:)?(?:(\\/\\/)([^\\@]+\\@)?([^\\/\\?\\#\\:]*)(\\:[0-9]+)?)?([^\\?\\#]*)(\\?[^\\#]*)?(\\#.*)?$/;\r\n/**\r\n * Parses a URL\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n// TODO test this\r\nexport function parseUrl(url) {\r\n var match = urlRegexp.exec(url);\r\n return {\r\n protocol: (match && match[1]) || \"\",\r\n separator: (match && match[2]) || \"\",\r\n authority: (match && match[3]) || \"\",\r\n domain: (match && match[4]) || \"\",\r\n port: (match && match[5]) || \"\",\r\n path: (match && match[6]) || \"\",\r\n query: (match && match[7]) || \"\",\r\n hash: (match && match[8]) || \"\"\r\n };\r\n}\r\n/**\r\n * Serializes a Url into a string\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport function serializeUrl(url) {\r\n return url.protocol + url.separator + url.authority + url.domain + url.port + url.path + url.query + url.hash;\r\n}\r\n/**\r\n * Checks whether a Url is relative or not\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n// TODO is this correct ?\r\nfunction isRelativeUrl(url) {\r\n return url.protocol === \"\" &&\r\n url.separator === \"\" &&\r\n url.authority === \"\" &&\r\n url.domain === \"\" &&\r\n url.port === \"\";\r\n}\r\n/**\r\n * Joins together two URLs, resolving relative URLs correctly\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n// TODO test this\r\nexport function joinUrl(left, right) {\r\n var parsedLeft = parseUrl(left);\r\n var parsedRight = parseUrl(right);\r\n if (isRelativeUrl(parsedLeft)) {\r\n throw new Error(\"Left URL is not absolute\");\r\n }\r\n if (isRelativeUrl(parsedRight)) {\r\n // TODO is this correct ?\r\n if (parsedRight.path !== \"\") {\r\n if (parsedRight.path[0] === \"/\") {\r\n parsedLeft.path = parsedRight.path;\r\n // TODO is this correct ?\r\n }\r\n else {\r\n var leftPath = parsedLeft.path.split(/\\//);\r\n var rightPath = parsedRight.path.split(/\\//);\r\n // TODO is this correct ?\r\n if (leftPath.length === 0) {\r\n if (rightPath.length !== 0) {\r\n leftPath.push(\"\");\r\n }\r\n }\r\n else if (leftPath.length > 1) {\r\n leftPath.pop();\r\n }\r\n $array.pushAll(leftPath, rightPath);\r\n parsedLeft.path = leftPath.join(\"/\");\r\n if (parsedLeft.path !== \"\" && parsedLeft.path[0] !== \"/\") {\r\n throw new Error(\"URL path must start with /\");\r\n }\r\n }\r\n }\r\n // TODO is this correct ?\r\n parsedLeft.query = parsedRight.query;\r\n parsedLeft.hash = parsedRight.hash;\r\n return serializeUrl(parsedLeft);\r\n }\r\n else {\r\n return serializeUrl(parsedRight);\r\n }\r\n}\r\n/**\r\n * Detects MSIE.\r\n *\r\n * @return Is IE?\r\n */\r\nexport function isIE() {\r\n return !!window.MSInputMethodContext && !!document.documentMode;\r\n}\r\n//# sourceMappingURL=Utils.js.map","/**\r\n * This module defines a [[Validatable]] class which can be used by all\r\n * non-[[Sprite]] classes to use system beats to revalidate themselves.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObjectEvents } from \"../Base\";\r\nimport { registry } from \"../Registry\";\r\n/**\r\n * This module defines a [[Validatable]] class which can be used by all\r\n * non-[[Sprite]] classes to use system update cycle to revalidate themselves.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nvar Validatable = /** @class */ (function (_super) {\r\n __extends(Validatable, _super);\r\n function Validatable() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n /**\r\n * Is invalid and should be revalidated?\r\n */\r\n _this._validateDisposer = null;\r\n return _this;\r\n }\r\n /**\r\n * Invalidates the element, so that it can re-validate/redraw itself in the\r\n * next cycle.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Validatable.prototype.invalidate = function () {\r\n if (this._validateDisposer === null) {\r\n this._validateDisposer = registry.events.on(\"exitframe\", this.validate, this);\r\n }\r\n };\r\n /**\r\n * Validates itself.\r\n *\r\n * Most probably the extending class will have an overriding `validate()`\r\n * method which will do actual work, as well as call this method using\r\n * `super.validate()`.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Validatable.prototype.validate = function () {\r\n if (this._validateDisposer !== null) {\r\n this._validateDisposer.dispose();\r\n this._validateDisposer = null;\r\n }\r\n };\r\n Validatable.prototype.dispose = function () {\r\n if (this._validateDisposer !== null) {\r\n this._validateDisposer.dispose();\r\n this._validateDisposer = null;\r\n }\r\n _super.prototype.dispose.call(this);\r\n };\r\n return Validatable;\r\n}(BaseObjectEvents));\r\nexport { Validatable };\r\n//# sourceMappingURL=Validatable.js.map","/**\r\n * Grip module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Button } from \"./Button\";\r\nimport { Sprite } from \"../Sprite\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { registry } from \"../Registry\";\r\nimport { percent } from \"../utils/Percent\";\r\nimport * as $path from \"../rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a grip element that can be used for scrolling or other things.\r\n *\r\n * @see {@link IGripEvents} for a list of available events\r\n * @see {@link IGripAdapters} for a list of available Adapters\r\n * @since 4.4.0\r\n */\r\nvar Grip = /** @class */ (function (_super) {\r\n __extends(Grip, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Grip() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"Grip\";\r\n var cs = new InterfaceColorSet();\r\n // Set defaults\r\n _this.layout = \"absolute\";\r\n _this.padding(10, 10, 10, 10);\r\n _this.margin(3, 3, 3, 3);\r\n _this.background.fillOpacity = 0.3;\r\n _this.background.cornerRadius(10, 10, 10, 10);\r\n // Create an icon\r\n var icon = new Sprite();\r\n icon.element = _this.paper.add(\"path\");\r\n var path = $path.moveTo({ x: -6, y: 0 });\r\n path += $path.lineTo({ x: 6, y: 0 });\r\n path += $path.moveTo({ x: -8, y: -6 });\r\n path += $path.lineTo({ x: 0, y: -12 });\r\n path += $path.lineTo({ x: 8, y: -6 });\r\n path += $path.moveTo({ x: -8, y: 6 });\r\n path += $path.lineTo({ x: 0, y: 12 });\r\n path += $path.lineTo({ x: 8, y: 6 });\r\n icon.path = path;\r\n icon.strokeWidth = 2;\r\n icon.fillOpacity = 0;\r\n icon.pixelPerfect = true;\r\n icon.padding(0, 4, 0, 4);\r\n icon.stroke = cs.getFor(\"text\");\r\n icon.strokeOpacity = 0.7;\r\n icon.align = \"center\";\r\n icon.valign = \"middle\";\r\n _this.icon = icon;\r\n _this.label.dispose();\r\n _this.label = undefined;\r\n // Set default position\r\n _this.position = \"right\";\r\n // Set up autohide\r\n _this.autoHideDelay = 3000;\r\n _this.events.on(\"shown\", function (ev) {\r\n if (_this._autoHideTimeout) {\r\n _this._autoHideTimeout.dispose();\r\n }\r\n if (_this.autoHideDelay) {\r\n _this._autoHideTimeout = _this.setTimeout(function () {\r\n _this.hide();\r\n }, _this.autoHideDelay);\r\n }\r\n });\r\n _this.events.on(\"down\", function (ev) {\r\n if (_this._autoHideTimeout) {\r\n _this._autoHideTimeout.dispose();\r\n }\r\n });\r\n _this.events.on(\"out\", function (ev) {\r\n if (_this.autoHideDelay) {\r\n _this._autoHideTimeout = _this.setTimeout(function () {\r\n _this.hide();\r\n }, _this.autoHideDelay);\r\n }\r\n });\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(Grip.prototype, \"position\", {\r\n /**\r\n * @return Position\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"position\");\r\n },\r\n /**\r\n * Sets position of the grip.\r\n *\r\n * Available options: \"left\", \"right\" (default), \"top\", \"bottom\".\r\n *\r\n * @param value Position\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"position\", value)) {\r\n switch (value) {\r\n case \"left\":\r\n this.align = \"left\";\r\n this.valign = \"middle\";\r\n this.horizontalCenter = \"left\";\r\n this.verticalCenter = \"middle\";\r\n this.icon.rotation = 0;\r\n this.width = undefined;\r\n this.height = percent(30);\r\n break;\r\n case \"right\":\r\n this.align = \"right\";\r\n this.valign = \"middle\";\r\n this.horizontalCenter = \"right\";\r\n this.verticalCenter = \"middle\";\r\n this.icon.rotation = 0;\r\n this.width = undefined;\r\n this.height = percent(30);\r\n break;\r\n case \"top\":\r\n this.align = \"center\";\r\n this.valign = \"top\";\r\n this.horizontalCenter = \"middle\";\r\n this.verticalCenter = \"top\";\r\n this.icon.rotation = 90;\r\n this.width = percent(30);\r\n this.height = undefined;\r\n break;\r\n case \"bottom\":\r\n this.align = \"center\";\r\n this.valign = \"bottom\";\r\n this.horizontalCenter = \"middle\";\r\n this.verticalCenter = \"bottom\";\r\n this.icon.rotation = 90;\r\n this.width = percent(30);\r\n this.height = undefined;\r\n break;\r\n default:\r\n this.align = \"center\";\r\n this.valign = \"middle\";\r\n this.horizontalCenter = \"middle\";\r\n this.verticalCenter = \"middle\";\r\n this.icon.rotation = 90;\r\n this.width = percent(30);\r\n this.height = undefined;\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Grip.prototype, \"autoHideDelay\", {\r\n /**\r\n * @return Delay\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"autoHideDelay\");\r\n },\r\n /**\r\n * Number of milliseconds to show grip until it is hidden automatically.\r\n *\r\n * @default 3000\r\n * @param value Delay\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"autoHideDelay\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Grip;\r\n}(Button));\r\nexport { Grip };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Grip\"] = Grip;\r\n//# sourceMappingURL=Grip.js.map","/**\r\n * [[Chart]] class provides base functionality for all chart types to inherit.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { registry } from \"../core/Registry\";\r\nimport { Component } from \"../core/Component\";\r\nimport { MutableValueDisposer, Disposer } from \"../core/utils/Disposer\";\r\nimport { ListTemplate, ListDisposer } from \"../core/utils/List\";\r\nimport { Container } from \"../core/Container\";\r\nimport { Label } from \"../core/elements/Label\";\r\nimport { Grip } from \"../core/elements/Grip\";\r\nimport { DataItem } from \"../core/DataItem\";\r\nimport { percent } from \"../core/utils/Percent\";\r\nimport * as $iter from \"../core/utils/Iterator\";\r\nimport * as $type from \"../core/utils/Type\";\r\nimport { defaultRules, ResponsiveBreakpoints } from \"../core/utils/Responsive\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[Chart]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar ChartDataItem = /** @class */ (function (_super) {\r\n __extends(ChartDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ChartDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ChartDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return ChartDataItem;\r\n}(DataItem));\r\nexport { ChartDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A base class for all Charts.\r\n *\r\n * @see {@link IChartEvents} for a list of available Events\r\n * @see {@link IChartAdapters} for a list of available Adapters\r\n */\r\nvar Chart = /** @class */ (function (_super) {\r\n __extends(Chart, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Chart() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * A reference to chart's [[Legend]].\r\n * @ignore\r\n */\r\n _this._legend = new MutableValueDisposer();\r\n if (_this.constructor === Chart) {\r\n throw new Error(\"'Chart' cannot be instantiated directly. Please use a specific chart type.\");\r\n }\r\n _this.className = \"Chart\";\r\n // Create a list of titles\r\n var template = new Label();\r\n _this.titles = new ListTemplate(template);\r\n _this._disposers.push(new ListDisposer(_this.titles));\r\n _this._disposers.push(template);\r\n // Chart component is also a container. it holds _chartAndLegendCont and titles\r\n _this.width = percent(100);\r\n _this.height = percent(100);\r\n _this.layout = \"vertical\";\r\n // Chart and legend\r\n var chartAndLegendContainer = _this.createChild(Container);\r\n chartAndLegendContainer.shouldClone = false;\r\n chartAndLegendContainer.layout = \"vertical\";\r\n chartAndLegendContainer.width = percent(100);\r\n chartAndLegendContainer.height = percent(100);\r\n _this.chartAndLegendContainer = chartAndLegendContainer;\r\n // Chart container holds all the elements of a chart, extept titles and legend\r\n var chartContainer = chartAndLegendContainer.createChild(Container);\r\n chartContainer.shouldClone = false;\r\n chartContainer.width = percent(100);\r\n chartContainer.height = percent(100);\r\n _this.chartContainer = chartContainer;\r\n _this.showOnInit = true;\r\n _this._disposers.push(_this._legend);\r\n // Add title list events to apply certain formatting options and to make\r\n // the chart reference them as accessible screen reader labels\r\n _this.titles.events.on(\"inserted\", function (label) {\r\n _this.processTitle(label);\r\n _this.updateReaderTitleReferences();\r\n }, _this, false);\r\n _this.titles.events.on(\"removed\", function (label) {\r\n _this.updateReaderTitleReferences();\r\n }, _this, false);\r\n // Accessibility\r\n // It seems we can't set focusable on the whole chart because it seems to\r\n // mess up the whole focus event system - getting a focus on an inside\r\n // object also trigger focus on parent\r\n //this.focusable = true;\r\n _this.role = \"region\";\r\n _this.defaultState.transitionDuration = 1;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n Chart.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Chart\");\r\n }\r\n };\r\n /**\r\n * Initiates drawing of the chart.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Chart.prototype.draw = function () {\r\n this.fixLayout();\r\n _super.prototype.draw.call(this);\r\n };\r\n /**\r\n * Updates legend's hierarchy based on the position.\r\n */\r\n Chart.prototype.fixLayout = function () {\r\n var legend = this.legend;\r\n if (legend) {\r\n var chartAndLegendContainer = this.chartAndLegendContainer;\r\n var chartContainer = this.chartContainer;\r\n chartContainer.x = undefined;\r\n chartContainer.y = undefined;\r\n if (legend.position != \"absolute\") {\r\n legend.x = undefined;\r\n legend.y = undefined;\r\n }\r\n switch (legend.position) {\r\n case \"left\":\r\n chartAndLegendContainer.layout = \"horizontal\";\r\n legend.toBack();\r\n break;\r\n case \"right\":\r\n chartAndLegendContainer.layout = \"horizontal\";\r\n legend.toFront();\r\n break;\r\n case \"top\":\r\n chartAndLegendContainer.layout = \"vertical\";\r\n legend.toBack();\r\n break;\r\n case \"bottom\":\r\n chartAndLegendContainer.layout = \"vertical\";\r\n legend.toFront();\r\n break;\r\n case \"absolute\":\r\n legend.isMeasured = false;\r\n break;\r\n }\r\n }\r\n };\r\n /**\r\n * Setups the legend to use the chart's data.\r\n */\r\n Chart.prototype.feedLegend = function () {\r\n // Nothing here. This method is provided only as a \"placeholder\" for\r\n // extending classes to override\r\n };\r\n /**\r\n * Adds a new title to the chart when it is inserted into chart's titles\r\n * list.\r\n * @param event An event object which is triggered when inserting into titles list\r\n * @return Label object\r\n */\r\n Chart.prototype.processTitle = function (event) {\r\n var title = event.newValue;\r\n title.parent = this;\r\n title.toBack();\r\n title.shouldClone = false;\r\n title.align = \"center\";\r\n // Need to explicitly apply the `id` attribute so it can be referenced by\r\n // `aria-labelledby`\r\n title.uidAttr();\r\n return title;\r\n };\r\n /**\r\n * Checks if chart has any title elements. If it does, we will use them in an\r\n * `aria-labelledby` attribute so that screen readers can use them to properly\r\n * describe the chart when it is focused or hovered.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Chart.prototype.updateReaderTitleReferences = function () {\r\n if (this.titles.length) {\r\n var titleIds_1 = [];\r\n $iter.each(this.titles.iterator(), function (title) {\r\n titleIds_1.push(title.uid);\r\n });\r\n this.setSVGAttribute({ \"aria-labelledby\": titleIds_1.join(\" \") });\r\n }\r\n else {\r\n this.removeSVGAttribute(\"aria-labelledby\");\r\n }\r\n };\r\n Object.defineProperty(Chart.prototype, \"legend\", {\r\n /**\r\n * @return Legend\r\n */\r\n get: function () {\r\n return this._legend.get();\r\n },\r\n /**\r\n * Holds the instance of chart's [[Leged]].\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/legend/} for more information about legends\r\n * @param Legend\r\n */\r\n set: function (legend) {\r\n this.setLegend(legend);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Prepares the legend instance for use in this chart.\r\n *\r\n * @param legend Legend\r\n */\r\n Chart.prototype.setLegend = function (legend) {\r\n var _this = this;\r\n if (this._legend.get() !== legend) {\r\n if (legend) {\r\n // Set legend options\r\n legend.parent = this.chartAndLegendContainer;\r\n this._legend.set(legend, legend.events.on(\"propertychanged\", function (event) {\r\n if (event.property == \"position\") {\r\n _this.fixLayout();\r\n }\r\n }, undefined, false));\r\n legend.addDisposer(new Disposer(function () {\r\n _this.legend = undefined;\r\n }));\r\n }\r\n else {\r\n this._legend.reset();\r\n }\r\n this.feedLegend();\r\n }\r\n };\r\n /**\r\n * Destroys this object and all related data.\r\n */\r\n Chart.prototype.dispose = function () {\r\n // otherwise there might be some errors when disposing chart which was just inited\r\n if (this.legend) {\r\n this.legend.dispose();\r\n }\r\n _super.prototype.dispose.call(this);\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n Chart.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Set up legend\r\n if ($type.hasValue(config.legend) && !$type.hasValue(config.legend.type)) {\r\n config.legend.type = \"Legend\";\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n /**\r\n * Copies all properties from another instance of [[Series]].\r\n *\r\n * @param source Source series\r\n */\r\n Chart.prototype.copyFrom = function (source) {\r\n this.titles.copyFrom(source.titles);\r\n this.chartContainer.copyFrom(source.chartContainer);\r\n if (source.legend) {\r\n this.legend = source.legend.clone();\r\n this.legend.removeChildren();\r\n }\r\n _super.prototype.copyFrom.call(this, source);\r\n };\r\n Object.defineProperty(Chart.prototype, \"dragGrip\", {\r\n /**\r\n * @return Grip\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._dragGrip) {\r\n var grip_1 = this.tooltipContainer.createChild(Grip);\r\n grip_1.align = \"right\";\r\n grip_1.valign = \"middle\";\r\n grip_1.hide(0);\r\n grip_1.events.on(\"down\", function (ev) {\r\n if (ev.touch) {\r\n _this.interactionsEnabled = false;\r\n }\r\n });\r\n grip_1.events.on(\"up\", function (ev) {\r\n _this.interactionsEnabled = true;\r\n });\r\n this.events.on(\"down\", function (ev) {\r\n if (ev.touch) {\r\n grip_1.show();\r\n }\r\n });\r\n this._dragGrip = grip_1;\r\n }\r\n return this._dragGrip;\r\n },\r\n /**\r\n * An instance of [[Grip]] which serves as a grip point which appears on\r\n * touch and allows scrolling whole page even if chart is occupying the\r\n * whole of the screen and would otherwise prevent scrolling.\r\n *\r\n * @since 4.4.0\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/touch/} For more information.\r\n * @param value Grip\r\n */\r\n set: function (value) {\r\n this._dragGrip = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Chart.prototype, \"focusable\", {\r\n get: function () {\r\n return this.parent.focusable;\r\n },\r\n set: function (value) {\r\n this.parent.focusable = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Chart;\r\n}(Component));\r\nexport { Chart };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Chart\"] = Chart;\r\n/**\r\n * Add default responsive rules\r\n */\r\n/**\r\n * Reduce horizontal margins\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.widthXS,\r\n state: function (target, stateId) {\r\n if (target instanceof Chart) {\r\n var state = target.states.create(stateId);\r\n if (target.pixelPaddingLeft > 10) {\r\n state.properties.paddingLeft = 10;\r\n }\r\n if (target.pixelPaddingRight > 10) {\r\n state.properties.paddingRight = 10;\r\n }\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n/**\r\n * Reduce vertical margins\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.heightXS,\r\n state: function (target, stateId) {\r\n if (target instanceof Chart) {\r\n var state = target.states.create(stateId);\r\n if (target.pixelPaddingTop > 10) {\r\n state.properties.paddingTop = 10;\r\n }\r\n if (target.pixelPaddingBottom > 10) {\r\n state.properties.paddingBottom = 10;\r\n }\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n/**\r\n * Remove horizontal padding\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.widthXXS,\r\n state: function (target, stateId) {\r\n if (target instanceof Chart) {\r\n var state = target.states.create(stateId);\r\n state.properties.paddingLeft = 0;\r\n state.properties.paddingRight = 0;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n/**\r\n * Remove vertical padding\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.heightXXS,\r\n state: function (target, stateId) {\r\n if (target instanceof Chart) {\r\n var state = target.states.create(stateId);\r\n state.properties.paddingTop = 0;\r\n state.properties.paddingBottom = 0;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n//# sourceMappingURL=Chart.js.map","/**\r\n * Module that defines everything related to building bullets.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../../core/Container\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { defaultRules, ResponsiveBreakpoints } from \"../../core/utils/Responsive\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Class used to creates bullets.\r\n *\r\n * @see {@link IBulletEvents} for a list of available events\r\n * @see {@link IBulletAdapters} for a list of available Adapters\r\n * @todo Usage example\r\n * @important\r\n */\r\nvar Bullet = /** @class */ (function (_super) {\r\n __extends(Bullet, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Bullet() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Bullet\";\r\n _this.isMeasured = false;\r\n _this.tooltipX = 0;\r\n _this.tooltipY = 0;\r\n _this.layout = \"none\";\r\n _this.applyOnClones = true;\r\n _this.copyToLegendMarker = true;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(Bullet.prototype, \"locationX\", {\r\n /**\r\n * @return Location (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"locationX\");\r\n },\r\n /**\r\n * Relative horizontal location within cell. (0-1)\r\n *\r\n * @param value Location (0-1)\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"locationX\", value)) {\r\n var dataItem = this.dataItem;\r\n if (dataItem && dataItem.component) {\r\n dataItem.component.invalidate();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Bullet.prototype, \"locationY\", {\r\n /**\r\n * @return Location (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"locationY\");\r\n },\r\n /**\r\n * Relative vertical location within cell. (0-1)\r\n *\r\n * @param value Location (0-1)\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"locationY\", value)) {\r\n var dataItem = this.dataItem;\r\n if (dataItem && dataItem.component) {\r\n dataItem.component.invalidate();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Bullet.prototype, \"xField\", {\r\n /**\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"xField\");\r\n },\r\n /**\r\n * [xField description]\r\n *\r\n * @todo Description\r\n * @param value [description]\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"xField\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Bullet.prototype, \"yField\", {\r\n /**\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"yField\");\r\n },\r\n /**\r\n * [yField description]\r\n *\r\n * Description\r\n * @param value [description]\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"yField\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Bullet.prototype, \"isDynamic\", {\r\n /**\r\n * @return Redraw on data change?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"isDynamic\");\r\n },\r\n /**\r\n * Indicates if the bullet is \"dynamic\".\r\n *\r\n * In most cases the bullets remain the same, even if the underlying data\r\n * changes.\r\n *\r\n * However, in cases where bullet also displays a label, or its size depends\r\n * on data, it also needs to be redrawn when the underlying data changes.\r\n *\r\n * Only those bullets that have set `isDynamic = true` will be redrawn each\r\n * time data changes. Regular bullets will be reused as they are.\r\n *\r\n * @default false\r\n * @param value Redraw on data change?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"isDynamic\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Bullet.prototype, \"copyToLegendMarker\", {\r\n /**\r\n * @return Redraw on data change?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"copyToLegendMarker\");\r\n },\r\n /**\r\n * Indicates if the bullet should be copied to legend marker\r\n *\r\n * @default false\r\n * @param value Redraw on data change?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"copyToLegendMarker\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Bullet;\r\n}(Container));\r\nexport { Bullet };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Bullet\"] = Bullet;\r\n/**\r\n * Add default responsive rules\r\n */\r\n/**\r\n * Hide bullets\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.isXS,\r\n state: function (target, stateId) {\r\n if (target instanceof Bullet) {\r\n var state = target.states.create(stateId);\r\n state.properties.disabled = true;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n//# sourceMappingURL=Bullet.js.map","/**\r\n * Legend-related functionality.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Component } from \"../core/Component\";\r\nimport { DataItem } from \"../core/DataItem\";\r\nimport { ListTemplate, ListDisposer } from \"../core/utils/List\";\r\nimport { RoundedRectangle } from \"../core/elements/RoundedRectangle\";\r\nimport { Container } from \"../core/Container\";\r\nimport { Label } from \"../core/elements/Label\";\r\nimport { keyboard } from \"../core/utils/Keyboard\";\r\nimport { registry } from \"../core/Registry\";\r\nimport { getInteraction } from \"../core/interaction/Interaction\";\r\nimport { percent, Percent } from \"../core/utils/Percent\";\r\nimport { InterfaceColorSet } from \"../core/utils/InterfaceColorSet\";\r\nimport * as $utils from \"../core/utils/Utils\";\r\nimport * as $type from \"../core/utils/Type\";\r\nimport * as $math from \"../core/utils/Math\";\r\nimport { Sprite } from \"../core/Sprite\";\r\nimport { Disposer } from \"../core/utils/Disposer\";\r\nimport { MouseCursorStyle } from \"../core/interaction/Mouse\";\r\nimport { defaultRules, ResponsiveBreakpoints } from \"../core/utils/Responsive\";\r\nimport { Scrollbar } from \"../core/elements/Scrollbar\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[Legend]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar LegendDataItem = /** @class */ (function (_super) {\r\n __extends(LegendDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function LegendDataItem() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * @ignore\r\n */\r\n _this.childrenCreated = false;\r\n _this.className = \"LegendDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(LegendDataItem.prototype, \"label\", {\r\n /**\r\n * A legend item's [[Label]] element.\r\n *\r\n * @return Label\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._label) {\r\n var label_1 = this.component.labels.create();\r\n this._label = label_1;\r\n this.addSprite(label_1);\r\n this._disposers.push(label_1);\r\n label_1.parent = this.itemContainer;\r\n this._disposers.push(new Disposer(function () {\r\n if ($type.hasValue(_this.component)) {\r\n _this.component.labels.removeValue(label_1);\r\n }\r\n }));\r\n }\r\n return this._label;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LegendDataItem.prototype, \"color\", {\r\n /**\r\n * @return Main color\r\n */\r\n get: function () {\r\n return this.properties.color;\r\n },\r\n /**\r\n * Main color of legend data item.\r\n *\r\n * This is set by the target element this legend item represents, like\r\n * a Series or a Slice.\r\n *\r\n * It can be used to derive a color in legend's sub-items, like label:\r\n *\r\n * ```TypeScript\r\n * chart.legend.labels.template.text = \"[{color}]{name}[/]\";\r\n * ```\r\n * ```JavaScript\r\n * chart.legend.labels.template.text = \"[{color}]{name}[/]\";\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"legend\": {\r\n * // ...\r\n * \"labels\": {\r\n * \"text\": \"[{color}]{name}[/]\"\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/legend/#Legend_labels} For more information about configuring legend labels.\r\n * @param value Main color\r\n */\r\n set: function (value) {\r\n this.setProperty(\"color\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LegendDataItem.prototype, \"valueLabel\", {\r\n /**\r\n * A legend item's [[Label]] element for \"value label\".\r\n *\r\n * @return Label\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._valueLabel) {\r\n var valueLabel_1 = this.component.valueLabels.create();\r\n this._valueLabel = valueLabel_1;\r\n this.addSprite(valueLabel_1);\r\n this._disposers.push(valueLabel_1);\r\n valueLabel_1.parent = this.itemContainer;\r\n this._disposers.push(new Disposer(function () {\r\n if ($type.hasValue(_this.component)) {\r\n _this.component.valueLabels.removeValue(valueLabel_1);\r\n }\r\n }));\r\n }\r\n return this._valueLabel;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LegendDataItem.prototype, \"itemContainer\", {\r\n /**\r\n * A reference to the main [[Container]] that holds legend item's elements:\r\n * marker and labels.\r\n *\r\n * @return Item container\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._itemContainer) {\r\n var component_1 = this.component;\r\n var itemContainer_1 = component_1.itemContainers.create();\r\n itemContainer_1.parent = component_1;\r\n this._itemContainer = itemContainer_1;\r\n this.addSprite(itemContainer_1);\r\n this._disposers.push(itemContainer_1);\r\n // Add click/tap event to toggle item\r\n if (itemContainer_1.togglable) {\r\n itemContainer_1.events.on(\"toggled\", function (ev) {\r\n component_1.toggleDataItem(ev.target.dataItem);\r\n }, undefined, false);\r\n }\r\n // Add focus event so that we can track which object is currently in focus\r\n // for keyboard toggling\r\n if (itemContainer_1.focusable) {\r\n itemContainer_1.events.on(\"hit\", function (ev) {\r\n // We need this here in order to reset focused item when it is clicked\r\n // normally so that it is not toggled by ENTER afterwards\r\n component_1.focusedItem = undefined;\r\n }, undefined, false);\r\n itemContainer_1.events.on(\"focus\", function (ev) {\r\n component_1.focusedItem = ev.target.dataItem;\r\n }, undefined, false);\r\n itemContainer_1.events.on(\"blur\", function (ev) {\r\n component_1.focusedItem = undefined;\r\n }, undefined, false);\r\n }\r\n this._disposers.push(new Disposer(function () {\r\n if ($type.hasValue(_this.component)) {\r\n _this.component.itemContainers.removeValue(itemContainer_1);\r\n }\r\n }));\r\n if (this.dataContext.uidAttr) {\r\n itemContainer_1.readerControls = this.dataContext.uidAttr();\r\n itemContainer_1.readerLabelledBy = this.dataContext.uidAttr();\r\n }\r\n var sprite = this.dataContext;\r\n if ((sprite instanceof DataItem || sprite instanceof Sprite) && !sprite.isDisposed()) {\r\n var visibilitychanged = function (ev) {\r\n itemContainer_1.readerChecked = ev.visible;\r\n itemContainer_1.events.disableType(\"toggled\");\r\n itemContainer_1.isActive = !ev.visible;\r\n itemContainer_1.events.enableType(\"toggled\");\r\n };\r\n sprite.addDisposer(new Disposer(function () {\r\n if (_this.component) {\r\n _this.component.dataItems.remove(_this);\r\n }\r\n }));\r\n if (sprite instanceof Sprite) {\r\n itemContainer_1.addDisposer(sprite.events.on(\"visibilitychanged\", visibilitychanged, undefined, false));\r\n itemContainer_1.addDisposer(sprite.events.on(\"hidden\", function (ev) {\r\n itemContainer_1.readerChecked = false;\r\n itemContainer_1.events.disableType(\"toggled\");\r\n itemContainer_1.isActive = true;\r\n itemContainer_1.events.enableType(\"toggled\");\r\n }, undefined, false));\r\n itemContainer_1.addDisposer(sprite.events.on(\"shown\", function (ev) {\r\n itemContainer_1.readerChecked = true;\r\n itemContainer_1.events.disableType(\"toggled\");\r\n itemContainer_1.isActive = false;\r\n itemContainer_1.events.enableType(\"toggled\");\r\n }, undefined, false));\r\n }\r\n else {\r\n itemContainer_1.addDisposer(sprite.events.on(\"visibilitychanged\", visibilitychanged, undefined, false));\r\n }\r\n }\r\n }\r\n return this._itemContainer;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LegendDataItem.prototype, \"marker\", {\r\n /**\r\n * A [[Container]] that holds legend item's marker element.\r\n *\r\n * @return Marker\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._marker) {\r\n var marker_1 = this.component.markers.create();\r\n this._marker = marker_1;\r\n marker_1.parent = this.itemContainer;\r\n this.addSprite(marker_1);\r\n this._disposers.push(marker_1);\r\n this._disposers.push(new Disposer(function () {\r\n if ($type.hasValue(_this.component)) {\r\n _this.component.markers.removeValue(marker_1);\r\n }\r\n }));\r\n }\r\n return this._marker;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return LegendDataItem;\r\n}(DataItem));\r\nexport { LegendDataItem };\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a class that carries legend settings.\r\n *\r\n * A legend might change its settings dynamically. Legend can also be shared\r\n * by several elements, requiring different settings.\r\n *\r\n * Having legend's settings in a separate object is a good way to \"hot swap\"\r\n * a set of settings for the legend.\r\n */\r\nvar LegendSettings = /** @class */ (function () {\r\n function LegendSettings() {\r\n /**\r\n * Should marker be created for each legend item.\r\n */\r\n this.createMarker = true;\r\n }\r\n return LegendSettings;\r\n}());\r\nexport { LegendSettings };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * [[Legend]] class is used to create legend for the chart.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/legend/} for Legend documentation\r\n * @see {@link ILegendEvents} for a list of available events\r\n * @see {@link ILegendAdapters} for a list of available Adapters\r\n */\r\nvar Legend = /** @class */ (function (_super) {\r\n __extends(Legend, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Legend() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Legend\";\r\n // Set defaults\r\n _this.layout = \"grid\";\r\n _this.setPropertyValue(\"useDefaultMarker\", false);\r\n _this.setPropertyValue(\"scrollable\", false);\r\n _this.setPropertyValue(\"contentAlign\", \"center\");\r\n // Create a template container and list for legend items\r\n var itemContainer = new Container();\r\n itemContainer.applyOnClones = true;\r\n itemContainer.padding(8, 0, 8, 0);\r\n itemContainer.margin(0, 10, 0, 10);\r\n itemContainer.layout = \"horizontal\";\r\n itemContainer.clickable = true;\r\n itemContainer.focusable = true;\r\n itemContainer.role = \"switch\";\r\n itemContainer.togglable = true;\r\n itemContainer.cursorOverStyle = MouseCursorStyle.pointer;\r\n itemContainer.background.fillOpacity = 0; // creates hit area\r\n // Create container list using item template we just created\r\n _this.itemContainers = new ListTemplate(itemContainer);\r\n _this._disposers.push(new ListDisposer(_this.itemContainers));\r\n _this._disposers.push(_this.itemContainers.template);\r\n // Set up global keyboard events for toggling elements\r\n _this._disposers.push(getInteraction().body.events.on(\"keyup\", function (ev) {\r\n if (keyboard.isKey(ev.event, \"enter\") && _this.focusedItem) {\r\n var focusedItem = _this.focusedItem;\r\n var target = focusedItem.itemContainer;\r\n if (target.togglable) {\r\n _this.toggleDataItem(focusedItem);\r\n }\r\n else if (target.clickable && target.events.isEnabled(\"hit\")) {\r\n target.dispatchImmediately(\"hit\", { event: ev });\r\n // We need this here because \"hit\" event resets `this.focusedItem`\r\n // And we need it here\r\n _this.focusedItem = focusedItem;\r\n }\r\n }\r\n }, _this));\r\n var interfaceColors = new InterfaceColorSet();\r\n // Create a template container and list for the a marker\r\n var marker = new Container();\r\n marker.width = 23;\r\n marker.height = 23;\r\n marker.interactionsEnabled = false;\r\n marker.applyOnClones = true;\r\n marker.setStateOnChildren = true;\r\n marker.background.fillOpacity = 0;\r\n marker.background.strokeOpacity = 0;\r\n marker.propertyFields.fill = \"fill\";\r\n marker.valign = \"middle\";\r\n var disabledColor = interfaceColors.getFor(\"disabledBackground\");\r\n marker.events.on(\"childadded\", function (event) {\r\n var child = event.newValue;\r\n var activeState = child.states.create(\"active\");\r\n activeState.properties.stroke = disabledColor;\r\n activeState.properties.fill = disabledColor;\r\n });\r\n _this.markers = new ListTemplate(marker);\r\n _this._disposers.push(new ListDisposer(_this.markers));\r\n _this._disposers.push(_this.markers.template);\r\n // Create a legend background element\r\n var rectangle = marker.createChild(RoundedRectangle);\r\n rectangle.width = percent(100);\r\n rectangle.height = percent(100);\r\n rectangle.applyOnClones = true;\r\n rectangle.propertyFields.fill = \"fill\"; //othrwise old edge doesn't like as the same pattern is set both on parent and child https://codepen.io/team/amcharts/pen/72d7a98f3fb811d3118795220ff63182\r\n rectangle.strokeOpacity = 0;\r\n // Create a template container and list for item labels\r\n var label = new Label();\r\n label.text = \"{name}\";\r\n label.margin(0, 5, 0, 5);\r\n label.valign = \"middle\";\r\n label.applyOnClones = true;\r\n label.states.create(\"active\").properties.fill = interfaceColors.getFor(\"disabledBackground\");\r\n _this.labels = new ListTemplate(label);\r\n _this._disposers.push(new ListDisposer(_this.labels));\r\n _this._disposers.push(_this.labels.template);\r\n label.interactionsEnabled = false;\r\n label.truncate = true;\r\n label.fullWords = false;\r\n // Create a template container and list for item value labels\r\n var valueLabel = new Label();\r\n valueLabel.margin(0, 5, 0, 0);\r\n valueLabel.valign = \"middle\";\r\n valueLabel.width = 50; // to avoid rearranging legend entries when value changes.\r\n valueLabel.align = \"right\";\r\n valueLabel.textAlign = \"end\";\r\n valueLabel.applyOnClones = true;\r\n valueLabel.states.create(\"active\").properties.fill = interfaceColors.getFor(\"disabledBackground\");\r\n valueLabel.interactionsEnabled = false;\r\n _this.valueLabels = new ListTemplate(valueLabel);\r\n _this._disposers.push(new ListDisposer(_this.valueLabels));\r\n _this._disposers.push(_this.valueLabels.template);\r\n _this.position = \"bottom\"; // don't use setPropertyValue here!\r\n // Create a state for disabled legend items\r\n itemContainer.states.create(\"active\");\r\n itemContainer.setStateOnChildren = true;\r\n // Apply accessibility settings\r\n _this.role = \"group\";\r\n _this.events.on(\"layoutvalidated\", _this.handleScrollbar, _this, false);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n Legend.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Legend\");\r\n }\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n Legend.prototype.createDataItem = function () {\r\n return new LegendDataItem();\r\n };\r\n /**\r\n * [validateDataElements description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n Legend.prototype.validateDataElements = function () {\r\n if (this.scrollbar) {\r\n this.scrollbar.start = 0;\r\n this.scrollbar.end = 1;\r\n }\r\n _super.prototype.validateDataElements.call(this);\r\n };\r\n /**\r\n * [validateDataElement description]\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n * @todo Description\r\n * @todo Figure out how to update appearance of legend item without losing focus\r\n * @todo Update legend marker appearance as apperance of related series changes\r\n */\r\n Legend.prototype.validateDataElement = function (dataItem) {\r\n _super.prototype.validateDataElement.call(this, dataItem);\r\n // Get data item (legend item's) container\r\n var container = dataItem.itemContainer;\r\n var marker = dataItem.marker;\r\n $utils.used(dataItem.label);\r\n var valueLabel = dataItem.valueLabel;\r\n // Set parent and update current state\r\n container.readerChecked = dataItem.dataContext.visible;\r\n // Tell series its legend data item\r\n dataItem.dataContext.legendDataItem = dataItem;\r\n var tempMaxWidth = dataItem.label.maxWidth;\r\n if (!(dataItem.label.width instanceof Percent)) {\r\n dataItem.label.width = undefined;\r\n }\r\n if (tempMaxWidth > 0) {\r\n dataItem.label.maxWidth = tempMaxWidth;\r\n }\r\n if (valueLabel.align == \"right\") {\r\n valueLabel.width = undefined;\r\n }\r\n var legendSettings = dataItem.dataContext.legendSettings;\r\n // If we are not using default markers, create a unique legend marker based\r\n // on the data item type\r\n var dataContext = dataItem.dataContext;\r\n if (dataContext.createLegendMarker && (!this.useDefaultMarker || !(dataContext instanceof Sprite))) {\r\n if (!dataItem.childrenCreated) {\r\n dataContext.createLegendMarker(marker);\r\n dataItem.childrenCreated = true;\r\n }\r\n }\r\n else {\r\n this.markers.template.propertyFields.fill = undefined;\r\n }\r\n if (dataContext.updateLegendValue) {\r\n dataContext.updateLegendValue(); // this solves issue with external legend, as legend is created after chart updates legend values\r\n }\r\n if (dataContext.component && dataContext.component.updateLegendValue) {\r\n dataContext.component.updateLegendValue(dataContext);\r\n }\r\n if (valueLabel.invalid) {\r\n valueLabel.validate();\r\n }\r\n if (valueLabel.text == \"\" || valueLabel.text == undefined) {\r\n valueLabel.__disabled = true;\r\n }\r\n else {\r\n valueLabel.__disabled = false;\r\n }\r\n if (legendSettings && (legendSettings.itemValueText != undefined || legendSettings.valueText != undefined)) {\r\n valueLabel.__disabled = false;\r\n }\r\n var visible = dataItem.dataContext.visible;\r\n if (visible === undefined) {\r\n visible = true;\r\n }\r\n visible = $type.toBoolean(visible);\r\n dataItem.dataContext.visible = visible;\r\n container.events.disableType(\"toggled\");\r\n container.isActive = !visible;\r\n if (container.isActive) {\r\n container.setState(\"active\", 0);\r\n }\r\n else {\r\n container.setState(\"default\", 0);\r\n }\r\n container.events.enableType(\"toggled\");\r\n };\r\n Legend.prototype.afterDraw = function () {\r\n var _this = this;\r\n var maxWidth = this.getPropertyValue(\"maxWidth\");\r\n var maxLabelWidth = 0;\r\n this.labels.each(function (label) {\r\n if (label.invalid) {\r\n label.maxWidth = undefined;\r\n label.validate();\r\n }\r\n if (label.measuredWidth + label.pixelMarginLeft + label.pixelMarginRight > maxLabelWidth) {\r\n maxLabelWidth = label.measuredWidth + label.pixelMarginLeft + label.pixelMarginRight;\r\n }\r\n });\r\n var maxValueLabelWidth = 0;\r\n this.valueLabels.each(function (label) {\r\n if (label.invalid) {\r\n label.validate();\r\n }\r\n if (label.measuredWidth + label.pixelMarginLeft + label.pixelMarginRight > maxValueLabelWidth) {\r\n maxValueLabelWidth = label.measuredWidth + label.pixelMarginLeft + label.pixelMarginRight;\r\n }\r\n });\r\n var maxMarkerWidth = 0;\r\n this.markers.each(function (marker) {\r\n if (marker.invalid) {\r\n marker.validate();\r\n }\r\n if (marker.measuredWidth + marker.pixelMarginLeft + marker.pixelMarginRight > maxMarkerWidth) {\r\n maxMarkerWidth = marker.measuredWidth + marker.pixelMarginLeft + marker.pixelMarginRight;\r\n }\r\n });\r\n var itemContainer = this.itemContainers.template;\r\n var margin = itemContainer.pixelMarginRight + itemContainer.pixelMarginLeft;\r\n var maxAdjustedLabelWidth;\r\n var trueMaxWidth = maxLabelWidth + maxValueLabelWidth + maxMarkerWidth;\r\n if (!$type.isNumber(maxWidth)) {\r\n maxAdjustedLabelWidth = maxLabelWidth;\r\n }\r\n else {\r\n maxWidth = maxWidth - margin;\r\n if (maxWidth > trueMaxWidth) {\r\n maxWidth = trueMaxWidth;\r\n }\r\n maxAdjustedLabelWidth = maxWidth - maxMarkerWidth - maxValueLabelWidth;\r\n }\r\n this.labels.each(function (label) {\r\n if (_this.valueLabels.template.align == \"right\" || label.measuredWidth > maxAdjustedLabelWidth) {\r\n if (!(label.width instanceof Percent)) {\r\n label.width = Math.min(label.maxWidth, maxAdjustedLabelWidth - label.pixelMarginLeft - label.pixelMarginRight);\r\n label.maxWidth = label.width;\r\n }\r\n }\r\n });\r\n if (this.valueLabels.template.align == \"right\") {\r\n this.valueLabels.each(function (valueLabel) {\r\n valueLabel.width = maxValueLabelWidth - valueLabel.pixelMarginRight - valueLabel.pixelMarginLeft;\r\n });\r\n }\r\n _super.prototype.afterDraw.call(this);\r\n };\r\n Legend.prototype.handleScrollbar = function () {\r\n var scrollbar = this.scrollbar;\r\n if (this.scrollable && scrollbar) {\r\n scrollbar.height = this.measuredHeight;\r\n scrollbar.x = this.measuredWidth - scrollbar.pixelWidth - scrollbar.pixelMarginLeft;\r\n if (this.contentHeight > this.measuredHeight) {\r\n scrollbar.visible = true;\r\n scrollbar.thumb.height = scrollbar.height * this.measuredHeight / this.contentHeight;\r\n this.paddingRight = scrollbar.pixelWidth + scrollbar.pixelMarginLeft + +scrollbar.pixelMarginRight;\r\n }\r\n else {\r\n scrollbar.visible = false;\r\n }\r\n this.updateMasks();\r\n }\r\n };\r\n Object.defineProperty(Legend.prototype, \"position\", {\r\n /**\r\n * @return Position\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"position\");\r\n },\r\n /**\r\n * Position of the legend.\r\n *\r\n * Options: \"left\", \"right\", \"top\", \"bottom\" (default), or \"absolute\".\r\n *\r\n * IMPORTANT: [[MapChart]] will ignore this setting, as it is using different\r\n * layout structure than other charts.\r\n *\r\n * To position legend in [[MapChart]] set legend's `align` (`\"left\"` or\r\n * `\"right\"`) and `valign` (`\"top\"` or `\"bottom\"`) properties instead.\r\n *\r\n * @default \"bottom\"\r\n * @param value Position\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"position\", value)) {\r\n if (value == \"left\" || value == \"right\") {\r\n this.margin(10, 5, 10, 10);\r\n this.valign = \"middle\";\r\n this.contentAlign = \"none\";\r\n this.valueLabels.template.align = \"right\";\r\n if (!$type.isNumber(this.maxColumns)) {\r\n this.maxColumns = 1;\r\n }\r\n this.width = undefined;\r\n this.maxWidth = 220;\r\n }\r\n else {\r\n this.maxColumns = undefined;\r\n this.width = percent(100);\r\n this.valueLabels.template.align = \"left\";\r\n }\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Legend.prototype, \"useDefaultMarker\", {\r\n /**\r\n * @return Use default marker?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"useDefaultMarker\");\r\n },\r\n /**\r\n * Should legend try to mirror the look of the related item when building\r\n * the marker for legend item?\r\n *\r\n * If set to `false` it will try to make the marker look like its related\r\n * item.\r\n *\r\n * E.g. if an item is for a Line Series, it will display a line of the\r\n * same thickness, color, and will use the same bullets if series have them.\r\n *\r\n * If set to `true`, all markers will be shown as squares, regardless of te\r\n * series type.\r\n *\r\n * @default false\r\n * @param value Use default marker?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"useDefaultMarker\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Legend.prototype, \"scrollable\", {\r\n /**\r\n * @return Legend Scrollable?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"scrollable\");\r\n },\r\n /**\r\n * If set to `true` the Legend will display a scrollbar if its contents do\r\n * not fit into its `maxHeight`.\r\n *\r\n * Please note that `maxHeight` is automatically set for Legend when its\r\n * `position` is set to `\"left\"` or `\"right\"`.\r\n *\r\n * @default false\r\n * @since 4.8.0\r\n * @param value Legend Scrollable?\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"scrollable\", value, true)) {\r\n if (value) {\r\n var scrollbar = this.createChild(Scrollbar);\r\n this.scrollbar = scrollbar;\r\n scrollbar.isMeasured = false;\r\n scrollbar.orientation = \"vertical\";\r\n scrollbar.endGrip.__disabled = true;\r\n scrollbar.startGrip.__disabled = true;\r\n scrollbar.visible = false;\r\n scrollbar.marginLeft = 5;\r\n this._mouseWheelDisposer = this.events.on(\"wheel\", this.handleWheel, this, false);\r\n this._disposers.push(this._mouseWheelDisposer);\r\n this._disposers.push(scrollbar.events.on(\"rangechanged\", this.updateMasks, this, false));\r\n }\r\n else {\r\n if (this._mouseWheelDisposer) {\r\n this._mouseWheelDisposer.dispose();\r\n if (this.scrollbar) {\r\n this.scrollbar.dispose();\r\n this.scrollbar = undefined;\r\n }\r\n }\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Handles mouse wheel scrolling of legend.\r\n *\r\n * @param event Event\r\n */\r\n Legend.prototype.handleWheel = function (event) {\r\n var shift = event.shift.y;\r\n var scrollbar = this.scrollbar;\r\n if (scrollbar) {\r\n var ds = (shift / 1000 * this.measuredHeight / this.contentHeight);\r\n var delta = scrollbar.end - scrollbar.start;\r\n if (shift > 0) {\r\n scrollbar.start = $math.max(0, scrollbar.start - ds);\r\n scrollbar.end = scrollbar.start + delta;\r\n }\r\n else {\r\n scrollbar.end = $math.min(1, scrollbar.end - ds);\r\n scrollbar.start = scrollbar.end - delta;\r\n }\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Legend.prototype.updateMasks = function () {\r\n var _this = this;\r\n if (this.scrollbar) {\r\n this.itemContainers.each(function (itemContainer) {\r\n itemContainer.dy = -_this.scrollbar.thumb.pixelY * _this.contentHeight / _this.measuredHeight;\r\n itemContainer.maskRectangle = { x: 0, y: -itemContainer.dy, width: _this.measuredWidth, height: _this.measuredHeight };\r\n });\r\n }\r\n };\r\n /**\r\n * Toggles a legend item.\r\n *\r\n * @ignore Exclude from docs\r\n * @param item Legend item\r\n * @todo Maybe do it with togglable instead\r\n */\r\n Legend.prototype.toggleDataItem = function (item) {\r\n var dataContext = item.dataContext;\r\n if (!dataContext.visible || dataContext.isHiding || (dataContext instanceof Sprite && dataContext.isHidden)) {\r\n item.color = item.colorOrig;\r\n item.itemContainer.isActive = false;\r\n if (dataContext.hidden === true) {\r\n dataContext.hidden = false;\r\n }\r\n if (dataContext.show) {\r\n dataContext.show();\r\n }\r\n else {\r\n dataContext.visible = true;\r\n }\r\n this.svgContainer.readerAlert(this.language.translate(\"%1 shown\", this.language.locale, item.label.readerTitle));\r\n }\r\n else {\r\n item.itemContainer.isActive = true;\r\n if (dataContext.hide) {\r\n dataContext.hide();\r\n }\r\n else {\r\n dataContext.visible = false;\r\n }\r\n this.svgContainer.readerAlert(this.language.translate(\"%1 hidden\", this.language.locale, item.label.readerTitle));\r\n item.color = new InterfaceColorSet().getFor(\"disabledBackground\");\r\n }\r\n };\r\n Object.defineProperty(Legend.prototype, \"preloader\", {\r\n /**\r\n * Override preloader method so that legend does not accidentally show its\r\n * own preloader.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Always `undefined`\r\n */\r\n get: function () {\r\n return;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * [handleDataItemPropertyChange description]\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Legend.prototype.handleDataItemPropertyChange = function (dataItem, name) {\r\n dataItem.valueLabel.invalidate();\r\n dataItem.label.invalidate();\r\n };\r\n return Legend;\r\n}(Component));\r\nexport { Legend };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Legend\"] = Legend;\r\n/**\r\n * Add default responsive rules\r\n */\r\n/**\r\n * Move legend to below the chart if chart is narrow\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.widthXS,\r\n state: function (target, stateId) {\r\n if (target instanceof Legend && (target.position == \"left\" || target.position == \"right\")) {\r\n var state = target.states.create(stateId);\r\n state.properties.position = \"bottom\";\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n/**\r\n * Move legend to the right if chart is very short\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.heightXS,\r\n state: function (target, stateId) {\r\n if (target instanceof Legend && (target.position == \"top\" || target.position == \"bottom\")) {\r\n var state = target.states.create(stateId);\r\n state.properties.position = \"right\";\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n/**\r\n * Disable legend altogether on small charts\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.isXS,\r\n state: function (target, stateId) {\r\n if (target instanceof Legend) {\r\n var state = target.states.create(stateId);\r\n state.properties.disabled = true;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n//# sourceMappingURL=Legend.js.map","/**\r\n * Functionality for any series-based elements, like Line Series (graphs),\r\n * Pie slice lists, etc.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Component } from \"../../core/Component\";\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { List, ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { Dictionary, DictionaryDisposer } from \"../../core/utils/Dictionary\";\r\nimport { DataItem } from \"../../core/DataItem\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { Tooltip } from \"../../core/elements/Tooltip\";\r\nimport { Bullet } from \"../elements/Bullet\";\r\nimport { LegendSettings } from \"../Legend\";\r\nimport { options } from \"../../core/Options\";\r\nimport { Color } from \"../../core/utils/Color\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $ease from \"../../core/utils/Ease\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $object from \"../../core/utils/Object\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport * as $colors from \"../../core/utils/Colors\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[Series]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar SeriesDataItem = /** @class */ (function (_super) {\r\n __extends(SeriesDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function SeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"SeriesDataItem\";\r\n //@todo Should we make `bullets` list disposable?\r\n //this._disposers.push(new DictionaryDisposer(this.bullets));\r\n _this.values.value = {};\r\n _this.values.value = {};\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(SeriesDataItem.prototype, \"bullets\", {\r\n /**\r\n * A dictionary of data items bullets, where key is uid of a bullet template.\r\n */\r\n get: function () {\r\n if (!this._bullets) {\r\n this._bullets = new Dictionary();\r\n this._disposers.push(new DictionaryDisposer(this._bullets));\r\n }\r\n return this._bullets;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Destroys this object and all related data.\r\n */\r\n SeriesDataItem.prototype.dispose = function () {\r\n this.bullets.clear();\r\n _super.prototype.dispose.call(this);\r\n };\r\n Object.defineProperty(SeriesDataItem.prototype, \"value\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.values.value.value;\r\n },\r\n /**\r\n * data items's numeric value.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"value\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return SeriesDataItem;\r\n}(DataItem));\r\nexport { SeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines base class for any kind of serial data.\r\n *\r\n * @see {@link ISeriesEvents} for a list of available Events\r\n * @see {@link ISeriesAdapters} for a list of available Adapters\r\n * @todo Separate axis-related stuff to some other class so that MapSeries would not have unrelated stuff\r\n */\r\nvar Series = /** @class */ (function (_super) {\r\n __extends(Series, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Series() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Should this series excluded from the axis scale calculations?\r\n *\r\n * @default false\r\n */\r\n _this._ignoreMinMax = false;\r\n /**\r\n * Should series' bullets?\r\n *\r\n * @default true\r\n */\r\n _this._showBullets = true;\r\n /**\r\n * Settings for the appearance of the related legend items.\r\n */\r\n _this.legendSettings = new LegendSettings();\r\n /**\r\n * Lowest overal values by type.\r\n */\r\n _this._tmin = new Dictionary();\r\n /**\r\n * Highest overal values by type.\r\n */\r\n _this._tmax = new Dictionary();\r\n /**\r\n * Lowest values in current selection by type.\r\n */\r\n _this._smin = new Dictionary();\r\n /**\r\n * Highest values in current selection by type.\r\n */\r\n _this._smax = new Dictionary();\r\n /**\r\n * [dataItemsByAxis description]\r\n *\r\n * Both by category and date.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n _this.dataItemsByAxis = new Dictionary();\r\n /**\r\n * Normally series items are focusable using keyboard, so that people can\r\n * select them with a TAB key. However, if there are a lot of data points on\r\n * screen it might be long and useless to tab through all o fthem.\r\n *\r\n * This is where `skipFocusThreshold` comes in. If there are more items than\r\n * the value set here, we will not make those focusable and rather let screen\r\n * reader software rely on the series summary, or authors provide alternative\r\n * detailed information display, such as HTML table.\r\n *\r\n * Different series might have different threshold defaults.\r\n */\r\n _this.skipFocusThreshold = 20;\r\n /**\r\n * Used to indicate if `itemReaderText` was changed \"from the outside\".\r\n */\r\n _this._itemReaderTextChanged = false;\r\n /**\r\n * Most of the series use absolute values. However sometimes various\r\n * calculated percent values are need, e.g. item's percent representation\r\n * across all values in series, etc.\r\n *\r\n * It's a resource-intensive operation, so it is disabled by default.\r\n *\r\n * If you need percents to be calculated, e.g. for showing them in tooltips,\r\n * or creating 100% stacks, this setting needs to be set to `true`.\r\n *\r\n * NOTE: `PieChart`, which relies on slice percentages, has this\r\n * automatically set to `true`.\r\n *\r\n * @default false\r\n */\r\n _this.calculatePercent = false;\r\n /**\r\n * When `calculatePercent` is enabled and data item's percent value is\r\n * calculated, last item's real value is used instead of its working value.\r\n *\r\n * This is done for the animations when last item in series (e.g. slice in\r\n * a `PieSeries`) is hidden or shown. (if we would use real value, the\r\n * calculated percent would always be 100%).\r\n *\r\n * Sometimes there is a need (e.g. for drill-down Sunburst) to disable this\r\n * hack by setting `usePercentHack` to `false`.\r\n *\r\n * @since 4.9.13\r\n * @default true\r\n */\r\n _this.usePercentHack = true;\r\n /**\r\n * Specifies if series should be automatically disposed when removing from\r\n * chart's `series` list.\r\n *\r\n * @default true\r\n */\r\n _this.autoDispose = true;\r\n /**\r\n * When chart/series' data is processed, all kinds of derivative values are\r\n * calculated. E.g. sum, min, max, change, etc. This is a potentially\r\n * time-consuming operation, especially prominent in data-heavy charts.\r\n *\r\n * If your chart does not need those values, and you have a lot of data,\r\n * setting this to `true` might give a dramatic increase in initial chart\r\n * load speed.\r\n *\r\n * Please note, regular column and line series usage scenarios do not\r\n * require derivative values. Those come into play only when you do advanced\r\n * functionality like coloring segments of charts in different colors\r\n * depending on change between open and close values, have stacked series, or\r\n * display any of the derived values, like percent, in tooltips or bullets.\r\n *\r\n * @default false\r\n */\r\n _this.simplifiedProcessing = false;\r\n if (_this.constructor === Series) {\r\n throw new Error(\"'Series' cannot be instantiated directly. Please use a specific series type.\");\r\n }\r\n _this.className = \"Series\";\r\n _this.isMeasured = false;\r\n _this.layout = \"none\";\r\n _this.shouldClone = false;\r\n _this.setPropertyValue(\"hidden\", false);\r\n _this.axisRanges = new List();\r\n _this.axisRanges.events.on(\"inserted\", _this.processAxisRange, _this, false);\r\n _this.minBulletDistance = 0; // otherwise we'll have a lot of cases when people won't see bullets and think it's a bug\r\n _this.mainContainer = _this.createChild(Container);\r\n _this.mainContainer.shouldClone = false;\r\n _this.mainContainer.mask = _this.createChild(Sprite);\r\n _this._disposers.push(_this.mainContainer);\r\n // all bullets should go on top of lines/fills. So we add a separate container for bullets and later set it's parent to chart.bulletsContainer\r\n var bulletsContainer = _this.mainContainer.createChild(Container);\r\n _this._shouldBeReady.push(bulletsContainer);\r\n bulletsContainer.shouldClone = false;\r\n bulletsContainer.layout = \"none\";\r\n bulletsContainer.virtualParent = _this;\r\n _this._disposers.push(bulletsContainer);\r\n _this.bulletsContainer = bulletsContainer;\r\n _this.tooltip = new Tooltip();\r\n _this.tooltip.virtualParent = _this;\r\n _this._disposers.push(_this.tooltip);\r\n _this.hiddenState.transitionEasing = $ease.cubicIn;\r\n // this data item holds sums, averages, etc\r\n _this.dataItem = _this.createDataItem();\r\n _this._disposers.push(_this.dataItem);\r\n _this.dataItem.component = _this;\r\n // Apply accessibility\r\n _this.role = \"group\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * We need this here so that class names can be applied to bullets container.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Series.prototype.applyTheme = function () {\r\n _super.prototype.applyTheme.call(this);\r\n if (options.autoSetClassName && this.bulletsContainer) {\r\n this.bulletsContainer.className = this.className + \"-bullets\";\r\n this.bulletsContainer.setClassName();\r\n }\r\n };\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n Series.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Series\");\r\n }\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n Series.prototype.createDataItem = function () {\r\n return new SeriesDataItem();\r\n };\r\n Object.defineProperty(Series.prototype, \"chart\", {\r\n /**\r\n * @return Chart\r\n */\r\n get: function () {\r\n return this._chart;\r\n },\r\n /**\r\n * Chart series is used on.\r\n *\r\n * @param value Chart\r\n */\r\n set: function (value) {\r\n this._chart = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Positions bullet.\r\n *\r\n * @param bullet Sprite\r\n */\r\n Series.prototype.positionBullet = function (bullet) {\r\n // Placeholder method for extending classes to override.\r\n };\r\n /**\r\n * Decorates newly created bullet after it has been instert into the list.\r\n *\r\n * @param event List event\r\n * @todo investigate why itemReaderText is undefined\r\n */\r\n Series.prototype.processBullet = function (event) {\r\n var _this = this;\r\n var bullet = event.newValue;\r\n bullet.isTemplate = true;\r\n // Add accessibility options to bullet\r\n // If there are relatively few bullets, make them focusable\r\n this.events.once(\"datavalidated\", function (ev) {\r\n if (_this.itemsFocusable()) {\r\n bullet.focusable = true;\r\n }\r\n });\r\n this.invalidate();\r\n };\r\n /**\r\n * removes bullets\r\n *\r\n * @param event List event\r\n */\r\n Series.prototype.removeBullet = function (event) {\r\n var bullet = event.oldValue;\r\n this.dataItems.each(function (dataItem) {\r\n var eachBullet = dataItem.bullets.getKey(bullet.uid);\r\n if (eachBullet) {\r\n eachBullet.dispose();\r\n }\r\n });\r\n this.invalidate();\r\n };\r\n /**\r\n * Validates data items.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Series.prototype.validateDataItems = function () {\r\n _super.prototype.validateDataItems.call(this);\r\n this.processValues(false);\r\n };\r\n /**\r\n * Returns first value for the specific key in the series.\r\n *\r\n * @param key Key\r\n * @return Value\r\n * @todo Description\r\n * @todo Convert to propert object property iterator\r\n */\r\n Series.prototype.getFirstValue = function (key, startIndex) {\r\n // find first\r\n /*\r\n return $iter.findMap(this.dataItems.iterator(), (dataItem) => {\r\n for (let key in dataItem.values) {\r\n if ($object.hasKey(dataItem.values, key)) {\r\n let value: number = dataItem.values[key].workingValue;\r\n if ($type.isNumber(value)) {\r\n return value;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n });*/\r\n //if (startIndex > 0 && startIndex < this.dataItems.length - 1) {\r\n //startIndex++;\r\n //}\r\n for (var i = startIndex; i >= 0; i--) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n var value = dataItem.getActualWorkingValue(key);\r\n if ($type.isNumber(value)) {\r\n return value;\r\n }\r\n }\r\n return null;\r\n };\r\n /**\r\n * Returns first value for the specific key in the series.\r\n *\r\n * @param key Key\r\n * @return Value\r\n * @todo Description\r\n * @todo Convert to propert object property iterator\r\n */\r\n Series.prototype.getAbsoluteFirstValue = function (key) {\r\n for (var i = 0; i < this.dataItems.length; i++) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n var value = dataItem.values[key].value;\r\n if ($type.isNumber(value)) {\r\n return value;\r\n }\r\n }\r\n return null;\r\n };\r\n /**\r\n * [rangeChangeUpdate description]\r\n *\r\n * @todo Description\r\n */\r\n Series.prototype.rangeChangeUpdate = function () {\r\n _super.prototype.rangeChangeUpdate.call(this);\r\n this.processValues(true);\r\n };\r\n /**\r\n * [processValues description]\r\n *\r\n * @todo Description\r\n * @todo Convert to propert object property iterator\r\n * @param dataItems [description]\r\n */\r\n Series.prototype.processValues = function (working) {\r\n var _this = this;\r\n if (!this.simplifiedProcessing) {\r\n var dataItems = this.dataItems;\r\n var count_1 = {};\r\n var sum_1 = {};\r\n var absoluteSum_1 = {};\r\n var low_1 = {};\r\n var high_1 = {};\r\n var open_1 = {};\r\n var close_1 = {};\r\n var previous_1 = {};\r\n var first_1 = {};\r\n var absoluteFirst_1 = {};\r\n //let duration: number = 0; // todo: check if series uses selection.change or selection.change.percent and set duration to interpolationduration\r\n var startIndex_1 = $math.max(0, this.startIndex);\r\n startIndex_1 = $math.min(startIndex_1, this.dataItems.length);\r\n var endIndex = $math.min(this.endIndex, this.dataItems.length);\r\n if (!$type.isNumber(startIndex_1)) {\r\n startIndex_1 = 0;\r\n }\r\n if (!$type.isNumber(endIndex)) {\r\n endIndex = this.dataItems.length;\r\n }\r\n if (startIndex_1 > 0) {\r\n var dataItem_1 = dataItems.getIndex(startIndex_1 - 1);\r\n $object.each(dataItem_1.values, function (key, values) {\r\n var value = dataItem_1.getActualWorkingValue(key);\r\n if ($type.isNumber(value)) {\r\n // save previous\r\n previous_1[key] = value;\r\n }\r\n });\r\n }\r\n var _loop_1 = function (i) {\r\n var dataItem_2 = dataItems.getIndex(i);\r\n $object.each(dataItem_2.values, function (key, values) {\r\n var value = dataItem_2.getActualWorkingValue(key);\r\n //if (i >= startIndex && i <= endIndex) { // do not add to count, sum etc if it is not within start/end index\r\n if ($type.isNumber(value)) {\r\n // count values\r\n if (!$type.isNumber(count_1[key])) {\r\n count_1[key] = 0;\r\n }\r\n count_1[key]++;\r\n // sum values\r\n if (!$type.isNumber(sum_1[key])) {\r\n sum_1[key] = 0;\r\n }\r\n sum_1[key] += value;\r\n // absolute sum values\r\n if (!$type.isNumber(absoluteSum_1[key])) {\r\n absoluteSum_1[key] = 0;\r\n }\r\n absoluteSum_1[key] += Math.abs(value);\r\n // open\r\n if (!$type.isNumber(open_1[key])) {\r\n open_1[key] = value;\r\n }\r\n // close\r\n close_1[key] = value;\r\n // low\r\n if (!$type.isNumber(low_1[key])) {\r\n low_1[key] = value;\r\n }\r\n else {\r\n if (low_1[key] > value) {\r\n low_1[key] = value;\r\n }\r\n }\r\n // high\r\n if (!$type.isNumber(high_1[key])) {\r\n high_1[key] = value;\r\n }\r\n else {\r\n if (high_1[key] < value) {\r\n high_1[key] = value;\r\n }\r\n }\r\n if (!$type.isNumber(first_1[key])) {\r\n first_1[key] = _this.getFirstValue(key, startIndex_1);\r\n }\r\n if (!$type.isNumber(absoluteFirst_1[key])) {\r\n absoluteFirst_1[key] = _this.getAbsoluteFirstValue(key);\r\n }\r\n // change\r\n dataItem_2.setCalculatedValue(key, value - first_1[key], \"change\");\r\n // change from start percent\r\n // will fail if first value is 0\r\n dataItem_2.setCalculatedValue(key, (value - first_1[key]) / first_1[key] * 100, \"changePercent\");\r\n dataItem_2.setCalculatedValue(key, (value - absoluteFirst_1[key]), \"startChange\");\r\n dataItem_2.setCalculatedValue(key, (value - absoluteFirst_1[key]) / absoluteFirst_1[key] * 100, \"startChangePercent\");\r\n // previous change\r\n var prevValue = previous_1[key];\r\n if (!$type.isNumber(prevValue)) {\r\n prevValue = value;\r\n }\r\n dataItem_2.setCalculatedValue(key, value - prevValue, \"previousChange\");\r\n // previous change percent\r\n dataItem_2.setCalculatedValue(key, (value - prevValue) / prevValue * 100, \"previousChangePercent\");\r\n // save previous\r\n previous_1[key] = value;\r\n }\r\n });\r\n };\r\n for (var i = startIndex_1; i < endIndex; i++) {\r\n _loop_1(i);\r\n }\r\n if (this.calculatePercent) {\r\n var _loop_2 = function (i) {\r\n var dataItem_3 = dataItems.getIndex(i);\r\n $object.each(dataItem_3.values, function (key) {\r\n var ksum = absoluteSum_1[key];\r\n var value = dataItem_3.getActualWorkingValue(key);\r\n if ($type.isNumber(value)) {\r\n if (ksum > 0) {\r\n if (_this.usePercentHack) {\r\n // this hack is made in order to make it possible to animate single slice to 0\r\n // if there is only one slice left, percent value is always 100%, so it won't animate\r\n // so we use real value of a slice instead of current value\r\n if (value == ksum) {\r\n ksum = dataItem_3.values[key].value;\r\n }\r\n }\r\n var percent = value / ksum * 100;\r\n dataItem_3.setCalculatedValue(key, percent, \"percent\");\r\n }\r\n else {\r\n dataItem_3.setCalculatedValue(key, 0, \"percent\");\r\n }\r\n }\r\n });\r\n };\r\n for (var i = startIndex_1; i < endIndex; i++) {\r\n _loop_2(i);\r\n }\r\n }\r\n // calculate one before first (cant do that in cycle, as we don't know open yet\r\n // when drawing line chart we should draw line to the invisible data point to the left, otherwise the line will always look like it starts from the selected point\r\n // so we do startIndex - 1\r\n if (startIndex_1 > 0) {\r\n var zeroItem_1 = dataItems.getIndex(startIndex_1 - 1);\r\n $object.each(zeroItem_1.values, function (key) {\r\n var value = zeroItem_1.values[key].value;\r\n // change\r\n zeroItem_1.setCalculatedValue(key, value - open_1[key], \"change\");\r\n // change percent\r\n zeroItem_1.setCalculatedValue(key, (value - open_1[key]) / open_1[key] * 100, \"changePercent\");\r\n });\r\n }\r\n // we save various data like sum, average to dataPoint of the series\r\n var dataItem_4 = this.dataItem;\r\n $object.each(dataItem_4.values, function (key) {\r\n dataItem_4.setCalculatedValue(key, sum_1[key], \"sum\");\r\n dataItem_4.setCalculatedValue(key, absoluteSum_1[key], \"absoluteSum\");\r\n dataItem_4.setCalculatedValue(key, sum_1[key] / count_1[key], \"average\");\r\n dataItem_4.setCalculatedValue(key, open_1[key], \"open\");\r\n dataItem_4.setCalculatedValue(key, close_1[key], \"close\");\r\n dataItem_4.setCalculatedValue(key, low_1[key], \"low\");\r\n dataItem_4.setCalculatedValue(key, high_1[key], \"high\");\r\n dataItem_4.setCalculatedValue(key, count_1[key], \"count\");\r\n });\r\n }\r\n };\r\n /**\r\n * (Re)validates the whole series, effectively causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Series.prototype.validate = function () {\r\n if ($utils.isIE()) {\r\n this.filters.clear();\r\n }\r\n $iter.each(this.axisRanges.iterator(), function (axisRange) {\r\n //axisRange.contents.disposeChildren(); // not good for columns, as they are reused\r\n //\t\t\taxisRange.appendChildren();\r\n axisRange.validate();\r\n });\r\n _super.prototype.validate.call(this);\r\n var bulletsContainer = this.bulletsContainer;\r\n bulletsContainer.fill = this.fill;\r\n bulletsContainer.stroke = this.stroke;\r\n bulletsContainer.x = this.pixelX;\r\n bulletsContainer.y = this.pixelY;\r\n if (this.bulletsContainer.children.length > 0) {\r\n if (this._showBullets) {\r\n for (var i = 0; i < this.startIndex; i++) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n if (dataItem) {\r\n dataItem.bullets.each(function (key, bullet) {\r\n bullet.__disabled = true;\r\n });\r\n }\r\n }\r\n for (var i = this.dataItems.length - 1; i > this.endIndex; i--) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n if (dataItem) {\r\n dataItem.bullets.each(function (key, bullet) {\r\n bullet.__disabled = true;\r\n });\r\n }\r\n }\r\n }\r\n else {\r\n this.bulletsContainer.children.each(function (bullet) {\r\n bullet.__disabled = true;\r\n });\r\n }\r\n }\r\n this.updateTooltipBounds();\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Series.prototype.updateTooltipBounds = function () {\r\n if (this.topParent) {\r\n var x = 0;\r\n var y = 0;\r\n var w = this.topParent.maxWidth;\r\n var h = this.topParent.maxHeight;\r\n var rect = { x: x, y: y, width: w, height: h };\r\n this.tooltip.setBounds(rect);\r\n }\r\n };\r\n Series.prototype.shouldCreateBullet = function (dataItem, bulletTemplate) {\r\n return true;\r\n };\r\n /**\r\n * Validates data item's element, effectively redrawing it.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n Series.prototype.validateDataElement = function (dataItem) {\r\n var _this = this;\r\n _super.prototype.validateDataElement.call(this, dataItem);\r\n if (this._showBullets) {\r\n if (!this.isHidden) {\r\n this.bulletsContainer.visible = true;\r\n }\r\n this.bullets.each(function (bulletTemplate) {\r\n // always better to use the same, this helps to avoid redrawing\r\n var bullet = dataItem.bullets.getKey(bulletTemplate.uid);\r\n if (_this.shouldCreateBullet(dataItem, bulletTemplate)) {\r\n if (!bullet) {\r\n var disabledField = bulletTemplate.propertyFields.disabled;\r\n var dataContext = dataItem.dataContext;\r\n if (disabledField && dataContext && dataContext[disabledField] === false) {\r\n bulletTemplate.applyOnClones = false;\r\n bulletTemplate.disabled = false;\r\n bullet = bulletTemplate.clone();\r\n bulletTemplate.disabled = true;\r\n bulletTemplate.applyOnClones = true;\r\n }\r\n else {\r\n bullet = bulletTemplate.clone();\r\n }\r\n bullet.shouldClone = false;\r\n dataItem.addSprite(bullet);\r\n if (!_this.visible || _this.isHiding) {\r\n bullet.hide(0);\r\n }\r\n }\r\n var currentDataItem = bullet.dataItem;\r\n if (currentDataItem != dataItem) {\r\n // set to undefined in order not to reuse\r\n if (currentDataItem) {\r\n currentDataItem.bullets.setKey(bulletTemplate.uid, undefined);\r\n }\r\n var readerText_1 = _this.itemReaderText;\r\n if (bullet instanceof Bullet) {\r\n if (!readerText_1) {\r\n readerText_1 = (\"{\" + bullet.xField + \"}: {\" + bullet.yField + \"}\");\r\n }\r\n if (bullet.isDynamic) {\r\n dataItem.events.on(\"workingvaluechanged\", bullet.deepInvalidate, bullet, false);\r\n //dataItem.events.on(\"calculatedvaluechanged\", bullet.deepInvalidate, bullet, false);\r\n _this.dataItem.events.on(\"workingvaluechanged\", bullet.deepInvalidate, bullet, false);\r\n }\r\n bullet.deepInvalidate();\r\n }\r\n // Add accessibility to bullet\r\n if (bullet.focusable) {\r\n bullet.events.on(\"focus\", function (ev) {\r\n bullet.readerTitle = _this.populateString(readerText_1, bullet.dataItem);\r\n }, undefined, false);\r\n bullet.events.on(\"blur\", function (ev) {\r\n bullet.readerTitle = \"\";\r\n }, undefined, false);\r\n }\r\n if (bullet.hoverable) {\r\n bullet.events.on(\"over\", function (ev) {\r\n bullet.readerTitle = _this.populateString(readerText_1, bullet.dataItem);\r\n }, undefined, false);\r\n bullet.events.on(\"out\", function (ev) {\r\n bullet.readerTitle = \"\";\r\n }, undefined, false);\r\n }\r\n }\r\n bullet.parent = _this.bulletsContainer;\r\n dataItem.bullets.setKey(bulletTemplate.uid, bullet);\r\n // pass max w/h so we'd know if we should show/hide somethings\r\n bullet.maxWidth = dataItem.itemWidth;\r\n bullet.maxHeight = dataItem.itemHeight;\r\n bullet.__disabled = false;\r\n _this.positionBullet(bullet);\r\n }\r\n else {\r\n if (bullet) {\r\n bullet.__disabled = true;\r\n }\r\n }\r\n });\r\n }\r\n else {\r\n this.bulletsContainer.visible = false;\r\n }\r\n };\r\n /**\r\n * [handleDataItemWorkingValueChange description]\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Series.prototype.handleDataItemWorkingValueChange = function (dataItem, name) {\r\n if (!this.dataRangeInvalid) {\r\n this.invalidateProcessedData();\r\n }\r\n };\r\n Object.defineProperty(Series.prototype, \"ignoreMinMax\", {\r\n /**\r\n * @return Exclude from calculations?\r\n */\r\n get: function () {\r\n return this._ignoreMinMax;\r\n },\r\n /**\r\n * Should this series excluded from the axis scale calculations?\r\n *\r\n * @default false\r\n * @param value Exclude from calculations?\r\n */\r\n set: function (value) {\r\n this._ignoreMinMax = value;\r\n this.invalidateDataItems();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Create a mask for the series.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Series.prototype.createMask = function () {\r\n // A placeholder method for extending classes to override.\r\n };\r\n /**\r\n * Process axis range after it has been added to the list.\r\n *\r\n * @param event Event\r\n */\r\n Series.prototype.processAxisRange = function (event) {\r\n // create container if not existing\r\n if (!this.rangesContainer) {\r\n this.rangesContainer = this.createChild(Container);\r\n this.rangesContainer.shouldClone = false;\r\n this.rangesContainer.isMeasured = false;\r\n }\r\n var axisRange = event.newValue;\r\n if (axisRange) {\r\n axisRange.contents.parent = this.rangesContainer;\r\n axisRange.isRange = true;\r\n axisRange.events.on(\"valuechanged\", this.invalidateDataItems, this, false);\r\n }\r\n };\r\n /**\r\n * [getAxisField description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param axis [description]\r\n * @return [description]\r\n */\r\n Series.prototype.getAxisField = function (axis) {\r\n return;\r\n };\r\n /**\r\n * Shows the tooltip at specific position.\r\n *\r\n * @ignore Exclude from docs\r\n * @param xPosition X\r\n * @param yPosition Y\r\n */\r\n Series.prototype.showTooltipAtPosition = function (xPosition, yPosition) {\r\n // Placeholder method for extending classes to override.\r\n };\r\n Object.defineProperty(Series.prototype, \"minBulletDistance\", {\r\n /**\r\n * @return Distance (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minBulletDistance\");\r\n },\r\n /**\r\n * Minimal distance between data points in pixels.\r\n *\r\n * If distance gets smaller than this, bullets are turned off to avoid\r\n * overlapping.\r\n *\r\n * `0` (zero) disables this behavior.\r\n *\r\n * IMPORTANT: This setting will work only when Series' base axis\r\n * is [[CategoryAxis]] or [[DateAxis]]. If base axis is [[ValueAxis]] the\r\n * setting will be ignored, because it would be a huge overhead to measure\r\n * distance between each and every bullet.\r\n *\r\n * @default 0\r\n * @param value Distance (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"minBulletDistance\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Series.prototype, \"bullets\", {\r\n /**\r\n * A list of bullets that will be added to each and every items in the\r\n * series.\r\n *\r\n * You can push any object that is a descendant of a [[Sprite]] here. All\r\n * items added to this list will be copied and used as a bullet on all data\r\n * items, including their properties, events, etc.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/bullets/} for more info about the concept of Bullets\r\n * @return List of bullets.\r\n */\r\n get: function () {\r\n if (!this._bullets) {\r\n this._bullets = new ListTemplate(new Bullet());\r\n this._bullets.template.virtualParent = this;\r\n this._bullets.events.on(\"inserted\", this.processBullet, this, false);\r\n this._bullets.events.on(\"removed\", this.removeBullet, this, false);\r\n this._disposers.push(new ListDisposer(this._bullets));\r\n this._disposers.push(this._bullets.template);\r\n }\r\n return this._bullets;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Binds related legend data item's visual settings to this series' visual\r\n * settings.\r\n *\r\n * @ignore Exclude from docs\r\n * @param marker Legend item container\r\n */\r\n Series.prototype.createLegendMarker = function (marker) {\r\n // This is a placeholder method for extending classes to override.\r\n };\r\n Object.defineProperty(Series.prototype, \"hiddenInLegend\", {\r\n /**\r\n * @return Hidden in legend?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"hiddenInLegend\");\r\n },\r\n /**\r\n * Should the series be hidden in legend?\r\n *\r\n * @param value Hidden in legend?\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"hiddenInLegend\", value)) {\r\n if (this.chart) {\r\n this.chart.feedLegend();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Series.prototype, \"name\", {\r\n /**\r\n * @return Name\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"name\");\r\n },\r\n /**\r\n * Series' name.\r\n *\r\n * @param value Name\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"name\", value);\r\n var legendDataItem = this.legendDataItem;\r\n if (legendDataItem) {\r\n legendDataItem.component.invalidate();\r\n legendDataItem.component.invalidateRawData();\r\n }\r\n this.readerTitle = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Series.prototype, \"itemReaderText\", {\r\n /**\r\n * @return Screen reader text template\r\n */\r\n get: function () {\r\n // Get explicitly set reader text\r\n var readerText = this._itemReaderText;\r\n // Not set? Let's try something else\r\n if (!readerText) {\r\n // Tooltip text?\r\n if (this.tooltipText) {\r\n readerText = $utils.plainText(this.tooltipText);\r\n }\r\n else if (this.tooltipHTML) {\r\n readerText = $utils.plainText(this.tooltipHTML);\r\n }\r\n }\r\n if (!this._adapterO) {\r\n return readerText;\r\n }\r\n else {\r\n return this._adapterO.apply(\"itemReaderText\", readerText);\r\n }\r\n },\r\n /**\r\n * Screen reader text to be applied to each individual data item, such\r\n * as bullets, columns or slices.\r\n *\r\n * The template can contain field reference meta codes, i.e. `{dateX}`,\r\n * `{valueY}`, etc.\r\n *\r\n * Any text formatting options, e.g. `[bold]` will be ignored.\r\n *\r\n * @param value Screen reader text template\r\n */\r\n set: function (value) {\r\n this._itemReaderText = value;\r\n this._itemReaderTextChanged = true;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns if number of data items in the series are beyond non-focusable\r\n * count and should not be available for TAB-through.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Items focusable?\r\n */\r\n Series.prototype.itemsFocusable = function () {\r\n return this.dataItems.length >= this.skipFocusThreshold ? false : true;\r\n };\r\n Object.defineProperty(Series.prototype, \"legendDataItem\", {\r\n /**\r\n * @return Data item\r\n */\r\n get: function () {\r\n return this._legendDataItem;\r\n },\r\n /**\r\n * Legend data item that corresponds to this series.\r\n *\r\n * @param value Data item\r\n */\r\n set: function (value) {\r\n this._legendDataItem = value;\r\n this._legendDataItem.itemContainer.deepInvalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Updates corresponding legend data item with current values.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n Series.prototype.updateLegendValue = function (dataItem, notRange) {\r\n // if this series has legend item\r\n if (this.legendDataItem) {\r\n var legendSettings = this.legendSettings;\r\n var legendDataItem = this.legendDataItem;\r\n var label = legendDataItem.label;\r\n var valueLabel = legendDataItem.valueLabel;\r\n // update legend\r\n if ((dataItem && !dataItem.isDisposed()) || notRange) {\r\n if (valueLabel) {\r\n if (legendSettings.itemValueText) {\r\n valueLabel.text = legendSettings.itemValueText;\r\n }\r\n valueLabel.dataItem = dataItem;\r\n }\r\n if (label) {\r\n if (legendSettings.itemLabelText) {\r\n label.text = legendSettings.itemLabelText;\r\n }\r\n label.dataItem = dataItem;\r\n }\r\n }\r\n else {\r\n if (label) {\r\n // if itemLabelText is set, means we have to reset label even if labelText is not set\r\n if (legendSettings.labelText || legendSettings.itemLabelText != undefined) {\r\n label.text = legendSettings.labelText;\r\n }\r\n label.dataItem = this.dataItem;\r\n }\r\n if (valueLabel) {\r\n if (legendSettings.valueText || legendSettings.itemValueText != undefined) {\r\n valueLabel.text = legendSettings.valueText;\r\n }\r\n valueLabel.dataItem = this.dataItem;\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Copies all properties from another instance of [[Series]].\r\n *\r\n * @param source Source series\r\n */\r\n Series.prototype.copyFrom = function (source) {\r\n this.bullets.copyFrom(source.bullets);\r\n this.bulletsContainer.copyFrom(source.bulletsContainer);\r\n this.calculatePercent = source.calculatePercent;\r\n this.usePercentHack = source.usePercentHack;\r\n this.simplifiedProcessing = source.simplifiedProcessing;\r\n _super.prototype.copyFrom.call(this, source);\r\n };\r\n /**\r\n * Displays a modal or console message with error, and halts any further\r\n * processing of this element.\r\n *\r\n * @param e Error\r\n */\r\n Series.prototype.raiseCriticalError = function (e) {\r\n if (this._chart && this._chart.modal) {\r\n this._chart.modal.content = this._chart.adapter.apply(\"criticalError\", e).message;\r\n this._chart.modal.closable = false;\r\n if (!options.suppressErrors) {\r\n this._chart.modal.open();\r\n }\r\n this._chart.disabled = true;\r\n }\r\n if (options.verbose) {\r\n console.log(e);\r\n }\r\n };\r\n /**\r\n * Applies filters to the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Series.prototype.applyFilters = function () {\r\n var _this = this;\r\n _super.prototype.applyFilters.call(this);\r\n this.bulletsContainer.filters.clear();\r\n // copyFrom of a list copies, does not clone\r\n $iter.each(this.filters.iterator(), function (filter) {\r\n _this.bulletsContainer.filters.push(filter.clone());\r\n });\r\n };\r\n Object.defineProperty(Series.prototype, \"heatRules\", {\r\n /**\r\n * A list of heat rules to apply to series' elements based on the value\r\n * of the data item.\r\n *\r\n * Heat rules can be any \"numeric\" (including `Color`) property, and can also\r\n * be applied to child objects of series, like columns, bullets, etc.\r\n *\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * series.heatRules.push({\r\n * \"target\": series.columns.template,\r\n * \"property\": \"fill\",\r\n * \"min\": am4core.color(\"#F5DBCB\"),\r\n * \"max\": am4core.color(\"#ED7B84\"),\r\n * \"dataField\": \"valueY\"\r\n *});\r\n *```\r\n * ```Javacript\r\n * series.heatRules.push({\r\n * \"target\": series.columns.template,\r\n * \"property\": \"fill\",\r\n * \"min\": am4core.color(\"#F5DBCB\"),\r\n * \"max\": am4core.color(\"#ED7B84\"),\r\n * \"dataField\": \"valueY\"\r\n *});\r\n *```\r\n *```JSON\r\n *{\r\n * // ...\r\n * \"series\": [{\r\n * \"type\": \"ColumnSeries\",\r\n * \"heatRules\": [{\r\n * \"target\": \"columns.template\",\r\n * \"property\": \"fill\",\r\n * \"min\": \"#F5DBCB\",\r\n * \"max\": \"#ED7B84\",\r\n * \"dataField\": \"valueY\"\r\n * }]\r\n * }]\r\n *}\r\n *```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/series/#Heat_maps} for more about heat rules\r\n * @return Heat rules\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._heatRules) {\r\n this._heatRules = new List();\r\n this._heatRules.events.on(\"inserted\", function (event) {\r\n var heatRule = event.newValue;\r\n var target = heatRule.target;\r\n if (target) {\r\n var dataField_1 = heatRule.dataField;\r\n if (!$type.hasValue(dataField_1)) {\r\n dataField_1 = \"value\";\r\n }\r\n var seriesDataItem_1 = _this.dataItem;\r\n var property_1 = heatRule.property;\r\n var minValue = $type.toNumber(heatRule.minValue);\r\n var maxValue = $type.toNumber(heatRule.maxValue);\r\n if (!$type.isNumber(minValue) && !$type.isNumber(maxValue)) {\r\n _this.dataItem.events.on(\"calculatedvaluechanged\", function (event) {\r\n if (event.property == dataField_1) {\r\n $iter.each(_this.dataItems.iterator(), function (dataItem) {\r\n var foundSprite = false;\r\n $array.each(dataItem.sprites, function (sprite) {\r\n if (sprite.clonedFrom == target) {\r\n var anySprite = sprite;\r\n anySprite[property_1] = anySprite[property_1];\r\n foundSprite = true;\r\n }\r\n });\r\n if (!foundSprite) {\r\n $array.each(dataItem.sprites, function (sprite) {\r\n if (sprite instanceof Container) {\r\n $iter.each(sprite.children.iterator(), function (child) {\r\n if (child.className == target.className) {\r\n var anyChild = child;\r\n anyChild[property_1] = anyChild[property_1];\r\n }\r\n // giveup here\r\n else if (child instanceof Container) {\r\n child.deepInvalidate();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n _this.dataItems.template.events.on(\"workingvaluechanged\", function (event) {\r\n if (event.property == dataField_1) {\r\n var dataItem = event.target;\r\n var foundSprite_1 = false;\r\n $array.each(dataItem.sprites, function (sprite) {\r\n if (sprite.clonedFrom == target) {\r\n var anySprite = sprite;\r\n anySprite[property_1] = anySprite[property_1];\r\n foundSprite_1 = true;\r\n }\r\n });\r\n if (!foundSprite_1) {\r\n $array.each(dataItem.sprites, function (sprite) {\r\n if (sprite instanceof Container) {\r\n $iter.each(sprite.children.iterator(), function (child) {\r\n if (child.className == target.className) {\r\n var anyChild = child;\r\n anyChild[property_1] = anyChild[property_1];\r\n }\r\n // givup here\r\n else if (child instanceof Container) {\r\n child.deepInvalidate();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n });\r\n target.adapter.add(property_1, function (value, ruleTarget, property) {\r\n var minValue = $type.toNumber(heatRule.minValue);\r\n var maxValue = $type.toNumber(heatRule.maxValue);\r\n var min = heatRule.min;\r\n var max = heatRule.max;\r\n if (ruleTarget instanceof Sprite) {\r\n var anySprite = ruleTarget;\r\n var propertyField = anySprite.propertyFields[property];\r\n if (propertyField && ruleTarget.dataItem) {\r\n var dataContext = ruleTarget.dataItem.dataContext;\r\n if (dataContext && $type.hasValue(dataContext[propertyField])) {\r\n return value;\r\n }\r\n }\r\n }\r\n var dataItem = ruleTarget.dataItem;\r\n if (!$type.isNumber(minValue)) {\r\n minValue = seriesDataItem_1.values[dataField_1].low;\r\n }\r\n if (!$type.isNumber(maxValue)) {\r\n maxValue = seriesDataItem_1.values[dataField_1].high;\r\n }\r\n if (dataItem) {\r\n var fieldValues = dataItem.values[dataField_1];\r\n if (fieldValues) {\r\n var workingValue = dataItem.getActualWorkingValue(dataField_1);\r\n if ($type.hasValue(min) && $type.hasValue(max) && $type.isNumber(minValue) && $type.isNumber(maxValue) && $type.isNumber(workingValue)) {\r\n var percent = void 0;\r\n if (heatRule.logarithmic) {\r\n percent = (Math.log(workingValue) * Math.LOG10E - Math.log(minValue) * Math.LOG10E) / ((Math.log(maxValue) * Math.LOG10E - Math.log(minValue) * Math.LOG10E));\r\n }\r\n else {\r\n percent = (workingValue - minValue) / (maxValue - minValue);\r\n }\r\n if ($type.isNumber(workingValue) && (!$type.isNumber(percent) || Math.abs(percent) == Infinity)) {\r\n percent = 0.5;\r\n }\r\n // fixes problems if all values are the same\r\n if ($type.isNumber(min)) {\r\n return min + (max - min) * percent;\r\n }\r\n else if (min instanceof Color) {\r\n return new Color($colors.interpolate(min.rgb, max.rgb, percent));\r\n }\r\n }\r\n }\r\n }\r\n return value;\r\n });\r\n }\r\n });\r\n }\r\n return this._heatRules;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n Series.prototype.processConfig = function (config) {\r\n var heatRules;\r\n if (config) {\r\n // Set up bullets\r\n if ($type.hasValue(config.bullets) && $type.isArray(config.bullets)) {\r\n for (var i = 0, len = config.bullets.length; i < len; i++) {\r\n var bullets = config.bullets[i];\r\n if (!$type.hasValue(bullets.type)) {\r\n bullets.type = \"Bullet\";\r\n }\r\n }\r\n }\r\n // Let's take heatRules out of the config, so that we can process\r\n // them later, when bullets are already there\r\n if ($type.hasValue(config.heatRules) && $type.isArray(config.heatRules)) {\r\n heatRules = config.heatRules;\r\n delete config.heatRules;\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n // Process heat rules again, when all other elements are ready\r\n if (heatRules) {\r\n for (var i = 0, len = heatRules.length; i < len; i++) {\r\n var rule = heatRules[i];\r\n // Resolve target\r\n var target = this;\r\n if ($type.hasValue(rule.target) && $type.isString(rule.target)) {\r\n // Check if we can find this element by id\r\n if (this.map.hasKey(rule.target)) {\r\n target = this.map.getKey(rule.target);\r\n }\r\n else {\r\n var parts = rule.target.split(\".\");\r\n for (var x = 0; x < parts.length; x++) {\r\n if (target instanceof List) {\r\n var listitem = target.getIndex($type.toNumber(parts[x]));\r\n if (!listitem) {\r\n target = target[parts[x]];\r\n }\r\n else {\r\n target = listitem;\r\n }\r\n }\r\n else {\r\n var maybeIndex = parts[x].match(/^(.*)\\[([0-9]+)\\]/);\r\n if (maybeIndex) {\r\n if (target[maybeIndex[1]] instanceof List) {\r\n target = target[maybeIndex[1]].getIndex($type.toNumber(maybeIndex[2]));\r\n }\r\n else {\r\n target = target[maybeIndex[1]][$type.toNumber(maybeIndex[2])];\r\n }\r\n }\r\n else {\r\n target = target[parts[x]];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n rule.target = target;\r\n // Resolve colors and percents\r\n if ($type.hasValue(rule.min)) {\r\n rule.min = this.maybeColorOrPercent(rule.min);\r\n }\r\n if ($type.hasValue(rule.max)) {\r\n rule.max = this.maybeColorOrPercent(rule.max);\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, {\r\n heatRules: heatRules\r\n });\r\n }\r\n };\r\n /**\r\n * Returns visibility value\r\n * @ignore\r\n */\r\n /*\r\n protected getVisibility(): boolean {\r\n let hidden = this.getPropertyValue(\"hidden\");\r\n if (hidden) {\r\n return false;\r\n }\r\n else {\r\n return super.getVisibility();\r\n }\r\n }*/\r\n /**\r\n * This function is used to sort element's JSON config properties, so that\r\n * some properties that absolutely need to be processed last, can be put at\r\n * the end.\r\n *\r\n * @ignore Exclude from docs\r\n * @param a Element 1\r\n * @param b Element 2\r\n * @return Sorting number\r\n */\r\n Series.prototype.configOrder = function (a, b) {\r\n if (a == b) {\r\n return 0;\r\n }\r\n // Must come last\r\n else if (a == \"heatRules\") {\r\n return 1;\r\n }\r\n else if (b == \"heatRules\") {\r\n return -1;\r\n }\r\n else {\r\n return _super.prototype.configOrder.call(this, a, b);\r\n }\r\n };\r\n /**\r\n * Sets `visibility` property:\r\n *\r\n * * `true` - visible\r\n * * `false` - hidden\r\n *\r\n * @param value true - visible, false - hidden\r\n * @return Current visibility\r\n */\r\n Series.prototype.setVisibility = function (value) {\r\n _super.prototype.setVisibility.call(this, value);\r\n this.bulletsContainer.visible = value;\r\n };\r\n return Series;\r\n}(Component));\r\nexport { Series };\r\n/**\r\n * Register class, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Series\"] = Series;\r\nregistry.registeredClasses[\"SeriesDataItem\"] = SeriesDataItem;\r\n//# sourceMappingURL=Series.js.map","/**\r\n * Serial chart module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Chart, ChartDataItem } from \"../Chart\";\r\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { Series } from \"../series/Series\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { ColorSet } from \"../../core/utils/ColorSet\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport { Disposer } from \"../../core/utils/Disposer\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[SerialChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar SerialChartDataItem = /** @class */ (function (_super) {\r\n __extends(SerialChartDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function SerialChartDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"SerialChartDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return SerialChartDataItem;\r\n}(ChartDataItem));\r\nexport { SerialChartDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A base class for all series-based charts, like XY, Pie, etc.\r\n *\r\n * Is not useful on its own.\r\n *\r\n * @see {@link ISerialChartEvents} for a list of available Events\r\n * @see {@link ISerialChartAdapters} for a list of available Adapters\r\n */\r\nvar SerialChart = /** @class */ (function (_super) {\r\n __extends(SerialChart, _super);\r\n /**\r\n * Constructor\r\n */\r\n function SerialChart() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"SerialChart\";\r\n _this.colors = new ColorSet();\r\n _this._usesData = false;\r\n // Create a container for series\r\n var seriesContainer = _this.chartContainer.createChild(Container);\r\n seriesContainer.shouldClone = false;\r\n seriesContainer.width = percent(100);\r\n seriesContainer.height = percent(100);\r\n seriesContainer.isMeasured = false;\r\n seriesContainer.layout = \"none\";\r\n seriesContainer.zIndex = 2;\r\n _this.seriesContainer = seriesContainer;\r\n // Create a container for bullets\r\n var bulletsContainer = _this.chartContainer.createChild(Container);\r\n bulletsContainer.shouldClone = false;\r\n bulletsContainer.width = percent(100);\r\n bulletsContainer.height = percent(100);\r\n bulletsContainer.isMeasured = false;\r\n bulletsContainer.zIndex = 3;\r\n bulletsContainer.layout = \"none\";\r\n _this.bulletsContainer = bulletsContainer;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n SerialChart.prototype.dispose = function () {\r\n _super.prototype.dispose.call(this);\r\n if (this.colors) {\r\n this.colors.dispose();\r\n }\r\n if (this.patterns) {\r\n this.patterns.dispose();\r\n }\r\n };\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor\r\n */\r\n SerialChart.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n // Add a default screen reader title for accessibility\r\n // This will be overridden in screen reader if there are any `titles` set\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Serial chart\");\r\n }\r\n };\r\n Object.defineProperty(SerialChart.prototype, \"series\", {\r\n /**\r\n * A list of chart's series.\r\n *\r\n * @return Chart's series\r\n */\r\n get: function () {\r\n if (!this._series) {\r\n this._series = new ListTemplate(this.createSeries());\r\n this._series.events.on(\"inserted\", this.handleSeriesAdded, this, false);\r\n this._series.events.on(\"removed\", this.handleSeriesRemoved, this, false);\r\n this._disposers.push(new ListDisposer(this._series, false));\r\n this._disposers.push(this._series.template);\r\n }\r\n return this._series;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n SerialChart.prototype.handleSeriesRemoved = function (event) {\r\n var series = event.oldValue;\r\n this.dataUsers.removeValue(series);\r\n this.dataUsers.each(function (dataUser) {\r\n dataUser.invalidateDataItems();\r\n });\r\n if (series.autoDispose) {\r\n series.dispose();\r\n }\r\n else {\r\n series.parent = undefined;\r\n series.bulletsContainer.parent = undefined;\r\n }\r\n //this.feedLegend();\r\n var legend = this.legend;\r\n if (legend) {\r\n var dataItems = this.legend.dataItems;\r\n for (var i = dataItems.length - 1; i >= 0; i--) {\r\n var dataItem = dataItems.getIndex(i);\r\n if (dataItem && dataItem.dataContext == series) {\r\n legend.dataItems.remove(dataItem);\r\n }\r\n }\r\n for (var i = legend.data.length - 1; i >= 0; i--) {\r\n var di = legend.data[i];\r\n if (di && di == series) {\r\n $array.remove(legend.data, di);\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Decorates a new [[Series]] object with required parameters when it is\r\n * added to the chart.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\r\n SerialChart.prototype.handleSeriesAdded = function (event) {\r\n var _this = this;\r\n var series = event.newValue;\r\n if (series.isDisposed()) {\r\n return;\r\n }\r\n series.chart = this;\r\n series.parent = this.seriesContainer;\r\n series.bulletsContainer.parent = this.bulletsContainer;\r\n this._dataUsers.moveValue(series);\r\n series.addDisposer(new Disposer(function () {\r\n _this.dataUsers.removeValue(series);\r\n }));\r\n this.handleSeriesAdded2(series);\r\n this.handleLegendSeriesAdded(series);\r\n };\r\n SerialChart.prototype.handleLegendSeriesAdded = function (series) {\r\n if (!series.hiddenInLegend) {\r\n if (this.legend) {\r\n this.legend.addData(series);\r\n }\r\n }\r\n };\r\n SerialChart.prototype.handleSeriesAdded2 = function (series) {\r\n var _this = this;\r\n if (!this.dataInvalid) {\r\n this._disposers.push(\r\n // on exit only as data is usually passed after push\r\n registry.events.once(\"exitframe\", function () {\r\n if (!series.data || series.data.length == 0) {\r\n series.data = _this.data;\r\n if (series.showOnInit) {\r\n series.reinit();\r\n series.setPropertyValue(\"showOnInit\", false);\r\n series.showOnInit = true;\r\n }\r\n if (!series.isDisposed()) {\r\n series.events.once(\"datavalidated\", function () {\r\n if (series.data == _this.data) {\r\n series._data = [];\r\n }\r\n });\r\n }\r\n }\r\n }));\r\n }\r\n };\r\n /**\r\n * Setups the legend to use the chart's data.\r\n * @ignore\r\n */\r\n SerialChart.prototype.feedLegend = function () {\r\n var legend = this.legend;\r\n if (legend) {\r\n var legendData_1 = [];\r\n $iter.each(this.series.iterator(), function (series) {\r\n if (!series.hiddenInLegend) {\r\n legendData_1.push(series);\r\n }\r\n });\r\n legend.dataFields.name = \"name\";\r\n legend.data = legendData_1;\r\n }\r\n };\r\n /**\r\n * Creates and returns a new Series, suitable for this chart type.\r\n *\r\n * @return New series\r\n */\r\n SerialChart.prototype.createSeries = function () {\r\n return new Series();\r\n };\r\n Object.defineProperty(SerialChart.prototype, \"colors\", {\r\n /**\r\n * @return Color list\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"colors\");\r\n },\r\n /**\r\n * Chart's color list.\r\n *\r\n * This list can be used by a number of serial items, like applying a new\r\n * color for each Series added. Or, applying a new color for each slice\r\n * of a Pie chart.\r\n *\r\n * Please see [[ColorSet]] for information on how you can set up to generate\r\n * unique colors.\r\n *\r\n * A theme you are using may override default pre-defined colors.\r\n *\r\n * @param value Color list\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"colors\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SerialChart.prototype, \"patterns\", {\r\n /**\r\n * @return Pattern set\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"patterns\");\r\n },\r\n /**\r\n * A [[PatternSet]] to use when creating patterned fills for slices.\r\n *\r\n * @since 4.7.5\r\n * @param value Pattern set\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"patterns\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies all parameters from another [[SerialChart]].\r\n *\r\n * @param source Source SerialChart\r\n */\r\n SerialChart.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.series.copyFrom(source.series);\r\n };\r\n /**\r\n * Hides the chart instantly and then shows it. If defaultState.transitionDuration > 0, this will result an animation in which properties of hidden state will animate to properties of visible state.\r\n */\r\n SerialChart.prototype.appear = function () {\r\n _super.prototype.appear.call(this);\r\n this.series.each(function (series) {\r\n if (series.showOnInit && series.inited) {\r\n series.appear();\r\n }\r\n });\r\n };\r\n return SerialChart;\r\n}(Chart));\r\nexport { SerialChart };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"SerialChart\"] = SerialChart;\r\n//# sourceMappingURL=SerialChart.js.map","/**\r\n * Axis break module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../../core/Container\";\r\nimport { MutableValueDisposer } from \"../../core/utils/Disposer\";\r\nimport { WavedLine } from \"../../core/elements/WavedLine\";\r\nimport { List } from \"../../core/utils/List\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { color } from \"../../core/utils/Color\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Base class to define \"breaks\" on axes.\r\n *\r\n * @see {@link IAxisBreakEvents} for a list of available events\r\n * @see {@link IAxisBreakAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar AxisBreak = /** @class */ (function (_super) {\r\n __extends(AxisBreak, _super);\r\n /**\r\n * Constructor\r\n */\r\n function AxisBreak() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Reference to parent Axis.\r\n */\r\n _this._axis = new MutableValueDisposer();\r\n /**\r\n * A list of axis data items which fall within this break.\r\n */\r\n _this.dataItems = new List();\r\n _this.className = \"AxisBreak\";\r\n // Set defaults\r\n _this.breakSize = 0.01;\r\n _this.marginLeft = -5;\r\n _this.marginRight = -5;\r\n _this.marginTop = -5;\r\n _this.marginBottom = -5;\r\n var interfaceColors = new InterfaceColorSet();\r\n // Create elements\r\n // (these won't be used actually, just for setting properties)\r\n var fillShape = new WavedLine();\r\n fillShape.fill = interfaceColors.getFor(\"background\");\r\n fillShape.stroke = color();\r\n fillShape.fillOpacity = 0.9;\r\n fillShape.zIndex = 0;\r\n _this._fillShape = fillShape;\r\n var startLine = new WavedLine();\r\n startLine.fill = color();\r\n startLine.stroke = interfaceColors.getFor(\"grid\");\r\n startLine.strokeOpacity = 0.3;\r\n startLine.zIndex = 1;\r\n _this._startLine = startLine;\r\n var endLine = new WavedLine();\r\n endLine.fill = color();\r\n endLine.stroke = color(\"#000000\"); // interfaceColors.getFor(\"grid\");\r\n endLine.strokeOpacity = 0.3;\r\n endLine.zIndex = 2;\r\n _this._endLine = endLine;\r\n _this._disposers.push(_this._axis);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n AxisBreak.prototype.dispose = function () {\r\n _super.prototype.dispose.call(this);\r\n if (this._fillShape) {\r\n this._fillShape.dispose();\r\n }\r\n if (this._startLine) {\r\n this._startLine.dispose();\r\n }\r\n if (this._endLine) {\r\n this._endLine.dispose();\r\n }\r\n };\r\n Object.defineProperty(AxisBreak.prototype, \"startLine\", {\r\n /**\r\n * @return Element\r\n */\r\n get: function () {\r\n return this._startLine;\r\n },\r\n /**\r\n * An element used for the starting line of the break.\r\n *\r\n * @param sprite Element\r\n */\r\n set: function (sprite) {\r\n if (this._startLine) {\r\n this._startLine.dispose();\r\n }\r\n this._startLine = sprite;\r\n this.addBreakSprite(sprite);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisBreak.prototype, \"endLine\", {\r\n /**\r\n * @return Element\r\n */\r\n get: function () {\r\n return this._endLine;\r\n },\r\n /**\r\n * An element used for the end line of the break.\r\n *\r\n * @param sprite Element\r\n */\r\n set: function (sprite) {\r\n if (this._endLine) {\r\n this._endLine.dispose();\r\n }\r\n this._endLine = sprite;\r\n this.addBreakSprite(sprite);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisBreak.prototype, \"fillShape\", {\r\n /**\r\n * @return Element\r\n */\r\n get: function () {\r\n return this._fillShape;\r\n },\r\n /**\r\n * An element used for fill of the break.\r\n *\r\n * @param sprite Element\r\n */\r\n set: function (sprite) {\r\n if (this._fillShape) {\r\n this._fillShape.dispose();\r\n }\r\n this._fillShape = sprite;\r\n this.addBreakSprite(sprite);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Adds a break element (e.g. lines, fill) to the break, which is\r\n * [[Container]].\r\n *\r\n * @ignore Exclude from docs\r\n * @param sprite Element to add\r\n */\r\n AxisBreak.prototype.addBreakSprite = function (sprite) {\r\n sprite.parent = this;\r\n sprite.isMeasured = false;\r\n this._disposers.push(sprite);\r\n };\r\n Object.defineProperty(AxisBreak.prototype, \"axis\", {\r\n /**\r\n * @return Axis\r\n */\r\n get: function () {\r\n return this._axis.get();\r\n },\r\n /**\r\n * An Axis this Break is associated with.\r\n *\r\n * @param axis Axis\r\n */\r\n set: function (axis) {\r\n if (this._axis.get() !== axis) {\r\n this._axis.set(axis, axis.renderer.gridContainer.events.on(\"transformed\", this.invalidate, this, false));\r\n axis.renderer.createBreakSprites(this);\r\n // this can't go to copyFrom, as axis is set later\r\n var breakTemplate = axis.axisBreaks.template;\r\n this.startLine.copyFrom(breakTemplate.startLine);\r\n this.endLine.copyFrom(breakTemplate.endLine);\r\n this.fillShape.copyFrom(breakTemplate.fillShape);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisBreak.prototype, \"breakSize\", {\r\n /**\r\n * @return Relative axis break\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"breakSize\");\r\n },\r\n /**\r\n * A size of the break relative to the actual size of the scope break spans.\r\n *\r\n * For example, if `breakSize = 0.1` and unbroken scope of values it spans\r\n * would be 100 pixels, the break would be 10 pixels wide.\r\n *\r\n * 0 means the break will completely collapse and hide the values.\r\n * 1 means break would be not collapse at all, which would make it\r\n * effectively useless.\r\n *\r\n * @default 0.01\r\n * @param value Relative axis break\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"breakSize\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidate();\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisBreak.prototype, \"startPoint\", {\r\n /**\r\n * Returns pixel coordinates of axis break's start.\r\n *\r\n * @return Start point\r\n */\r\n get: function () {\r\n var renderer = this.axis.renderer;\r\n if (renderer) {\r\n return renderer.positionToPoint(this.startPosition);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisBreak.prototype, \"endPoint\", {\r\n /**\r\n * Returns pixel coordinates of axis break's end.\r\n *\r\n * @return End point\r\n */\r\n get: function () {\r\n var renderer = this.axis.renderer;\r\n if (renderer) {\r\n return renderer.positionToPoint(this.endPosition);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisBreak.prototype, \"startPosition\", {\r\n /**\r\n * Returns a relative position at which axis break starts.\r\n *\r\n * This is a calculated position, meaning it shows relative position of the\r\n * break after break is applied.\r\n *\r\n * @return Start position\r\n */\r\n get: function () {\r\n return;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisBreak.prototype, \"endPosition\", {\r\n /**\r\n * Returns a relative position at which axis break ends.\r\n *\r\n * This is a calculated position, meaning it shows relative position of the\r\n * break after break is applied.\r\n *\r\n * @return End position\r\n */\r\n get: function () {\r\n return;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Draws the axis break.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisBreak.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n if (this.axis) {\r\n var renderer = this.axis.renderer;\r\n renderer.updateBreakElement(this);\r\n }\r\n };\r\n Object.defineProperty(AxisBreak.prototype, \"startValue\", {\r\n /**\r\n * @return Starting value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startValue\");\r\n },\r\n /**\r\n * A starting value for the break.\r\n *\r\n * @param value Starting value\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"startValue\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidate();\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisBreak.prototype, \"endValue\", {\r\n /**\r\n * @return End value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endValue\");\r\n },\r\n /**\r\n * An end value for the break.\r\n *\r\n * @param value End value\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"endValue\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidate();\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AxisBreak;\r\n}(Container));\r\nexport { AxisBreak };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"AxisBreak\"] = AxisBreak;\r\n//# sourceMappingURL=AxisBreak.js.map","/**\r\n * Base class for all Axis\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Component } from \"../../core/Component\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { DataItem } from \"../../core/DataItem\";\r\nimport { AxisBreak } from \"./AxisBreak\";\r\nimport { Label } from \"../../core/elements/Label\";\r\nimport { Tooltip } from \"../../core/elements/Tooltip\";\r\nimport { SortedListTemplate } from \"../../core/utils/SortedList\";\r\nimport { List, ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { Disposer, MultiDisposer } from \"../../core/utils/Disposer\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $number from \"../../core/utils/Number\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { defaultRules, ResponsiveBreakpoints } from \"../../core/utils/Responsive\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[Axis]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar AxisDataItem = /** @class */ (function (_super) {\r\n __extends(AxisDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function AxisDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"AxisDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(AxisDataItem.prototype, \"grid\", {\r\n /**\r\n * @return Grid element\r\n */\r\n get: function () {\r\n if (!this._grid) {\r\n var component_1 = this.component;\r\n if (component_1) {\r\n var template = void 0;\r\n var grid_1;\r\n if (this.isRange) {\r\n template = component_1.axisRanges.template.grid;\r\n if (template.disabled) {\r\n return;\r\n }\r\n else {\r\n grid_1 = template.clone();\r\n }\r\n }\r\n else {\r\n template = component_1.renderer.grid.template;\r\n if (template.disabled) {\r\n return;\r\n }\r\n else {\r\n grid_1 = component_1.renderer.grid.create();\r\n this._disposers.push(new Disposer(function () {\r\n component_1.renderer.grid.removeValue(grid_1);\r\n }));\r\n }\r\n }\r\n this.grid = grid_1;\r\n grid_1.shouldClone = false;\r\n this._disposers.push(grid_1);\r\n grid_1.axis = this.component;\r\n }\r\n }\r\n return this._grid;\r\n },\r\n /**\r\n * A [[Grid]] element associated with this data item.\r\n *\r\n * If there is no grid element associated with data item, a new one is\r\n * created and returned.\r\n *\r\n * @param grid Grid element\r\n */\r\n set: function (grid) {\r\n if (this._grid && this._grid != grid) {\r\n $array.remove(this.sprites, this._grid);\r\n this._grid.dataItem = undefined;\r\n }\r\n if (grid) {\r\n if (grid.dataItem && grid.dataItem != this) {\r\n $array.remove(grid.dataItem.sprites, grid);\r\n grid.dataItem.grid = undefined;\r\n }\r\n this.addSprite(grid);\r\n }\r\n this._grid = grid;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisDataItem.prototype, \"tick\", {\r\n /**\r\n * @return Tick element\r\n */\r\n get: function () {\r\n if (!this._tick) {\r\n var component_2 = this.component;\r\n if (component_2) {\r\n var template = void 0;\r\n var tick_1;\r\n if (this.isRange) {\r\n template = component_2.axisRanges.template.tick;\r\n if (template.disabled) {\r\n return;\r\n }\r\n else {\r\n tick_1 = template.clone();\r\n }\r\n }\r\n else {\r\n template = component_2.renderer.ticks.template;\r\n if (template.disabled) {\r\n return;\r\n }\r\n else {\r\n tick_1 = component_2.renderer.ticks.create();\r\n this._disposers.push(new Disposer(function () {\r\n component_2.renderer.ticks.removeValue(tick_1);\r\n }));\r\n }\r\n }\r\n this.tick = tick_1;\r\n tick_1.axis = this.component;\r\n tick_1.shouldClone = false;\r\n this._disposers.push(tick_1);\r\n }\r\n }\r\n return this._tick;\r\n },\r\n /**\r\n * An [[AxisTick]] element associated with this data item.\r\n *\r\n * If there is no tick element associated with data item, a new one is\r\n * created and returned.\r\n *\r\n * @param tick Tick element\r\n */\r\n set: function (tick) {\r\n if (this._tick && this._tick != tick) {\r\n $array.remove(this.sprites, this._tick);\r\n this._tick.dataItem = undefined;\r\n }\r\n if (tick) {\r\n if (tick.dataItem && tick.dataItem != this) {\r\n $array.remove(tick.dataItem.sprites, tick);\r\n tick.dataItem.tick = undefined;\r\n }\r\n this.addSprite(tick);\r\n }\r\n this._tick = tick;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisDataItem.prototype, \"label\", {\r\n /**\r\n * @return Label element\r\n */\r\n get: function () {\r\n if (!this._label) {\r\n var component_3 = this.component;\r\n if (component_3) {\r\n var template = void 0;\r\n var label_1;\r\n if (this.isRange) {\r\n template = component_3.axisRanges.template.label;\r\n if (template.disabled) {\r\n return;\r\n }\r\n else {\r\n label_1 = template.clone();\r\n }\r\n }\r\n else {\r\n template = component_3.renderer.labels.template;\r\n if (template.disabled) {\r\n return;\r\n }\r\n else {\r\n label_1 = component_3.renderer.labels.create();\r\n this._disposers.push(new Disposer(function () {\r\n component_3.renderer.labels.removeValue(label_1);\r\n }));\r\n }\r\n }\r\n this._disposers.push(label_1);\r\n this.label = label_1;\r\n label_1.shouldClone = false;\r\n label_1.axis = this.component;\r\n label_1.virtualParent = component_3;\r\n }\r\n }\r\n return this._label;\r\n },\r\n /**\r\n * An [[AxisLabel]] element associated with this data item.\r\n *\r\n * If there is no label element associated with data item, a new one is\r\n * created and returned.\r\n *\r\n * @param label Label element\r\n */\r\n set: function (label) {\r\n if (this._label && this._label != label) {\r\n $array.remove(this.sprites, this._label);\r\n this._label.dataItem = undefined;\r\n }\r\n if (label) {\r\n if (label.dataItem && label.dataItem != this) {\r\n $array.remove(label.dataItem.sprites, label);\r\n label.dataItem.label = undefined;\r\n }\r\n this.addSprite(label);\r\n }\r\n this._label = label;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisDataItem.prototype, \"axisFill\", {\r\n /**\r\n * @return Label element\r\n */\r\n get: function () {\r\n if (!this._axisFill) {\r\n var component_4 = this.component;\r\n if (component_4) {\r\n var template = void 0;\r\n var axisFill_1;\r\n if (this.isRange) {\r\n template = component_4.axisRanges.template.axisFill;\r\n if (!this.isTemplate && template.disabled) {\r\n return;\r\n }\r\n else {\r\n axisFill_1 = template.clone();\r\n }\r\n }\r\n else {\r\n template = component_4.renderer.axisFills.template;\r\n if (template.disabled) {\r\n return;\r\n }\r\n else {\r\n axisFill_1 = component_4.renderer.axisFills.create();\r\n this._disposers.push(new Disposer(function () {\r\n component_4.renderer.axisFills.removeValue(axisFill_1);\r\n }));\r\n }\r\n }\r\n this.axisFill = axisFill_1;\r\n axisFill_1.shouldClone = false;\r\n this._disposers.push(axisFill_1);\r\n }\r\n }\r\n return this._axisFill;\r\n },\r\n /**\r\n * An [[AxisFill]] associated element with this data item.\r\n *\r\n * If there is no fill element associated with data item, a new one is\r\n * created and returned.\r\n *\r\n * @param label Label element\r\n */\r\n set: function (axisFill) {\r\n if (this._axisFill && this._axisFill != axisFill) {\r\n $array.remove(this.sprites, this._axisFill);\r\n this._axisFill.dataItem = undefined;\r\n }\r\n if (axisFill) {\r\n if (axisFill.dataItem && axisFill.dataItem != this) {\r\n $array.remove(axisFill.dataItem.sprites, axisFill);\r\n axisFill.dataItem.axisFill = undefined;\r\n }\r\n axisFill.axis = this.component;\r\n this.addSprite(axisFill);\r\n }\r\n this._axisFill = axisFill;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisDataItem.prototype, \"text\", {\r\n /**\r\n * @return Text label\r\n */\r\n get: function () {\r\n return this._text;\r\n },\r\n /**\r\n * Text to be used as data item's label.\r\n *\r\n * @param text Text label\r\n */\r\n set: function (text) {\r\n this._text = text;\r\n if (this._label) { // do not use getter, it will create unwanted instances!\r\n this._label.text = text;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisDataItem.prototype, \"mask\", {\r\n /**\r\n * Data item's mask.\r\n *\r\n * @return Mask\r\n */\r\n get: function () {\r\n return this._mask;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisDataItem.prototype, \"contents\", {\r\n /**\r\n * Returns a [[Container]] to place all visual elements, related to data item\r\n * in.\r\n *\r\n * If there is no Container, a new one is created.\r\n *\r\n * @return Contents container\r\n */\r\n get: function () {\r\n if (!this._contents) {\r\n var contents = new Container();\r\n this.addSprite(contents);\r\n contents.isMeasured = false;\r\n this._contents = contents;\r\n var component = this.component;\r\n if (component) {\r\n var mask = component.renderer.createFill(this.component);\r\n mask.disabled = false;\r\n mask.axis = component;\r\n this.addSprite(mask);\r\n this._mask = mask;\r\n contents.mask = mask;\r\n }\r\n }\r\n return this._contents;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisDataItem.prototype, \"axisBreak\", {\r\n /**\r\n * @return Axis break\r\n */\r\n get: function () {\r\n return this._axisBreak;\r\n },\r\n /**\r\n * An [[AxisBreak]] this data item falls within.\r\n *\r\n * @param axisBreak Axis break\r\n */\r\n set: function (axisBreak) {\r\n if (this._axisBreak) {\r\n this._axisBreak.dataItems.removeValue(this);\r\n }\r\n if (axisBreak) {\r\n axisBreak.dataItems.push(this);\r\n }\r\n this._axisBreak = axisBreak;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Re-draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisDataItem.prototype.validate = function () {\r\n if (this.component) {\r\n this.component.validateDataElement(this);\r\n }\r\n };\r\n /**\r\n * Appends data item's elements to the parent [[Container]].\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisDataItem.prototype.appendChildren = function () {\r\n if (this.component) {\r\n this.component.appendDataItem(this);\r\n }\r\n };\r\n /**\r\n * Checks if data item has particular property set.\r\n *\r\n * @param prop Property name\r\n * @return Property set?\r\n */\r\n AxisDataItem.prototype.hasProperty = function (prop) {\r\n return prop == \"component\" ? true : _super.prototype.hasProperty.call(this, prop);\r\n };\r\n /**\r\n * Copies all parameters from another [[AxisDataItem]].\r\n *\r\n * @param source Source AxisDataItem\r\n */\r\n AxisDataItem.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.text = source.text;\r\n if (source.bullet) {\r\n this.bullet = source.bullet.clone();\r\n }\r\n this.minPosition = source.minPosition;\r\n this.maxPosition = source.maxPosition;\r\n };\r\n /**\r\n * Sets visibility of the Data Item.\r\n *\r\n * @param value Data Item\r\n */\r\n AxisDataItem.prototype.setVisibility = function (value, noChangeValues) {\r\n _super.prototype.setVisibility.call(this, value, noChangeValues);\r\n if (this._contents) {\r\n this._contents.visible = value;\r\n }\r\n };\r\n Object.defineProperty(AxisDataItem.prototype, \"bullet\", {\r\n /**\r\n * @return Bullet\r\n */\r\n get: function () {\r\n return this._bullet;\r\n },\r\n /**\r\n * Set it to an instance of any [[Sprite]]. It will be displayed as an axis\r\n * bullet in the middle of the cell, or specific value.\r\n *\r\n * If you need position bullet relatively to the cell, use [[AxisBullet]]\r\n * instead. It has a `location` property which can be used to indicate\r\n * precise relative location within cell/range.\r\n *\r\n * Also, [[AxisBullet]] is a [[Container]] so you can push any other element\r\n * into it.\r\n *\r\n * NOTE: `location` is relative to the parent axis range's scope, i.e.\r\n * between its `date` and `endDate` for [[DateAxis]], or `value`/`endValue`\r\n * ([[ValueAxis]]), or `category`/`endCategory` ([[categoryAxis]]).\r\n *\r\n * ```TypeScript\r\n * let range = dateAxis.axisRanges.create();\r\n * range.date = new Date(2018, 0, 5);\r\n *\r\n * let flag = new am4plugins_bullets.FlagBullet();\r\n * flag.label.text = \"Hello\";\r\n *\r\n * range.bullet = flag;\r\n * ```\r\n * ```JavaScript\r\n * var range = dateAxis.axisRanges.create();\r\n * range.date = new Date(2018, 0, 5);\r\n *\r\n * var flag = new am4plugins_bullets.FlagBullet();\r\n * flag.label.text = \"Hello\";\r\n *\r\n * range.bullet = flag;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"xAxes\": [{\r\n * \"type\": \"DateAxis\",\r\n * // ...\r\n * \"axisRanges\": [{\r\n * \"date\": new Date(2018, 0, 5),\r\n * \"bullet: {\r\n * \"type\": \"FlagBullet\",\r\n * \"label\": {\r\n * \"text\": \"Hello\"\r\n * }\r\n * }\r\n * }]\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @since 4.5.9\r\n * @param value Bullet\r\n */\r\n set: function (value) {\r\n if (this._bullet && this._bullet != value) {\r\n $array.remove(this.sprites, this._bullet);\r\n this._bullet.dataItem = undefined;\r\n }\r\n this._bullet = value;\r\n if (value) {\r\n this.addSprite(value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AxisDataItem;\r\n}(DataItem));\r\nexport { AxisDataItem };\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines named positions for data item's location within [[Axis]].\r\n */\r\nexport var AxisItemLocation;\r\n(function (AxisItemLocation) {\r\n AxisItemLocation[AxisItemLocation[\"Start\"] = 0] = \"Start\";\r\n AxisItemLocation[AxisItemLocation[\"Middle\"] = 0.5] = \"Middle\";\r\n AxisItemLocation[AxisItemLocation[\"End\"] = 1] = \"End\";\r\n})(AxisItemLocation || (AxisItemLocation = {}));\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A base class for all Axis elements.\r\n *\r\n * @see {@link IAxisEvents} for a list of available Events\r\n * @see {@link IAxisAdapters} for a list of available Adapters\r\n */\r\nvar Axis = /** @class */ (function (_super) {\r\n __extends(Axis, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Axis() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Number of Grid elements on the axis.\r\n */\r\n _this._gridCount = 10;\r\n /**\r\n * A list of [[XYSeries]] that are using this Axis.\r\n */\r\n _this._series = new List();\r\n /**\r\n * Specifies if axis should be automatically disposed when removing from\r\n * chart's axis list.\r\n *\r\n * @default true\r\n */\r\n _this.autoDispose = true;\r\n /**\r\n * @ignore\r\n */\r\n _this._axisItemCount = 0;\r\n if (_this.constructor === Axis) {\r\n throw new Error(\"'Axis' cannot be instantiated directly. Please use a specific axis type.\");\r\n }\r\n _this.hideTooltipWhileZooming = true;\r\n _this.minWidth = 0.0001;\r\n _this.minHeight = 0.0001;\r\n _this.className = \"Axis\";\r\n _this.shouldClone = false;\r\n _this.setPropertyValue(\"cursorTooltipEnabled\", true);\r\n _this.toggleZoomOutButton = true;\r\n _this.zoomable = true;\r\n var interfaceColors = new InterfaceColorSet();\r\n // Create title\r\n _this.title = new Label();\r\n _this.title.shouldClone = false;\r\n _this._disposers.push(_this.title);\r\n _this.setPropertyValue(\"startLocation\", 0);\r\n _this.setPropertyValue(\"endLocation\", 1);\r\n // Data item iterator\r\n _this._dataItemsIterator = new $iter.ListIterator(_this.dataItems, function () { return _this.dataItems.create(); });\r\n _this._dataItemsIterator.createNewItems = true;\r\n // Create tooltip\r\n var tooltip = new Tooltip();\r\n _this._disposers.push(tooltip);\r\n tooltip.label.padding(5, 10, 5, 10);\r\n tooltip.background.pointerLength = 5;\r\n tooltip.fitPointerToBounds = true;\r\n tooltip.background.filters.clear();\r\n // Set virtual parentfor the tooltip so that it can properly inheirt\r\n // formatters from the axis.\r\n tooltip.virtualParent = _this;\r\n // Create background element for the tooltip\r\n var background = tooltip.background;\r\n background.cornerRadius = 0;\r\n background.fill = interfaceColors.getFor(\"alternativeBackground\");\r\n background.stroke = background.fill;\r\n background.strokeWidth = 1;\r\n background.fillOpacity = 1;\r\n tooltip.label.fill = interfaceColors.getFor(\"alternativeText\");\r\n _this.tooltip = tooltip;\r\n // Accessibility\r\n _this.readerHidden = true;\r\n _this.events.on(\"rangechangestarted\", function () {\r\n _this.series.each(function (series) {\r\n if (series.hideTooltipWhileZooming) {\r\n series.tooltip.hide();\r\n series.tooltip.preventShow = true;\r\n }\r\n });\r\n if (_this.hideTooltipWhileZooming) {\r\n _this.tooltip.hide();\r\n _this.tooltip.preventShow = true;\r\n }\r\n }, undefined, false);\r\n _this.events.on(\"rangechangeended\", function () {\r\n _this.series.each(function (series) {\r\n if (series.hideTooltipWhileZooming) {\r\n series.tooltip.hide();\r\n series.tooltip.preventShow = false;\r\n }\r\n });\r\n if (_this.hideTooltipWhileZooming) {\r\n _this.tooltip.hide();\r\n _this.tooltip.preventShow = false;\r\n }\r\n }, undefined, false);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Holds reference to a function that accepts a DataItem and its index as\r\n * parameters.\r\n *\r\n * It can either return a fill opacity for a fill, or manipulate data item\r\n * directly, to create various highlighting scenarios.\r\n *\r\n * For example, you can set it up to highlight only weekends on a\r\n * [[DateAxis]].\r\n */\r\n Axis.prototype.fillRule = function (dataItem, index) {\r\n if (!$type.isNumber(index)) {\r\n index = dataItem.index;\r\n }\r\n if (index / 2 == Math.round(index / 2)) {\r\n dataItem.axisFill.__disabled = true;\r\n dataItem.axisFill.opacity = 0;\r\n }\r\n else {\r\n dataItem.axisFill.opacity = 1;\r\n dataItem.axisFill.__disabled = false;\r\n }\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n Axis.prototype.createDataItem = function () {\r\n return new AxisDataItem();\r\n };\r\n /**\r\n * Invalidates layout.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Axis.prototype.invalidateLayout = function () {\r\n _super.prototype.invalidateLayout.call(this);\r\n // this puts series after axis in invalidation order also makes series update it's data items in case widht/height of a series is not 100%\r\n $iter.each(this.series.iterator(), function (series) {\r\n series.invalidateLayout();\r\n });\r\n };\r\n /**\r\n * Invalidates series of this axis.\r\n */\r\n Axis.prototype.invalidateSeries = function () {\r\n // this puts series after axis in invalidation order also makes series update it's data items in case widht/height of a series is not 100%\r\n $iter.each(this.series.iterator(), function (series) {\r\n series.invalidate();\r\n });\r\n };\r\n /**\r\n * Override to cancel super call for data element validation.\r\n * @ignore\r\n */\r\n Axis.prototype.validateDataElements = function () {\r\n this._axisItemCount = 0;\r\n if (this.ghostLabel) {\r\n this.renderer.updateLabelElement(this.ghostLabel, this.start, this.end);\r\n this.ghostLabel.validate();\r\n }\r\n };\r\n /**\r\n * Recalculates the number of grid items on the axis.\r\n */\r\n Axis.prototype.updateGridCount = function () {\r\n if (this.renderer) {\r\n var gridCount = this.axisLength / this.renderer.minGridDistance;\r\n if (gridCount != this._gridCount) {\r\n this._gridCount = gridCount;\r\n this.clearCache();\r\n }\r\n }\r\n };\r\n /**\r\n * Redraws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Axis.prototype.validateLayout = function () {\r\n this.axisFullLength = this.axisLength / (this.end - this.start);\r\n _super.prototype.validateLayout.call(this);\r\n this.updateGridCount();\r\n var renderer = this.renderer;\r\n if (renderer) {\r\n renderer.updateAxisLine();\r\n renderer.updateTooltip();\r\n renderer.updateBaseGridElement();\r\n }\r\n if (this._prevLength != this.axisLength) {\r\n this.dispatchImmediately(\"lengthchanged\");\r\n this._prevLength = this.axisLength;\r\n }\r\n };\r\n /**\r\n * Initializes Axis' renderer.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Axis.prototype.initRenderer = function () {\r\n };\r\n /**\r\n * Adds a data item to the Axis.\r\n *\r\n * @param dataItem Data item\r\n */\r\n Axis.prototype.appendDataItem = function (dataItem) {\r\n var renderer = this.renderer;\r\n var tick = dataItem.tick;\r\n if (tick) {\r\n if (tick.above) {\r\n tick.parent = renderer.bulletsContainer;\r\n }\r\n else {\r\n tick.parent = renderer.gridContainer;\r\n }\r\n }\r\n if (dataItem.label) {\r\n dataItem.label.parent = renderer;\r\n }\r\n var axisFill = dataItem.axisFill;\r\n if (axisFill) {\r\n if (axisFill.above) {\r\n axisFill.parent = renderer.bulletsContainer;\r\n }\r\n else {\r\n axisFill.parent = renderer.gridContainer;\r\n }\r\n }\r\n var grid = dataItem.grid;\r\n if (grid) {\r\n if (grid.above) {\r\n grid.parent = renderer.bulletsContainer;\r\n }\r\n else {\r\n grid.parent = renderer.gridContainer;\r\n }\r\n }\r\n if (dataItem.bullet) {\r\n dataItem.bullet.parent = renderer.bulletsContainer;\r\n }\r\n };\r\n /**\r\n * Redraws Axis' related items.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Axis.prototype.validate = function () {\r\n _super.prototype.validate.call(this);\r\n this.validateLayout();\r\n this.renderer.updateGridContainer();\r\n };\r\n /**\r\n * Redars Axis ranges.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Axis.prototype.validateAxisRanges = function () {\r\n var _this = this;\r\n $iter.each(this.axisRanges.iterator(), function (axisRange) {\r\n _this.appendDataItem(axisRange);\r\n _this.validateDataElement(axisRange);\r\n if (axisRange.grid) {\r\n axisRange.grid.validate();\r\n }\r\n if (axisRange.tick) {\r\n axisRange.tick.validate();\r\n }\r\n if (axisRange.axisFill) {\r\n axisRange.axisFill.validate();\r\n }\r\n if (axisRange.label) {\r\n axisRange.label.validate();\r\n }\r\n });\r\n };\r\n /**\r\n * Invalidates all axis breaks, so they are redrawn.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Axis.prototype.validateBreaks = function () {\r\n if (this._axisBreaks) {\r\n $iter.each(this._axisBreaks.iterator(), function (axisBreak) {\r\n axisBreak.invalidate();\r\n });\r\n }\r\n };\r\n /**\r\n * Associates an Axis break with this Axis, after it is inserted into\r\n * `axisBreaks`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\r\n Axis.prototype.processBreak = function (event) {\r\n var axisBreak = event.newValue;\r\n axisBreak.parent = this.renderer.breakContainer;\r\n axisBreak.axis = this;\r\n };\r\n /**\r\n * Registers a [[XYSeries]] element with this Axis.\r\n *\r\n * Returns a [[Disposer]] for all events, added to Series for watching\r\n * changes in Axis, and vice versa.\r\n * @ignore\r\n * @param series Series\r\n * @return Event disposer\r\n */\r\n Axis.prototype.registerSeries = function (series) {\r\n var _this = this;\r\n this.series.moveValue(series);\r\n return new MultiDisposer([\r\n new Disposer(function () {\r\n _this.series.removeValue(series);\r\n }),\r\n this.events.on(\"lengthchanged\", series.invalidate, series, false),\r\n this.events.on(\"lengthchanged\", series.createMask, series, false),\r\n this.events.on(\"startchanged\", series.invalidate, series, false),\r\n this.events.on(\"endchanged\", series.invalidate, series, false),\r\n ]);\r\n };\r\n Object.defineProperty(Axis.prototype, \"renderer\", {\r\n /**\r\n * @return Renderer\r\n */\r\n get: function () {\r\n return this._renderer;\r\n },\r\n /**\r\n * An [[AxisRenderer]] to be used to render this Axis.\r\n *\r\n * Please note that most of the settings, related to Axis' appearance are set\r\n * via its renderer. Not directly on the Axis.\r\n *\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * axis.renderer.inside = true;\r\n * axis.renderer.minLabelPosition = 0.1;\r\n * axis.renderer.maxLabelPosition = 0.9;\r\n * ```\r\n * ```JavaScript\r\n * axis.renderer.inside = true;\r\n * axis.renderer.minLabelPosition = 0.1;\r\n * axis.renderer.maxLabelPosition = 0.9;\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/} for more info\r\n * @param renderer Renderer\r\n */\r\n set: function (renderer) {\r\n if (renderer != this._renderer) {\r\n this._renderer = renderer;\r\n renderer.chart = this.chart;\r\n renderer.axis = this;\r\n renderer.parent = this;\r\n this.title.parent = this; // we add title to axis and set layout in renderer to avoid one extra container, as otherwise axis container would be used for holding renderer only\r\n this.initRenderer();\r\n this._disposers.push(renderer.gridContainer.events.on(\"maxsizechanged\", this.invalidate, this, false));\r\n var ghostLabel_1 = this.renderer.labels.create();\r\n this._disposers.push(ghostLabel_1);\r\n ghostLabel_1.dataItem = this.dataItems.template.clone(); // just for the adapters not to fail\r\n ghostLabel_1.text = \"L\";\r\n ghostLabel_1.parent = this.renderer;\r\n ghostLabel_1.shouldClone = false;\r\n ghostLabel_1.fillOpacity = 0;\r\n ghostLabel_1.opacity = 0;\r\n ghostLabel_1.strokeOpacity = 0;\r\n ghostLabel_1.interactionsEnabled = false;\r\n ghostLabel_1.validate();\r\n this.ghostLabel = ghostLabel_1;\r\n this.events.on(\"beforedatavalidated\", function () {\r\n ghostLabel_1.text = \"L\";\r\n }, undefined, false);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts a relative position to angle. (for circular axes)\r\n *\r\n * @param position Position (0-1)\r\n * @return Angle\r\n */\r\n Axis.prototype.positionToAngle = function (position) {\r\n return this.renderer.positionToAngle(position);\r\n };\r\n /**\r\n * Converts pixel coordinates to a relative position. (0-1)\r\n *\r\n * @param point Coorinates (px)\r\n * @return Position (0-1)\r\n */\r\n Axis.prototype.pointToPosition = function (point) {\r\n return this.renderer.pointToPosition(point);\r\n };\r\n /**\r\n * Converts relative position to coordinate.\r\n *\r\n * @since 4.7.15\r\n * @param position (0-1)\r\n * @return coordinate (px)\r\n */\r\n Axis.prototype.positionToCoordinate = function (position) {\r\n return this.renderer.positionToCoordinate(position);\r\n };\r\n /**\r\n * [getAnyRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param start [description]\r\n * @param end [description]\r\n * @return [description]\r\n */\r\n Axis.prototype.getAnyRangePath = function (start, end) {\r\n return this.renderer.getPositionRangePath(start, end);\r\n };\r\n /**\r\n * Converts any positional parameter to a relative position on axis.\r\n *\r\n * @todo Description (review)\r\n * @param value Pisition\r\n * @return Position (0-1)\r\n */\r\n Axis.prototype.anyToPosition = function (value) {\r\n return 0;\r\n };\r\n /**\r\n * Converts any positional parameter to a relative position on axis.\r\n *\r\n * @todo Description (review)\r\n * @param value Pisition\r\n * @return Orientation point\r\n */\r\n Axis.prototype.anyToPoint = function (value) {\r\n return { x: 0, y: 0, angle: 0 };\r\n };\r\n /**\r\n * [getPositionRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param startPosition [description]\r\n * @param endPosition [description]\r\n * @return [description]\r\n */\r\n Axis.prototype.getPositionRangePath = function (startPosition, endPosition) {\r\n if (this.renderer) {\r\n return this.renderer.getPositionRangePath(startPosition, endPosition);\r\n }\r\n return \"\";\r\n };\r\n Object.defineProperty(Axis.prototype, \"axisLength\", {\r\n /**\r\n * Actual axis length in pixels.\r\n *\r\n * @return Axis length (px)\r\n */\r\n get: function () {\r\n if (this.renderer) {\r\n return this.renderer.axisLength;\r\n }\r\n return 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Axis.prototype, \"cursorTooltipEnabled\", {\r\n /**\r\n * @return Display tooltip?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"cursorTooltipEnabled\");\r\n },\r\n /**\r\n * Indicates if axis should display a tooltip for chart's cursor.\r\n *\r\n * @param value Display tooltip?\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"cursorTooltipEnabled\", value)) {\r\n if (value && this.renderer) {\r\n this.renderer.updateTooltip();\r\n }\r\n else if (this.tooltip) {\r\n this.tooltip.hide(0);\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Axis.prototype, \"toggleZoomOutButton\", {\r\n /**\r\n * @return Toggle zoom out button?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"toggleZoomOutButton\");\r\n },\r\n /**\r\n * Normally, when axis is zoomed in, a zoom out button is shown by a chart,\r\n * and vice versa: when axis is zoomed out completely, zoom out button is\r\n * hidden.\r\n *\r\n * Setting this to `false` will disable this behavior. Zooming in our out\r\n * this axis will not reveal or hide zoom out button.\r\n *\r\n * @default true\r\n * @since 4.6.2\r\n * @param value Toggle zoom out button?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"toggleZoomOutButton\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Hides element's [[Tooltip]].\r\n *\r\n * @see {@link Tooltip}\r\n */\r\n Axis.prototype.hideTooltip = function (duration) {\r\n _super.prototype.hideTooltip.call(this, duration);\r\n this._tooltipPosition = undefined;\r\n };\r\n /**\r\n * Shows Axis tooltip at specific relative position within Axis. (0-1)\r\n *\r\n * @param position Position (0-1)\r\n * @param local or global position\r\n */\r\n Axis.prototype.showTooltipAtPosition = function (position, local) {\r\n var tooltip = this._tooltip;\r\n if (!tooltip || this.dataItems.length <= 0) {\r\n this._tooltipPosition = undefined;\r\n }\r\n else {\r\n if (!local) {\r\n position = this.toAxisPosition(position);\r\n }\r\n if (!$type.isNumber(position) || position < this.start || position > this.end) {\r\n tooltip.hide(0);\r\n this._tooltipPosition = undefined;\r\n return;\r\n }\r\n var renderer = this.renderer;\r\n //@todo: think of how to solve this better\r\n if (!tooltip.parent) {\r\n tooltip.parent = this.tooltipContainer;\r\n }\r\n var tooltipLocation = renderer.tooltipLocation;\r\n var startPosition = this.getCellStartPosition(position);\r\n var endPosition = this.getCellEndPosition(position);\r\n if (this.tooltipPosition == \"fixed\") {\r\n position = startPosition + (endPosition - startPosition) * tooltipLocation;\r\n }\r\n position = $math.fitToRange(position, this.start, this.end);\r\n if (this._tooltipPosition != position) {\r\n this._tooltipPosition = position;\r\n var tooltipLocation2 = renderer.tooltipLocation2;\r\n var startPoint = renderer.positionToPoint(startPosition, tooltipLocation2);\r\n var endPoint = renderer.positionToPoint(endPosition, tooltipLocation2);\r\n // save values so cursor could use them\r\n this.currentItemStartPoint = startPoint;\r\n this.currentItemEndPoint = endPoint;\r\n if (renderer.fullWidthTooltip) {\r\n tooltip.width = endPoint.x - startPoint.x;\r\n tooltip.height = endPoint.y - startPoint.y;\r\n }\r\n var point = renderer.positionToPoint(position, tooltipLocation2);\r\n var globalPoint = $utils.spritePointToSvg(point, this.renderer.line);\r\n tooltip.text = this.getTooltipText(position);\r\n if (tooltip.text) {\r\n tooltip.delayedPointTo(globalPoint);\r\n tooltip.show();\r\n }\r\n }\r\n if (!this.cursorTooltipEnabled || this.tooltip.disabled) {\r\n tooltip.hide(0);\r\n }\r\n }\r\n };\r\n /**\r\n * Converts relative position (0-1) to Axis position with zoom level and\r\n * inversed taken into account.\r\n *\r\n * @param position Global position (0-1)\r\n * @return Position within Axis (0-1)\r\n */\r\n Axis.prototype.toAxisPosition = function (position) {\r\n position = this.renderer.toAxisPosition(position);\r\n if (position == undefined) {\r\n return;\r\n }\r\n position = position * (this.end - this.start);\r\n if (this.renderer.inversed) {\r\n position = this.end - position;\r\n }\r\n else {\r\n position = this.start + position;\r\n }\r\n return position;\r\n };\r\n /**\r\n * Converts position on the axis with zoom level and\r\n * inversed taken into account to global position.\r\n *\r\n * @param position Axis position (0-1)\r\n * @return Global position (0-1)\r\n */\r\n Axis.prototype.toGlobalPosition = function (position) {\r\n if (this.renderer.inversed) {\r\n position = this.end - position;\r\n }\r\n else {\r\n position = position - this.start;\r\n }\r\n return position / (this.end - this.start);\r\n };\r\n /**\r\n * Returns text to be used for cursor's Axis tooltip.\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @param position Position coordinate (px)\r\n * @return Label text\r\n */\r\n Axis.prototype.getTooltipText = function (position) {\r\n return;\r\n };\r\n /**\r\n * Updates Axis' tooltip's position and possibly size, and pointer (stem)\r\n * place.\r\n *\r\n * @ignore Exclude from docs\r\n * @param pointerOrientation Pointer (stem) orientation\r\n * @param boundingRectangle A rectangle for tooltip to fit within\r\n */\r\n Axis.prototype.updateTooltip = function (pointerOrientation, boundingRectangle) {\r\n var tooltip = this._tooltip;\r\n if (tooltip) {\r\n tooltip.fixDoc = false;\r\n tooltip.pointerOrientation = pointerOrientation;\r\n tooltip.setBounds($utils.spriteRectToSvg(boundingRectangle, this.renderer.line));\r\n }\r\n };\r\n /**\r\n * [roundPosition description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param position Relative position\r\n * @param location Location on axis\r\n * @return Rounded position\r\n */\r\n Axis.prototype.roundPosition = function (position, location, axisLocation) {\r\n return position;\r\n };\r\n /**\r\n * [getCellStartPosition description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param position [description]\r\n * @return [description]\r\n */\r\n Axis.prototype.getCellStartPosition = function (position) {\r\n return position;\r\n };\r\n /**\r\n * [getCellEndPosition description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param position [description]\r\n * @return [description]\r\n */\r\n Axis.prototype.getCellEndPosition = function (position) {\r\n return position;\r\n };\r\n Object.defineProperty(Axis.prototype, \"axisRanges\", {\r\n /**\r\n * A list of axis ranges for this Axis.\r\n *\r\n * @return Axis ranges\r\n */\r\n get: function () {\r\n if (!this._axisRanges) {\r\n var dataItem = this.createDataItem();\r\n dataItem.isRange = true;\r\n dataItem.axisFill = this.renderer.axisFills.template.clone();\r\n dataItem.grid = this.renderer.grid.template.clone();\r\n dataItem.tick = this.renderer.ticks.template.clone();\r\n dataItem.label = this.renderer.labels.template.clone();\r\n dataItem.isTemplate = true;\r\n dataItem.component = this;\r\n dataItem.axisFill.disabled = false;\r\n dataItem.tick.disabled = false;\r\n dataItem.grid.disabled = false;\r\n dataItem.label.disabled = false;\r\n this._axisRanges = new ListTemplate(dataItem);\r\n this._axisRanges.events.on(\"inserted\", this.processAxisRange, this, false);\r\n this._disposers.push(new ListDisposer(this._axisRanges));\r\n this._disposers.push(this._axisRanges.template);\r\n }\r\n return this._axisRanges;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Decorates an axis range after it has been added to the axis range list.\r\n *\r\n * @param event Event\r\n */\r\n Axis.prototype.processAxisRange = function (event) {\r\n var axisRange = event.newValue;\r\n axisRange.component = this;\r\n axisRange.isRange = true;\r\n };\r\n Object.defineProperty(Axis.prototype, \"axisBreaks\", {\r\n /**\r\n * A list of axis breaks on this Axis.\r\n *\r\n * @return Axis breaks.\r\n */\r\n get: function () {\r\n if (!this._axisBreaks) {\r\n this._axisBreaks = new SortedListTemplate(this.createAxisBreak(), function (a, b) {\r\n return $number.order(a.adjustedStartValue, b.adjustedStartValue);\r\n });\r\n this._axisBreaks.events.on(\"inserted\", this.processBreak, this, false);\r\n this._disposers.push(new ListDisposer(this._axisBreaks));\r\n this._disposers.push(this._axisBreaks.template);\r\n }\r\n return this._axisBreaks;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates a new axis break.\r\n *\r\n * @return Axis break\r\n */\r\n Axis.prototype.createAxisBreak = function () {\r\n return new AxisBreak();\r\n };\r\n Object.defineProperty(Axis.prototype, \"series\", {\r\n /**\r\n * A list of Series currently associated with this Axis.\r\n *\r\n * @return Series\r\n */\r\n get: function () {\r\n if (!this._series) {\r\n this._series = new List();\r\n }\r\n return this._series;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Processes Series' data items.\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Axis.prototype.processSeriesDataItems = function () {\r\n };\r\n /**\r\n * Processes Series' single data item.\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n Axis.prototype.processSeriesDataItem = function (dataItem, axisLetter) {\r\n };\r\n /**\r\n * Post-processes Serie's data items.\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Axis.prototype.postProcessSeriesDataItems = function (series) {\r\n };\r\n /**\r\n * Post-processes Serie's single data item.\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n Axis.prototype.postProcessSeriesDataItem = function (dataItem) {\r\n };\r\n //\r\n /**\r\n * Updates Axis based on all Series that might influence it.\r\n *\r\n * Called by Series after Series data is validated.\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Axis.prototype.updateAxisBySeries = function () {\r\n };\r\n /**\r\n * Hides unused data items.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Axis.prototype.hideUnusedDataItems = function () {\r\n var _this = this;\r\n // hide all unused\r\n var dataItemsIterator = this._dataItemsIterator;\r\n dataItemsIterator.createNewItems = false;\r\n $iter.each(dataItemsIterator.iterator(), function (dataItem) {\r\n _this.validateDataElement(dataItem); // solves shrinking\r\n dataItem.__disabled = true;\r\n });\r\n dataItemsIterator.clear();\r\n dataItemsIterator.createNewItems = true;\r\n };\r\n /**\r\n * Returns a Series' data item that corresponds to specific position on Axis.\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @param series Series\r\n * @param position Position (0-1)\r\n * @param findNearest Should axis try to find nearest tooltip if there is no data item at exact position\r\n * @return Data item\r\n */\r\n Axis.prototype.getSeriesDataItem = function (series, position, findNearest) {\r\n return;\r\n };\r\n /**\r\n * Returns an angle that corresponds to specific position on axis.\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem Data item\r\n * @param key ???\r\n * @param location Location\r\n * @param stackKey ???\r\n * @return Angle\r\n */\r\n Axis.prototype.getAngle = function (dataItem, key, location, stackKey, range) {\r\n return;\r\n };\r\n /**\r\n * [getX description]\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem [description]\r\n * @param key [description]\r\n * @param location [description]\r\n * @param stackKey [description]\r\n * @return [description]\r\n */\r\n Axis.prototype.getX = function (dataItem, key, location, stackKey, range) {\r\n return;\r\n };\r\n /**\r\n * [getX description]\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem [description]\r\n * @param key [description]\r\n * @param location [description]\r\n * @param stackKey [description]\r\n * @return [description]\r\n */\r\n Axis.prototype.getPositionX = function (dataItem, key, location, stackKey, range) {\r\n return;\r\n };\r\n /**\r\n * [getY description]\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem [description]\r\n * @param key [description]\r\n * @param location [description]\r\n * @param stackKey [description]\r\n * @return [description]\r\n */\r\n Axis.prototype.getY = function (dataItem, key, location, stackKey, range) {\r\n return;\r\n };\r\n /**\r\n * [getY description]\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem [description]\r\n * @param key [description]\r\n * @param location [description]\r\n * @param stackKey [description]\r\n * @return [description]\r\n */\r\n Axis.prototype.getPositionY = function (dataItem, key, location, stackKey, range) {\r\n return;\r\n };\r\n Object.defineProperty(Axis.prototype, \"basePoint\", {\r\n /**\r\n * Coordinates of the actual axis start.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Base point coordinates\r\n */\r\n get: function () {\r\n return { x: 0, y: 0 };\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * [dataChangeUpdate description]\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n Axis.prototype.dataChangeUpdate = function () {\r\n };\r\n /**\r\n * [dataChangeUpdate description]\r\n *\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n Axis.prototype.seriesDataChangeUpdate = function (series) {\r\n };\r\n /**\r\n * Removes axis breaks that fall between `min` and `max` (???)\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param min Start value\r\n * @param max End value\r\n * @return Spread o\r\n */\r\n Axis.prototype.adjustDifference = function (min, max) {\r\n var difference = max - min;\r\n if ($type.isNumber(difference)) {\r\n if (this._axisBreaks) {\r\n $iter.eachContinue(this._axisBreaks.iterator(), function (axisBreak) {\r\n var startValue = axisBreak.adjustedStartValue;\r\n var endValue = axisBreak.adjustedEndValue;\r\n if ($type.isNumber(startValue) && $type.isNumber(endValue)) {\r\n // breaks are sorted, we don't need go further anymore\r\n if (startValue > max) {\r\n return false;\r\n }\r\n if (endValue >= min) {\r\n if ($type.isNumber(startValue) && $type.isNumber(endValue)) {\r\n var breakSize = axisBreak.breakSize;\r\n var intersection = $math.intersection({ start: startValue, end: endValue }, { start: min, end: max });\r\n if (intersection) {\r\n difference -= (intersection.end - intersection.start) * (1 - breakSize);\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n });\r\n }\r\n return difference;\r\n }\r\n };\r\n /**\r\n * Checks if specific value falls within a break.\r\n *\r\n * Returns [[AxisBreak]] the value falls into.\r\n *\r\n * @param value Value to check\r\n * @return Axis break\r\n */\r\n Axis.prototype.isInBreak = function (value) {\r\n if (this._axisBreaks) {\r\n return $iter.find(this._axisBreaks.iterator(), function (axisBreak) {\r\n return value >= axisBreak.adjustedStartValue &&\r\n value <= axisBreak.adjustedEndValue;\r\n });\r\n }\r\n };\r\n /**\r\n * [fixAxisBreaks description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n Axis.prototype.fixAxisBreaks = function () {\r\n var _this = this;\r\n if (this._axisBreaks) {\r\n var axisBreaks = this._axisBreaks;\r\n if (axisBreaks.length > 0) {\r\n // first make sure that startValue is <= end value\r\n // This needs to make a copy of axisBreaks because it mutates the list while traversing\r\n // TODO very inefficient\r\n $array.each($iter.toArray(axisBreaks.iterator()), function (axisBreak) {\r\n var startValue = $math.min(axisBreak.startValue, axisBreak.endValue);\r\n var endValue = $math.max(axisBreak.startValue, axisBreak.endValue);\r\n axisBreak.adjustedStartValue = startValue;\r\n axisBreak.adjustedEndValue = endValue;\r\n _this._axisBreaks.update(axisBreak);\r\n });\r\n var firstAxisBreak = axisBreaks.first;\r\n var previousEndValue_1 = Math.min(firstAxisBreak.startValue, firstAxisBreak.endValue);\r\n // process breaks\r\n // TODO does this need to call axisBreaks.update ?\r\n $iter.each(axisBreaks.iterator(), function (axisBreak) {\r\n var startValue = axisBreak.adjustedStartValue;\r\n var endValue = axisBreak.adjustedEndValue;\r\n // breaks can't overlap\r\n // if break starts before previous break ends\r\n if (startValue < previousEndValue_1) {\r\n startValue = previousEndValue_1;\r\n if (endValue < previousEndValue_1) {\r\n endValue = previousEndValue_1;\r\n }\r\n }\r\n axisBreak.adjustedStartValue = startValue;\r\n axisBreak.adjustedEndValue = endValue;\r\n });\r\n }\r\n }\r\n };\r\n Object.defineProperty(Axis.prototype, \"startIndex\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return [description]\r\n */\r\n get: function () {\r\n return 0;\r\n },\r\n /**\r\n * We need start/end indexes of axes to be 0 - `dataItems.length`.\r\n *\r\n * Yes, also for category axis, this helps to avoid jumping of categories\r\n * while scrolling and does not do a lot of extra work as we use\r\n * protected `_startIndex` and `_endIndex` when working with items.\r\n *\r\n * @hidden\r\n */\r\n /**\r\n * [startIndex description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param value [description]\r\n */\r\n set: function (value) {\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Axis.prototype, \"endIndex\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this.dataItems.length;\r\n },\r\n /**\r\n * [endIndex description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param value [description]\r\n */\r\n set: function (value) {\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a formatted label based on position.\r\n *\r\n * Individual axis types should override this method to generate a label\r\n * that is relevant to axis type.\r\n *\r\n * Please note that `position` represents position within axis which may be\r\n * zoomed and not correspond to Cursor's `position`.\r\n *\r\n * To convert Cursor's `position` to Axis' `position` use `toAxisPosition()` method.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/tutorials/tracking-cursors-position-via-api/#Tracking_Cursor_s_position} For more information about cursor tracking.\r\n * @param position Relative position on axis (0-1)\r\n * @return Position label\r\n */\r\n Axis.prototype.getPositionLabel = function (position) {\r\n return Math.round(position * 100) + \"%x\";\r\n };\r\n Object.defineProperty(Axis.prototype, \"chart\", {\r\n /**\r\n * @return Chart\r\n */\r\n get: function () {\r\n return this._chart;\r\n },\r\n /**\r\n * A Chart this Axis belongs to.\r\n *\r\n * @param value Chart\r\n */\r\n set: function (value) {\r\n this._chart = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates a data item for a Series range.\r\n *\r\n * @param series Target Series\r\n * @return Range data item\r\n */\r\n Axis.prototype.createSeriesRange = function (series) {\r\n var range = this.axisRanges.create();\r\n range.component = this;\r\n range.axisFill = this.renderer.axisFills.template.clone();\r\n range.axisFill.disabled = false;\r\n range.axisFill.fillOpacity = 0;\r\n range.grid = this.renderer.grid.template.clone();\r\n range.grid.disabled = true;\r\n range.tick = this.renderer.ticks.template.clone();\r\n range.tick.disabled = true;\r\n range.label = this.renderer.labels.template.clone();\r\n range.label.disabled = true;\r\n range.addDisposer(new Disposer(function () {\r\n series.axisRanges.removeValue(range);\r\n }));\r\n series.axisRanges.push(range);\r\n return range;\r\n };\r\n /**\r\n * Copies all properties and related data from a different instance of Axis.\r\n *\r\n * @param source Source Axis\r\n */\r\n Axis.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n if (this.renderer) {\r\n this.renderer.copyFrom(source.renderer);\r\n }\r\n else {\r\n if (source.renderer) {\r\n this.renderer = source.renderer.clone();\r\n this._disposers.push(this.renderer);\r\n }\r\n }\r\n if (source.title) {\r\n if (!this.title) {\r\n this.title = source.title.clone();\r\n this.title.parent = this;\r\n }\r\n else {\r\n this.title.copyFrom(source.title);\r\n }\r\n this._disposers.push(this.title);\r\n }\r\n };\r\n /**\r\n * Resets internal iterator.\r\n */\r\n Axis.prototype.resetIterators = function () {\r\n this._dataItemsIterator.reset();\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n Axis.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Set up axis ranges\r\n if ($type.hasValue(config.axisRanges) && $type.isArray(config.axisRanges)) {\r\n for (var i = 0, len = config.axisRanges.length; i < len; i++) {\r\n var range = config.axisRanges[i];\r\n // If `series` is set, we know it's a series range\r\n if ($type.hasValue(range[\"series\"])) {\r\n if ($type.isString(range[\"series\"])) {\r\n if (this.map.hasKey(range[\"series\"])) {\r\n //range[\"series\"] = this.map.getKey(range[\"series\"]);\r\n config.axisRanges[i] = this.createSeriesRange(this.map.getKey(range[\"series\"]));\r\n delete (range[\"series\"]);\r\n config.axisRanges[i].config = range;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n /**\r\n * Ordering function used in JSON setup.\r\n *\r\n * @param a Item A\r\n * @param b Item B\r\n * @return Order\r\n */\r\n Axis.prototype.configOrder = function (a, b) {\r\n if (a == b) {\r\n return 0;\r\n }\r\n // last\r\n else if (a == \"title\") {\r\n return 1;\r\n }\r\n else if (b == \"title\") {\r\n return -1;\r\n }\r\n // first\r\n else if (a == \"component\") {\r\n return -1;\r\n }\r\n else if (b == \"component\") {\r\n return 1;\r\n }\r\n else {\r\n return _super.prototype.configOrder.call(this, a, b);\r\n }\r\n };\r\n Object.defineProperty(Axis.prototype, \"startLocation\", {\r\n /**\r\n * @return Location (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startLocation\");\r\n },\r\n /**\r\n * Axis start location. Works on Date/Category axis, doesn't work on Value axis.\r\n *\r\n * * 0 - Full first cell is shown.\r\n * * 0.5 - Half of first cell is shown.\r\n * * 1 - None of the first cell is visible. (you probably don't want that)\r\n *\r\n * @param value Location (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"startLocation\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Axis.prototype, \"endLocation\", {\r\n /**\r\n * @return Location (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endLocation\");\r\n },\r\n /**\r\n * Axis end location. Works on Date/Category axis, doesn't work on Value axis.\r\n *\r\n * * 0 - None of the last cell is shown. (don't do that)\r\n * * 0.5 - Half of the last cell is shown.\r\n * * 1 - Full last cell is shown.\r\n *\r\n * @param value Location (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"endLocation\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Axis.prototype.setDisabled = function (value) {\r\n var changed = _super.prototype.setDisabled.call(this, value);\r\n if (this.renderer) {\r\n this.renderer.gridContainer.disabled = value;\r\n }\r\n return changed;\r\n };\r\n Object.defineProperty(Axis.prototype, \"title\", {\r\n /**\r\n * @return Title label\r\n */\r\n get: function () {\r\n return this._title;\r\n },\r\n /**\r\n * A reference to a [[Label]] element which serves as a title to the axis.\r\n *\r\n * When axis is created it aleready has an element, so you can just modify\r\n * it.\r\n *\r\n * Or you can replace it with your own instance of `Label`.\r\n *\r\n * @param value Title label\r\n */\r\n set: function (value) {\r\n if (this._title && this._title != value) {\r\n this._title.dispose();\r\n }\r\n if (value) {\r\n this._title = value;\r\n value.parent = this;\r\n value.shouldClone = false;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Axis.prototype, \"hideTooltipWhileZooming\", {\r\n /**\r\n * @return Hide tooltip while zooming?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"hideTooltipWhileZooming\");\r\n },\r\n /**\r\n * Indicates if axis' tooltip should be hidden while axis range is animating\r\n * (zooming)\r\n *\r\n * @default true\r\n * @since 4.7.16\r\n * @param value Hide tooltip while zooming?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"hideTooltipWhileZooming\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Axis.prototype, \"zoomable\", {\r\n /**\r\n * @return Zoomable?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"zoomable\");\r\n },\r\n /**\r\n * Should the axis be zoomed with scrollbar/cursor?\r\n *\r\n * @default true\r\n * @since 4.9.28\r\n * @param value Zoomable?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"zoomable\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Axis;\r\n}(Component));\r\nexport { Axis };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Axis\"] = Axis;\r\nregistry.registeredClasses[\"AxisDataItem\"] = AxisDataItem;\r\n/**\r\n * Add default responsive rules\r\n */\r\n/**\r\n * Disable axis tooltips.\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.maybeXS,\r\n state: function (target, stateId) {\r\n if (target instanceof Axis && target.tooltip) {\r\n var state = target.states.create(stateId);\r\n state.properties.cursorTooltipEnabled = false;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n//# sourceMappingURL=Axis.js.map","/**\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { color } from \"../../core/utils/Color\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Used to draw Axis line.\r\n *\r\n * @see {@link IAxisLineEvents} for a list of available events\r\n * @see {@link IAxisLineAdapters} for a list of available Adapters\r\n */\r\nvar AxisLine = /** @class */ (function (_super) {\r\n __extends(AxisLine, _super);\r\n /**\r\n * Constructor\r\n */\r\n function AxisLine() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"AxisLine\";\r\n _this.element = _this.paper.add(\"path\");\r\n var interfaceColors = new InterfaceColorSet();\r\n _this.stroke = interfaceColors.getFor(\"grid\");\r\n _this.strokeOpacity = 0.15;\r\n _this.pixelPerfect = true;\r\n _this.fill = color();\r\n _this.applyTheme();\r\n _this.interactionsEnabled = false;\r\n return _this;\r\n //this.element.moveTo({ x: 0, y: 0 });\r\n }\r\n return AxisLine;\r\n}(Sprite));\r\nexport { AxisLine };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"AxisLine\"] = AxisLine;\r\n//# sourceMappingURL=AxisLine.js.map","import { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * AxisFill is a base class used to defines fill shapes for various\r\n * type-specific Axes.\r\n *\r\n * Axis fills are used to add fills to specific ranges of those axes.\r\n *\r\n * @see {@link IAxisFillEvents} for a list of available events\r\n * @see {@link IAxisFillAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar AxisFill = /** @class */ (function (_super) {\r\n __extends(AxisFill, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param axis Axis\r\n */\r\n function AxisFill(axis) {\r\n var _this = _super.call(this) || this;\r\n _this.axis = axis;\r\n _this.element = _this.paper.add(\"path\");\r\n _this.className = \"AxisFill\";\r\n _this.isMeasured = false;\r\n _this.location = 0;\r\n _this.above = false;\r\n var interfaceColors = new InterfaceColorSet();\r\n _this.fill = interfaceColors.getFor(\"alternativeBackground\");\r\n _this.fillOpacity = 0;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n AxisFill.prototype.setDisabled = function (value) {\r\n var changed = _super.prototype.setDisabled.call(this, value);\r\n if (this.axis) {\r\n this.axis.invalidateDataItems();\r\n }\r\n return changed;\r\n };\r\n /**\r\n * Draws the fill element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisFill.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n if (this.__disabled || this.disabled) {\r\n return;\r\n }\r\n if (this.axis && $type.isNumber(this.startPosition) && $type.isNumber(this.endPosition)) {\r\n this.fillPath = this.axis.getPositionRangePath(this.startPosition, this.endPosition);\r\n this.path = this.fillPath;\r\n if (this.isMeasured) {\r\n this.measure();\r\n }\r\n }\r\n };\r\n Object.defineProperty(AxisFill.prototype, \"startPosition\", {\r\n /**\r\n * @return Start position\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startPosition\");\r\n },\r\n /**\r\n * An actual starting position of the fill.\r\n *\r\n * @param value Starting position\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"startPosition\", value);\r\n this.invalidate(); // this is needed as relative position might not change when zooming\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisFill.prototype, \"endPosition\", {\r\n /**\r\n * @return End position\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endPosition\");\r\n },\r\n /**\r\n * An actual end position of the fill.\r\n *\r\n * @param value End position\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"endPosition\", value);\r\n this.invalidate(); // this is needed as relative position might not change when zooming\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisFill.prototype, \"location\", {\r\n /**\r\n * @return Location (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"location\");\r\n },\r\n /**\r\n * Relative location of the fill. (0-1)\r\n *\r\n * @param value Location (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"location\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n AxisFill.prototype.setPath = function (value) {\r\n if (this.setPropertyValue(\"path\", value)) {\r\n this.element.attr({ \"d\": value });\r\n return true;\r\n }\r\n return false;\r\n };\r\n Object.defineProperty(AxisFill.prototype, \"above\", {\r\n /**\r\n * @return Draw above series?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"above\");\r\n },\r\n /**\r\n * Normally fill goes below series. Set this to `true` to go above.\r\n *\r\n * @default false\r\n * @since 4.5.9\r\n * @param value Draw above series?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"above\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AxisFill;\r\n}(Sprite));\r\nexport { AxisFill };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"AxisFill\"] = AxisFill;\r\n//# sourceMappingURL=AxisFill.js.map","/**\r\n * A module defining functionality for axis grid elements.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { color } from \"../../core/utils/Color\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { defaultRules, ResponsiveBreakpoints } from \"../../core/utils/Responsive\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Displays an axis grid line.\r\n *\r\n * @see {@link IGridEvents} for a list of available events\r\n * @see {@link IGridAdapters} for a list of available Adapters\r\n * @todo Review: container is better, as we'll be able to attach something to the grid, also with 3d charts we might need some additional elements\r\n * @important\r\n */\r\nvar Grid = /** @class */ (function (_super) {\r\n __extends(Grid, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Grid() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Grid\";\r\n _this.element = _this.paper.add(\"path\");\r\n _this.location = 0.5;\r\n _this.isMeasured = false;\r\n _this.above = false;\r\n var interfaceColors = new InterfaceColorSet();\r\n _this.stroke = interfaceColors.getFor(\"grid\");\r\n _this.pixelPerfect = true;\r\n _this.strokeOpacity = 0.15;\r\n _this.fill = color(); // \"none\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(Grid.prototype, \"location\", {\r\n /**\r\n * @return Location (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"location\");\r\n },\r\n /**\r\n * Location within axis cell to place grid line on.\r\n *\r\n * * 0 - start\r\n * * 0.5 - middle\r\n * * 1 - end\r\n *\r\n * @param value Location (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"location\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Grid.prototype, \"above\", {\r\n /**\r\n * @return Draw above series?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"above\");\r\n },\r\n /**\r\n * Normally fill goes below series. Set this to `true` to go above.\r\n *\r\n * @default false\r\n * @since 4.5.9\r\n * @param value Draw above series?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"above\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n Grid.prototype.setDisabled = function (value) {\r\n var changed = _super.prototype.setDisabled.call(this, value);\r\n if (this.axis) {\r\n this.axis.invalidateDataItems();\r\n }\r\n return changed;\r\n };\r\n return Grid;\r\n}(Sprite));\r\nexport { Grid };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Grid\"] = Grid;\r\n/**\r\n * Add default responsive rules\r\n */\r\n/**\r\n * Disable grid on smaller charts\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.maybeXS,\r\n state: function (target, stateId) {\r\n if (target instanceof Grid) {\r\n var state = target.states.create(stateId);\r\n state.properties.disabled = true;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n//# sourceMappingURL=Grid.js.map","/**\r\n * Axis Label module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Label } from \"../../core/elements/Label\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Use to create labels on Axis.\r\n *\r\n * @see {@link IAxisLabelEvents} for a list of available events\r\n * @see {@link IAxisLabelAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar AxisLabel = /** @class */ (function (_super) {\r\n __extends(AxisLabel, _super);\r\n /**\r\n * Constructor\r\n */\r\n function AxisLabel() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"AxisLabel\";\r\n _this.isMeasured = false;\r\n _this.padding(10, 10, 10, 10);\r\n _this.location = 0.5;\r\n //this.nonScaling = true; // not good for perf\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(AxisLabel.prototype, \"location\", {\r\n /**\r\n * @return Location (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"location\");\r\n },\r\n /**\r\n * Relative location of the label. (0-1)\r\n *\r\n * @param value Location (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"location\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisLabel.prototype, \"inside\", {\r\n /**\r\n * Returns if label is set to be drawn inside axis.\r\n *\r\n * @return Inside?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"inside\");\r\n },\r\n /**\r\n * Sets if label should be drawn inside axis.\r\n *\r\n * @param value Inside?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"inside\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n AxisLabel.prototype.setDisabled = function (value) {\r\n var changed = _super.prototype.setDisabled.call(this, value);\r\n if (this.axis) {\r\n this.axis.invalidateDataItems();\r\n }\r\n return changed;\r\n };\r\n return AxisLabel;\r\n}(Label));\r\nexport { AxisLabel };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"AxisLabel\"] = AxisLabel;\r\n//# sourceMappingURL=AxisLabel.js.map","/**\r\n * Tick module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A basic Tick class.\r\n *\r\n * A tick is a short dash, mainly connecting an object like axis or slice to\r\n * it's textual label.\r\n *\r\n * @see {@link ITickEvents} for a list of available events\r\n * @see {@link ITickAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar Tick = /** @class */ (function (_super) {\r\n __extends(Tick, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Tick() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Tick\";\r\n var interfaceColors = new InterfaceColorSet();\r\n _this.fillOpacity = 0;\r\n _this.length = 6;\r\n _this.strokeOpacity = 0.2;\r\n _this.stroke = interfaceColors.getFor(\"grid\");\r\n _this.isMeasured = false;\r\n _this.nonScalingStroke = true;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(Tick.prototype, \"length\", {\r\n /**\r\n * @return Length (px)\r\n */\r\n get: function () {\r\n if (this.disabled) {\r\n return 0;\r\n }\r\n return this.getPropertyValue(\"length\");\r\n },\r\n /**\r\n * Length of the tick in pixels.\r\n *\r\n * @param value Length (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"length\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Tick;\r\n}(Sprite));\r\nexport { Tick };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Tick\"] = Tick;\r\n//# sourceMappingURL=Tick.js.map","/**\r\n * Axis Tick module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Tick } from \"../elements/Tick\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws an axis tick\r\n * @see {@link IAxisTickEvents} for a list of available events\r\n * @see {@link IAxisTickAdapters} for a list of available Adapters\r\n */\r\nvar AxisTick = /** @class */ (function (_super) {\r\n __extends(AxisTick, _super);\r\n function AxisTick() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"AxisTick\";\r\n _this.element = _this.paper.add(\"path\");\r\n _this.location = 0.5;\r\n _this.above = false;\r\n _this.isMeasured = false;\r\n _this.pixelPerfect = true;\r\n _this.strokeOpacity = 0;\r\n _this.length = 5;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(AxisTick.prototype, \"location\", {\r\n /**\r\n * @return Location (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"location\");\r\n },\r\n /**\r\n * Relative location of the tick. (0-1)\r\n *\r\n * @param value Location (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"location\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisTick.prototype, \"inside\", {\r\n /**\r\n * Returns if label is set to be drawn inside axis.\r\n *\r\n * @return Inside?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"inside\");\r\n },\r\n /**\r\n * Sets if tick should be drawn inside axis.\r\n *\r\n * @param value Inside?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"inside\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisTick.prototype, \"above\", {\r\n /**\r\n * @return Draw above series?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"above\");\r\n },\r\n /**\r\n * Normally tick goes below series. Set this to `true` to go above.\r\n *\r\n * @default false\r\n * @since 4.5.9\r\n * @param value Draw above series?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"above\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n AxisTick.prototype.setDisabled = function (value) {\r\n var changed = _super.prototype.setDisabled.call(this, value);\r\n if (this.axis) {\r\n this.axis.invalidateDataItems();\r\n }\r\n return changed;\r\n };\r\n return AxisTick;\r\n}(Tick));\r\nexport { AxisTick };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"AxisTick\"] = AxisTick;\r\n//# sourceMappingURL=AxisTick.js.map","/**\r\n * Module, defining base Axis Renderer.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../../core/Container\";\r\nimport { MutableValueDisposer } from \"../../core/utils/Disposer\";\r\nimport { AxisDataItem } from \"./Axis\";\r\nimport { AxisLine } from \"./AxisLine\";\r\nimport { AxisFill } from \"./AxisFill\";\r\nimport { Grid } from \"./Grid\";\r\nimport { AxisLabel } from \"./AxisLabel\";\r\nimport { AxisTick } from \"./AxisTick\";\r\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A base class for all axis renderers.\r\n *\r\n * @see {@link IAxisRendererEvents} for a list of available events\r\n * @see {@link IAxisRendererAdapters} for a list of available Adapters\r\n */\r\nvar AxisRenderer = /** @class */ (function (_super) {\r\n __extends(AxisRenderer, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param axis Related axis\r\n */\r\n function AxisRenderer() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * A related chart.\r\n */\r\n _this._chart = new MutableValueDisposer();\r\n _this.className = \"AxisRenderer\";\r\n // Set defaults\r\n _this.minGridDistance = 50;\r\n _this.inside = false;\r\n _this.inversed = false;\r\n _this.tooltipLocation = 0.5;\r\n _this.fullWidthTooltip = false;\r\n _this.cellStartLocation = 0;\r\n _this.cellEndLocation = 1;\r\n _this.minLabelPosition = 0;\r\n _this.maxLabelPosition = 1;\r\n _this.shouldClone = false;\r\n var gridContainer = _this.createChild(Container);\r\n gridContainer.shouldClone = false;\r\n gridContainer.layout = \"none\";\r\n //\tgridContainer.isMeasured = false;\r\n gridContainer.virtualParent = _this;\r\n gridContainer.width = percent(100);\r\n gridContainer.height = percent(100);\r\n _this.gridContainer = gridContainer;\r\n // not good without this\r\n gridContainer.events.on(\"maxsizechanged\", function () {\r\n if (_this.inited) {\r\n _this.invalidateAxisItems();\r\n }\r\n }, _this, false);\r\n var breakContainer = _this.createChild(Container);\r\n breakContainer.shouldClone = false;\r\n breakContainer.isMeasured = false;\r\n breakContainer.layout = \"none\";\r\n breakContainer.width = percent(100);\r\n breakContainer.height = percent(100);\r\n _this.breakContainer = breakContainer;\r\n var bulletsContainer = _this.createChild(Container);\r\n bulletsContainer.shouldClone = false;\r\n bulletsContainer.isMeasured = false;\r\n bulletsContainer.layout = \"none\";\r\n bulletsContainer.width = percent(100);\r\n bulletsContainer.height = percent(100);\r\n _this.bulletsContainer = bulletsContainer;\r\n _this.line = _this.createChild(AxisLine);\r\n _this.line.shouldClone = false;\r\n _this.line.strokeOpacity = 0;\r\n var baseGrid = _this.createChild(Grid);\r\n baseGrid.shouldClone = false;\r\n _this.baseGrid = baseGrid;\r\n // Make elements disposable\r\n var disposers = _this._disposers;\r\n disposers.push(baseGrid);\r\n disposers.push(_this.line);\r\n disposers.push(gridContainer);\r\n disposers.push(breakContainer);\r\n disposers.push(bulletsContainer);\r\n disposers.push(_this._chart);\r\n _this.ticks.template.disabled = true;\r\n _this.axisFills.template.disabled = true;\r\n _this.axisFills.template.interactionsEnabled = false;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(AxisRenderer.prototype, \"axis\", {\r\n /**\r\n * Axis of a renderer\r\n * @return axis Axis\r\n */\r\n get: function () {\r\n return this._axis;\r\n },\r\n /**\r\n * Axis of a renderer\r\n * @param axis Axis\r\n */\r\n set: function (axis) {\r\n this.setAxis(axis);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n AxisRenderer.prototype.setAxis = function (axis) {\r\n this._axis = axis;\r\n this.baseGrid.parent = axis;\r\n this.line.parent = axis;\r\n this.gridContainer.bind(\"opacity\", axis);\r\n };\r\n /**\r\n * Called when rendered is attached to an Axis, as well as a property of\r\n * Axis that might affect the appearance is updated.\r\n *\r\n * E.g. `axis.opposite`, `axis.inside`, etc.\r\n *\r\n * This method is called **before** draw, so that any related setting\r\n * changed in this method can be changed.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\r\n AxisRenderer.prototype.processRenderer = function () {\r\n this.events.on(\"sizechanged\", this.updateTooltip, this, false);\r\n this.events.on(\"positionchanged\", this.updateTooltip, this, false);\r\n this.labels.template.inside = this.inside;\r\n this.ticks.template.inside = this.inside;\r\n };\r\n /**\r\n * Updates Axis' tooltip.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\r\n AxisRenderer.prototype.updateTooltip = function () {\r\n // This is a placeholder method for extending classes to override.\r\n };\r\n Object.defineProperty(AxisRenderer.prototype, \"axisLength\", {\r\n /**\r\n * Returns actual length of the Axis, in pixels.\r\n *\r\n * @return Length (px)\r\n */\r\n get: function () {\r\n // This is a placeholder method for extending classes to override.\r\n return 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Re-positions an element to new coordinates.\r\n *\r\n * @ignore Exclude from docs\r\n * @param item A target element\r\n * @param point New coordinates\r\n */\r\n AxisRenderer.prototype.positionItem = function (item, point) {\r\n if (item) {\r\n item.moveTo(point);\r\n }\r\n };\r\n /**\r\n * Converts relative position on axis to point coordinates.\r\n *\r\n * @param position Position (0-1)\r\n * @return Point\r\n */\r\n AxisRenderer.prototype.positionToPoint = function (position, position2) {\r\n // This is a placeholder method for extending classes to override.\r\n return { x: 0, y: 0 };\r\n };\r\n /**\r\n * Converts relative position on axis to angle.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review / units)\r\n * @param position Position (0-1)\r\n * @return Angle\r\n */\r\n AxisRenderer.prototype.positionToAngle = function (position) {\r\n // This is a placeholder method for extending classes to override.\r\n return 0;\r\n };\r\n /**\r\n * Converts relative position (0-1) on axis to a pixel coordinate.\r\n *\r\n * @param position Position (0-1)\r\n * @return Coordinate (px)\r\n */\r\n AxisRenderer.prototype.positionToCoordinate = function (position) {\r\n var coordinate;\r\n var axis = this.axis;\r\n var axisFullLength = axis.axisFullLength;\r\n if (axis.renderer.inversed) {\r\n coordinate = (axis.end - position) * axisFullLength;\r\n }\r\n else {\r\n coordinate = (position - axis.start) * axisFullLength;\r\n }\r\n return coordinate;\r\n };\r\n AxisRenderer.prototype.updateGridContainer = function () {\r\n };\r\n AxisRenderer.prototype.getHeight = function () {\r\n var gridContainer = this.gridContainer;\r\n if (gridContainer.parent) {\r\n return gridContainer.parent.pixelHeight;\r\n }\r\n return this.gridContainer.pixelHeight || 0;\r\n };\r\n AxisRenderer.prototype.getWidth = function () {\r\n var gridContainer = this.gridContainer;\r\n if (gridContainer.parent) {\r\n return gridContainer.parent.pixelWidth;\r\n }\r\n return this.gridContainer.pixelWidth || 0;\r\n };\r\n /**\r\n * Converts a coordinate in pixels to a relative position. (0-1)\r\n *\r\n * @param coordinate Coordinate (px)\r\n * @param coordinate2 Coordinate of a second axis, only needed for complex axes systems, like timeline (px)\r\n * @return Position (0-1)\r\n */\r\n AxisRenderer.prototype.coordinateToPosition = function (coordinate, coordinate2) {\r\n var position;\r\n var axis = this.axis;\r\n var axisFullLength = axis.axisFullLength;\r\n if (axis.renderer.inversed) {\r\n position = axis.end - coordinate / axisFullLength;\r\n }\r\n else {\r\n position = coordinate / axisFullLength + axis.start;\r\n }\r\n return $math.round(position, 5);\r\n };\r\n /**\r\n * Converts a point at specific coordinates to a relative position (0-1)\r\n * on the axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point Point\r\n * @return Position (0-1)\r\n */\r\n AxisRenderer.prototype.pointToPosition = function (point) {\r\n // This is a placeholder method for extending classes to override.\r\n return 0;\r\n };\r\n /**\r\n * [getPositionRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param startPosition Starting position\r\n * @param endPosition End position\r\n * @return SVG path\r\n */\r\n AxisRenderer.prototype.getPositionRangePath = function (startPosition, endPosition) {\r\n return \"\";\r\n };\r\n /**\r\n * Invalidates all axis data items, effectively causing them re-evaluated.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n */\r\n AxisRenderer.prototype.invalidateAxisItems = function () {\r\n var axis = this.axis;\r\n if (axis) {\r\n axis.invalidateDataItems();\r\n }\r\n };\r\n /**\r\n * Updates and positions a grid element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param grid Grid element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRenderer.prototype.updateGridElement = function (grid, position, endPosition) {\r\n // This is a placeholder method for extending classes to override.\r\n };\r\n /**\r\n * Updates and positions a tick element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param tick Tick element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRenderer.prototype.updateTickElement = function (tick, position, endPosition) {\r\n // This is a placeholder method for extending classes to override.\r\n };\r\n /**\r\n * Updates and positions axis bullet.\r\n *\r\n * @ignore Exclude from docs\r\n * @param bullet AxisBullet element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRenderer.prototype.updateBullet = function (bullet, position, endPosition) {\r\n // This is a placeholder method for extending classes to override.\r\n };\r\n /**\r\n * Updates and positions a label element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param label Label element\r\n * @param position Starting position\r\n * @param endPosition Ending position\r\n */\r\n AxisRenderer.prototype.updateLabelElement = function (label, position, endPosition, location) {\r\n // This is a placeholder method for extending classes to override.\r\n };\r\n /**\r\n * Updates and positions the axis fill element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param fill Fill element\r\n * @param position Starting position\r\n * @param endPosition Ending position\r\n */\r\n AxisRenderer.prototype.updateFillElement = function (fill, position, endPosition) {\r\n fill.startPosition = position;\r\n fill.endPosition = endPosition;\r\n };\r\n /**\r\n * Updates and positions the axis line element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRenderer.prototype.updateAxisLine = function () {\r\n // This is a placeholder method for extending classes to override.\r\n };\r\n /**\r\n * Updates and positions the base grid element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRenderer.prototype.updateBaseGridElement = function () {\r\n // This is a placeholder method for extending classes to override.\r\n };\r\n /**\r\n * Updates and positions an axis break element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axisBreak Break element\r\n */\r\n AxisRenderer.prototype.updateBreakElement = function (axisBreak) {\r\n this.positionItem(axisBreak.startLine, axisBreak.startPoint);\r\n this.toggleVisibility(axisBreak.startLine, axisBreak.startPosition, 0, 1);\r\n this.positionItem(axisBreak.endLine, axisBreak.endPoint);\r\n this.toggleVisibility(axisBreak.endLine, axisBreak.endPosition, 0, 1);\r\n };\r\n Object.defineProperty(AxisRenderer.prototype, \"minGridDistance\", {\r\n /**\r\n * @return Min distance (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minGridDistance\");\r\n },\r\n /**\r\n * Minimum distance in pixels between grid elements.\r\n *\r\n * Use it to control density of the grid/labels on the axis.element.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/positioning-axis-elements/#Setting_the_density_of_the_the_grid_labels} for more info\r\n * @param value Min distance (px)\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"minGridDistance\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidateDataItems();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRenderer.prototype, \"chart\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Chart\r\n */\r\n get: function () {\r\n return this._chart.get();\r\n },\r\n /**\r\n * A chart, associated with the Axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Chart\r\n */\r\n set: function (value) {\r\n this._chart.set(value, null);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Toggles visibility of an element, based on its current position and\r\n * min/max position settings.\r\n *\r\n * E.g. labels based on `minLabelPosition` and `maxLabelPosition`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param sprite An element to toggle\r\n * @param position Elements current position\r\n * @param minPosition Min position setting\r\n * @param maxPosition Max position setting\r\n */\r\n AxisRenderer.prototype.toggleVisibility = function (sprite, position, minPosition, maxPosition) {\r\n var axis = this.axis;\r\n var dataItem = sprite.dataItem;\r\n if (dataItem && dataItem instanceof AxisDataItem) {\r\n if ($type.isNumber(dataItem.minPosition)) {\r\n minPosition = dataItem.minPosition;\r\n }\r\n if ($type.isNumber(dataItem.maxPosition)) {\r\n maxPosition = dataItem.maxPosition;\r\n }\r\n }\r\n var updatedStart = axis.start + (axis.end - axis.start) * (minPosition - 0.0001);\r\n var updatedEnd = axis.start + (axis.end - axis.start) * (maxPosition + 0.0001);\r\n if (!sprite.disabled) {\r\n if (position < updatedStart || position > updatedEnd) {\r\n sprite.__disabled = true;\r\n }\r\n else {\r\n sprite.__disabled = false;\r\n }\r\n }\r\n };\r\n /**\r\n * Creates visual elements for and axis break.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axisBreak Axis break\r\n */\r\n AxisRenderer.prototype.createBreakSprites = function (axisBreak) {\r\n // This is a placeholder method for extending classes to override.\r\n };\r\n Object.defineProperty(AxisRenderer.prototype, \"axisFills\", {\r\n /**\r\n * A list of Axis' Fill elements.\r\n *\r\n * Those are fill elements that cover the space between every second set\r\n * of grid lines, and can be configured to create striped charts.\r\n *\r\n * Please note that these are disabled by default. To enable them, set\r\n * template to true.\r\n *\r\n * ```TypeScript\r\n * categoryAxis.renderer.axisFills.template.disabled = false;\r\n * ```\r\n * ```JavaScript\r\n * categoryAxis.renderer.axisFills.template.disabled = false;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"xAxes\": [{\r\n * // ...\r\n * \"renderer\": {\r\n * \"axisFills\": {\r\n * \"disabled\": false\r\n * }\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/tutorials/alternated-axis-fills/} this tutorial for more info.\r\n * @return Fill elements\r\n */\r\n get: function () {\r\n if (!this._axisFills) {\r\n var fill = this.createFill(this.axis);\r\n this._axisFills = new ListTemplate(fill);\r\n fill.applyOnClones = true;\r\n fill.events.on(\"enabled\", this.invalidateAxisItems, this, false);\r\n this._disposers.push(new ListDisposer(this._axisFills));\r\n this._disposers.push(this._axisFills.template);\r\n }\r\n return this._axisFills;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a new fill element, suitable for this Axis Renderer type.\r\n *\r\n * @return Fill element\r\n */\r\n AxisRenderer.prototype.createFill = function (axis) {\r\n return new AxisFill(axis);\r\n };\r\n Object.defineProperty(AxisRenderer.prototype, \"grid\", {\r\n /**\r\n * A list of Axis' Grid elements.\r\n *\r\n * @return Grid elements\r\n */\r\n get: function () {\r\n if (!this._grid) {\r\n var grid = this.createGrid();\r\n this._grid = new ListTemplate(grid);\r\n grid.applyOnClones = true;\r\n grid.events.on(\"enabled\", this.invalidateAxisItems, this, false);\r\n this._disposers.push(new ListDisposer(this._grid));\r\n this._disposers.push(this._grid.template);\r\n }\r\n return this._grid;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a new grid element, suitable for this Axis Renderer type.\r\n *\r\n * @return Grid element\r\n */\r\n AxisRenderer.prototype.createGrid = function () {\r\n return new Grid();\r\n };\r\n Object.defineProperty(AxisRenderer.prototype, \"ticks\", {\r\n /**\r\n * A list of Axis' Tick elements.\r\n *\r\n * Please note that these are disabled by default. To enable ticks, you'll\r\n * need to set `disabled` and `strokeOpacity` properties of the tick template.\r\n *\r\n * ```TypeScript\r\n * categoryAxis.renderer.ticks.template.disabled = false;\r\n * categoryAxis.renderer.ticks.template.strokeOpacity = 0.5;\r\n * ```\r\n * ```JavaScript\r\n * categoryAxis.renderer.ticks.template.disabled = false;\r\n * categoryAxis.renderer.ticks.template.strokeOpacity = 0.5;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"xAxes\": [{\r\n * // ...\r\n * \"renderer\": {\r\n * \"ticks\": {\r\n * \"disabled\": false,\r\n * \"strokeOpacity\": 0.5\r\n * }\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @return Tick elements\r\n */\r\n get: function () {\r\n if (!this._ticks) {\r\n var tick = this.createTick();\r\n tick.applyOnClones = true;\r\n tick.isMeasured = false;\r\n tick.events.on(\"enabled\", this.invalidateAxisItems, this, false);\r\n this._ticks = new ListTemplate(tick);\r\n this._disposers.push(new ListDisposer(this._ticks));\r\n this._disposers.push(this._ticks.template);\r\n }\r\n return this._ticks;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a new tick element, suitable for this Axis Renderer type.\r\n *\r\n * @return Tick element\r\n */\r\n AxisRenderer.prototype.createTick = function () {\r\n return new AxisTick();\r\n };\r\n Object.defineProperty(AxisRenderer.prototype, \"labels\", {\r\n /**\r\n * A list of Axis' Label elements.\r\n *\r\n * @return Label elements\r\n */\r\n get: function () {\r\n if (!this._labels) {\r\n var label = this.createLabel();\r\n this._labels = new ListTemplate(label);\r\n label.applyOnClones = true;\r\n label.events.on(\"enabled\", this.invalidateAxisItems, this, false);\r\n this._disposers.push(new ListDisposer(this._labels));\r\n this._disposers.push(this._labels.template);\r\n }\r\n return this._labels;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a new label element, suitable for this Axis Renderer type.\r\n *\r\n * @return Label element\r\n */\r\n AxisRenderer.prototype.createLabel = function () {\r\n return new AxisLabel();\r\n };\r\n Object.defineProperty(AxisRenderer.prototype, \"inside\", {\r\n /**\r\n * @return Labels inside?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"inside\");\r\n },\r\n /**\r\n * Indicates whether Axis' labels and ticks should be drawn inside Plot area.\r\n *\r\n * Does not work with all renderers, like AxisRendererRadial.\r\n *\r\n * @param value Labels inside?\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"inside\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidate();\r\n }\r\n }\r\n if (value) {\r\n this.width = 0;\r\n this.height = 0;\r\n }\r\n else {\r\n this.width = undefined;\r\n this.height = undefined;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRenderer.prototype, \"opposite\", {\r\n /**\r\n * @return Draw axis on opposite side?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"opposite\");\r\n },\r\n /**\r\n * Indicates whether Axis should be drawn on the opposite side of the plot\r\n * area than it would normally be drawn based on chart's settings.\r\n *\r\n * Does not work with all renderers, like [[AxisRendererRadial]] and\r\n * [[AxisRenderer Circular].\r\n *\r\n * @param value Draw axis on opposite side?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"opposite\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRenderer.prototype, \"fullWidthTooltip\", {\r\n /**\r\n * @return Full width tooltip?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"fullWidthTooltip\");\r\n },\r\n /**\r\n * Indicates if Axis tooltip should take the whole width of the axis cell.\r\n * (between two grid lines)\r\n *\r\n * NOTE: this setting is ignored on circular axis types.\r\n *\r\n * @param value Full width tooltip?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"fullWidthTooltip\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRenderer.prototype, \"tooltipLocation\", {\r\n /**\r\n * @return Tooltip location\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tooltipLocation\");\r\n },\r\n /**\r\n * Location within axis cell to show tooltip on. (0-1)\r\n *\r\n * 0 - show at the start\r\n * 0.5 - show right in the middle\r\n * 1 - show at the end\r\n *\r\n * @param value Tooltip location\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"tooltipLocation\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRenderer.prototype, \"tooltipLocation2\", {\r\n /**\r\n * @return Tooltip location\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tooltipLocation2\");\r\n },\r\n /**\r\n * Location within secondary axis cell to show tooltip on. (0-1)\r\n *\r\n * 0 - show at the start\r\n * 0.5 - show right in the middle\r\n * 1 - show at the end\r\n *\r\n * @param value Tooltip location\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"tooltipLocation2\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRenderer.prototype, \"cellStartLocation\", {\r\n /**\r\n * @return Cell start (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"cellStartLocation\");\r\n },\r\n /**\r\n * Location for the cell start.\r\n *\r\n * Normally a \"cell\" is the whole available width in a category.\r\n *\r\n * If there are several clustered column-like series available, the whole\r\n * space is divided between each clustered column, or column stacks.\r\n *\r\n * `cellStartLocation` identifies where, within available space, the actual\r\n * cell starts.\r\n *\r\n * This, together with column series' `width` will affect actual width of\r\n * columns, and thus gaps between them.\r\n *\r\n * This will affect category-like axes only, like [[DateAxis]], or\r\n * [[CategoryAxis]].\r\n *\r\n * This is used to limit a space occupied by series like column.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/positioning-axis-elements/} for more info.\r\n * @param value Cell start (0-1)\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"cellStartLocation\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRenderer.prototype, \"cellEndLocation\", {\r\n /**\r\n * @return Cell end (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"cellEndLocation\");\r\n },\r\n /**\r\n * Location for the cell end.\r\n *\r\n * Normally a \"cell\" is the whole available width in a category.\r\n *\r\n * If there are several clustered column-like series available, the whole\r\n * space is divided between each clustered column, or column stacks.\r\n *\r\n * `cellEndLocation` identifies where, within available space, the actual\r\n * cell ends.\r\n *\r\n * This, together with column series' `width` will affect actual width of\r\n * columns, and thus gaps between them.\r\n *\r\n * This will affect category-like axes only, like [[DateAxis]], or\r\n * [[CategoryAxis]].\r\n *\r\n * This is used to limit a space occupied by series like column.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/positioning-axis-elements/} for more info.\r\n * @param value Cell end (0-1)\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"cellEndLocation\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRenderer.prototype, \"inversed\", {\r\n /**\r\n * @return Flip axis?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"inversed\");\r\n },\r\n /**\r\n * Indicates if the scale of the axis should be flipped.\r\n *\r\n * @param value Flip axis?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"inversed\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRenderer.prototype, \"minLabelPosition\", {\r\n /**\r\n * @return Min label position (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minLabelPosition\");\r\n },\r\n /**\r\n * Minimum position along the Axis, for labels.\r\n *\r\n * Labels, which have their position closer to the start of the Axis, will be\r\n * automatically hidden.\r\n *\r\n * E.g., setting this to 0.05 (5% of total axis length) would hide labels,\r\n * that would otherwise be drawn very near start of the Axis.\r\n *\r\n * This is especially usefull with `inside = true`, or if the chart hasn't\r\n * got any extra margins.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/positioning-axis-elements/} for more info.\r\n * @param value Min label position (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"minLabelPosition\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRenderer.prototype, \"maxLabelPosition\", {\r\n /**\r\n * @return Max label position (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxLabelPosition\");\r\n },\r\n /**\r\n * Maximum position along the Axis, for labels.\r\n *\r\n * Labels, which have their position closer to the and of the Axis, will be\r\n * automatically hidden.\r\n *\r\n * E.g., setting this to 0.95 (95% of total axis length) would hide labels,\r\n * that would otherwise be drawn very near end of the Axis.\r\n *\r\n * This is especially usefull with `inside = true`, or if the chart hasn't\r\n * got any extra margins.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/positioning-axis-elements/} for more info.\r\n * @param value Max label position (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"maxLabelPosition\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies all settings and related items from another object of the same\r\n * type.\r\n *\r\n * @param source Source object\r\n */\r\n AxisRenderer.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.grid.template.copyFrom(source.grid.template);\r\n this.ticks.template.copyFrom(source.ticks.template);\r\n this.labels.template.copyFrom(source.labels.template);\r\n this.axisFills.template.copyFrom(source.axisFills.template);\r\n this.line.copyFrom(source.line);\r\n this.baseGrid.copyFrom(source.baseGrid);\r\n };\r\n /**\r\n * @ignore\r\n */\r\n AxisRenderer.prototype.toAxisPosition = function (value) {\r\n return value;\r\n };\r\n /**\r\n * Sets `visibility` property:\r\n *\r\n * * `true` - visible\r\n * * `false` - hidden\r\n *\r\n * @param value true - visible, false - hidden\r\n * @return Current visibility\r\n */\r\n AxisRenderer.prototype.setVisibility = function (value) {\r\n _super.prototype.setVisibility.call(this, value);\r\n this.bulletsContainer.visible = value;\r\n };\r\n return AxisRenderer;\r\n}(Container));\r\nexport { AxisRenderer };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"AxisRenderer\"] = AxisRenderer;\r\n//# sourceMappingURL=AxisRenderer.js.map","/**\r\n * Axis Bullet module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../../core/Container\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Used to draw a positioned bullet (element) on an Axis.\r\n *\r\n * ```TypeScript\r\n * let range = dateAxis.axisRanges.create();\r\n * range.date = new Date(2018, 0, 5);\r\n *\r\n * let flag = new am4plugins_bullets.FlagBullet();\r\n * flag.label.text = \"Hello\";\r\n *\r\n * range.bullet = flag;\r\n * ```\r\n * ```JavaScript\r\n * var range = dateAxis.axisRanges.create();\r\n * range.date = new Date(2018, 0, 5);\r\n *\r\n * var flag = new am4plugins_bullets.FlagBullet();\r\n * flag.label.text = \"Hello\";\r\n *\r\n * range.bullet = flag;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"xAxes\": [{\r\n * \"type\": \"DateAxis\",\r\n * // ...\r\n * \"axisRanges\": [{\r\n * \"date\": new Date(2018, 0, 5),\r\n * \"bullet: {\r\n * \"type\": \"FlagBullet\",\r\n * \"label\": {\r\n * \"text\": \"Hello\"\r\n * }\r\n * }\r\n * }]\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @since 4.5.9\r\n * @see {@link IAxisBulletEvents} for a list of available events\r\n * @see {@link IAxisBulletAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar AxisBullet = /** @class */ (function (_super) {\r\n __extends(AxisBullet, _super);\r\n function AxisBullet() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"AxisBullet\";\r\n _this.location = 0.5;\r\n _this.isMeasured = false;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(AxisBullet.prototype, \"location\", {\r\n /**\r\n * @return Location (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"location\");\r\n },\r\n /**\r\n * Relative position within cell/range.\r\n *\r\n * Value range is from from `0` (beginning) to `1` (end).\r\n *\r\n * NOTE: `location` is relative to the parent axis range's scope, i.e.\r\n * between its `date` and `endDate` for [[DateAxis]], or `value`/`endValue`\r\n * ([[ValueAxis]]), or `category`/`endCategory` ([[categoryAxis]]).\r\n *\r\n * ```TypeScript\r\n * let range = dateAxis.axisRanges.create();\r\n * range.date = new Date(2018, 0, 5);\r\n * range.endDate = new Date(2018, 0, 6);\r\n *\r\n * let bullet = new am4charts.AxisBullet();\r\n * bullet.location = 1;\r\n *\r\n * let flag = bullet.createChild(am4plugins_bullets.FlagBullet);\r\n * flag.label.text = \"Hello\";\r\n * ```\r\n * ```JavaScript\r\n * var range = dateAxis.axisRanges.create();\r\n * range.date = new Date(2018, 0, 5);\r\n * range.endDate = new Date(2018, 0, 6);\r\n *\r\n * var bullet = new am4charts.AxisBullet();\r\n * bullet.location = 1;\r\n *\r\n * var flag = bullet.createChild(am4plugins_bullets.FlagBullet);\r\n * flag.label.text = \"Hello\";\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"xAxes\": [{\r\n * \"type\": \"DateAxis\",\r\n * // ...\r\n * \"axisRanges\": [{\r\n * \"date\": new Date(2018, 0, 5),\r\n * \"endDate\": new Date(2018, 0, 6),\r\n * \"bullet: {\r\n * \"type\": \"AxisBullet\",\r\n * \"location\": 1,\r\n * \"children\": [{\r\n * \"type\": \"FlagBullet\",\r\n * \"label\": {\r\n * \"text\": \"Hello\"\r\n * }\r\n * }]\r\n * }\r\n * }]\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @default 0.5\r\n * @param value Location (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"location\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n AxisBullet.prototype.setDisabled = function (value) {\r\n var changed = _super.prototype.setDisabled.call(this, value);\r\n if (this.axis) {\r\n this.axis.invalidateDataItems();\r\n }\r\n return changed;\r\n };\r\n return AxisBullet;\r\n}(Container));\r\nexport { AxisBullet };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"AxisBullet\"] = AxisBullet;\r\n//# sourceMappingURL=AxisBullet.js.map","/**\r\n * Module, defining Axis Renderer for vertical axes.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AxisRenderer } from \"./AxisRenderer\";\r\nimport { WavedLine } from \"../../core/elements/WavedLine\";\r\nimport { WavedRectangle } from \"../../core/elements/WavedRectangle\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { percent, Percent } from \"../../core/utils/Percent\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { defaultRules, ResponsiveBreakpoints } from \"../../core/utils/Responsive\";\r\nimport { AxisBullet } from \"./AxisBullet\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A renderer for vertical axis.\r\n *\r\n * @see {@link IAxisRendererYEvents} for a list of available events\r\n * @see {@link IAxisRendererYAdapters} for a list of available Adapters\r\n */\r\nvar AxisRendererY = /** @class */ (function (_super) {\r\n __extends(AxisRendererY, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param axis Related axis\r\n */\r\n function AxisRendererY() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"AxisRendererY\";\r\n _this.minGridDistance = 40;\r\n _this.opposite = false;\r\n _this.height = percent(100);\r\n _this.labels.template.verticalCenter = \"middle\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n AxisRendererY.prototype.setAxis = function (axis) {\r\n _super.prototype.setAxis.call(this, axis);\r\n axis.layout = \"horizontal\";\r\n };\r\n /**\r\n * @ignore\r\n */\r\n AxisRendererY.prototype.updateGridContainer = function () {\r\n var axis = this.axis;\r\n if (axis) {\r\n var gridContainer = this.gridContainer;\r\n gridContainer.y = axis.pixelY;\r\n gridContainer.height = axis.axisLength;\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n AxisRendererY.prototype.toAxisPosition = function (value) {\r\n var axis = this.axis;\r\n if (axis) {\r\n var inversedPosition = 1 - value;\r\n var relativePositionSprite = axis.relativePositionSprite;\r\n var y = axis.pixelY;\r\n if (relativePositionSprite) {\r\n y = $utils.spritePointToSprite({ x: 0, y: this.pixelY }, this.parent, relativePositionSprite).y;\r\n }\r\n else {\r\n relativePositionSprite = axis.parent;\r\n }\r\n if (relativePositionSprite) {\r\n var relativeY = y / relativePositionSprite.innerHeight;\r\n var relativeHeight = axis.axisLength / relativePositionSprite.innerHeight;\r\n return 1 - (inversedPosition - relativeY) / relativeHeight;\r\n }\r\n }\r\n return value;\r\n };\r\n /**\r\n * Called when rendered is attached to an Axis, as well as a property of\r\n * Axis that might affect the appearance is updated.\r\n *\r\n * E.g. `axis.opposite`, `axis.inside`, etc.\r\n *\r\n * This method is called **before** draw, so that any related setting\r\n * changed in this method can be changed.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererY.prototype.processRenderer = function () {\r\n _super.prototype.processRenderer.call(this);\r\n var axis = this.axis;\r\n if (axis) {\r\n var title = axis.title;\r\n title.valign = \"middle\";\r\n if (!(axis.height instanceof Percent)) {\r\n axis.height = percent(100);\r\n }\r\n if (this.opposite) {\r\n title.rotation = 90;\r\n this.line.toBack();\r\n title.toFront();\r\n }\r\n else {\r\n title.rotation = -90;\r\n title.toBack();\r\n this.line.toFront();\r\n }\r\n }\r\n };\r\n /**\r\n * Updates some of the Axis tooltip's visual properties, related to\r\n * rendering of the Axis.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererY.prototype.updateTooltip = function () {\r\n var axis = this.axis;\r\n if (axis) {\r\n var bigNum = 2000;\r\n var bbx = 0;\r\n var bby = 0;\r\n var bbw = bigNum;\r\n var bbh = this.axisLength;\r\n // right\r\n if (this.opposite) {\r\n if (this.inside) {\r\n bbx = -bigNum;\r\n bbw = bigNum;\r\n }\r\n }\r\n // left\r\n else {\r\n if (!this.inside) {\r\n bbx = -bigNum;\r\n bbw = bigNum;\r\n }\r\n }\r\n this.axis.updateTooltip(\"horizontal\", { x: bbx, y: bby, width: bbw, height: bbh });\r\n }\r\n };\r\n Object.defineProperty(AxisRendererY.prototype, \"axisLength\", {\r\n /**\r\n * Returns actual length of the Axis, in pixels.\r\n *\r\n * @return Length (px)\r\n */\r\n get: function () {\r\n var axis = this.axis;\r\n return (axis.measuredHeight - axis.pixelPaddingTop - axis.pixelPaddingBottom) || 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts relative position on axis to point coordinates.\r\n *\r\n * @param position Position (0-1)\r\n * @param position2 Position (0-1) Position on the second axis\r\n * @return Point\r\n */\r\n AxisRendererY.prototype.positionToPoint = function (position, position2) {\r\n return { x: 0, y: this.positionToCoordinate(position) };\r\n };\r\n /**\r\n * Converts a point at specific coordinates to a relative position (0-1)\r\n * on the axis.\r\n *\r\n * @param point Point\r\n * @return Position (0-1)\r\n */\r\n AxisRendererY.prototype.pointToPosition = function (point) {\r\n return this.coordinateToPosition(point.y, point.x);\r\n };\r\n /**\r\n * Converts a coordinate in pixels to a relative position. (0-1)\r\n *\r\n * @param coordinate Coordinate (px)\r\n * @param coordinate2 Coordinate of a second axis, only needed for complex axes systems, like timeline (px)\r\n * @return Position (0-1)\r\n */\r\n AxisRendererY.prototype.coordinateToPosition = function (coordinate, coordinate2) {\r\n var position;\r\n var axis = this.axis;\r\n var axisFullLength = axis.axisFullLength;\r\n if (axis.renderer.inversed) {\r\n position = (1 - axis.start) - coordinate / axisFullLength;\r\n }\r\n else {\r\n position = coordinate / axisFullLength + (1 - axis.end);\r\n }\r\n return $math.round(position, 5);\r\n };\r\n /**\r\n * [getPositionRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param startPosition Starting position\r\n * @param endPosition End position\r\n * @return SVG path\r\n */\r\n AxisRendererY.prototype.getPositionRangePath = function (startPosition, endPosition) {\r\n var y1 = $math.fitToRange(this.positionToCoordinate(startPosition), 0, this.axisLength);\r\n var y2 = $math.fitToRange(this.positionToCoordinate(endPosition), 0, this.axisLength);\r\n var h = Math.abs(y2 - y1);\r\n var w = this.getWidth();\r\n var y = Math.min(y1, y2);\r\n var x = 0;\r\n return $path.rectToPath({\r\n x: x,\r\n y: y,\r\n width: w,\r\n height: h\r\n }, true);\r\n };\r\n /**\r\n * Updates and positions a grid element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param grid Grid element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererY.prototype.updateGridElement = function (grid, position, endPosition) {\r\n position = position + (endPosition - position) * grid.location;\r\n var point = this.positionToPoint(position);\r\n //\tpoint.y = $utils.spritePointToSprite({ x: 0, y: point.y }, this, this.gridContainer).y;\r\n grid.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: this.getWidth(), y: 0 });\r\n this.positionItem(grid, point);\r\n this.toggleVisibility(grid, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions a tick element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param tick Tick element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererY.prototype.updateTickElement = function (tick, position, endPosition) {\r\n position = position + (endPosition - position) * tick.location;\r\n var point = this.positionToPoint(position);\r\n var tickLength = tick.length;\r\n try {\r\n $utils.used(this.axis.title.measuredWidth);\r\n }\r\n catch (_a) {\r\n // void\r\n }\r\n point.x = $utils.spritePointToSprite({ x: this.line.pixelX, y: 0 }, this.line.parent, this.gridContainer).x;\r\n if (!this.opposite) {\r\n tickLength *= (tick.inside ? 1 : -1);\r\n }\r\n else {\r\n tickLength *= (tick.inside ? -1 : 1);\r\n }\r\n tick.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: tickLength, y: 0 });\r\n this.positionItem(tick, point);\r\n this.toggleVisibility(tick, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions the axis line element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererY.prototype.updateAxisLine = function () {\r\n this.line.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: 0, y: this.axisLength });\r\n };\r\n /**\r\n * Updates and positions the base grid element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererY.prototype.updateBaseGridElement = function () {\r\n _super.prototype.updateBaseGridElement.call(this);\r\n var axis = this.axis;\r\n var w = this.getWidth();\r\n var h = this.axisLength;\r\n var y = axis.basePoint.y;\r\n var baseGrid = this.baseGrid;\r\n if (y < -0.2 || y > h + 0.2) {\r\n baseGrid.hide(0);\r\n }\r\n else {\r\n var x = $utils.spritePointToSprite({ x: 0, y: 0 }, this.gridContainer, baseGrid.parent).x;\r\n baseGrid.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: w, y: 0 });\r\n baseGrid.moveTo({ x: x, y: y });\r\n baseGrid.show(0);\r\n }\r\n };\r\n /**\r\n * Updates and positions a label element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param label Label element\r\n * @param position Starting position\r\n * @param endPosition Ending position\r\n */\r\n AxisRendererY.prototype.updateLabelElement = function (label, position, endPosition, location) {\r\n if (!$type.hasValue(location)) {\r\n location = label.location;\r\n }\r\n position = position + (endPosition - position) * location;\r\n label.isMeasured = !label.inside;\r\n var point = this.positionToPoint(position);\r\n var horizontalCenter;\r\n var deltaX = 0;\r\n var maxWidth = this.gridContainer.maxWidth;\r\n if (this.opposite) {\r\n if (label.inside) {\r\n horizontalCenter = \"right\";\r\n if (label.align == \"left\") {\r\n deltaX = -maxWidth;\r\n horizontalCenter = \"left\";\r\n }\r\n if (label.align == \"center\") {\r\n deltaX = -maxWidth / 2;\r\n horizontalCenter = \"middle\";\r\n }\r\n }\r\n else {\r\n horizontalCenter = \"left\";\r\n }\r\n point.x = 0 + deltaX;\r\n }\r\n else {\r\n if (label.inside) {\r\n horizontalCenter = \"left\";\r\n if (label.align == \"right\") {\r\n deltaX = maxWidth;\r\n horizontalCenter = \"right\";\r\n }\r\n if (label.align == \"center\") {\r\n deltaX = maxWidth / 2;\r\n horizontalCenter = \"middle\";\r\n }\r\n }\r\n else {\r\n horizontalCenter = \"right\";\r\n }\r\n point.x = this.measuredWidth + deltaX;\r\n }\r\n if (label.rotation == 0) {\r\n // Apply fuzzy logic to verticalCenter only if labels are not rotated\r\n label.horizontalCenter = horizontalCenter;\r\n }\r\n this.positionItem(label, point);\r\n this.toggleVisibility(label, position, this.minLabelPosition, this.maxLabelPosition);\r\n };\r\n /**\r\n * Updates and positions an axis break element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axisBreak Break element\r\n */\r\n AxisRendererY.prototype.updateBreakElement = function (axisBreak) {\r\n _super.prototype.updateBreakElement.call(this, axisBreak);\r\n var startLine = axisBreak.startLine;\r\n var endLine = axisBreak.endLine;\r\n var fillShape = axisBreak.fillShape;\r\n var startPoint = axisBreak.startPoint;\r\n var endPoint = axisBreak.endPoint;\r\n var x1 = axisBreak.pixelMarginLeft;\r\n var x2 = this.getWidth() - axisBreak.pixelMarginLeft - axisBreak.pixelMarginRight;\r\n startPoint.y = $math.fitToRange(startPoint.y, -1, this.axisLength + 1);\r\n endPoint.y = $math.fitToRange(endPoint.y, -1, this.axisLength + 1);\r\n if (startPoint.y == endPoint.y && (startPoint.y < 0 || startPoint.y > this.axisLength)) {\r\n axisBreak.fillShape.__disabled = true;\r\n }\r\n else {\r\n axisBreak.fillShape.__disabled = false;\r\n }\r\n var w = Math.abs(x2 - x1);\r\n startLine.x = x1;\r\n startLine.height = 0;\r\n startLine.width = w;\r\n endLine.x = x1;\r\n endLine.height = 0;\r\n endLine.width = w;\r\n fillShape.width = w;\r\n fillShape.height = Math.abs(endPoint.y - startPoint.y);\r\n fillShape.x = x1;\r\n fillShape.y = endPoint.y;\r\n };\r\n /**\r\n * Creates visual elements for and axis break.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axisBreak Axis break\r\n */\r\n AxisRendererY.prototype.createBreakSprites = function (axisBreak) {\r\n axisBreak.startLine = new WavedLine();\r\n axisBreak.endLine = new WavedLine();\r\n var wavedRectangle = new WavedRectangle();\r\n wavedRectangle.setWavedSides(true, false, true, false);\r\n axisBreak.fillShape = wavedRectangle;\r\n };\r\n /**\r\n * Converts a position on the axis to a coordinate in pixels.\r\n *\r\n * @ignore Exclude from docs\r\n * @param position Position (0-1)\r\n * @return Coordinate (px)\r\n */\r\n AxisRendererY.prototype.positionToCoordinate = function (position) {\r\n var coordinate;\r\n var axis = this.axis;\r\n var axisFullLength = axis.axisFullLength;\r\n if (!axis.renderer.inversed) {\r\n coordinate = (axis.end - position) * axisFullLength;\r\n }\r\n else {\r\n coordinate = (position - axis.start) * axisFullLength;\r\n }\r\n return coordinate;\r\n };\r\n /**\r\n * Updates and positions axis bullets.\r\n *\r\n * @ignore Exclude from docs\r\n * @param bullet AxisBullet element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererY.prototype.updateBullet = function (bullet, position, endPosition) {\r\n var location = 0.5;\r\n if (bullet instanceof AxisBullet) {\r\n location = bullet.location;\r\n }\r\n position = position + (endPosition - position) * location;\r\n var point = this.positionToPoint(position);\r\n point.x = $utils.spritePointToSprite({ x: this.line.pixelX, y: 0 }, this.line.parent, this.gridContainer).x;\r\n this.positionItem(bullet, point);\r\n this.toggleVisibility(bullet, position, 0, 1);\r\n };\r\n return AxisRendererY;\r\n}(AxisRenderer));\r\nexport { AxisRendererY };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"AxisRendererY\"] = AxisRendererY;\r\n/**\r\n * Add default responsive rules\r\n */\r\n/**\r\n * Put labels inside plot area.\r\n * Disable first and last labels.\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.widthS,\r\n state: function (target, stateId) {\r\n if (target instanceof AxisRendererY) {\r\n var state = target.states.create(stateId);\r\n state.properties.inside = true;\r\n state.properties.maxLabelPosition = 0.9;\r\n state.properties.minLabelPosition = 0.1;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n/**\r\n * Disable labels altogather on very small charts\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.widthXS,\r\n state: function (target, stateId) {\r\n if (target instanceof AxisRendererY) {\r\n var state = target.states.create(stateId);\r\n state.properties.disabled = true;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n//# sourceMappingURL=AxisRendererY.js.map","/**\r\n * A module which defines functionality related to Value Axis Break.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AxisBreak } from \"./AxisBreak\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Base class to define \"breaks\" on value axis.\r\n *\r\n * A \"break\" can be used to \"cut out\" specific ranges of the axis scale, e.g.\r\n * when comparing columns with relatively similar values, it would make sense\r\n * to cut out their mid section, so that their tip differences are more\r\n * prominent.\r\n *\r\n * @see {@link IValueAxisBreakEvents} for a list of available events\r\n * @see {@link IValueAxisBreakAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar ValueAxisBreak = /** @class */ (function (_super) {\r\n __extends(ValueAxisBreak, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ValueAxisBreak() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ValueAxisBreak\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(ValueAxisBreak.prototype, \"startPosition\", {\r\n /**\r\n * Pixel position of the break's start.\r\n *\r\n * @return Position (px)\r\n * @readonly\r\n */\r\n get: function () {\r\n if (this.axis) {\r\n return this.axis.valueToPosition(this.adjustedStartValue);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxisBreak.prototype, \"endPosition\", {\r\n /**\r\n * Pixel position of the break's end.\r\n *\r\n * @return Position (px)\r\n * @readonly\r\n */\r\n get: function () {\r\n if (this.axis) {\r\n return this.axis.valueToPosition(this.adjustedEndValue);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ValueAxisBreak;\r\n}(AxisBreak));\r\nexport { ValueAxisBreak };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ValueAxisBreak\"] = ValueAxisBreak;\r\n//# sourceMappingURL=ValueAxisBreak.js.map","/**\r\n * Value Axis module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Axis, AxisDataItem } from \"./Axis\";\r\nimport { AxisRendererY } from \"./AxisRendererY\";\r\nimport { MultiDisposer } from \"../../core/utils/Disposer\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { ValueAxisBreak } from \"./ValueAxisBreak\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $object from \"../../core/utils/Object\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[ValueAxis]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar ValueAxisDataItem = /** @class */ (function (_super) {\r\n __extends(ValueAxisDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ValueAxisDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ValueAxisDataItem\";\r\n _this.values.value = {};\r\n _this.values.endValue = {};\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(ValueAxisDataItem.prototype, \"value\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.values[\"value\"].value;\r\n },\r\n /**\r\n * A data point's numeric value.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"value\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxisDataItem.prototype, \"endValue\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.values[\"endValue\"].value;\r\n },\r\n /**\r\n * Data point's numeric end value.\r\n *\r\n * @param value End value\r\n */\r\n set: function (value) {\r\n this.setValue(\"endValue\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ValueAxisDataItem;\r\n}(AxisDataItem));\r\nexport { ValueAxisDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Used to create a value axis for the chart.\r\n *\r\n * ```TypeScript\r\n * // Create the axis\r\n * let valueAxis = chart.yAxes.push(new am4charts.ValueAxis());\r\n *\r\n * // Set settings\r\n * valueAxis.title.text = \"Monthly Sales\";\r\n * ```\r\n * ```JavaScript\r\n * // Create the axis\r\n * var valueAxis = chart.yAxes.push(new am4charts.ValueAxis());\r\n *\r\n * // Set settings\r\n * valueAxis.title.text = \"Monthly Sales\";\r\n * ```\r\n * ```JSON\r\n * \"yAxes\": [{\r\n * \"type\": \"ValueAxis\",\r\n * \"title\": {\r\n * \"text\": \"Monthly Sales\"\r\n * }\r\n * }]\r\n * ```\r\n *\r\n * @see {@link IValueAxisEvents} for a list of available Events\r\n * @see {@link IValueAxisAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar ValueAxis = /** @class */ (function (_super) {\r\n __extends(ValueAxis, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ValueAxis() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * [_stepDecimalPlaces description]\r\n *\r\n * @todo Description\r\n */\r\n _this._stepDecimalPlaces = 0;\r\n _this._prevStepDecimalPlaces = 0;\r\n _this._adjustLabelPrecision = true;\r\n /**\r\n * Base value for the axis.\r\n */\r\n _this._baseValue = 0;\r\n /**\r\n * Adjusted start in case we have breaks.\r\n *\r\n * @todo Description\r\n */\r\n _this._adjustedStart = 0;\r\n /**\r\n * Adjusted end in case we have breaks.\r\n *\r\n * @todo Description\r\n */\r\n _this._adjustedEnd = 1;\r\n _this._extremesChanged = false;\r\n _this._deltaMinMax = 1;\r\n _this._dsc = false;\r\n /**\r\n * As calculating totals is expensive operation and not often needed, we\r\n * don't do it by default.\r\n *\r\n * In case you use `totalPercent` or `total` in your charts, this must be set\r\n * to `true`.\r\n *\r\n * @default false\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/xy-chart/#100_stacks} For using `calculateTotals` for 100% stacked series.\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-strings/#Placeholders_for_numeric_values} For using `calculateTotals` in labels.\r\n */\r\n _this.calculateTotals = false;\r\n _this.className = \"ValueAxis\";\r\n // Set field name\r\n _this.axisFieldName = \"value\";\r\n // Set defaults\r\n _this.setPropertyValue(\"maxZoomFactor\", 1000);\r\n _this.setPropertyValue(\"extraMin\", 0);\r\n _this.setPropertyValue(\"extraMax\", 0);\r\n _this.setPropertyValue(\"strictMinMax\", false);\r\n _this.setPropertyValue(\"maxPrecision\", Number.MAX_VALUE);\r\n _this.setPropertyValue(\"adjustLabelPrecision\", true);\r\n _this.setPropertyValue(\"extraTooltipPrecision\", 0);\r\n _this.keepSelection = false;\r\n _this.includeRangesInMinMax = false;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Holds reference to a function that accepts a DataItem as parameter.\r\n *\r\n * It can either return a fill opacity for a fill, or manipulate data item\r\n * directly, to create various highlighting scenarios.\r\n */\r\n ValueAxis.prototype.fillRule = function (dataItem) {\r\n var value = dataItem.value;\r\n var axis = dataItem.component;\r\n if (!dataItem.axisFill.disabled) {\r\n // rounding in left to solve floating point number\r\n if ($math.round(value / axis.step / 2, 5) == Math.round(value / axis.step / 2)) {\r\n dataItem.axisFill.__disabled = true;\r\n }\r\n else {\r\n dataItem.axisFill.__disabled = false;\r\n }\r\n }\r\n };\r\n /**\r\n * Returns a new/empty [[DataItem]] of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n ValueAxis.prototype.createDataItem = function () {\r\n return new ValueAxisDataItem();\r\n };\r\n /**\r\n * Returns a new/empty [[AxisBreak]] of the appropriate type.\r\n *\r\n * @return Axis break\r\n */\r\n ValueAxis.prototype.createAxisBreak = function () {\r\n return new ValueAxisBreak();\r\n };\r\n /**\r\n * [dataChangeUpdate description]\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n ValueAxis.prototype.dataChangeUpdate = function () {\r\n this.clearCache();\r\n if (!this.keepSelection) {\r\n if (this._start != 0 || this._end != 1) {\r\n this._start = 0;\r\n this._end = 1;\r\n this.dispatchImmediately(\"startendchanged\");\r\n }\r\n }\r\n else {\r\n if (this._start != 0) {\r\n this.dispatchImmediately(\"startchanged\");\r\n }\r\n if (this._end != 1) {\r\n this.dispatchImmediately(\"endchanged\");\r\n }\r\n if (this._start != 0 || this._end != 1) {\r\n this.dispatchImmediately(\"startendchanged\");\r\n }\r\n }\r\n this._maxZoomed = this._maxDefined;\r\n this._minZoomed = this._minDefined;\r\n this._maxAdjusted = this._maxDefined;\r\n this._minAdjusted = this._minDefined;\r\n };\r\n /**\r\n * Processes data items of the related Series.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ValueAxis.prototype.processSeriesDataItems = function () {\r\n // @todo: add some boolean (maybe autodedect) if we need these calculations or not. this place uses a lot of cpu\r\n if (this.calculateTotals) {\r\n var series = this.series.getIndex(0);\r\n var startIndex = series.startIndex;\r\n if (series.dataItems.length > 0) {\r\n if (startIndex > 0) {\r\n startIndex--;\r\n }\r\n var endIndex = series.endIndex;\r\n if (endIndex < series.dataItems.length) {\r\n endIndex++;\r\n }\r\n var _loop_1 = function (i) {\r\n // This has to be `var` in order to avoid garbage collection\r\n var total = {};\r\n var sum = {};\r\n this_1.series.each(function (series) {\r\n if (!series.excludeFromTotal) {\r\n var dataItem_1 = series.dataItems.getIndex(i);\r\n if (dataItem_1) {\r\n $object.each(dataItem_1.values, function (key) {\r\n var value = dataItem_1.values[key].workingValue; // can not use getWorkingValue here!\r\n if ($type.isNumber(value)) {\r\n if (!$type.isNumber(total[key])) {\r\n total[key] = Math.abs(value);\r\n }\r\n else {\r\n total[key] += Math.abs(value);\r\n }\r\n if (!$type.isNumber(sum[key])) {\r\n sum[key] = value;\r\n }\r\n else {\r\n sum[key] += value;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n });\r\n this_1.series.each(function (series) {\r\n if (!series.excludeFromTotal) {\r\n var dataItem_2 = series.dataItems.getIndex(i);\r\n if (dataItem_2) {\r\n $object.each(dataItem_2.values, function (key) {\r\n var value = dataItem_2.values[key].workingValue; // can not use getWorkingValue here!\r\n if ($type.isNumber(value)) {\r\n dataItem_2.setCalculatedValue(key, total[key], \"total\");\r\n dataItem_2.setCalculatedValue(key, 100 * value / total[key], \"totalPercent\");\r\n dataItem_2.setCalculatedValue(key, sum[key], \"sum\");\r\n }\r\n });\r\n }\r\n }\r\n });\r\n };\r\n var this_1 = this;\r\n // This has to be `var` in order to avoid garbage collection\r\n for (var i = startIndex; i < endIndex; ++i) {\r\n _loop_1(i);\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Validates the whole axis. Causes it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n */\r\n ValueAxis.prototype.validate = function () {\r\n if (this.axisLength <= 0) {\r\n return;\r\n }\r\n _super.prototype.validate.call(this);\r\n this.getMinMax();\r\n if (!$type.isNumber(this._minAdjusted)) {\r\n this.dataItems.each(function (dataItem) {\r\n dataItem.value = null;\r\n });\r\n }\r\n this.fixAxisBreaks();\r\n this.calculateZoom();\r\n this.validateAxisElements();\r\n this.validateAxisRanges();\r\n this.validateBreaks();\r\n this.hideUnusedDataItems();\r\n this.renderer.invalidateLayout();\r\n // hide too close\r\n //this.hideTooCloseDataItems();\r\n };\r\n /**\r\n * Calculates all positions, related to axis as per current zoom.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ValueAxis.prototype.calculateZoom = function () {\r\n if ($type.isNumber(this.min) && $type.isNumber(this.max)) {\r\n var min = this.positionToValue(this.start);\r\n var max = this.positionToValue(this.end);\r\n var differece = this.adjustDifference(min, max);\r\n var minMaxStep = this.adjustMinMax(min, max, differece, this._gridCount, true);\r\n var stepDecimalPlaces = $utils.decimalPlaces(minMaxStep.step);\r\n this._stepDecimalPlaces = stepDecimalPlaces;\r\n min = $math.round(min, stepDecimalPlaces);\r\n max = $math.round(max, stepDecimalPlaces);\r\n minMaxStep = this.adjustMinMax(min, max, differece, this._gridCount, true);\r\n var step = minMaxStep.step;\r\n if (this.syncWithAxis) {\r\n var calculated = this.getCache(min + \"-\" + max);\r\n if ($type.isNumber(calculated)) {\r\n step = calculated;\r\n }\r\n }\r\n else {\r\n min = minMaxStep.min;\r\n max = minMaxStep.max;\r\n }\r\n if (this._minZoomed != min || this._maxZoomed != max || this._step != step || this._dsc) {\r\n this._dsc = false;\r\n this._minZoomed = min;\r\n this._maxZoomed = max;\r\n this._step = step;\r\n this.dispatchImmediately(\"selectionextremeschanged\");\r\n }\r\n }\r\n };\r\n ValueAxis.prototype.fixSmallStep = function (step) {\r\n if (1 + step == 1) {\r\n step *= 2;\r\n return this.fixSmallStep(step);\r\n }\r\n return step;\r\n };\r\n /**\r\n * Validates Axis elements.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n ValueAxis.prototype.validateAxisElements = function () {\r\n var _this = this;\r\n if ($type.isNumber(this.max) && $type.isNumber(this.min)) {\r\n // first regular items\r\n var value_1 = this.minZoomed - this._step * 2;\r\n if (!this.logarithmic) {\r\n value_1 = Math.floor(value_1 / this._step) * this._step;\r\n }\r\n else {\r\n var differencePower = Math.log(this.max) * Math.LOG10E - Math.log(this.min) * Math.LOG10E;\r\n if (differencePower > 1) {\r\n value_1 = Math.pow(10, Math.log(this.min) * Math.LOG10E);\r\n }\r\n else {\r\n value_1 = Math.floor(this.minZoomed / this._step) * this._step;\r\n if (value_1 == 0) {\r\n value_1 = this.minZoomed;\r\n }\r\n }\r\n }\r\n var maxZoomed = this._maxZoomed + this._step;\r\n this.resetIterators();\r\n var dataItemsIterator_1 = this._dataItemsIterator;\r\n if (this._step == 0) {\r\n return;\r\n }\r\n this._step = this.fixSmallStep(this._step);\r\n var i = 0;\r\n var precisionChanged = this._prevStepDecimalPlaces != this._stepDecimalPlaces;\r\n this._prevStepDecimalPlaces = this._stepDecimalPlaces;\r\n while (value_1 <= maxZoomed) {\r\n var axisBreak = this.isInBreak(value_1);\r\n if (!axisBreak) {\r\n var dataItem = dataItemsIterator_1.find(function (x) { return x.value === value_1; });\r\n if (dataItem.__disabled) {\r\n dataItem.__disabled = false;\r\n }\r\n //this.processDataItem(dataItem);\r\n this.appendDataItem(dataItem);\r\n dataItem.axisBreak = undefined;\r\n if (dataItem.value != value_1 || precisionChanged) {\r\n dataItem.value = value_1;\r\n dataItem.text = this.formatLabel(value_1);\r\n if (dataItem.label && dataItem.label.invalid) {\r\n dataItem.label.validate();\r\n }\r\n if (dataItem.value >= this.min && dataItem.value <= this.max) {\r\n if (dataItem.label) {\r\n if ((this.axisLetter == \"Y\" && dataItem.label.measuredWidth > this.ghostLabel.measuredWidth) || (this.axisLetter == \"X\" && dataItem.label.measuredHeight > this.ghostLabel.measuredHeight)) {\r\n this.ghostLabel.text = dataItem.label.currentText;\r\n this.ghostLabel.validate();\r\n }\r\n }\r\n }\r\n }\r\n this.validateDataElement(dataItem);\r\n }\r\n i++;\r\n var oldValue = value_1;\r\n if (!this.logarithmic) {\r\n value_1 += this._step;\r\n }\r\n else {\r\n var differencePower = Math.log(this.max) * Math.LOG10E - Math.log(this.min) * Math.LOG10E;\r\n if (differencePower > 1) {\r\n value_1 = Math.pow(10, Math.log(this.min) * Math.LOG10E + i);\r\n }\r\n else {\r\n value_1 += this._step;\r\n }\r\n }\r\n var stepPower = Math.pow(10, Math.floor(Math.log(Math.abs(this._step)) * Math.LOG10E));\r\n if (stepPower < 1) {\r\n // exponent is less then 1 too. Count decimals of exponent\r\n var decCount = Math.round(Math.abs(Math.log(Math.abs(stepPower)) * Math.LOG10E)) + 2;\r\n decCount = Math.min(13, decCount);\r\n // round value to avoid floating point issues\r\n value_1 = $math.round(value_1, decCount);\r\n // ceil causes problems: https://codepen.io/team/amcharts/pen/XWMjZwy?editors=1010\r\n if (oldValue == value_1) {\r\n value_1 = maxZoomed;\r\n break;\r\n }\r\n }\r\n }\r\n var axisBreaks = this._axisBreaks;\r\n if (axisBreaks) {\r\n // breaks later\r\n var renderer_1 = this.renderer;\r\n $iter.each(axisBreaks.iterator(), function (axisBreak) {\r\n if (axisBreak.breakSize > 0) {\r\n // only add grid if gap is bigger then minGridDistance\r\n if ($math.getDistance(axisBreak.startPoint, axisBreak.endPoint) > renderer_1.minGridDistance) {\r\n var breakValue_1 = axisBreak.adjustedMin;\r\n while (breakValue_1 <= axisBreak.adjustedMax) {\r\n if (breakValue_1 >= axisBreak.adjustedStartValue && breakValue_1 <= axisBreak.adjustedEndValue) {\r\n var dataItem = dataItemsIterator_1.find(function (x) { return x.value === breakValue_1; });\r\n if (dataItem.__disabled) {\r\n dataItem.__disabled = false;\r\n }\r\n //this.processDataItem(dataItem);\r\n _this.appendDataItem(dataItem);\r\n dataItem.axisBreak = axisBreak;\r\n if (dataItem.value != breakValue_1) {\r\n dataItem.value = breakValue_1;\r\n dataItem.text = _this.formatLabel(breakValue_1);\r\n if (dataItem.label && dataItem.label.invalid) {\r\n dataItem.label.validate();\r\n }\r\n }\r\n _this.validateDataElement(dataItem);\r\n }\r\n breakValue_1 += axisBreak.adjustedStep;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n };\r\n /**\r\n * Validates axis data item.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param dataItem Data item\r\n */\r\n ValueAxis.prototype.validateDataElement = function (dataItem) {\r\n _super.prototype.validateDataElement.call(this, dataItem);\r\n //dataItem.__disabled = false;\r\n dataItem.itemIndex = this._axisItemCount;\r\n this._axisItemCount++;\r\n var renderer = this.renderer;\r\n var value = dataItem.value;\r\n var endValue = dataItem.endValue;\r\n var position = this.valueToPosition(value);\r\n dataItem.position = position;\r\n var endPosition = position;\r\n var fillEndPosition = this.valueToPosition(value + this._step);\r\n if ($type.isNumber(endValue)) {\r\n endPosition = this.valueToPosition(endValue);\r\n fillEndPosition = endPosition;\r\n }\r\n // this point is needed to calculate distance to satisfy minGridDistance\r\n dataItem.point = renderer.positionToPoint(position);\r\n var tick = dataItem.tick;\r\n if (tick && !tick.disabled) {\r\n renderer.updateTickElement(tick, position, endPosition);\r\n }\r\n var grid = dataItem.grid;\r\n if (grid && !grid.disabled) {\r\n renderer.updateGridElement(grid, position, endPosition);\r\n }\r\n var label = dataItem.label;\r\n if (label && !label.disabled) {\r\n renderer.updateLabelElement(label, position, endPosition);\r\n }\r\n var fill = dataItem.axisFill;\r\n if (fill && !fill.disabled) {\r\n renderer.updateFillElement(fill, position, fillEndPosition);\r\n if (!dataItem.isRange) {\r\n this.fillRule(dataItem);\r\n }\r\n }\r\n if (dataItem.bullet) {\r\n renderer.updateBullet(dataItem.bullet, position, endPosition);\r\n }\r\n var mask = dataItem.mask;\r\n if (mask) {\r\n renderer.updateFillElement(mask, position, fillEndPosition);\r\n }\r\n };\r\n /**\r\n * Formats the value according to axis' own [[NumberFormatter]].\r\n *\r\n * @param value Source value\r\n * @return Formatted value\r\n */\r\n ValueAxis.prototype.formatLabel = function (value) {\r\n if (this.adjustLabelPrecision && value != 0) {\r\n return this.numberFormatter.format(value, undefined, this._stepDecimalPlaces);\r\n }\r\n else {\r\n return this.numberFormatter.format(value);\r\n }\r\n };\r\n Object.defineProperty(ValueAxis.prototype, \"basePoint\", {\r\n /**\r\n * Coordinates of the actual axis start.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Base point\r\n */\r\n get: function () {\r\n var baseValue = this.baseValue;\r\n var position = this.valueToPosition(baseValue);\r\n var basePoint = this.renderer.positionToPoint(position);\r\n return basePoint;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxis.prototype, \"baseValue\", {\r\n /**\r\n * @return base value\r\n */\r\n get: function () {\r\n var baseValue = this._baseValue;\r\n if (this.logarithmic) {\r\n baseValue = this.min;\r\n }\r\n if (!this._adapterO) {\r\n return baseValue;\r\n }\r\n else {\r\n return this._adapterO.apply(\"baseValue\", baseValue);\r\n }\r\n },\r\n /**\r\n * A base value.\r\n *\r\n * This is a threshold value that will divide \"positive\" and \"negative\"\r\n * value ranges.\r\n *\r\n * Other scale-related functionality also depend on base value. E.g. stacks,\r\n * value-dependent coloring, etc.\r\n *\r\n * @param value Base value\r\n */\r\n set: function (value) {\r\n this._baseValue = value;\r\n this.invalidateLayout();\r\n this.invalidateSeries();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts a numeric value to relative position on axis\r\n *\r\n * An alias to `valueToPosition()`.\r\n *\r\n * @param value Value\r\n * @return Position\r\n */\r\n ValueAxis.prototype.anyToPosition = function (value) {\r\n return this.valueToPosition(value);\r\n };\r\n /**\r\n * Converts a numeric value to orientation point (x, y, angle) on axis\r\n *\r\n * @param value Value\r\n * @return Orientation point\r\n */\r\n ValueAxis.prototype.valueToPoint = function (value) {\r\n var position = this.valueToPosition(value);\r\n var point = this.renderer.positionToPoint(position);\r\n var angle = this.renderer.positionToAngle(position);\r\n return { x: point.x, y: point.y, angle: angle };\r\n };\r\n /**\r\n * Converts a numeric value to orientation (x, y, angle) point on axis\r\n *\r\n * @param value Value\r\n * @return Orientation point\r\n */\r\n ValueAxis.prototype.anyToPoint = function (value) {\r\n return this.valueToPoint(value);\r\n };\r\n /**\r\n * Converts a numeric value to relative position on axis.\r\n *\r\n * @param value Value\r\n * @return relative position\r\n */\r\n ValueAxis.prototype.valueToPosition = function (value) {\r\n if ($type.isNumber(value)) {\r\n // todo: think if possible to take previous value and do not go through all previous breaks\r\n var min_1 = this.min;\r\n var max_1 = this.max;\r\n if ($type.isNumber(min_1) && $type.isNumber(max_1)) {\r\n var difference = this._difference;\r\n var axisBreaks = this._axisBreaks;\r\n if (axisBreaks && axisBreaks.length > 0) {\r\n $iter.eachContinue(axisBreaks.iterator(), function (axisBreak) {\r\n var startValue = axisBreak.adjustedStartValue;\r\n var endValue = axisBreak.adjustedEndValue;\r\n if ($type.isNumber(startValue) && $type.isNumber(endValue)) {\r\n if (value < startValue) {\r\n return false;\r\n }\r\n if ($math.intersect({ start: startValue, end: endValue }, { start: min_1, end: max_1 })) { // todo: check this once and set some flag in axisBreak\r\n startValue = Math.max(startValue, min_1);\r\n endValue = Math.min(endValue, max_1);\r\n var breakSize = axisBreak.breakSize;\r\n // value to the right of break end\r\n if (value > endValue) {\r\n min_1 += (endValue - startValue) * (1 - breakSize); // todo: maybe this can be done differently?\r\n }\r\n // value to the left of break start\r\n else if (value < startValue) {\r\n }\r\n // value within break\r\n else {\r\n value = startValue + (value - startValue) * breakSize;\r\n }\r\n }\r\n }\r\n return true;\r\n });\r\n }\r\n var position = void 0;\r\n if (!this.logarithmic) {\r\n position = (value - min_1) / difference;\r\n }\r\n else {\r\n var treatZeroAs = this.treatZeroAs;\r\n if ($type.isNumber(treatZeroAs)) {\r\n if (value <= treatZeroAs) {\r\n value = treatZeroAs;\r\n }\r\n }\r\n position = (Math.log(value) * Math.LOG10E - Math.log(this.min) * Math.LOG10E) / ((Math.log(this.max) * Math.LOG10E - Math.log(this.min) * Math.LOG10E));\r\n }\r\n //position = $math.round(position, 10);\r\n return position;\r\n }\r\n }\r\n return 0;\r\n };\r\n /**\r\n * When fontSize of fontFamily changes we need to hard-invalidate all Labels of this container to position them properly.\r\n */\r\n ValueAxis.prototype.invalidateLabels = function () {\r\n _super.prototype.invalidateLabels.call(this);\r\n if (this.dataItems) {\r\n this.dataItems.each(function (dataItem) {\r\n dataItem.value = undefined;\r\n });\r\n this.invalidate();\r\n }\r\n };\r\n /**\r\n * Converts an relative position to a corresponding value within\r\n * axis' scale.\r\n *\r\n * @param position Position (px)\r\n * @return Value\r\n */\r\n ValueAxis.prototype.positionToValue = function (position) {\r\n var min = this.min;\r\n var max = this.max;\r\n if ($type.isNumber(min) && $type.isNumber(max)) {\r\n var difference_1 = max - min; //no need to adjust!\r\n var value_2 = null;\r\n var axisBreaks = this._axisBreaks;\r\n if (axisBreaks) {\r\n // in case we have some axis breaks\r\n if (axisBreaks.length > 0) {\r\n $iter.eachContinue(axisBreaks.iterator(), function (axisBreak) {\r\n var breakStartPosition = axisBreak.startPosition;\r\n var breakEndPosition = axisBreak.endPosition;\r\n var breakStartValue = axisBreak.adjustedStartValue;\r\n var breakEndValue = axisBreak.adjustedEndValue;\r\n if ($type.isNumber(breakStartValue) && $type.isNumber(breakEndValue)) {\r\n if (breakStartValue > max) {\r\n return false;\r\n }\r\n if ($math.intersect({ start: breakStartValue, end: breakEndValue }, { start: min, end: max })) {\r\n breakStartValue = $math.max(breakStartValue, min);\r\n breakEndValue = $math.min(breakEndValue, max);\r\n var breakSize = axisBreak.breakSize;\r\n difference_1 -= (breakEndValue - breakStartValue) * (1 - breakSize);\r\n // position to the right of break end\r\n if (position > breakEndPosition) {\r\n min += (breakEndValue - breakStartValue) * (1 - breakSize);\r\n }\r\n // position to the left of break start\r\n else if (position < breakStartPosition) {\r\n }\r\n // value within break\r\n else {\r\n var breakPosition = (position - breakStartPosition) / (breakEndPosition - breakStartPosition);\r\n value_2 = breakStartValue + breakPosition * (breakEndValue - breakStartValue);\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n });\r\n }\r\n }\r\n if (!$type.isNumber(value_2)) {\r\n if (this.logarithmic) {\r\n value_2 = Math.pow(Math.E, (position * ((Math.log(this.max) * Math.LOG10E - Math.log(this.min) * Math.LOG10E)) + Math.log(this.min) * Math.LOG10E) / Math.LOG10E);\r\n }\r\n else {\r\n value_2 = position * difference_1 + min;\r\n }\r\n }\r\n return value_2;\r\n }\r\n //}\r\n };\r\n /**\r\n * Converts an X coordinate to a relative value in axis' scale.\r\n *\r\n * @param x X (px)\r\n * @return Value\r\n */\r\n ValueAxis.prototype.xToValue = function (x) {\r\n return this.positionToValue(this.pointToPosition({ x: x, y: 0 }));\r\n };\r\n /**\r\n * Converts an Y coordinate to a relative value in axis' scale.\r\n *\r\n * @param y Y (px)\r\n * @return Value\r\n */\r\n ValueAxis.prototype.yToValue = function (y) {\r\n return this.positionToValue(this.pointToPosition({ x: 0, y: y }));\r\n };\r\n /**\r\n * Converts pixel coordinates to a relative position. (0-1)\r\n *\r\n * @param point Coorinates (px)\r\n * @return Position (0-1)\r\n */\r\n ValueAxis.prototype.pointToPosition = function (point) {\r\n if (this.renderer instanceof AxisRendererY) {\r\n return 1 - this.renderer.pointToPosition(point);\r\n }\r\n else {\r\n return this.renderer.pointToPosition(point);\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n ValueAxis.prototype.animateMinMax = function (min, max) {\r\n return this.animate([{ property: \"_minAdjusted\", from: this._minAdjusted, to: min }, { property: \"_maxAdjusted\", from: this._maxAdjusted, to: max }], this.rangeChangeDuration, this.rangeChangeEasing);\r\n };\r\n /**\r\n * Calculates smallest and biggest value for the axis scale.\r\n * @ignore\r\n * @todo Description (review)\r\n */\r\n ValueAxis.prototype.getMinMax = function () {\r\n var _this = this;\r\n this.updateGridCount();\r\n var min = Number.POSITIVE_INFINITY;\r\n var max = Number.NEGATIVE_INFINITY;\r\n // only if min and max are not set from outside, we go through min and max influencers\r\n if (!$type.isNumber(this._minDefined) || !$type.isNumber(this._maxDefined)) {\r\n this.series.each(function (series) {\r\n if (!series.ignoreMinMax) {\r\n // check min\r\n var seriesMin = series.min(_this);\r\n if ($type.isNumber(seriesMin) && (seriesMin < min)) {\r\n min = seriesMin;\r\n }\r\n // check max\r\n var seriesMax = series.max(_this);\r\n if ($type.isNumber(seriesMax) && (seriesMax > max)) {\r\n max = seriesMax;\r\n }\r\n }\r\n });\r\n if (this.includeRangesInMinMax) {\r\n this.axisRanges.each(function (range) {\r\n if (!range.ignoreMinMax) {\r\n var minValue = $math.min(range.value, range.endValue);\r\n var maxValue = $math.max(range.value, range.endValue);\r\n if (minValue < min || !$type.isNumber(min)) {\r\n min = minValue;\r\n }\r\n if (maxValue > max || !$type.isNumber(max)) {\r\n max = maxValue;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n if (this.logarithmic) {\r\n var treatZeroAs = this.treatZeroAs;\r\n if ($type.isNumber(treatZeroAs)) {\r\n if (min <= 0) {\r\n min = treatZeroAs;\r\n }\r\n }\r\n if (min <= 0) {\r\n this.raiseCriticalError(new Error(\"Logarithmic value axis can not have values <= 0.\"), true);\r\n }\r\n }\r\n if (min == 0 && max == 0) {\r\n max = 0.9;\r\n min = -0.9;\r\n }\r\n // if defined from outside\r\n if ($type.isNumber(this._minDefined)) {\r\n min = this._minDefined;\r\n }\r\n if ($type.isNumber(this._maxDefined)) {\r\n max = this._maxDefined;\r\n }\r\n if (this._adapterO) {\r\n min = this._adapterO.apply(\"min\", min);\r\n }\r\n if (this._adapterO) {\r\n max = this._adapterO.apply(\"max\", max);\r\n }\r\n if (!$type.isNumber(min) || !$type.isNumber(max)) {\r\n return;\r\n }\r\n this._minReal = min;\r\n this._maxReal = max;\r\n if (min == Number.POSITIVE_INFINITY) {\r\n min = undefined;\r\n }\r\n if (max == Number.NEGATIVE_INFINITY) {\r\n max = undefined;\r\n }\r\n var dif = this.adjustDifference(min, max); // previously it was max-min, but not worked well\r\n min = this.fixMin(min);\r\n max = this.fixMax(max);\r\n // this happens if starLocation and endLocation are 0.5 and DateAxis has only one date\r\n if (max - min <= 1 / Math.pow(10, 15)) {\r\n if (max - min != 0) {\r\n this._deltaMinMax = (max - min) / 2;\r\n }\r\n else {\r\n // the number by which we need to raise 10 to get difference\r\n var exponent = Math.log(Math.abs(max)) * Math.LOG10E;\r\n // here we find a number which is power of 10 and has the same count of numbers as difference has\r\n var power = Math.pow(10, Math.floor(exponent));\r\n // reduce this number by 10 times\r\n power = power / 10;\r\n this._deltaMinMax = power;\r\n }\r\n min -= this._deltaMinMax;\r\n max += this._deltaMinMax;\r\n }\r\n min -= (max - min) * this.extraMin;\r\n max += (max - min) * this.extraMax;\r\n var strict = this.strictMinMax;\r\n if ($type.isNumber(this._maxDefined)) {\r\n strict = true;\r\n }\r\n var minMaxStep = this.adjustMinMax(min, max, dif, this._gridCount, strict);\r\n min = minMaxStep.min;\r\n max = minMaxStep.max;\r\n dif = max - min; //new\r\n // do it for the second time (importat!)\r\n minMaxStep = this.adjustMinMax(min, max, max - min, this._gridCount, true);\r\n min = minMaxStep.min;\r\n max = minMaxStep.max;\r\n // return min max if strict\r\n if (this.strictMinMax) {\r\n if ($type.isNumber(this._minDefined)) {\r\n min = this._minDefined;\r\n }\r\n else {\r\n min = this._minReal;\r\n }\r\n if ($type.isNumber(this._maxDefined)) {\r\n max = this._maxDefined;\r\n }\r\n else {\r\n max = this._maxReal;\r\n }\r\n if (max - min <= 0.00000001) {\r\n min -= this._deltaMinMax;\r\n max += this._deltaMinMax;\r\n }\r\n min -= (max - min) * this.extraMin;\r\n max += (max - min) * this.extraMax;\r\n }\r\n if (this._adapterO) {\r\n min = this._adapterO.apply(\"min\", min);\r\n }\r\n if (this._adapterO) {\r\n max = this._adapterO.apply(\"max\", max);\r\n }\r\n this._step = minMaxStep.step;\r\n if (!$type.isNumber(min) && !$type.isNumber(max)) {\r\n this.start = 0;\r\n this.end = 1;\r\n this.renderer.labels.each(function (label) {\r\n label.dataItem.text = \"\";\r\n });\r\n }\r\n // checking isNumber is good when all series are hidden\r\n if ((this._minAdjusted != min || this._maxAdjusted != max) && $type.isNumber(min) && $type.isNumber(max)) {\r\n var animation = this._minMaxAnimation;\r\n if (this._extremesChanged && $type.isNumber(this._minAdjusted) && $type.isNumber(this._maxAdjusted) && this.inited) {\r\n if ((animation && !animation.isFinished()) && this._finalMax == max && this._finalMin == min) {\r\n return;\r\n }\r\n else {\r\n this._finalMin = min;\r\n this._finalMax = max;\r\n animation = this.animateMinMax(min, max);\r\n if (animation && !animation.isFinished()) {\r\n animation.events.on(\"animationprogress\", this.validateDataItems, this);\r\n animation.events.on(\"animationended\", function () {\r\n //this.validateDataItems();\r\n _this.series.each(function (series) {\r\n series.validate();\r\n });\r\n _this.validateDataItems();\r\n _this.handleSelectionExtremesChange();\r\n });\r\n this._minMaxAnimation = animation;\r\n }\r\n else {\r\n this.series.each(function (series) {\r\n series.invalidate();\r\n });\r\n }\r\n this.validateDataItems();\r\n this.dispatchImmediately(\"extremeschanged\");\r\n this.handleSelectionExtremesChange();\r\n }\r\n }\r\n else {\r\n if ((animation && !animation.isFinished()) && this._finalMax == max && this._finalMin == min) {\r\n return;\r\n }\r\n else {\r\n this._minAdjusted = min;\r\n this._maxAdjusted = max;\r\n this._finalMin = min;\r\n this._finalMax = max;\r\n this.invalidateDataItems();\r\n this.dispatchImmediately(\"extremeschanged\");\r\n }\r\n }\r\n }\r\n this._extremesChanged = false;\r\n this._difference = this.adjustDifference(min, max);\r\n };\r\n /**\r\n * Adjusts the minimum value.\r\n *\r\n * This is a placeholder method for extending classes to override.\r\n *\r\n * For numeric values this does nothing, however for more complex types, like\r\n * dates, it may be necessary to adjust.\r\n *\r\n * @param value Value\r\n * @return Adjusted value\r\n */\r\n ValueAxis.prototype.fixMin = function (value) {\r\n return value;\r\n };\r\n /**\r\n * Adjusts the maximum value.\r\n *\r\n * This is a placeholder method for extending classes to override.\r\n *\r\n * For numeric values this does nothing, however for more complex types, like\r\n * dates, it may be necessary to adjust.\r\n *\r\n * @param value Value\r\n * @return Adjusted value\r\n */\r\n ValueAxis.prototype.fixMax = function (value) {\r\n return value;\r\n };\r\n /**\r\n * Adjusts actual min and max scale values so that the axis starts and ends\r\n * at \"nice\" values, unless `strictMinMax` is set.\r\n *\r\n * The `difference` can be something else than `max - min`, because of the\r\n * axis breaks.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param min [description]\r\n * @param max [description]\r\n * @param difference [description]\r\n * @param gridCount [description]\r\n * @param strictMode [description]\r\n * @return [description]\r\n */\r\n ValueAxis.prototype.adjustMinMax = function (min, max, difference, gridCount, strictMode) {\r\n // will fail if 0\r\n if (gridCount <= 1) {\r\n gridCount = 1;\r\n }\r\n gridCount = Math.round(gridCount);\r\n var initialMin = min;\r\n var initialMax = max;\r\n // in case min and max is the same, use max\r\n if (difference === 0) {\r\n difference = Math.abs(max);\r\n }\r\n // the number by which we need to raise 10 to get difference\r\n var exponent = Math.log(Math.abs(difference)) * Math.LOG10E;\r\n // here we find a number which is power of 10 and has the same count of numbers as difference has\r\n var power = Math.pow(10, Math.floor(exponent));\r\n // reduce this number by 10 times\r\n power = power / 10;\r\n var extra = power;\r\n if (strictMode) {\r\n extra = 0;\r\n }\r\n if (!this.logarithmic) {\r\n // round down min\r\n if (strictMode) {\r\n min = Math.floor(min / power) * power;\r\n // round up max\r\n max = Math.ceil(max / power) * power;\r\n }\r\n else {\r\n min = Math.ceil(min / power) * power - extra;\r\n // round up max\r\n max = Math.floor(max / power) * power + extra;\r\n }\r\n // don't let min go below 0 if real min is >= 0\r\n if (min < 0 && initialMin >= 0) {\r\n min = 0;\r\n }\r\n // don't let max go above 0 if real max is <= 0\r\n if (max > 0 && initialMax <= 0) {\r\n max = 0;\r\n }\r\n }\r\n else {\r\n if (min <= 0) {\r\n //throw Error(\"Logarithmic value axis can not have values <= 0.\");\r\n min = this.baseValue;\r\n }\r\n // @todo: think of a better way or to restrict zooming when no series are selected\r\n if (min == Infinity) {\r\n min = 1;\r\n }\r\n if (max == -Infinity) {\r\n max = 10;\r\n }\r\n if (this.strictMinMax) {\r\n if (this._minDefined > 0) {\r\n min = this._minDefined;\r\n }\r\n else {\r\n min = min;\r\n }\r\n if (this._maxDefined > 0) {\r\n max = max;\r\n }\r\n }\r\n else {\r\n min = Math.pow(10, Math.floor(Math.log(Math.abs(min)) * Math.LOG10E));\r\n max = Math.pow(10, Math.ceil(Math.log(Math.abs(max)) * Math.LOG10E));\r\n }\r\n }\r\n // repeat diff, exponent and power again with rounded values\r\n //difference = this.adjustDifference(min, max);\r\n /*\r\n\r\n if(min > initialMin){\r\n min = initialMin;\r\n }\r\n\r\n if(max < initialMax){\r\n max = initialMax;\r\n }\r\n */\r\n exponent = Math.log(Math.abs(difference)) * Math.LOG10E;\r\n power = Math.pow(10, Math.floor(exponent));\r\n power = power / 10;\r\n // approximate difference between two grid lines\r\n var step = Math.ceil((difference / gridCount) / power) * power;\r\n var stepPower = Math.pow(10, Math.floor(Math.log(Math.abs(step)) * Math.LOG10E));\r\n // TODO: in v3 I had fixStepE here, ommiting it for a while, need to think about other solution\r\n // the step should divide by 2, 5, and 10.\r\n var stepDivisor = Math.ceil(step / stepPower); // number 0 - 10\r\n if (stepDivisor > 5) {\r\n stepDivisor = 10;\r\n }\r\n else if (stepDivisor <= 5 && stepDivisor > 2) {\r\n stepDivisor = 5;\r\n }\r\n // now get real step\r\n step = Math.ceil(step / (stepPower * stepDivisor)) * stepPower * stepDivisor;\r\n if (this.maxPrecision < Number.MAX_VALUE && step != $math.ceil(step, this.maxPrecision)) {\r\n step = $math.ceil(step, this.maxPrecision);\r\n }\r\n var decCount = 0;\r\n // in case numbers are smaller than 1\r\n if (stepPower < 1) {\r\n // exponent is less then 1 too. Count decimals of exponent\r\n decCount = Math.round(Math.abs(Math.log(Math.abs(stepPower)) * Math.LOG10E)) + 1;\r\n // round step\r\n step = $math.round(step, decCount);\r\n }\r\n if (!this.logarithmic) {\r\n // final min and max\r\n var minCount = Math.floor(min / step);\r\n min = $math.round(step * minCount, decCount);\r\n var maxCount = void 0;\r\n if (!strictMode) {\r\n maxCount = Math.ceil(max / step);\r\n }\r\n else {\r\n maxCount = Math.floor(max / step);\r\n }\r\n if (maxCount == minCount) {\r\n maxCount++;\r\n }\r\n max = $math.round(step * maxCount, decCount);\r\n if (max < initialMax) {\r\n max = max + step;\r\n }\r\n if (min > initialMin) {\r\n min = min - step;\r\n }\r\n }\r\n return { min: min, max: max, step: step };\r\n };\r\n Object.defineProperty(ValueAxis.prototype, \"min\", {\r\n /**\r\n * @return Min value\r\n */\r\n get: function () {\r\n var min = this._minAdjusted;\r\n if (!$type.isNumber(min)) {\r\n min = this._minDefined;\r\n }\r\n return min;\r\n },\r\n /**\r\n * A minimum value for the axis scale.\r\n *\r\n * This value might be auto-adjusted by the Axis in order to accomodate the\r\n * grid nicely, i.e. plot area is divided by grid in nice equal cells.\r\n *\r\n * The above might be overridden by `strictMinMax` which will force exact\r\n * user-defined min and max values to be used for scale.\r\n *\r\n * @param value Min value\r\n */\r\n set: function (value) {\r\n if (this._minDefined != value) {\r\n this._minDefined = value;\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxis.prototype, \"minDefined\", {\r\n /**\r\n * Min value as defined by user's code, not auto-calculated.\r\n *\r\n * @readonly\r\n * @return Min value\r\n */\r\n get: function () {\r\n return this._minDefined;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxis.prototype, \"maxDefined\", {\r\n /**\r\n * Max value as defined by user's code, not auto-calculated.\r\n *\r\n * @readonly\r\n * @return Man value\r\n */\r\n get: function () {\r\n return this._maxDefined;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxis.prototype, \"extraMin\", {\r\n /**\r\n * @return {number}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"extraMin\");\r\n },\r\n /**\r\n * Allows relatively adjusting minimum value of the axis' scale.\r\n *\r\n * The value is relative to the actual range of values currently displayed\r\n * on the axis.\r\n *\r\n * E.g.: 0.5 will mean half of the current range. If we have axis displaying\r\n * from 100 to 200, we will now have axis displaying from 50 to 200 because\r\n * we asked to expand minimum value by 50% (0.5).\r\n *\r\n * NOTE: this setting is not compatible with `strictMinMax`.\r\n *\r\n * @param {number}\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"extraMin\", value)) {\r\n this.invalidateDataItems();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxis.prototype, \"extraMax\", {\r\n /**\r\n * @return Min multiplier\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"extraMax\");\r\n },\r\n /**\r\n * Allows relatively adjusting maximum value of the axis' scale.\r\n *\r\n * The value is relative to the actual range of values currently displayed\r\n * on the axis.\r\n *\r\n * E.g.: 0.5 will mean half of the current range. If we have axis displaying\r\n * from 100 to 200, we will now have axis displaying from 100 to 250 because\r\n * we asked to expand maximum value by 50% (0.5).\r\n *\r\n * NOTE: this setting is not compatible with `strictMinMax`.\r\n *\r\n * @param {number}\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"extraMax\", value)) {\r\n this.invalidateDataItems();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxis.prototype, \"step\", {\r\n /**\r\n * Current calculated delta in values between two adjacent grid lines (step).\r\n *\r\n * This is a read-only value and cannot be used to set actual step.\r\n *\r\n * @readonly\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/positioning-axis-elements/#Setting_the_density_of_the_the_grid_labels} For more information about modifying density of labels\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this._step;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxis.prototype, \"max\", {\r\n /**\r\n * @return Max value\r\n */\r\n get: function () {\r\n var max = this._maxAdjusted;\r\n if (!$type.isNumber(max)) {\r\n max = this._maxDefined;\r\n }\r\n return max;\r\n },\r\n /**\r\n * A maximum value for the axis scale.\r\n *\r\n * This value might be auto-adjusted by the Axis in order to accomodate the\r\n * grid nicely, i.e. plot area is divided by grid in nice equal cells.\r\n *\r\n * The above might be overridden by `strictMinMax` which will force exact\r\n * user-defined min and max values to be used for scale.\r\n *\r\n * @param value Max value\r\n */\r\n set: function (value) {\r\n if (this._maxDefined != value) {\r\n this._maxDefined = value;\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxis.prototype, \"adjustLabelPrecision\", {\r\n /**\r\n * @return Adjust precision\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"adjustLabelPrecision\");\r\n },\r\n /**\r\n * By default the axis will adjust precision of all numbers to match number\r\n * of decimals in all its labels, e.g.: `1.0`, `1.5`, `2.0`.\r\n *\r\n * To disable set `adjustLabelPrecision` to `false`, to use whatever other\r\n * precision or number format settings are set.\r\n *\r\n * IMPORTANT: This setting will be ignored if your number format uses\r\n * modifiers, e.g. `\"#a\"`.\r\n *\r\n * @default true\r\n * @since 4.9.14\r\n * @param value Adjust precision\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"adjustLabelPrecision\", value)) {\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Used for the Series to register itself as the user of this Axis.\r\n *\r\n * This will also decorate both the Series and Axis with event handlers, used\r\n * to redraw on Axis position/zoom change.\r\n *\r\n * A disposer for those events is returned, so that they can be disposed\r\n * together with Series.\r\n *\r\n * @ignore Exclude from docs\r\n * @param series Series\r\n * @return Disposer for events\r\n */\r\n ValueAxis.prototype.registerSeries = function (series) {\r\n return new MultiDisposer([\r\n _super.prototype.registerSeries.call(this, series),\r\n series.events.on(\"extremeschanged\", this.handleExtremesChange, this, false),\r\n series.events.on(\"selectionextremeschanged\", this.handleSelectionExtremesChange, this, false),\r\n this.events.on(\"extremeschanged\", series.invalidate, series, false)\r\n ]);\r\n };\r\n /**\r\n * Perform tasks after Axis zoom.\r\n */\r\n ValueAxis.prototype.handleSelectionExtremesChange = function () {\r\n var _this = this;\r\n var selectionMin;\r\n var selectionMax;\r\n var allHidden = true;\r\n $iter.each(this.series.iterator(), function (series) {\r\n if (!series.ignoreMinMax && !series.isHidden && !series.outOfRange) {\r\n if (series.visible && !series.isHiding) {\r\n allHidden = false;\r\n }\r\n var seriesSelectionMin = series.selectionMin(_this);\r\n var seriesSelectionMax = series.selectionMax(_this);\r\n if ($type.isNumber(seriesSelectionMin)) {\r\n if (!$type.isNumber(selectionMin) || (seriesSelectionMin < selectionMin)) {\r\n selectionMin = seriesSelectionMin;\r\n }\r\n }\r\n // check max\r\n if ($type.isNumber(seriesSelectionMax)) {\r\n if (!$type.isNumber(selectionMax) || (seriesSelectionMax > selectionMax)) {\r\n selectionMax = seriesSelectionMax;\r\n }\r\n }\r\n }\r\n });\r\n if (this.includeRangesInMinMax) {\r\n this.axisRanges.each(function (range) {\r\n if (!range.ignoreMinMax) {\r\n var minValue = $math.min(range.value, range.endValue);\r\n var maxValue = $math.max(range.value, range.endValue);\r\n if (minValue < selectionMin) {\r\n selectionMin = minValue;\r\n }\r\n if (maxValue > selectionMax) {\r\n selectionMax = maxValue;\r\n }\r\n }\r\n });\r\n }\r\n // this is not good, as if date axis is initially zoomed, selection of y axis is reset to 0, 1 at the end of this method\r\n //$iter.each(this.series.iterator(), (series) => {\r\n //\tif (!series.appeared) {\r\n //\t\tallHidden = true;\r\n //\t}\r\n //})\r\n if ($type.isNumber(this._minDefined)) {\r\n if (this.strictMinMax) {\r\n selectionMin = this._minDefined;\r\n }\r\n else {\r\n selectionMin = this.min;\r\n }\r\n }\r\n else if (this.strictMinMax) {\r\n selectionMin = this._minReal;\r\n }\r\n if ($type.isNumber(this._maxDefined)) {\r\n if (this.strictMinMax) {\r\n selectionMax = this._maxDefined;\r\n }\r\n else {\r\n selectionMax = this.max;\r\n }\r\n }\r\n else if (this.strictMinMax) {\r\n selectionMax = this._maxReal;\r\n }\r\n if (selectionMin == selectionMax) {\r\n selectionMin -= this._deltaMinMax;\r\n selectionMax += this._deltaMinMax;\r\n var minMaxStep2 = this.adjustMinMax(selectionMin, selectionMax, 0, this._gridCount, this.strictMinMax);\r\n selectionMin = minMaxStep2.min;\r\n selectionMax = minMaxStep2.max;\r\n }\r\n var dif = this.adjustDifference(selectionMin, selectionMax);\r\n var minMaxStep = this.adjustMinMax(selectionMin, selectionMax, dif, this._gridCount);\r\n selectionMin = minMaxStep.min;\r\n selectionMax = minMaxStep.max;\r\n selectionMin -= (selectionMax - selectionMin) * this.extraMin;\r\n selectionMax += (selectionMax - selectionMin) * this.extraMax;\r\n selectionMin = $math.fitToRange(selectionMin, this.min, this.max);\r\n selectionMax = $math.fitToRange(selectionMax, this.min, this.max);\r\n // do it for the second time !important\r\n dif = this.adjustDifference(selectionMin, selectionMax);\r\n minMaxStep = this.adjustMinMax(selectionMin, selectionMax, dif, this._gridCount, true);\r\n selectionMin = minMaxStep.min;\r\n selectionMax = minMaxStep.max;\r\n if (this.strictMinMax) {\r\n selectionMin = $math.max(selectionMin, this._minDefined);\r\n selectionMax = $math.min(selectionMax, this._maxDefined);\r\n }\r\n var step = minMaxStep.step;\r\n if (this.syncWithAxis) {\r\n minMaxStep = this.syncAxes(selectionMin, selectionMax, step);\r\n selectionMin = minMaxStep.min;\r\n selectionMax = minMaxStep.max;\r\n this.invalidate();\r\n }\r\n step = minMaxStep.step;\r\n // needed because of grouping\r\n this._difference = this.adjustDifference(this.min, this.max);\r\n var start = this.valueToPosition(selectionMin);\r\n var end = this.valueToPosition(selectionMax);\r\n // in case all series are hidden or hiding, full zoomout\r\n if (allHidden && !this.syncWithAxis) {\r\n start = 0;\r\n end = 1;\r\n }\r\n var declination = 0;\r\n if (this.syncWithAxis) {\r\n declination = 5;\r\n this.setCache(selectionMin + \"-\" + selectionMax, step);\r\n }\r\n else {\r\n if (this._step != step || this._minZoomed != selectionMin || this._maxZoomed != selectionMax) {\r\n this._dsc = true;\r\n }\r\n this._step = step;\r\n this._minZoomed = selectionMin;\r\n this._maxZoomed = selectionMax;\r\n }\r\n if (!this.keepSelection) {\r\n this.zoom({ start: start, end: end }, false, false, declination);\r\n }\r\n };\r\n Object.defineProperty(ValueAxis.prototype, \"strictMinMax\", {\r\n /**\r\n * @return Use exact values?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"strictMinMax\");\r\n },\r\n /**\r\n * Indicates whether to blindly use exact `min` and `max` values set by user\r\n * when generating Axis scale.\r\n *\r\n * If not set, the Axis might slightly adjust those values to accomodate a\r\n * better looking grid.\r\n *\r\n * NOTE: if `min` and `max` are not set, setting `strictMinMax` to `true`\r\n * will result in fixing the scale of the axis to actual lowest and highest\r\n * values in the series within currently selected scope.\r\n *\r\n * @default false\r\n * @param value Use exact values?\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"strictMinMax\", value)) {\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxis.prototype, \"logarithmic\", {\r\n /**\r\n * @return Logarithmic scale?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"logarithmic\");\r\n },\r\n /**\r\n * Indicates if this axis should use a logarithmic scale.\r\n *\r\n * Please note that logarithmic axis can **only** accommodate values bigger\r\n * than zero.\r\n *\r\n * Having zero or negative values will result in error and failure of the\r\n * whole chart.\r\n *\r\n * @param value Logarithmic scale?\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"logarithmic\", value)) {\r\n this.invalidate();\r\n this.series.each(function (series) {\r\n series.invalidateDataItems();\r\n });\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxis.prototype, \"keepSelection\", {\r\n /**\r\n * @return Preseve zoom after data update?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"keepSelection\");\r\n },\r\n /**\r\n * Indicates if a current selection (zoom) should be kept across data updates.\r\n *\r\n * If your axis is zoomed while chart's data is updated, the axis will try\r\n * to retain the same start and end values.\r\n *\r\n * You can also use this to initially pre-zoom axis:\r\n *\r\n * ```TypeScript\r\n * axis.keepSelection = true;\r\n * axis.start = 0.5;\r\n * axis.end = 0.7;\r\n * ```\r\n * ```JavaScript\r\n * axis.keepSelection = true;\r\n * axis.start = 0.5;\r\n * axis.end = 0.7;\r\n * ```\r\n * ```JSON\r\n * {\r\n * \"xAxes\": [{\r\n * // ...\r\n * \"keepSelection\": true,\r\n * \"start\": 0.5,\r\n * \"end\": 0.7\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * The above will start the chart zoomed from the middle of the actual scope\r\n * to 70%.\r\n *\r\n * @since 4.1.1\r\n * @default false\r\n * @param value Preseve zoom after data update?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"keepSelection\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxis.prototype, \"includeRangesInMinMax\", {\r\n /**\r\n * @return Include ranges?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"includeRangesInMinMax\");\r\n },\r\n /**\r\n * If set to `true`, values of axis ranges will be included when calculating\r\n * range of values / scale of the [[ValueAxis]].\r\n *\r\n * @default false\r\n * @since 4.4.9\r\n * @param value Include ranges?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"includeRangesInMinMax\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxis.prototype, \"maxPrecision\", {\r\n /**\r\n * @return max precision\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxPrecision\");\r\n },\r\n /**\r\n * Maximum number of decimals to allow when placing grid lines and labels\r\n * on axis.\r\n *\r\n * Set it to `0` (zero) to force integer-only axis labels.\r\n *\r\n * @param {number}\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"maxPrecision\", value)) {\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxis.prototype, \"extraTooltipPrecision\", {\r\n /**\r\n * @return Extra decimals\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"extraTooltipPrecision\");\r\n },\r\n /**\r\n * This setting allows using bigger precision for numbers displayed in axis\r\n * tooltip.\r\n *\r\n * Please note that this setting indicates additional decimal places to\r\n * automatically-calculated axis number precision.\r\n *\r\n * So if your axis displays numbers like 0.1, 0.2, etc. (one decimal place),\r\n * and you set `extraTooltipPrecision = 1`, tooltips will display numbers\r\n * like 0.12, 0.25, etc. (two decimal places).\r\n *\r\n * @default 0\r\n * @since 4.8.3\r\n * @param value Extra decimals\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"extraTooltipPrecision\", value)) {\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Invalidates axis data items when series extremes change\r\n */\r\n ValueAxis.prototype.handleExtremesChange = function () {\r\n var _this = this;\r\n this._extremesChanged = true;\r\n this.getMinMax();\r\n if (this.ghostLabel) {\r\n var mw_1 = 0;\r\n this.dataItems.each(function (dataItem) {\r\n if (dataItem.label && dataItem.label.pixelWidth > mw_1) {\r\n _this.ghostLabel.text = dataItem.label.currentText;\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * Returns relative position on axis for series' data item's value.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem Data item\r\n * @param key Data field to get value from\r\n * @param location Location (0-1)\r\n * @param stackKey ?\r\n * @return X coordinate (px)\r\n */\r\n ValueAxis.prototype.getX = function (dataItem, key, location, stackKey, range) {\r\n return this.renderer.positionToPoint(this.getPositionX(dataItem, key, location, stackKey, range)).x;\r\n };\r\n /**\r\n * Returns the X coordinate for series' data item's value.\r\n *\r\n * @since 4.5.14\r\n * @param dataItem Data item\r\n * @param key Data field to get value from\r\n * @param location Location (0-1)\r\n * @param stackKey ?\r\n * @return Relative position\r\n */\r\n ValueAxis.prototype.getPositionX = function (dataItem, key, location, stackKey, range) {\r\n var value = dataItem.getWorkingValue(key);\r\n if (!$type.hasValue(stackKey)) {\r\n stackKey = \"valueX\";\r\n }\r\n var stack = dataItem.getValue(stackKey, \"stack\");\r\n if (!$type.isNumber(value)) {\r\n value = this.baseValue;\r\n if (this.logarithmic) {\r\n if (stack > 0) {\r\n value = 0;\r\n }\r\n }\r\n }\r\n var position = this.valueToPosition(value + stack);\r\n if (range) {\r\n position = $math.fitToRange(position, range.start, range.end);\r\n }\r\n return position;\r\n };\r\n /**\r\n * Returns the Y coordinate for series' data item's value.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem Data item\r\n * @param key Data field to get value from\r\n * @param location Location (0-1)\r\n * @param stackKey Stack ID\r\n * @return Y coordinate (px)\r\n */\r\n ValueAxis.prototype.getY = function (dataItem, key, location, stackKey, range) {\r\n return this.renderer.positionToPoint(this.getPositionY(dataItem, key, location, stackKey, range)).y;\r\n };\r\n /**\r\n * Returns relative position on axis for series' data item's value.\r\n *\r\n * @since 4.5.14\r\n * @param dataItem Data item\r\n * @param key Data field to get value from\r\n * @param location Location (0-1)\r\n * @param stackKey Stack ID\r\n * @return Relative position\r\n */\r\n ValueAxis.prototype.getPositionY = function (dataItem, key, location, stackKey, range) {\r\n var value = dataItem.getWorkingValue(key);\r\n if (!$type.hasValue(stackKey)) {\r\n stackKey = \"valueY\";\r\n }\r\n var stack = dataItem.getValue(stackKey, \"stack\");\r\n if (!$type.isNumber(value)) {\r\n value = this.baseValue;\r\n if (this.logarithmic) {\r\n if (stack > 0) {\r\n value = 0;\r\n }\r\n }\r\n }\r\n var position = this.valueToPosition(value + stack);\r\n if (range) {\r\n position = $math.fitToRange(position, range.start, range.end);\r\n }\r\n return position;\r\n };\r\n /**\r\n * Returns an angle for series data item.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem Data item\r\n * @param key Data field to get value from\r\n * @param location Location (0-1)\r\n * @param stackKey Stack ID\r\n * @param range Range to fit in\r\n * @return Angle\r\n */\r\n ValueAxis.prototype.getAngle = function (dataItem, key, location, stackKey, range) {\r\n var value = dataItem.getWorkingValue(key);\r\n var stack = dataItem.getValue(stackKey, \"stack\");\r\n if (!$type.isNumber(value)) {\r\n value = this.baseValue;\r\n }\r\n var position = this.valueToPosition(value + stack);\r\n if (range) {\r\n position = $math.fitToRange(position, range.start, range.end);\r\n }\r\n return this.positionToAngle(position);\r\n };\r\n /**\r\n * [getAnyRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param start [description]\r\n * @param end [description]\r\n * @param location [description]\r\n * @return [description]\r\n */\r\n ValueAxis.prototype.getAnyRangePath = function (start, end, location) {\r\n var startPosition = this.valueToPosition(start);\r\n var endPosition = this.valueToPosition(end);\r\n return this.getPositionRangePath(startPosition, endPosition); // Base class (Axis) gets range shape from AxisRenderer\r\n };\r\n /**\r\n * Returns text to show in a axis tooltip, based on specific position within\r\n * axis.\r\n *\r\n * The label will be formatted as per [[NumberFormatter]] set for the whole\r\n * chart, or explicitly for this Axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param position Position (px)\r\n * @return Label (numeric value)\r\n */\r\n ValueAxis.prototype.getTooltipText = function (position) {\r\n var value = $math.round(this.positionToValue(position), this._stepDecimalPlaces + this.extraTooltipPrecision);\r\n var valueStr = this.tooltip.numberFormatter.format(value);\r\n if (!this._adapterO) {\r\n return valueStr;\r\n }\r\n else {\r\n return this._adapterO.apply(\"getTooltipText\", valueStr);\r\n }\r\n };\r\n /**\r\n * Zooms axis to specific values.\r\n *\r\n * @param startValue Start value\r\n * @param endValue End value\r\n * @param skipRangeEvent Do not invoke events\r\n * @param instantly Do not play zoom animations\r\n */\r\n ValueAxis.prototype.zoomToValues = function (startValue, endValue, skipRangeEvent, instantly) {\r\n var start = (startValue - this.min) / (this.max - this.min);\r\n var end = (endValue - this.min) / (this.max - this.min);\r\n this.zoom({ start: start, end: end }, skipRangeEvent, instantly);\r\n };\r\n Object.defineProperty(ValueAxis.prototype, \"minZoomed\", {\r\n /**\r\n * A smallest value in axis scale within current zoom.\r\n *\r\n * @return Min zoom value\r\n */\r\n get: function () {\r\n if (!this.syncWithAxis) {\r\n return $math.max(this.min, this._minZoomed);\r\n }\r\n else {\r\n return this._minZoomed;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxis.prototype, \"maxZoomed\", {\r\n /**\r\n * A biggest value in axis scale within current zoom.\r\n * @return [description]\r\n */\r\n get: function () {\r\n if (!this.syncWithAxis) {\r\n return $math.min(this.max, this._maxZoomed);\r\n }\r\n else {\r\n return this._maxZoomed;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Updates positioning of Axis breaks after something changes.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ValueAxis.prototype.fixAxisBreaks = function () {\r\n var _this = this;\r\n _super.prototype.fixAxisBreaks.call(this);\r\n var axisBreaks = this._axisBreaks;\r\n if (axisBreaks && axisBreaks.length > 0) {\r\n // process breaks\r\n axisBreaks.each(function (axisBreak) {\r\n var startValue = axisBreak.adjustedStartValue;\r\n var endValue = axisBreak.adjustedEndValue;\r\n // break difference\r\n var axisBreakDif = endValue - startValue;\r\n var axisBreakGridCount = Math.ceil(axisBreakDif * axisBreak.breakSize) * _this._gridCount / (_this.max - _this.min);\r\n // calculate min, max and step for axis break\r\n var breakMinMaxStep = _this.adjustMinMax(startValue, endValue, axisBreakDif, axisBreakGridCount, true);\r\n axisBreak.adjustedStep = breakMinMaxStep.step;\r\n axisBreak.adjustedMin = breakMinMaxStep.min;\r\n axisBreak.adjustedMax = breakMinMaxStep.max;\r\n });\r\n }\r\n this._difference = this.adjustDifference(this.min, this.max);\r\n };\r\n /**\r\n * Returns value based on position.\r\n *\r\n * Please note that `position` represents position within axis which may be\r\n * zoomed and not correspond to Cursor's `position`.\r\n *\r\n * To convert Cursor's `position` to Axis' `position` use `toAxisPosition()` method.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/tutorials/tracking-cursors-position-via-api/#Tracking_Cursor_s_position} For more information about cursor tracking.\r\n * @param position Relative position on axis (0-1)\r\n * @return Position label\r\n */\r\n ValueAxis.prototype.getPositionLabel = function (position) {\r\n var value = this.positionToValue(position);\r\n return this.numberFormatter.format(value);\r\n };\r\n /**\r\n * Shows Axis tooltip at specific value\r\n *\r\n * @param value Value\r\n */\r\n ValueAxis.prototype.showTooltipAt = function (value) {\r\n this.showTooltipAtPosition(this.valueToPosition(value));\r\n };\r\n /**\r\n * Copies all properties and related data from a different instance of Axis.\r\n *\r\n * @param source Source Axis\r\n */\r\n ValueAxis.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.min = source.min;\r\n this.max = source.max;\r\n this.calculateTotals = source.calculateTotals;\r\n this._baseValue = source.baseValue;\r\n };\r\n Object.defineProperty(ValueAxis.prototype, \"syncWithAxis\", {\r\n /**\r\n * @return Target axis\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"syncWithAxis\");\r\n },\r\n /**\r\n * Enables syncing of grid with another axis.\r\n *\r\n * To enable, set to a reference of the other `ValueAxis`. This axis will try\r\n * to maintain its scale in such way that its grid matches target axis grid.\r\n *\r\n * IMPORTANT #1: At this stage it's an experimental feature. Use it at your\r\n * own risk, as it may not work in 100% of the scenarios.\r\n *\r\n * IMPORTANT #2: `syncWithAxis` is not compatible with `strictMinMax` and\r\n * `sequencedInterpolation` settings.\r\n *\r\n * IMPORTANT #3: `syncWithAxis` is not compatible with scrollbars. Make sure\r\n * you do not add a scrollbar in the same direction as synced axes. For\r\n * example, if you have vertical synced axes, do not add `scrollbarY` on\r\n * your chart. It will create anomalies when used.\r\n *\r\n * IMPORTANT #4: `syncWithAxis` is not compatible with `XYCursor` if it has\r\n * its `behavior` set to either `zoomY` or `zoomXY`.\r\n *\r\n * @since 4.8.1\r\n * @param axis Target axis\r\n */\r\n set: function (axis) {\r\n var _this = this;\r\n if (this.setPropertyValue(\"syncWithAxis\", axis, true)) {\r\n if (axis) {\r\n this._disposers.push(axis.events.on(\"extremeschanged\", this.handleSelectionExtremesChange, this, false));\r\n this._disposers.push(axis.events.on(\"selectionextremeschanged\", this.handleSelectionExtremesChange, this, false));\r\n this._disposers.push(axis.events.on(\"startendchanged\", this.handleSelectionExtremesChange, this, false));\r\n this.events.on(\"shown\", this.handleSelectionExtremesChange, this, false);\r\n this.events.on(\"maxsizechanged\", function () {\r\n _this.clearCache();\r\n _this._disposers.push(registry.events.once(\"exitframe\", function () {\r\n _this.handleSelectionExtremesChange();\r\n }));\r\n }, this, false);\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValueAxis.prototype, \"treatZeroAs\", {\r\n /**\r\n * @return Zero replacement value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"treatZeroAs\");\r\n },\r\n /**\r\n * If set, zero values will be treated as this value.\r\n *\r\n * It is useful if you need to use data with zero-values on a logarithmic\r\n * axis scale.\r\n *\r\n * @since 4.9.34\r\n * @param value Zero replacement value\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"treatZeroAs\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Syncs with a target axis.\r\n *\r\n * @param min Min\r\n * @param max Max\r\n * @param step Step\r\n */\r\n ValueAxis.prototype.syncAxes = function (min, max, step) {\r\n var axis = this.syncWithAxis;\r\n if (axis) {\r\n if (!$type.isNumber(min)) {\r\n min = this.min;\r\n }\r\n if (!$type.isNumber(max)) {\r\n max = this.max;\r\n }\r\n if (!$type.isNumber(step)) {\r\n step = this._step;\r\n }\r\n var count = Math.round((axis.maxZoomed - axis.minZoomed) / axis.step);\r\n var currentCount = Math.round((max - min) / step);\r\n if ($type.isNumber(count) && $type.isNumber(currentCount)) {\r\n var synced = false;\r\n var c = 0;\r\n var diff = (max - min) * 0.01;\r\n var omin = min;\r\n var omax = max;\r\n var ostep = step;\r\n while (synced != true) {\r\n synced = this.checkSync(omin, omax, ostep, count);\r\n c++;\r\n if (c > 1000) {\r\n synced = true;\r\n }\r\n if (!synced) {\r\n //omin = min - diff * c;\r\n if (c / 3 == Math.round(c / 3)) {\r\n omin = min - diff * c;\r\n if (min >= 0 && omin < 0) {\r\n omin = 0;\r\n }\r\n }\r\n else {\r\n omax = max + diff * c;\r\n if (omax <= 0 && omax > 0) {\r\n omax = 0;\r\n }\r\n }\r\n var minMaxStep = this.adjustMinMax(omin, omax, omax - omin, this._gridCount, true);\r\n omin = minMaxStep.min;\r\n omax = minMaxStep.max;\r\n ostep = minMaxStep.step;\r\n }\r\n else {\r\n min = omin;\r\n max = omax;\r\n step = ostep;\r\n }\r\n }\r\n }\r\n }\r\n return { min: min, max: max, step: step };\r\n };\r\n /**\r\n * Returns `true` if axis needs to be resunced with some other axis.\r\n */\r\n ValueAxis.prototype.checkSync = function (min, max, step, count) {\r\n var currentCount = (max - min) / step;\r\n for (var i = 1; i < count; i++) {\r\n if ($math.round(currentCount / i, 1) == count || currentCount * i == count) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n ValueAxis.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Set up axes\r\n if ($type.hasValue(config.syncWithAxis) && $type.isString(config.syncWithAxis)) {\r\n if (this.map.hasKey(config.syncWithAxis)) {\r\n config.syncWithAxis = this.map.getKey(config.syncWithAxis);\r\n }\r\n else {\r\n this.processingErrors.push(\"[ValueAxis] No axis with id \\\"\" + config.syncWithAxis + \"\\\" found for `syncWithAxis`\");\r\n delete config.xAxis;\r\n }\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n return ValueAxis;\r\n}(Axis));\r\nexport { ValueAxis };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ValueAxis\"] = ValueAxis;\r\nregistry.registeredClasses[\"ValueAxisDataItem\"] = ValueAxisDataItem;\r\n//# sourceMappingURL=ValueAxis.js.map","/**\r\n * DateAxisBreak includes functionality to add breaks on a [[DateAxis]].\r\n *\r\n * A \"break\" can be used to \"cut out\" specific ranges of the axis scale, e.g.\r\n * weekends and holidays out of the Date-based axis.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { ValueAxisBreak } from \"./ValueAxisBreak\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Class used to define breaks for [[DateAxis]].\r\n *\r\n * A \"break\" can be used to \"cut out\" specific ranges of the axis scale, e.g.\r\n * weekends and holidays out of the Date-based axis.\r\n *\r\n * @see {@link IDateAxisBreakEvents} for a list of available events\r\n * @see {@link IDateAxisBreakAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar DateAxisBreak = /** @class */ (function (_super) {\r\n __extends(DateAxisBreak, _super);\r\n /**\r\n * Constructor\r\n */\r\n function DateAxisBreak() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"DateAxisBreak\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(DateAxisBreak.prototype, \"startDate\", {\r\n /**\r\n * @return Start date\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startDate\");\r\n },\r\n /**\r\n * Starting date for the break.\r\n *\r\n * @param value Start date\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"startDate\", value)) {\r\n this.startValue = value.getTime();\r\n if (this.axis) {\r\n this.axis.invalidate();\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateAxisBreak.prototype, \"endDate\", {\r\n /**\r\n * @return End date\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endDate\");\r\n },\r\n /**\r\n * Ending date for the break.\r\n *\r\n * @param value End date\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"endDate\", value)) {\r\n this.endValue = value.getTime();\r\n if (this.axis) {\r\n this.axis.invalidate();\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return DateAxisBreak;\r\n}(ValueAxisBreak));\r\nexport { DateAxisBreak };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"DateAxisBreak\"] = DateAxisBreak;\r\n//# sourceMappingURL=DateAxisBreak.js.map","/**\r\n * DateAxis module\r\n */\r\nimport { __assign, __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { ValueAxis, ValueAxisDataItem } from \"./ValueAxis\";\r\nimport { List } from \"../../core/utils/List\";\r\nimport { Dictionary } from \"../../core/utils/Dictionary\";\r\nimport { DateAxisBreak } from \"./DateAxisBreak\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $time from \"../../core/utils/Time\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport * as $object from \"../../core/utils/Object\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport { OrderedListTemplate } from \"../../core/utils/SortedList\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines data item for [[DateAxis]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar DateAxisDataItem = /** @class */ (function (_super) {\r\n __extends(DateAxisDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function DateAxisDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"DateAxisDataItem\";\r\n _this.applyTheme();\r\n _this.values.date = {};\r\n _this.values.endDate = {};\r\n return _this;\r\n }\r\n Object.defineProperty(DateAxisDataItem.prototype, \"date\", {\r\n /**\r\n * @return Date\r\n */\r\n get: function () {\r\n return this.dates[\"date\"];\r\n },\r\n /**\r\n * Date position of the data item.\r\n *\r\n * @param date Date\r\n */\r\n set: function (date) {\r\n this.setDate(\"date\", date);\r\n this.value = date.getTime();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateAxisDataItem.prototype, \"endDate\", {\r\n /**\r\n * @return End date\r\n */\r\n get: function () {\r\n return this.dates[\"endDate\"];\r\n },\r\n /**\r\n * End date for data item.\r\n *\r\n * @param date End date\r\n */\r\n set: function (date) {\r\n this.setDate(\"endDate\", date);\r\n this.endValue = date.getTime();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return DateAxisDataItem;\r\n}(ValueAxisDataItem));\r\nexport { DateAxisDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Used to create a date/time-based axis for the chart.\r\n *\r\n * ```TypeScript\r\n * // Create the axis\r\n * let xAxis = chart.xAxes.push(new am4charts.DateAxis());\r\n *\r\n * // Set settings\r\n * xAxis.title.text = \"Time\";\r\n * ```\r\n * ```JavaScript\r\n * // Create the axis\r\n * var valueAxis = chart.xAxes.push(new am4charts.DateAxis());\r\n *\r\n * // Set settings\r\n * valueAxis.title.text = \"Time\";\r\n * ```\r\n * ```JSON\r\n * \"xAxes\": [{\r\n * \"type\": \"DateAxis\",\r\n * \"title\": {\r\n * \"text\": \"Time\"\r\n * }\r\n * }]\r\n * ```\r\n *\r\n * @see {@link IDateAxisEvents} for a list of available Events\r\n * @see {@link IDateAxisAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/date-axis/} got `DateAxis` documention\r\n * @important\r\n */\r\nvar DateAxis = /** @class */ (function (_super) {\r\n __extends(DateAxis, _super);\r\n /**\r\n * Constructor\r\n */\r\n function DateAxis() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this._gapBreaks = false;\r\n /**\r\n * A list of date/time intervals for Date axis.\r\n *\r\n * This define various granularities available for the axis. For example\r\n * if you have an axis spanning an hour, and space for 6 grid lines / labels\r\n * the axis will choose the granularity of 10 minutes, displaying a label\r\n * every 10 minutes.\r\n *\r\n * Default intervals:\r\n *\r\n * ```JSON\r\n * [\r\n * { timeUnit: \"millisecond\", count: 1 },\r\n * { timeUnit: \"millisecond\", count: 5 },\r\n * { timeUnit: \"millisecond\", count: 10 },\r\n * { timeUnit: \"millisecond\", count: 50 },\r\n * { timeUnit: \"millisecond\", count: 100 },\r\n * { timeUnit: \"millisecond\", count: 500 },\r\n * { timeUnit: \"second\", count: 1 },\r\n * { timeUnit: \"second\", count: 5 },\r\n * { timeUnit: \"second\", count: 10 },\r\n * { timeUnit: \"second\", count: 30 },\r\n * { timeUnit: \"minute\", count: 1 },\r\n * { timeUnit: \"minute\", count: 5 },\r\n * { timeUnit: \"minute\", count: 10 },\r\n * { timeUnit: \"minute\", count: 30 },\r\n * { timeUnit: \"hour\", count: 1 },\r\n * { timeUnit: \"hour\", count: 3 },\r\n * { timeUnit: \"hour\", count: 6 },\r\n * { timeUnit: \"hour\", count: 12 },\r\n * { timeUnit: \"day\", count: 1 },\r\n * { timeUnit: \"day\", count: 2 },\r\n * { timeUnit: \"day\", count: 3 },\r\n * { timeUnit: \"day\", count: 4 },\r\n * { timeUnit: \"day\", count: 5 },\r\n * { timeUnit: \"week\", count: 1 },\r\n * { timeUnit: \"month\", count: 1 },\r\n * { timeUnit: \"month\", count: 2 },\r\n * { timeUnit: \"month\", count: 3 },\r\n * { timeUnit: \"month\", count: 6 },\r\n * { timeUnit: \"year\", count: 1 },\r\n * { timeUnit: \"year\", count: 2 },\r\n * { timeUnit: \"year\", count: 5 },\r\n * { timeUnit: \"year\", count: 10 },\r\n * { timeUnit: \"year\", count: 50 },\r\n * { timeUnit: \"year\", count: 100 }\r\n * ]\r\n * ```\r\n */\r\n _this.gridIntervals = new List();\r\n /**\r\n * If data aggregation is enabled by setting Axis' `groupData = true`, the\r\n * chart will try to aggregate data items into grouped data items.\r\n *\r\n * If there are more data items in selected period than `groupCount`, it will\r\n * group data items into bigger period.\r\n *\r\n * For example seconds might be grouped into 10-second aggregate data items.\r\n *\r\n * This setting indicates what group intervals can the chart group to.\r\n *\r\n * Default intervals:\r\n *\r\n * ```JSON\r\n * [\r\n * { timeUnit: \"millisecond\", count: 1},\r\n * { timeUnit: \"millisecond\", count: 10 },\r\n * { timeUnit: \"millisecond\", count: 100 },\r\n * { timeUnit: \"second\", count: 1 },\r\n * { timeUnit: \"second\", count: 10 },\r\n * { timeUnit: \"minute\", count: 1 },\r\n * { timeUnit: \"minute\", count: 10 },\r\n * { timeUnit: \"hour\", count: 1 },\r\n * { timeUnit: \"day\", count: 1 },\r\n * { timeUnit: \"week\", count: 1 },\r\n * { timeUnit: \"month\", count: 1 },\r\n * { timeUnit: \"year\", count: 1 }\r\n * ]\r\n * ```\r\n * `groupData = true` does not work in combination with `skipEmptyPeriods = true`.\r\n *\r\n * @since 4.7.0\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/date-axis/#Dynamic_data_item_grouping} for more information about dynamic data item grouping.\r\n */\r\n _this.groupIntervals = new List();\r\n /**\r\n * A collection of date formats to use when formatting different time units\r\n * on Date/time axis.\r\n *\r\n * Actual defaults will depend on the language locale set for the chart.\r\n *\r\n * To override format for a specific time unit, say days, you need to set\r\n * the appropriate key to a format string. E.g.:\r\n *\r\n * ```TypeScript\r\n * axis.dateFormats.setKey(\"day\", \"MMMM d, yyyy\");\r\n * ```\r\n * ```JavaScript\r\n * axis.dateFormats.setKey(\"day\", \"MMMM d, yyyy\");\r\n * ```\r\n * ```JSON\r\n * \"xAxes\": [{\r\n * \"type\": \"DateAxis\",\r\n * \"dateFormats\": {\r\n * \"day\": \"MMMM d, yyyy\"\r\n * }\r\n * }]\r\n * ```\r\n *\r\n * @see {@link DateFormatter}\r\n */\r\n _this.dateFormats = new Dictionary();\r\n /**\r\n * These formats are applied to labels that are first in a larger unit.\r\n *\r\n * For example, if we have a DateAxis with days on it, the first day of month\r\n * indicates a break in month - a start of the bigger period.\r\n *\r\n * For those labels, `periodChangeDateFormats` are applied instead of\r\n * `dateFormats`.\r\n *\r\n * This allows us implement convenient structures, like instead of:\r\n *\r\n * `Jan 1 - Jan 2 - Jan 3 - ...`\r\n *\r\n * We can have:\r\n *\r\n * `Jan - 1 - 2 - 3 - ...`\r\n *\r\n * This can be disabled by setting `markUnitChange = false`.\r\n */\r\n _this.periodChangeDateFormats = new Dictionary();\r\n /**\r\n * Actual interval (granularity) derived from the actual data.\r\n */\r\n _this._baseIntervalReal = { timeUnit: \"day\", count: 1 };\r\n /**\r\n */\r\n _this._prevSeriesTime = {};\r\n /**\r\n * [_minDifference description]\r\n *\r\n * @todo Description\r\n */\r\n _this._minDifference = {};\r\n /**\r\n * @ignore\r\n */\r\n _this._firstWeekDay = 1;\r\n /**\r\n * A collection of start timestamps to use as axis' min timestamp for\r\n * particular data item item periods.\r\n *\r\n * @since 4.7.0\r\n * @readonly\r\n */\r\n _this.groupMin = {};\r\n /**\r\n * A collection of start timestamps to use as axis' max timestamp for\r\n * particular data item item periods.\r\n *\r\n * @since 4.7.0\r\n * @readonly\r\n */\r\n _this.groupMax = {};\r\n _this.className = \"DateAxis\";\r\n _this.setPropertyValue(\"markUnitChange\", true);\r\n _this.snapTooltip = true;\r\n _this.tooltipPosition = \"pointer\";\r\n _this.setPropertyValue(\"groupData\", false);\r\n _this.groupCount = 200;\r\n _this.events.on(\"parentset\", _this.getDFFormatter, _this, false);\r\n // Translatable defaults are applied in `applyInternalDefaults()`\r\n // ...\r\n // Define default intervals\r\n _this.gridIntervals.pushAll([\r\n { timeUnit: \"millisecond\", count: 1 },\r\n { timeUnit: \"millisecond\", count: 5 },\r\n { timeUnit: \"millisecond\", count: 10 },\r\n { timeUnit: \"millisecond\", count: 50 },\r\n { timeUnit: \"millisecond\", count: 100 },\r\n { timeUnit: \"millisecond\", count: 500 },\r\n { timeUnit: \"second\", count: 1 },\r\n { timeUnit: \"second\", count: 5 },\r\n { timeUnit: \"second\", count: 10 },\r\n { timeUnit: \"second\", count: 30 },\r\n { timeUnit: \"minute\", count: 1 },\r\n { timeUnit: \"minute\", count: 5 },\r\n { timeUnit: \"minute\", count: 10 },\r\n { timeUnit: \"minute\", count: 15 },\r\n { timeUnit: \"minute\", count: 30 },\r\n { timeUnit: \"hour\", count: 1 },\r\n { timeUnit: \"hour\", count: 3 },\r\n { timeUnit: \"hour\", count: 6 },\r\n { timeUnit: \"hour\", count: 12 },\r\n { timeUnit: \"day\", count: 1 },\r\n { timeUnit: \"day\", count: 2 },\r\n { timeUnit: \"day\", count: 3 },\r\n { timeUnit: \"day\", count: 4 },\r\n { timeUnit: \"day\", count: 5 },\r\n { timeUnit: \"week\", count: 1 },\r\n { timeUnit: \"month\", count: 1 },\r\n { timeUnit: \"month\", count: 2 },\r\n { timeUnit: \"month\", count: 3 },\r\n { timeUnit: \"month\", count: 6 },\r\n { timeUnit: \"year\", count: 1 },\r\n { timeUnit: \"year\", count: 2 },\r\n { timeUnit: \"year\", count: 5 },\r\n { timeUnit: \"year\", count: 10 },\r\n { timeUnit: \"year\", count: 50 },\r\n { timeUnit: \"year\", count: 100 },\r\n { timeUnit: \"year\", count: 200 },\r\n { timeUnit: \"year\", count: 500 },\r\n { timeUnit: \"year\", count: 1000 },\r\n { timeUnit: \"year\", count: 2000 },\r\n { timeUnit: \"year\", count: 5000 },\r\n { timeUnit: \"year\", count: 10000 },\r\n { timeUnit: \"year\", count: 100000 }\r\n ]);\r\n _this.groupIntervals.pushAll([\r\n { timeUnit: \"millisecond\", count: 1 },\r\n { timeUnit: \"millisecond\", count: 10 },\r\n { timeUnit: \"millisecond\", count: 100 },\r\n { timeUnit: \"second\", count: 1 },\r\n { timeUnit: \"second\", count: 10 },\r\n { timeUnit: \"minute\", count: 1 },\r\n { timeUnit: \"minute\", count: 10 },\r\n { timeUnit: \"hour\", count: 1 },\r\n { timeUnit: \"day\", count: 1 },\r\n { timeUnit: \"week\", count: 1 },\r\n { timeUnit: \"month\", count: 1 },\r\n { timeUnit: \"year\", count: 1 }\r\n ]);\r\n // Set field name\r\n _this.axisFieldName = \"date\";\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * A function which applies fills to axis cells.\r\n *\r\n * Default function fills every second fill. You can set this to a function\r\n * that follows some other logic.\r\n *\r\n * Function should accept a [[DateAxisDataItem]] and modify its `axisFill`\r\n * property accordingly.\r\n */\r\n DateAxis.prototype.fillRule = function (dataItem) {\r\n var value = dataItem.value;\r\n var axis = dataItem.component;\r\n var gridInterval = axis._gridInterval;\r\n var gridDuration = $time.getDuration(gridInterval.timeUnit, gridInterval.count);\r\n if (Math.round((value - axis.min) / gridDuration) / 2 == Math.round(Math.round((value - axis.min) / gridDuration) / 2)) {\r\n dataItem.axisFill.__disabled = true;\r\n }\r\n else {\r\n dataItem.axisFill.__disabled = false;\r\n }\r\n };\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n DateAxis.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n // Set default date formats\r\n if (!this.dateFormats.hasKey(\"millisecond\")) {\r\n this.dateFormats.setKey(\"millisecond\", this.language.translate(\"_date_millisecond\"));\r\n }\r\n if (!this.dateFormats.hasKey(\"second\")) {\r\n this.dateFormats.setKey(\"second\", this.language.translate(\"_date_second\"));\r\n }\r\n if (!this.dateFormats.hasKey(\"minute\")) {\r\n this.dateFormats.setKey(\"minute\", this.language.translate(\"_date_minute\"));\r\n }\r\n if (!this.dateFormats.hasKey(\"hour\")) {\r\n this.dateFormats.setKey(\"hour\", this.language.translate(\"_date_hour\"));\r\n }\r\n if (!this.dateFormats.hasKey(\"day\")) {\r\n this.dateFormats.setKey(\"day\", this.language.translate(\"_date_day\"));\r\n }\r\n if (!this.dateFormats.hasKey(\"week\")) {\r\n this.dateFormats.setKey(\"week\", this.language.translate(\"_date_day\")); // not a mistake\r\n }\r\n if (!this.dateFormats.hasKey(\"month\")) {\r\n this.dateFormats.setKey(\"month\", this.language.translate(\"_date_month\"));\r\n }\r\n if (!this.dateFormats.hasKey(\"year\")) {\r\n this.dateFormats.setKey(\"year\", this.language.translate(\"_date_year\"));\r\n }\r\n if (!this.periodChangeDateFormats.hasKey(\"millisecond\")) {\r\n this.periodChangeDateFormats.setKey(\"millisecond\", this.language.translate(\"_date_millisecond\"));\r\n }\r\n if (!this.periodChangeDateFormats.hasKey(\"second\")) {\r\n this.periodChangeDateFormats.setKey(\"second\", this.language.translate(\"_date_second\"));\r\n }\r\n if (!this.periodChangeDateFormats.hasKey(\"minute\")) {\r\n this.periodChangeDateFormats.setKey(\"minute\", this.language.translate(\"_date_minute\"));\r\n }\r\n if (!this.periodChangeDateFormats.hasKey(\"hour\")) {\r\n this.periodChangeDateFormats.setKey(\"hour\", this.language.translate(\"_date_day\"));\r\n }\r\n if (!this.periodChangeDateFormats.hasKey(\"day\")) {\r\n this.periodChangeDateFormats.setKey(\"day\", this.language.translate(\"_date_day\"));\r\n }\r\n if (!this.periodChangeDateFormats.hasKey(\"week\")) {\r\n this.periodChangeDateFormats.setKey(\"week\", this.language.translate(\"_date_day\"));\r\n }\r\n if (!this.periodChangeDateFormats.hasKey(\"month\")) {\r\n this.periodChangeDateFormats.setKey(\"month\", this.language.translate(\"_date_month\") + \" \" + this.language.translate(\"_date_year\"));\r\n }\r\n };\r\n /**\r\n * Returns a new/empty [[DataItem]] of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n DateAxis.prototype.createDataItem = function () {\r\n return new DateAxisDataItem();\r\n };\r\n /**\r\n * Returns a new/empty [[AxisBreak]] of the appropriate type.\r\n *\r\n * @return Axis break\r\n */\r\n DateAxis.prototype.createAxisBreak = function () {\r\n return new DateAxisBreak();\r\n };\r\n /**\r\n * Validates Axis' data items.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n DateAxis.prototype.validateDataItems = function () {\r\n // allows to keep selection of the same size\r\n var start = this.start;\r\n var end = this.end;\r\n var baseDuration = this.baseDuration;\r\n var periodCount = (this.max - this.min) / baseDuration;\r\n this._firstWeekDay = this.getFirstWeekDay();\r\n this.getDFFormatter();\r\n _super.prototype.validateDataItems.call(this);\r\n var mainBaseDuration = $time.getDuration(this.mainBaseInterval.timeUnit, this.mainBaseInterval.count);\r\n this.maxZoomFactor = Math.max(1, (this.max - this.min) / mainBaseDuration);\r\n this._deltaMinMax = this.baseDuration / 2;\r\n // allows to keep selection of the same size\r\n var newPeriodCount = (this.max - this.min) / baseDuration;\r\n start = start + (end - start) * (1 - periodCount / newPeriodCount);\r\n this.zoom({ start: start, end: end }, false, true); // added instantlyto solve zoomout problem when we have axes gaps. @todo: check how this affects maxZoomFactor\r\n };\r\n /**\r\n * Handles process after zoom.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Does nothing?\r\n */\r\n DateAxis.prototype.handleSelectionExtremesChange = function () {\r\n };\r\n /**\r\n * Calculates all positions, related to axis as per current zoom.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n DateAxis.prototype.calculateZoom = function () {\r\n var _this = this;\r\n _super.prototype.calculateZoom.call(this);\r\n var difference = this.adjustDifference(this._minZoomed, this._maxZoomed);\r\n var dataSetChanged = false;\r\n // if data has to be grouped, choose interval and set dataset\r\n if (this.groupData && $type.hasValue(difference)) {\r\n var mainBaseInterval = this.mainBaseInterval;\r\n var modifiedDifference = difference + (this.startLocation + (1 - this.endLocation)) * this.baseDuration;\r\n var groupInterval = void 0;\r\n if (this.groupInterval) {\r\n groupInterval = __assign({}, this.groupInterval);\r\n }\r\n else {\r\n groupInterval = this.chooseInterval(0, modifiedDifference, this.groupCount, this.groupIntervals);\r\n if ($time.getDuration(groupInterval.timeUnit, groupInterval.count) < $time.getDuration(mainBaseInterval.timeUnit, mainBaseInterval.count)) {\r\n groupInterval = __assign({}, mainBaseInterval);\r\n }\r\n }\r\n this._groupInterval = groupInterval;\r\n var newId = groupInterval.timeUnit + groupInterval.count;\r\n if (this._currentDataSetId != newId) {\r\n this._currentDataSetId = newId;\r\n this.dispatch(\"groupperiodchanged\");\r\n }\r\n this.series.each(function (series) {\r\n if (series.baseAxis == _this) {\r\n if (series.setDataSet(_this._currentDataSetId)) {\r\n dataSetChanged = true;\r\n }\r\n }\r\n });\r\n }\r\n var gridInterval = this.chooseInterval(0, difference, this._gridCount);\r\n if ($time.getDuration(gridInterval.timeUnit, gridInterval.count) < this.baseDuration) {\r\n gridInterval = __assign({}, this.baseInterval);\r\n }\r\n this._gridInterval = gridInterval;\r\n this._nextGridUnit = $time.getNextUnit(gridInterval.timeUnit);\r\n // the following is needed to avoid grid flickering while scrolling\r\n this._intervalDuration = $time.getDuration(gridInterval.timeUnit, gridInterval.count);\r\n this._gridDate = $time.round(new Date(this.minZoomed - $time.getDuration(gridInterval.timeUnit, gridInterval.count)), gridInterval.timeUnit, gridInterval.count, this._firstWeekDay, this._df.utc, new Date(this.min), this._df.timezoneMinutes, this._df.timezone);\r\n // tell series start/end\r\n $iter.each(this.series.iterator(), function (series) {\r\n if (series.baseAxis == _this) {\r\n var field_1 = series.getAxisField(_this);\r\n var minZoomed = $time.round(new Date(_this._minZoomed + _this.baseDuration * 0.05), _this.baseInterval.timeUnit, _this.baseInterval.count, _this._firstWeekDay, _this._df.utc, undefined, _this._df.timezoneMinutes, _this._df.timezone).getTime();\r\n var minZoomedStr = minZoomed.toString();\r\n var startDataItem = series.dataItemsByAxis.getKey(_this.uid).getKey(minZoomedStr + series.currentDataSetId);\r\n var startIndex = 0;\r\n if (_this.start != 0) {\r\n if (startDataItem) {\r\n startDataItem = _this.findFirst(startDataItem, minZoomed, field_1);\r\n startIndex = startDataItem.index;\r\n }\r\n else {\r\n startIndex = series.dataItems.findClosestIndex(_this._minZoomed, function (x) { return x[field_1]; }, \"left\");\r\n }\r\n }\r\n // 1 millisecond is removed so that if only first item is selected, it would not count in the second.\r\n var baseInterval = _this.baseInterval;\r\n var maxZoomed = $time.add($time.round(new Date(_this._maxZoomed), baseInterval.timeUnit, baseInterval.count, _this._firstWeekDay, _this._df.utc, undefined, _this._df.timezoneMinutes, _this._df.timezone), baseInterval.timeUnit, baseInterval.count, _this._df.utc).getTime();\r\n var maxZoomedStr = maxZoomed.toString();\r\n var endDataItem = series.dataItemsByAxis.getKey(_this.uid).getKey(maxZoomedStr + series.currentDataSetId);\r\n var endIndex = series.dataItems.length;\r\n if (_this.end != 1) {\r\n if (endDataItem) {\r\n endIndex = endDataItem.index;\r\n }\r\n else {\r\n maxZoomed -= 1;\r\n endIndex = series.dataItems.findClosestIndex(maxZoomed, function (x) { return x[field_1]; }, \"right\");\r\n // not good - if end is in the gap, indexes go like 5,4,3,4,2,1\r\n //if (endIndex < series.dataItems.length) {\r\n endIndex++;\r\n //}\r\n }\r\n }\r\n if (series.max(_this) < minZoomed) {\r\n series.startIndex = series.dataItems.length;\r\n series.endIndex = series.dataItems.length;\r\n series.outOfRange = true;\r\n }\r\n else if (series.min(_this) > maxZoomed) {\r\n series.startIndex = 0;\r\n series.endIndex = 0;\r\n series.outOfRange = true;\r\n }\r\n else {\r\n series.outOfRange = false;\r\n series.startIndex = startIndex;\r\n series.endIndex = endIndex;\r\n }\r\n //\tconsole.log(series.name, startIndex, endIndex);\r\n if (!dataSetChanged && series.dataRangeInvalid) {\r\n series.validateDataRange();\r\n }\r\n }\r\n });\r\n };\r\n DateAxis.prototype.findFirst = function (dataItem, time, key) {\r\n var index = dataItem.index;\r\n if (index > 0) {\r\n var series = dataItem.component;\r\n var previousDataItem = series.dataItems.getIndex(index - 1);\r\n var previousDate = previousDataItem[key];\r\n if (!previousDate || previousDate.getTime() < time) {\r\n return dataItem;\r\n }\r\n else {\r\n return this.findFirst(previousDataItem, time, key);\r\n }\r\n }\r\n else {\r\n return dataItem;\r\n }\r\n };\r\n /**\r\n * (Re)validates data.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n DateAxis.prototype.validateData = function () {\r\n _super.prototype.validateData.call(this);\r\n if (!$type.isNumber(this.baseInterval.count)) {\r\n this.baseInterval.count = 1;\r\n }\r\n };\r\n Object.defineProperty(DateAxis.prototype, \"minDifference\", {\r\n /**\r\n * @ignore\r\n */\r\n get: function () {\r\n var _this = this;\r\n var minDifference = Number.MAX_VALUE;\r\n this.series.each(function (series) {\r\n if (minDifference > _this._minDifference[series.uid]) {\r\n minDifference = _this._minDifference[series.uid];\r\n }\r\n });\r\n if (minDifference == Number.MAX_VALUE || minDifference == 0) {\r\n minDifference = $time.getDuration(\"day\");\r\n }\r\n return minDifference;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * [dataChangeUpdate description]\r\n *\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n DateAxis.prototype.seriesDataChangeUpdate = function (series) {\r\n this._minDifference[series.uid] = Number.MAX_VALUE;\r\n };\r\n /**\r\n * [postProcessSeriesDataItems description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n DateAxis.prototype.postProcessSeriesDataItems = function (series) {\r\n var _this = this;\r\n this._firstWeekDay = this.getFirstWeekDay();\r\n if (series) {\r\n this.seriesGroupUpdate(series);\r\n }\r\n else {\r\n this.series.each(function (series) {\r\n _this.seriesGroupUpdate(series);\r\n });\r\n }\r\n this.addEmptyUnitsBreaks();\r\n };\r\n DateAxis.prototype.seriesGroupUpdate = function (series) {\r\n var _this = this;\r\n if (JSON.stringify(series._baseInterval[this.uid]) != JSON.stringify(this.mainBaseInterval)) {\r\n series._baseInterval[this.uid] = this.mainBaseInterval;\r\n series.mainDataSet.each(function (dataItem) {\r\n _this.postProcessSeriesDataItem(dataItem);\r\n });\r\n if (this.groupData) {\r\n this.groupSeriesData(series);\r\n }\r\n }\r\n };\r\n /**\r\n * Calculates series group data.\r\n *\r\n * @param series Series\r\n * @ignore\r\n */\r\n DateAxis.prototype.groupSeriesData = function (series) {\r\n var _this = this;\r\n if (series.baseAxis == this && series.dataItems.length > 0 && !series.dataGrouped) {\r\n series.bulletsContainer.removeChildren();\r\n // make array of intervals which will be used;\r\n var intervals_1 = [];\r\n var mainBaseInterval = this.mainBaseInterval;\r\n var mainIntervalDuration_1 = $time.getDuration(mainBaseInterval.timeUnit, mainBaseInterval.count);\r\n this.groupIntervals.each(function (interval) {\r\n var intervalDuration = $time.getDuration(interval.timeUnit, interval.count);\r\n if ((intervalDuration > mainIntervalDuration_1 && intervalDuration < (_this.max - _this.min)) || _this.groupInterval) {\r\n intervals_1.push(interval);\r\n }\r\n });\r\n if (series._dataSets) {\r\n series._dataSets.each(function (key, dataItems) {\r\n dataItems.each(function (dataItem) {\r\n dataItem.dispose();\r\n });\r\n dataItems.clear();\r\n });\r\n series._dataSets.clear();\r\n }\r\n series.dataGrouped = true;\r\n $array.each(intervals_1, function (interval) {\r\n //let mainBaseInterval = this._mainBaseInterval;\r\n var key = \"date\" + _this.axisLetter;\r\n // create data set\r\n var dataSetId = interval.timeUnit + interval.count;\r\n // todo: check where this clone goes\r\n var dataSet = new OrderedListTemplate(series.mainDataSet.template.clone());\r\n series.dataSets.setKey(dataSetId, dataSet);\r\n var dataItems = series.mainDataSet;\r\n var previousTime = Number.NEGATIVE_INFINITY;\r\n var i = 0;\r\n var newDataItem;\r\n var dataFields = [];\r\n $object.each(series.dataFields, function (dfkey, df) {\r\n var dfk = dfkey;\r\n if (dfk != key && dfk.indexOf(\"Show\") == -1) {\r\n dataFields.push(dfk);\r\n }\r\n });\r\n var roundedDate;\r\n dataItems.each(function (dataItem) {\r\n var date = dataItem.getDate(key);\r\n if (date) {\r\n var time = date.getTime();\r\n roundedDate = $time.round(new Date(time), interval.timeUnit, interval.count, _this._df.firstDayOfWeek, _this._df.utc, undefined, _this._df.timezoneMinutes, _this._df.timezone);\r\n var currentTime = roundedDate.getTime();\r\n // changed period\t\t\t\t\t\t\t\t\r\n if (previousTime < currentTime) {\r\n if (newDataItem && series._adapterO) {\r\n $array.each(dataFields, function (vkey) {\r\n newDataItem.values[vkey].value = series._adapterO.apply(\"groupDataItem\", {\r\n dataItem: newDataItem,\r\n interval: interval,\r\n dataField: vkey,\r\n date: roundedDate,\r\n value: newDataItem.values[vkey].value\r\n }).value;\r\n newDataItem.values[vkey].workingValue = newDataItem.values[vkey].value;\r\n });\r\n }\r\n newDataItem = dataSet.create();\r\n newDataItem.dataContext = {};\r\n newDataItem.setWorkingLocation(\"dateX\", series.dataItems.template.locations.dateX, 0);\r\n newDataItem.setWorkingLocation(\"openDateX\", series.dataItems.template.locations.openDateX, 0);\r\n newDataItem.setWorkingLocation(\"dateY\", series.dataItems.template.locations.dateY, 0);\r\n newDataItem.setWorkingLocation(\"openDateY\", series.dataItems.template.locations.openDateY, 0);\r\n newDataItem.component = series;\r\n // other Dates?\r\n newDataItem.setDate(key, roundedDate);\r\n newDataItem._index = i;\r\n i++;\r\n $array.each(dataFields, function (vkey) {\r\n //let groupFieldName = vkey + \"Group\";\r\n var dvalues = dataItem.values[vkey];\r\n if (dvalues) {\r\n var value = dvalues.value;\r\n if (series._adapterO) {\r\n value = series._adapterO.apply(\"groupValue\", {\r\n dataItem: dataItem,\r\n interval: interval,\r\n dataField: vkey,\r\n date: roundedDate,\r\n value: value\r\n }).value;\r\n }\r\n var values = newDataItem.values[vkey];\r\n if ($type.isNumber(value)) {\r\n values.value = value;\r\n values.workingValue = value;\r\n values.open = value;\r\n values.close = value;\r\n values.low = value;\r\n values.high = value;\r\n values.sum = value;\r\n values.average = value;\r\n values.count = 1;\r\n }\r\n else {\r\n values.count = 0;\r\n }\r\n }\r\n });\r\n _this.postProcessSeriesDataItem(newDataItem, interval);\r\n $object.each(series.propertyFields, function (key, fieldValue) {\r\n var f = key;\r\n var value = dataItem.properties[key];\r\n if ($type.hasValue(value)) {\r\n newDataItem.hasProperties = true;\r\n newDataItem.setProperty(f, value);\r\n }\r\n });\r\n newDataItem.groupDataItems = [dataItem];\r\n previousTime = currentTime;\r\n }\r\n else {\r\n if (newDataItem) {\r\n $array.each(dataFields, function (vkey) {\r\n var groupFieldName = series.groupFields[vkey];\r\n var dvalues = dataItem.values[vkey];\r\n if (dvalues) {\r\n var value = dvalues.value;\r\n if (series._adapterO) {\r\n value = series._adapterO.apply(\"groupValue\", {\r\n dataItem: dataItem,\r\n interval: interval,\r\n dataField: vkey,\r\n date: roundedDate,\r\n value: value\r\n }).value;\r\n }\r\n if ($type.isNumber(value)) {\r\n var values = newDataItem.values[vkey];\r\n if (!$type.isNumber(values.open)) {\r\n values.open = value;\r\n }\r\n values.close = value;\r\n if (values.low > value || !$type.isNumber(values.low)) {\r\n values.low = value;\r\n }\r\n if (values.high < value || !$type.isNumber(values.high)) {\r\n values.high = value;\r\n }\r\n if ($type.isNumber(values.sum)) {\r\n values.sum += value;\r\n }\r\n else {\r\n values.sum = value;\r\n }\r\n values.count++;\r\n values.average = values.sum / values.count;\r\n if ($type.isNumber(values[groupFieldName])) {\r\n values.value = values[groupFieldName];\r\n values.workingValue = values.value;\r\n }\r\n }\r\n }\r\n });\r\n $utils.copyProperties(dataItem.properties, newDataItem.properties);\r\n $object.each(series.propertyFields, function (key, fieldValue) {\r\n var f = key;\r\n var value = dataItem.properties[key];\r\n if ($type.hasValue(value)) {\r\n newDataItem.hasProperties = true;\r\n newDataItem.setProperty(f, value);\r\n }\r\n });\r\n newDataItem.groupDataItems.push(dataItem);\r\n }\r\n }\r\n }\r\n if (newDataItem) {\r\n $utils.copyProperties(dataItem.dataContext, newDataItem.dataContext);\r\n }\r\n });\r\n if (newDataItem && series._adapterO) {\r\n $array.each(dataFields, function (vkey) {\r\n newDataItem.values[vkey].value = series._adapterO.apply(\"groupDataItem\", {\r\n dataItem: newDataItem,\r\n interval: interval,\r\n dataField: vkey,\r\n date: roundedDate,\r\n value: newDataItem.values[vkey].value\r\n }).value;\r\n newDataItem.values[vkey].workingValue = newDataItem.values[vkey].value;\r\n });\r\n }\r\n });\r\n this.calculateZoom();\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n DateAxis.prototype.getDFFormatter = function () {\r\n this._df = this.dateFormatter;\r\n };\r\n /**\r\n * [postProcessSeriesDataItem description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param dataItem Data item\r\n */\r\n DateAxis.prototype.postProcessSeriesDataItem = function (dataItem, interval) {\r\n var _this = this;\r\n // we need to do this for all series data items not only added recently, as baseInterval might change\r\n var intervalID = \"\";\r\n if (interval) {\r\n intervalID = interval.timeUnit + interval.count;\r\n }\r\n else {\r\n interval = this.mainBaseInterval;\r\n }\r\n var series = dataItem.component;\r\n var dataItemsByAxis = series.dataItemsByAxis.getKey(this.uid);\r\n $object.each(dataItem.dates, function (key) {\r\n var date = dataItem.getDate(key);\r\n var time = date.getTime();\r\n var startDate = $time.round(new Date(time), interval.timeUnit, interval.count, _this._firstWeekDay, _this._df.utc, undefined, _this._df.timezoneMinutes, _this._df.timezone);\r\n var startTime = startDate.getTime();\r\n var endDate = $time.add(new Date(startTime), interval.timeUnit, interval.count, _this._df.utc);\r\n dataItem.setCalculatedValue(key, startTime, \"open\");\r\n dataItem.setCalculatedValue(key, endDate.getTime(), \"close\");\r\n dataItemsByAxis.setKey(startTime + intervalID, dataItem);\r\n });\r\n };\r\n /**\r\n * Collapses empty stretches of date/time scale by creating [[AxisBreak]]\r\n * elements for them.\r\n *\r\n * Can be used to automatically remove strethes without data, like weekends.\r\n *\r\n * No, need to call this manually. It will automatically be done if\r\n * `skipEmptyPeriods = true`.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n DateAxis.prototype.addEmptyUnitsBreaks = function () {\r\n var _this = this;\r\n if (this.skipEmptyPeriods && $type.isNumber(this.min) && $type.isNumber(this.max)) {\r\n var timeUnit = this.baseInterval.timeUnit;\r\n var count = this.baseInterval.count;\r\n if (this._axisBreaks) {\r\n this._axisBreaks.clear(); // TODO: what about breaks added by user?\r\n }\r\n var date = $time.round(new Date(this.min), timeUnit, count, this._firstWeekDay, this._df.utc, undefined, this._df.timezoneMinutes, this._df.timezone);\r\n var axisBreak = void 0;\r\n var _loop_1 = function () {\r\n $time.add(date, timeUnit, count, this_1._df.utc);\r\n var startTime = date.getTime();\r\n var startTimeStr = startTime.toString();\r\n var hasData = $iter.contains(this_1.series.iterator(), function (series) {\r\n return !!series.dataItemsByAxis.getKey(_this.uid).getKey(startTimeStr + series.currentDataSetId);\r\n });\r\n // open break if not yet opened\r\n if (!hasData) {\r\n if (!axisBreak) {\r\n axisBreak = this_1.axisBreaks.create();\r\n axisBreak.startDate = new Date(startTime);\r\n this_1._gapBreaks = true;\r\n }\r\n }\r\n else {\r\n // close if already opened\r\n if (axisBreak) {\r\n // close at end time minus one millisecond\r\n axisBreak.endDate = new Date(startTime - 1);\r\n axisBreak = undefined;\r\n }\r\n }\r\n };\r\n var this_1 = this;\r\n while (date.getTime() < this.max - this.baseDuration) {\r\n _loop_1();\r\n }\r\n }\r\n };\r\n /**\r\n * Updates positioning of Axis breaks after something changes.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n DateAxis.prototype.fixAxisBreaks = function () {\r\n var _this = this;\r\n _super.prototype.fixAxisBreaks.call(this);\r\n var axisBreaks = this._axisBreaks;\r\n if (axisBreaks) {\r\n if (axisBreaks.length > 0) {\r\n // process breaks\r\n axisBreaks.each(function (axisBreak) {\r\n var breakGridCount = Math.ceil(_this._gridCount * (Math.min(_this.end, axisBreak.endPosition) - Math.max(_this.start, axisBreak.startPosition)) / (_this.end - _this.start));\r\n axisBreak.gridInterval = _this.chooseInterval(0, axisBreak.adjustedEndValue - axisBreak.adjustedStartValue, breakGridCount);\r\n var gridDate = $time.round(new Date(axisBreak.adjustedStartValue), axisBreak.gridInterval.timeUnit, axisBreak.gridInterval.count, _this._firstWeekDay, _this._df.utc, undefined, _this._df.timezoneMinutes, _this._df.timezone);\r\n if (gridDate.getTime() > axisBreak.startDate.getTime()) {\r\n $time.add(gridDate, axisBreak.gridInterval.timeUnit, axisBreak.gridInterval.count, _this._df.utc);\r\n }\r\n axisBreak.gridDate = gridDate;\r\n });\r\n }\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n DateAxis.prototype.getFirstWeekDay = function () {\r\n if (this._df) {\r\n return this._df.firstDayOfWeek;\r\n }\r\n return 1;\r\n };\r\n /**\r\n * [getGridDate description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param date [description]\r\n * @param intervalCount [description]\r\n * @return [description]\r\n */\r\n DateAxis.prototype.getGridDate = function (date, intervalCount) {\r\n var timeUnit = this._gridInterval.timeUnit;\r\n var realIntervalCount = this._gridInterval.count;\r\n // round date\r\n $time.round(date, timeUnit, 1, this._firstWeekDay, this._df.utc, undefined, this._df.timezoneMinutes, this._df.timezone);\r\n var prevTimestamp = date.getTime();\r\n var newDate = $time.copy(date);\r\n // modify date by adding intervalcount\r\n var timestamp = $time.add(newDate, timeUnit, intervalCount, this._df.utc).getTime();\r\n // if it's axis break, get first rounded date which is not in a break\r\n var axisBreak = this.isInBreak(timestamp);\r\n if (axisBreak && axisBreak.endDate) {\r\n newDate = new Date(axisBreak.endDate.getTime());\r\n $time.round(newDate, timeUnit, realIntervalCount, this._firstWeekDay, this._df.utc, undefined, this._df.timezoneMinutes, this._df.timezone);\r\n if (newDate.getTime() < axisBreak.endDate.getTime()) {\r\n $time.add(newDate, timeUnit, realIntervalCount, this._df.utc);\r\n }\r\n timestamp = newDate.getTime();\r\n }\r\n // get duration between grid lines with break duration removed\r\n var durationBreaksRemoved = this.adjustDifference(prevTimestamp, timestamp);\r\n // calculate how many time units fit to this duration\r\n var countBreaksRemoved = Math.round(durationBreaksRemoved / $time.getDuration(timeUnit));\r\n // if less units fit, add one and repeat\r\n if (countBreaksRemoved < realIntervalCount) {\r\n return this.getGridDate(date, intervalCount + realIntervalCount);\r\n }\r\n return newDate;\r\n };\r\n /**\r\n * [getBreaklessDate description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param axisBreak [description]\r\n * @param timeUnit [description]\r\n * @param count [description]\r\n * @return [description]\r\n */\r\n DateAxis.prototype.getBreaklessDate = function (axisBreak, timeUnit, count) {\r\n var date = new Date(axisBreak.endValue);\r\n $time.round(date, timeUnit, count, this._firstWeekDay, this._df.utc, undefined, this._df.timezoneMinutes, this._df.timezone);\r\n $time.add(date, timeUnit, count, this._df.utc);\r\n var timestamp = date.getTime();\r\n axisBreak = this.isInBreak(timestamp);\r\n if (axisBreak) {\r\n return this.getBreaklessDate(axisBreak, timeUnit, count);\r\n }\r\n return date;\r\n };\r\n /**\r\n * (Re)validates all Axis elements.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n */\r\n DateAxis.prototype.validateAxisElements = function () {\r\n var _this = this;\r\n if ($type.isNumber(this.max) && $type.isNumber(this.min)) {\r\n this.calculateZoom();\r\n // first regular items\r\n var timestamp = this._gridDate.getTime();\r\n var timeUnit = this._gridInterval.timeUnit;\r\n var intervalCount = this._gridInterval.count;\r\n var prevGridDate = $time.copy(this._gridDate);\r\n var dataItemsIterator_1 = this._dataItemsIterator;\r\n this.resetIterators();\r\n var _loop_2 = function () {\r\n var date = this_2.getGridDate($time.copy(prevGridDate), intervalCount);\r\n timestamp = date.getTime();\r\n var endDate = $time.copy(date); // you might think it's easier to add intervalduration to timestamp, however it won't work for months or years which are not of the same length\r\n endDate = $time.add(endDate, timeUnit, intervalCount, this_2._df.utc);\r\n var format = this_2.dateFormats.getKey(timeUnit);\r\n if (this_2.markUnitChange && prevGridDate) {\r\n if ($time.checkChange(date, prevGridDate, this_2._nextGridUnit, this_2._df.utc)) {\r\n if (timeUnit !== \"year\") {\r\n format = this_2.periodChangeDateFormats.getKey(timeUnit);\r\n }\r\n }\r\n }\r\n var text = this_2._df.format(date, format);\r\n var dataItem = dataItemsIterator_1.find(function (x) { return x.text === text; });\r\n if (dataItem.__disabled) {\r\n dataItem.__disabled = false;\r\n }\r\n this_2.appendDataItem(dataItem);\r\n dataItem.axisBreak = undefined;\r\n dataItem.date = date;\r\n dataItem.endDate = endDate;\r\n dataItem.text = text;\r\n this_2.validateDataElement(dataItem);\r\n prevGridDate = date;\r\n };\r\n var this_2 = this;\r\n while (timestamp <= this._maxZoomed) {\r\n _loop_2();\r\n }\r\n // breaks later\r\n var renderer_1 = this.renderer;\r\n if (this._axisBreaks) {\r\n $iter.each(this._axisBreaks.iterator(), function (axisBreak) {\r\n if (axisBreak.breakSize > 0) {\r\n var timeUnit_1 = axisBreak.gridInterval.timeUnit;\r\n var intervalCount_1 = axisBreak.gridInterval.count;\r\n // only add grid if gap is bigger then minGridDistance\r\n if ($math.getDistance(axisBreak.startPoint, axisBreak.endPoint) > renderer_1.minGridDistance * 4) {\r\n var timestamp_1 = axisBreak.gridDate.getTime();\r\n var prevGridDate_1;\r\n var count = 0;\r\n var _loop_3 = function () {\r\n var date = $time.copy(axisBreak.gridDate);\r\n timestamp_1 = $time.add(date, timeUnit_1, intervalCount_1 * count, _this._df.utc).getTime();\r\n count++;\r\n if (timestamp_1 > axisBreak.adjustedStartValue && timestamp_1 < axisBreak.adjustedEndValue) {\r\n var endDate = $time.copy(date); // you might think it's easier to add intervalduration to timestamp, however it won't work for months or years which are not of the same length\r\n endDate = $time.add(endDate, timeUnit_1, intervalCount_1, _this._df.utc);\r\n var format = _this.dateFormats.getKey(timeUnit_1);\r\n if (_this.markUnitChange && prevGridDate_1) {\r\n if ($time.checkChange(date, prevGridDate_1, _this._nextGridUnit, _this._df.utc)) {\r\n if (timeUnit_1 !== \"year\") {\r\n format = _this.periodChangeDateFormats.getKey(timeUnit_1);\r\n }\r\n }\r\n }\r\n var text_1 = _this._df.format(date, format);\r\n var dataItem = dataItemsIterator_1.find(function (x) { return x.text === text_1; });\r\n if (dataItem.__disabled) {\r\n dataItem.__disabled = false;\r\n }\r\n //this.processDataItem(dataItem);\r\n _this.appendDataItem(dataItem);\r\n dataItem.axisBreak = axisBreak;\r\n axisBreak.dataItems.moveValue(dataItem);\r\n dataItem.date = date;\r\n dataItem.endDate = endDate;\r\n dataItem.text = text_1;\r\n prevGridDate_1 = date;\r\n _this.validateDataElement(dataItem);\r\n }\r\n };\r\n while (timestamp_1 <= axisBreak.adjustedMax) {\r\n _loop_3();\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n };\r\n /**\r\n * Validates Axis data item.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n DateAxis.prototype.validateDataElement = function (dataItem) {\r\n dataItem.itemIndex = this._axisItemCount;\r\n this._axisItemCount++;\r\n if ($type.isNumber(this.max) && $type.isNumber(this.min)) {\r\n var renderer = this.renderer;\r\n var timestamp = dataItem.value;\r\n var endTimestamp = dataItem.endValue;\r\n if (!$type.isNumber(endTimestamp)) {\r\n endTimestamp = timestamp;\r\n }\r\n var position = this.valueToPosition(timestamp);\r\n var endPosition = this.valueToPosition(endTimestamp);\r\n var fillEndPosition = endPosition;\r\n if (!dataItem.isRange && this._gridInterval.count > this.baseInterval.count) {\r\n endPosition = position + (endPosition - position) / (this._gridInterval.count / this.baseInterval.count);\r\n }\r\n dataItem.position = position;\r\n var tick = dataItem.tick;\r\n if (tick && !tick.disabled) {\r\n renderer.updateTickElement(tick, position, endPosition);\r\n }\r\n var grid = dataItem.grid;\r\n if (grid && !grid.disabled) {\r\n renderer.updateGridElement(grid, position, endPosition);\r\n }\r\n var fill = dataItem.axisFill;\r\n if (fill && !fill.disabled) {\r\n renderer.updateFillElement(fill, position, fillEndPosition);\r\n if (!dataItem.isRange) {\r\n this.fillRule(dataItem);\r\n }\r\n }\r\n var mask = dataItem.mask;\r\n if (mask) {\r\n renderer.updateFillElement(mask, position, endPosition);\r\n }\r\n if (dataItem.bullet) {\r\n renderer.updateBullet(dataItem.bullet, position, endPosition);\r\n }\r\n var label = dataItem.label;\r\n if (label && !label.disabled) {\r\n var location_1 = label.location;\r\n if (location_1 == 0) {\r\n if (this._gridInterval.count == 1 && this._gridInterval.timeUnit != \"week\" && !dataItem.isRange) {\r\n location_1 = 0.5;\r\n }\r\n else {\r\n location_1 = 0;\r\n }\r\n }\r\n renderer.updateLabelElement(label, position, endPosition, location_1);\r\n }\r\n }\r\n };\r\n Object.defineProperty(DateAxis.prototype, \"baseDuration\", {\r\n /**\r\n * A duration in milliseconds of the `baseInterval`.\r\n *\r\n * @return Duration (ms)\r\n */\r\n get: function () {\r\n return $time.getDuration(this.baseInterval.timeUnit, this.baseInterval.count);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Adjusts min/max values.\r\n *\r\n * @ignore Exclude from docs.\r\n * @todo Description (review)\r\n * @param min Min timestamp\r\n * @param max Max timestamp\r\n * @return Adjusted min/max step\r\n */\r\n DateAxis.prototype.adjustMinMax = function (min, max) {\r\n return { min: min, max: max, step: this.baseDuration };\r\n };\r\n /**\r\n * Adjusts the minimum timestamp as per cell start location.\r\n *\r\n * @param value Value\r\n * @return Adjusted value\r\n */\r\n DateAxis.prototype.fixMin = function (value) {\r\n // like this because months are not equal\r\n var interval = this.baseInterval;\r\n var startTime = $time.round(new Date(value), interval.timeUnit, interval.count, this._firstWeekDay, this._df.utc, undefined, this._df.timezoneMinutes, this._df.timezone).getTime();\r\n var endTime = $time.add(new Date(startTime), interval.timeUnit, interval.count, this._df.utc).getTime();\r\n return startTime + (endTime - startTime) * this.startLocation;\r\n };\r\n /**\r\n * Adjusts the maximum timestamp as per cell start location.\r\n *\r\n * @param value Value\r\n * @return Adjusted value\r\n */\r\n DateAxis.prototype.fixMax = function (value) {\r\n // like this because months are not equal\r\n var interval = this.baseInterval;\r\n var startTime = $time.round(new Date(value), interval.timeUnit, interval.count, this._firstWeekDay, this._df.utc, undefined, this._df.timezoneMinutes, this._df.timezone).getTime();\r\n var endTime = $time.add(new Date(startTime), interval.timeUnit, interval.count, this._df.utc).getTime();\r\n return startTime + (endTime - startTime) * this.endLocation;\r\n };\r\n /**\r\n * [chooseInterval description]\r\n *\r\n * @ignore Exclude from docs.\r\n * @todo Description\r\n * @param index [description]\r\n * @param duration [description]\r\n * @param gridCount [description]\r\n * @return [description]\r\n */\r\n DateAxis.prototype.chooseInterval = function (index, duration, gridCount, intervals) {\r\n if (!intervals) {\r\n intervals = this.gridIntervals;\r\n }\r\n var gridInterval = intervals.getIndex(index);\r\n var intervalDuration = $time.getDuration(gridInterval.timeUnit, gridInterval.count);\r\n var lastIndex = intervals.length - 1;\r\n if (index >= lastIndex) {\r\n return __assign({}, intervals.getIndex(lastIndex));\r\n }\r\n var count = Math.ceil(duration / intervalDuration);\r\n if (duration < intervalDuration && index > 0) {\r\n return __assign({}, intervals.getIndex(index - 1));\r\n }\r\n if (count <= gridCount) {\r\n return __assign({}, intervals.getIndex(index));\r\n }\r\n else {\r\n if (index + 1 < intervals.length) {\r\n return this.chooseInterval(index + 1, duration, gridCount, intervals);\r\n }\r\n else {\r\n return __assign({}, intervals.getIndex(index));\r\n }\r\n }\r\n };\r\n /**\r\n * Formats the value according to axis' own [[DateFormatter]].\r\n *\r\n * @param value Source value\r\n * @return Formatted value\r\n */\r\n DateAxis.prototype.formatLabel = function (value) {\r\n return this._df.format(value);\r\n };\r\n /**\r\n * Converts a Date to an asbolute pixel position within Axis.\r\n *\r\n * @param date Date\r\n * @return Position (px)\r\n */\r\n DateAxis.prototype.dateToPosition = function (date) {\r\n return this.valueToPosition(date.getTime());\r\n };\r\n /**\r\n * Converts a numeric timestamp or a `Date` to a relative position on axis.\r\n *\r\n * @param date Date or a timestamp\r\n * @return Relative position\r\n */\r\n DateAxis.prototype.anyToPosition = function (date) {\r\n if (date instanceof Date) {\r\n return this.dateToPosition(date);\r\n }\r\n else {\r\n return this.valueToPosition(date);\r\n }\r\n };\r\n /**\r\n * Converts date to orientation point (x, y, angle) on axis\r\n *\r\n * @param date Date\r\n * @return IOrientationPoint\r\n */\r\n DateAxis.prototype.dateToPoint = function (date) {\r\n var position = this.dateToPosition(date);\r\n var point = this.renderer.positionToPoint(position);\r\n var angle = this.renderer.positionToAngle(position);\r\n return { x: point.x, y: point.y, angle: angle };\r\n };\r\n /**\r\n * Converts a numeric value to orientation (x, y, angle) point on axis\r\n *\r\n * @param value Value\r\n * @return Orientation point\r\n */\r\n DateAxis.prototype.anyToPoint = function (date) {\r\n if (date instanceof Date) {\r\n return this.dateToPoint(date);\r\n }\r\n else {\r\n return this.valueToPoint(date);\r\n }\r\n };\r\n /**\r\n * Converts pixel position within Axis to a corresponding Date.\r\n *\r\n * @param position Position (px)\r\n * @return Date\r\n */\r\n DateAxis.prototype.positionToDate = function (position) {\r\n return new Date(this.positionToValue(position));\r\n };\r\n /**\r\n * Returns the relative position on axis for series' data item's value.\r\n *\r\n * @since 4.5.14\r\n * @param dataItem Data item\r\n * @param key Data field to get value from\r\n * @param location Location (0-1)\r\n * @return Relative position\r\n */\r\n DateAxis.prototype.getPositionX = function (dataItem, key, location, stackKey, range) {\r\n var value = this.getTimeByLocation(dataItem, key, location);\r\n //let stack: number = dataItem.getValue(\"valueX\", \"stack\");\r\n if (!$type.isNumber(value)) {\r\n value = this.baseValue;\r\n }\r\n var position = this.valueToPosition(value);\r\n if (range) {\r\n position = $math.fitToRange(position, range.start, range.end);\r\n }\r\n return position;\r\n };\r\n /**\r\n * Returns relative position on axis for series' data item's value.\r\n *\r\n * @since 4.5.14\r\n * @param dataItem Data item\r\n * @param key Data field to get value from\r\n * @param location Location (0-1)\r\n * @return Relative position\r\n */\r\n DateAxis.prototype.getPositionY = function (dataItem, key, location, stackKey, range) {\r\n var value = this.getTimeByLocation(dataItem, key, location);\r\n var stack = dataItem.getValue(\"valueX\", \"stack\");\r\n if (!$type.isNumber(value)) {\r\n value = this.baseValue;\r\n }\r\n var position = this.valueToPosition(value + stack);\r\n if (range) {\r\n position = $math.fitToRange(position, range.start, range.end);\r\n }\r\n return position;\r\n };\r\n /**\r\n * Returns an angle for series data item.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem Data item\r\n * @param key Data field to get value from\r\n * @param location Location (0-1)\r\n * @param stackKey Stack ID\r\n * @param range Range to fit in\r\n * @return Angle\r\n */\r\n DateAxis.prototype.getAngle = function (dataItem, key, location, stackKey, range) {\r\n var value = this.getTimeByLocation(dataItem, key, location);\r\n var stack = dataItem.getValue(stackKey, \"stack\");\r\n if (!$type.isNumber(value)) {\r\n value = this.baseValue;\r\n }\r\n var position = this.valueToPosition(value + stack);\r\n if (range) {\r\n position = $math.fitToRange(position, range.start, range.end);\r\n }\r\n return this.positionToAngle(position);\r\n };\r\n /**\r\n * [getTimeByLocation description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param dataItem [description]\r\n * @param key [description]\r\n * @param location [description]\r\n * @return [description]\r\n */\r\n DateAxis.prototype.getTimeByLocation = function (dataItem, key, location) {\r\n if (!$type.hasValue(key)) {\r\n return;\r\n }\r\n if (!$type.isNumber(location)) {\r\n location = dataItem.workingLocations[key];\r\n if (!$type.isNumber(location)) {\r\n location = 0;\r\n }\r\n }\r\n var startTime = dataItem.values[key][\"open\"];\r\n var endTime = dataItem.values[key][\"close\"];\r\n var workingValue = dataItem.values[key].workingValue;\r\n var value = dataItem.values[key].value;\r\n var difference = value - workingValue;\r\n startTime -= difference;\r\n endTime -= difference;\r\n if ($type.isNumber(startTime) && $type.isNumber(endTime)) {\r\n return startTime + (endTime - startTime) * location;\r\n }\r\n };\r\n /**\r\n * Processes a related series' data item.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param dataItem Data item\r\n */\r\n DateAxis.prototype.processSeriesDataItem = function (dataItem, axisLetter) {\r\n var series = dataItem.component;\r\n var time;\r\n var date = dataItem[\"date\" + axisLetter];\r\n if ($type.isNumber(this.timezoneOffset)) {\r\n date.setTime(date.getTime() + (date.getTimezoneOffset() - this.timezoneOffset) * 60000);\r\n dataItem.setValue(\"date\" + axisLetter, date.getTime(), 0);\r\n }\r\n else if ($type.hasValue(this.timezone)) {\r\n date = $time.setTimezone(date, this.timezone);\r\n dataItem.setValue(\"date\" + axisLetter, date.getTime(), 0);\r\n dataItem[\"date\" + axisLetter] = date;\r\n }\r\n if (date) {\r\n time = date.getTime();\r\n }\r\n else {\r\n return;\r\n }\r\n var openDate = dataItem[\"openDate\" + axisLetter];\r\n var prevSeriesTime = this._prevSeriesTime[series.uid];\r\n var openTime;\r\n if (openDate) {\r\n openTime = openDate.getTime();\r\n }\r\n if ($type.isNumber(openTime)) {\r\n var difference = Math.abs(time - openTime);\r\n if (this._minDifference[series.uid] > difference) {\r\n this._minDifference[series.uid] = difference;\r\n }\r\n }\r\n var differece = time - prevSeriesTime;\r\n if (differece > 0) {\r\n if (this._minDifference[series.uid] > differece) {\r\n this._minDifference[series.uid] = differece;\r\n }\r\n }\r\n this._prevSeriesTime[series.uid] = time;\r\n if (series._baseInterval[this.uid]) {\r\n this.postProcessSeriesDataItem(dataItem);\r\n }\r\n };\r\n /**\r\n * [updateAxisBySeries description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n DateAxis.prototype.updateAxisBySeries = function () {\r\n _super.prototype.updateAxisBySeries.call(this);\r\n var baseInterval = this.chooseInterval(0, this.minDifference, 1);\r\n // handle short months\r\n if (this.minDifference >= $time.getDuration(\"day\", 27) && baseInterval.timeUnit == \"week\") {\r\n baseInterval.timeUnit = \"month\";\r\n baseInterval.count = 1;\r\n }\r\n if (baseInterval.timeUnit == \"month\") {\r\n if (this.minDifference >= $time.getDuration(\"day\", 29 * 2) && baseInterval.count == 1) {\r\n baseInterval.count = 2;\r\n }\r\n if (this.minDifference >= $time.getDuration(\"day\", 29 * 3) && baseInterval.count == 2) {\r\n baseInterval.count = 3;\r\n }\r\n if (this.minDifference >= $time.getDuration(\"day\", 29 * 6) && baseInterval.count == 5) {\r\n baseInterval.count = 6;\r\n }\r\n }\r\n // handle daylight saving\r\n if (this.minDifference >= $time.getDuration(\"hour\", 23) && baseInterval.timeUnit == \"hour\") {\r\n baseInterval.timeUnit = \"day\";\r\n baseInterval.count = 1;\r\n }\r\n if (this.minDifference >= $time.getDuration(\"week\", 1) - $time.getDuration(\"hour\", 1) && baseInterval.timeUnit == \"day\") {\r\n baseInterval.timeUnit = \"week\";\r\n baseInterval.count = 1;\r\n }\r\n if (this.minDifference >= $time.getDuration(\"year\", 1) - $time.getDuration(\"day\", 1.01) && baseInterval.timeUnit == \"month\") {\r\n baseInterval.timeUnit = \"year\";\r\n baseInterval.count = 1;\r\n }\r\n this._baseIntervalReal = baseInterval;\r\n this._mainBaseInterval = baseInterval;\r\n // no need to invalidate\r\n };\r\n Object.defineProperty(DateAxis.prototype, \"baseInterval\", {\r\n /**\r\n * @return Base interval\r\n */\r\n get: function () {\r\n if (this._groupInterval) {\r\n return this._groupInterval;\r\n }\r\n else if (this._baseInterval) {\r\n return this._baseInterval;\r\n }\r\n else {\r\n return this._baseIntervalReal;\r\n }\r\n },\r\n /**\r\n * A base interval (granularity) of data.\r\n *\r\n * Used to indicate what are the base units of your data.\r\n *\r\n * For example, if you have a data set that has a data point every 5 minutes,\r\n * you may want to set this to `{ timeUnit: \"minute\", count: 5 }`.\r\n *\r\n * If not set, the Axis will try to determine the setting by its own, looking\r\n * at actual data.\r\n *\r\n * For best results, try to follow these values for `count`:\r\n *\r\n * When unit is \"month\", use 12 / count = round number\r\n * When unit is \"hour\", use 24 / count = round number\r\n * When unit is \"second\" and \"minute\", use 60 / count = round number\r\n *\r\n * @param timeInterval base interval\r\n */\r\n set: function (timeInterval) {\r\n if (JSON.stringify(this._baseInterval) != JSON.stringify(timeInterval)) {\r\n this._baseInterval = timeInterval;\r\n this._mainBaseInterval = timeInterval;\r\n if (!$type.isNumber(timeInterval.count)) {\r\n timeInterval.count = 1;\r\n }\r\n this.invalidate();\r\n this.postProcessSeriesDataItems();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateAxis.prototype, \"mainBaseInterval\", {\r\n /**\r\n * Indicates granularity of the data of source (unaggregated) data.\r\n *\r\n * @since 4.7.0\r\n * @return Granularity of the main data set\r\n */\r\n get: function () {\r\n if (this._baseInterval) {\r\n return this._baseInterval;\r\n }\r\n else if (this._mainBaseInterval) {\r\n return this._mainBaseInterval;\r\n }\r\n else {\r\n return this._baseIntervalReal;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateAxis.prototype, \"skipEmptyPeriods\", {\r\n /**\r\n * @return Remove empty stretches of time?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"skipEmptyPeriods\");\r\n },\r\n /**\r\n * If enabled, axis will automatically collapse empty (without data points)\r\n * periods of time, i.e. weekends.\r\n *\r\n * An \"empty\" period is considered a stretch of time in the length of current\r\n * `baseInterval` without a single data point in it.\r\n *\r\n * For each such empty period, axis will automatically create an\r\n * [[AxisBreak]]. By default they will be invisible. You can still configure\r\n * them by accessing `axis.breaks.template`.\r\n *\r\n * [More info about breaks](https://www.amcharts.com/docs/v4/concepts/axes/#Breaks).\r\n *\r\n * Important notes:\r\n * * If you set this property to `true`, you can not add your custom axis breaks to this axis anymore.\r\n * * Using this feature affects performance. Use only if you need it.\r\n * * Setting this to `true` will reset appearance of breaks. If you want to modify appearance, do it *after* you set `skipEmptyPeriods`.\r\n * * Some axis label overlapping might happen.\r\n * * This setting is not compatible with `groupData = true`.\r\n *\r\n * @default false\r\n * @param value Remove empty stretches of time?\r\n */\r\n set: function (value) {\r\n if (value) {\r\n var breakTemplate = this.axisBreaks.template;\r\n breakTemplate.startLine.disabled = true;\r\n breakTemplate.endLine.disabled = true;\r\n breakTemplate.fillShape.disabled = true;\r\n breakTemplate.breakSize = 0;\r\n }\r\n else {\r\n if (this._gapBreaks) {\r\n this.axisBreaks.clear();\r\n this._gapBreaks = false;\r\n }\r\n }\r\n if (this.setPropertyValue(\"skipEmptyPeriods\", value)) {\r\n this.invalidate();\r\n this.postProcessSeriesDataItems();\r\n this.invalidateSeries();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateAxis.prototype, \"tooltipDateFormat\", {\r\n /**\r\n * @return Date format\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tooltipDateFormat\");\r\n },\r\n /**\r\n * A special date format to apply axis tooltips.\r\n *\r\n * Will use same format as for labels, if not set.\r\n *\r\n * @param value Date format\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"tooltipDateFormat\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateAxis.prototype, \"markUnitChange\", {\r\n /**\r\n * @return Use different format for period beginning?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"markUnitChange\");\r\n },\r\n /**\r\n * Use `periodChangeDateFormats` to apply different formats to the first\r\n * label in bigger time unit.\r\n *\r\n * @default true\r\n * @param value Use different format for period beginning?\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"markUnitChange\", value)) {\r\n this.invalidateData();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns text to show in a tooltip, based on specific relative position\r\n * within axis.\r\n *\r\n * The label will be formatted as per [[DateFormatter]] set for the whole\r\n * chart, or explicitly for this Axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param position Position\r\n * @return Label (formatted date)\r\n */\r\n DateAxis.prototype.getTooltipText = function (position) {\r\n var text;\r\n var date = this.positionToDate(position);\r\n date = $time.round(date, this.baseInterval.timeUnit, this.baseInterval.count, this._firstWeekDay, this._df.utc, new Date(this.min), this._df.timezoneMinutes, this._df.timezone);\r\n this.tooltipDate = date;\r\n if ($type.hasValue(this.tooltipDateFormat)) {\r\n text = this._df.format(date, this.tooltipDateFormat, [\"day\", \"month\", \"week\", \"year\"].indexOf(this.baseInterval.timeUnit) == -1);\r\n }\r\n else {\r\n var dateFormat = this.dateFormats.getKey(this.baseInterval.timeUnit);\r\n if (dateFormat) {\r\n text = this._df.format(date, dateFormat);\r\n }\r\n else {\r\n text = this.getPositionLabel(position);\r\n }\r\n }\r\n if (!this._adapterO) {\r\n return text;\r\n }\r\n else {\r\n return this._adapterO.apply(\"getTooltipText\", text);\r\n }\r\n };\r\n /**\r\n * Takes an absolute position within axis and adjust it to a specific position within base interval. (cell)\r\n *\r\n * @ignore Exclude from docs\r\n * @param position Source position\r\n * @param location Location in the cell\r\n * @return Adjusted position\r\n */\r\n DateAxis.prototype.roundPosition = function (position, location, axisLocation) {\r\n var baseInterval = this.baseInterval;\r\n var timeUnit = baseInterval.timeUnit;\r\n var count = baseInterval.count;\r\n var date = this.positionToDate(position);\r\n $time.round(date, timeUnit, count, this._firstWeekDay, this._df.utc, undefined, this._df.timezoneMinutes, this._df.timezone);\r\n if (location > 0) {\r\n $time.add(date, timeUnit, location * count, this._df.utc);\r\n }\r\n if (axisLocation > 0 && axisLocation < 1) {\r\n date.setTime(date.getTime() + this.baseDuration * axisLocation);\r\n }\r\n if (this.isInBreak(date.getTime())) {\r\n while (date.getTime() < this.max) {\r\n $time.add(date, timeUnit, count, this._df.utc);\r\n if (!this.isInBreak(date.getTime())) {\r\n break;\r\n }\r\n }\r\n }\r\n return this.dateToPosition(date);\r\n };\r\n /**\r\n * Returns an relative position of the start of the cell (period), that specific position value falls into.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param position Relative position\r\n * @return Cell start relative position\r\n */\r\n DateAxis.prototype.getCellStartPosition = function (position) {\r\n return this.roundPosition(position, 0);\r\n };\r\n /**\r\n * Returns an relative position of the end of the cell (period), that specific position value falls into.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param position Relative position\r\n * @return Cell end relative position\r\n */\r\n DateAxis.prototype.getCellEndPosition = function (position) {\r\n return this.roundPosition(position, 1);\r\n //return this.dateToPosition($time.add(this.positionToDate(this.roundPosition(position, 1)), this.baseInterval.timeUnit, this.baseInterval.count));\r\n };\r\n /**\r\n * Returns a Series data item that corresponds to the specific pixel position\r\n * of the Axis.\r\n *\r\n * If `findNearest` (third parameter) is set to `true`, the method will try\r\n * to locate nearest available data item if none is found directly under\r\n * `position`.\r\n *\r\n * @param series Series\r\n * @param position Position (px)\r\n * @param findNearest Should axis try to find nearest tooltip if there is no data item at exact position\r\n * @return Data item\r\n */\r\n DateAxis.prototype.getSeriesDataItem = function (series, position, findNearest) {\r\n var value = this.positionToValue(position);\r\n var location = 0.5;\r\n if (this.axisLetter == \"Y\") {\r\n location = series.dataItems.template.locations.dateY;\r\n }\r\n else {\r\n location = series.dataItems.template.locations.dateX;\r\n }\r\n var deltaValue = value - location * this.baseDuration;\r\n var date = $time.round(new Date(value), this.baseInterval.timeUnit, this.baseInterval.count, this._firstWeekDay, this._df.utc, undefined, this._df.timezoneMinutes, this._df.timezone);\r\n var nextDate = $time.round(new Date(value + this.baseDuration), this.baseInterval.timeUnit, this.baseInterval.count, this._firstWeekDay, this._df.utc, undefined, this._df.timezoneMinutes, this._df.timezone);\r\n if (nextDate.getTime() > date.getTime()) {\r\n if (Math.abs(nextDate.getTime() - deltaValue) < Math.abs(deltaValue - date.getTime())) {\r\n date = nextDate;\r\n }\r\n }\r\n var dataItemsByAxis = series.dataItemsByAxis.getKey(this.uid);\r\n var dataItem = dataItemsByAxis.getKey(date.getTime() + series.currentDataSetId);\r\n // todo: alternatively we can find closiest here\r\n if (!dataItem && findNearest) {\r\n var key_1;\r\n if (this.axisLetter == \"Y\") {\r\n key_1 = \"dateY\";\r\n }\r\n else {\r\n key_1 = \"dateX\";\r\n }\r\n dataItem = series.dataItems.getIndex(series.dataItems.findClosestIndex(date.getTime(), function (x) {\r\n if (x[key_1]) {\r\n return x[key_1].getTime();\r\n }\r\n else {\r\n return -Infinity;\r\n }\r\n }, \"any\"));\r\n }\r\n return dataItem;\r\n };\r\n /**\r\n * Returns a formatted date based on position in axis scale.\r\n *\r\n * Please note that `position` represents position within axis which may be\r\n * zoomed and not correspond to Cursor's `position`.\r\n *\r\n * To convert Cursor's `position` to Axis' `position` use `toAxisPosition()` method.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/tutorials/tracking-cursors-position-via-api/#Tracking_Cursor_s_position} For more information about cursor tracking.\r\n * @param position Relative position on axis (0-1)\r\n * @return Position label\r\n */\r\n DateAxis.prototype.getPositionLabel = function (position) {\r\n // @todo Better format recognition\r\n var date = this.positionToDate(position);\r\n return this._df.format(date, this.getCurrentLabelFormat());\r\n };\r\n /**\r\n * Returns label date format based on currently used time units\r\n *\r\n * @return Format\r\n */\r\n DateAxis.prototype.getCurrentLabelFormat = function () {\r\n return this.dateFormats.getKey(this._gridInterval ? this._gridInterval.timeUnit : \"day\");\r\n };\r\n /**\r\n * Initializes an Axis renderer.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n DateAxis.prototype.initRenderer = function () {\r\n _super.prototype.initRenderer.call(this);\r\n var renderer = this.renderer;\r\n if (renderer) {\r\n // Set defaults\r\n renderer.ticks.template.location = 0;\r\n renderer.grid.template.location = 0;\r\n renderer.labels.template.location = 0;\r\n renderer.baseGrid.disabled = true;\r\n }\r\n };\r\n Object.defineProperty(DateAxis.prototype, \"basePoint\", {\r\n /**\r\n * Coordinates of the actual axis start.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Base point\r\n */\r\n get: function () {\r\n return { x: 0, y: 0 };\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n DateAxis.prototype.animateMinMax = function (min, max) {\r\n var _this = this;\r\n var animation = this.animate([{ property: \"_minAdjusted\", from: this._minAdjusted, to: min }, { property: \"_maxAdjusted\", from: this._maxAdjusted, to: max }], this.rangeChangeDuration, this.rangeChangeEasing);\r\n animation.events.on(\"animationprogress\", function () {\r\n _this.dispatch(\"extremeschanged\");\r\n });\r\n return animation;\r\n };\r\n /**\r\n * Invalidates axis data items when series extremes change\r\n */\r\n DateAxis.prototype.handleExtremesChange = function () {\r\n _super.prototype.handleExtremesChange.call(this);\r\n if (this.groupData) {\r\n var id = this.baseInterval.timeUnit + this.baseInterval.count;\r\n this.groupMin[id] = this._finalMin;\r\n this.groupMax[id] = this._finalMax;\r\n }\r\n };\r\n /**\r\n * Zooms axis to specific Dates.\r\n *\r\n * @param startDate Start date\r\n * @param endValue End date\r\n * @param skipRangeEvent Do not invoke events\r\n * @param instantly Do not play zoom animations\r\n */\r\n DateAxis.prototype.zoomToDates = function (startDate, endDate, skipRangeEvent, instantly, adjust) {\r\n startDate = this._df.parse(startDate);\r\n endDate = this._df.parse(endDate);\r\n this.zoomToValues(startDate.getTime(), endDate.getTime(), skipRangeEvent, instantly, adjust);\r\n };\r\n /**\r\n * Zooms axis to specific values.\r\n *\r\n * @param startValue Start value\r\n * @param endValue End value\r\n * @param skipRangeEvent Do not invoke events\r\n * @param instantly Do not play zoom animations\r\n */\r\n DateAxis.prototype.zoomToValues = function (startValue, endValue, skipRangeEvent, instantly, adjust) {\r\n var _this = this;\r\n if (!this.groupData) {\r\n //let start: number = (startValue - this.min) / (this.max - this.min);\r\n //let end: number = (endValue - this.min) / (this.max - this.min);\r\n var start = this.valueToPosition(startValue);\r\n var end = this.valueToPosition(endValue);\r\n this.zoom({ start: start, end: end }, skipRangeEvent, instantly);\r\n }\r\n else {\r\n var difference = this.adjustDifference(startValue, endValue);\r\n var isEnd = false;\r\n if (endValue == this.max) {\r\n isEnd = true;\r\n }\r\n var isStart = false;\r\n if (startValue == this.min) {\r\n isStart = true;\r\n }\r\n if ($type.hasValue(difference)) {\r\n var mainBaseInterval = this.mainBaseInterval;\r\n var groupInterval_1 = this.chooseInterval(0, difference, this.groupCount, this.groupIntervals);\r\n if ((groupInterval_1.timeUnit == mainBaseInterval.timeUnit && groupInterval_1.count < mainBaseInterval.count) || $time.getDuration(groupInterval_1.timeUnit, 1) < $time.getDuration(mainBaseInterval.timeUnit, 1)) {\r\n groupInterval_1 = __assign({}, mainBaseInterval);\r\n }\r\n var id = groupInterval_1.timeUnit + groupInterval_1.count;\r\n var min_1 = this.groupMin[id];\r\n var max_1 = this.groupMax[id];\r\n if (!$type.isNumber(min_1) || !$type.isNumber(max_1)) {\r\n min_1 = Number.POSITIVE_INFINITY;\r\n max_1 = Number.NEGATIVE_INFINITY;\r\n this.series.each(function (series) {\r\n var seriesMin = series.min(_this);\r\n var seriesMax = series.max(_this);\r\n if (series._dataSets) {\r\n var ds = series._dataSets.getKey(groupInterval_1.timeUnit + groupInterval_1.count);\r\n if (ds) {\r\n var mindi = ds.getIndex(0);\r\n var maxdi = ds.getIndex(ds.length - 1);\r\n if (mindi) {\r\n if (series.xAxis == _this) {\r\n seriesMin = mindi.dateX.getTime();\r\n }\r\n else if (series.yAxis == _this) {\r\n seriesMin = mindi.dateY.getTime();\r\n }\r\n }\r\n if (maxdi) {\r\n if (series.xAxis == _this) {\r\n seriesMax = maxdi.dateX.getTime();\r\n }\r\n else if (series.yAxis == _this) {\r\n seriesMax = maxdi.dateY.getTime();\r\n }\r\n }\r\n }\r\n }\r\n seriesMax = $time.round($time.add(new Date(seriesMax), groupInterval_1.timeUnit, 1, _this._df.utc), groupInterval_1.timeUnit, 1, _this._df.firstDayOfWeek, _this._df.utc, undefined, _this._df.timezoneMinutes, _this._df.timezone).getTime();\r\n if (seriesMin < min_1) {\r\n min_1 = seriesMin;\r\n }\r\n if (seriesMax > max_1) {\r\n max_1 = seriesMax;\r\n }\r\n });\r\n this.groupMin[id] = min_1;\r\n this.groupMax[id] = max_1;\r\n }\r\n startValue = $math.fitToRange(startValue, min_1, max_1);\r\n endValue = $math.fitToRange(endValue, min_1, max_1);\r\n if (adjust) {\r\n if (isEnd) {\r\n startValue = endValue - difference;\r\n startValue = $math.fitToRange(startValue, min_1, max_1);\r\n }\r\n if (isStart) {\r\n endValue = startValue + difference;\r\n endValue = $math.fitToRange(endValue, min_1, max_1);\r\n }\r\n }\r\n var start = (startValue - min_1) / (max_1 - min_1);\r\n var end = (endValue - min_1) / (max_1 - min_1);\r\n this.zoom({ start: start, end: end }, skipRangeEvent, instantly);\r\n }\r\n }\r\n };\r\n /**\r\n * Adds `baseInterval` to \"as is\" fields.\r\n *\r\n * @param field Field name\r\n * @return Assign as is?\r\n */\r\n DateAxis.prototype.asIs = function (field) {\r\n return field == \"baseInterval\" || _super.prototype.asIs.call(this, field);\r\n };\r\n /**\r\n * Copies all properties and related data from a different instance of Axis.\r\n *\r\n * @param source Source Axis\r\n */\r\n DateAxis.prototype.copyFrom = function (source) {\r\n var _this = this;\r\n _super.prototype.copyFrom.call(this, source);\r\n this.dateFormats = source.dateFormats;\r\n this.periodChangeDateFormats = source.periodChangeDateFormats;\r\n this.groupIntervals.clear();\r\n source.groupIntervals.each(function (interval) {\r\n _this.groupIntervals.push(__assign({}, interval));\r\n });\r\n this.gridIntervals.clear();\r\n source.gridIntervals.each(function (interval) {\r\n _this.gridIntervals.push(__assign({}, interval));\r\n });\r\n if (source._baseInterval) {\r\n this.baseInterval = source._baseInterval;\r\n }\r\n };\r\n /**\r\n * Shows Axis tooltip at specific relative position within Axis. (0-1)\r\n *\r\n * @param position Position (0-1)\r\n * @param local or global position\r\n */\r\n DateAxis.prototype.showTooltipAtPosition = function (position, local) {\r\n var _this = this;\r\n if (!local) {\r\n position = this.toAxisPosition(position);\r\n }\r\n if (this.snapTooltip) {\r\n // rounding is not good, pen/aac4e7f66f019d36b2447f050c600c13 (no last tootltip shown)\r\n var actualDate = this.positionToDate(position); //$time.round(this.positionToDate(position), this.baseInterval.timeUnit, 1, this.getFirstWeekDay(), this.dateFormatter.utc, undefined, this._df.timezoneMinutes, this._df.timezone);\r\n var actualTime_1 = actualDate.getTime();\r\n var closestDate_1;\r\n this.series.each(function (series) {\r\n if (series.baseAxis == _this) {\r\n var dataItem = _this.getSeriesDataItem(series, position, true);\r\n if (dataItem) {\r\n var date = void 0;\r\n if (series.xAxis == _this) {\r\n date = dataItem.dateX;\r\n }\r\n if (series.yAxis == _this) {\r\n date = dataItem.dateY;\r\n }\r\n if (!closestDate_1) {\r\n closestDate_1 = date;\r\n }\r\n else {\r\n if (Math.abs(closestDate_1.getTime() - actualTime_1) > Math.abs(date.getTime() - actualTime_1)) {\r\n closestDate_1 = date;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n if (closestDate_1) {\r\n var closestTime_1 = closestDate_1.getTime();\r\n closestDate_1 = $time.round(new Date(closestTime_1), this.baseInterval.timeUnit, this.baseInterval.count, this._firstWeekDay, this._df.utc, undefined, this._df.timezoneMinutes, this._df.timezone);\r\n closestTime_1 = closestDate_1.getTime();\r\n var tooltipLocation = this.renderer.tooltipLocation;\r\n if (tooltipLocation == 0) {\r\n tooltipLocation = 0.0001;\r\n }\r\n closestDate_1 = new Date(closestDate_1.getTime() + this.baseDuration * tooltipLocation);\r\n position = this.dateToPosition(closestDate_1);\r\n if (this.chart.cursor && this.chart.cursor.snapToSeries) {\r\n //void\r\n }\r\n else {\r\n this.series.each(function (series) {\r\n var dataItem = series.dataItemsByAxis.getKey(_this.uid).getKey(closestTime_1 + series.currentDataSetId);\r\n var point = series.showTooltipAtDataItem(dataItem);\r\n if (point) {\r\n _this.chart._seriesPoints.push({ series: series, point: point });\r\n }\r\n else {\r\n // check, otherwise column tooltip will be hidden\r\n if (series.tooltipText || series.tooltipHTML) {\r\n series.hideTooltip();\r\n }\r\n }\r\n });\r\n }\r\n //this.chart.sortSeriesTooltips(seriesPoints);\r\n }\r\n }\r\n _super.prototype.showTooltipAtPosition.call(this, position, true);\r\n };\r\n Object.defineProperty(DateAxis.prototype, \"snapTooltip\", {\r\n /**\r\n * @return Should snap?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"snapTooltip\");\r\n },\r\n /**\r\n * Should the nearest tooltip be shown if no data item is found on the\r\n * current cursor position.\r\n *\r\n * @default true\r\n * @param value Should snap?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"snapTooltip\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateAxis.prototype, \"groupData\", {\r\n /**\r\n * @return Group data points?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"groupData\");\r\n },\r\n /**\r\n * Indicates if data should be aggregated to composide data items if there\r\n * are more data items in selected range than `groupCount`.\r\n *\r\n * Grouping will occur automatically, based on current selection range, and\r\n * will change dynamically when user zooms in/out the chart.\r\n *\r\n * NOTE: This works only if [[DateAxis]] is base axis of an [[XYSeries]].\r\n *\r\n * The related [[XYSeries]] also needs to be set up to take advantage of, by\r\n * setting its [`groupFields`](https://www.amcharts.com/docs/v4/reference/xyseries/#groupFields_property).\r\n *\r\n * The group intervals to aggregate data to is defined by `groupIntervals`\r\n * property.\r\n *\r\n * ```TypeScript\r\n * let dateAxis = chart.xAxes.push(new am4charts.DateAxis());\r\n * dateAxis.groupData = true;\r\n *\r\n * let valueAxis = chart.xAxes.push(new am4charts.valueAxis());\r\n *\r\n * let series = chart.series.push(new am4charts.LineSeries());\r\n * series.dataFields.dateX = \"date\";\r\n * series.dataFields.valueY = \"value\";\r\n * series.groupFields.valueY = \"average\";\r\n * ```\r\n * ```JavaScript\r\n * var dateAxis = chart.xAxes.push(new am4charts.DateAxis());\r\n * dateAxis.groupData = true;\r\n *\r\n * var valueAxis = chart.xAxes.push(new am4charts.valueAxis());\r\n *\r\n * var series = chart.series.push(new am4charts.LineSeries());\r\n * series.dataFields.dateX = \"date\";\r\n * series.dataFields.valueY = \"value\";\r\n * series.groupFields.valueY = \"average\";\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"xAxes\": [{\r\n * \"type\": \"DateAxis\",\r\n * \"groupData\": true\r\n * }],\r\n * \"yAxes\": [{\r\n * \"type\": \"ValueAxis\"\r\n * }],\r\n * \"series\": [{\r\n * \"type\": \"LineSeries\",\r\n * \"dataFields\": {\r\n * \"dateX\": \"date\",\r\n * \"valueY\": \"value\"\r\n * },\r\n * \"groupFields\": {\r\n * \"valueY\": \"average\"\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @default false\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/date-axis/#Dynamic_data_item_grouping} for more information about dynamic data item grouping.\r\n * @since 4.7.0\r\n * @param value Group data points?\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n if (this.setPropertyValue(\"groupData\", value)) {\r\n this.series.each(function (series) {\r\n series.setDataSet(\"\");\r\n if (value && !series.dataGrouped && series.inited) {\r\n series._baseInterval[_this.uid] = _this.mainBaseInterval;\r\n _this.groupSeriesData(series);\r\n }\r\n });\r\n this._currentDataSetId = \"\";\r\n this._groupInterval = undefined;\r\n this.invalidate();\r\n this.invalidateSeries();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateAxis.prototype, \"groupInterval\", {\r\n /**\r\n * @return Interval\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"groupInterval\");\r\n },\r\n /**\r\n * Disables automatic selection of data grouping intervals and always uses\r\n * `groupInterval` if set. Works only if `groupData = true`.\r\n *\r\n * @since 4.9.24\r\n * @param value Interval\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"groupInterval\", value)) {\r\n this.invalidate();\r\n this.invalidateSeries();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateAxis.prototype, \"groupCount\", {\r\n /**\r\n * @return Number of data items\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"groupCount\");\r\n },\r\n /**\r\n * Indicates threshold of data items in selected range at which to start\r\n * aggregating data items if `groupData = true`.\r\n *\r\n * @default 200\r\n * @since 4.7.0\r\n * @param value Number of data items\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"groupCount\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateAxis.prototype, \"timezoneOffset\", {\r\n /**\r\n * @todo Timezone offset in minutes\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"timezoneOffset\");\r\n },\r\n /**\r\n * If set will recalculate all timestamps in data by applying specific offset\r\n * in minutes.\r\n *\r\n * IMPORTANT: do not set `timezoneOffset` on both `DateAxis` and `dateFormatter`. It\r\n * will skew your results by applying offset twice.\r\n *\r\n * @since 4.8.5\r\n * @param value Time zone offset in minutes\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"timezoneOffset\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateAxis.prototype, \"timezone\", {\r\n /**\r\n * @return Timezone\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"timezone\");\r\n },\r\n /**\r\n * If set will recalculate all timestamps in data to specific named timezone,\r\n * e.g. `\"America/Vancouver\"`, `\"Australia/Sydney\"`, `\"UTC\"`, etc.\r\n *\r\n * IMPORTANT: it is no longer recommended to use this setting. Please\r\n * set`timezone` on `dateFormatter`.\r\n *\r\n * @deprecated\r\n * @since 4.10.1\r\n * @param value Time zone\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"timezone\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DateAxis.prototype, \"gridInterval\", {\r\n /**\r\n * Current grid interval.\r\n *\r\n * @return Grid interval\r\n */\r\n get: function () {\r\n return this._gridInterval;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n DateAxis.prototype.makeGap = function (dataItem, previous) {\r\n var series = dataItem.component;\r\n if (dataItem && previous) {\r\n if (!series.connect && $type.isNumber(series.autoGapCount)) {\r\n if (series.baseAxis == this) {\r\n var date = dataItem.dates[\"date\" + this.axisLetter];\r\n var prevDate = previous.dates[\"date\" + this.axisLetter];\r\n if (date && prevDate) {\r\n var time = date.getTime();\r\n var prevTime = prevDate.getTime();\r\n if (time - prevTime > series.autoGapCount * this.baseDuration) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n Object.defineProperty(DateAxis.prototype, \"baseValue\", {\r\n /**\r\n * @return base value\r\n */\r\n get: function () {\r\n return this.min;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return DateAxis;\r\n}(ValueAxis));\r\nexport { DateAxis };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"DateAxis\"] = DateAxis;\r\nregistry.registeredClasses[\"DateAxisDataItem\"] = DateAxisDataItem;\r\n//# sourceMappingURL=DateAxis.js.map","/**\r\n * Module, defining Axis Renderer for vertical axes.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AxisRenderer } from \"./AxisRenderer\";\r\nimport { AxisBullet } from \"./AxisBullet\";\r\nimport { WavedLine } from \"../../core/elements/WavedLine\";\r\nimport { WavedRectangle } from \"../../core/elements/WavedRectangle\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { percent, Percent } from \"../../core/utils/Percent\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { defaultRules, ResponsiveBreakpoints } from \"../../core/utils/Responsive\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A renderer for horizontal axis.\r\n *\r\n * @see {@link IAxisRendererEvents} for a list of available events\r\n * @see {@link IAxisRendererAdapters} for a list of available Adapters\r\n */\r\nvar AxisRendererX = /** @class */ (function (_super) {\r\n __extends(AxisRendererX, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param axis Related axis\r\n */\r\n function AxisRendererX() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"AxisRendererX\";\r\n _this.minGridDistance = 120;\r\n _this.opposite = false;\r\n _this.rotation = 0;\r\n _this.width = percent(100);\r\n _this.labels.template.horizontalCenter = \"middle\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n AxisRendererX.prototype.setAxis = function (axis) {\r\n _super.prototype.setAxis.call(this, axis);\r\n axis.layout = \"vertical\";\r\n };\r\n /**\r\n * @ignore\r\n */\r\n AxisRendererX.prototype.updateGridContainer = function () {\r\n var axis = this.axis;\r\n if (axis) {\r\n var gridContainer = this.gridContainer;\r\n gridContainer.x = axis.pixelX;\r\n gridContainer.width = axis.axisLength;\r\n }\r\n };\r\n /**\r\n * Called when rendered is attached to an Axis, as well as a property of\r\n * Axis that might affect the appearance is updated.\r\n *\r\n * E.g. `axis.opposite`, `axis.inside`, etc.\r\n *\r\n * This method is called **before** draw, so that any related setting\r\n * changed in this method can be changed.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererX.prototype.processRenderer = function () {\r\n _super.prototype.processRenderer.call(this);\r\n // can not do this in init, as axis is set later\r\n var axis = this.axis;\r\n if (axis) {\r\n if (!(axis.width instanceof Percent)) {\r\n axis.width = percent(100);\r\n }\r\n // @todo Is thi sneeded?\r\n $utils.used(this.line);\r\n var title = axis.title;\r\n title.rotation = 0;\r\n title.align = \"center\";\r\n if (this.opposite) {\r\n this.line.toFront();\r\n title.toBack();\r\n }\r\n else {\r\n title.toFront();\r\n this.toBack();\r\n this.line.toBack();\r\n }\r\n }\r\n };\r\n /**\r\n * Updates some of the Axis tooltip's visual properties, related to\r\n * rendering of the Axis.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererX.prototype.updateTooltip = function () {\r\n var axis = this.axis;\r\n if (axis) {\r\n var bigNum = 1000;\r\n var bbx = this.line.pixelX;\r\n var bby = this.line.pixelY;\r\n var bbw = this.axisLength;\r\n var bbh = bigNum;\r\n // top\r\n if (this.opposite) {\r\n if (!this.inside) {\r\n bby = -bigNum;\r\n bbh = bigNum;\r\n }\r\n }\r\n // bottom\r\n else {\r\n if (this.inside) {\r\n bby = -bigNum;\r\n bbh = bigNum;\r\n }\r\n }\r\n this.axis.updateTooltip(\"vertical\", { x: bbx, y: bby, width: bbw, height: bbh });\r\n }\r\n };\r\n /**\r\n * Updates and positions a label element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param label Label element\r\n * @param position Starting position\r\n * @param endPosition Ending position\r\n */\r\n AxisRendererX.prototype.updateLabelElement = function (label, position, endPosition, location) {\r\n if (!$type.hasValue(location)) {\r\n location = label.location;\r\n }\r\n position = position + (endPosition - position) * location;\r\n var point = this.positionToPoint(position);\r\n label.isMeasured = !label.inside;\r\n var deltaY = 0;\r\n var verticalCenter;\r\n var maxHeight = this.gridContainer.maxHeight;\r\n if (this.opposite) {\r\n if (label.inside) {\r\n verticalCenter = \"top\";\r\n if (label.valign == \"bottom\") {\r\n deltaY = maxHeight;\r\n verticalCenter = \"bottom\";\r\n }\r\n if (label.valign == \"middle\") {\r\n deltaY = maxHeight / 2;\r\n verticalCenter = \"middle\";\r\n }\r\n }\r\n else {\r\n verticalCenter = \"bottom\";\r\n }\r\n point.y = deltaY;\r\n }\r\n else {\r\n if (label.inside) {\r\n verticalCenter = \"bottom\";\r\n if (label.valign == \"top\") {\r\n deltaY = -maxHeight;\r\n verticalCenter = \"top\";\r\n }\r\n if (label.valign == \"middle\") {\r\n deltaY = -maxHeight / 2;\r\n verticalCenter = \"middle\";\r\n }\r\n }\r\n else {\r\n verticalCenter = \"top\";\r\n }\r\n point.y += deltaY;\r\n }\r\n if (label.rotation == 0) {\r\n // Apply fuzzy logic to verticalCenter only if labels are not rotated\r\n label.verticalCenter = verticalCenter;\r\n }\r\n this.positionItem(label, point);\r\n this.toggleVisibility(label, position, this.minLabelPosition, this.maxLabelPosition);\r\n };\r\n Object.defineProperty(AxisRendererX.prototype, \"axisLength\", {\r\n /**\r\n * Returns actual length of the Axis, in pixels.\r\n *\r\n * @return Length (px)\r\n */\r\n get: function () {\r\n var axis = this.axis;\r\n return (axis.measuredWidth - axis.pixelPaddingRight - axis.pixelPaddingLeft) || 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts relative position on axis to point coordinates.\r\n *\r\n * @param position Position (0-1)\r\n * @param position2 Position (0-1) Position on the second axis\r\n * @return Point\r\n */\r\n AxisRendererX.prototype.positionToPoint = function (position, position2) {\r\n return { x: this.positionToCoordinate(position), y: 0 };\r\n };\r\n /**\r\n * Converts a point at specific coordinates to a relative position (0-1)\r\n * on the axis.\r\n *\r\n * @param point Point\r\n * @return Position (0-1)\r\n */\r\n AxisRendererX.prototype.pointToPosition = function (point) {\r\n return this.coordinateToPosition(point.x, point.y);\r\n };\r\n /**\r\n * [getPositionRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param startPosition Starting position\r\n * @param endPosition End position\r\n * @return SVG path\r\n */\r\n AxisRendererX.prototype.getPositionRangePath = function (startPosition, endPosition) {\r\n var x1 = $math.fitToRange(this.positionToCoordinate(startPosition), 0, this.axisLength);\r\n var x2 = $math.fitToRange(this.positionToCoordinate(endPosition), 0, this.axisLength);\r\n var w = Math.abs(x2 - x1);\r\n var h = this.getHeight();\r\n var x = Math.min(x1, x2);\r\n var y = 0;\r\n return $path.rectToPath({\r\n x: x,\r\n y: y,\r\n width: w,\r\n height: h\r\n }, true);\r\n };\r\n /**\r\n * Updates and positions an axis break element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axisBreak Break element\r\n */\r\n AxisRendererX.prototype.updateBreakElement = function (axisBreak) {\r\n _super.prototype.updateBreakElement.call(this, axisBreak);\r\n var startLine = axisBreak.startLine;\r\n var endLine = axisBreak.endLine;\r\n var fillShape = axisBreak.fillShape;\r\n var startPoint = axisBreak.startPoint;\r\n var endPoint = axisBreak.endPoint;\r\n var y1 = axisBreak.pixelMarginLeft;\r\n var y2 = this.getHeight() - axisBreak.pixelMarginTop - axisBreak.pixelMarginBottom;\r\n startPoint.x = $math.fitToRange(startPoint.x, -1, this.axisLength + 1);\r\n endPoint.x = $math.fitToRange(endPoint.x, -1, this.axisLength + 1);\r\n if (startPoint.x == endPoint.x && (startPoint.x < 0 || startPoint.x > this.axisLength)) {\r\n axisBreak.fillShape.__disabled = true;\r\n }\r\n else {\r\n axisBreak.fillShape.__disabled = false;\r\n }\r\n startLine.y = y1;\r\n startLine.width = 0;\r\n startLine.height = y2;\r\n endLine.y = y1;\r\n endLine.width = 0;\r\n endLine.height = y2;\r\n fillShape.height = y2;\r\n fillShape.width = Math.abs(endPoint.x - startPoint.x);\r\n fillShape.y = y1;\r\n fillShape.x = startPoint.x;\r\n };\r\n /**\r\n * Updates and positions a grid element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param grid Grid element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererX.prototype.updateGridElement = function (grid, position, endPosition) {\r\n position = position + (endPosition - position) * grid.location;\r\n var point = this.positionToPoint(position);\r\n //point.x = $utils.spritePointToSprite({x:point.x, y:0}, this, this.gridContainer).x;\r\n grid.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: 0, y: this.getHeight() });\r\n this.positionItem(grid, point);\r\n this.toggleVisibility(grid, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions a tick element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param tick Tick element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererX.prototype.updateTickElement = function (tick, position, endPosition) {\r\n position = position + (endPosition - position) * tick.location;\r\n var point = this.positionToPoint(position);\r\n var tickLength = tick.length;\r\n point.y = $utils.spritePointToSprite({ x: 0, y: this.line.pixelY }, this.line.parent, this.gridContainer).y;\r\n if (this.opposite) {\r\n tickLength *= (tick.inside ? 1 : -1);\r\n }\r\n else {\r\n tickLength *= (tick.inside ? -1 : 1);\r\n }\r\n tick.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: 0, y: tickLength });\r\n this.positionItem(tick, point);\r\n this.toggleVisibility(tick, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions the axis line element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererX.prototype.updateAxisLine = function () {\r\n this.line.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: this.axisLength, y: 0 });\r\n };\r\n /**\r\n * Updates and positions the base grid element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererX.prototype.updateBaseGridElement = function () {\r\n _super.prototype.updateBaseGridElement.call(this);\r\n var axis = this.axis;\r\n var h = this.getHeight();\r\n var w = this.axisLength;\r\n var baseGrid = this.baseGrid;\r\n var x = axis.basePoint.x;\r\n if (x < -0.2 || x > w + 0.2) {\r\n baseGrid.hide(0);\r\n }\r\n else {\r\n var y = $utils.spritePointToSprite({ x: 0, y: 0 }, this.gridContainer, baseGrid.parent).y;\r\n baseGrid.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: 0, y: h });\r\n baseGrid.moveTo({ x: x, y: y });\r\n baseGrid.show(0);\r\n }\r\n };\r\n /**\r\n * Creates visual elements for and axis break.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axisBreak Axis break\r\n */\r\n AxisRendererX.prototype.createBreakSprites = function (axisBreak) {\r\n axisBreak.startLine = new WavedLine();\r\n axisBreak.endLine = new WavedLine();\r\n var wavedRectangle = new WavedRectangle();\r\n wavedRectangle.setWavedSides(false, true, false, true);\r\n axisBreak.fillShape = wavedRectangle;\r\n };\r\n /**\r\n * @ignore\r\n */\r\n AxisRendererX.prototype.toAxisPosition = function (value) {\r\n var inversedPosition = value;\r\n var axis = this.axis;\r\n if (axis) {\r\n var relativePositionSprite = axis.relativePositionSprite;\r\n var x = axis.pixelX;\r\n if (relativePositionSprite) {\r\n x = $utils.spritePointToSprite({ x: this.pixelX, y: 0 }, this.parent, relativePositionSprite).x;\r\n }\r\n else {\r\n relativePositionSprite = axis.parent;\r\n }\r\n if (relativePositionSprite) {\r\n var relativeX = x / relativePositionSprite.innerWidth;\r\n var relativeWidth = axis.axisLength / relativePositionSprite.innerWidth;\r\n return (inversedPosition - relativeX) / relativeWidth;\r\n }\r\n }\r\n return value;\r\n };\r\n /**\r\n * Updates and positions axis bullets.\r\n *\r\n * @ignore Exclude from docs\r\n * @param bullet AxisBullet element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererX.prototype.updateBullet = function (bullet, position, endPosition) {\r\n var location = 0.5;\r\n if (bullet instanceof AxisBullet) {\r\n location = bullet.location;\r\n }\r\n position = position + (endPosition - position) * location;\r\n var point = this.positionToPoint(position);\r\n point.y = $utils.spritePointToSprite({ x: 0, y: this.line.pixelY }, this.line.parent, this.gridContainer).y;\r\n this.positionItem(bullet, point);\r\n this.toggleVisibility(bullet, position, 0, 1);\r\n };\r\n return AxisRendererX;\r\n}(AxisRenderer));\r\nexport { AxisRendererX };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"AxisRendererX\"] = AxisRendererX;\r\n/**\r\n * Add default responsive rules\r\n */\r\n/**\r\n * Put labels inside plot area.\r\n * Disable first and last labels.\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.heightXS,\r\n state: function (target, stateId) {\r\n if (target instanceof AxisRendererX) {\r\n var state = target.states.create(stateId);\r\n state.properties.inside = true;\r\n state.properties.maxLabelPosition = 0.9;\r\n state.properties.minLabelPosition = 0.1;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n/**\r\n * Disable labels altogather on very small charts\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.heightXXS,\r\n state: function (target, stateId) {\r\n if (target instanceof AxisRendererX) {\r\n var state = target.states.create(stateId);\r\n state.properties.disabled = true;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n//# sourceMappingURL=AxisRendererX.js.map","/**\r\n * A module which defines functionality related to Category Axis Break.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AxisBreak } from \"./AxisBreak\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Base class to define \"breaks\" in axes\r\n * @see {@link ICategoryAxisBreakEvents} for a list of available events\r\n * @see {@link ICategoryAxisBreakAdapters} for a list of available Adapters\r\n */\r\nvar CategoryAxisBreak = /** @class */ (function (_super) {\r\n __extends(CategoryAxisBreak, _super);\r\n /**\r\n * Constructor\r\n */\r\n function CategoryAxisBreak() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"CategoryAxisBreak\";\r\n _this.properties.startLocation = 0.5;\r\n _this.properties.endLocation = 0.5;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(CategoryAxisBreak.prototype, \"startPosition\", {\r\n /**\r\n * Pixel position of the break's start.\r\n *\r\n * @return Position (px)\r\n * @readonly\r\n */\r\n get: function () {\r\n if (this.axis) {\r\n return this.axis.indexToPosition(this.adjustedStartValue, this.startLocation);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CategoryAxisBreak.prototype, \"endPosition\", {\r\n /**\r\n * Pixel position of the break's end.\r\n *\r\n * @return Position (px)\r\n * @readonly\r\n */\r\n get: function () {\r\n if (this.axis) {\r\n return this.axis.indexToPosition(this.adjustedEndValue, this.endLocation);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CategoryAxisBreak.prototype, \"startCategory\", {\r\n /**\r\n * @return Start category\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startCategory\");\r\n },\r\n /**\r\n * A category break starts on.\r\n *\r\n * @param value Start category\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"startCategory\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidateDataItems();\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CategoryAxisBreak.prototype, \"endCategory\", {\r\n /**\r\n * @return End category\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endCategory\");\r\n },\r\n /**\r\n * A category break ends on.\r\n *\r\n * @param value End category\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"endCategory\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidateDataItems();\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CategoryAxisBreak.prototype, \"startValue\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n var category = this.getPropertyValue(\"startCategory\");\r\n if (category) {\r\n return this.axis.categoryToIndex(category);\r\n }\r\n else {\r\n return this.getPropertyValue(\"startValue\");\r\n }\r\n },\r\n /**\r\n * An index of start category.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"startValue\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidateDataItems();\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CategoryAxisBreak.prototype, \"endValue\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n var category = this.getPropertyValue(\"endCategory\");\r\n if (category) {\r\n return this.axis.categoryToIndex(category);\r\n }\r\n else {\r\n return this.getPropertyValue(\"endValue\");\r\n }\r\n },\r\n /**\r\n * An index of end category or a end value.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"endValue\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidateDataItems();\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CategoryAxisBreak.prototype, \"startLocation\", {\r\n /**\r\n * @return Break start location\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startLocation\");\r\n },\r\n /**\r\n * Indicates where within starting category break should begin.\r\n *\r\n * Values range from `0` (start) to `1` (end), with default being `0.5` (middle).\r\n *\r\n * E.g. if you want to a break to fully encompass start and end categories,\r\n * you should set `startLocation = 0` and `endLocation = 1`.\r\n *\r\n * @since 4.9.17\r\n * @default 0.5\r\n * @param value Break start location\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"startLocation\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidateDataItems();\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CategoryAxisBreak.prototype, \"endLocation\", {\r\n /**\r\n * @return Break end location\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endLocation\");\r\n },\r\n /**\r\n * Indicates where within ending category break should end.\r\n *\r\n * Values range from `0` (start) to `1` (end), with default being `0.5` (middle).\r\n *\r\n * E.g. if you want to a break to fully encompass start and end categories,\r\n * you should set `startLocation = 0` and `endLocation = 1`.\r\n *\r\n * @since 4.9.17\r\n * @default 0.5\r\n * @param value Break end location\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"endLocation\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidateDataItems();\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return CategoryAxisBreak;\r\n}(AxisBreak));\r\nexport { CategoryAxisBreak };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"CategoryAxisBreak\"] = CategoryAxisBreak;\r\n//# sourceMappingURL=CategoryAxisBreak.js.map","/**\r\n * Category axis module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Axis, AxisDataItem } from \"./Axis\";\r\nimport { AxisRendererX } from \"./AxisRendererX\";\r\nimport { AxisRendererY } from \"./AxisRendererY\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { Dictionary } from \"../../core/utils/Dictionary\";\r\nimport { CategoryAxisBreak } from \"./CategoryAxisBreak\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[CategoryAxis]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar CategoryAxisDataItem = /** @class */ (function (_super) {\r\n __extends(CategoryAxisDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function CategoryAxisDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.seriesDataItems = {};\r\n _this.className = \"CategoryAxisDataItem\";\r\n _this.text = \"{category}\";\r\n _this.locations.category = 0;\r\n _this.locations.endCategory = 1;\r\n _this.deltaPosition = 0;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(CategoryAxisDataItem.prototype, \"category\", {\r\n /**\r\n * @return Category\r\n */\r\n get: function () {\r\n if (this._adapterO) {\r\n if (this._adapterO.isEnabled(\"category\")) {\r\n return this._adapterO.apply(\"category\", this.properties.category);\r\n }\r\n }\r\n return this.properties.category;\r\n },\r\n /**\r\n * Category.\r\n *\r\n * @param value Category\r\n */\r\n set: function (value) {\r\n var oldCategory = this.properties.category;\r\n this.setProperty(\"category\", value);\r\n if ($type.hasValue(oldCategory) && oldCategory != value) {\r\n if (this.component) {\r\n this.component.validateDataElement(this);\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CategoryAxisDataItem.prototype, \"endCategory\", {\r\n /**\r\n * @return End category\r\n */\r\n get: function () {\r\n return this.properties.endCategory;\r\n },\r\n /**\r\n * End category.\r\n *\r\n * Used for items that span several categories, like [[CategoryAxisBreak]].\r\n *\r\n * @param value End category\r\n */\r\n set: function (value) {\r\n this.setProperty(\"endCategory\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CategoryAxisDataItem.prototype, \"deltaPosition\", {\r\n get: function () {\r\n return this.properties.deltaCoordinate;\r\n },\r\n set: function (value) {\r\n if (value != this.properties.deltaCoordinate) {\r\n this.setProperty(\"deltaCoordinate\", value);\r\n if (this.component) {\r\n this.component.invalidateDataItems();\r\n this.component.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return CategoryAxisDataItem;\r\n}(AxisDataItem));\r\nexport { CategoryAxisDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Used to create a category-based axis for the chart.\r\n *\r\n * ```TypeScript\r\n * // Create the axis\r\n * let xAxis = chart.xAxes.push(new am4charts.CategoryAxis());\r\n *\r\n * // Set settings\r\n * xAxis.title.text = \"Clients\";\r\n * ```\r\n * ```JavaScript\r\n * // Create the axis\r\n * var valueAxis = chart.xAxes.push(new am4charts.CategoryAxis());\r\n *\r\n * // Set settings\r\n * valueAxis.title.text = \"Clients\";\r\n * ```\r\n * ```JSON\r\n * \"xAxes\": [{\r\n * \"type\": \"CategoryAxis\",\r\n * \"title\": {\r\n * \"text\": \"Clients\"\r\n * }\r\n * }]\r\n * ```\r\n *\r\n * @see {@link ICategoryAxisEvents} for a list of available Events\r\n * @see {@link ICategoryAxisAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar CategoryAxis = /** @class */ (function (_super) {\r\n __extends(CategoryAxis, _super);\r\n /**\r\n * Constructor\r\n */\r\n function CategoryAxis() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * A collection that holds Axis' data items sorted by each category.\r\n */\r\n _this.dataItemsByCategory = new Dictionary();\r\n _this.className = \"CategoryAxis\";\r\n // Set field name\r\n _this.axisFieldName = \"category\";\r\n _this._lastDataItem = _this.createDataItem();\r\n _this._lastDataItem.component = _this;\r\n _this._disposers.push(_this._lastDataItem);\r\n // Apply theme\r\n _this.applyTheme();\r\n var dataItemsByCategory = _this.dataItemsByCategory;\r\n _this.addDisposer(_this.mainDataSet.events.on(\"removed\", function (event) {\r\n dataItemsByCategory.removeKey(event.oldValue.category);\r\n }));\r\n return _this;\r\n }\r\n /**\r\n * Returns a new/empty [[DataItem]] of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n CategoryAxis.prototype.createDataItem = function () {\r\n return new CategoryAxisDataItem();\r\n };\r\n /**\r\n * Returns a new/empty [[AxisBreak]] of the appropriate type.\r\n *\r\n * @return Axis break\r\n */\r\n CategoryAxis.prototype.createAxisBreak = function () {\r\n return new CategoryAxisBreak();\r\n };\r\n /**\r\n * Processes a related series' data item.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param dataItem Data item\r\n */\r\n CategoryAxis.prototype.processSeriesDataItem = function (dataItem, axisLetter) {\r\n _super.prototype.processSeriesDataItem.call(this, dataItem, axisLetter);\r\n var category = dataItem[\"category\" + this.axisLetter];\r\n if ($type.hasValue(category)) {\r\n var categoryAxisDataItem = this.dataItemsByCategory.getKey(category);\r\n if (categoryAxisDataItem) {\r\n var seriesId = dataItem.component.uid;\r\n var seriesDataItems = categoryAxisDataItem.seriesDataItems[seriesId];\r\n if (!seriesDataItems) {\r\n seriesDataItems = [];\r\n categoryAxisDataItem.seriesDataItems[seriesId] = seriesDataItems;\r\n }\r\n seriesDataItems.push(dataItem);\r\n }\r\n }\r\n else {\r\n dataItem.component.dataItems.remove(dataItem);\r\n }\r\n };\r\n /**\r\n * Validates the data range.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n */\r\n CategoryAxis.prototype.validateDataRange = function () {\r\n var _this = this;\r\n _super.prototype.validateDataRange.call(this);\r\n $iter.each(this._series.iterator(), function (series) {\r\n if ((series.xAxis instanceof CategoryAxis) && (series.yAxis instanceof CategoryAxis)) {\r\n series.invalidateDataRange();\r\n }\r\n else {\r\n var startIndex = _this.positionToIndex(_this.start);\r\n var endIndex = _this.positionToIndex(_this.end);\r\n if (endIndex >= _this.dataItems.length) {\r\n endIndex--;\r\n }\r\n var seriesId = series.uid;\r\n var minIndex = void 0;\r\n var maxIndex = void 0;\r\n for (var i = startIndex; i <= endIndex; i++) {\r\n var axisDataItem = _this.dataItems.getIndex(i);\r\n if (axisDataItem) {\r\n var seriesDataItems = axisDataItem.seriesDataItems[seriesId];\r\n if (seriesDataItems) {\r\n for (var i_1 = 0; i_1 < seriesDataItems.length; i_1++) {\r\n var seriesDataItem = seriesDataItems[i_1];\r\n if (seriesDataItem) {\r\n var index = seriesDataItem.index;\r\n if (!$type.isNumber(minIndex) || index < minIndex) {\r\n minIndex = index;\r\n }\r\n if (!$type.isNumber(maxIndex) || index > maxIndex) {\r\n maxIndex = index;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if ($type.isNumber(minIndex)) {\r\n series.startIndex = minIndex;\r\n }\r\n else {\r\n series.start = _this.start;\r\n }\r\n if ($type.isNumber(maxIndex)) {\r\n series.endIndex = maxIndex + 1;\r\n }\r\n else {\r\n series.end = _this.end;\r\n }\r\n // range might not change, but axis breaks might.\r\n if (_this._axisBreaks && _this._axisBreaks.length > 0) {\r\n series.invalidateDataRange();\r\n }\r\n }\r\n });\r\n };\r\n /**\r\n * Validates the whole axis. Causes it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n */\r\n CategoryAxis.prototype.validate = function () {\r\n var _this = this;\r\n _super.prototype.validate.call(this);\r\n var dataCount = this.dataItems.length;\r\n var startIndex = $math.fitToRange(Math.floor(this.start * dataCount - 1), 0, dataCount);\r\n var endIndex = $math.fitToRange(Math.ceil(this.end * dataCount), 0, dataCount);\r\n if (this.renderer.invalid) {\r\n this.renderer.validate();\r\n }\r\n // find frequency at which we'll show items\r\n var maxCount = this.renderer.axisLength / Math.max(this.renderer.minGridDistance, 1 / Number.MAX_SAFE_INTEGER);\r\n var frequency = Math.min(this.dataItems.length, Math.ceil((endIndex - startIndex) / maxCount));\r\n this._startIndex = Math.floor(startIndex / frequency) * frequency;\r\n this._endIndex = Math.ceil(this.end * dataCount);\r\n this.fixAxisBreaks();\r\n if (this._startIndex == this._endIndex) {\r\n this._endIndex++;\r\n }\r\n this._frequency = frequency;\r\n if (this.axisLength <= 0) {\r\n return;\r\n }\r\n this.maxZoomFactor = this.dataItems.length;\r\n if (this.dataItems.length <= 0) {\r\n this.maxZoomFactor = 1;\r\n }\r\n this.resetIterators();\r\n // it's important to use protected variables here, as getters will return 0 - length\r\n // TODO use iterator instead\r\n // @ todo: not solved cat axis item fading\r\n startIndex = $math.max(0, this._startIndex - this._frequency);\r\n endIndex = $math.min(this.dataItems.length, this._endIndex + this._frequency);\r\n var itemIndex = 0;\r\n for (var i = 0; i < startIndex; i++) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n dataItem.__disabled = true;\r\n }\r\n for (var i = endIndex, len = this.dataItems.length; i < len; i++) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n dataItem.__disabled = true;\r\n }\r\n for (var i = startIndex; i < endIndex; i++) {\r\n if (i < this.dataItems.length) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n if (i / this._frequency == Math.round(i / this._frequency)) {\r\n var axisBreak = this.isInBreak(i);\r\n if (!axisBreak) {\r\n this.appendDataItem(dataItem);\r\n this.validateDataElement(dataItem, itemIndex);\r\n }\r\n itemIndex++;\r\n }\r\n else {\r\n //previously we disabled all before, but this is better for cpu\r\n //this.validateDataElement(dataItem, itemIndex); // helps to solve shrinking // not good - creates all items\r\n dataItem.__disabled = true;\r\n }\r\n }\r\n }\r\n this.appendDataItem(this._lastDataItem);\r\n this.validateDataElement(this._lastDataItem, itemIndex + 1, this.dataItems.length);\r\n if (this._axisBreaks) {\r\n var axisBreaks = this._axisBreaks;\r\n axisBreaks.each(function (axisBreak) {\r\n var adjustedStartValue = axisBreak.adjustedStartValue;\r\n var adjustedEndValue = axisBreak.adjustedEndValue;\r\n if ($math.intersect({ start: adjustedStartValue, end: adjustedEndValue }, { start: _this._startIndex, end: _this._endIndex })) {\r\n for (var b = adjustedStartValue; b <= adjustedEndValue; b++) {\r\n var dataItem = _this.dataItems.getIndex(b);\r\n dataItem.__disabled = true;\r\n }\r\n var frequency_1 = $math.fitToRange(Math.ceil(_this._frequency / axisBreak.breakSize), 1, adjustedEndValue - adjustedStartValue);\r\n var itemIndex_1 = 0;\r\n if (axisBreak.breakSize > 0) {\r\n // TODO use iterator instead\r\n for (var b = adjustedStartValue; b <= adjustedEndValue; b = b + frequency_1) {\r\n var dataItem = _this.dataItems.getIndex(b);\r\n dataItem.__disabled = false;\r\n _this.appendDataItem(dataItem);\r\n _this.validateDataElement(dataItem, itemIndex_1);\r\n itemIndex_1++;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n this.validateBreaks();\r\n this.validateAxisRanges();\r\n this.ghostLabel.invalidate(); // solves font issue\r\n this.renderer.invalidateLayout();\r\n };\r\n /**\r\n * [validateDataElement description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param dataItem [description]\r\n * @param itemIndex [description]\r\n */\r\n CategoryAxis.prototype.validateDataElement = function (dataItem, itemIndex, index) {\r\n _super.prototype.validateDataElement.call(this, dataItem);\r\n dataItem.itemIndex = this._axisItemCount;\r\n this._axisItemCount++;\r\n //dataItem.__disabled = false;\r\n var renderer = this.renderer;\r\n if (!$type.isNumber(index)) {\r\n index = this.categoryToIndex(dataItem.category);\r\n }\r\n var endIndex = this.categoryToIndex(dataItem.endCategory);\r\n if (!$type.isNumber(endIndex)) {\r\n endIndex = index;\r\n }\r\n var position = this.indexToPosition(index, dataItem.locations.category);\r\n var endPosition = this.indexToPosition(endIndex, dataItem.locations.endCategory);\r\n dataItem.position = position;\r\n var fillEndIndex;\r\n var fillPosition;\r\n var fillEndPosition;\r\n if (dataItem.isRange) {\r\n fillEndIndex = endIndex;\r\n fillPosition = this.indexToPosition(index, dataItem.locations.category);\r\n fillEndPosition = this.indexToPosition(fillEndIndex, dataItem.locations.endCategory);\r\n }\r\n dataItem.point = renderer.positionToPoint(position);\r\n var tick = dataItem.tick;\r\n if (tick && !tick.disabled) {\r\n renderer.updateTickElement(tick, position, endPosition);\r\n }\r\n var grid = dataItem.grid;\r\n if (grid && !grid.disabled) {\r\n renderer.updateGridElement(grid, position, endPosition);\r\n }\r\n var label = dataItem.label;\r\n if (label && !label.disabled) {\r\n // theorethically this might result problems if category text changes, the range text won't change. But otherwise range.label.text = \"custom text\" won't work, which is not intuitive.\r\n if (!dataItem.isRange || label.text == undefined) {\r\n dataItem.text = dataItem.text;\r\n }\r\n renderer.updateLabelElement(label, position, endPosition);\r\n if ((renderer instanceof AxisRendererY && dataItem.label.measuredWidth > this.ghostLabel.measuredWidth) || (renderer instanceof AxisRendererX && dataItem.label.measuredHeight > this.ghostLabel.measuredHeight)) {\r\n if (dataItem.label.html) {\r\n this.ghostLabel.html = dataItem.label.currentText;\r\n }\r\n else {\r\n this.ghostLabel.text = dataItem.label.currentText;\r\n }\r\n }\r\n }\r\n var fill = dataItem.axisFill;\r\n if (fill && !fill.disabled) {\r\n if (!dataItem.isRange) {\r\n fillEndIndex = index + this._frequency;\r\n fillPosition = this.indexToPosition(index, fill.location);\r\n fillEndPosition = this.indexToPosition(fillEndIndex, fill.location);\r\n }\r\n renderer.updateFillElement(fill, fillPosition, fillEndPosition);\r\n if (!dataItem.isRange) {\r\n this.fillRule(dataItem, itemIndex);\r\n }\r\n }\r\n if (dataItem.bullet) {\r\n renderer.updateBullet(dataItem.bullet, position, endPosition);\r\n }\r\n var mask = dataItem.mask;\r\n if (mask) {\r\n renderer.updateFillElement(mask, fillPosition, fillEndPosition);\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n CategoryAxis.prototype.disposeData = function () {\r\n this.dataItemsByCategory.clear();\r\n _super.prototype.disposeData.call(this);\r\n };\r\n /**\r\n * Processes the axis data item.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n * @param dataContext The raw data that corresponds to this data item\r\n */\r\n CategoryAxis.prototype.processDataItem = function (dataItem, dataContext) {\r\n if (dataItem) {\r\n // creat a collection for fast access\r\n _super.prototype.processDataItem.call(this, dataItem, dataContext);\r\n // check if such category already exists\r\n //let existingDataItem: CategoryAxisDataItem = this.dataItemsByCategory.getKey(dataItem.category);\r\n //if (existingDataItem && existingDataItem != dataItem) {\r\n //\tthis.dataItems.remove(existingDataItem);\r\n //}\r\n if ($type.hasValue(dataItem.category)) {\r\n this.dataItemsByCategory.setKey(dataItem.category, dataItem);\r\n }\r\n }\r\n };\r\n CategoryAxis.prototype.getDataItem = function (dataContext) {\r\n var category = (dataContext[this.dataFields.category]);\r\n if ($type.hasValue(category)) {\r\n var dataItem = this.dataItemsByCategory.getKey(category);\r\n if (dataItem) {\r\n return dataItem;\r\n }\r\n else {\r\n return this.dataItems.create();\r\n }\r\n }\r\n };\r\n /**\r\n * Converts a category index to an actual screen coordinate on the axis.\r\n *\r\n * `location` identifies relative location within category. 0 - beginning,\r\n * 0.5 - middle, 1 - end, and anything inbetween.\r\n *\r\n * @param index Index\r\n * @param location Location (0-1)\r\n * @return Position (px)\r\n */\r\n CategoryAxis.prototype.indexToPosition = function (index, location) {\r\n if (!$type.isNumber(location)) {\r\n location = 0.5;\r\n }\r\n var startIndex = this.startIndex;\r\n var endIndex = this.endIndex;\r\n var difference = this.adjustDifference(startIndex, endIndex);\r\n var startLocation = this.startLocation;\r\n var endLocation = this.endLocation;\r\n difference -= startLocation;\r\n difference -= (1 - endLocation);\r\n if (this._axisBreaks) {\r\n var axisBreaks = this._axisBreaks;\r\n $iter.eachContinue(axisBreaks.iterator(), function (axisBreak) {\r\n var breakStartIndex = axisBreak.adjustedStartValue;\r\n var breakEndIndex = axisBreak.adjustedEndValue;\r\n if (index < startIndex || !$type.isNumber(breakStartIndex) || !$type.isNumber(breakEndIndex)) {\r\n return false;\r\n }\r\n if ($math.intersect({ start: breakStartIndex, end: breakEndIndex }, { start: startIndex, end: endIndex })) {\r\n breakStartIndex = Math.max(startIndex, breakStartIndex);\r\n breakEndIndex = Math.min(endIndex, breakEndIndex);\r\n var breakSize = axisBreak.breakSize;\r\n // value to the right of break end\r\n if (index > breakEndIndex) {\r\n startIndex += (breakEndIndex - breakStartIndex) * (1 - breakSize);\r\n }\r\n // value to the left of break start\r\n else if (index < breakStartIndex) {\r\n }\r\n // value within break\r\n else {\r\n index = breakStartIndex + (index - breakStartIndex) * breakSize;\r\n }\r\n }\r\n return true;\r\n });\r\n }\r\n var deltaPosition = 0;\r\n var dataItem = this.dataItems.getIndex(index);\r\n if (dataItem) {\r\n deltaPosition = dataItem.deltaPosition;\r\n }\r\n return $math.round(deltaPosition + (index + location - startLocation - startIndex) / difference, 5);\r\n };\r\n /**\r\n * Converts a string category name to relative position on axis.\r\n *\r\n * `location` identifies relative location within category. 0 - beginning,\r\n * 0.5 - middle, 1 - end, and anything inbetween.\r\n *\r\n * @param category Category name\r\n * @param location Location (0-1)\r\n * @return Position\r\n */\r\n CategoryAxis.prototype.categoryToPosition = function (category, location) {\r\n var index = this.categoryToIndex(category);\r\n return this.indexToPosition(index, location);\r\n };\r\n /**\r\n * Converts a string category name to a orientation point (x, y, angle) on axis\r\n *\r\n * `location` identifies relative location within category. 0 - beginning,\r\n * 0.5 - middle, 1 - end, and anything inbetween.\r\n * @param category Category name\r\n * @param location Location (0-1)\r\n * @return Orientation point\r\n */\r\n CategoryAxis.prototype.categoryToPoint = function (category, location) {\r\n var position = this.categoryToPosition(category, location);\r\n var point = this.renderer.positionToPoint(position);\r\n var angle = this.renderer.positionToAngle(position);\r\n return { x: point.x, y: point.y, angle: angle };\r\n };\r\n /**\r\n * Converts a string category name to a orientation point (x, y, angle) on axis\r\n *\r\n * `location` identifies relative location within category. 0 - beginning,\r\n * 0.5 - middle, 1 - end, and anything inbetween.\r\n * @param category Category name\r\n * @param location Location (0-1)\r\n * @return Orientation point\r\n */\r\n CategoryAxis.prototype.anyToPoint = function (category, location) {\r\n return this.categoryToPoint(category, location);\r\n };\r\n /**\r\n * Converts a string category name to relative position on axis.\r\n *\r\n * An alias to `categoryToPosition()`.\r\n *\r\n * @param category Category name\r\n * @param location Location (0-1)\r\n * @return Relative position\r\n */\r\n CategoryAxis.prototype.anyToPosition = function (category, location) {\r\n return this.categoryToPosition(category, location);\r\n };\r\n /**\r\n * Converts named category to an index of data item it corresponds to.\r\n *\r\n * @param category Category\r\n * @return Data item index\r\n */\r\n CategoryAxis.prototype.categoryToIndex = function (category) {\r\n if ($type.hasValue(category)) {\r\n var dataItem = this.dataItemsByCategory.getKey(category);\r\n if (dataItem) {\r\n return dataItem.index;\r\n }\r\n }\r\n };\r\n /**\r\n * Zooms the axis to specific named ctaegories.\r\n *\r\n * @param startCategory Start category\r\n * @param endCategory End category\r\n */\r\n CategoryAxis.prototype.zoomToCategories = function (startCategory, endCategory) {\r\n this.zoomToIndexes(this.categoryToIndex(startCategory), this.categoryToIndex(endCategory) + 1);\r\n };\r\n /**\r\n * [getAnyRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param start [description]\r\n * @param end [description]\r\n * @param startLocation [description]\r\n * @param endLocation [description]\r\n * @return [description]\r\n */\r\n CategoryAxis.prototype.getAnyRangePath = function (start, end, startLocation, endLocation) {\r\n var startPos = this.categoryToPosition(start, startLocation);\r\n var endPos = this.categoryToPosition(end, endLocation);\r\n return this.getPositionRangePath(startPos, endPos); // Base class (Axis) gets range shape from AxisRenderer\r\n };\r\n /**\r\n * Takes an absolute position (px) within axis and adjust it to a specific\r\n * `location` within category it corresponds to.\r\n *\r\n * @param position Source position (px)\r\n * @param location Location within category (0-1)\r\n * @return Adjusted position (px)\r\n */\r\n CategoryAxis.prototype.roundPosition = function (position, location) {\r\n var index = this.positionToIndex(position);\r\n return this.indexToPosition(index, location);\r\n };\r\n /**\r\n * Finds and returns first series data item with specific category\r\n * @param series Target series\r\n * @param category Category\r\n * @return XYSeriesDataItem data item\r\n */\r\n CategoryAxis.prototype.getFirstSeriesDataItem = function (series, category) {\r\n for (var i = 0; i < series.dataItems.length; i++) {\r\n var dataItem = series.dataItems.getIndex(i);\r\n if (series.xAxis == this) {\r\n if (dataItem.categoryX == category) {\r\n return dataItem;\r\n }\r\n }\r\n if (series.yAxis == this) {\r\n if (dataItem.categoryY == category) {\r\n return dataItem;\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Finds and returns last series data item with specific category.\r\n * @param series Target series\r\n * @param category Category\r\n * @return XYSeriesDataItem data item\r\n */\r\n CategoryAxis.prototype.getLastSeriesDataItem = function (series, category) {\r\n for (var i = series.dataItems.length - 1; i >= 0; i--) {\r\n var dataItem = series.dataItems.getIndex(i);\r\n if (series.xAxis == this) {\r\n if (dataItem.categoryX == category) {\r\n return dataItem;\r\n }\r\n }\r\n if (series.yAxis == this) {\r\n if (dataItem.categoryY == category) {\r\n return dataItem;\r\n }\r\n }\r\n }\r\n };\r\n // todo: optimize\r\n CategoryAxis.prototype.getSeriesDataItemByCategory = function (category, series) {\r\n var _this = this;\r\n var seriesDataItem;\r\n series.dataItems.each(function (dataItem) {\r\n if (series.xAxis == _this) {\r\n if (dataItem.categoryX == category) {\r\n seriesDataItem = dataItem;\r\n }\r\n }\r\n else if (series.yAxis == _this) {\r\n if (dataItem.categoryY == category) {\r\n seriesDataItem = dataItem;\r\n }\r\n }\r\n });\r\n return seriesDataItem;\r\n };\r\n /**\r\n * Returns a data item from Series that corresponds to a specific absolute\r\n * position on the Axis.\r\n *\r\n * @param series Target series\r\n * @param position Position (px)\r\n * @return XYSeriesDataItem data item\r\n */\r\n CategoryAxis.prototype.getSeriesDataItem = function (series, position, findNearest) {\r\n var _this = this;\r\n if ($type.isNumber(position)) {\r\n var index_1 = this.positionToIndex(position);\r\n if (index_1 >= this.dataItems.length) {\r\n index_1--;\r\n }\r\n var dataItem = this.dataItems.getIndex(index_1);\r\n if (dataItem) {\r\n var category_1 = dataItem.category;\r\n var sdi_1;\r\n var seriesDataItem = series.dataItems.getIndex(index_1);\r\n if (seriesDataItem) {\r\n if (series.xAxis == this) {\r\n if (seriesDataItem.categoryX == category_1) {\r\n return seriesDataItem;\r\n }\r\n }\r\n if (series.yAxis == this) {\r\n if (seriesDataItem.categoryY == category_1) {\r\n return seriesDataItem;\r\n }\r\n }\r\n }\r\n series.dataItems.each(function (dataItem) {\r\n if (series.xAxis == _this) {\r\n if (dataItem.categoryX == category_1) {\r\n if (!sdi_1) {\r\n sdi_1 = dataItem;\r\n }\r\n if (Math.abs(index_1 - sdi_1.index) > Math.abs(index_1 - dataItem.index)) {\r\n sdi_1 = dataItem;\r\n }\r\n }\r\n }\r\n if (series.yAxis == _this) {\r\n if (dataItem.categoryY == category_1) {\r\n if (!sdi_1) {\r\n sdi_1 = dataItem;\r\n }\r\n if (Math.abs(index_1 - sdi_1.index) > Math.abs(index_1 - dataItem.index)) {\r\n sdi_1 = dataItem;\r\n }\r\n }\r\n }\r\n });\r\n //@todo\r\n if (findNearest) {\r\n }\r\n return sdi_1;\r\n }\r\n }\r\n };\r\n /**\r\n * Returns the X coordinate for series' data item.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem Data item\r\n * @param key Category\r\n * @param location Location (0-1)\r\n * @return X coordinate (px)\r\n */\r\n CategoryAxis.prototype.getX = function (dataItem, key, location, stackKey, range) {\r\n var position = this.getPositionX(dataItem, key, location, stackKey, range);\r\n if ($type.isNaN(position)) {\r\n return this.basePoint.x;\r\n }\r\n else {\r\n return this.renderer.positionToPoint(position).x;\r\n }\r\n };\r\n /**\r\n * Returns relative position on axis for series' data item.\r\n *\r\n * @since 4.5.14\r\n * @param dataItem Data item\r\n * @param key Category\r\n * @param location Location (0-1)\r\n * @return Relative position\r\n */\r\n CategoryAxis.prototype.getPositionX = function (dataItem, key, location, stackKey, range) {\r\n var position;\r\n if ($type.hasValue(key)) {\r\n position = this.categoryToPosition(dataItem.categories[key], location);\r\n }\r\n if (range) {\r\n position = $math.fitToRange(position, range.start, range.end);\r\n }\r\n return position;\r\n };\r\n /**\r\n * Returns the Y coordinate for series' data item.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem Data item\r\n * @param key Category\r\n * @param location Location (0-1)\r\n * @return Y coordinate (px)\r\n */\r\n CategoryAxis.prototype.getY = function (dataItem, key, location, stackKey, range) {\r\n var position = this.getPositionY(dataItem, key, location, stackKey, range);\r\n if ($type.isNaN(position)) {\r\n return this.basePoint.y;\r\n }\r\n else {\r\n return this.renderer.positionToPoint(position).y;\r\n }\r\n };\r\n /**\r\n * Returns relative position on axis for series' data item.\r\n *\r\n * @since 4.5.14\r\n * @param dataItem Data item\r\n * @param key Category\r\n * @param location Location (0-1)\r\n * @return Relative position\r\n */\r\n CategoryAxis.prototype.getPositionY = function (dataItem, key, location, stackKey, range) {\r\n var position;\r\n if ($type.hasValue(key)) {\r\n position = this.categoryToPosition(dataItem.categories[key], location);\r\n }\r\n if (range) {\r\n position = $math.fitToRange(position, range.start, range.end);\r\n }\r\n return position;\r\n };\r\n /**\r\n * Returns an angle for series data item.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem Data item\r\n * @param key Category\r\n * @param location Location (0-1)\r\n * @param stackKey Stack key (?)\r\n * @param range Range to fit in\r\n * @return Angle\r\n */\r\n CategoryAxis.prototype.getAngle = function (dataItem, key, location, stackKey, range) {\r\n var position = this.categoryToPosition(dataItem.categories[key], location);\r\n if (range) {\r\n position = $math.fitToRange(position, range.start, range.end);\r\n }\r\n return this.positionToAngle(position);\r\n };\r\n /**\r\n * Returns an absolute pixel coordinate of the start of the cell (category),\r\n * that specific position value falls into.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param position Position (px)\r\n * @return Cell start position (px)\r\n */\r\n CategoryAxis.prototype.getCellStartPosition = function (position) {\r\n return this.roundPosition(position, 0);\r\n };\r\n /**\r\n * Returns an absolute pixel coordinate of the end of the cell (category),\r\n * that specific position value falls into.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param position Position (px)\r\n * @return Cell end position (px)\r\n */\r\n CategoryAxis.prototype.getCellEndPosition = function (position) {\r\n return this.roundPosition(position, 1);\r\n };\r\n /**\r\n * Returns text to show in a category tooltip, based on specific position\r\n * within axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param position Position (px)\r\n * @return Label (category)\r\n */\r\n CategoryAxis.prototype.getTooltipText = function (position) {\r\n var dataItem = this.dataItems.getIndex(this.positionToIndex(position));\r\n if (dataItem) {\r\n this.tooltipDataItem = dataItem;\r\n this.tooltip.dataItem = dataItem;\r\n if (this.tooltipText) {\r\n return this.tooltipText;\r\n }\r\n if (!this._adapterO) {\r\n return dataItem.category;\r\n }\r\n else {\r\n return this._adapterO.apply(\"getTooltipText\", dataItem.category);\r\n }\r\n }\r\n };\r\n /**\r\n * Returns an index of the category that corresponds to specific pixel\r\n * position within axis.\r\n *\r\n * @param position Position (px)\r\n * @return Category index\r\n */\r\n CategoryAxis.prototype.positionToIndex = function (position) {\r\n position = $math.round(position, 10);\r\n if (position < 0) {\r\n position = 0;\r\n }\r\n if (position > 1) {\r\n position = 1;\r\n }\r\n var startIndex = this.startIndex;\r\n var endIndex = this.endIndex;\r\n var difference = endIndex - startIndex - this.startLocation - (1 - this.endLocation);\r\n position += 1 / difference * this.startLocation;\r\n var index = null;\r\n if (this._axisBreaks) {\r\n var axisBreaks = this._axisBreaks;\r\n // in case we have some axis breaks\r\n $iter.eachContinue(axisBreaks.iterator(), function (axisBreak) {\r\n var breakStartPosition = axisBreak.startPosition;\r\n var breakEndPosition = axisBreak.endPosition;\r\n var breakStartIndex = axisBreak.adjustedStartValue;\r\n var breakEndIndex = axisBreak.adjustedEndValue;\r\n breakStartIndex = $math.max(breakStartIndex, startIndex);\r\n breakEndIndex = $math.min(breakEndIndex, endIndex);\r\n var breakSize = axisBreak.breakSize;\r\n difference -= (breakEndIndex - breakStartIndex) * (1 - breakSize);\r\n // position to the right of break end\r\n if (position > breakEndPosition) {\r\n startIndex += (breakEndIndex - breakStartIndex) * (1 - breakSize);\r\n }\r\n // position to the left of break start\r\n else if (position < breakStartPosition) {\r\n }\r\n // value within break\r\n else {\r\n var breakPosition = (position - breakStartPosition) / (breakEndPosition - breakStartPosition);\r\n index = breakStartIndex + Math.round(breakPosition * (breakEndIndex - breakStartIndex));\r\n return false;\r\n }\r\n return true;\r\n });\r\n }\r\n if (!$type.isNumber(index)) {\r\n index = Math.floor(position * difference + startIndex);\r\n }\r\n if (index >= this.dataItems.length) {\r\n index = this.dataItems.length - 1;\r\n }\r\n // not good, when panning out of bounds, each time one less item gets selected\r\n //if (index >= endIndex) {\r\n //\tindex--;\r\n //}\r\n return index;\r\n };\r\n /**\r\n * Returns category based on position.\r\n *\r\n * Please note that `position` represents position within axis which may be\r\n * zoomed and not correspond to Cursor's `position`.\r\n *\r\n * To convert Cursor's `position` to Axis' `position` use `toAxisPosition()` method.\r\n *\r\n * This is a synonim of `getPositionLabel()` implemented here for consistentcy.\r\n *\r\n * @since 4.3.8\r\n * @see {@link https://www.amcharts.com/docs/v4/tutorials/tracking-cursors-position-via-api/#Tracking_Cursor_s_position} For more information about cursor tracking.\r\n * @param position Relative position on axis (0-1)\r\n * @return Position label\r\n */\r\n CategoryAxis.prototype.positionToCategory = function (position) {\r\n return this.getPositionLabel(position);\r\n };\r\n /**\r\n * Returns category based on position.\r\n *\r\n * Please note that `position` represents position within axis which may be\r\n * zoomed and not correspond to Cursor's `position`.\r\n *\r\n * To convert Cursor's `position` to Axis' `position` use `toAxisPosition()` method.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/tutorials/tracking-cursors-position-via-api/#Tracking_Cursor_s_position} For more information about cursor tracking.\r\n * @param position Relative position on axis (0-1)\r\n * @return Position label\r\n */\r\n CategoryAxis.prototype.getPositionLabel = function (position) {\r\n var dataItem = this.dataItems.getIndex(this.positionToIndex(position));\r\n if (dataItem) {\r\n return dataItem.category;\r\n }\r\n };\r\n Object.defineProperty(CategoryAxis.prototype, \"basePoint\", {\r\n /**\r\n * Coordinates of the actual axis start.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Base point\r\n */\r\n get: function () {\r\n // This makes base grid to be drawn at the end of the axis and adds extra\r\n // grid which we need to nicely close the chart.\r\n return this.renderer.positionToPoint(1);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Initializes Axis' renderer.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n CategoryAxis.prototype.initRenderer = function () {\r\n _super.prototype.initRenderer.call(this);\r\n var renderer = this.renderer;\r\n renderer.baseGrid.disabled = true;\r\n };\r\n Object.defineProperty(CategoryAxis.prototype, \"frequency\", {\r\n /**\r\n * Current frequency of labels of the axis.\r\n *\r\n * Normally it would be 1, but when labels start to be hidden due\r\n * to `minGridDistance` this read-only property will increase.\r\n *\r\n * @readonly\r\n * @since 4.2.0\r\n * @return Label frequency\r\n */\r\n get: function () {\r\n return this._frequency;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CategoryAxis.prototype, \"sortBySeries\", {\r\n /**\r\n * @return Sort categories?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"sortBySeries\");\r\n },\r\n /**\r\n * If set to a reference of [[ColumnSeries]] the categories will be sorted\r\n * by actual values.\r\n *\r\n * The categories are ordered in descending order (from highest values to\r\n * lowest). To reverse the order, use axis renderer's `inversed` setting.\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * categoryAxis.sortBySeries = series;\r\n * categoryAxis.renderer.inversed = true;\r\n * ```\r\n * ```JavaScript\r\n * categoryAxis.sortBySeries = series;\r\n * categoryAxis.renderer.inversed = true;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"xAxes\": [{\r\n * // ...\r\n * \"sortBySeries\": \"s1\",\r\n * \"renderer\": {\r\n * // ...\r\n * \"inversed\": true\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @since 4.8.7\r\n * @param value Sort categories?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"sortBySeries\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n CategoryAxis.prototype.processConfig = function (config) {\r\n if (config) {\r\n if ($type.hasValue(config.sortBySeries) && $type.isString(config.sortBySeries)) {\r\n if (this.map.hasKey(config.sortBySeries)) {\r\n config.sortBySeries = this.map.getKey(config.sortBySeries);\r\n }\r\n else {\r\n this.addDelayedMap(\"sortBySeries\", config.sortBySeries);\r\n delete config.sortBySeries;\r\n }\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n return CategoryAxis;\r\n}(Axis));\r\nexport { CategoryAxis };\r\n/**\r\n * Register class, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"CategoryAxis\"] = CategoryAxis;\r\nregistry.registeredClasses[\"CategoryAxisDataItem\"] = CategoryAxisDataItem;\r\n//# sourceMappingURL=CategoryAxis.js.map","/**\r\n * XY series module.\r\n */\r\nimport { __extends, __values } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Series, SeriesDataItem } from \"./Series\";\r\nimport { Sprite, visualProperties } from \"../../core/Sprite\";\r\nimport { ValueAxis } from \"../axes/ValueAxis\";\r\nimport { Dictionary } from \"../../core/utils/Dictionary\";\r\nimport { MutableValueDisposer } from \"../../core/utils/Disposer\";\r\nimport { XYChart } from \"../types/XYChart\";\r\nimport { CategoryAxis } from \"../axes/CategoryAxis\";\r\nimport { DateAxis } from \"../axes/DateAxis\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $time from \"../../core/utils/Time\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport * as $object from \"../../core/utils/Object\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport { options } from \"../../core/Options\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[XYSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar XYSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(XYSeriesDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function XYSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"XYSeriesDataItem\";\r\n _this.values.customValue = {};\r\n _this.values.valueX = { stack: 0 };\r\n _this.values.valueY = { stack: 0 };\r\n _this.values.openValueX = {};\r\n _this.values.openValueY = {};\r\n _this.values.dateX = {};\r\n _this.values.dateY = {};\r\n _this.values.openDateX = {};\r\n _this.values.openDateY = {};\r\n _this.setLocation(\"dateX\", 0.5, 0);\r\n _this.setLocation(\"dateY\", 0.5, 0);\r\n _this.setLocation(\"categoryX\", 0.5, 0);\r\n _this.setLocation(\"categoryY\", 0.5, 0);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(XYSeriesDataItem.prototype, \"valueX\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.values.valueX.value;\r\n },\r\n /**\r\n * Item's numeric value on X value axis.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"valueX\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeriesDataItem.prototype, \"customValue\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.values.customValue.value;\r\n },\r\n /**\r\n * Item's custom numeric value.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"customValue\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeriesDataItem.prototype, \"valueY\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.values.valueY.value;\r\n },\r\n /**\r\n * Item's numeric value on Y value axis.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"valueY\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeriesDataItem.prototype, \"dateX\", {\r\n /**\r\n * @return Date\r\n */\r\n get: function () {\r\n return this.getDate(\"dateX\");\r\n },\r\n /**\r\n * Item's date value on X date-based axis.\r\n *\r\n * @param date Date\r\n */\r\n set: function (date) {\r\n this.setDate(\"dateX\", date);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeriesDataItem.prototype, \"dateY\", {\r\n /**\r\n * @return Date\r\n */\r\n get: function () {\r\n return this.getDate(\"dateY\");\r\n },\r\n /**\r\n * Item's date value on Y date-based axis.\r\n *\r\n * @param date Date\r\n */\r\n set: function (date) {\r\n this.setDate(\"dateY\", date);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeriesDataItem.prototype, \"categoryX\", {\r\n /**\r\n * @return Category\r\n */\r\n get: function () {\r\n return this.categories.categoryX;\r\n },\r\n /**\r\n * Item's category on X category axis.\r\n *\r\n * @param category Category\r\n */\r\n set: function (category) {\r\n this.setCategory(\"categoryX\", category);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeriesDataItem.prototype, \"categoryY\", {\r\n /**\r\n * @return Category\r\n */\r\n get: function () {\r\n return this.categories.categoryY;\r\n },\r\n /**\r\n * Item's category on Y category axis.\r\n *\r\n * @param category Category\r\n */\r\n set: function (category) {\r\n this.setCategory(\"categoryY\", category);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeriesDataItem.prototype, \"openValueX\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.values.openValueX.value;\r\n },\r\n /**\r\n * Item's open numeric value on X value axis.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"openValueX\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeriesDataItem.prototype, \"openValueY\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.values.openValueY.value;\r\n },\r\n /**\r\n * Item's open numeric value on Y value axis.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"openValueY\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeriesDataItem.prototype, \"openDateX\", {\r\n /**\r\n * @return Date\r\n */\r\n get: function () {\r\n return this.getDate(\"openDateX\");\r\n },\r\n /**\r\n * Item's open date value on X date-based axis.\r\n *\r\n * @param date Date\r\n */\r\n set: function (date) {\r\n this.setDate(\"openDateX\", date);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeriesDataItem.prototype, \"openDateY\", {\r\n /**\r\n * @return Date\r\n */\r\n get: function () {\r\n return this.getDate(\"openDateY\");\r\n },\r\n /**\r\n * Item's open date value on Y date-based axis.\r\n *\r\n * @param date Date\r\n */\r\n set: function (date) {\r\n this.setDate(\"openDateY\", date);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeriesDataItem.prototype, \"openCategoryX\", {\r\n /**\r\n * @return Category\r\n */\r\n get: function () {\r\n return this.categories.openCategoryX;\r\n },\r\n /**\r\n * Item's open category on X category axis.\r\n *\r\n * @param category Category\r\n */\r\n set: function (category) {\r\n this.setCategory(\"openCategoryX\", category);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeriesDataItem.prototype, \"openCategoryY\", {\r\n /**\r\n * @return Category\r\n */\r\n get: function () {\r\n return this.categories.openCategoryY;\r\n },\r\n /**\r\n * Item's open category on Y category axis.\r\n *\r\n * @param category Category\r\n */\r\n set: function (category) {\r\n this.setCategory(\"openCategoryY\", category);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Return smallest value out of all item's value fields.\r\n *\r\n * @ignore Exclude from docs\r\n * @param fields Fields to check in\r\n * @param working Include working (temporary) values\r\n * @param stackValue If item is in a stack, the value item starts as\r\n * @return Value\r\n */\r\n XYSeriesDataItem.prototype.getMin = function (fields, working, stackValue) {\r\n var _this = this;\r\n //if (this.visible) { // dumped because of non smooth zooming\r\n var min;\r\n if (!$type.isNumber(stackValue)) {\r\n stackValue = 0;\r\n }\r\n $array.each(fields, function (field) {\r\n var value;\r\n if (working) {\r\n value = _this.getWorkingValue(field);\r\n }\r\n else {\r\n value = _this.getValue(field);\r\n }\r\n value += stackValue;\r\n if (value < min || !$type.isNumber(min)) {\r\n min = value;\r\n }\r\n });\r\n return min;\r\n //}\r\n };\r\n /**\r\n * Return biggest value out of all item's value fields.\r\n *\r\n * @ignore Exclude from docs\r\n * @param fields Fields to check in\r\n * @param working Include working (temporary) values\r\n * @param stackValue If item is in a stack, the value item starts as\r\n * @return Value\r\n */\r\n XYSeriesDataItem.prototype.getMax = function (fields, working, stackValue) {\r\n var _this = this;\r\n //if (this.visible) { // dumped because of non smooth zooming\r\n var max;\r\n if (!$type.isNumber(stackValue)) {\r\n stackValue = 0;\r\n }\r\n $array.each(fields, function (field) {\r\n var value;\r\n if (working) {\r\n value = _this.getWorkingValue(field);\r\n }\r\n else {\r\n value = _this.getValue(field);\r\n }\r\n value += stackValue;\r\n if (value > max || !$type.isNumber(max)) {\r\n max = value;\r\n }\r\n });\r\n return max;\r\n //}\r\n };\r\n return XYSeriesDataItem;\r\n}(SeriesDataItem));\r\nexport { XYSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines Series for [[XYChart]].\r\n *\r\n * @see {@link IXYSeriesEvents} for a list of available Events\r\n * @see {@link IXYSeriesAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar XYSeries = /** @class */ (function (_super) {\r\n __extends(XYSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function XYSeries() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Indicates which of the series' `dataFields` to calculate aggregate values\r\n * for.\r\n *\r\n * Available data fields for all [[XYSeries]] are:\r\n * `valueX`, `valueY`, `openValueX`, and `openValueY`.\r\n *\r\n * [[CandlestickSeries]] adds:\r\n * `lowValueX`, `lowValueY`, `highValueX`, and `highValueY`.\r\n *\r\n * Available options:\r\n * `\"open\"`, `\"close\"`, `\"low\"`, `\"high\"`, `\"average\"`, `\"sum\"`.\r\n *\r\n * Defaults are as follows:\r\n * * `valueX`: `\"close\"`\r\n * * `valueY`: `\"close\"`\r\n * * `openValueX`: `\"open\"`\r\n * * `openValueY`: `\"open\"`\r\n * * `lowValueX`: `\"low\"`\r\n * * `lowValueY`: `\"low\"`\r\n * * `highValueX`: `\"high\"`\r\n * * `highValueY`: `\"high\"`\r\n *\r\n * Is required only if data being plotted on a `DateAxis` and\r\n * its `groupData` is set to `true`.\r\n *\r\n * ```TypeScript\r\n * let dateAxis = chart.xAxes.push(new am4charts.DateAxis());\r\n * dateAxis.groupData = true;\r\n *\r\n * let valueAxis = chart.xAxes.push(new am4charts.valueAxis());\r\n *\r\n * let series = chart.series.push(new am4charts.LineSeries());\r\n * series.dataFields.dateX = \"date\";\r\n * series.dataFields.valueY = \"value\";\r\n * series.groupFields.valueY = \"average\";\r\n * ```\r\n * ```JavaScript\r\n * var dateAxis = chart.xAxes.push(new am4charts.DateAxis());\r\n * dateAxis.groupData = true;\r\n *\r\n * var valueAxis = chart.xAxes.push(new am4charts.valueAxis());\r\n *\r\n * var series = chart.series.push(new am4charts.LineSeries());\r\n * series.dataFields.dateX = \"date\";\r\n * series.dataFields.valueY = \"value\";\r\n * series.groupFields.valueY = \"average\";\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"xAxes\": [{\r\n * \"type\": \"DateAxis\",\r\n * \"groupData\": true\r\n * }],\r\n * \"yAxes\": [{\r\n * \"type\": \"ValueAxis\"\r\n * }],\r\n * \"series\": [{\r\n * \"type\": \"LineSeries\",\r\n * \"dataFields\": {\r\n * \"dateX\": \"date\",\r\n * \"valueY\": \"value\"\r\n * },\r\n * \"groupFields\": {\r\n * \"valueY\": \"average\"\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * The above setup will ensure, that if there are many data items within\r\n * selected range, they will be grouped into aggregated data points, using\r\n * average value of all the values.\r\n *\r\n * For example if we have 2 years worth of daily data (~700 data items), when\r\n * fully zoomed out, the chart would show ~100 data items instead: one for\r\n * each week in those two years.\r\n *\r\n * Grouping will occur automatically, based on current selection range, and\r\n * will change dynamically when user zooms in/out the chart.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/date-axis/#Dynamic_data_item_grouping} for more information about dynamic data item grouping.\r\n * @since 4.7.0\r\n */\r\n _this.groupFields = {};\r\n /**\r\n * X axis the series is attached to.\r\n */\r\n _this._xAxis = new MutableValueDisposer();\r\n /**\r\n * Y axis the series is attached to.\r\n */\r\n _this._yAxis = new MutableValueDisposer();\r\n /**\r\n * [_xValueFields description]\r\n *\r\n * @todo Description\r\n */\r\n _this._xValueFields = [];\r\n /**\r\n * [_yValueFields description]\r\n *\r\n * @todo Description\r\n */\r\n _this._yValueFields = [];\r\n /**\r\n * @ignore\r\n */\r\n _this._baseInterval = {};\r\n /**\r\n * @ignore\r\n */\r\n _this.dataGrouped = false;\r\n /**\r\n * @ignore\r\n */\r\n _this.usesShowFields = false;\r\n /**\r\n * @ignore\r\n */\r\n _this._dataSetChanged = false;\r\n _this._maxxX = 100000;\r\n _this._maxxY = 100000;\r\n _this._propertiesChanged = false;\r\n /**\r\n * @ignore\r\n */\r\n _this.outOfRange = false;\r\n _this.className = \"XYSeries\";\r\n _this.isMeasured = false;\r\n _this.groupFields.valueX = \"close\";\r\n _this.groupFields.valueY = \"close\";\r\n _this.groupFields.customValue = \"close\";\r\n _this.groupFields.openValueX = \"open\";\r\n _this.groupFields.openValueY = \"open\";\r\n _this.cursorTooltipEnabled = true;\r\n _this.cursorHoverEnabled = true;\r\n _this.excludeFromTotal = false;\r\n _this.mainContainer.mask = new Sprite();\r\n _this.mainContainer.mask.setElement(_this.paper.add(\"path\"));\r\n _this.stacked = false;\r\n _this.snapTooltip = false;\r\n _this._showBullets = false;\r\n _this.tooltip.pointerOrientation = \"horizontal\";\r\n _this.properties.stackToNegative = true;\r\n _this.hideTooltipWhileZooming = true;\r\n _this.setPropertyValue(\"maskBullets\", true);\r\n _this.tooltip.events.on(\"hidden\", function () {\r\n _this.returnBulletDefaultState();\r\n }, undefined, false);\r\n _this._disposers.push(_this._xAxis);\r\n _this._disposers.push(_this._yAxis);\r\n _this.observe(visualProperties, function () {\r\n if (_this.inited) {\r\n _this._propertiesChanged = true;\r\n if (_this.legendDataItem) {\r\n _this.legendDataItem.childrenCreated = false;\r\n }\r\n if (_this.chart && _this.chart.legend) {\r\n _this.chart.legend.invalidateDataItems();\r\n }\r\n _this.invalidate();\r\n }\r\n }, undefined, false);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n XYSeries.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"X/Y Series\");\r\n }\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n XYSeries.prototype.createDataItem = function () {\r\n return new XYSeriesDataItem();\r\n };\r\n /**\r\n * @ignore\r\n */\r\n XYSeries.prototype.resetExtremes = function () {\r\n this._tmin.clear();\r\n this._tmax.clear();\r\n this._smin.clear();\r\n this._smax.clear();\r\n };\r\n /**\r\n * @ignore\r\n */\r\n XYSeries.prototype.dataChangeUpdate = function () {\r\n this.dataGrouped = false;\r\n this._baseInterval = {};\r\n this._currentDataSetId = \"\";\r\n this.resetExtremes();\r\n if (this.xAxis) {\r\n this.xAxis.seriesDataChangeUpdate(this);\r\n }\r\n if (this.yAxis) {\r\n this.yAxis.seriesDataChangeUpdate(this);\r\n }\r\n };\r\n /**\r\n * (Re)validates the series' data.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYSeries.prototype.validateData = function () {\r\n this._baseInterval = {};\r\n var dataFields = this.dataFields;\r\n if (dataFields.valueYShow || dataFields.openValueXShow || dataFields.openValueXShow || dataFields.openValueYShow) {\r\n this.usesShowFields = true;\r\n }\r\n else {\r\n this.usesShowFields = false;\r\n }\r\n this.defineFields();\r\n if (this.data.length > 0) {\r\n this.dataChangeUpdate();\r\n }\r\n _super.prototype.validateData.call(this);\r\n this.updateItemReaderText();\r\n if (this.chart) {\r\n if (!$type.hasValue(this.dataFields[this._xField]) || !$type.hasValue(this.dataFields[this._yField])) {\r\n throw Error(\"Data fields for series \\\"\" + (this.name ? this.name : this.uid) + \"\\\" are not properly defined.\");\r\n }\r\n }\r\n // 4.7.21 solves 51540\r\n if (this.inited && this.isHidden) {\r\n this.hide(0);\r\n }\r\n this.dataGrouped = false;\r\n };\r\n /**\r\n * Processes data item.\r\n *\r\n * @param dataItem Data item\r\n * @param dataContext Raw data\r\n * @param index Index of the data item\r\n */\r\n XYSeries.prototype.processDataItem = function (dataItem, dataContext) {\r\n try {\r\n _super.prototype.processDataItem.call(this, dataItem, dataContext);\r\n this.xAxis.processSeriesDataItem(dataItem, \"X\");\r\n this.yAxis.processSeriesDataItem(dataItem, \"Y\");\r\n this.setInitialWorkingValues(dataItem);\r\n }\r\n catch (e) {\r\n if (this._chart) {\r\n this._chart.raiseCriticalError(e);\r\n }\r\n }\r\n };\r\n /**\r\n *\r\n * When validating raw data, instead of processing data item, we update it\r\n *\r\n * @ignore Exclude from docs\r\n * @param item\r\n */\r\n XYSeries.prototype.updateDataItem = function (dataItem) {\r\n _super.prototype.updateDataItem.call(this, dataItem);\r\n //dataItem.events.disable();\r\n this.xAxis.processSeriesDataItem(dataItem, \"X\");\r\n this.yAxis.processSeriesDataItem(dataItem, \"Y\");\r\n //dataItem.events.enable();\t\t\r\n };\r\n /**\r\n * Inits data item's working values.\r\n *\r\n * @param dataItem Data item\r\n * @param index Data item's index\r\n */\r\n XYSeries.prototype.setInitialWorkingValues = function (dataItem) {\r\n };\r\n /**\r\n * @ignore\r\n */\r\n XYSeries.prototype.disposeData = function () {\r\n _super.prototype.disposeData.call(this);\r\n var xAxis = this.xAxis;\r\n var yAxis = this.yAxis;\r\n if (xAxis) {\r\n var dataItemsX = this.dataItemsByAxis.getKey(xAxis.uid);\r\n if (dataItemsX) {\r\n dataItemsX.clear();\r\n }\r\n if (xAxis instanceof CategoryAxis) {\r\n this.clearCatAxis(xAxis);\r\n }\r\n }\r\n if (yAxis) {\r\n var dataItemsY = this.dataItemsByAxis.getKey(yAxis.uid);\r\n if (dataItemsY) {\r\n dataItemsY.clear();\r\n }\r\n if (yAxis instanceof CategoryAxis) {\r\n this.clearCatAxis(yAxis);\r\n }\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n XYSeries.prototype.clearCatAxis = function (axis) {\r\n var uid = this.uid;\r\n axis.dataItems.each(function (dataItem) {\r\n if (dataItem.seriesDataItems[uid]) {\r\n dataItem.seriesDataItems[uid] = [];\r\n }\r\n });\r\n };\r\n /**\r\n * Sets up which data fields to use for data access.\r\n */\r\n XYSeries.prototype.defineFields = function () {\r\n var xAxis = this.xAxis;\r\n var yAxis = this.yAxis;\r\n if (xAxis && yAxis) {\r\n var xAxisFieldName = xAxis.axisFieldName;\r\n var xField = (xAxisFieldName + \"X\");\r\n var xOpenField = (\"open\" + $utils.capitalize(xAxisFieldName) + \"X\");\r\n var yAxisFieldName = yAxis.axisFieldName;\r\n var yField = (yAxisFieldName + \"Y\");\r\n var yOpenField = (\"open\" + $utils.capitalize(yAxisFieldName) + \"Y\");\r\n this._xField = xField;\r\n this._yField = yField;\r\n if (this.dataFields[xOpenField]) {\r\n this._xOpenField = xOpenField;\r\n }\r\n if (this.dataFields[yOpenField]) {\r\n this._yOpenField = yOpenField;\r\n }\r\n if (!this.dataFields[yOpenField] && this.baseAxis == yAxis) {\r\n this._yOpenField = yField;\r\n }\r\n if (!this.dataFields[xOpenField] && this.baseAxis == xAxis) {\r\n this._xOpenField = xField;\r\n }\r\n if (this.stacked && this.baseAxis == xAxis) {\r\n this._xOpenField = xField;\r\n }\r\n if (this.stacked && this.baseAxis == yAxis) {\r\n this._yOpenField = yField;\r\n }\r\n if ((xAxis instanceof CategoryAxis) && (yAxis instanceof CategoryAxis)) {\r\n if (!this._yOpenField) {\r\n this._yOpenField = yField;\r\n }\r\n }\r\n this._xValueFields = [];\r\n this._yValueFields = [];\r\n this.addValueField(xAxis, this._xValueFields, this._xField);\r\n this.addValueField(xAxis, this._xValueFields, this._xOpenField);\r\n this.addValueField(yAxis, this._yValueFields, this._yField);\r\n this.addValueField(yAxis, this._yValueFields, this._yOpenField);\r\n }\r\n };\r\n /**\r\n * [axis description]\r\n *\r\n * @todo Description\r\n * @param axis Axis\r\n * @param fields Fields (?)\r\n * @param field Field\r\n */\r\n XYSeries.prototype.addValueField = function (axis, fields, field) {\r\n if (axis instanceof ValueAxis) {\r\n if ($type.hasValue(this.dataFields[field]) && fields.indexOf(field) == -1) {\r\n fields.push(field);\r\n }\r\n }\r\n };\r\n /**\r\n * Sets category field from the category axis.\r\n *\r\n * User might set field for category axis only, but not for series. In such\r\n * case, we take field value from axis and set it for series.\r\n *\r\n * @param field Field\r\n * @param axis Axis\r\n */\r\n XYSeries.prototype.setCategoryAxisField = function (field, axis) {\r\n if (!$type.hasValue(this.dataFields[field])) {\r\n this.dataFields[field] = axis.dataFields.category;\r\n }\r\n };\r\n /**\r\n * Sets date field from the date axis.\r\n *\r\n * User might set field for category axis only, but not for series. In such\r\n * case, we take field value from axis and set it for series.\r\n *\r\n * @param field Field\r\n * @param axis Axis\r\n */\r\n XYSeries.prototype.setDateAxisField = function (field, axis) {\r\n if (!$type.hasValue(this.dataFields[field])) {\r\n this.dataFields[field] = axis.dataFields.date;\r\n }\r\n };\r\n /**\r\n * Performs after-draw tasks, e.g. creates masks.\r\n */\r\n XYSeries.prototype.afterDraw = function () {\r\n _super.prototype.afterDraw.call(this);\r\n this.createMask();\r\n };\r\n /**\r\n * Create a mask for the series.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYSeries.prototype.createMask = function () {\r\n // this mask from which we cut out ranges. does not work well if ranges overlap.\r\n if (this.mainContainer.mask) {\r\n var path_1 = this.getMaskPath();\r\n // @todo: this approach won't work well on circluar or other non x/y axes\r\n $iter.each(this.axisRanges.iterator(), function (range) {\r\n if (range.axisFill.fillPath) {\r\n range.axisFill.validate();\r\n path_1 += range.axisFill.fillPath;\r\n }\r\n });\r\n this.mainContainer.mask.path = path_1;\r\n }\r\n };\r\n /**\r\n * Returns an SVG path to use as series mask.\r\n *\r\n * @return SVG path\r\n */\r\n XYSeries.prototype.getMaskPath = function () {\r\n if (this.xAxis && this.yAxis) {\r\n return $path.rectToPath({\r\n x: 0,\r\n y: 0,\r\n width: this.xAxis.axisLength,\r\n height: this.yAxis.axisLength\r\n });\r\n }\r\n return \"\";\r\n };\r\n /**\r\n * Returns axis data field to use.\r\n *\r\n * @param axis Axis\r\n * @return Field name\r\n */\r\n XYSeries.prototype.getAxisField = function (axis) {\r\n if (axis == this.xAxis) {\r\n return this.xField;\r\n }\r\n if (axis == this.yAxis) {\r\n return this.yField;\r\n }\r\n };\r\n /**\r\n * Validates data items.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYSeries.prototype.validateDataItems = function () {\r\n var chart = this.chart;\r\n if (chart) {\r\n this._maxxX = $math.max(100000, chart.plotContainer.maxWidth * 2);\r\n this._maxxY = $math.max(100000, chart.plotContainer.maxHeight * 2);\r\n }\r\n // this helps date axis to check which baseInterval we should use\r\n var xAxis = this.xAxis;\r\n var yAxis = this.yAxis;\r\n if (xAxis && yAxis) {\r\n xAxis.updateAxisBySeries();\r\n yAxis.updateAxisBySeries();\r\n }\r\n _super.prototype.validateDataItems.call(this);\r\n if (xAxis && yAxis) {\r\n xAxis.postProcessSeriesDataItems(this);\r\n yAxis.postProcessSeriesDataItems(this);\r\n }\r\n };\r\n /**\r\n * Validates data range.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYSeries.prototype.validateDataRange = function () {\r\n var xAxis = this.xAxis;\r\n var yAxis = this.yAxis;\r\n if (xAxis && yAxis) {\r\n if (xAxis.dataRangeInvalid) {\r\n xAxis.validateDataRange();\r\n }\r\n if (yAxis.dataRangeInvalid) {\r\n yAxis.validateDataRange();\r\n }\r\n }\r\n _super.prototype.validateDataRange.call(this);\r\n };\r\n /**\r\n * (Re)validates the whole series, effectively causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYSeries.prototype.validate = function () {\r\n var xAxis = this.xAxis;\r\n var yAxis = this.yAxis;\r\n if (xAxis && yAxis) {\r\n if (xAxis.invalid) {\r\n xAxis.validate();\r\n }\r\n if (yAxis.invalid) {\r\n yAxis.validate();\r\n }\r\n this.y = yAxis.pixelY;\r\n this.x = xAxis.pixelX;\r\n this._showBullets = true;\r\n var minBulletDistance = this.minBulletDistance;\r\n if ($type.isNumber(minBulletDistance)) {\r\n if (this.baseAxis.axisLength / (this.endIndex - this.startIndex) < minBulletDistance) {\r\n this._showBullets = false;\r\n }\r\n }\r\n }\r\n this.updateTooltip();\r\n if ((xAxis instanceof DateAxis && xAxis.groupData && !this.dataGrouped) || (yAxis instanceof DateAxis && yAxis.groupData && !this.dataGrouped)) {\r\n return;\r\n }\r\n _super.prototype.validate.call(this);\r\n var chart = this.chart;\r\n var maskBullets = this.maskBullets;\r\n if (chart && maskBullets) {\r\n if (chart.className == \"XYChart\") {\r\n if (chart.leftAxesContainer.layout == \"vertical\" || chart.rightAxesContainer.layout == \"vertical\") {\r\n if (this.yAxis) {\r\n this.bulletsContainer.mask = this.yAxis.renderer.gridContainer;\r\n }\r\n else {\r\n this.bulletsContainer.mask = undefined;\r\n }\r\n }\r\n if (chart.topAxesContainer.layout == \"horizontal\" || chart.bottomAxesContainer.layout == \"horizontal\") {\r\n if (this.xAxis) {\r\n this.bulletsContainer.mask = this.xAxis.renderer.gridContainer;\r\n }\r\n else {\r\n this.bulletsContainer.mask = undefined;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n Object.defineProperty(XYSeries.prototype, \"xAxis\", {\r\n /**\r\n * @return Axis\r\n */\r\n get: function () {\r\n if (this.chart) {\r\n if (!this._xAxis.get()) {\r\n var axis = this.chart.xAxes.getIndex(0);\r\n if (!axis) {\r\n throw Error(\"There are no X axes on chart.\");\r\n }\r\n this.xAxis = axis;\r\n }\r\n return this._xAxis.get();\r\n }\r\n },\r\n /**\r\n * X axis the series is attached to.\r\n *\r\n * @param axis Axis\r\n */\r\n set: function (axis) {\r\n this.setXAxis(axis);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n XYSeries.prototype.setXAxis = function (axis) {\r\n var oldAxis = this._xAxis.get();\r\n if (oldAxis != axis) {\r\n if (oldAxis) {\r\n this.dataItemsByAxis.removeKey(oldAxis.uid);\r\n // TODO why is this here ?\r\n this._xAxis.dispose();\r\n // temp @todo: why it is not disposed?\r\n oldAxis.series.removeValue(this);\r\n }\r\n this._xAxis.set(axis, axis.registerSeries(this));\r\n this.dataItemsByAxis.setKey(axis.uid, new Dictionary());\r\n this.invalidateData();\r\n }\r\n };\r\n Object.defineProperty(XYSeries.prototype, \"yAxis\", {\r\n /**\r\n * @return Axis\r\n */\r\n get: function () {\r\n if (this.chart) {\r\n if (!this._yAxis.get()) {\r\n var axis = this.chart.yAxes.getIndex(0);\r\n if (!axis) {\r\n throw Error(\"There are no Y axes on chart.\");\r\n }\r\n this.yAxis = axis;\r\n }\r\n return this._yAxis.get();\r\n }\r\n },\r\n /**\r\n * Y axis the series is attached to.\r\n *\r\n * @param axis Axis\r\n */\r\n set: function (axis) {\r\n this.setYAxis(axis);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n XYSeries.prototype.setYAxis = function (axis) {\r\n var oldAxis = this._yAxis.get();\r\n if (oldAxis != axis) {\r\n if (oldAxis) {\r\n this.dataItemsByAxis.removeKey(oldAxis.uid);\r\n // TODO why is this here ?\r\n this._yAxis.dispose();\r\n // temp @todo: why it is not disposed?\r\n oldAxis.series.removeValue(this);\r\n }\r\n this._yAxis.set(axis, axis.registerSeries(this));\r\n if (axis.chart instanceof XYChart) {\r\n axis.chart.handleYAxisSet(this);\r\n }\r\n this.dataItemsByAxis.setKey(axis.uid, new Dictionary());\r\n this.invalidateData();\r\n }\r\n };\r\n Object.defineProperty(XYSeries.prototype, \"baseAxis\", {\r\n /**\r\n * @return Axis\r\n */\r\n get: function () {\r\n var xAxis = this.xAxis;\r\n var yAxis = this.yAxis;\r\n if (!this._baseAxis && xAxis && yAxis) {\r\n if (yAxis instanceof DateAxis) {\r\n this._baseAxis = yAxis;\r\n }\r\n if (xAxis instanceof DateAxis) {\r\n this._baseAxis = xAxis;\r\n }\r\n if (yAxis instanceof CategoryAxis) {\r\n this._baseAxis = yAxis;\r\n }\r\n if (xAxis instanceof CategoryAxis) {\r\n this._baseAxis = xAxis;\r\n }\r\n if (!this._baseAxis) {\r\n this._baseAxis = xAxis;\r\n }\r\n }\r\n return this._baseAxis;\r\n },\r\n /**\r\n * The main (base) axis.\r\n *\r\n * This is the axis that series fills will go to, or grow animations will\r\n * happen from.\r\n *\r\n * @param value Axis\r\n */\r\n set: function (value) {\r\n if (this._baseAxis != value) {\r\n this._baseAxis = value;\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Adds one or several (array) of data items to the existing data.\r\n *\r\n * @param rawDataItem One or many raw data item objects\r\n */\r\n XYSeries.prototype.addData = function (rawDataItem, removeCount, skipRaw) {\r\n _super.prototype.addData.call(this, rawDataItem, removeCount, skipRaw);\r\n var scrollbarSeries = this.scrollbarSeries;\r\n if (scrollbarSeries) {\r\n this.scrollbarSeries.addData(rawDataItem, removeCount, true);\r\n this.scrollbarSeries._parseDataFrom = this._parseDataFrom;\r\n }\r\n };\r\n XYSeries.prototype.setData = function (value) {\r\n _super.prototype.setData.call(this, value);\r\n if (this.scrollbarSeries) {\r\n this.scrollbarSeries.setData(value);\r\n }\r\n };\r\n /**\r\n * Makes the chart use particular data set.\r\n *\r\n * If `id` is not provided or there is no such data set, main data will be\r\n * used.\r\n *\r\n * @ignore\r\n * @since 4.7.0\r\n * @param id Data set id\r\n */\r\n XYSeries.prototype.setDataSet = function (id) {\r\n var changed = _super.prototype.setDataSet.call(this, id);\r\n if (changed) {\r\n this._dataSetChanged = true;\r\n var dataItems = this.dataItems;\r\n this.resetExtremes();\r\n if (dataItems && dataItems.length > 0) {\r\n var xAxis = this.xAxis;\r\n var yAxis = this.yAxis;\r\n this._prevStartIndex = undefined;\r\n this._prevEndIndex = undefined;\r\n this._startIndex = undefined;\r\n this._endIndex = undefined;\r\n if (!this.appeared) {\r\n this.processValues(false); // this will slow down!\r\n }\r\n if (xAxis instanceof DateAxis && xAxis == this.baseAxis) {\r\n this._tmin.setKey(xAxis.uid, dataItems.getIndex(0).dateX.getTime());\r\n this._tmax.setKey(xAxis.uid, dataItems.getIndex(dataItems.length - 1).dateX.getTime());\r\n this.dispatch(\"extremeschanged\");\r\n }\r\n if (yAxis instanceof DateAxis && yAxis == this.baseAxis) {\r\n this._tmin.setKey(yAxis.uid, dataItems.getIndex(0).dateY.getTime());\r\n this._tmax.setKey(yAxis.uid, dataItems.getIndex(dataItems.length - 1).dateY.getTime());\r\n this.dispatch(\"extremeschanged\");\r\n }\r\n }\r\n }\r\n return changed;\r\n };\r\n /**\r\n * Processes values after data items' were added.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItems Data items\r\n */\r\n XYSeries.prototype.processValues = function (working) {\r\n _super.prototype.processValues.call(this, working);\r\n var xAxis = this.xAxis;\r\n var yAxis = this.yAxis;\r\n if (!xAxis || !yAxis) {\r\n return;\r\n }\r\n var dataItems = this.dataItems;\r\n var minX = Infinity;\r\n var maxX = -Infinity;\r\n var minY = Infinity;\r\n var maxY = -Infinity;\r\n var startIndex = this.startIndex;\r\n var endIndex = this.endIndex;\r\n var workingStartIndex = startIndex;\r\n var workingEndIndex = endIndex;\r\n if (!working) {\r\n startIndex = 0;\r\n endIndex = this.dataItems.length;\r\n }\r\n for (var i = startIndex; i < endIndex; i++) {\r\n var dataItem = dataItems.getIndex(i);\r\n this.getStackValue(dataItem, working);\r\n var stackX = dataItem.getValue(\"valueX\", \"stack\");\r\n var stackY = dataItem.getValue(\"valueY\", \"stack\");\r\n minX = $math.min(dataItem.getMin(this._xValueFields, working, stackX), minX);\r\n minY = $math.min(dataItem.getMin(this._yValueFields, working, stackY), minY);\r\n maxX = $math.max(dataItem.getMax(this._xValueFields, working, stackX), maxX);\r\n maxY = $math.max(dataItem.getMax(this._yValueFields, working, stackY), maxY);\r\n // if it's stacked, pay attention to stack value\r\n if (this.stacked) {\r\n if (this.baseAxis == xAxis) {\r\n if (stackY < minY) {\r\n minY = stackY;\r\n }\r\n if (stackY > maxY) {\r\n maxY = stackY;\r\n }\r\n }\r\n if (this.baseAxis == yAxis) {\r\n if (stackX < minX) {\r\n minX = stackX;\r\n }\r\n if (stackX > maxX) {\r\n maxX = stackX;\r\n }\r\n }\r\n }\r\n }\r\n // this is mainly for value axis to calculate total and perecent.total of each series category\r\n xAxis.processSeriesDataItems();\r\n yAxis.processSeriesDataItems();\r\n var xAxisId = xAxis.uid;\r\n var yAxisId = yAxis.uid;\r\n if (this.xAxis instanceof ValueAxis && (minX == Infinity || maxX == -Infinity)) {\r\n this._smin.setKey(xAxisId, undefined);\r\n this._smax.setKey(xAxisId, undefined);\r\n this.dispatchImmediately(\"selectionextremeschanged\");\r\n return;\r\n }\r\n if (this.yAxis instanceof ValueAxis && (minY == Infinity || maxY == -Infinity)) {\r\n this._smin.setKey(yAxisId, undefined);\r\n this._smax.setKey(yAxisId, undefined);\r\n this.dispatchImmediately(\"selectionextremeschanged\");\r\n return;\r\n }\r\n if (!working) {\r\n if (this._tmin.getKey(xAxisId) != minX || this._tmax.getKey(xAxisId) != maxX || this._tmin.getKey(yAxisId) != minY || this._tmax.getKey(yAxisId) != maxY) {\r\n this._tmin.setKey(xAxisId, minX);\r\n this._tmax.setKey(xAxisId, maxX);\r\n this._tmin.setKey(yAxisId, minY);\r\n this._tmax.setKey(yAxisId, maxY);\r\n var stackedSeries = this.stackedSeries;\r\n if (stackedSeries) {\r\n if (stackedSeries.isDisposed()) {\r\n this.stackedSeries = undefined;\r\n }\r\n else {\r\n stackedSeries.processValues(false);\r\n }\r\n }\r\n this.dispatchImmediately(\"extremeschanged\");\r\n }\r\n }\r\n if (startIndex != workingStartIndex || endIndex != workingEndIndex) {\r\n minX = Infinity;\r\n maxX = -Infinity;\r\n minY = Infinity;\r\n maxY = -Infinity;\r\n for (var i = workingStartIndex; i < workingEndIndex; i++) {\r\n var dataItem = dataItems.getIndex(i);\r\n this.getStackValue(dataItem, working);\r\n var stackX = dataItem.getValue(\"valueX\", \"stack\");\r\n var stackY = dataItem.getValue(\"valueY\", \"stack\");\r\n minX = $math.min(dataItem.getMin(this._xValueFields, working, stackX), minX);\r\n minY = $math.min(dataItem.getMin(this._yValueFields, working, stackY), minY);\r\n maxX = $math.max(dataItem.getMax(this._xValueFields, working, stackX), maxX);\r\n maxY = $math.max(dataItem.getMax(this._yValueFields, working, stackY), maxY);\r\n // if it's stacked, pay attention to stack value\r\n if (this.stacked) {\r\n if (this.baseAxis == xAxis) {\r\n if (stackY < minY) {\r\n minY = stackY;\r\n }\r\n if (stackY > maxY) {\r\n maxY = stackY;\r\n }\r\n }\r\n if (this.baseAxis == yAxis) {\r\n if (stackX < minX) {\r\n minX = stackX;\r\n }\r\n if (stackX > maxX) {\r\n maxX = stackX;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (this.xAxis instanceof ValueAxis && (minX == Infinity || maxX == -Infinity)) {\r\n this._smin.setKey(xAxisId, undefined);\r\n this._smax.setKey(xAxisId, undefined);\r\n this.dispatchImmediately(\"selectionextremeschanged\");\r\n return;\r\n }\r\n if (this.yAxis instanceof ValueAxis && (minY == Infinity || maxY == -Infinity)) {\r\n this._smin.setKey(yAxisId, undefined);\r\n this._smax.setKey(yAxisId, undefined);\r\n this.dispatchImmediately(\"selectionextremeschanged\");\r\n return;\r\n }\r\n if (this._smin.getKey(xAxisId) != minX || this._smax.getKey(xAxisId) != maxX || this._smin.getKey(yAxisId) != minY || this._smax.getKey(yAxisId) != maxY) {\r\n this._smin.setKey(xAxisId, minX);\r\n this._smax.setKey(xAxisId, maxX);\r\n this._smin.setKey(yAxisId, minY);\r\n this._smax.setKey(yAxisId, maxY);\r\n if (this.appeared || this.start != 0 || this.end != 1 || this.dataItems != this.mainDataSet) {\r\n /// new, helps to handle issues with change percent\r\n var changed = false;\r\n if (yAxis instanceof ValueAxis && !(yAxis instanceof DateAxis)) {\r\n var tmin = this._tmin.getKey(yAxisId);\r\n if (!$type.isNumber(tmin) || ((this.usesShowFields || this._dataSetChanged || (xAxis instanceof DateAxis && xAxis.groupData && this.isShowing)) && minY < tmin) || (this.stackedSeries && !this.isHidden)) {\r\n this._tmin.setKey(yAxisId, minY);\r\n changed = true;\r\n }\r\n var tmax = this._tmax.getKey(yAxisId);\r\n if (!$type.isNumber(tmax) || ((this.usesShowFields || this._dataSetChanged || (xAxis instanceof DateAxis && xAxis.groupData && this.isShowing)) && maxY > tmax) || (this.stackedSeries && !this.isHidden)) {\r\n this._tmax.setKey(yAxisId, maxY);\r\n changed = true;\r\n }\r\n }\r\n if (xAxis instanceof ValueAxis && !(xAxis instanceof DateAxis)) {\r\n var tmin = this._tmin.getKey(xAxisId);\r\n if (!$type.isNumber(tmin) || ((this.usesShowFields || this._dataSetChanged || (yAxis instanceof DateAxis && yAxis.groupData && this.isShowing)) && minX < tmin) || (this.stackedSeries && !this.isHidden)) {\r\n this._tmin.setKey(xAxisId, minX);\r\n changed = true;\r\n }\r\n var tmax = this._tmax.getKey(xAxisId);\r\n if (!$type.isNumber(tmax) || ((this.usesShowFields || this._dataSetChanged || (yAxis instanceof DateAxis && yAxis.groupData && this.isShowing)) && maxX > tmax) || (this.stackedSeries && !this.isHidden)) {\r\n this._tmax.setKey(xAxisId, maxX);\r\n changed = true;\r\n }\r\n }\r\n if (changed) {\r\n this.dispatchImmediately(\"extremeschanged\");\r\n }\r\n if (this.start == 0 && this.end == 1) {\r\n // yes, its ok. otherwise min/max won't be updated when zooming out\r\n this._dataSetChanged = false;\r\n }\r\n this.dispatchImmediately(\"selectionextremeschanged\");\r\n }\r\n }\r\n if (!working && this.stacked) {\r\n this.processValues(true);\r\n }\r\n };\r\n /**\r\n * Hides element's [[Tooltip]].\r\n *\r\n * @see {@link Tooltip}\r\n */\r\n XYSeries.prototype.hideTooltip = function (duration) {\r\n _super.prototype.hideTooltip.call(this, duration);\r\n this.returnBulletDefaultState();\r\n this._prevTooltipDataItem = undefined;\r\n };\r\n /**\r\n * Shows series tooltip at specific position.\r\n *\r\n * @param xPosition X\r\n * @param yPosition Y\r\n */\r\n XYSeries.prototype.showTooltipAtPosition = function (xPosition, yPosition) {\r\n var dataItem;\r\n if (this.visible && !this.isHiding && !this.isShowing) {\r\n var xAxis = this._xAxis.get();\r\n var yAxis = this._yAxis.get();\r\n if (xAxis == this.baseAxis) {\r\n dataItem = xAxis.getSeriesDataItem(this, xAxis.toAxisPosition(xPosition), this.snapTooltip);\r\n }\r\n if (yAxis == this.baseAxis) {\r\n dataItem = yAxis.getSeriesDataItem(this, yAxis.toAxisPosition(yPosition), this.snapTooltip);\r\n }\r\n var point = this.showTooltipAtDataItem(dataItem);\r\n if (point) {\r\n return point;\r\n }\r\n // so that if tooltip is shown on columns or bullets for it not to be hidden\r\n if (!this.tooltipText && !this.tooltipHTML) {\r\n return;\r\n }\r\n }\r\n this.hideTooltip();\r\n };\r\n XYSeries.prototype.getAdjustedXLocation = function (dataItem, field, bulletLocationX) {\r\n return dataItem.locations[field];\r\n };\r\n XYSeries.prototype.getAdjustedYLocation = function (dataItem, field, bulletLocationY) {\r\n return dataItem.locations[field];\r\n };\r\n /**\r\n * Shows series tooltip at specific dataItem.\r\n *\r\n * @param dataItem\r\n */\r\n XYSeries.prototype.showTooltipAtDataItem = function (dataItem) {\r\n var e_1, _a;\r\n var cursor = this.chart.cursor;\r\n if (cursor && cursor.hideSeriesTooltipsOnSelection && cursor.selection.visible && cursor.downPoint) {\r\n this.hideTooltip();\r\n return;\r\n }\r\n this.returnBulletDefaultState(dataItem);\r\n if (dataItem && dataItem.visible) {\r\n this.updateLegendValue(dataItem);\r\n if (this.cursorTooltipEnabled) {\r\n this.tooltipDataItem = dataItem;\r\n // todo: add tooltipXField and tooltipYField.\r\n var tooltipXField = this.tooltipXField;\r\n var tooltipYField = this.tooltipYField;\r\n if ($type.hasValue(dataItem[tooltipXField]) && $type.hasValue(dataItem[tooltipYField])) {\r\n var tooltipPoint = this.getPoint(dataItem, tooltipXField, tooltipYField, this.getAdjustedXLocation(dataItem, tooltipXField), this.getAdjustedYLocation(dataItem, tooltipYField));\r\n if (tooltipPoint) {\r\n if (this.chart.className == \"XYChart\" && (tooltipPoint.y < -1 || tooltipPoint.y > this.yAxis.pixelHeight + 1 || tooltipPoint.x < -1 || tooltipPoint.x > this.xAxis.pixelWidth + 1)) {\r\n // void\r\n }\r\n else {\r\n this.tooltipX = tooltipPoint.x;\r\n this.tooltipY = tooltipPoint.y;\r\n if (this._prevTooltipDataItem != dataItem) {\r\n this.dispatchImmediately(\"tooltipshownat\", {\r\n type: \"tooltipshownat\",\r\n target: this,\r\n dataItem: dataItem\r\n });\r\n this._prevTooltipDataItem = dataItem;\r\n }\r\n if (this.cursorHoverEnabled) {\r\n try {\r\n for (var _b = __values(dataItem.sprites), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var sprite = _c.value;\r\n if (!sprite.parent.visible || sprite.isHidden || sprite.__disabled || sprite.disabled || sprite.isHiding) {\r\n }\r\n else {\r\n if (!sprite.interactions.isRealHover) {\r\n sprite.dispatchImmediately(\"over\");\r\n sprite.interactions.isRealHover = true;\r\n }\r\n sprite.isHover = true;\r\n }\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n }\r\n if (this.showTooltip()) {\r\n return $utils.spritePointToSvg({ x: tooltipPoint.x, y: tooltipPoint.y }, this);\r\n }\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n this.updateLegendValue(dataItem, true);\r\n }\r\n };\r\n /**\r\n * Returns default state to bullets when tooltip is shown at some other data\r\n * item or hidden\r\n */\r\n XYSeries.prototype.returnBulletDefaultState = function (dataItem) {\r\n var e_2, _a;\r\n if (this._prevTooltipDataItem && this._prevTooltipDataItem != dataItem) {\r\n try {\r\n for (var _b = __values(this._prevTooltipDataItem.sprites), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var sprite = _c.value;\r\n if (!sprite.isDisposed()) {\r\n var fireEvent = sprite.interactions.isRealHover;\r\n sprite.isHover = false;\r\n if (fireEvent) {\r\n sprite.dispatchImmediately(\"out\");\r\n }\r\n }\r\n else {\r\n this._prevTooltipDataItem = undefined;\r\n }\r\n }\r\n }\r\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\r\n finally {\r\n try {\r\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_2) throw e_2.error; }\r\n }\r\n }\r\n };\r\n XYSeries.prototype.shouldCreateBullet = function (dataItem, bulletTemplate) {\r\n // use series xField/yField if bullet doesn't have fields set\r\n var xField = bulletTemplate.xField;\r\n if (!$type.hasValue(xField)) {\r\n xField = this.xField;\r\n }\r\n var yField = bulletTemplate.yField;\r\n if (!$type.hasValue(yField)) {\r\n yField = this.yField;\r\n }\r\n if ((this.xAxis instanceof ValueAxis && !dataItem.hasValue([xField])) || (this.yAxis instanceof ValueAxis && !dataItem.hasValue([yField]))) {\r\n return false;\r\n }\r\n if (bulletTemplate.disabled) {\r\n var disabledField = bulletTemplate.propertyFields.disabled;\r\n var dataContext = dataItem.dataContext;\r\n if (dataContext && dataContext[disabledField] === false) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n /**\r\n * @ignore\r\n */\r\n XYSeries.prototype.updateTooltip = function () {\r\n if (!this.hideTooltipWhileZooming && this.tooltip && !this.tooltip.isHidden && !this.isHiding && !this.isHidden && this.tooltipDataItem) {\r\n this.showTooltipAtDataItem(this.tooltipDataItem);\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n XYSeries.prototype.positionBullet = function (bullet) {\r\n _super.prototype.positionBullet.call(this, bullet);\r\n var dataItem = bullet.dataItem;\r\n // use series xField/yField if bullet doesn't have fields set\r\n var xField = bullet.xField;\r\n if (!$type.hasValue(xField)) {\r\n xField = this.xField;\r\n }\r\n var yField = bullet.yField;\r\n if (!$type.hasValue(yField)) {\r\n yField = this.yField;\r\n }\r\n var xAxis = this.xAxis;\r\n var yAxis = this.yAxis;\r\n if ((xAxis instanceof ValueAxis && !dataItem.hasValue([xField])) || (yAxis instanceof ValueAxis && !dataItem.hasValue([yField]))) {\r\n bullet.visible = false;\r\n }\r\n else {\r\n var bulletLocationX = this.getBulletLocationX(bullet, xField);\r\n var bulletLocationY = this.getBulletLocationY(bullet, yField);\r\n var point = this.getPoint(dataItem, xField, yField, bulletLocationX, bulletLocationY);\r\n if (point) {\r\n var xOpenField = this.xOpenField;\r\n var yOpenField = this.yOpenField;\r\n var positionX = void 0;\r\n var positionY = void 0;\r\n if (xAxis instanceof DateAxis) {\r\n if (!$type.isNumber(bulletLocationX)) {\r\n bulletLocationX = 0;\r\n }\r\n var openValue = void 0;\r\n var closeValue = dataItem.getWorkingValue(xField);\r\n if (!xOpenField) {\r\n if (xAxis == this.baseAxis) {\r\n openValue = xAxis.baseValue;\r\n }\r\n }\r\n else {\r\n openValue = dataItem.getWorkingValue(xOpenField);\r\n }\r\n if (!$type.isNumber(openValue)) {\r\n openValue = closeValue;\r\n }\r\n var stack = dataItem.getValue(\"valueX\", \"stack\");\r\n openValue += stack;\r\n closeValue += stack;\r\n if (openValue == closeValue) {\r\n var baseInterval = xAxis.baseInterval;\r\n var dateFormatter = xAxis.dateFormatter;\r\n openValue = $time.round(new Date(openValue), baseInterval.timeUnit, baseInterval.count, dateFormatter.firstDayOfWeek, dateFormatter.utc, undefined, dateFormatter.timezoneMinutes, dateFormatter.timezone).getTime();\r\n closeValue = $time.add(new Date(openValue), baseInterval.timeUnit, baseInterval.count, dateFormatter.utc).getTime();\r\n }\r\n var middleValue = void 0;\r\n if (xAxis == this.baseAxis) {\r\n middleValue = openValue + (closeValue - openValue) * bulletLocationX;\r\n }\r\n else {\r\n middleValue = openValue + (closeValue - openValue) * (1 - bulletLocationX);\r\n }\r\n positionX = xAxis.valueToPosition(middleValue);\r\n }\r\n else if (xAxis instanceof ValueAxis) {\r\n if (!$type.isNumber(bulletLocationX)) {\r\n bulletLocationX = 0;\r\n }\r\n var openValue = void 0;\r\n var closeValue = dataItem.getWorkingValue(xField);\r\n if (!xOpenField) {\r\n openValue = xAxis.baseValue;\r\n }\r\n else {\r\n openValue = dataItem.getWorkingValue(xOpenField);\r\n }\r\n var stack = dataItem.getValue(\"valueX\", \"stack\");\r\n openValue += stack;\r\n closeValue += stack;\r\n var middleValue = openValue + (closeValue - openValue) * (1 - bulletLocationX);\r\n positionX = xAxis.valueToPosition(middleValue);\r\n }\r\n else if (xAxis instanceof CategoryAxis) {\r\n var rightLocation = this.getAdjustedXLocation(dataItem, xField, bullet.locationX);\r\n var leftLocation = this.getAdjustedXLocation(dataItem, xOpenField, bullet.locationX);\r\n positionX = xAxis.categoryToPosition(dataItem[xField], rightLocation);\r\n var openPositionX = void 0;\r\n if (xOpenField) {\r\n openPositionX = xAxis.categoryToPosition(dataItem[xOpenField], leftLocation);\r\n }\r\n if (!$type.isNumber(openPositionX)) {\r\n openPositionX = 1;\r\n }\r\n positionX = openPositionX + (positionX - openPositionX) * bulletLocationX;\r\n }\r\n if (yAxis instanceof DateAxis) {\r\n if (!$type.isNumber(bulletLocationY)) {\r\n bulletLocationY = 0;\r\n }\r\n var openValue = void 0;\r\n var closeValue = dataItem.getWorkingValue(yField);\r\n if (!yOpenField) {\r\n if (yAxis == this.baseAxis) {\r\n openValue = yAxis.baseValue;\r\n }\r\n }\r\n else {\r\n openValue = dataItem.getWorkingValue(yOpenField);\r\n }\r\n if (!$type.isNumber(openValue)) {\r\n openValue = closeValue;\r\n }\r\n var stack = dataItem.getValue(\"valueY\", \"stack\");\r\n openValue += stack;\r\n closeValue += stack;\r\n if (openValue == closeValue) {\r\n var baseInterval = yAxis.baseInterval;\r\n var dateFormatter = yAxis.dateFormatter;\r\n openValue = $time.round(new Date(openValue), baseInterval.timeUnit, baseInterval.count, dateFormatter.firstDayOfWeek, dateFormatter.utc, undefined, dateFormatter.timezoneMinutes, dateFormatter.timezone).getTime();\r\n closeValue = $time.add(new Date(openValue), baseInterval.timeUnit, baseInterval.count, dateFormatter.utc).getTime();\r\n }\r\n var middleValue = void 0;\r\n if (yAxis == this.baseAxis) {\r\n middleValue = openValue + (closeValue - openValue) * bulletLocationY;\r\n }\r\n else {\r\n middleValue = openValue + (closeValue - openValue) * (1 - bulletLocationY);\r\n }\r\n positionY = yAxis.valueToPosition(middleValue);\r\n }\r\n else if (yAxis instanceof ValueAxis) {\r\n if (!$type.isNumber(bulletLocationY)) {\r\n bulletLocationY = 0;\r\n }\r\n var openValue = void 0;\r\n var closeValue = dataItem.getWorkingValue(yField);\r\n if (!yOpenField) {\r\n openValue = yAxis.baseValue;\r\n }\r\n else {\r\n openValue = dataItem.getWorkingValue(yOpenField);\r\n }\r\n var stack = dataItem.getValue(\"valueY\", \"stack\");\r\n openValue += stack;\r\n closeValue += stack;\r\n var middleValue = openValue + (closeValue - openValue) * (1 - bulletLocationY);\r\n positionY = yAxis.valueToPosition(middleValue);\r\n }\r\n else if (yAxis instanceof CategoryAxis) {\r\n positionY = yAxis.categoryToPosition(dataItem[yField], bulletLocationY);\r\n var topLocation = this.getAdjustedYLocation(dataItem, yField, bullet.locationY);\r\n var bottomLocation = this.getAdjustedYLocation(dataItem, yOpenField, bullet.locationY);\r\n positionY = yAxis.categoryToPosition(dataItem[yField], topLocation);\r\n var openPositionY = void 0;\r\n if (yOpenField) {\r\n openPositionY = yAxis.categoryToPosition(dataItem[yOpenField], bottomLocation);\r\n }\r\n if (!$type.isNumber(openPositionY)) {\r\n openPositionY = 1;\r\n }\r\n positionY = openPositionY + (positionY - openPositionY) * bulletLocationY;\r\n }\r\n bullet.visible = true;\r\n this.positionBulletReal(bullet, positionX, positionY);\r\n }\r\n else {\r\n bullet.visible = false;\r\n }\r\n }\r\n };\r\n XYSeries.prototype.positionBulletReal = function (bullet, positionX, positionY) {\r\n bullet.x = this.xAxis.renderer.positionToPoint(positionX, positionY).x;\r\n bullet.y = this.yAxis.renderer.positionToPoint(positionY, positionX).y;\r\n };\r\n /**\r\n * returns bullet x location\r\n * @ignore\r\n */\r\n XYSeries.prototype.getBulletLocationX = function (bullet, field) {\r\n var bulletLocation = bullet.locationX;\r\n var dataItem = bullet.dataItem;\r\n if (!$type.isNumber(bulletLocation)) {\r\n bulletLocation = dataItem.workingLocations[field];\r\n }\r\n return bulletLocation;\r\n };\r\n /**\r\n * Returns bullet x location\r\n * @ignore\r\n */\r\n XYSeries.prototype.getBulletLocationY = function (bullet, field) {\r\n var bulletLocation = bullet.locationY;\r\n var dataItem = bullet.dataItem;\r\n if (!$type.isNumber(bulletLocation)) {\r\n bulletLocation = dataItem.workingLocations[field];\r\n }\r\n return bulletLocation;\r\n };\r\n /**\r\n * This method must be called if you update Series' data fields that might\r\n * affect stacking of the series.\r\n *\r\n * Since individual `dataField` changes are not being monitored, you need\r\n * todo it manually for changes to take affect.\r\n *\r\n * @since 4.7.21\r\n */\r\n XYSeries.prototype.updateStacking = function () {\r\n var _this = this;\r\n this.invalidateDataItems();\r\n if (this.chart) {\r\n this.chart.series.each(function (series) {\r\n if (series.baseAxis == _this.baseAxis) {\r\n series.stackedSeries = undefined;\r\n series.invalidateDataItems();\r\n series.invalidateProcessedData();\r\n }\r\n });\r\n }\r\n };\r\n Object.defineProperty(XYSeries.prototype, \"stacked\", {\r\n /**\r\n * @return Can be stacked?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"stacked\");\r\n },\r\n /**\r\n * Can items from this series be included into stacks?\r\n *\r\n * Note: proper stacking is only possible if series have the same number\r\n * of data items. To ensure this, don't set data directly on series\r\n * but do this on chart instead.\r\n *\r\n * @default false\r\n * @param stacked Can be stacked?\r\n */\r\n set: function (stacked) {\r\n if (this.setPropertyValue(\"stacked\", stacked, true)) {\r\n this.updateStacking();\r\n var xAxis = this.xAxis;\r\n var yAxis = this.yAxis;\r\n if (!stacked) {\r\n var field_1;\r\n if (xAxis != this.baseAxis && xAxis instanceof ValueAxis) {\r\n field_1 = this.xField;\r\n }\r\n if (yAxis != this.baseAxis && yAxis instanceof ValueAxis) {\r\n field_1 = this.yField;\r\n }\r\n if (field_1) {\r\n this.dataItems.each(function (dataItem) {\r\n dataItem.setCalculatedValue(field_1, 0, \"stack\");\r\n });\r\n }\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeries.prototype, \"snapTooltip\", {\r\n /**\r\n * @return Should snap?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"snapTooltip\");\r\n },\r\n /**\r\n * Should the nearest tooltip be shown if no data item is found on the\r\n * current cursor position? In order this to work, you should set snapTooltip = false on the series baseAxis.\r\n *\r\n * @default false\r\n * @param value Should snap?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"snapTooltip\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Shows hidden series.\r\n *\r\n * @param duration Duration of reveal animation (ms)\r\n * @return Animation\r\n */\r\n XYSeries.prototype.show = function (duration) {\r\n var _this = this;\r\n if (this.isHidden) {\r\n if (this.appeared && this.xAxis instanceof DateAxis && this.xAxis.groupData) {\r\n this._tmin.setKey(this.yAxis.uid, undefined);\r\n this._tmax.setKey(this.yAxis.uid, undefined);\r\n }\r\n if (this.appeared && this.yAxis instanceof DateAxis && this.yAxis.groupData) {\r\n this._tmin.setKey(this.xAxis.uid, undefined);\r\n this._tmax.setKey(this.xAxis.uid, undefined);\r\n }\r\n }\r\n var fields;\r\n if (this.xAxis instanceof ValueAxis && this.xAxis != this.baseAxis) {\r\n fields = this._xValueFields;\r\n }\r\n if (this.yAxis instanceof ValueAxis && this.yAxis != this.baseAxis) {\r\n fields = this._yValueFields;\r\n }\r\n var startIndex = this.startIndex;\r\n var endIndex = this.endIndex;\r\n var delay = 0;\r\n var interpolationDuration = this.defaultState.transitionDuration;\r\n if ($type.isNumber(duration)) {\r\n interpolationDuration = duration;\r\n }\r\n if (!options.animationsEnabled) {\r\n interpolationDuration = 0;\r\n }\r\n var anim;\r\n $iter.each($iter.indexed(this.dataItems.iterator()), function (a) {\r\n var i = a[0];\r\n var dataItem = a[1];\r\n var realDuration = interpolationDuration;\r\n if (i < _this.startIndex - 10 || i > _this.endIndex + 10) {\r\n realDuration = 0;\r\n delay = 0;\r\n }\r\n if (_this.sequencedInterpolation && realDuration > 0) {\r\n delay = _this.sequencedInterpolationDelay * i + interpolationDuration * (i - startIndex) / (endIndex - startIndex);\r\n }\r\n anim = dataItem.show(realDuration, delay, fields);\r\n });\r\n // other data sets\r\n this.dataSets.each(function (key, dataSet) {\r\n if (dataSet != _this.dataItems) {\r\n dataSet.each(function (dataItem) {\r\n dataItem.events.disable();\r\n dataItem.show(0, 0, fields);\r\n dataItem.events.enable();\r\n });\r\n }\r\n });\r\n if (this.mainDataSet != this.dataItems) {\r\n this.mainDataSet.each(function (dataItem) {\r\n dataItem.events.disable();\r\n dataItem.show(0, 0, fields);\r\n dataItem.events.enable();\r\n });\r\n }\r\n var animation = _super.prototype.show.call(this, duration);\r\n if (anim && !anim.isFinished()) {\r\n animation = anim;\r\n }\r\n if (this.hidden) {\r\n this.dispatchImmediately(\"selectionextremeschanged\");\r\n this.hidden = false;\r\n }\r\n return animation;\r\n };\r\n /**\r\n * Hides series.\r\n *\r\n * @param duration Duration of hiding animation (ms)\r\n * @return Animation\r\n */\r\n XYSeries.prototype.hide = function (duration) {\r\n var _this = this;\r\n var fields;\r\n var value;\r\n var xAxis = this.xAxis;\r\n if (xAxis instanceof ValueAxis && xAxis != this.baseAxis) {\r\n fields = this._xValueFields;\r\n // animate to zero if 0 is within zoomMin/zoomMax\r\n if (this.stacked || (xAxis.minZoomed < xAxis.baseValue && xAxis.maxZoomed > xAxis.baseValue) || this.stackedSeries) {\r\n value = xAxis.baseValue;\r\n }\r\n else {\r\n value = xAxis.min;\r\n }\r\n }\r\n var yAxis = this.yAxis;\r\n if (yAxis instanceof ValueAxis && yAxis != this.baseAxis) {\r\n fields = this._yValueFields;\r\n // animate to zero if 0 is within zoomMin/zoomMax\r\n if (this.stacked || (yAxis.minZoomed < yAxis.baseValue && yAxis.maxZoomed > yAxis.baseValue) || this.stackedSeries) {\r\n value = yAxis.baseValue;\r\n }\r\n else {\r\n value = yAxis.min;\r\n }\r\n }\r\n //if ($type.hasValue(fields)) {\r\n var startIndex = this.startIndex;\r\n var endIndex = this.endIndex;\r\n var interpolationDuration = this.hiddenState.transitionDuration;\r\n if ($type.isNumber(duration)) {\r\n interpolationDuration = duration;\r\n }\r\n if (!options.animationsEnabled) {\r\n interpolationDuration = 0;\r\n }\r\n var delay = 0;\r\n var anim;\r\n $iter.each($iter.indexed(this.dataItems.iterator()), function (a) {\r\n var i = a[0];\r\n var dataItem = a[1];\r\n var realDuration = interpolationDuration;\r\n if (i < _this.startIndex - 10 || i > _this.endIndex + 10) {\r\n realDuration = 0;\r\n }\r\n if (realDuration == 0) {\r\n dataItem.hide(0, 0, value, fields);\r\n }\r\n else {\r\n if (_this.sequencedInterpolation && realDuration > 0) {\r\n delay = _this.sequencedInterpolationDelay * i + interpolationDuration * (i - startIndex) / (endIndex - startIndex);\r\n }\r\n anim = dataItem.hide(realDuration, delay, value, fields);\r\n }\r\n });\r\n // other data sets\r\n this.dataSets.each(function (key, dataSet) {\r\n if (dataSet != _this.dataItems) {\r\n dataSet.each(function (dataItem) {\r\n dataItem.events.disable();\r\n dataItem.hide(0, 0, value, fields);\r\n dataItem.events.enable();\r\n });\r\n }\r\n });\r\n if (this.mainDataSet != this.dataItems) {\r\n this.mainDataSet.each(function (dataItem) {\r\n dataItem.events.disable();\r\n dataItem.hide(0, 0, value, fields);\r\n dataItem.events.enable();\r\n });\r\n }\r\n var animation = _super.prototype.hide.call(this, interpolationDuration);\r\n if (animation && !animation.isFinished()) {\r\n animation.delay(delay);\r\n }\r\n if (anim && !anim.isFinished()) {\r\n animation = anim;\r\n }\r\n // helps to avoid flicker. otherwise columns will show up at full size and only on next frame will animate from 0\r\n this.validateDataElements();\r\n //}\r\n return animation;\r\n };\r\n /**\r\n * [handleDataItemWorkingValueChange description]\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYSeries.prototype.handleDataItemWorkingValueChange = function (dataItem, name) {\r\n _super.prototype.handleDataItemWorkingValueChange.call(this, dataItem, name);\r\n // to calculate stack values\r\n var axisSeries = this.baseAxis.series;\r\n $iter.each(axisSeries.iterator(), function (series) {\r\n if (series.stacked || series.stackedSeries) {\r\n series.invalidateProcessedData();\r\n }\r\n });\r\n };\r\n /**\r\n * [getStackValue description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param dataItem Data item\r\n */\r\n XYSeries.prototype.getStackValue = function (dataItem, working) {\r\n // todo: here wer stack x and y values only. question is - what should we do with other values, like openX, openY?\r\n // if this series is not stacked or new stack begins, return.\r\n var _this = this;\r\n var xAxis = this.xAxis;\r\n var yAxis = this.yAxis;\r\n if (!this.stacked || !xAxis || !yAxis) {\r\n return;\r\n }\r\n else {\r\n // it might seem that it's better to go through base axis series, but we do not maintain the same order as in chart.series there.\r\n var chart = this.chart;\r\n var index = chart.series.indexOf(this);\r\n var field_2;\r\n if (xAxis != this.baseAxis && xAxis instanceof ValueAxis) {\r\n field_2 = this.xField;\r\n }\r\n if (yAxis != this.baseAxis && yAxis instanceof ValueAxis) {\r\n field_2 = this.yField;\r\n }\r\n if (!field_2) {\r\n return;\r\n }\r\n //this is good for removing series, otherwise stack values will remain the same and chart won't pay atention when adding/removing series\t\t\t\r\n dataItem.setCalculatedValue(field_2, 0, \"stack\");\r\n $iter.eachContinue(chart.series.range(0, index).backwards().iterator(), function (prevSeries) {\r\n // stacking is only possible if both axes are the same\r\n if (prevSeries.xAxis == xAxis && prevSeries.yAxis == yAxis && prevSeries.className == _this.className) {\r\n // saving value\r\n prevSeries.stackedSeries = _this;\r\n var prevDataItem = prevSeries.dataItems.getIndex(dataItem.index); // indexes should match\r\n if (prevDataItem && prevDataItem.hasValue(_this._xValueFields) && prevDataItem.hasValue(_this._yValueFields)) {\r\n var value = dataItem.getValue(field_2);\r\n var prevValue = void 0;\r\n var prevRealValue = prevDataItem.getValue(field_2) + prevDataItem.getValue(field_2, \"stack\");\r\n if (working) {\r\n prevValue = prevDataItem.getWorkingValue(field_2) + prevDataItem.getValue(field_2, \"stack\");\r\n }\r\n else {\r\n prevValue = prevDataItem.getValue(field_2) + prevDataItem.getValue(field_2, \"stack\");\r\n }\r\n if (_this.stackToNegative) {\r\n if ((value >= 0 && prevRealValue >= 0) || (value < 0 && prevRealValue < 0)) {\r\n dataItem.setCalculatedValue(field_2, prevValue, \"stack\");\r\n return false;\r\n }\r\n else if (!prevSeries.stacked) {\r\n return false;\r\n }\r\n }\r\n else {\r\n dataItem.setCalculatedValue(field_2, prevValue, \"stack\");\r\n return false;\r\n }\r\n }\r\n else if (!prevSeries.stacked) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n });\r\n }\r\n };\r\n Object.defineProperty(XYSeries.prototype, \"stackToNegative\", {\r\n /**\r\n * @return Stack to base line\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"stackToNegative\");\r\n },\r\n /**\r\n * This setting indicates how negative values are treated in stacked stacked\r\n * series.\r\n *\r\n * If set to `true` (default), negative values will stack on the base line.\r\n *\r\n * If set to `false`, negative value will stack in relation to the previous\r\n * value in the stack.\r\n *\r\n * @since 4.9.34\r\n * @param value Stack to base line\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"stackToNegative\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeries.prototype, \"xField\", {\r\n /**\r\n * [xField description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this._xField;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeries.prototype, \"yField\", {\r\n /**\r\n * [yField description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this._yField;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeries.prototype, \"xOpenField\", {\r\n /**\r\n * [xOpenField description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this._xOpenField;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeries.prototype, \"yOpenField\", {\r\n /**\r\n * [yOpenField description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this._yOpenField;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeries.prototype, \"tooltipXField\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @return [description]\r\n */\r\n get: function () {\r\n if (this._tooltipXField) {\r\n return this._tooltipXField;\r\n }\r\n return this._xField;\r\n },\r\n /**\r\n * [tooltipXField description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param value [description]\r\n */\r\n set: function (value) {\r\n this._tooltipXField = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeries.prototype, \"tooltipYField\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @return [description]\r\n */\r\n get: function () {\r\n if (this._tooltipYField) {\r\n return this._tooltipYField;\r\n }\r\n return this._yField;\r\n },\r\n /**\r\n * [tooltipYField description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param value [description]\r\n */\r\n set: function (value) {\r\n this._tooltipYField = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns lowest value in the series for the specific axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axis Axis\r\n * @return value\r\n */\r\n XYSeries.prototype.min = function (axis) {\r\n return this._tmin.getKey(axis.uid);\r\n };\r\n /**\r\n * Returns highest value in the series for the specific axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axis Axis\r\n * @return value\r\n */\r\n XYSeries.prototype.max = function (axis) {\r\n return this._tmax.getKey(axis.uid);\r\n };\r\n /**\r\n * Returns lowest value in the series for the specific axis within current\r\n * selection.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axis Axis\r\n * @return value\r\n */\r\n XYSeries.prototype.selectionMin = function (axis) {\r\n var value = this._smin.getKey(axis.uid);\r\n // not good, because bad if there are no items with values in selection\r\n //if (!$type.isNumber(value)) {\r\n //value = this.min(axis);\r\n //}\t\t\r\n return value;\r\n };\r\n /**\r\n * Returns highest value in the series for the specific axis within current\r\n * selection.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axis Axis\r\n * @return value\r\n */\r\n XYSeries.prototype.selectionMax = function (axis) {\r\n var value = this._smax.getKey(axis.uid);\r\n // not good, because bad if there are no items with values in selection\r\n //if (!$type.isNumber(value)) {\r\n //value = this.max(axis);\r\n //}\r\n return value;\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n XYSeries.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Set up base axes\r\n if ($type.hasValue(config.baseAxis) && $type.isString(config.baseAxis)) {\r\n if (this.map.hasKey(config.baseAxis)) {\r\n config.baseAxis = this.map.getKey(config.baseAxis);\r\n }\r\n else {\r\n this.processingErrors.push(\"[XYSeries (\" + (this.name || \"unnamed\") + \")] No axis with id \\\"\" + config.baseAxis + \"\\\" found for `baseAxis`.\");\r\n delete config.baseAxis;\r\n }\r\n }\r\n // Set up axes\r\n if ($type.hasValue(config.xAxis) && $type.isString(config.xAxis)) {\r\n if (this.map.hasKey(config.xAxis)) {\r\n config.xAxis = this.map.getKey(config.xAxis);\r\n }\r\n else {\r\n this.processingErrors.push(\"[XYSeries (\" + (this.name || \"unnamed\") + \")] No axis with id \\\"\" + config.xAxis + \"\\\" found for `xAxis`.\");\r\n delete config.xAxis;\r\n }\r\n }\r\n if ($type.hasValue(config.yAxis) && $type.isString(config.yAxis)) {\r\n if (this.map.hasKey(config.yAxis)) {\r\n config.yAxis = this.map.getKey(config.yAxis);\r\n }\r\n else {\r\n this.processingErrors.push(\"[XYSeries (\" + (this.name || \"unnamed\") + \")] No axis with id \\\"\" + config.yAxis + \"\\\" found for `yAxis`.\");\r\n delete config.yAxis;\r\n }\r\n }\r\n // Set up axis ranges\r\n if ($type.hasValue(config.axisRanges) && $type.isArray(config.axisRanges)) {\r\n for (var i = 0, len = config.axisRanges.length; i < len; i++) {\r\n var range = config.axisRanges[i];\r\n if (!$type.hasValue(range.type)) {\r\n range.type = \"AxisDataItem\";\r\n }\r\n if ($type.hasValue(range.axis) && $type.isString(range.axis) && this.map.hasKey(range.axis)) {\r\n range.component = this.map.getKey(range.axis);\r\n }\r\n else if ($type.hasValue(range.component) && $type.isString(range.component) && this.map.hasKey(range.component)) {\r\n range.component = this.map.getKey(range.component);\r\n }\r\n }\r\n }\r\n // Parse date fields based on the series fields\r\n if (!$type.hasValue(config.dataFields) || !$type.isObject(config.dataFields)) {\r\n this.processingErrors.push(\"`dataFields` is not set for series [\" + (this.name || \"unnamed\") + \"]\");\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n /**\r\n * Returns an [[IPoint]] coordinates of the specific Serie's data point.\r\n *\r\n * @param dataItem Data item\r\n * @param xKey Name of X data field\r\n * @param yKey Name of Y data field\r\n * @param locationX X location\r\n * @param locationY Y location\r\n * @param stackKeyX ?\r\n * @param stackKeyY ?\r\n * @returns Coordinates\r\n */\r\n XYSeries.prototype.getPoint = function (dataItem, xKey, yKey, locationX, locationY, stackKeyX, stackKeyY) {\r\n if (this.xAxis && this.yAxis) {\r\n var x = this.xAxis.getX(dataItem, xKey, locationX);\r\n var y = this.yAxis.getY(dataItem, yKey, locationY);\r\n x = $math.fitToRange(x, -this._maxxX, this._maxxX); // from geometric point of view this is not right, but practically it's ok. this is done to avoid too big objects.\r\n y = $math.fitToRange(y, -this._maxxY, this._maxxY); // from geometric point of view this is not right, but practically it's ok. this is done to avoid too big objects.\r\n return { x: x, y: y };\r\n }\r\n };\r\n /**\r\n * Updates item reader text based on the type and set up of axis.\r\n */\r\n XYSeries.prototype.updateItemReaderText = function () {\r\n // We do not want to overwrite this if `itemReaderText` was changed by\r\n // user code.\r\n if (this._itemReaderTextChanged) {\r\n return;\r\n }\r\n var text = \"\";\r\n $object.each(this.dataFields, function (key, val) {\r\n text += \"{\" + key + \"} \";\r\n });\r\n this.itemReaderText = text;\r\n this._itemReaderTextChanged = false;\r\n };\r\n Object.defineProperty(XYSeries.prototype, \"cursorTooltipEnabled\", {\r\n /**\r\n * @return Display tooltip?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"cursorTooltipEnabled\");\r\n },\r\n /**\r\n * Indicates if series should display a tooltip for chart's cursor.\r\n *\r\n * If set to `true` (default), the tooltips set for all series item's\r\n * elements like columns and bullets will be automatically shown\r\n * when [[XYCursor]] passes over category/date, even if its not hovered\r\n * directly over the item.\r\n *\r\n * Set this to `false` to disable such behavior and display item-specific\r\n * tooltips only when hovered directly over them\r\n *\r\n * @default true\r\n * @param value Display tooltip?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"cursorTooltipEnabled\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeries.prototype, \"cursorHoverEnabled\", {\r\n /**\r\n * @return Hover enabled?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"cursorHoverEnabled\");\r\n },\r\n /**\r\n * Indicates if series should apply hover state on bullets/columns/etc when\r\n * cursor is over the data item.\r\n *\r\n * If set to `true` (default) and chart cursor is enabled on th chart,\r\n * hovering over date/category will trigger hover states on related Series\r\n * items like bullets and columns.\r\n *\r\n * @default true\r\n * @since 4.2.2\r\n * @param value Hover enabled?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"cursorHoverEnabled\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeries.prototype, \"excludeFromTotal\", {\r\n /**\r\n * @return Exclude from totals?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"excludeFromTotal\");\r\n },\r\n /**\r\n * Indicates if series' values should be excluded when calculating totals.\r\n *\r\n * @default false\r\n * @since 4.4.9\r\n * @param value Exclude from totals?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"excludeFromTotal\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeries.prototype, \"hideTooltipWhileZooming\", {\r\n /**\r\n * @return Hide tooltip while zooming?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"hideTooltipWhileZooming\");\r\n },\r\n /**\r\n * Indicates if series' tooltip should be hidden while series axis range is\r\n * animating (zooming).\r\n *\r\n * @default true\r\n * @since 4.7.16\r\n * @param value Hide tooltip while zooming?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"hideTooltipWhileZooming\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYSeries.prototype, \"maskBullets\", {\r\n /**\r\n * @return Mask bullets?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maskBullets\");\r\n },\r\n /**\r\n * Indicates if series' bullets should be masked.\r\n *\r\n * @default true\r\n * @since 4.7.17\r\n * @param value Mask bullets?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"maskBullets\", value);\r\n var chart = this.chart;\r\n if (chart) {\r\n if (value) {\r\n this.bulletsContainer.parent = chart.bulletsContainer;\r\n }\r\n else {\r\n this.bulletsContainer.parent = chart.axisBulletsContainer;\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies all properties from another instance of [[Series]].\r\n *\r\n * @param source Source series\r\n */\r\n XYSeries.prototype.copyFrom = function (source) {\r\n this.groupFields = $utils.copyProperties(source.groupFields, {});\r\n _super.prototype.copyFrom.call(this, source);\r\n };\r\n /**\r\n * Destroys this object and all related data.\r\n */\r\n XYSeries.prototype.dispose = function () {\r\n if (this.scrollbarSeries) {\r\n this.scrollbarSeries.dispose();\r\n }\r\n _super.prototype.dispose.call(this);\r\n };\r\n return XYSeries;\r\n}(Series));\r\nexport { XYSeries };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"XYSeries\"] = XYSeries;\r\nregistry.registeredClasses[\"XYSeriesDataItem\"] = XYSeriesDataItem;\r\n//# sourceMappingURL=XYSeries.js.map","/**\r\n * A module with functionality for buildin a scrollbar with an XY graph in it.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Scrollbar } from \"../../core/elements/Scrollbar\";\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { List } from \"../../core/utils/List\";\r\nimport { MutableValueDisposer } from \"../../core/utils/Disposer\";\r\nimport { XYChart } from \"../types/XYChart\";\r\nimport { ValueAxis } from \"../axes/ValueAxis\";\r\nimport { DateAxis } from \"../axes/DateAxis\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { DesaturateFilter } from \"../../core/rendering/filters/DesaturateFilter\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { color } from \"../../core/utils/Color\";\r\nimport { options } from \"../../core/Options\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A special version of the Scrollbar that has an XY chart in it.\r\n *\r\n * Used mainly as an advanced scrollbar with a preview for other XY charts.\r\n *\r\n * However, can be used as standalone element.\r\n *\r\n * @see {@link IXYChartScrollbarEvents} for a list of available events\r\n * @see {@link IXYChartScrollbarAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar XYChartScrollbar = /** @class */ (function (_super) {\r\n __extends(XYChartScrollbar, _super);\r\n /**\r\n * Constructor\r\n */\r\n function XYChartScrollbar() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * A chart element Scrollbar is for.\r\n */\r\n _this._chart = new MutableValueDisposer();\r\n _this.className = \"XYChartScrollbar\";\r\n var interfaceColors = new InterfaceColorSet();\r\n _this.padding(0, 0, 0, 0);\r\n var scrollbarChart = _this.createChild(XYChart);\r\n scrollbarChart.shouldClone = false;\r\n scrollbarChart.margin(0, 0, 0, 0);\r\n scrollbarChart.padding(0, 0, 0, 0);\r\n scrollbarChart.interactionsEnabled = false;\r\n _this._scrollbarChart = scrollbarChart;\r\n if (!$utils.isIE()) {\r\n var filter = new DesaturateFilter();\r\n filter.filterUnits = \"userSpaceOnUse\";\r\n scrollbarChart.plotContainer.filters.push(filter);\r\n }\r\n _this._disposers.push(_this._scrollbarChart);\r\n _this.minHeight = 60;\r\n _this.minWidth = 60;\r\n var unselectedOverlay = _this.createChild(Sprite);\r\n unselectedOverlay.shouldClone = false;\r\n unselectedOverlay.setElement(_this.paper.add(\"path\"));\r\n unselectedOverlay.fill = interfaceColors.getFor(\"background\");\r\n unselectedOverlay.fillOpacity = 0.8;\r\n unselectedOverlay.interactionsEnabled = false;\r\n unselectedOverlay.isMeasured = false;\r\n unselectedOverlay.toBack();\r\n _this._unselectedOverlay = unselectedOverlay;\r\n _this._disposers.push(_this._unselectedOverlay);\r\n scrollbarChart.toBack();\r\n _this.background.cornerRadius(0, 0, 0, 0);\r\n var thumbBackground = _this.thumb.background;\r\n thumbBackground.cornerRadius(0, 0, 0, 0);\r\n thumbBackground.fillOpacity = 0;\r\n thumbBackground.fill = interfaceColors.getFor(\"background\");\r\n var hoverState = thumbBackground.states.getKey(\"hover\");\r\n if (hoverState) {\r\n hoverState.properties.fillOpacity = 0.2;\r\n }\r\n var downState = thumbBackground.states.getKey(\"down\");\r\n if (downState) {\r\n downState.properties.fillOpacity = 0.4;\r\n }\r\n _this._disposers.push(_this._chart);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(XYChartScrollbar.prototype, \"series\", {\r\n /**\r\n * A list of series that are used to draw graph(s) on the scrollbar.\r\n *\r\n * @readonly\r\n * @return Series\r\n */\r\n get: function () {\r\n if (!this._series) {\r\n this._series = new List();\r\n this._disposers.push(this._series.events.on(\"inserted\", this.handleSeriesAdded, this, false));\r\n this._disposers.push(this._series.events.on(\"removed\", this.handleSeriesRemoved, this, false));\r\n }\r\n return this._series;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Decorates a new series when they are pushed into a `series` list.\r\n *\r\n * @param event Event\r\n */\r\n XYChartScrollbar.prototype.handleSeriesAdded = function (event) {\r\n var _this = this;\r\n var sourceSeries = event.newValue;\r\n if (!sourceSeries.xAxis || !sourceSeries.yAxis) {\r\n return;\r\n }\r\n var scrollbarChart = this.scrollbarChart;\r\n scrollbarChart.zoomOutButton.disabled = true;\r\n this.chart = sourceSeries.chart;\r\n scrollbarChart.dateFormatter.inputDateFormat = this.chart.dateFormatter.inputDateFormat;\r\n // Ensure that scrollbar chart shares the same locale as parent chart\r\n scrollbarChart.language.locale = this.chart.language.locale;\r\n var addXAxis = true;\r\n var addYAxis = true;\r\n // check if we haven't added clone of x or y axis before\r\n $iter.each(this.series.iterator(), function (series) {\r\n if (series != sourceSeries) {\r\n if (series.xAxis == sourceSeries.xAxis && _this.scrollbarChart.xAxes.length > 0) {\r\n addXAxis = false;\r\n }\r\n if (series.yAxis == sourceSeries.yAxis && _this.scrollbarChart.yAxes.length > 0) {\r\n addYAxis = false;\r\n }\r\n }\r\n });\r\n sourceSeries.events.on(\"beforedisposed\", function () {\r\n _this.series.removeValue(sourceSeries);\r\n });\r\n var interfaceColors = new InterfaceColorSet();\r\n var series = sourceSeries.clone();\r\n if (options.onlyShowOnViewport || options.queue) {\r\n this.addDisposer(this.chart.events.on(\"removedfromqueue\", function () {\r\n scrollbarChart.invalidateData();\r\n }));\r\n }\r\n if ($utils.isIE()) {\r\n series.stroke = color(\"#aaaaaa\");\r\n series.fill = series.stroke;\r\n series.propertyFields.fill = undefined;\r\n series.propertyFields.stroke = undefined;\r\n }\r\n sourceSeries.scrollbarSeries = series;\r\n if (addXAxis) {\r\n var xAxis = sourceSeries.xAxis.clone();\r\n scrollbarChart.xAxes.moveValue(xAxis);\r\n xAxis.title.disabled = true;\r\n xAxis.rangeChangeDuration = 0;\r\n //xAxis.id = sourceSeries.uid;\r\n var renderer = xAxis.renderer;\r\n renderer.ticks.template.disabled = true;\r\n renderer.inside = true;\r\n renderer.labels.template.inside = true;\r\n renderer.line.strokeOpacity = 0;\r\n renderer.minLabelPosition = 0.02;\r\n renderer.maxLabelPosition = 0.98;\r\n renderer.line.disabled = true;\r\n renderer.axisFills.template.disabled = true;\r\n renderer.baseGrid.disabled = true;\r\n renderer.grid.template.strokeOpacity = 0.05;\r\n renderer.minWidth = undefined;\r\n renderer.minHeight = undefined;\r\n renderer.padding(0, 0, 0, 0);\r\n renderer.chart = scrollbarChart;\r\n renderer.margin(0, 0, 0, 0);\r\n xAxis.width = percent(100);\r\n var labelsTemplate = renderer.labels.template;\r\n labelsTemplate.fillOpacity = 0.5;\r\n xAxis.maxZoomCount = undefined;\r\n xAxis.minZoomCount = undefined;\r\n if (xAxis instanceof DateAxis) {\r\n var vAxis_1 = xAxis;\r\n var sourceAxis = sourceSeries.xAxis;\r\n vAxis_1.groupCount = sourceAxis.groupCount * 5;\r\n vAxis_1.min = undefined;\r\n vAxis_1.max = undefined;\r\n this._disposers.push(vAxis_1.clonedFrom.events.on(\"extremeschanged\", function () {\r\n if ($type.isNumber(vAxis_1.clonedFrom.minDefined)) {\r\n vAxis_1.min = vAxis_1.clonedFrom.minDefined;\r\n }\r\n if ($type.isNumber(vAxis_1.clonedFrom.maxDefined)) {\r\n vAxis_1.max = vAxis_1.clonedFrom.maxDefined;\r\n }\r\n }, undefined, false));\r\n }\r\n else if (xAxis instanceof ValueAxis) {\r\n var vAxis_2 = xAxis;\r\n vAxis_2.min = undefined;\r\n vAxis_2.max = undefined;\r\n if (!$type.isNumber(vAxis_2.clonedFrom.minDefined)) {\r\n vAxis_2.min = undefined;\r\n }\r\n if (!$type.isNumber(vAxis_2.clonedFrom.maxDefined)) {\r\n vAxis_2.max = undefined;\r\n }\r\n this._disposers.push(vAxis_2.clonedFrom.events.on(\"extremeschanged\", function () {\r\n if ($type.isNumber(vAxis_2.clonedFrom.minDefined)) {\r\n vAxis_2.min = vAxis_2.clonedFrom.min;\r\n }\r\n if ($type.isNumber(vAxis_2.clonedFrom.maxDefined)) {\r\n vAxis_2.max = vAxis_2.clonedFrom.max;\r\n }\r\n }, undefined, false));\r\n }\r\n series.xAxis = xAxis;\r\n }\r\n else {\r\n this.scrollbarChart.xAxes.each(function (xAxis) {\r\n if (xAxis.clonedFrom == sourceSeries.xAxis) {\r\n series.xAxis = xAxis;\r\n }\r\n });\r\n }\r\n if (addYAxis) {\r\n var yAxis = sourceSeries.yAxis.clone();\r\n scrollbarChart.yAxes.moveValue(yAxis);\r\n yAxis.title.disabled = true;\r\n yAxis.rangeChangeDuration = 0;\r\n var renderer = yAxis.renderer;\r\n renderer.ticks.template.disabled = true;\r\n renderer.inside = true;\r\n renderer.labels.template.inside = true;\r\n renderer.line.strokeOpacity = 0;\r\n renderer.minLabelPosition = 0.02;\r\n renderer.maxLabelPosition = 0.98;\r\n renderer.line.disabled = true;\r\n renderer.axisFills.template.disabled = true;\r\n renderer.grid.template.stroke = interfaceColors.getFor(\"background\");\r\n renderer.baseGrid.disabled = true;\r\n renderer.grid.template.strokeOpacity = 0.05;\r\n renderer.minWidth = undefined;\r\n renderer.minHeight = undefined;\r\n renderer.chart = scrollbarChart;\r\n renderer.padding(0, 0, 0, 0);\r\n renderer.margin(0, 0, 0, 0);\r\n yAxis.height = percent(100);\r\n var labelsTemplate = renderer.labels.template;\r\n labelsTemplate.fillOpacity = 0.5;\r\n series.yAxis = yAxis;\r\n yAxis.maxZoomCount = undefined;\r\n yAxis.minZoomCount = undefined;\r\n if (yAxis instanceof DateAxis) {\r\n var vAxis_3 = yAxis;\r\n vAxis_3.min = undefined;\r\n vAxis_3.max = undefined;\r\n var sourceAxis = sourceSeries.yAxis;\r\n yAxis.groupCount = sourceAxis.groupCount * 5;\r\n this._disposers.push(vAxis_3.clonedFrom.events.on(\"extremeschanged\", function () {\r\n if ($type.isNumber(vAxis_3.clonedFrom.minDefined)) {\r\n vAxis_3.min = vAxis_3.clonedFrom.minDefined;\r\n }\r\n if ($type.isNumber(vAxis_3.clonedFrom.maxDefined)) {\r\n vAxis_3.max = vAxis_3.clonedFrom.maxDefined;\r\n }\r\n }));\r\n }\r\n else if (yAxis instanceof ValueAxis) {\r\n var vAxis_4 = yAxis;\r\n vAxis_4.min = undefined;\r\n vAxis_4.max = undefined;\r\n if (!$type.isNumber(vAxis_4.clonedFrom.minDefined)) {\r\n vAxis_4.min = undefined;\r\n }\r\n if (!$type.isNumber(vAxis_4.clonedFrom.maxDefined)) {\r\n vAxis_4.max = undefined;\r\n }\r\n this._disposers.push(vAxis_4.clonedFrom.events.on(\"extremeschanged\", function () {\r\n if ($type.isNumber(vAxis_4.clonedFrom.minDefined)) {\r\n vAxis_4.min = vAxis_4.clonedFrom.minDefined;\r\n }\r\n if ($type.isNumber(vAxis_4.clonedFrom.maxDefined)) {\r\n vAxis_4.max = vAxis_4.clonedFrom.maxDefined;\r\n }\r\n }));\r\n }\r\n }\r\n else {\r\n this.scrollbarChart.yAxes.each(function (yAxis) {\r\n if (yAxis.clonedFrom == sourceSeries.yAxis) {\r\n series.yAxis = yAxis;\r\n }\r\n });\r\n }\r\n series.rangeChangeDuration = 0;\r\n series.interpolationDuration = 0;\r\n series.defaultState.transitionDuration = 0;\r\n series.showOnInit = false;\r\n this._disposers.push(series.events.on(\"validated\", this.zoomOutAxes, this, false));\r\n // data might be set drectly on series\r\n this._disposers.push(sourceSeries.events.on(\"datavalidated\", function () {\r\n if (series.data != sourceSeries.data) { // data setter doesn't check this\r\n series.data = sourceSeries.data;\r\n }\r\n }, undefined, false));\r\n series.defaultState.properties.visible = true;\r\n scrollbarChart.series.push(series);\r\n this.updateByOrientation();\r\n };\r\n /**\r\n * @ignore\r\n */\r\n XYChartScrollbar.prototype.updateByOrientation = function () {\r\n var _this = this;\r\n if (this._scrollbarChart) {\r\n $iter.each(this._scrollbarChart.xAxes.iterator(), function (xAxis) {\r\n var renderer = xAxis.renderer;\r\n if (_this.orientation == \"vertical\") {\r\n renderer.grid.template.disabled = true;\r\n renderer.labels.template.disabled = true;\r\n renderer.minGridDistance = 10;\r\n }\r\n else {\r\n renderer.grid.template.disabled = false;\r\n renderer.labels.template.disabled = false;\r\n renderer.minGridDistance = xAxis.clonedFrom.renderer.minGridDistance;\r\n }\r\n });\r\n $iter.each(this._scrollbarChart.yAxes.iterator(), function (yAxis) {\r\n var renderer = yAxis.renderer;\r\n if (_this.orientation == \"horizontal\") {\r\n renderer.grid.template.disabled = true;\r\n renderer.labels.template.disabled = true;\r\n renderer.minGridDistance = 10;\r\n }\r\n else {\r\n renderer.grid.template.disabled = false;\r\n renderer.labels.template.disabled = false;\r\n renderer.minGridDistance = yAxis.clonedFrom.renderer.minGridDistance;\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * Cleans up after series are removed from Scrollbar.\r\n *\r\n * @param event Event\r\n */\r\n XYChartScrollbar.prototype.handleSeriesRemoved = function (event) {\r\n var sourceSeries = event.oldValue;\r\n var scrollbarChart = this.scrollbarChart;\r\n scrollbarChart.series.each(function (series) {\r\n if (series && series.clonedFrom == sourceSeries) {\r\n scrollbarChart.series.removeValue(series);\r\n }\r\n });\r\n if (scrollbarChart.series.length == 0) {\r\n scrollbarChart.xAxes.clear();\r\n scrollbarChart.yAxes.clear();\r\n }\r\n try {\r\n sourceSeries.events.off(\"validated\", this.zoomOutAxes, this);\r\n }\r\n catch (err) {\r\n }\r\n };\r\n Object.defineProperty(XYChartScrollbar.prototype, \"scrollbarChart\", {\r\n /**\r\n * A chart element that is used to display graphs in the Scrollbar.\r\n *\r\n * This is not the same as `chart`. It's a totally independent instance of\r\n * [[XYChart]] with separate config, series, etc.\r\n *\r\n * It can be configured just like any other [[XYChart]].\r\n *\r\n * @readonly\r\n * @return Scrollbar's internal chart\r\n */\r\n get: function () {\r\n return this._scrollbarChart;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYChartScrollbar.prototype, \"chart\", {\r\n /**\r\n * @return Chart\r\n */\r\n get: function () {\r\n return this._chart.get();\r\n },\r\n /**\r\n * A chart that Scrollbar belongs to.\r\n *\r\n * @param chart Chart\r\n */\r\n set: function (chart) {\r\n if (this._chart.get() !== chart) {\r\n this._chart.set(chart, chart.events.on(\"datavalidated\", this.handleDataChanged, this, false));\r\n this.handleDataChanged();\r\n this._scrollbarChart.dataProvider = chart; // this makes scrollbar chart do not validate data untill charts' data is validated\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYChartScrollbar.prototype, \"unselectedOverlay\", {\r\n /**\r\n * A [[Sprite]] object representing overlay that is used to dim area of the\r\n * scrollbar that is currently not selected.\r\n *\r\n * Use its `fillOpacity` to set opacity of the fill, with `0` (zero)\r\n * completely disabling the dimming, and `1` making unselected area completely\r\n * blank.\r\n *\r\n * @since 4.6.1\r\n * @readonly\r\n * @return Unselected area curtain element\r\n */\r\n get: function () {\r\n return this._unselectedOverlay;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Updates Scrollbar's internal chart's data when the main chart's data\r\n * changes.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYChartScrollbar.prototype.handleDataChanged = function () {\r\n if (this.chart.data != this.scrollbarChart.data) {\r\n this.scrollbarChart.data = this.chart.data;\r\n }\r\n else {\r\n // add data is handled in XYChart\r\n // invalidating all data caused the problem: https://github.com/amcharts/amcharts4/issues/2096\r\n this.scrollbarChart.invalidateRawData();\r\n }\r\n };\r\n /**\r\n * Zooms out all axes on the internal chart.\r\n */\r\n XYChartScrollbar.prototype.zoomOutAxes = function () {\r\n var scrollbarChart = this.scrollbarChart;\r\n $iter.each(scrollbarChart.xAxes.iterator(), function (x) {\r\n x.zoom({ start: 0, end: 1 }, true, true);\r\n });\r\n $iter.each(scrollbarChart.yAxes.iterator(), function (y) {\r\n y.zoom({ start: 0, end: 1 }, true, true);\r\n });\r\n };\r\n /**\r\n * Updates scrollbar thumb.\r\n */\r\n XYChartScrollbar.prototype.updateThumb = function () {\r\n _super.prototype.updateThumb.call(this);\r\n if (this._unselectedOverlay) {\r\n var thumb = this.thumb;\r\n var x = thumb.pixelX || 0;\r\n var y = thumb.pixelY || 0;\r\n var w = thumb.pixelWidth || 0;\r\n var h = thumb.pixelHeight || 0;\r\n var path = \"\";\r\n if (this.orientation == \"horizontal\") {\r\n path = $path.rectToPath({\r\n x: -1,\r\n y: 0,\r\n width: x,\r\n height: h\r\n });\r\n path += $path.rectToPath({\r\n x: x + w,\r\n y: 0,\r\n width: (this.pixelWidth || 0) - x - w,\r\n height: h\r\n });\r\n }\r\n else {\r\n path = $path.rectToPath({\r\n x: 0,\r\n y: 0,\r\n width: w,\r\n height: y\r\n });\r\n path += $path.rectToPath({\r\n x: 0,\r\n y: y + h,\r\n width: w,\r\n height: (this.pixelHeight || 0) - y - h\r\n });\r\n }\r\n this._unselectedOverlay.path = path;\r\n }\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n XYChartScrollbar.prototype.processConfig = function (config) {\r\n if (config) {\r\n if ($type.hasValue(config.series) && $type.isArray(config.series)) {\r\n for (var i = 0, len = config.series.length; i < len; i++) {\r\n var series = config.series[i];\r\n if ($type.hasValue(series) && $type.isString(series)) {\r\n if (this.map.hasKey(series)) {\r\n config.series[i] = this.map.getKey(series);\r\n }\r\n else {\r\n throw Error(\"XYChartScrollbar error: Series with id `\" + series + \"` does not exist.\");\r\n }\r\n }\r\n }\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n return XYChartScrollbar;\r\n}(Scrollbar));\r\nexport { XYChartScrollbar };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"XYChartScrollbar\"] = XYChartScrollbar;\r\n//# sourceMappingURL=XYChartScrollbar.js.map","/**\r\n * XY Chart module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { SerialChart, SerialChartDataItem } from \"./SerialChart\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { List, ListDisposer } from \"../../core/utils/List\";\r\nimport { Color } from \"../../core/utils/Color\";\r\nimport { ValueAxis } from \"../axes/ValueAxis\";\r\nimport { DateAxis } from \"../axes/DateAxis\";\r\nimport { AxisRendererX } from \"../axes/AxisRendererX\";\r\nimport { AxisRendererY } from \"../axes/AxisRendererY\";\r\nimport { CategoryAxis } from \"../axes/CategoryAxis\";\r\nimport { XYSeries } from \"../series/XYSeries\";\r\nimport { Disposer } from \"../../core/utils/Disposer\";\r\nimport { ZoomOutButton } from \"../../core/elements/ZoomOutButton\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { XYChartScrollbar } from \"../elements/XYChartScrollbar\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport * as $number from \"../../core/utils/Number\";\r\nimport { defaultRules, ResponsiveBreakpoints } from \"../../core/utils/Responsive\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[XYChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar XYChartDataItem = /** @class */ (function (_super) {\r\n __extends(XYChartDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function XYChartDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"XYChartDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return XYChartDataItem;\r\n}(SerialChartDataItem));\r\nexport { XYChartDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates an XY chart, and any derivative chart, like Serial, Date-based, etc.\r\n *\r\n * Basically this is a chart type, that is used to display any chart\r\n * information in a square plot area.\r\n *\r\n * The horizontal and vertical scale is determined by the type of Axis.\r\n *\r\n * The plot types are determined by type of Series.\r\n *\r\n * ```TypeScript\r\n * // Includes\r\n * import * as am4core from \"@amcharts/amcharts4/core\";\r\n * import * as am4charts from \"@amcharts/amcharts4/charts\";\r\n *\r\n * // Create chart\r\n * let chart = am4core.create(\"chartdiv\", am4charts.XYChart);\r\n *\r\n * // Add Data\r\n * chart.data = [{\r\n * \"country\": \"USA\",\r\n * \"visits\": 3025\r\n * }, {\r\n * \t\"country\": \"China\",\r\n * \t\"visits\": 1882\r\n * }, {\r\n * \t\"country\": \"Japan\",\r\n * \t\"visits\": 1809\r\n * }];\r\n *\r\n * // Add category axis\r\n * let categoryAxis = chart.xAxes.push(new am4charts.CategoryAxis());\r\n * categoryAxis.dataFields.category = \"country\";\r\n *\r\n * // Add value axis\r\n * let valueAxis = chart.yAxes.push(new am4charts.ValueAxis());\r\n *\r\n * // Add series\r\n * let series = chart.series.push(new am4charts.ColumnSeries());\r\n * series.name = \"Web Traffic\";\r\n * series.dataFields.categoryX = \"country\";\r\n * series.dataFields.valueY = \"visits\";\r\n * ```\r\n * ```JavaScript\r\n * // Create chart\r\n * var chart = am4core.create(\"chartdiv\", am4charts.XYChart);\r\n *\r\n * // The following would work as well:\r\n * // var chart = am4core.create(\"chartdiv\", \"XYChart\");\r\n *\r\n * // Add Data\r\n * chart.data = [{\r\n * \"country\": \"USA\",\r\n * \"visits\": 3025\r\n * }, {\r\n * \t\"country\": \"China\",\r\n * \t\"visits\": 1882\r\n * }, {\r\n * \t\"country\": \"Japan\",\r\n * \t\"visits\": 1809\r\n * }];\r\n *\r\n * // Add category axis\r\n * var categoryAxis = chart.xAxes.push(new am4charts.CategoryAxis());\r\n * categoryAxis.dataFields.category = \"country\";\r\n *\r\n * // Add value axis\r\n * var valueAxis = chart.yAxes.push(new am4charts.ValueAxis());\r\n *\r\n * // Add series\r\n * var series = chart.series.push(new am4charts.ColumnSeries());\r\n * series.name = \"Web Traffic\";\r\n * series.dataFields.categoryX = \"country\";\r\n * series.dataFields.valueY = \"visits\";\r\n * ```\r\n * ```JSON\r\n * var chart = am4core.createFromConfig({\r\n *\r\n * \t// Category axis\r\n * \t\"xAxes\": [{\r\n * \t\t\"type\": \"CategoryAxis\",\r\n * \t\t\"dataFields\": {\r\n * \t\t\t\"category\": \"country\"\r\n * \t\t}\r\n * \t}],\r\n *\r\n * \t// Value axis\r\n * \t\"yAxes\": [{\r\n * \t\t\"type\": \"ValueAxis\"\r\n * \t}],\r\n *\r\n * \t// Series\r\n * \t\"series\": [{\r\n * \t\t\"type\": \"ColumnSeries\",\r\n * \t\t\"dataFields\": {\r\n * \t\t\t\"categoryX\": \"country\",\r\n * \t\t\t\"valueY\": \"visits\"\r\n * \t\t},\r\n * \t\t\"name\": \"Web Traffic\"\r\n * \t}],\r\n *\r\n * \t// Cursor\r\n * \t\"cursor\": {},\r\n *\r\n * \t// Data\r\n * \t\"data\": [{\r\n * \t\t\"country\": \"USA\",\r\n * \t\t\"visits\": 3025\r\n * \t}, {\r\n * \t\t\"country\": \"China\",\r\n * \t\t\"visits\": 1882\r\n * \t}, {\r\n * \t\t\"country\": \"Japan\",\r\n * \t\t\"visits\": 1809\r\n * \t}]\r\n *\r\n * }, \"chartdiv\", \"XYChart\");\r\n * ```\r\n *\r\n *\r\n * @see {@link IXYChartEvents} for a list of available Events\r\n * @see {@link IXYChartAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/xy-chart/} for documentation\r\n * @important\r\n */\r\nvar XYChart = /** @class */ (function (_super) {\r\n __extends(XYChart, _super);\r\n /**\r\n * Constructor\r\n */\r\n function XYChart() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Defines the type of horizontal axis rederer.\r\n */\r\n _this._axisRendererX = AxisRendererX;\r\n /**\r\n * Defines the type of vertical axis rederer.\r\n */\r\n _this._axisRendererY = AxisRendererY;\r\n /**\r\n * @ignore\r\n */\r\n _this._seriesPoints = [];\r\n _this.className = \"XYChart\";\r\n // Set defaults\r\n //this.margin(10, 10, 10, 10);\r\n _this.maskBullets = true;\r\n _this.arrangeTooltips = true;\r\n // Create main chart container\r\n var chartContainer = _this.chartContainer;\r\n chartContainer.layout = \"vertical\";\r\n _this.padding(15, 15, 15, 15);\r\n // Create top axes container\r\n var topAxesCont = chartContainer.createChild(Container);\r\n topAxesCont.shouldClone = false;\r\n topAxesCont.layout = \"vertical\";\r\n topAxesCont.width = percent(100);\r\n topAxesCont.zIndex = 1;\r\n _this.topAxesContainer = topAxesCont;\r\n // Create vertical axes and plot area container\r\n // Plot area and vertical axes share the whole width of the chart,\r\n // so we need to put then into a separate container so that layouting\r\n // engine takes care of the positioning\r\n var yAxesAndPlotCont = chartContainer.createChild(Container);\r\n yAxesAndPlotCont.shouldClone = false;\r\n yAxesAndPlotCont.layout = \"horizontal\";\r\n yAxesAndPlotCont.width = percent(100);\r\n yAxesAndPlotCont.height = percent(100);\r\n yAxesAndPlotCont.zIndex = 0;\r\n _this.yAxesAndPlotContainer = yAxesAndPlotCont;\r\n // Create a container for bottom axes\r\n var bottomAxesCont = chartContainer.createChild(Container);\r\n bottomAxesCont.shouldClone = false;\r\n bottomAxesCont.width = percent(100);\r\n bottomAxesCont.layout = \"vertical\";\r\n bottomAxesCont.zIndex = 1;\r\n _this.bottomAxesContainer = bottomAxesCont;\r\n // Create a container for left-side axes\r\n var leftAxesCont = yAxesAndPlotCont.createChild(Container);\r\n leftAxesCont.shouldClone = false;\r\n leftAxesCont.layout = \"horizontal\";\r\n leftAxesCont.height = percent(100);\r\n leftAxesCont.contentAlign = \"right\";\r\n leftAxesCont.events.on(\"transformed\", _this.updateXAxesMargins, _this, false);\r\n leftAxesCont.zIndex = 1;\r\n _this.leftAxesContainer = leftAxesCont;\r\n // Create a container for plot area\r\n var plotCont = yAxesAndPlotCont.createChild(Container);\r\n plotCont.shouldClone = false;\r\n plotCont.height = percent(100);\r\n plotCont.width = percent(100);\r\n // Create transparend background for plot container so that hover works\r\n // on all of it\r\n plotCont.background.fillOpacity = 0;\r\n _this.plotContainer = plotCont;\r\n // must go below plot container\r\n _this.mouseWheelBehavior = \"none\";\r\n _this._cursorContainer = plotCont;\r\n // Create a container for right-side axes\r\n var rightAxesCont = yAxesAndPlotCont.createChild(Container);\r\n rightAxesCont.shouldClone = false;\r\n rightAxesCont.layout = \"horizontal\";\r\n rightAxesCont.height = percent(100);\r\n rightAxesCont.zIndex = 1;\r\n rightAxesCont.events.on(\"transformed\", _this.updateXAxesMargins, _this, false);\r\n _this.rightAxesContainer = rightAxesCont;\r\n _this.seriesContainer.parent = plotCont;\r\n _this.bulletsContainer.parent = plotCont;\r\n var zoomOutButton = plotCont.createChild(ZoomOutButton);\r\n zoomOutButton.shouldClone = false;\r\n zoomOutButton.align = \"right\";\r\n zoomOutButton.valign = \"top\";\r\n zoomOutButton.zIndex = Number.MAX_SAFE_INTEGER;\r\n zoomOutButton.marginTop = 5;\r\n zoomOutButton.marginRight = 5;\r\n zoomOutButton.hide(0);\r\n _this.zoomOutButton = zoomOutButton;\r\n // Create a container for bullets\r\n var axisBulletsContainer = _this.plotContainer.createChild(Container);\r\n axisBulletsContainer.shouldClone = false;\r\n axisBulletsContainer.width = percent(100);\r\n axisBulletsContainer.height = percent(100);\r\n axisBulletsContainer.isMeasured = false;\r\n axisBulletsContainer.zIndex = 4;\r\n axisBulletsContainer.layout = \"none\";\r\n _this.axisBulletsContainer = axisBulletsContainer;\r\n _this._bulletMask = _this.plotContainer;\r\n _this.events.on(\"beforedatavalidated\", function () {\r\n _this.series.each(function (series) {\r\n series.dataGrouped = false;\r\n series._baseInterval = {};\r\n });\r\n }, _this, false);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n XYChart.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n this.zoomOutButton.exportable = false;\r\n // Add a default screen reader title for accessibility\r\n // This will be overridden in screen reader if there are any `titles` set\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"X/Y chart\");\r\n }\r\n };\r\n /**\r\n * Draws the chart.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYChart.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n this.seriesContainer.toFront();\r\n this.bulletsContainer.toFront();\r\n if (this.maskBullets) {\r\n this.bulletsContainer.mask = this._bulletMask;\r\n }\r\n this.updateSeriesLegend();\r\n };\r\n /**\r\n * Triggers a redrawing of all chart's series.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYChart.prototype.updatePlotElements = function () {\r\n $iter.each(this.series.iterator(), function (series) {\r\n series.invalidate();\r\n });\r\n };\r\n /**\r\n * Triggers data (re)validation which in turn can cause a redraw of the\r\n * whole chart or just aprticular series / elements.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYChart.prototype.validateData = function () {\r\n // tell axes that data changed\r\n if (this._parseDataFrom == 0) {\r\n $iter.each(this.xAxes.iterator(), function (axis) {\r\n axis.dataChangeUpdate();\r\n });\r\n $iter.each(this.yAxes.iterator(), function (axis) {\r\n axis.dataChangeUpdate();\r\n });\r\n $iter.each(this.series.iterator(), function (series) {\r\n series.dataChangeUpdate();\r\n });\r\n }\r\n _super.prototype.validateData.call(this);\r\n };\r\n /**\r\n * Updates margins for horizontal axes based on settings and available space.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYChart.prototype.updateXAxesMargins = function () {\r\n var leftAxesWidth = this.leftAxesContainer.measuredWidth;\r\n var rightAxesWidth = this.rightAxesContainer.measuredWidth;\r\n var bottomAxesCont = this.bottomAxesContainer;\r\n if (bottomAxesCont.paddingLeft != leftAxesWidth || bottomAxesCont.paddingRight != rightAxesWidth) {\r\n bottomAxesCont.paddingLeft = leftAxesWidth;\r\n bottomAxesCont.paddingRight = rightAxesWidth;\r\n }\r\n var topAxesCont = this.topAxesContainer;\r\n if (topAxesCont.paddingLeft != leftAxesWidth || topAxesCont.paddingRight != rightAxesWidth) {\r\n topAxesCont.paddingLeft = leftAxesWidth;\r\n topAxesCont.paddingRight = rightAxesWidth;\r\n }\r\n };\r\n /**\r\n * Triggers a re-initialization of this element.\r\n *\r\n * Will result in complete redrawing of the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYChart.prototype.reinit = function () {\r\n _super.prototype.reinit.call(this);\r\n this.series.each(function (series) {\r\n series.appeared = false;\r\n });\r\n };\r\n /**\r\n * Triggers an update on the horizontal axis when one of its properties\r\n * change.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event An event object\r\n */\r\n XYChart.prototype.handleXAxisChange = function (event) {\r\n this.updateXAxis(event.target);\r\n };\r\n /**\r\n * Triggers an update on the vertical axis when one of its properties\r\n * change.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event An event object\r\n */\r\n XYChart.prototype.handleYAxisChange = function (event) {\r\n this.updateYAxis(event.target);\r\n };\r\n /**\r\n * Sets up a new horizontal (X) axis when it is added to the chart.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Axis insert event\r\n */\r\n XYChart.prototype.processXAxis = function (event) {\r\n var axis = event.newValue;\r\n axis.chart = this;\r\n if (!axis.renderer) {\r\n axis.renderer = new this._axisRendererX();\r\n axis.renderer.observe([\"opposite\", \"inside\", \"inversed\", \"minGridDistance\"], this.handleXAxisChange, this, false);\r\n }\r\n axis.axisLetter = \"X\";\r\n axis.events.on(\"startendchanged\", this.handleXAxisRangeChange, this, false);\r\n //axis.events.on(\"endchanged\", this.handleXAxisRangeChange, this, false);\r\n // Although axis does not use data directly, we set dataProvider here\r\n // (but not add to chart data users) to hold up rendering before data\r\n // is parsed (system handles this)\r\n axis.dataProvider = this;\r\n this.updateXAxis(axis.renderer);\r\n this.processAxis(axis);\r\n };\r\n /**\r\n * Sets up a new vertical (Y) axis when it is added to the chart.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Axis insert event\r\n */\r\n XYChart.prototype.processYAxis = function (event) {\r\n var axis = event.newValue;\r\n axis.chart = this;\r\n if (!axis.renderer) {\r\n axis.renderer = new this._axisRendererY();\r\n axis.renderer.observe([\"opposite\", \"inside\", \"inversed\", \"minGridDistance\"], this.handleYAxisChange, this, false);\r\n }\r\n axis.axisLetter = \"Y\";\r\n axis.events.on(\"startendchanged\", this.handleYAxisRangeChange, this, false);\r\n //axis.events.on(\"endchanged\", this.handleYAxisRangeChange, this, false);\r\n // Although axis does not use data directly, we set dataProvider here\r\n // (but not add to chart data users) to hold up rendering before data\r\n // is parsed (system handles this)\r\n axis.dataProvider = this;\r\n this.updateYAxis(axis.renderer);\r\n this.processAxis(axis);\r\n };\r\n /**\r\n * Updates horizontal (X) scrollbar and other horizontal axis whenever axis'\r\n * value range changes.\r\n */\r\n XYChart.prototype.handleXAxisRangeChange = function () {\r\n var range = this.getCommonAxisRange(this.xAxes);\r\n if (this.scrollbarX) {\r\n this.zoomAxes(this.xAxes, range, true);\r\n }\r\n this.toggleZoomOutButton();\r\n this.updateScrollbar(this.scrollbarX, range);\r\n };\r\n /**\r\n * Shows or hides the Zoom Out button depending on whether the chart is fully\r\n * zoomed out or not.\r\n */\r\n XYChart.prototype.toggleZoomOutButton = function () {\r\n if (this.zoomOutButton) {\r\n var show_1 = false;\r\n $iter.eachContinue(this.xAxes.iterator(), function (axis) {\r\n if (axis.toggleZoomOutButton) {\r\n if (axis.maxZoomCount > 0) {\r\n var minZoomFactor = axis.maxZoomFactor / axis.maxZoomCount;\r\n if ($math.round(axis.end - axis.start, 3) < 1 / minZoomFactor) {\r\n show_1 = true;\r\n return false;\r\n }\r\n }\r\n else {\r\n if ($math.round(axis.start, 3) > 0 || $math.round(axis.end, 3) < 1) {\r\n show_1 = true;\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n });\r\n $iter.eachContinue(this.yAxes.iterator(), function (axis) {\r\n if (axis.toggleZoomOutButton) {\r\n if (axis.maxZoomCount > 0) {\r\n var minZoomFactor = axis.maxZoomFactor / axis.maxZoomCount;\r\n if ($math.round(axis.end - axis.start, 3) < 1 / minZoomFactor) {\r\n show_1 = true;\r\n return false;\r\n }\r\n }\r\n else {\r\n if ($math.round(axis.start, 3) > 0 || $math.round(axis.end, 3) < 1) {\r\n show_1 = true;\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n });\r\n if (!this.seriesAppeared) {\r\n show_1 = false;\r\n }\r\n if (show_1) {\r\n this.zoomOutButton.show();\r\n }\r\n else {\r\n this.zoomOutButton.hide();\r\n }\r\n }\r\n };\r\n /**\r\n * @ignore\r\n * moved this check to a separate method so that we could override it in TreeMapSeries\r\n */\r\n XYChart.prototype.seriesAppeared = function () {\r\n var appeared = false;\r\n $iter.each(this.series.iterator(), function (series) {\r\n if (!series.appeared) {\r\n appeared = false;\r\n return false;\r\n }\r\n });\r\n return appeared;\r\n };\r\n /**\r\n * Updates vertical (Y) scrollbar and other horizontal axis whenever axis'\r\n * value range changes.\r\n */\r\n XYChart.prototype.handleYAxisRangeChange = function () {\r\n var range = this.getCommonAxisRange(this.yAxes);\r\n if (this.scrollbarY) {\r\n this.zoomAxes(this.yAxes, range, true);\r\n }\r\n this.toggleZoomOutButton();\r\n this.updateScrollbar(this.scrollbarY, range);\r\n };\r\n /**\r\n * Updates a relative scrollbar whenever data range of the axis changes.\r\n *\r\n * @param scrollbar Scrollbar instance\r\n * @param range New data (values) range of the axis\r\n */\r\n XYChart.prototype.updateScrollbar = function (scrollbar, range) {\r\n if (scrollbar) {\r\n scrollbar.skipRangeEvents();\r\n scrollbar.start = range.start;\r\n scrollbar.end = range.end;\r\n }\r\n };\r\n /**\r\n * Returns a common range of values between a list of axes.\r\n *\r\n * This is used to synchronize the zoom between multiple axes.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axes A list of axes\r\n * @return Common value range\r\n */\r\n XYChart.prototype.getCommonAxisRange = function (axes) {\r\n var start;\r\n var end;\r\n axes.each(function (axis) {\r\n if (!axis.zoomable || (axis instanceof ValueAxis && axis.syncWithAxis)) {\r\n }\r\n else {\r\n var axisStart = axis.start;\r\n var axisEnd = axis.end;\r\n if (axis.renderer.inversed) {\r\n axisStart = 1 - axis.end;\r\n axisEnd = 1 - axis.start;\r\n }\r\n if (!$type.isNumber(start) || (axisStart < start)) {\r\n start = axisStart;\r\n }\r\n if (!$type.isNumber(end) || (axisEnd > end)) {\r\n end = axisEnd;\r\n }\r\n }\r\n });\r\n return { start: start, end: end };\r\n };\r\n /**\r\n * Triggers (re)rendering of the horizontal (X) axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axis Axis\r\n */\r\n XYChart.prototype.updateXAxis = function (renderer) {\r\n var axis = renderer.axis;\r\n if (renderer.opposite) {\r\n axis.parent = this.topAxesContainer;\r\n axis.toFront();\r\n }\r\n else {\r\n axis.parent = this.bottomAxesContainer;\r\n axis.toBack();\r\n }\r\n if (axis.renderer) {\r\n axis.renderer.processRenderer();\r\n }\r\n };\r\n /**\r\n * Triggers (re)rendering of the vertical (Y) axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axis Axis\r\n */\r\n XYChart.prototype.updateYAxis = function (renderer) {\r\n var axis = renderer.axis;\r\n if (renderer.opposite) {\r\n axis.parent = this.rightAxesContainer;\r\n axis.toBack();\r\n }\r\n else {\r\n axis.parent = this.leftAxesContainer;\r\n axis.toFront();\r\n }\r\n if (axis.renderer) {\r\n axis.renderer.processRenderer();\r\n }\r\n };\r\n /**\r\n * Decorates an Axis for use with this chart, e.g. sets proper renderer\r\n * and containers for placement.\r\n *\r\n * @param axis Axis\r\n */\r\n XYChart.prototype.processAxis = function (axis) {\r\n var _this = this;\r\n // Value axis does not use data directly, only category axis does\r\n if (axis instanceof CategoryAxis) {\r\n this._dataUsers.moveValue(axis);\r\n }\r\n var renderer = axis.renderer;\r\n renderer.gridContainer.parent = this.plotContainer;\r\n renderer.gridContainer.toBack();\r\n renderer.breakContainer.parent = this.plotContainer;\r\n renderer.breakContainer.toFront();\r\n renderer.breakContainer.zIndex = 10;\r\n axis.addDisposer(new Disposer(function () {\r\n _this.dataUsers.removeValue(axis);\r\n }));\r\n renderer.bulletsContainer.parent = this.axisBulletsContainer;\r\n this._disposers.push(axis.events.on(\"positionchanged\", function () {\r\n var point = $utils.spritePointToSprite({ x: 0, y: 0 }, axis, _this.axisBulletsContainer);\r\n if (axis.renderer instanceof AxisRendererY) {\r\n renderer.bulletsContainer.y = point.y;\r\n }\r\n if (axis.renderer instanceof AxisRendererX) {\r\n renderer.bulletsContainer.x = point.x;\r\n }\r\n }, undefined, false));\r\n this.plotContainer.events.on(\"maxsizechanged\", function () {\r\n if (_this.inited) {\r\n axis.invalidateDataItems();\r\n _this.updateSeriesMasks();\r\n }\r\n }, axis, false);\r\n };\r\n /**\r\n * This is done because for some reason IE doesn't change mask if path of a\r\n * mask changes.\r\n */\r\n XYChart.prototype.updateSeriesMasks = function () {\r\n if ($utils.isIE()) {\r\n this.series.each(function (series) {\r\n var mask = series.mainContainer.mask;\r\n series.mainContainer.mask = undefined;\r\n series.mainContainer.mask = mask;\r\n });\r\n }\r\n };\r\n XYChart.prototype.handleSeriesRemoved = function (event) {\r\n var series = event.oldValue;\r\n if (series) {\r\n if (series.xAxis) {\r\n series.xAxis.series.removeValue(series);\r\n series.xAxis.invalidateProcessedData();\r\n }\r\n if (series.yAxis) {\r\n series.yAxis.series.removeValue(series);\r\n series.yAxis.invalidateProcessedData();\r\n }\r\n // otherwise extremes won't change\r\n this.series.each(function (series) {\r\n series.resetExtremes();\r\n });\r\n }\r\n _super.prototype.handleSeriesRemoved.call(this, event);\r\n };\r\n Object.defineProperty(XYChart.prototype, \"xAxes\", {\r\n /**\r\n * A list of horizontal (X) axes.\r\n *\r\n * @return List of axes\r\n */\r\n get: function () {\r\n if (!this._xAxes) {\r\n this._xAxes = new List();\r\n this._xAxes.events.on(\"inserted\", this.processXAxis, this, false);\r\n this._xAxes.events.on(\"removed\", this.handleAxisRemoval, this, false);\r\n this._disposers.push(new ListDisposer(this._xAxes, false));\r\n }\r\n return this._xAxes;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n XYChart.prototype.handleAxisRemoval = function (event) {\r\n var axis = event.oldValue;\r\n this.dataUsers.removeValue(axis); // need to remove, as it might not be disposed\r\n if (axis.autoDispose) {\r\n axis.dispose();\r\n }\r\n };\r\n Object.defineProperty(XYChart.prototype, \"yAxes\", {\r\n /**\r\n * A list of vertical (Y) axes.\r\n *\r\n * @return List of axes\r\n */\r\n get: function () {\r\n if (!this._yAxes) {\r\n this._yAxes = new List();\r\n this._yAxes.events.on(\"inserted\", this.processYAxis, this, false);\r\n this._yAxes.events.on(\"removed\", this.handleAxisRemoval, this, false);\r\n this._disposers.push(new ListDisposer(this._yAxes, false));\r\n }\r\n return this._yAxes;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Decorates a new [[XYSeries]] object with required parameters when it is\r\n * added to the chart.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\r\n XYChart.prototype.handleSeriesAdded = function (event) {\r\n try {\r\n _super.prototype.handleSeriesAdded.call(this, event);\r\n var series = event.newValue;\r\n if (this.xAxes.length == 0 || this.yAxes.length == 0) {\r\n registry.removeFromInvalidComponents(series);\r\n series.dataInvalid = false;\r\n }\r\n $utils.used(series.xAxis); // this is enough to get axis, handled in getter\r\n $utils.used(series.yAxis); // this is enough to get axis, handled in getter\r\n series.maskBullets = series.maskBullets;\r\n if (series.fill == undefined) {\r\n if (this.patterns) {\r\n if (!$type.hasValue(series.stroke)) {\r\n series.stroke = this.colors.next();\r\n }\r\n series.fill = this.patterns.next();\r\n if ($type.hasValue(series.fillOpacity)) {\r\n series.fill.backgroundOpacity = series.fillOpacity;\r\n }\r\n if (series.stroke instanceof Color) {\r\n series.fill.stroke = series.stroke;\r\n series.fill.fill = series.stroke;\r\n }\r\n }\r\n else {\r\n series.fill = this.colors.next();\r\n }\r\n }\r\n if (!$type.hasValue(series.stroke)) {\r\n series.stroke = series.fill;\r\n }\r\n }\r\n catch (e) {\r\n this.raiseCriticalError(e);\r\n }\r\n };\r\n Object.defineProperty(XYChart.prototype, \"cursor\", {\r\n /**\r\n * @return Cursor\r\n */\r\n get: function () {\r\n return this._cursor;\r\n },\r\n /**\r\n * Chart's [[Cursor]].\r\n *\r\n * @param cursor Cursor\r\n */\r\n set: function (cursor) {\r\n if (this._cursor != cursor) {\r\n if (this._cursor) {\r\n this.removeDispose(this._cursor);\r\n }\r\n this._cursor = cursor;\r\n if (cursor) {\r\n // TODO this is wrong, fix it\r\n this._disposers.push(cursor);\r\n cursor.chart = this;\r\n cursor.shouldClone = false;\r\n cursor.parent = this._cursorContainer;\r\n cursor.events.on(\"cursorpositionchanged\", this.handleCursorPositionChange, this, false);\r\n cursor.events.on(\"zoomstarted\", this.handleCursorZoomStart, this, false);\r\n cursor.events.on(\"zoomended\", this.handleCursorZoomEnd, this, false);\r\n cursor.events.on(\"panstarted\", this.handleCursorPanStart, this, false);\r\n cursor.events.on(\"panning\", this.handleCursorPanning, this, false);\r\n cursor.events.on(\"panended\", this.handleCursorPanEnd, this, false);\r\n cursor.events.on(\"behaviorcanceled\", this.handleCursorCanceled, this, false);\r\n cursor.events.on(\"hidden\", this.handleHideCursor, this, false);\r\n cursor.zIndex = Number.MAX_SAFE_INTEGER - 1;\r\n if (this.tapToActivate) {\r\n // We need this in order to setup cursor properly\r\n this.setTapToActivate(this.tapToActivate);\r\n }\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Performs tasks when the cursor's position changes, e.g. shows proper\r\n * tooltips on axes and series.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYChart.prototype.handleCursorPositionChange = function () {\r\n var cursor = this.cursor;\r\n if (cursor.visible && !cursor.isHiding) {\r\n var xPosition_1 = this.cursor.xPosition;\r\n var yPosition_1 = this.cursor.yPosition;\r\n this.showSeriesTooltip({\r\n x: xPosition_1,\r\n y: yPosition_1\r\n });\r\n var exceptAxes_1 = [];\r\n var snapToSeries = cursor.snapToSeries;\r\n if (snapToSeries && !cursor.downPoint) {\r\n if (snapToSeries instanceof XYSeries) {\r\n snapToSeries = [snapToSeries];\r\n }\r\n var dataItems_1 = [];\r\n $array.each(snapToSeries, function (snpSeries) {\r\n if (!snpSeries.isHidden && !snpSeries.isHiding) {\r\n var xAxis = snpSeries.xAxis;\r\n var yAxis = snpSeries.yAxis;\r\n if (xAxis instanceof ValueAxis && !(xAxis instanceof DateAxis) && yAxis instanceof ValueAxis && !(yAxis instanceof DateAxis)) {\r\n snpSeries.dataItems.each(function (dataItem) {\r\n dataItems_1.push(dataItem);\r\n });\r\n $array.move(exceptAxes_1, snpSeries.yAxis);\r\n $array.move(exceptAxes_1, snpSeries.xAxis);\r\n }\r\n else {\r\n if (snpSeries.baseAxis == snpSeries.xAxis) {\r\n $array.move(exceptAxes_1, snpSeries.yAxis);\r\n dataItems_1.push(xAxis.getSeriesDataItem(snpSeries, xAxis.toAxisPosition(xPosition_1), true));\r\n }\r\n if (snpSeries.baseAxis == snpSeries.yAxis) {\r\n $array.move(exceptAxes_1, snpSeries.xAxis);\r\n dataItems_1.push(yAxis.getSeriesDataItem(snpSeries, yAxis.toAxisPosition(yPosition_1), true));\r\n }\r\n }\r\n }\r\n });\r\n var closestDataItem_1 = this.getClosest(dataItems_1, xPosition_1, yPosition_1);\r\n if (closestDataItem_1) {\r\n this.series.each(function (series) {\r\n var closestSeries = closestDataItem_1.component;\r\n if (series != closestSeries) {\r\n series.hideTooltip();\r\n if (series.xAxis != closestSeries.xAxis) {\r\n series.xAxis.hideTooltip();\r\n exceptAxes_1.push(series.xAxis);\r\n }\r\n if (series.yAxis != closestSeries.yAxis) {\r\n series.yAxis.hideTooltip();\r\n exceptAxes_1.push(series.yAxis);\r\n }\r\n }\r\n });\r\n closestDataItem_1.component.showTooltipAtDataItem(closestDataItem_1);\r\n cursor.handleSnap(closestDataItem_1.component);\r\n }\r\n }\r\n //}\r\n this._seriesPoints = [];\r\n if (this._cursorXPosition != xPosition_1) {\r\n this.showAxisTooltip(this.xAxes, xPosition_1, exceptAxes_1);\r\n }\r\n if (this._cursorYPosition != yPosition_1) {\r\n this.showAxisTooltip(this.yAxes, yPosition_1, exceptAxes_1);\r\n }\r\n if (this.arrangeTooltips) {\r\n this.sortSeriesTooltips(this._seriesPoints);\r\n }\r\n if (this.legend) {\r\n this.legend.afterDraw();\r\n }\r\n }\r\n };\r\n /**\r\n * Finds closest data item to position out of the array of items.\r\n *\r\n * @since 4.9.29\r\n * @param dataItems Array of items\r\n * @param xPosition X position\r\n * @param yPosition Y position\r\n * @return Data item\r\n */\r\n XYChart.prototype.getClosest = function (dataItems, xPosition, yPosition) {\r\n var minDistance = Infinity;\r\n var closestDataItem;\r\n $array.eachContinue(dataItems, function (dataItem) {\r\n if (dataItem) {\r\n var xAxis = dataItem.component.xAxis;\r\n var yAxis = dataItem.component.yAxis;\r\n var xPos = xAxis.positionToCoordinate(xAxis.toGlobalPosition(xAxis.toAxisPosition(xPosition)));\r\n var yPos = yAxis.positionToCoordinate(yAxis.toGlobalPosition(yAxis.toAxisPosition(yPosition)));\r\n var xField = dataItem.component.xField;\r\n var yField = dataItem.component.yField;\r\n if (xAxis instanceof ValueAxis && !$type.isNumber(dataItem.getValue(xField))) {\r\n return true;\r\n }\r\n if (yAxis instanceof ValueAxis && !$type.isNumber(dataItem.getValue(yField))) {\r\n return true;\r\n }\r\n var dxPosition = xAxis.positionToCoordinate(xAxis.toGlobalPosition(xAxis.getPositionX(dataItem, xField, dataItem.locations[xField], \"valueX\")));\r\n var dyPosition = yAxis.positionToCoordinate(yAxis.toGlobalPosition(yAxis.getPositionY(dataItem, yField, dataItem.locations[yField], \"valueY\")));\r\n var distance = Math.sqrt(Math.pow(xPos - dxPosition, 2) + Math.pow(yPos - dyPosition, 2));\r\n if (distance < minDistance) {\r\n minDistance = distance;\r\n closestDataItem = dataItem;\r\n }\r\n return true;\r\n }\r\n });\r\n return closestDataItem;\r\n };\r\n /**\r\n * Hides all cursor-related tooltips when the cursor itself is hidden.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYChart.prototype.handleHideCursor = function () {\r\n this.hideObjectTooltip(this.xAxes);\r\n this.hideObjectTooltip(this.yAxes);\r\n this.hideObjectTooltip(this.series);\r\n this._cursorXPosition = undefined;\r\n this._cursorYPosition = undefined;\r\n this.updateSeriesLegend();\r\n };\r\n /**\r\n * Updates values for each series' legend item.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYChart.prototype.updateSeriesLegend = function () {\r\n $iter.each(this.series.iterator(), function (series) {\r\n series.updateLegendValue();\r\n });\r\n };\r\n /**\r\n * Hides a tooltip for a list of objects.\r\n *\r\n * @ignore Exclude from docs\r\n * @param sprites A list of sprites to hide tooltip for\r\n */\r\n XYChart.prototype.hideObjectTooltip = function (sprites) {\r\n $iter.each(sprites.iterator(), function (sprite) {\r\n if (sprite.cursorTooltipEnabled) {\r\n sprite.hideTooltip(0);\r\n }\r\n });\r\n };\r\n /**\r\n * Shows a tooltip for all chart's series, using specific coordinates as a\r\n * reference point.\r\n *\r\n * The tooltip might be shown at different coordinates depending on the\r\n * actual data point's position, overlapping with other tooltips, etc.\r\n *\r\n * @ignore Exclude from docs\r\n * @param position Reference point\r\n */\r\n XYChart.prototype.showSeriesTooltip = function (position) {\r\n var _this = this;\r\n if (!position) {\r\n this.series.each(function (series) {\r\n series.hideTooltip();\r\n });\r\n return;\r\n }\r\n var seriesPoints = [];\r\n this.series.each(function (series) {\r\n //if (series.tooltipText || series.tooltipHTML) { // not good, bullets are not hovered then\r\n if ((series.xAxis instanceof DateAxis && series.xAxis.snapTooltip) || (series.yAxis instanceof DateAxis && series.yAxis.snapTooltip)) {\r\n // void\r\n }\r\n else {\r\n var point = series.showTooltipAtPosition(position.x, position.y);\r\n if (point) {\r\n series.tooltip.setBounds($utils.spriteRectToSvg({ x: 0, y: 0, width: _this.pixelWidth, height: _this.pixelHeight }, _this));\r\n seriesPoints.push({ series: series, point: point });\r\n }\r\n }\r\n //}\r\n });\r\n if (this.arrangeTooltips) {\r\n this.sortSeriesTooltips(seriesPoints);\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n XYChart.prototype.sortSeriesTooltips = function (seriesPoints) {\r\n if (seriesPoints.length > 0) {\r\n var cursor_1 = this.cursor;\r\n if (cursor_1 && $type.isNumber(cursor_1.maxTooltipDistance)) {\r\n var cursorPoint_1 = $utils.spritePointToSvg({ x: cursor_1.point.x, y: cursor_1.point.y }, cursor_1);\r\n var nearestSeries_1;\r\n var nearestPoint_1;\r\n var smallestDistance_1 = Infinity;\r\n $array.each(seriesPoints, function (seriesPoint) {\r\n var series = seriesPoint.series;\r\n var fixedPoint = seriesPoint.point;\r\n if (fixedPoint) {\r\n var point = { x: fixedPoint.x, y: fixedPoint.y };\r\n var distance = Math.abs($math.getDistance(point, cursorPoint_1));\r\n if (distance < smallestDistance_1) {\r\n nearestPoint_1 = point;\r\n smallestDistance_1 = distance;\r\n nearestSeries_1 = series;\r\n }\r\n }\r\n });\r\n var newSeriesPoints_1 = [];\r\n if (nearestSeries_1) {\r\n $array.each(seriesPoints, function (seriesPoint) {\r\n if (Math.abs($math.getDistance(seriesPoint.point, nearestPoint_1)) <= Math.abs(cursor_1.maxTooltipDistance)) {\r\n newSeriesPoints_1.push({ series: seriesPoint.series, point: seriesPoint.point });\r\n }\r\n else {\r\n var tooltipDataItem = seriesPoint.series.tooltipDataItem;\r\n if (tooltipDataItem) {\r\n $array.each(tooltipDataItem.sprites, function (sprite) {\r\n sprite.isHover = false;\r\n sprite.handleOutReal(); // to avoid flicker\r\n });\r\n }\r\n seriesPoint.series.hideTooltip(0);\r\n }\r\n });\r\n if (cursor_1.maxTooltipDistance < 0) {\r\n if (newSeriesPoints_1.length > 0) {\r\n $array.each(newSeriesPoints_1, function (np) {\r\n if (nearestSeries_1 != np.series) {\r\n np.series.hideTooltip(0);\r\n }\r\n });\r\n }\r\n newSeriesPoints_1 = [{ series: nearestSeries_1, point: nearestPoint_1 }];\r\n }\r\n }\r\n seriesPoints = newSeriesPoints_1;\r\n }\r\n var topLeft_1 = $utils.spritePointToSvg({ x: -0.5, y: -0.5 }, this.plotContainer);\r\n var bottomRight_1 = $utils.spritePointToSvg({ x: this.plotContainer.pixelWidth + 0.5, y: this.plotContainer.pixelHeight + 0.5 }, this.plotContainer);\r\n var sum_1 = 0;\r\n var filteredSeriesPoints_1 = [];\r\n $array.each(seriesPoints, function (seriesPoint) {\r\n var point = seriesPoint.point;\r\n if (point && $math.isInRectangle(point, { x: topLeft_1.x, y: topLeft_1.y, width: bottomRight_1.x - topLeft_1.x, height: bottomRight_1.y - topLeft_1.y })) {\r\n filteredSeriesPoints_1.push({ point: point, series: seriesPoint.series });\r\n sum_1 += point.y;\r\n }\r\n });\r\n seriesPoints = filteredSeriesPoints_1;\r\n var firstSeries = this.series.getIndex(0);\r\n var inversed = false;\r\n if (firstSeries && firstSeries.yAxis && firstSeries.yAxis.renderer.inversed) {\r\n inversed = true;\r\n }\r\n if (inversed) {\r\n seriesPoints.sort(function (a, b) { return $number.order(a.point.y, b.point.y); });\r\n }\r\n else {\r\n seriesPoints.sort(function (a, b) { return $number.order(b.point.y, a.point.y); });\r\n seriesPoints.reverse();\r\n }\r\n var averageY = sum_1 / seriesPoints.length;\r\n var maxY = $utils.svgPointToDocument({ x: 0, y: 0 }, this.svgContainer.SVGContainer).y;\r\n if (seriesPoints.length > 0) {\r\n var top_1 = topLeft_1.y;\r\n var bottom = bottomRight_1.y;\r\n // TODO is this needed ?\r\n $utils.spritePointToDocument({ x: 0, y: top_1 }, this);\r\n var dropped = false;\r\n if (averageY > top_1 + (bottom - top_1) / 2) {\r\n var nextHeight = bottom;\r\n for (var i = seriesPoints.length - 1; i >= 0; i--) {\r\n var series = seriesPoints[i].series;\r\n var tooltip = series.tooltip;\r\n var pointY = seriesPoints[i].point.y;\r\n tooltip.setBounds({ x: 0, y: -maxY, width: this.pixelWidth, height: nextHeight + maxY });\r\n if (tooltip.invalid) {\r\n tooltip.validate();\r\n }\r\n tooltip.toBack();\r\n nextHeight = $utils.spritePointToSvg({ x: 0, y: tooltip.label.pixelY - tooltip.pixelY + pointY - tooltip.pixelMarginTop }, tooltip).y;\r\n if (nextHeight < -maxY) {\r\n dropped = true;\r\n break;\r\n }\r\n }\r\n }\r\n if (averageY <= top_1 + (bottom - top_1) / 2 || dropped) {\r\n var nextY = top_1;\r\n for (var i = 0, len = seriesPoints.length; i < len; i++) {\r\n var series = seriesPoints[i].series;\r\n var pointY = seriesPoints[i].point.y;\r\n var tooltip = series.tooltip;\r\n tooltip.setBounds({ x: 0, y: nextY, width: this.pixelWidth, height: bottom });\r\n if (tooltip.invalid) {\r\n tooltip.validate();\r\n }\r\n tooltip.toBack();\r\n nextY = $utils.spritePointToSvg({ x: 0, y: tooltip.label.pixelY + tooltip.label.measuredHeight - tooltip.pixelY + pointY + tooltip.pixelMarginBottom }, tooltip).y;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Shows tooltips for a list of axes at specific position.\r\n *\r\n * Position might be X coordinate for horizontal axes, and Y coordinate for\r\n * vertical axes.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axes List of axes to show tooltip on\r\n * @param position Position (px)\r\n */\r\n XYChart.prototype.showAxisTooltip = function (axes, position, except) {\r\n var _this = this;\r\n $iter.each(axes.iterator(), function (axis) {\r\n if (!except || except.indexOf(axis) == -1) {\r\n if (_this.dataItems.length > 0 || axis.dataItems.length > 0) {\r\n axis.showTooltipAtPosition(position);\r\n }\r\n }\r\n });\r\n };\r\n /**\r\n * Recalculates the value range for the axis taking into account zoom level & inversed.\r\n *\r\n * @param axis Axis\r\n * @param range Range\r\n * @return Modified range\r\n */\r\n XYChart.prototype.getUpdatedRange = function (axis, range) {\r\n if (!axis) {\r\n return;\r\n }\r\n var start;\r\n var end;\r\n var inversed = axis.renderer.inversed;\r\n if (inversed) {\r\n $math.invertRange(range);\r\n start = 1 - axis.end;\r\n end = 1 - axis.start;\r\n }\r\n else {\r\n start = axis.start;\r\n end = axis.end;\r\n }\r\n var difference = end - start;\r\n return {\r\n start: start + range.start * difference,\r\n end: start + range.end * difference\r\n };\r\n };\r\n /**\r\n * Performs zoom and other operations when user finishes zooming using chart\r\n * cursor, e.g. zooms axes.\r\n *\r\n * @param event Cursor's event\r\n */\r\n XYChart.prototype.handleCursorZoomEnd = function (event) {\r\n var cursor = this.cursor;\r\n var behavior = cursor.behavior;\r\n if (behavior == \"zoomX\" || behavior == \"zoomXY\") {\r\n var xRange = cursor.xRange;\r\n if (xRange && this.xAxes.length > 0) {\r\n xRange = this.getUpdatedRange(this.xAxes.getIndex(0), xRange);\r\n xRange.priority = \"start\";\r\n this.zoomAxes(this.xAxes, xRange);\r\n }\r\n }\r\n if (behavior == \"zoomY\" || behavior == \"zoomXY\") {\r\n var yRange = cursor.yRange;\r\n if (yRange && this.yAxes.length > 0) {\r\n yRange = this.getUpdatedRange(this.yAxes.getIndex(0), yRange);\r\n yRange.priority = \"start\";\r\n this.zoomAxes(this.yAxes, yRange);\r\n }\r\n }\r\n this.handleHideCursor();\r\n };\r\n /**\r\n * Performs zoom and other operations when user is panning chart plot using chart cursor.\r\n *\r\n * @param event Cursor's event\r\n */\r\n XYChart.prototype.handleCursorPanStart = function (event) {\r\n var xAxis = this.xAxes.getIndex(0);\r\n if (xAxis) {\r\n this._panStartXRange = { start: xAxis.start, end: xAxis.end };\r\n if (xAxis.renderer.inversed) {\r\n this._panStartXRange = $math.invertRange(this._panStartXRange);\r\n }\r\n }\r\n var yAxis = this.yAxes.getIndex(0);\r\n if (yAxis) {\r\n this._panStartYRange = { start: yAxis.start, end: yAxis.end };\r\n if (yAxis.renderer.inversed) {\r\n this._panStartYRange = $math.invertRange(this._panStartYRange);\r\n }\r\n }\r\n };\r\n /**\r\n * Performs zoom and other operations when user ends panning\r\n *\r\n * @param event Cursor's event\r\n */\r\n XYChart.prototype.handleCursorPanEnd = function (event) {\r\n var cursor = this.cursor;\r\n var behavior = cursor.behavior;\r\n if (this._panEndXRange && (behavior == \"panX\" || behavior == \"panXY\")) {\r\n var panEndRange = this._panEndXRange;\r\n var panStartRange = this._panStartXRange;\r\n var delta = 0;\r\n if (panEndRange.start < 0) {\r\n delta = panEndRange.start;\r\n }\r\n if (panStartRange.end > 1) {\r\n if (panEndRange.end > panStartRange.end) {\r\n delta = panEndRange.end - panStartRange.end;\r\n }\r\n }\r\n else if (panEndRange.end > 1) {\r\n delta = panEndRange.end - 1;\r\n }\r\n this.zoomAxes(this.xAxes, { start: panEndRange.start - delta, end: panEndRange.end - delta }, false, cursor.snapOnPan);\r\n this._panEndXRange = undefined;\r\n this._panStartXRange = undefined;\r\n }\r\n if (this._panEndYRange && (behavior == \"panY\" || behavior == \"panXY\")) {\r\n var panEndRange = this._panEndYRange;\r\n var delta = 0;\r\n if (panEndRange.start < 0) {\r\n delta = panEndRange.start;\r\n }\r\n if (panEndRange.end > 1) {\r\n delta = panEndRange.end - 1;\r\n }\r\n this.zoomAxes(this.yAxes, { start: panEndRange.start - delta, end: panEndRange.end - delta }, false, cursor.snapOnPan);\r\n this._panEndYRange = undefined;\r\n this._panStartYRange = undefined;\r\n }\r\n };\r\n XYChart.prototype.handleCursorCanceled = function () {\r\n this._panEndXRange = undefined;\r\n this._panStartXRange = undefined;\r\n };\r\n /**\r\n * Performs zoom and other operations when user is panning chart plot using chart cursor.\r\n *\r\n * @param event Cursor's event\r\n */\r\n XYChart.prototype.handleCursorPanning = function (event) {\r\n var cursor = this.cursor;\r\n var behavior = cursor.behavior;\r\n var maxPanOut = cursor.maxPanOut;\r\n if (this._panStartXRange && (behavior == \"panX\" || behavior == \"panXY\")) {\r\n var panStartRange = this._panStartXRange;\r\n var range = cursor.xRange;\r\n var axisRange = this.getCommonAxisRange(this.xAxes);\r\n var difference = (panStartRange.end - panStartRange.start);\r\n var delta = range.start * (axisRange.end - axisRange.start);\r\n var newStart = Math.max(-maxPanOut, delta + panStartRange.start);\r\n var newEnd = Math.min(delta + panStartRange.end, 1 + maxPanOut);\r\n if (newStart <= 0) {\r\n newEnd = newStart + difference;\r\n }\r\n if (newEnd >= 1) {\r\n newStart = newEnd - difference;\r\n }\r\n var newRange = {\r\n start: newStart,\r\n end: newEnd\r\n };\r\n this._panEndXRange = newRange;\r\n this.zoomAxes(this.xAxes, newRange, false, false, cursor.maxPanOut);\r\n }\r\n if (this._panStartYRange && (behavior == \"panY\" || behavior == \"panXY\")) {\r\n var panStartRange = this._panStartYRange;\r\n var range = cursor.yRange;\r\n var axisRange = this.getCommonAxisRange(this.yAxes);\r\n var difference = panStartRange.end - panStartRange.start;\r\n var delta = range.start * (axisRange.end - axisRange.start);\r\n var newStart = Math.max(-maxPanOut, delta + panStartRange.start);\r\n var newEnd = Math.min(delta + panStartRange.end, 1 + maxPanOut);\r\n if (newStart <= 0) {\r\n newEnd = newStart + difference;\r\n }\r\n if (newEnd >= 1) {\r\n newStart = newEnd - difference;\r\n }\r\n var newRange = {\r\n start: newStart,\r\n end: newEnd\r\n };\r\n this._panEndYRange = newRange;\r\n this.zoomAxes(this.yAxes, newRange, false, false, cursor.maxPanOut);\r\n }\r\n this.handleHideCursor();\r\n };\r\n /**\r\n * @ignore\r\n */\r\n XYChart.prototype.handleYAxisSet = function (series) {\r\n };\r\n /**\r\n * Performs zoom and other operations when user starts zooming using chart\r\n * cursor, e.g. zooms axes.\r\n *\r\n * @param event Cursor's event\r\n */\r\n XYChart.prototype.handleCursorZoomStart = function (event) {\r\n // Nothing here\r\n // This method is here only as a \"placeholder\" for extending classes to\r\n // override if necessary\r\n };\r\n Object.defineProperty(XYChart.prototype, \"scrollbarX\", {\r\n /**\r\n * @return Scrollbar\r\n */\r\n get: function () {\r\n return this._scrollbarX;\r\n },\r\n /**\r\n * Horizontal (X) scrollbar.\r\n *\r\n * @param scrollbar Scrollbar\r\n */\r\n set: function (scrollbar) {\r\n var _this = this;\r\n if (this._scrollbarX) {\r\n this.removeDispose(this._scrollbarX);\r\n }\r\n this._scrollbarX = scrollbar;\r\n if (scrollbar) {\r\n this._disposers.push(scrollbar);\r\n scrollbar.parent = this.topAxesContainer;\r\n scrollbar.shouldClone = false;\r\n scrollbar.startGrip.exportable = false;\r\n scrollbar.endGrip.exportable = false;\r\n scrollbar.toBack();\r\n scrollbar.orientation = \"horizontal\";\r\n scrollbar.events.on(\"rangechanged\", this.handleXScrollbarChange, this, false);\r\n // accessibility related\r\n scrollbar.adapter.add(\"positionValue\", function (arg) {\r\n var xAxis = _this.xAxes.getIndex(0);\r\n if (xAxis) {\r\n arg.value = xAxis.getPositionLabel(xAxis.renderer.inversed\r\n ? 1 - arg.position\r\n : arg.position);\r\n }\r\n return arg;\r\n });\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYChart.prototype, \"scrollbarY\", {\r\n /**\r\n * @return Scrollbar\r\n */\r\n get: function () {\r\n return this._scrollbarY;\r\n },\r\n /**\r\n * Vertical (Y) scrollbar.\r\n *\r\n * @param scrollbar Scrollbar\r\n */\r\n set: function (scrollbar) {\r\n var _this = this;\r\n if (this._scrollbarY) {\r\n this.removeDispose(this._scrollbarY);\r\n }\r\n this._scrollbarY = scrollbar;\r\n if (scrollbar) {\r\n this._disposers.push(scrollbar);\r\n scrollbar.parent = this.rightAxesContainer;\r\n scrollbar.startGrip.exportable = false;\r\n scrollbar.shouldClone = false;\r\n scrollbar.endGrip.exportable = false;\r\n scrollbar.toFront();\r\n scrollbar.orientation = \"vertical\";\r\n scrollbar.events.on(\"rangechanged\", this.handleYScrollbarChange, this, false);\r\n // accessibility related\r\n scrollbar.adapter.add(\"positionValue\", function (arg) {\r\n var yAxis = _this.yAxes.getIndex(0);\r\n if (yAxis) {\r\n arg.value = yAxis.getPositionLabel(arg.position);\r\n }\r\n return arg;\r\n });\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Zooms axes affected by the horizontal (X) scrollbar when the selection\r\n * on it changes.\r\n *\r\n * @param event Scrollbar range change event\r\n */\r\n XYChart.prototype.handleXScrollbarChange = function (event) {\r\n if (this.inited) {\r\n var scrollbar = event.target;\r\n var range = scrollbar.range;\r\n if (range.start == 0) {\r\n range.priority = \"start\";\r\n }\r\n if (range.end == 1) {\r\n range.priority = \"end\";\r\n }\r\n range = this.zoomAxes(this.xAxes, range);\r\n scrollbar.fixRange(range);\r\n }\r\n };\r\n /**\r\n * Zooms axes affected by the vertical (Y) scrollbar when the selection\r\n * on it changes.\r\n *\r\n * @param event Scrollbar range change event\r\n */\r\n XYChart.prototype.handleYScrollbarChange = function (event) {\r\n if (this.inited) {\r\n var scrollbar = event.target;\r\n var range = scrollbar.range;\r\n if (range.end == 1) {\r\n range.priority = \"end\";\r\n }\r\n if (range.start == 0) {\r\n range.priority = \"start\";\r\n }\r\n range = this.zoomAxes(this.yAxes, range);\r\n scrollbar.fixRange(range);\r\n }\r\n };\r\n /**\r\n * Zooms axes that are affected by to specific relative range.\r\n *\r\n * @param axes List of axes to zoom\r\n * @param range Range of values to zoom to (0-1)\r\n * @param instantly If set to `true` will skip zooming animation\r\n * @return Recalculated range that is common to all involved axes\r\n */\r\n XYChart.prototype.zoomAxes = function (axes, range, instantly, round, declination, stop) {\r\n var realRange = { start: 0, end: 1 };\r\n this.showSeriesTooltip(); // hides\r\n var originalRange = range;\r\n if (!this.dataInvalid) {\r\n $iter.each(axes.iterator(), function (axis) {\r\n var maxZoomFactor = axis.maxZoomFactor;\r\n if ($type.isNumber(axis.minZoomCount)) {\r\n maxZoomFactor = maxZoomFactor / axis.minZoomCount;\r\n }\r\n if (stop && 1 / (range.end - range.start) >= maxZoomFactor) {\r\n // void\r\n }\r\n else {\r\n if (axis.zoomable) {\r\n if (axis.renderer.inversed) {\r\n range = $math.invertRange(originalRange);\r\n }\r\n else {\r\n range = originalRange;\r\n }\r\n axis.hideTooltip(0);\r\n if (round) {\r\n //let diff = range.end - range.start;\r\n if (axis instanceof CategoryAxis) {\r\n var cellWidth = axis.getCellEndPosition(0) - axis.getCellStartPosition(0);\r\n range.start = axis.roundPosition(range.start + cellWidth / 2 - (axis.startLocation) * cellWidth, axis.startLocation);\r\n range.end = axis.roundPosition(range.end - cellWidth / 2 + (1 - axis.endLocation) * cellWidth, axis.endLocation);\r\n }\r\n else {\r\n range.start = axis.roundPosition(range.start + 0.0001, 0, axis.startLocation);\r\n range.end = axis.roundPosition(range.end + 0.0001, 0, axis.endLocation);\r\n }\r\n }\r\n var axisRange = axis.zoom(range, instantly, instantly, declination);\r\n if (axis.renderer.inversed) {\r\n axisRange = $math.invertRange(axisRange);\r\n }\r\n realRange = axisRange;\r\n }\r\n }\r\n });\r\n }\r\n return realRange;\r\n };\r\n Object.defineProperty(XYChart.prototype, \"maskBullets\", {\r\n /**\r\n * @return Mask bullet container?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maskBullets\");\r\n },\r\n /**\r\n * Indicates if bullet container is masked.\r\n *\r\n * If it is set to `true`, any bullets that do not fit into bullet container\r\n * will be clipped off. Settting to `false` will allow bullets to \"spill out\"\r\n * of the plot area so they are not cut off.\r\n *\r\n * @param value Mask bullet container?\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"maskBullets\", value, true) && this.bulletsContainer) {\r\n if (value) {\r\n this.bulletsContainer.mask = this._bulletMask;\r\n }\r\n else {\r\n this.bulletsContainer.mask = undefined;\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYChart.prototype, \"arrangeTooltips\", {\r\n /**\r\n * @return Arrange tooltips?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"arrangeTooltips\");\r\n },\r\n /**\r\n * Indicates if chart should arrange series tooltips so that they would not\r\n * overlap.\r\n *\r\n * If set to `true` (default), the chart will adjust vertical positions of\r\n * all simultaneously shown tooltips to avoid overlapping.\r\n *\r\n * However, if you have a vertically-arranged chart, it might not make sense,\r\n * because tooltips would most probably not be aligned horizontally. In this\r\n * case it would probably be a good idea to set this setting to `false`.\r\n *\r\n * @default true\r\n * @param value Arrange tooltips?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"arrangeTooltips\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Handles mouse wheel event.\r\n *\r\n * @param event Original event\r\n */\r\n XYChart.prototype.handleWheel = function (event) {\r\n var plotContainer = this.plotContainer;\r\n var svgPoint = $utils.documentPointToSvg(event.point, this.htmlContainer, this.svgContainer.cssScale);\r\n var plotPoint = $utils.svgPointToSprite(svgPoint, plotContainer);\r\n var shift = event.shift.y;\r\n this.handleWheelReal(shift, this.mouseWheelBehavior, plotPoint);\r\n };\r\n /**\r\n * Handles mouse wheel event.\r\n *\r\n * @param event Original event\r\n */\r\n XYChart.prototype.handleHorizontalWheel = function (event) {\r\n var plotContainer = this.plotContainer;\r\n var svgPoint = $utils.documentPointToSvg(event.point, this.htmlContainer, this.svgContainer.cssScale);\r\n var plotPoint = $utils.svgPointToSprite(svgPoint, plotContainer);\r\n this.handleWheelReal(event.shift.x, this.horizontalMouseWheelBehavior, plotPoint);\r\n };\r\n /**\r\n * @ignore\r\n */\r\n XYChart.prototype.handleWheelReal = function (shift, mouseWheelBehavior, plotPoint) {\r\n if (shift != 0) {\r\n var plotContainer = this.plotContainer;\r\n var rangeX = this.getCommonAxisRange(this.xAxes);\r\n var rangeY = this.getCommonAxisRange(this.yAxes);\r\n var shiftStep = 0.1;\r\n var maxPanOut = 0;\r\n if (mouseWheelBehavior == \"panX\" || mouseWheelBehavior == \"panXY\") {\r\n var differenceX = rangeX.end - rangeX.start;\r\n var newStartX = Math.max(-maxPanOut, rangeX.start + shiftStep * shift / 100 * (rangeX.end - rangeX.start));\r\n var newEndX = Math.min(rangeX.end + shiftStep * shift / 100 * (rangeX.end - rangeX.start), 1 + maxPanOut);\r\n if (newStartX <= 0) {\r\n newEndX = newStartX + differenceX;\r\n }\r\n if (newEndX >= 1) {\r\n newStartX = newEndX - differenceX;\r\n }\r\n this.zoomAxes(this.xAxes, { start: newStartX, end: newEndX });\r\n }\r\n if (mouseWheelBehavior == \"panY\" || mouseWheelBehavior == \"panXY\") {\r\n shift *= -1;\r\n var differenceY = rangeY.end - rangeY.start;\r\n var newStartY = Math.max(-maxPanOut, rangeY.start + shiftStep * shift / 100 * (rangeY.end - rangeY.start));\r\n var newEndY = Math.min(rangeY.end + shiftStep * shift / 100 * (rangeY.end - rangeY.start), 1 + maxPanOut);\r\n if (newStartY <= 0) {\r\n newEndY = newStartY + differenceY;\r\n }\r\n if (newEndY >= 1) {\r\n newStartY = newEndY - differenceY;\r\n }\r\n this.zoomAxes(this.yAxes, { start: newStartY, end: newEndY });\r\n }\r\n if (mouseWheelBehavior == \"zoomX\" || mouseWheelBehavior == \"zoomXY\") {\r\n var locationX = plotPoint.x / plotContainer.maxWidth;\r\n var location2X = this.xAxes.getIndex(0).toAxisPosition(locationX);\r\n var newStartX = Math.max(-maxPanOut, rangeX.start - shiftStep * (rangeX.end - rangeX.start) * shift / 100 * locationX);\r\n newStartX = Math.min(newStartX, location2X);\r\n var newEndX = Math.min(rangeX.end + shiftStep * (rangeX.end - rangeX.start) * shift / 100 * (1 - locationX), 1 + maxPanOut);\r\n newEndX = Math.max(newEndX, location2X);\r\n this.zoomAxes(this.xAxes, { start: newStartX, end: newEndX }, undefined, undefined, undefined, true);\r\n }\r\n if (mouseWheelBehavior == \"zoomY\" || mouseWheelBehavior == \"zoomXY\") {\r\n var locationY = plotPoint.y / plotContainer.maxHeight;\r\n var location2Y = this.yAxes.getIndex(0).toAxisPosition(locationY);\r\n var newStartY = Math.max(-maxPanOut, rangeY.start - shiftStep * (rangeY.end - rangeY.start) * shift / 100 * (1 - locationY));\r\n newStartY = Math.min(newStartY, location2Y);\r\n var newEndY = Math.min(rangeY.end + shiftStep * shift / 100 * locationY * (rangeY.end - rangeY.start), 1 + maxPanOut);\r\n newEndY = Math.max(newEndY, location2Y);\r\n this.zoomAxes(this.yAxes, { start: newStartY, end: newEndY }, undefined, undefined, undefined, true);\r\n }\r\n }\r\n };\r\n Object.defineProperty(XYChart.prototype, \"mouseWheelBehavior\", {\r\n /**\r\n * @return Mouse wheel behavior\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"mouseWheelBehavior\");\r\n },\r\n /**\r\n * Specifies action for when mouse wheel is used when over the chart.\r\n *\r\n * Options: Options: `\"zoomX\"`, `\"zoomY\"`, `\"zoomXY\"`, `\"panX\"`, `\"panY\"`,`\"panXY\"`, `\"none\"` (default).\r\n *\r\n * You can control sensitivity of wheel zooming via `mouseOptions`.\r\n *\r\n * @default \"none\"\r\n * @see {@link https://www.amcharts.com/docs/v4/reference/sprite/#mouseOptions_property} More information about `mouseOptions`\r\n * @param mouse wheel behavior\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"mouseWheelBehavior\", value)) {\r\n if (value != \"none\") {\r\n this._mouseWheelDisposer = this.plotContainer.events.on(\"wheel\", this.handleWheel, this, false);\r\n this._disposers.push(this._mouseWheelDisposer);\r\n }\r\n else {\r\n if (this._mouseWheelDisposer) {\r\n this.plotContainer.wheelable = false;\r\n this.plotContainer.hoverable = false;\r\n this._mouseWheelDisposer.dispose();\r\n }\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYChart.prototype, \"horizontalMouseWheelBehavior\", {\r\n /**\r\n * @return Horizontal mouse wheel behavior\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"horizontalMouseWheelBehavior\");\r\n },\r\n /**\r\n * Specifies action for when horizontal mouse wheel is used when over the chart.\r\n *\r\n * Options: Options: `\"zoomX\"`, `\"zoomY\"`, `\"zoomXY\"`, `\"panX\"`, `\"panY\"`, `\"panXY\"`, `\"none\"` (default).\r\n *\r\n * @default \"none\"\r\n * @see {@link https://www.amcharts.com/docs/v4/reference/sprite/#mouseOptions_property} More information about `mouseOptions`\r\n * @param mouse wheel behavior\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"horizontalMouseWheelBehavior\", value)) {\r\n if (value != \"none\") {\r\n this._mouseWheelDisposer2 = this.plotContainer.events.on(\"wheel\", this.handleHorizontalWheel, this, false);\r\n this._disposers.push(this._mouseWheelDisposer2);\r\n }\r\n else {\r\n if (this._mouseWheelDisposer2) {\r\n this.plotContainer.wheelable = false;\r\n this.plotContainer.hoverable = false;\r\n this._mouseWheelDisposer2.dispose();\r\n }\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * This function is called by the [[DataSource]]'s `dateFields` adapater\r\n * so that particular chart types can popuplate this setting with their\r\n * own type-specific data fields so they are parsed properly.\r\n *\r\n * @param fields Array of date fields\r\n * @return Array of date fields populated with chart's date fields\r\n */\r\n XYChart.prototype.dataSourceDateFields = function (fields) {\r\n var _this = this;\r\n // Process parent\r\n fields = _super.prototype.dataSourceDateFields.call(this, fields);\r\n // Check if we have any series with date-fields\r\n $iter.each(this.series.iterator(), function (series) {\r\n fields = _this.populateDataSourceFields(fields, series.dataFields, [\"dateX\", \"dateY\", \"openDateX\", \"openDateY\"]);\r\n });\r\n return fields;\r\n };\r\n /**\r\n * This function is called by the [[DataSource]]'s `numberFields` adapater\r\n * so that particular chart types can popuplate this setting with their\r\n * own type-specific data fields so they are parsed properly.\r\n *\r\n * @param value Array of number fields\r\n * @return Array of number fields populated with chart's number fields\r\n */\r\n XYChart.prototype.dataSourceNumberFields = function (fields) {\r\n var _this = this;\r\n fields = _super.prototype.dataSourceDateFields.call(this, fields);\r\n // Check if we have any series with date-fields\r\n $iter.each(this.series.iterator(), function (series) {\r\n fields = _this.populateDataSourceFields(fields, series.dataFields, [\"valueX\", \"valueY\", \"openValueX\", \"openValueY\"]);\r\n });\r\n return fields;\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n XYChart.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Save axis ranges for later processing\r\n var xAxes = [];\r\n var yAxes = [];\r\n // Set up axes\r\n if ($type.hasValue(config.xAxes) && $type.isArray(config.xAxes)) {\r\n for (var i = 0, len = config.xAxes.length; i < len; i++) {\r\n if (!config.xAxes[i].type) {\r\n throw Error(\"[XYChart error] No type set for xAxes[\" + i + \"].\");\r\n }\r\n else if ($type.hasValue(config.xAxes[i][\"axisRanges\"])) {\r\n // Maybe convert string dates?\r\n for (var x = 0, len_1 = config.xAxes[i][\"axisRanges\"].length; x < len_1; x++) {\r\n var range = config.xAxes[i][\"axisRanges\"][x];\r\n if ($type.hasValue(range.date) && $type.isString(range.date)) {\r\n range.date = this.dateFormatter.parse(range.date);\r\n }\r\n if ($type.hasValue(range.endDate) && $type.isString(range.endDate)) {\r\n range.endDate = this.dateFormatter.parse(range.endDate);\r\n }\r\n }\r\n xAxes.push({\r\n axisRanges: config.xAxes[i][\"axisRanges\"],\r\n index: i\r\n });\r\n delete (config.xAxes[i][\"axisRanges\"]);\r\n }\r\n }\r\n }\r\n if ($type.hasValue(config.yAxes) && $type.isArray(config.yAxes)) {\r\n for (var i = 0, len = config.yAxes.length; i < len; i++) {\r\n if (!config.yAxes[i].type) {\r\n throw Error(\"[XYChart error] No type set for yAxes[\" + i + \"].\");\r\n }\r\n else if ($type.hasValue(config.yAxes[i][\"axisRanges\"])) {\r\n // Maybe convert string dates?\r\n for (var x = 0, len_2 = config.yAxes[i][\"axisRanges\"].length; x < len_2; x++) {\r\n var range = config.yAxes[i][\"axisRanges\"][x];\r\n if ($type.hasValue(range.date) && $type.isString(range.date)) {\r\n range.date = this.dateFormatter.parse(range.date);\r\n }\r\n if ($type.hasValue(range.endDate) && $type.isString(range.endDate)) {\r\n range.endDate = this.dateFormatter.parse(range.endDate);\r\n }\r\n }\r\n yAxes.push({\r\n axisRanges: config.yAxes[i][\"axisRanges\"],\r\n index: i\r\n });\r\n delete (config.yAxes[i][\"axisRanges\"]);\r\n }\r\n }\r\n }\r\n // Set up series\r\n if ($type.hasValue(config.series) && $type.isArray(config.series)) {\r\n for (var i = 0, len = config.series.length; i < len; i++) {\r\n config.series[i].type = config.series[i].type || \"LineSeries\";\r\n }\r\n }\r\n // Set up cursor\r\n if ($type.hasValue(config.cursor) && !$type.hasValue(config.cursor.type)) {\r\n config.cursor.type = \"XYCursor\";\r\n }\r\n // Set up scrollbars\r\n if ($type.hasValue(config.scrollbarX) && !$type.hasValue(config.scrollbarX.type)) {\r\n config.scrollbarX.type = \"Scrollbar\";\r\n }\r\n if ($type.hasValue(config.scrollbarY) && !$type.hasValue(config.scrollbarY.type)) {\r\n config.scrollbarY.type = \"Scrollbar\";\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n // Finish up with ranges.\r\n // We need to do this here because series are processed last in JSON\r\n // config. Therefore their respective objects are not yet are available\r\n // when axis (and respectively their ranges) are being processed.\r\n if (yAxes.length) {\r\n for (var i = 0, len = yAxes.length; i < len; i++) {\r\n this.yAxes.getIndex(yAxes[i].index).config = {\r\n axisRanges: yAxes[i].axisRanges\r\n };\r\n }\r\n }\r\n if (xAxes.length) {\r\n for (var i = 0, len = xAxes.length; i < len; i++) {\r\n this.xAxes.getIndex(xAxes[i].index).config = {\r\n axisRanges: xAxes[i].axisRanges\r\n };\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * This function is used to sort element's JSON config properties, so that\r\n * some properties that absolutely need to be processed last, can be put at\r\n * the end.\r\n *\r\n * @ignore Exclude from docs\r\n * @param a Element 1\r\n * @param b Element 2\r\n * @return Sorting number\r\n */\r\n XYChart.prototype.configOrder = function (a, b) {\r\n if (a == b) {\r\n return 0;\r\n }\r\n // Must come last\r\n else if (a == \"scrollbarX\") {\r\n return 1;\r\n }\r\n else if (b == \"scrollbarX\") {\r\n return -1;\r\n }\r\n else if (a == \"scrollbarY\") {\r\n return 1;\r\n }\r\n else if (b == \"scrollbarY\") {\r\n return -1;\r\n }\r\n else if (a == \"cursor\") {\r\n return 1;\r\n }\r\n else if (b == \"cursor\") {\r\n return -1;\r\n }\r\n else if (a == \"series\") {\r\n return 1;\r\n }\r\n else if (b == \"series\") {\r\n return -1;\r\n }\r\n else {\r\n return _super.prototype.configOrder.call(this, a, b);\r\n }\r\n };\r\n /**\r\n * Creates a new Series of type suitable for this chart.\r\n *\r\n * @return New series\r\n */\r\n XYChart.prototype.createSeries = function () {\r\n return new XYSeries();\r\n };\r\n Object.defineProperty(XYChart.prototype, \"zoomOutButton\", {\r\n /**\r\n * @return Zoom out button\r\n */\r\n get: function () {\r\n return this._zoomOutButton;\r\n },\r\n /**\r\n * A [[Button]] element that is used for zooming out the chart.\r\n *\r\n * This button appears only when chart is zoomed in, and disappears\r\n * autoamatically when it is zoome dout.\r\n *\r\n * @param button Zoom out button\r\n */\r\n set: function (button) {\r\n var _this = this;\r\n this._zoomOutButton = button;\r\n if (button) {\r\n button.events.on(\"hit\", function () {\r\n _this.zoomAxes(_this.xAxes, { start: 0, end: 1 });\r\n _this.zoomAxes(_this.yAxes, { start: 0, end: 1 });\r\n }, undefined, false);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies all parameters from another [[XYChart]].\r\n *\r\n * @param source Source XYChart\r\n */\r\n XYChart.prototype.copyFrom = function (source) {\r\n var _this = this;\r\n source.xAxes.each(function (axis) {\r\n var a = _this.xAxes.push(axis.clone());\r\n a.chart = _this;\r\n a.renderer.chart = _this;\r\n });\r\n source.yAxes.each(function (axis) {\r\n var a = _this.yAxes.push(axis.clone());\r\n a.renderer.chart = _this;\r\n a.chart = _this;\r\n });\r\n //this.xAxes.copyFrom(source.xAxes);\r\n //this.yAxes.copyFrom(source.yAxes);\r\n _super.prototype.copyFrom.call(this, source);\r\n //this.zoomOutButton.copyFrom(source.zoomOutButton);\r\n if (source.cursor) {\r\n this.cursor = source.cursor.clone();\r\n }\r\n if (source.scrollbarX) {\r\n this.scrollbarX = source.scrollbarX.clone();\r\n }\r\n if (source.scrollbarY) {\r\n this.scrollbarY = source.scrollbarY.clone();\r\n }\r\n //@todo copy all container properties\r\n };\r\n /**\r\n * @ignore\r\n */\r\n XYChart.prototype.disposeData = function () {\r\n _super.prototype.disposeData.call(this);\r\n var scrollbarX = this.scrollbarX;\r\n if (scrollbarX && scrollbarX instanceof XYChartScrollbar) {\r\n scrollbarX.scrollbarChart.disposeData();\r\n }\r\n var scrollbarY = this.scrollbarY;\r\n if (scrollbarY && scrollbarY instanceof XYChartScrollbar) {\r\n scrollbarY.scrollbarChart.disposeData();\r\n }\r\n this.xAxes.each(function (axis) {\r\n if (axis instanceof CategoryAxis) {\r\n axis.disposeData();\r\n }\r\n });\r\n this.yAxes.each(function (axis) {\r\n if (axis instanceof CategoryAxis) {\r\n axis.disposeData();\r\n }\r\n });\r\n };\r\n /**\r\n * Adds one or several (array) of data items to the existing data.\r\n *\r\n * @param rawDataItem One or many raw data item objects\r\n */\r\n XYChart.prototype.addData = function (rawDataItem, removeCount) {\r\n if (this.scrollbarX instanceof XYChartScrollbar) {\r\n this.addScrollbarData(this.scrollbarX, removeCount);\r\n }\r\n if (this.scrollbarY instanceof XYChartScrollbar) {\r\n this.addScrollbarData(this.scrollbarY, removeCount);\r\n }\r\n _super.prototype.addData.call(this, rawDataItem, removeCount);\r\n };\r\n /**\r\n * @ignore\r\n */\r\n XYChart.prototype.addScrollbarData = function (scrollbar, removeCount) {\r\n var chart = scrollbar.scrollbarChart;\r\n chart._parseDataFrom = chart.data.length;\r\n chart.invalidateData();\r\n };\r\n /**\r\n * @ignore\r\n */\r\n XYChart.prototype.removeScrollbarData = function (scrollbar, removeCount) {\r\n var chart = scrollbar.scrollbarChart;\r\n if ($type.isNumber(removeCount)) {\r\n while (removeCount > 0) {\r\n var dataItem = this.dataItems.getIndex(0);\r\n if (dataItem) {\r\n chart.dataItems.remove(dataItem);\r\n }\r\n chart.dataUsers.each(function (dataUser) {\r\n var dataItem = dataUser.dataItems.getIndex(0);\r\n if (dataItem) {\r\n dataUser.dataItems.remove(dataItem);\r\n }\r\n });\r\n chart._parseDataFrom--;\r\n removeCount--;\r\n }\r\n chart.invalidateData();\r\n }\r\n };\r\n /**\r\n * Removes elements from the beginning of data\r\n *\r\n * @param count number of elements to remove\r\n */\r\n XYChart.prototype.removeData = function (count) {\r\n if (this.scrollbarX instanceof XYChartScrollbar) {\r\n this.removeScrollbarData(this.scrollbarX, count);\r\n }\r\n if (this.scrollbarY instanceof XYChartScrollbar) {\r\n this.removeScrollbarData(this.scrollbarY, count);\r\n }\r\n _super.prototype.removeData.call(this, count);\r\n };\r\n /**\r\n * @param value Tap to activate?\r\n */\r\n XYChart.prototype.setTapToActivate = function (value) {\r\n _super.prototype.setTapToActivate.call(this, value);\r\n if (this.cursor) {\r\n this.cursor.interactions.isTouchProtected = value;\r\n this.plotContainer.interactions.isTouchProtected = value;\r\n }\r\n };\r\n XYChart.prototype.handleTapToActivate = function () {\r\n _super.prototype.handleTapToActivate.call(this);\r\n if (this.cursor) {\r\n this.cursor.interactions.isTouchProtected = false;\r\n this.plotContainer.interactions.isTouchProtected = false;\r\n }\r\n };\r\n XYChart.prototype.handleTapToActivateDeactivation = function () {\r\n _super.prototype.handleTapToActivateDeactivation.call(this);\r\n if (this.cursor) {\r\n this.cursor.interactions.isTouchProtected = true;\r\n this.plotContainer.interactions.isTouchProtected = true;\r\n }\r\n };\r\n return XYChart;\r\n}(SerialChart));\r\nexport { XYChart };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"XYChart\"] = XYChart;\r\n/**\r\n * Add default responsive rules\r\n */\r\n/**\r\n * Remove horizontal scrollbar on narrow charts.\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.maybeXS,\r\n state: function (target, stateId) {\r\n if (target instanceof XYChart && target.scrollbarX) {\r\n var state = target.states.create(stateId);\r\n var sbstate = target.scrollbarX.states.create(stateId);\r\n sbstate.properties.disabled = true;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n/**\r\n * Remove vertical scrollbar on short charts.\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.maybeXS,\r\n state: function (target, stateId) {\r\n if (target instanceof XYChart && target.scrollbarY) {\r\n var state = target.states.create(stateId);\r\n var sbstate = target.scrollbarY.states.create(stateId);\r\n sbstate.properties.disabled = true;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n//# sourceMappingURL=XYChart.js.map","/**\r\n * Line series segment module.\r\n * @todo Add description about what this is\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../../core/Container\";\r\nimport { Sprite, visualProperties } from \"../../core/Sprite\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $object from \"../../core/utils/Object\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { color } from \"../../core/utils/Color\";\r\nimport * as $smoothing from \"../../core/rendering/Smoothing\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Represents a line series segment.\r\n *\r\n * A line segment can be used to apply different properties to a part of the\r\n * line series, between two data points.\r\n *\r\n * @see {@link ILineSeriesSegmentEvents} for a list of available events\r\n * @see {@link ILineSeriesSegmentAdapters} for a list of available Adapters\r\n * @todo Example\r\n */\r\nvar LineSeriesSegment = /** @class */ (function (_super) {\r\n __extends(LineSeriesSegment, _super);\r\n /**\r\n * Constructor\r\n */\r\n function LineSeriesSegment() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"LineSeriesSegment\";\r\n // Set defaults\r\n _this.isMeasured = false;\r\n _this.interactionsEnabled = false;\r\n _this.layout = \"none\";\r\n // Create fill element\r\n var fillSprite = _this.createChild(Sprite);\r\n _this.fillSprite = fillSprite;\r\n fillSprite.shouldClone = false;\r\n fillSprite.setElement(_this.paper.add(\"path\"));\r\n fillSprite.isMeasured = false;\r\n _this._disposers.push(fillSprite);\r\n // Create line element\r\n var strokeSprite = _this.createChild(Sprite);\r\n _this.strokeSprite = strokeSprite;\r\n strokeSprite.shouldClone = false;\r\n strokeSprite.fill = color();\r\n strokeSprite.setElement(_this.paper.add(\"path\"));\r\n strokeSprite.isMeasured = false;\r\n _this._disposers.push(strokeSprite);\r\n return _this;\r\n }\r\n /**\r\n * Draws the series segment.\r\n *\r\n * @ignore Exclude from docs\r\n * @param points Points to connect\r\n * @param closePoints ?\r\n * @param smoothnessX Horizontal bezier setting (?)\r\n * @param smoothnessY Vertical bezier setting (?)\r\n */\r\n LineSeriesSegment.prototype.drawSegment = function (points, closePoints, smoothnessX, smoothnessY) {\r\n if (!this.disabled) {\r\n if (points.length > 0 && closePoints.length > 0 && $type.isNumber(points[0].x) && $type.isNumber(points[0].y)) {\r\n // first moveTo helps to avoid Chrome straight line in the mask bug.\r\n var path = $path.moveTo({ x: points[0].x - 0.2, y: points[0].y - 0.2 }) + $path.moveTo(points[0]);\r\n var series = this.series;\r\n if (series.smoothing == \"bezier\") {\r\n path += new $smoothing.Tension(smoothnessX, smoothnessY).smooth(points);\r\n }\r\n else if (series.smoothing == \"monotoneX\") {\r\n path += new $smoothing.MonotoneX({ closed: false }).smooth(points);\r\n }\r\n else if (series.smoothing == \"monotoneY\") {\r\n path += new $smoothing.MonotoneY({ closed: false }).smooth(points);\r\n }\r\n if (this.strokeOpacity == 0 || this.strokeSprite.strokeOpacity == 0) {\r\n // like this and not if != 0, otherwise ranges stroke won't be drawn.\r\n }\r\n else {\r\n this.strokeSprite.path = path;\r\n }\r\n if (this.fillOpacity > 0 || this.fillSprite.fillOpacity > 0) { // helps to avoid drawing fill object if fill is not visible\r\n if ($type.isNumber(closePoints[0].x) && $type.isNumber(closePoints[0].y)) {\r\n path += $path.lineTo(closePoints[0]);\r\n if (series.smoothing == \"bezier\") {\r\n path += new $smoothing.Tension(smoothnessX, smoothnessY).smooth(closePoints);\r\n }\r\n else if (series.smoothing == \"monotoneX\") {\r\n path += new $smoothing.MonotoneX({ closed: false }).smooth(closePoints);\r\n }\r\n else if (series.smoothing == \"monotoneY\") {\r\n path += new $smoothing.MonotoneY({ closed: false }).smooth(closePoints);\r\n }\r\n path += $path.lineTo(points[0]);\r\n path += $path.closePath();\r\n this.fillSprite.path = path;\r\n }\r\n }\r\n }\r\n else {\r\n this.fillSprite.path = \"\";\r\n this.strokeSprite.path = \"\";\r\n }\r\n }\r\n };\r\n /**\r\n * Copies properties from a [[Sprite]] to both line and fill elements.\r\n *\r\n * @param source Source [[Sprite]] to copy properties from\r\n */\r\n LineSeriesSegment.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n var lineElement = this.strokeSprite;\r\n $object.copyProperties(source, lineElement.properties, visualProperties);\r\n lineElement.events.copyFrom(source.strokeSprite.events);\r\n lineElement.fillOpacity = 0;\r\n var fillElement = this.fillSprite;\r\n $object.copyProperties(source, fillElement.properties, visualProperties);\r\n fillElement.events.copyFrom(source.fillSprite.events);\r\n fillElement.strokeOpacity = 0;\r\n };\r\n return LineSeriesSegment;\r\n}(Container));\r\nexport { LineSeriesSegment };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"LineSeriesSegment\"] = LineSeriesSegment;\r\n//# sourceMappingURL=LineSeriesSegment.js.map","/**\r\n * DurationAxis module\r\n */\r\nimport { __extends, __values } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { ValueAxis, ValueAxisDataItem } from \"./ValueAxis\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $math from \"../../core/utils/Math\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines data item for [[DurationAxis]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar DurationAxisDataItem = /** @class */ (function (_super) {\r\n __extends(DurationAxisDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function DurationAxisDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"DurationAxisDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return DurationAxisDataItem;\r\n}(ValueAxisDataItem));\r\nexport { DurationAxisDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Used to create an axis that shows time durations.\r\n *\r\n * ```TypeScript\r\n * // Create the axis\r\n * let xAxis = chart.xAxes.push(new am4charts.DurationAxis());\r\n *\r\n * // Set settings\r\n * xAxis.title.text = \"Time\";\r\n * ```\r\n * ```JavaScript\r\n * // Create the axis\r\n * var valueAxis = chart.xAxes.push(new am4charts.DurationAxis());\r\n *\r\n * // Set settings\r\n * valueAxis.title.text = \"Time\";\r\n * ```\r\n * ```JSON\r\n * \"xAxes\": [{\r\n * \"type\": \"DurationAxis\",\r\n * \"title\": {\r\n * \"text\": \"Time\"\r\n * }\r\n * }]\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-duration/} for mor information about duration formatters.\r\n * @see {@link IDurationAxisEvents} for a list of available Events\r\n * @see {@link IDurationAxisAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar DurationAxis = /** @class */ (function (_super) {\r\n __extends(DurationAxis, _super);\r\n /**\r\n * Constructor\r\n */\r\n function DurationAxis() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * A base unit (granularity) of data.\r\n *\r\n * Used to indicate what are the base units of your data.\r\n */\r\n _this._baseUnit = \"second\";\r\n _this.className = \"DurationAxis\";\r\n _this.setPropertyValue(\"maxZoomFactor\", 1000000);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Formats the value according to axis' own [[DurationFormatter]].\r\n *\r\n * @param value Source value\r\n * @return Formatted value\r\n */\r\n DurationAxis.prototype.formatLabel = function (value, format) {\r\n return this.durationFormatter.format(value, format || this.axisDurationFormat);\r\n };\r\n /**\r\n * Adjusts actual min and max scale values so that the axis starts and ends\r\n * at \"nice\" values, unless `strictMinMax` is set.\r\n *\r\n * The `difference` can be something else than `max - min`, because of the\r\n * axis breaks.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param min [description]\r\n * @param max [description]\r\n * @param difference [description]\r\n * @param gridCount [description]\r\n * @param strictMode [description]\r\n * @return [description]\r\n */\r\n DurationAxis.prototype.adjustMinMax = function (min, max, difference, gridCount, strictMode) {\r\n var e_1, _a;\r\n var minMaxStep;\r\n var timeUnit = this.baseUnit;\r\n // we don't allow to go to smaller units, setting so to avoid invalidation\r\n this.setPropertyValue(\"maxPrecision\", 0);\r\n if (timeUnit == \"millisecond\" || timeUnit == \"second\" || timeUnit == \"minute\" || timeUnit == \"hour\") {\r\n // will fail if 0\r\n if (gridCount <= 1) {\r\n gridCount = 1;\r\n }\r\n gridCount = Math.round(gridCount);\r\n var initialMin = min;\r\n var initialMax = max;\r\n // in case min and max is the same, use max\r\n if (difference === 0) {\r\n difference = Math.abs(max);\r\n }\r\n var step = difference / gridCount;\r\n var divisors = [60, 30, 20, 15, 10, 2, 1];\r\n var realDivisor = 1;\r\n if (timeUnit == \"hour\") {\r\n divisors = [24, 12, 6, 4, 2, 1];\r\n }\r\n try {\r\n for (var divisors_1 = __values(divisors), divisors_1_1 = divisors_1.next(); !divisors_1_1.done; divisors_1_1 = divisors_1.next()) {\r\n var divisor = divisors_1_1.value;\r\n if (difference / divisor > gridCount) {\r\n realDivisor = divisor;\r\n break;\r\n }\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (divisors_1_1 && !divisors_1_1.done && (_a = divisors_1.return)) _a.call(divisors_1);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n var count = Math.ceil(((max - min) / realDivisor) / gridCount);\r\n var exponent = Math.log(Math.abs(count)) * Math.LOG10E;\r\n var power = Math.pow(10, Math.floor(exponent)) / 10;\r\n var reducedCount = count / power;\r\n // find closest to divisor\r\n var closest = $math.closest(divisors, reducedCount);\r\n count = closest * power;\r\n step = realDivisor * count;\r\n // TODO can this be removed ?\r\n this.durationFormatter.getValueUnit(step, this.baseUnit);\r\n min = Math.floor(min / step) * step;\r\n max = Math.ceil(max / step) * step;\r\n if (strictMode) {\r\n min -= step;\r\n if (min < 0 && initialMin >= 0) {\r\n min = 0;\r\n }\r\n max += step;\r\n if (max > 0 && initialMax <= 0) {\r\n max = 0;\r\n }\r\n }\r\n minMaxStep = { min: min, max: max, step: step };\r\n }\r\n else {\r\n minMaxStep = _super.prototype.adjustMinMax.call(this, min, max, difference, gridCount, strictMode);\r\n }\r\n // choose duration formatter based on step\r\n this.axisDurationFormat = this.durationFormatter.getFormat(minMaxStep.step, minMaxStep.max, this.baseUnit);\r\n return minMaxStep;\r\n };\r\n Object.defineProperty(DurationAxis.prototype, \"tooltipDurationFormat\", {\r\n /**\r\n * @return Duration format for axis labels\r\n */\r\n get: function () {\r\n return this._tooltipDurationFormat;\r\n },\r\n /**\r\n * A special duration format to apply axis tooltips.\r\n *\r\n * Will use same format as for labels, if not set.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-duration/} for mor information.\r\n * @param value Duration format for axis labels\r\n */\r\n set: function (value) {\r\n this._tooltipDurationFormat = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns text to show in a axis tooltip, based on specific position within\r\n * axis.\r\n *\r\n * The label will be formatted as per [[NumberFormatter]] set for the whole\r\n * chart, or explicitly for this Axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param position Position (px)\r\n * @return Label (numeric value)\r\n */\r\n DurationAxis.prototype.getTooltipText = function (position) {\r\n var value = $math.round(this.positionToValue(position), this._stepDecimalPlaces);\r\n var valueStr = this.formatLabel(value, this.tooltipDurationFormat);\r\n if (!this._adapterO) {\r\n return valueStr;\r\n }\r\n else {\r\n return this._adapterO.apply(\"getTooltipText\", valueStr);\r\n }\r\n };\r\n Object.defineProperty(DurationAxis.prototype, \"baseUnit\", {\r\n /**\r\n * @return Base unit\r\n */\r\n get: function () {\r\n return this._baseUnit;\r\n },\r\n /**\r\n * A base unit (granularity) of data.\r\n *\r\n * Used to indicate what are the base units of your data.\r\n *\r\n * Available options: \"millisecond\", \"second\" (default), \"minute\", \"hour\",\r\n * \"day\", \"week\", \"month\", \"year\".\r\n *\r\n * @default \"second\"\r\n * @param timeUnit\r\n */\r\n set: function (timeUnit) {\r\n if (this._baseUnit != timeUnit) {\r\n this._baseUnit = timeUnit;\r\n this.durationFormatter.baseUnit = timeUnit;\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies all properties and related data from a different instance of Axis.\r\n *\r\n * @param source Source Axis\r\n */\r\n DurationAxis.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.baseUnit = source.baseUnit;\r\n };\r\n return DurationAxis;\r\n}(ValueAxis));\r\nexport { DurationAxis };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"DurationAxis\"] = DurationAxis;\r\nregistry.registeredClasses[\"DurationAxisDataItem\"] = DurationAxisDataItem;\r\n//# sourceMappingURL=DurationAxis.js.map","/**\r\n * Line series module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { XYSeries, XYSeriesDataItem } from \"./XYSeries\";\r\nimport { visualProperties } from \"../../core/Sprite\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { LineSeriesSegment } from \"./LineSeriesSegment\";\r\nimport { ValueAxis } from \"../axes/ValueAxis\";\r\nimport { DateAxis } from \"../axes/DateAxis\";\r\nimport { DurationAxis } from \"../axes/DurationAxis\";\r\nimport { CategoryAxis } from \"../axes/CategoryAxis\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { Line } from \"../../core/elements/Line\";\r\nimport { Label } from \"../../core/elements/Label\";\r\nimport { Rectangle } from \"../../core/elements/Rectangle\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $object from \"../../core/utils/Object\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport { Bullet } from \"../elements/Bullet\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[LineSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar LineSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(LineSeriesDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function LineSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"LineSeriesDataItem\";\r\n return _this;\r\n }\r\n return LineSeriesDataItem;\r\n}(XYSeriesDataItem));\r\nexport { LineSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[Series]] for a line graph.\r\n *\r\n * @see {@link ILineSeriesEvents} for a list of available Events\r\n * @see {@link ILineSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\r\nvar LineSeries = /** @class */ (function (_super) {\r\n __extends(LineSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function LineSeries() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Minimum distance in pixels between two adjacent points.\r\n *\r\n * If the distance is less than this setting, a point is skipped.\r\n *\r\n * This allows acceptable performance with huge amounts of data points.\r\n *\r\n * @default 0.5\r\n */\r\n _this.minDistance = 0.5;\r\n _this.segments = new ListTemplate(_this.createSegment());\r\n _this.segments.template.applyOnClones = true;\r\n _this._disposers.push(new ListDisposer(_this.segments));\r\n _this._disposers.push(_this.segments.template);\r\n _this._segmentsIterator = new $iter.ListIterator(_this.segments, function () { return _this.segments.create(); });\r\n _this._segmentsIterator.createNewItems = true;\r\n _this.className = \"LineSeries\";\r\n _this.strokeOpacity = 1;\r\n _this.fillOpacity = 0;\r\n _this.connect = true;\r\n _this.tensionX = 1;\r\n _this.tensionY = 1;\r\n _this.autoGapCount = 1.1;\r\n _this.smoothing = \"bezier\";\r\n _this.segmentsContainer = _this.mainContainer.createChild(Container);\r\n _this.segmentsContainer.isMeasured = false;\r\n // line series might have multiple segments and it has a separate sprite for fill and stroke for each segment. So we need to observe all the changes on series and set them on the segments\r\n // todo: we need list here, otherwise everything will be redrawn event on change of properties like tooltipX or similar.\r\n // this.addEventListener(SpriteEvent.PROPERTY_CHANGED, this.validateDataElements, false, this);\r\n _this.bulletsContainer.toFront();\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n LineSeries.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Line Series\");\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n LineSeries.prototype.createSegment = function () {\r\n return new LineSeriesSegment();\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n LineSeries.prototype.createDataItem = function () {\r\n return new LineSeriesDataItem();\r\n };\r\n /**\r\n * Inits data item's working values.\r\n *\r\n * @param dataItem Data item\r\n * @param index Data item's index\r\n */\r\n LineSeries.prototype.setInitialWorkingValues = function (dataItem) {\r\n // this makes data items animate when added\r\n var yAxis = this._yAxis.get();\r\n var xAxis = this._xAxis.get();\r\n if (this.appeared && this.visible) {\r\n var previousDataItem = this.dataItems.getIndex(dataItem.index - 1);\r\n dataItem.component = this; // as these values are set before, we don't know component yet\r\n if (this.baseAxis == xAxis) {\r\n if (yAxis instanceof ValueAxis) {\r\n var initialY = yAxis.minZoomed;\r\n if (previousDataItem) {\r\n initialY = previousDataItem.values[\"valueY\"].workingValue;\r\n }\r\n // this makes line animate from previous point to newly added point\r\n dataItem.setWorkingValue(\"valueY\", initialY, 0);\r\n dataItem.setWorkingValue(\"valueY\", dataItem.values.valueY.value);\r\n if (xAxis instanceof DateAxis) {\r\n dataItem.setWorkingLocation(\"dateX\", dataItem.locations.dateX - 1, 0); // instantly move it to previous\r\n dataItem.setWorkingLocation(\"dateX\", dataItem.locations.dateX); // animate to it's location\r\n }\r\n else if (xAxis instanceof DurationAxis) {\r\n if (previousDataItem) {\r\n var value = dataItem.valueX;\r\n dataItem.setWorkingValue(\"valueX\", previousDataItem.valueX, 0); // instantly move it to previous\r\n dataItem.setWorkingValue(\"valueX\", value); // animate to new value\r\n }\r\n }\r\n }\r\n }\r\n if (this.baseAxis == yAxis) {\r\n if (xAxis instanceof ValueAxis) {\r\n var initialX = xAxis.minZoomed;\r\n if (previousDataItem) {\r\n initialX = previousDataItem.values[\"valueX\"].workingValue;\r\n }\r\n dataItem.setWorkingValue(\"valueX\", initialX, 0);\r\n dataItem.setWorkingValue(\"valueX\", dataItem.values.valueX.value);\r\n if (yAxis instanceof DateAxis) {\r\n dataItem.setWorkingLocation(\"dateY\", dataItem.locations.dateX - 1, 0); // instantly move it to previous\r\n dataItem.setWorkingLocation(\"dateY\", dataItem.locations.dateY); // animate to it's location\r\n }\r\n else if (yAxis instanceof DurationAxis) {\r\n if (previousDataItem) {\r\n var value = dataItem.valueY;\r\n dataItem.setWorkingValue(\"valueY\", previousDataItem.valueY, 0); // instantly move it to previous\r\n dataItem.setWorkingValue(\"valueY\", value); // animate to new value\r\n }\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n if (this.baseAxis == xAxis) {\r\n if (yAxis instanceof ValueAxis) {\r\n if (xAxis instanceof DateAxis) {\r\n dataItem.setWorkingLocation(\"dateX\", dataItem.locations.dateX);\r\n }\r\n if (xAxis instanceof CategoryAxis) {\r\n dataItem.setWorkingLocation(\"categoryX\", dataItem.locations.categoryX);\r\n }\r\n }\r\n }\r\n if (this.baseAxis == yAxis) {\r\n if (xAxis instanceof ValueAxis) {\r\n if (yAxis instanceof DateAxis) {\r\n dataItem.setWorkingLocation(\"dateY\", dataItem.locations.dateY);\r\n }\r\n if (yAxis instanceof CategoryAxis) {\r\n dataItem.setWorkingLocation(\"categoryY\", dataItem.locations.categoryY);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Updates corresponding legend data item with current values.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n LineSeries.prototype.updateLegendValue = function (dataItem, notRange) {\r\n _super.prototype.updateLegendValue.call(this, dataItem, notRange);\r\n //This is hack to save some methos, used to set tooltip color source only\r\n if (dataItem && dataItem.segment) {\r\n this.tooltipColorSource = dataItem.segment;\r\n }\r\n };\r\n /**\r\n * (Re)validates the whole series, effectively causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n LineSeries.prototype.validate = function () {\r\n var _this = this;\r\n _super.prototype.validate.call(this);\r\n if (this.xAxis && this.yAxis) {\r\n this._segmentsIterator.reset();\r\n this.openSegmentWrapper(this._adjustedStartIndex);\r\n $iter.each(this.axisRanges.iterator(), function (range) {\r\n _this.openSegmentWrapper(_this._adjustedStartIndex, range);\r\n });\r\n $iter.each(this._segmentsIterator.iterator(), function (segment) {\r\n segment.__disabled = true;\r\n });\r\n }\r\n };\r\n /**\r\n * [sliceData description]\r\n *\r\n * @todo Description\r\n */\r\n LineSeries.prototype.sliceData = function () {\r\n var startIndex = this.startIndex;\r\n var endIndex = this.endIndex;\r\n // we need extra one item to both sides with values for line series, otherwise the line will not continue out of bounds of the chart while scrolling\r\n // find first to the left\r\n // TODO use iterator instead\r\n for (var i = this.startIndex - 1; i >= 0; i--) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n if (dataItem && dataItem.hasValue(this._xValueFields) && dataItem.hasValue(this._yValueFields)) {\r\n startIndex = i;\r\n break;\r\n }\r\n }\r\n this._adjustedStartIndex = this.findAdjustedIndex(startIndex, [\"stroke\", \"strokeWidth\", \"strokeDasharray\", \"strokeOpacity\", \"fill\", \"fillOpacity\", \"opacity\"]);\r\n // find first to the right\r\n // TODO use iterator instead\r\n for (var i = this.endIndex, len = this.dataItems.length; i < len; i++) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n if (dataItem && dataItem.hasValue(this._xValueFields) && dataItem.hasValue(this._yValueFields)) {\r\n endIndex = i + 1;\r\n break;\r\n }\r\n }\r\n this._workingStartIndex = startIndex;\r\n this._workingEndIndex = endIndex;\r\n };\r\n /**\r\n * @ignore\r\n */\r\n LineSeries.prototype.findAdjustedIndex = function (adjustedIndex, properties) {\r\n var _this = this;\r\n var propertyFields = this.propertyFields;\r\n var startIndex = adjustedIndex;\r\n $array.each(properties, function (property) {\r\n if ($type.hasValue(propertyFields[property])) {\r\n for (var i = startIndex; i >= 0; i--) {\r\n var dataItem = _this.dataItems.getIndex(i);\r\n if (dataItem) {\r\n if ($type.hasValue(dataItem.properties[property])) {\r\n if (adjustedIndex > i) {\r\n adjustedIndex = i;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n return adjustedIndex;\r\n };\r\n /**\r\n * Wraps openSegment call with iterative solution to prevent stack overflow\r\n *\r\n * @param openIndex Index\r\n * @param axisRange Range\r\n */\r\n LineSeries.prototype.openSegmentWrapper = function (openIndex, axisRange) {\r\n var params = {\r\n \"index\": openIndex,\r\n \"axisRange\": axisRange\r\n };\r\n do {\r\n params = this.openSegment(params.index, params.axisRange);\r\n } while (params);\r\n };\r\n LineSeries.prototype.getSegment = function () {\r\n var segment = this._segmentsIterator.getFirst();\r\n segment.series = this;\r\n if (segment.isDisposed()) {\r\n this.segments.removeValue(segment);\r\n return this.getSegment();\r\n }\r\n return segment;\r\n };\r\n /**\r\n * [openSegment description]\r\n *\r\n * @todo Description\r\n * @param openIndex [description]\r\n * @param axisRange [description]\r\n */\r\n LineSeries.prototype.openSegment = function (openIndex, axisRange) {\r\n var addToClose = false;\r\n var points = [];\r\n openIndex = Math.min(openIndex, this.dataItems.length);\r\n var endIndex = Math.min(this._workingEndIndex, this.dataItems.length);\r\n this._workingEndIndex = Math.min(this._workingEndIndex, this.dataItems.length);\r\n var closeIndex;\r\n var propertiesChanged = false;\r\n var segment = this.getSegment();\r\n segment.strokeDasharray = undefined;\r\n segment.__disabled = false;\r\n if (axisRange) {\r\n segment.parent = axisRange.contents;\r\n $object.copyProperties(axisRange.contents, segment, visualProperties);\r\n }\r\n else {\r\n $object.copyProperties(this, segment, visualProperties);\r\n segment.filters.clear();\r\n segment.parent = this.segmentsContainer;\r\n }\r\n this.group.node.removeAttribute(\"fill\");\r\n var connect = this.connect;\r\n var valuesFound = false; // some flag to avoid multiple closes if no values found\r\n for (var i = openIndex; i < endIndex; i++) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n dataItem.segment = segment;\r\n if (dataItem.hasProperties) {\r\n // if this is first item of segment\r\n if (i == openIndex) {\r\n this.updateSegmentProperties(dataItem.properties, segment);\r\n }\r\n else {\r\n // this time we only need to know if properties changed, so we don't pass segment\r\n propertiesChanged = this.updateSegmentProperties(dataItem.properties, segment, true);\r\n }\r\n }\r\n if (dataItem.hasValue(this._xValueFields) && dataItem.hasValue(this._yValueFields)) {\r\n this.addPoints(points, dataItem, this.xField, this.yField);\r\n valuesFound = true;\r\n }\r\n else {\r\n // if no values in first data item, go to next\r\n if (i == openIndex) {\r\n continue;\r\n }\r\n else {\r\n // stop cycle\r\n if (!connect && valuesFound) {\r\n closeIndex = i;\r\n break;\r\n }\r\n }\r\n }\r\n closeIndex = i;\r\n if (this.baseAxis instanceof DateAxis) {\r\n var next = this.dataItems.getIndex(i + 1);\r\n if (next && this.baseAxis.makeGap(next, dataItem)) {\r\n addToClose = true;\r\n break;\r\n }\r\n }\r\n if (propertiesChanged) {\r\n break;\r\n }\r\n }\r\n return this.closeSegment(segment, points, openIndex, closeIndex, axisRange, addToClose);\r\n };\r\n /**\r\n * [addPoints description]\r\n *\r\n * @todo Description\r\n * @param points [description]\r\n * @param dataItem [description]\r\n * @param xField [description]\r\n * @param yField [description]\r\n * @param backwards [description]\r\n */\r\n LineSeries.prototype.addPoints = function (points, dataItem, xField, yField, backwards) {\r\n var point = this.getPoint(dataItem, xField, yField, dataItem.workingLocations[xField], dataItem.workingLocations[yField]);\r\n if (!backwards) {\r\n dataItem.point = point;\r\n }\r\n points.push(point);\r\n };\r\n /**\r\n * [closeSegment description]\r\n *\r\n * @todo Description\r\n * @param segment [description]\r\n * @param points [description]\r\n * @param openIndex [description]\r\n * @param closeIndex [description]\r\n * @param axisRange [description]\r\n */\r\n LineSeries.prototype.closeSegment = function (segment, points, openIndex, closeIndex, axisRange, add) {\r\n var closePoints = [];\r\n if (this.dataFields[this._xOpenField] ||\r\n this.dataFields[this._yOpenField] ||\r\n this.stacked) {\r\n for (var i = closeIndex; i >= openIndex; i--) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n if (dataItem.hasValue(this._xValueFields) && dataItem.hasValue(this._yValueFields)) { // not sure, this means that open point will only be added if value is also set for this point, but maybe it's ok.\r\n this.addPoints(closePoints, dataItem, this.xOpenField, this.yOpenField, true);\r\n }\r\n }\r\n }\r\n else {\r\n var baseAxis = this.baseAxis;\r\n var count = points.length;\r\n var xAxis = this.xAxis;\r\n var yAxis = this.yAxis;\r\n if (count > 0) {\r\n if (baseAxis == xAxis) {\r\n closePoints.push({ x: points[count - 1].x, y: yAxis.basePoint.y }); // last x\r\n closePoints.push({ x: points[0].x, y: yAxis.basePoint.y }); // first x\r\n }\r\n else {\r\n closePoints.push({ x: xAxis.basePoint.x, y: points[count - 1].y }); // last y\r\n closePoints.push({ x: xAxis.basePoint.x, y: points[0].y }); // first y\r\n }\r\n }\r\n }\r\n this.drawSegment(segment, points, closePoints);\r\n if (add) {\r\n closeIndex++;\r\n }\r\n if (closeIndex < this._workingEndIndex - 1) {\r\n return { \"index\": closeIndex, \"axisRange\": axisRange };\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n /**\r\n * Draws the line segment.\r\n *\r\n * @param segment Segment\r\n * @param points Segment points\r\n * @param closePoints Segment close points\r\n */\r\n LineSeries.prototype.drawSegment = function (segment, points, closePoints) {\r\n segment.drawSegment(points, closePoints, this.tensionX, this.tensionY);\r\n };\r\n /**\r\n * Segement will get its colors from `this.dataItem`, as thats how\r\n * `getPropertyValue()` method works.\r\n *\r\n * We pass `lineSeriesDataItem.properties` as item here each time when a flag\r\n * `hasProperties` is set to `true` on data item (this means it can contain\r\n * some properties set).\r\n *\r\n * @param itemProperties Item properties\r\n * @param segment Segment\r\n * @return Properties changed?\r\n */\r\n LineSeries.prototype.updateSegmentProperties = function (itemProperties, segment, checkOnly) {\r\n var changed = false;\r\n $object.each(itemProperties, function (propertyName, value) {\r\n // some value must be defined\r\n if ($type.hasValue(value)) {\r\n var currentValue = segment[propertyName];\r\n var currentValueStr = void 0;\r\n // current value can be Color, number, anything. So we check if it has toString, otherwise just do String().\r\n // toString() will return hex if it's color. The only problem is that it will return lowercased hex and if we have uppercase in data, it will think that it changed\r\n if (currentValue) {\r\n if (currentValue.toString) {\r\n currentValueStr = currentValue.toString();\r\n }\r\n else {\r\n currentValueStr = currentValue; // not doing String(currentValue) as this will make all Objects the same\r\n }\r\n }\r\n var valueStr = void 0;\r\n if (value) {\r\n if (value.toString) {\r\n valueStr = value.toString();\r\n }\r\n else {\r\n valueStr = value; // not doing String(currentValue) as this will make all Objects the same\r\n }\r\n }\r\n if (currentValue == value || (currentValueStr != undefined && valueStr != undefined && currentValueStr == valueStr)) {\r\n // void\r\n }\r\n else {\r\n if (!checkOnly) {\r\n segment[propertyName] = value;\r\n }\r\n changed = true;\r\n }\r\n }\r\n });\r\n return changed;\r\n };\r\n Object.defineProperty(LineSeries.prototype, \"connect\", {\r\n /**\r\n * @return Connect?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"connect\");\r\n },\r\n /**\r\n * Connect the lines over empty data points?\r\n *\r\n * If set to `true` the line will connect two adjacent data points by a\r\n * straight line. Even if there are data points with missing values\r\n * in-between.\r\n *\r\n * If you set this to `false`, the line will break when there are missing\r\n * values.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/xy-chart/#Line_series_with_gaps} for more information about this feature\r\n * @default true\r\n * @param value Connect?\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"connect\", value)) {\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LineSeries.prototype, \"tensionX\", {\r\n /**\r\n * @return Horizontal tension (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tensionX\");\r\n },\r\n /**\r\n * Horizontal tension setting of the line (0-1).\r\n *\r\n * Can be used to create smoothed lines. It works like this:\r\n *\r\n * Accepted values are in the range between 0 and 1. The biggest value (1)\r\n * will mean that the \"tension\" is very high, so the line is maximally\r\n * attracted to the points it connects, hence the straight line.\r\n *\r\n * Using smaller numbers will \"relax\" the tension, creating some curving.\r\n *\r\n * The smaller the tension setting, the more relaxed the line and the more\r\n * wide the curve.\r\n *\r\n * This setting is for horizontal tension, meaning the curve will bend in\r\n * such way that it never goes below or above connecting points. To enable\r\n * vertical bending as well, use `tensionY`.\r\n *\r\n * IMPORTANT: line smoothing works best when data items are placed at regular\r\n * intervals. For setups where data items are spaced erratically, enabling\r\n * smoothing might result in awkwardly looking lines.\r\n *\r\n * @default 1\r\n * @param value Horizontal tension (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"tensionX\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LineSeries.prototype, \"tensionY\", {\r\n /**\r\n * @return Vertical tension (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tensionY\");\r\n },\r\n /**\r\n * Can be used to create smoothed lines. It works like this:\r\n *\r\n * Accepted values are in the range between 0 and 1. The biggest value (1)\r\n * will mean that the \"tension\" is very high, so the line is maximally\r\n * attracted to the points it connects, hence the straight line.\r\n *\r\n * Using smaller numbers will \"relax\" the tension, creating some curving.\r\n *\r\n * The smaller the tension setting, the more relaxed the line and the more\r\n * wide the curve.\r\n *\r\n * This setting is for vertical tension, meaning the curve might bend in\r\n * such way that it will go below or above connected points.\r\n *\r\n * Combine this setting with `tensionX` to create beautifully looking\r\n * smoothed line series.\r\n *\r\n * @default 1\r\n * @param value Vertical tension (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"tensionY\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates elements in related legend container, that mimics the look of this\r\n * Series.\r\n *\r\n * @ignore Exclude from docs\r\n * @param marker Legend item container\r\n */\r\n LineSeries.prototype.createLegendMarker = function (marker) {\r\n var _this = this;\r\n var w = marker.pixelWidth;\r\n var h = marker.pixelHeight;\r\n marker.disposeChildren();\r\n var line = marker.createChild(Line);\r\n line.shouldClone = false;\r\n //line.copyFrom(<any>this); coppies events which is not good\r\n $object.copyProperties(this, line, visualProperties);\r\n line.x2 = w;\r\n line.y = h / 2;\r\n line.y2 = 0.00001;\r\n line.visible = true;\r\n if (this.fillOpacity > 0) {\r\n var fill = marker.createChild(Rectangle);\r\n //fill.copyFrom(<any>this); coppies events which is not good\r\n $object.copyProperties(this, fill, visualProperties);\r\n fill.width = w;\r\n fill.height = h;\r\n fill.y = 0;\r\n fill.strokeOpacity = 0;\r\n fill.visible = true;\r\n line.y = 0;\r\n }\r\n var legendDataItem = marker.dataItem;\r\n legendDataItem.color = this.stroke;\r\n legendDataItem.colorOrig = this.fill;\r\n $iter.eachContinue(this.bullets.iterator(), function (bullet) {\r\n if ((bullet instanceof Bullet) && !bullet.copyToLegendMarker) {\r\n return false;\r\n }\r\n var hasLabels = false;\r\n if (bullet instanceof Container) {\r\n // do not copy bullets with labels\r\n $iter.each(bullet.children.iterator(), function (child) {\r\n if (child instanceof Label) {\r\n hasLabels = true;\r\n return true;\r\n }\r\n });\r\n }\r\n if (!hasLabels) {\r\n var clone = bullet.clone();\r\n clone.parent = marker;\r\n clone.isMeasured = true;\r\n clone.tooltipText = undefined;\r\n clone.x = w / 2;\r\n if (_this.fillOpacity > 0) {\r\n clone.y = 0;\r\n }\r\n else {\r\n clone.y = h / 2;\r\n }\r\n clone.visible = true;\r\n // otherwise will not transit to color after hiding\r\n if (!$type.hasValue(clone.fill)) {\r\n clone.fill = _this.fill;\r\n }\r\n if (!$type.hasValue(clone.stroke)) {\r\n clone.stroke = _this.stroke;\r\n }\r\n return false;\r\n }\r\n });\r\n };\r\n /**\r\n * @ignore\r\n */\r\n LineSeries.prototype.disposeData = function () {\r\n _super.prototype.disposeData.call(this);\r\n this.segments.clear();\r\n };\r\n Object.defineProperty(LineSeries.prototype, \"autoGapCount\", {\r\n /**\r\n * @return Gap count\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"autoGapCount\");\r\n },\r\n /**\r\n * If `connect = false` and distance between two data points is bigger\r\n * than `baseInterval * autoGapCount`, a line will break automatically.\r\n *\r\n * @since 4.2.4\r\n * @param value Gap count\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"autoGapCount\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(LineSeries.prototype, \"smoothing\", {\r\n /**\r\n * @return Smoothing algorithm\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"smoothing\");\r\n },\r\n /**\r\n * Smoothing algorithm to be used for lines.\r\n *\r\n * Available options: `\"bezier\"` (default), `\"monotoneX\"`, and `\"monotoneY\"`.\r\n *\r\n * Monotone options are best suited for data with irregular intervals. Use `\"monotoneX\"` for\r\n * horizontal lines, and `\"monotoneY\"` vertical ones.\r\n *\r\n * NOTE: Both \"monotone\" algorithms will ignore `tensionX` and `tensionY` settings.\r\n *\r\n * @since 4.10.0\r\n * @param value Smoothing algorithm\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"smoothing\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return LineSeries;\r\n}(XYSeries));\r\nexport { LineSeries };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"LineSeries\"] = LineSeries;\r\nregistry.registeredClasses[\"LineSeriesDataItem\"] = LineSeriesDataItem;\r\n//# sourceMappingURL=LineSeries.js.map","/**\r\n * Radar series module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { LineSeries, LineSeriesDataItem } from \"./LineSeries\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n//import { AxisRendererCircular } from \"../axes/AxisRendererCircular\";\r\n//import { Sprite } from \"../../core/Sprite\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[RadarSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar RadarSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(RadarSeriesDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function RadarSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"RadarSeriesDataItem\";\r\n _this.setLocation(\"dateX\", 0, 0);\r\n _this.setLocation(\"dateY\", 0, 0);\r\n _this.setLocation(\"categoryX\", 0, 0);\r\n _this.setLocation(\"categoryY\", 0, 0);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return RadarSeriesDataItem;\r\n}(LineSeriesDataItem));\r\nexport { RadarSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[Series]] for a radar graph.\r\n *\r\n * @see {@link IRadarSeriesEvents} for a list of available Events\r\n * @see {@link IRadarSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\r\nvar RadarSeries = /** @class */ (function (_super) {\r\n __extends(RadarSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function RadarSeries() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"RadarSeries\";\r\n _this.connectEnds = true;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * (Re)validates the whole series, effectively causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n RadarSeries.prototype.validate = function () {\r\n // so that radius would be updated\r\n if (this.chart.invalid) {\r\n this.chart.validate();\r\n }\r\n _super.prototype.validate.call(this);\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n RadarSeries.prototype.createDataItem = function () {\r\n return new RadarSeriesDataItem();\r\n };\r\n /**\r\n * Returns an [[IPoint]] coordinates of the specific Serie's data point.\r\n *\r\n * @param dataItem Data item\r\n * @param xKey Name of X data field\r\n * @param yKey Name of Y data field\r\n * @param locationX X location\r\n * @param locationY Y location\r\n * @param stackKeyX ?\r\n * @param stackKeyY ?\r\n * @returns Coordinates\r\n */\r\n RadarSeries.prototype.getPoint = function (dataItem, xKey, yKey, locationX, locationY, stackKeyX, stackKeyY) {\r\n if (!stackKeyX) {\r\n stackKeyX = \"valueX\";\r\n }\r\n if (!stackKeyY) {\r\n stackKeyY = \"valueY\";\r\n }\r\n var x = this.yAxis.getX(dataItem, yKey, locationY, stackKeyY);\r\n var y = this.yAxis.getY(dataItem, yKey, locationY, stackKeyY);\r\n var radius = $math.getDistance({ x: x, y: y });\r\n // hack to be able to determine angle later\r\n if (radius == 0) {\r\n radius = 0.00001;\r\n }\r\n var angle = this.xAxis.getAngle(dataItem, xKey, locationX, stackKeyX);\r\n var startAngle = this.chart.startAngle;\r\n var endAngle = this.chart.endAngle;\r\n //\t\tangle = $math.fitToRange(angle, startAngle, endAngle);\r\n if (angle < startAngle || angle > endAngle) {\r\n return undefined;\r\n }\r\n else {\r\n return { x: radius * $math.cos(angle), y: radius * $math.sin(angle) };\r\n }\r\n };\r\n /**\r\n * [addPoints description]\r\n *\r\n * @todo Description\r\n * @param points [description]\r\n * @param dataItem [description]\r\n * @param xField [description]\r\n * @param yField [description]\r\n * @param backwards [description]\r\n */\r\n RadarSeries.prototype.addPoints = function (points, dataItem, xField, yField, backwards) {\r\n var point = this.getPoint(dataItem, xField, yField, dataItem.locations[xField], dataItem.locations[yField]);\r\n if (point) {\r\n points.push(point);\r\n }\r\n };\r\n /**\r\n * Returns an SVG path to be used as a mask for the series.\r\n *\r\n * @return SVG path\r\n */\r\n RadarSeries.prototype.getMaskPath = function () {\r\n var renderer = this.yAxis.renderer;\r\n return $path.arc(renderer.startAngle, renderer.endAngle - renderer.startAngle, renderer.pixelRadius, renderer.pixelInnerRadius);\r\n };\r\n /**\r\n * [drawSegment description]\r\n *\r\n * @todo Description\r\n * @param segment [description]\r\n * @param points [description]\r\n * @param closePoints [description]\r\n */\r\n RadarSeries.prototype.drawSegment = function (segment, points, closePoints) {\r\n var axis = this.yAxis;\r\n var renderer = axis.renderer;\r\n if (this.connectEnds && Math.abs(renderer.endAngle - renderer.startAngle) == 360) {\r\n // adds one point to the beginning of closePoints array, if needed\r\n if (this.dataFields[this._xOpenField] ||\r\n this.dataFields[this._yOpenField] ||\r\n this.stacked) {\r\n points.push(points[0]);\r\n if (closePoints.length > 0) {\r\n closePoints.unshift(closePoints[closePoints.length - 1]);\r\n }\r\n }\r\n }\r\n _super.prototype.drawSegment.call(this, segment, points, closePoints);\r\n };\r\n Object.defineProperty(RadarSeries.prototype, \"connectEnds\", {\r\n /**\r\n * @return Connect?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"connectEnds\");\r\n },\r\n /**\r\n * Should the last and and first data points be connected, forming a complete\r\n * closed circle?\r\n *\r\n * @default true\r\n * @param value Connect?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"connectEnds\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n RadarSeries.prototype.positionBulletReal = function (bullet, positionX, positionY) {\r\n var xAxis = this.xAxis;\r\n var yAxis = this.yAxis;\r\n if (positionX < xAxis.start || positionX > xAxis.end || positionY < yAxis.start || positionY > yAxis.end) {\r\n bullet.visible = false;\r\n }\r\n bullet.moveTo(this.xAxis.renderer.positionToPoint(positionX, positionY));\r\n };\r\n RadarSeries.prototype.setXAxis = function (axis) {\r\n _super.prototype.setXAxis.call(this, axis);\r\n this.updateRendererRefs();\r\n };\r\n RadarSeries.prototype.setYAxis = function (axis) {\r\n _super.prototype.setYAxis.call(this, axis);\r\n this.updateRendererRefs();\r\n };\r\n RadarSeries.prototype.updateRendererRefs = function () {\r\n var rendererX = this.xAxis.renderer;\r\n var rendererY = this.yAxis.renderer;\r\n rendererX.axisRendererY = rendererY;\r\n };\r\n return RadarSeries;\r\n}(LineSeries));\r\nexport { RadarSeries };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"RadarSeries\"] = RadarSeries;\r\nregistry.registeredClasses[\"RadarSeriesDataItem\"] = RadarSeriesDataItem;\r\n//# sourceMappingURL=RadarSeries.js.map","import { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AxisFill } from \"./AxisFill\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Provides fill element functionality for circular Axes.\r\n *\r\n * @see {@link IAxisFillCircularEvents} for a list of available events\r\n * @see {@link IAxisFillCircularAdapters} for a list of available Adapters\r\n * @todo Needs description\r\n */\r\nvar AxisFillCircular = /** @class */ (function (_super) {\r\n __extends(AxisFillCircular, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param axis Axis\r\n */\r\n function AxisFillCircular(axis) {\r\n var _this = _super.call(this, axis) || this;\r\n _this.className = \"AxisFillCircular\";\r\n _this.element = _this.paper.add(\"path\");\r\n _this.radius = percent(100);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the fill element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisFillCircular.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n if (this.__disabled || this.disabled) {\r\n return;\r\n }\r\n if (this.axis) {\r\n var renderer = this.axis.renderer;\r\n this.fillPath = renderer.getPositionRangePath(this.startPosition, this.endPosition, this.radius, $type.hasValue(this.innerRadius) ? this.innerRadius : renderer.innerRadius, this.cornerRadius);\r\n this.path = this.fillPath;\r\n }\r\n };\r\n Object.defineProperty(AxisFillCircular.prototype, \"innerRadius\", {\r\n /**\r\n * @return Inner radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"innerRadius\");\r\n },\r\n /**\r\n * Inner radius of the fill. Relative ([[Percent]]) or absolute (pixels).\r\n *\r\n * @param value Inner radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisFillCircular.prototype, \"radius\", {\r\n /**\r\n * @return Outer radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"radius\");\r\n },\r\n /**\r\n * Outer radius of the fill. Relative ([[Percent]]) or absolute (pixels).\r\n *\r\n * @param value Outer radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"radius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisFillCircular.prototype, \"cornerRadius\", {\r\n /**\r\n * @return Corner radius (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"cornerRadius\");\r\n },\r\n /**\r\n * Corner radius for the fill. In pixels.\r\n *\r\n * @param value Corner radius (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"cornerRadius\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AxisFillCircular;\r\n}(AxisFill));\r\nexport { AxisFillCircular };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"AxisFillCircular\"] = AxisFillCircular;\r\n//# sourceMappingURL=AxisFillCircular.js.map","/**\r\n * A module defining functionality for circular axis grid elements.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Grid } from \"./Grid\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a circular grid element for circular-type axis.\r\n *\r\n * @see {@link IGridCircularEvents} for a list of available events\r\n * @see {@link IGridCircularAdapters} for a list of available Adapters\r\n * @todo Review: container is better, as we'll be able to attach something to the GridCircular, also with 3d charts we might need some additional elements\r\n */\r\nvar GridCircular = /** @class */ (function (_super) {\r\n __extends(GridCircular, _super);\r\n /**\r\n * Constructor\r\n */\r\n function GridCircular() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"GridCircular\";\r\n _this.pixelPerfect = false;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(GridCircular.prototype, \"innerRadius\", {\r\n /**\r\n * @return Inner radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"innerRadius\");\r\n },\r\n /**\r\n * Inner radius of the circular grid. (absolute or relative)\r\n *\r\n * @param value Inner radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(GridCircular.prototype, \"radius\", {\r\n /**\r\n * @return Outer radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"radius\");\r\n },\r\n /**\r\n * Outer radius of the circular grid. (absolute or relative)\r\n *\r\n * @param value Outer radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"radius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return GridCircular;\r\n}(Grid));\r\nexport { GridCircular };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"GridCircular\"] = GridCircular;\r\n//# sourceMappingURL=GridCircular.js.map","/**\r\n * Axis Label module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AxisLabel } from \"./AxisLabel\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport { Percent } from \"../../core/utils/Percent\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Use to create labels on circular axis.\r\n *\r\n * @see {@link IAxisLabelCircularEvents} for a list of available events\r\n * @see {@link IAxisLabelCircularAdapters} for a list of available Adapters\r\n */\r\nvar AxisLabelCircular = /** @class */ (function (_super) {\r\n __extends(AxisLabelCircular, _super);\r\n /**\r\n * Constructor\r\n */\r\n function AxisLabelCircular() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n *\r\n * @ignore\r\n */\r\n _this.fdx = 0;\r\n /**\r\n *\r\n * @ignore\r\n */\r\n _this.fdy = 0;\r\n _this.className = \"AxisLabelCircular\";\r\n _this.padding(0, 0, 0, 0);\r\n _this.location = 0.5;\r\n _this.locationOnPath = 0.5;\r\n _this.radius = 0;\r\n _this.isMeasured = false;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(AxisLabelCircular.prototype, \"relativeRotation\", {\r\n /**\r\n * @return Rotation angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"relativeRotation\");\r\n },\r\n /**\r\n * Relative rotation of the label.\r\n *\r\n * It is an angle to circle. In case 90, labels will be positioned like rays\r\n * of light, if 0 - positioned along the circle.\r\n *\r\n * @param value Rotation angle\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"relativeRotation\", value, true);\r\n if (!$type.hasValue(value)) {\r\n this.rotation = undefined;\r\n var dataItem = this.dataItem;\r\n if (dataItem && dataItem.component) {\r\n dataItem.component.invalidateDataItems();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisLabelCircular.prototype, \"radius\", {\r\n /**\r\n * @return Distance (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"radius\");\r\n },\r\n /**\r\n * Distance from axis circle to label in pixels or percent.\r\n *\r\n * @param value Distance (px or percent)\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"radius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisLabelCircular.prototype, \"bent\", {\r\n /**\r\n * @return Bent?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"bent\");\r\n },\r\n /**\r\n * Specifies if label should be bent along the circle.\r\n *\r\n * IMPORTANT: Use this with caution, since it is quite CPU-greedy.\r\n *\r\n * @since 4.1.2\r\n * @default false\r\n * @param value Bent?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"bent\", value, true);\r\n this.setPropertyValue(\"wrap\", false);\r\n this.setPropertyValue(\"horizontalCenter\", \"none\");\r\n this.setPropertyValue(\"verticalCenter\", \"none\");\r\n if (value) {\r\n this.setPropertyValue(\"dx\", 0);\r\n this.setPropertyValue(\"dy\", 0);\r\n this.setPropertyValue(\"x\", 0);\r\n this.setPropertyValue(\"y\", 0);\r\n this.setPropertyValue(\"rotation\", 0);\r\n //this.setPropertyValue(\"relativeRotation\", undefined);\r\n this.fdx = 0;\r\n this.fdy = 0;\r\n this.textAlign = \"middle\";\r\n }\r\n else {\r\n if (this.textPathElement) {\r\n this.textPathElement.dispose();\r\n this.textPathElement = undefined;\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns label radius in pixels.\r\n *\r\n * @param axisRadius Radius\r\n * @return Pixel radius\r\n */\r\n AxisLabelCircular.prototype.pixelRadius = function (axisRadius) {\r\n var sign = 1;\r\n if (this.inside) {\r\n sign = -1;\r\n }\r\n return $utils.relativeToValue(this.radius, axisRadius) * sign;\r\n };\r\n /**\r\n * Returns label horizontal radius in pixels.\r\n *\r\n * @param axisRadius Radius\r\n * @param axisRadiusY Vertical radius\r\n * @return Radius\r\n */\r\n AxisLabelCircular.prototype.pixelRadiusY = function (axisRadius, axisRadiusY) {\r\n var sign = 1;\r\n if (this.inside) {\r\n sign = -1;\r\n }\r\n var radius = this.radius;\r\n if ($type.isNumber(radius)) {\r\n radius *= axisRadiusY / axisRadius;\r\n return $utils.relativeToValue(radius, axisRadius) * sign;\r\n }\r\n else {\r\n return $utils.relativeToValue(radius, axisRadiusY) * sign;\r\n }\r\n };\r\n /**\r\n * [fixPosition description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param point Label affixation point\r\n * @param axisRadius Distance from point (px)\r\n */\r\n AxisLabelCircular.prototype.fixPosition = function (angle, axisRadius, axisRadiusY, dx, dy) {\r\n if (!$type.isNumber(axisRadiusY)) {\r\n axisRadiusY = axisRadius;\r\n }\r\n if (!$type.isNumber(dx)) {\r\n dx = 0;\r\n }\r\n if (!$type.isNumber(dy)) {\r\n dy = 0;\r\n }\r\n var point = { x: axisRadius * $math.cos(angle), y: axisRadiusY * $math.sin(angle) };\r\n if (this.invalid) {\r\n this.validate(); //@todo\" check if we need this\r\n }\r\n var isNegative = false;\r\n var realRadius = this.radius;\r\n if (realRadius instanceof Percent && realRadius.value < 0) {\r\n isNegative = true;\r\n }\r\n else if (realRadius < 0) {\r\n isNegative = true;\r\n }\r\n var relativeRotation = this.relativeRotation;\r\n var labelRadius = this.pixelRadius(axisRadius);\r\n if (this.bent) {\r\n var point_1 = { x: (axisRadius + labelRadius) * $math.cos(angle + 180), y: (axisRadiusY + labelRadius * axisRadiusY / axisRadius) * $math.sin(angle + 180) };\r\n this.path = $path.moveTo(point_1) + $path.arcTo(angle + 180, 360, axisRadius + labelRadius, axisRadiusY + labelRadius * axisRadiusY / axisRadius);\r\n if (this.textPathElement) {\r\n this.textPathElement.attr({ \"startOffset\": (this.locationOnPath * 100) + \"%\" });\r\n }\r\n return;\r\n }\r\n // WHEN ROTATED\r\n if ($type.isNumber(relativeRotation)) {\r\n this.horizontalCenter = \"none\";\r\n this.verticalCenter = \"none\";\r\n angle = $math.fitAngleToRange(angle, -180, 180);\r\n var pixelWidth = this.bbox.width;\r\n var pixelHeight = this.bbox.height;\r\n var pixelPaddingBottom = this.pixelPaddingBottom;\r\n var pixelPaddingTop = this.pixelPaddingTop;\r\n var pixelPaddingLeft = this.pixelPaddingLeft;\r\n var pixelPaddingRight = this.pixelPaddingRight;\r\n if (angle > 90 || angle < -90) {\r\n if (relativeRotation == -90) {\r\n relativeRotation = 90;\r\n pixelWidth = 0;\r\n }\r\n }\r\n else {\r\n if (relativeRotation == -90) {\r\n pixelHeight = -pixelHeight;\r\n }\r\n if (relativeRotation == 90) {\r\n relativeRotation = -90;\r\n pixelWidth = -pixelPaddingLeft - pixelPaddingRight;\r\n pixelHeight = -pixelHeight - pixelPaddingTop - pixelPaddingBottom;\r\n }\r\n }\r\n this.rotation = relativeRotation + angle + 90;\r\n var dH = $math.sin(relativeRotation) / 2;\r\n var dW = $math.cos(relativeRotation) / 2;\r\n var rotation = this.rotation;\r\n this.dx = pixelHeight * dH * $math.sin(rotation) - pixelWidth * dW * $math.cos(rotation);\r\n this.dy = -pixelHeight * dH * $math.cos(rotation) - pixelWidth * dW * $math.sin(rotation);\r\n if (!this.inside) {\r\n labelRadius += (pixelHeight + pixelPaddingBottom + pixelPaddingTop) * $math.cos(relativeRotation) + (pixelWidth + pixelPaddingLeft + pixelPaddingRight) * $math.sin(relativeRotation);\r\n }\r\n else {\r\n if (angle > 90 || angle < -90) {\r\n labelRadius -= (pixelPaddingBottom + pixelPaddingTop) * $math.cos(relativeRotation) + (pixelPaddingLeft + pixelPaddingRight) * $math.sin(relativeRotation);\r\n }\r\n else {\r\n labelRadius += (pixelPaddingBottom + this.bbox.height + pixelPaddingTop) * $math.cos(relativeRotation) + (pixelPaddingLeft + pixelPaddingRight + this.bbox.width) * $math.sin(relativeRotation);\r\n }\r\n }\r\n point.x += $math.cos(angle) * labelRadius;\r\n point.y += $math.sin(angle) * labelRadius * axisRadiusY / axisRadius;\r\n }\r\n else {\r\n // END OF ROTATED\r\n this.horizontalCenter = \"middle\";\r\n this.verticalCenter = \"middle\";\r\n if (isNegative) {\r\n this.dx = 0;\r\n this.dy = 0;\r\n point.x = (axisRadius + labelRadius) * $math.cos(angle);\r\n point.y = (axisRadiusY + labelRadius * axisRadiusY / axisRadius) * $math.sin(angle);\r\n }\r\n else {\r\n // we don't use valign for labels because then they would jump while animating. instead we modify dy depending on a y position\r\n // this math makes dy to be 1 at the top of the circle, 0.5 at the middle and 1 at the bottom\r\n // @todo with this math doesn't work well with inside = true\r\n this.dy = this._measuredHeight / 2 * $math.sin(angle); //(1 - (point.y + axisRadiusY) / (2 * axisRadiusY));\r\n // simmilar with dx\r\n this.dx = this._measuredWidth / 2 * $math.cos(angle); //(1 - (point.x + axisRadius) / (2 * axisRadius));\r\n point.x += $math.cos(angle) * labelRadius;\r\n point.y += $math.sin(angle) * labelRadius * axisRadiusY / axisRadius;\r\n }\r\n }\r\n point.x += dx;\r\n point.y += dy;\r\n this.fdx = this.dx;\r\n this.fdy = this.dy;\r\n this.moveTo(point);\r\n };\r\n return AxisLabelCircular;\r\n}(AxisLabel));\r\nexport { AxisLabelCircular };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"AxisLabelCircular\"] = AxisLabelCircular;\r\n//# sourceMappingURL=AxisLabelCircular.js.map","/**\r\n * Module, defining Axis Renderer for circular axes.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AxisRenderer } from \"./AxisRenderer\";\r\nimport { AxisFillCircular } from \"./AxisFillCircular\";\r\nimport { GridCircular } from \"./GridCircular\";\r\nimport { AxisLabelCircular } from \"./AxisLabelCircular\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { percent, Percent } from \"../../core/utils/Percent\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { AxisBullet } from \"./AxisBullet\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A renderer for circular axis.\r\n */\r\nvar AxisRendererCircular = /** @class */ (function (_super) {\r\n __extends(AxisRendererCircular, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param axis Related axis\r\n */\r\n function AxisRendererCircular() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * @ignore\r\n */\r\n _this.pixelRadiusReal = 0;\r\n // axis.layout = \"none\"; // does not trigger redraw when size changes\r\n _this.layout = \"none\";\r\n _this.className = \"AxisRendererCircular\";\r\n _this.isMeasured = false;\r\n _this.startAngle = -90;\r\n _this.endAngle = 270;\r\n _this.useChartAngles = true;\r\n _this.radius = percent(100);\r\n _this.isMeasured = false;\r\n _this.grid.template.location = 0;\r\n _this.labels.template.location = 0;\r\n _this.labels.template.radius = 15;\r\n _this.ticks.template.location = 0;\r\n _this.ticks.template.pixelPerfect = false;\r\n _this.tooltipLocation = 0;\r\n _this.line.strokeOpacity = 0;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n AxisRendererCircular.prototype.setAxis = function (axis) {\r\n var _this = this;\r\n _super.prototype.setAxis.call(this, axis);\r\n axis.isMeasured = false;\r\n // modify x and y so that tooltip would always be on circle\r\n var tooltip = axis.tooltip;\r\n tooltip.adapter.add(\"dx\", function (x, target) {\r\n var point = $utils.svgPointToSprite({ x: target.pixelX, y: target.pixelY }, _this);\r\n return _this.pixelRadius * Math.cos(Math.atan2(point.y, point.x)) - point.x;\r\n });\r\n tooltip.adapter.add(\"dy\", function (y, target) {\r\n var point = $utils.svgPointToSprite({ x: target.pixelX, y: target.pixelY }, _this);\r\n return _this.pixelRadius * Math.sin(Math.atan2(point.y, point.x)) - point.y;\r\n });\r\n };\r\n /**\r\n * Validates Axis renderer.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererCircular.prototype.validate = function () {\r\n // so that radius would be updated\r\n if (this.chart && this.chart.invalid) {\r\n this.chart.validate();\r\n }\r\n _super.prototype.validate.call(this);\r\n };\r\n Object.defineProperty(AxisRendererCircular.prototype, \"axisLength\", {\r\n /**\r\n * Returns actual length of the Axis, in pixels.\r\n *\r\n * @return Length (px)\r\n */\r\n get: function () {\r\n return 2 * Math.PI * this.pixelRadius;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererCircular.prototype, \"radius\", {\r\n /**\r\n * @return Outer radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"radius\");\r\n },\r\n /**\r\n * Outer radius of the axis.\r\n *\r\n * Can be absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Outer radius\r\n */\r\n set: function (value) {\r\n if (this.setPercentProperty(\"radius\", value, false, false, 10, false)) {\r\n if (this.axis) {\r\n this.axis.invalidate();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererCircular.prototype, \"pixelRadius\", {\r\n /**\r\n * Outer radius in pixels.\r\n *\r\n * @return Outer radius (px)\r\n */\r\n get: function () {\r\n return $utils.relativeRadiusToValue(this.radius, this.pixelRadiusReal) || 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererCircular.prototype, \"innerRadius\", {\r\n /**\r\n * @return Inner radius\r\n */\r\n get: function () {\r\n var chart = this.chart;\r\n var innerRadius = this.getPropertyValue(\"innerRadius\");\r\n if (chart) {\r\n if (!$type.hasValue(innerRadius)) {\r\n innerRadius = chart.innerRadius;\r\n if (innerRadius instanceof Percent && chart) {\r\n innerRadius = percent(innerRadius.value * chart.innerRadiusModifyer * 100);\r\n }\r\n }\r\n else {\r\n if (innerRadius instanceof Percent && chart) {\r\n var mr = chart.mr;\r\n var value = innerRadius.value;\r\n value = Math.max(mr * value, mr - Math.min(chart.plotContainer.innerHeight, chart.plotContainer.innerWidth)) / mr;\r\n innerRadius = percent(value * 100);\r\n }\r\n }\r\n return innerRadius;\r\n }\r\n },\r\n /**\r\n * Inner radius of the axis.\r\n *\r\n * Can be absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Inner radius\r\n */\r\n set: function (value) {\r\n if (this.setPercentProperty(\"innerRadius\", value, false, false, 10, false)) {\r\n if (this.axis) {\r\n this.axis.invalidate();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererCircular.prototype, \"useChartAngles\", {\r\n /**\r\n * @return Use chart angles\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"useChartAngles\");\r\n },\r\n /**\r\n * Specifies if axis should use its own `startAngle` and `endAngle` or\r\n * inherit them from relative properties from chart.\r\n *\r\n * @default false\r\n * @param value Use chart's angles\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"useChartAngles\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererCircular.prototype, \"pixelInnerRadius\", {\r\n /**\r\n * Inner radius in pixels.\r\n *\r\n * @return Inner radius (px)\r\n */\r\n get: function () {\r\n return $utils.relativeRadiusToValue(this.innerRadius, this.pixelRadiusReal) || 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts relative position on axis to point coordinates.\r\n *\r\n * @param position Position (0-1)\r\n * @param position2 Position (0-1) Position on the second axis\r\n * @return Point\r\n */\r\n AxisRendererCircular.prototype.positionToPoint = function (position, position2) {\r\n if (!$type.isNumber(position2)) {\r\n position2 = 1;\r\n }\r\n var coordinate = this.positionToCoordinate(position);\r\n var angle = this.startAngle + (this.endAngle - this.startAngle) * coordinate / this.axisLength;\r\n var radius = this.pixelRadius;\r\n var innerRadius = this.pixelInnerRadius;\r\n if (this.axisRendererY) {\r\n var realRadius = $math.fitToRange(this.axisRendererY.positionToCoordinate(position2), 0, Infinity);\r\n if (realRadius == 0) {\r\n realRadius = 0.000001;\r\n }\r\n var point = { x: realRadius * $math.cos(angle), y: realRadius * $math.sin(angle) };\r\n return point;\r\n }\r\n return { x: $math.cos(angle) * innerRadius + (radius - innerRadius) * $math.cos(angle) * position2, y: $math.sin(angle) * innerRadius + (radius - innerRadius) * $math.sin(angle) * position2 };\r\n };\r\n /**\r\n * Converts relative position (0-1) on axis to angle in degrees (0-360).\r\n *\r\n * @param position Position (0-1)\r\n * @return Angle (0-360)\r\n */\r\n AxisRendererCircular.prototype.positionToAngle = function (position) {\r\n var axis = this.axis;\r\n var arc = (this.endAngle - this.startAngle) / (axis.end - axis.start);\r\n var angle;\r\n if (axis.renderer.inversed) {\r\n angle = this.startAngle + (axis.end - position) * arc;\r\n }\r\n else {\r\n angle = this.startAngle + (position - axis.start) * arc;\r\n }\r\n return $math.round(angle, 3);\r\n };\r\n /**\r\n * Converts angle on axis to relative position(0-1).\r\n *\r\n * @param angle Angle in degrees\r\n * @return Position (0-1)\r\n */\r\n AxisRendererCircular.prototype.angleToPosition = function (angle) {\r\n var axis = this.axis;\r\n var arc = (this.endAngle - this.startAngle) / (axis.end - axis.start);\r\n var position;\r\n if (axis.renderer.inversed) {\r\n position = axis.end - (angle - this.startAngle) / arc;\r\n }\r\n else {\r\n position = (angle - this.startAngle) / arc + axis.start;\r\n }\r\n return $math.round(position, 5);\r\n };\r\n /**\r\n * Updates and positions the axis line element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererCircular.prototype.updateAxisLine = function () {\r\n var radius = this.pixelRadius;\r\n var startAngle = this.startAngle;\r\n var endAngle = this.endAngle;\r\n var arc = $math.min(360, endAngle - startAngle);\r\n this.line.path = $path.moveTo({ x: radius * $math.cos(startAngle), y: radius * $math.sin(startAngle) }) + $path.arcTo(startAngle, arc, radius, radius);\r\n };\r\n /**\r\n * Updates and positions a grid element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param grid Grid element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererCircular.prototype.updateGridElement = function (grid, position, endPosition) {\r\n position = position + (endPosition - position) * grid.location;\r\n var point = this.positionToPoint(position);\r\n if ($type.isNumber(point.x) && $type.isNumber(point.y) && grid.element) {\r\n var angle = $math.DEGREES * Math.atan2(point.y, point.x);\r\n var radius = $utils.relativeRadiusToValue($type.hasValue(grid.radius) ? grid.radius : percent(100), this.pixelRadius);\r\n var gridInnerRadius = $utils.relativeRadiusToValue(grid.innerRadius, this.pixelRadius);\r\n grid.zIndex = 0;\r\n var innerRadius = $utils.relativeRadiusToValue($type.isNumber(gridInnerRadius) ? gridInnerRadius : this.innerRadius, this.pixelRadiusReal, true);\r\n if (!$type.isNumber(innerRadius)) {\r\n innerRadius = 0;\r\n }\r\n grid.path = $path.moveTo({ x: innerRadius * $math.cos(angle), y: innerRadius * $math.sin(angle) }) + $path.lineTo({ x: radius * $math.cos(angle), y: radius * $math.sin(angle) });\r\n }\r\n this.toggleVisibility(grid, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions a tick element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param tick Tick element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererCircular.prototype.updateTickElement = function (tick, position, endPosition) {\r\n position = position + (endPosition - position) * tick.location;\r\n var point = this.positionToPoint(position);\r\n if (tick.element) {\r\n var radius = this.pixelRadius;\r\n var angle = $math.DEGREES * Math.atan2(point.y, point.x);\r\n var tickLength = tick.length;\r\n if (tick.inside) {\r\n tickLength = -tickLength;\r\n }\r\n tick.zIndex = 1;\r\n tick.path = $path.moveTo({ x: radius * $math.cos(angle), y: radius * $math.sin(angle) }) + $path.lineTo({ x: (radius + tickLength) * $math.cos(angle), y: (radius + tickLength) * $math.sin(angle) });\r\n }\r\n this.toggleVisibility(tick, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions axis bullet.\r\n *\r\n * @ignore Exclude from docs\r\n * @param bullet AxisBullet element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererCircular.prototype.updateBullet = function (bullet, position, endPosition) {\r\n var location = 0.5;\r\n if (bullet instanceof AxisBullet) {\r\n location = bullet.location;\r\n }\r\n position = position + (endPosition - position) * location;\r\n var point = this.positionToPoint(position);\r\n var radius = this.pixelRadius;\r\n var angle = $math.DEGREES * Math.atan2(point.y, point.x);\r\n point = { x: radius * $math.cos(angle), y: radius * $math.sin(angle) };\r\n this.positionItem(bullet, point);\r\n this.toggleVisibility(bullet, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions a label element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param label Label element\r\n * @param position Starting position\r\n * @param endPosition Ending position\r\n */\r\n AxisRendererCircular.prototype.updateLabelElement = function (label, position, endPosition, location) {\r\n if (!$type.hasValue(location)) {\r\n location = label.location;\r\n }\r\n position = position + (endPosition - position) * location;\r\n label.fixPosition(this.positionToAngle(position), this.pixelRadius);\r\n label.zIndex = 2;\r\n this.toggleVisibility(label, position, this.minLabelPosition, this.maxLabelPosition);\r\n };\r\n /**\r\n * Checks if point is within bounds of a container.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point Point coordinates\r\n * @return Fits?\r\n */\r\n AxisRendererCircular.prototype.fitsToBounds = function (point) {\r\n return true;\r\n };\r\n Object.defineProperty(AxisRendererCircular.prototype, \"startAngle\", {\r\n /**\r\n * @return Start angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startAngle\");\r\n },\r\n /**\r\n * Start angle of the axis in degrees (0-360).\r\n *\r\n * @param value Start angle\r\n */\r\n set: function (value) {\r\n // do not normalize angel here!\r\n if (this.setPropertyValue(\"startAngle\", value)) {\r\n this.invalidateAxisItems();\r\n if (this.axis) {\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererCircular.prototype, \"endAngle\", {\r\n /**\r\n * @return End angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endAngle\");\r\n },\r\n /**\r\n * End angle of the axis in degrees (0-360).\r\n *\r\n * @param value End angle\r\n */\r\n set: function (value) {\r\n // do not normalize angel here!\r\n if (this.setPropertyValue(\"endAngle\", value)) {\r\n this.invalidateAxisItems();\r\n if (this.axis) {\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * [getPositionRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param startPosition Starting position\r\n * @param endPosition End position\r\n * @return SVG path\r\n */\r\n AxisRendererCircular.prototype.getPositionRangePath = function (startPosition, endPosition, radius, innerRadius, cornerRadius) {\r\n var path = \"\";\r\n if ($type.isNumber(startPosition) && $type.isNumber(endPosition)) {\r\n if (!$type.hasValue(radius)) {\r\n radius = this.radius;\r\n }\r\n startPosition = $math.max(startPosition, this.axis.start);\r\n endPosition = $math.min(endPosition, this.axis.end);\r\n if (endPosition < startPosition) {\r\n endPosition = startPosition;\r\n }\r\n var pixelRadius = $utils.relativeRadiusToValue(radius, this.pixelRadius);\r\n var pixelInnerRadius = $utils.relativeRadiusToValue(innerRadius, this.pixelRadius, true);\r\n var startAngle = this.positionToAngle(startPosition);\r\n var endAngle = this.positionToAngle(endPosition);\r\n var arc = endAngle - startAngle;\r\n path = $path.arc(startAngle, arc, pixelRadius, pixelInnerRadius, pixelRadius, cornerRadius);\r\n }\r\n return path;\r\n };\r\n /**\r\n * Returns a new grid element, suitable for this Axis Renderer type.\r\n *\r\n * @return Grid element\r\n */\r\n AxisRendererCircular.prototype.createGrid = function () {\r\n return new GridCircular();\r\n };\r\n /**\r\n * Returns a new fill element, suitable for this Axis Renderer type.\r\n *\r\n * @return Fill element\r\n */\r\n AxisRendererCircular.prototype.createFill = function (axis) {\r\n return new AxisFillCircular(axis);\r\n };\r\n /**\r\n * Returns a new label element, suitable for this Axis Renderer type.\r\n *\r\n * @return Label element\r\n */\r\n AxisRendererCircular.prototype.createLabel = function () {\r\n return new AxisLabelCircular();\r\n };\r\n /**\r\n * Converts a point at specific coordinates to a relative position (0-1)\r\n * on the axis.\r\n *\r\n * @param point Point\r\n * @return Position (0-1)\r\n */\r\n AxisRendererCircular.prototype.pointToPosition = function (point) {\r\n var angle = $math.fitAngleToRange($math.getAngle(point), this.startAngle, this.endAngle);\r\n return this.coordinateToPosition((angle - this.startAngle) / 360 * this.axisLength);\r\n };\r\n return AxisRendererCircular;\r\n}(AxisRenderer));\r\nexport { AxisRendererCircular };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"AxisRendererCircular\"] = AxisRendererCircular;\r\n//# sourceMappingURL=AxisRendererCircular.js.map","/**\r\n * Module, defining Axis Renderer for radial axes.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AxisRendererY } from \"./AxisRendererY\";\r\nimport { CategoryAxis } from \"./CategoryAxis\";\r\nimport { WavedCircle } from \"../../core/elements/WavedCircle\";\r\nimport { MutableValueDisposer } from \"../../core/utils/Disposer\";\r\nimport { Percent, percent } from \"../../core/utils/Percent\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { AxisBullet } from \"./AxisBullet\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A renderer for radial axis.\r\n */\r\nvar AxisRendererRadial = /** @class */ (function (_super) {\r\n __extends(AxisRendererRadial, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param axis Related axis\r\n */\r\n function AxisRendererRadial() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * A related chart.\r\n */\r\n _this._chart = new MutableValueDisposer();\r\n /**\r\n * @ignore\r\n */\r\n _this.pixelRadiusReal = 0;\r\n _this.className = \"AxisRendererRadial\";\r\n _this.isMeasured = false;\r\n _this.startAngle = -90;\r\n _this.endAngle = 270;\r\n _this.minGridDistance = 30;\r\n _this.gridType = \"circles\";\r\n _this.axisAngle = -90;\r\n _this.isMeasured = false;\r\n _this.layout = \"none\";\r\n _this.radius = percent(100);\r\n _this.line.strokeOpacity = 0;\r\n _this.labels.template.horizontalCenter = \"middle\";\r\n _this._disposers.push(_this._chart);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Validates Axis renderer.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererRadial.prototype.validate = function () {\r\n // so that radius would be updated\r\n if (this.chart && this.chart.invalid) {\r\n this.chart.validate();\r\n }\r\n _super.prototype.validate.call(this);\r\n };\r\n Object.defineProperty(AxisRendererRadial.prototype, \"axisLength\", {\r\n /**\r\n * Returns actual length of the Axis, in pixels.\r\n *\r\n * @return Length (px)\r\n */\r\n get: function () {\r\n return this.pixelRadius - this.pixelInnerRadius;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererRadial.prototype, \"radius\", {\r\n /**\r\n * @return Outer radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"radius\");\r\n },\r\n /**\r\n * Outer radius of the axis.\r\n *\r\n * Can be absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Outer radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"radius\", value, false, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererRadial.prototype, \"pixelRadius\", {\r\n /**\r\n * Outer radius in pixels.\r\n *\r\n * @return Outer radius (px)\r\n */\r\n get: function () {\r\n return $utils.relativeRadiusToValue(this.radius, this.pixelRadiusReal) || 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererRadial.prototype, \"innerRadius\", {\r\n /**\r\n * @return Inner radius\r\n */\r\n get: function () {\r\n var chart = this.chart;\r\n var innerRadius = this.getPropertyValue(\"innerRadius\");\r\n if (chart) {\r\n if (!$type.hasValue(innerRadius)) {\r\n innerRadius = chart.innerRadius;\r\n if (innerRadius instanceof Percent && chart) {\r\n innerRadius = percent(innerRadius.value * chart.innerRadiusModifyer * 100);\r\n }\r\n }\r\n else {\r\n if (innerRadius instanceof Percent && chart) {\r\n var mr = chart.mr;\r\n var value = innerRadius.value;\r\n value = Math.max(mr * value, mr - Math.min(chart.plotContainer.innerHeight, chart.plotContainer.innerWidth)) / mr;\r\n innerRadius = percent(value * 100);\r\n }\r\n }\r\n }\r\n return innerRadius;\r\n },\r\n /**\r\n * Inner radius of the axis.\r\n *\r\n * Can be absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Outer radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"innerRadius\", value, false, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererRadial.prototype, \"pixelInnerRadius\", {\r\n /**\r\n * Inner radius in pixels.\r\n *\r\n * @return Inner radius (px)\r\n */\r\n get: function () {\r\n return $utils.relativeRadiusToValue(this.innerRadius, this.pixelRadiusReal) || 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts relative position on axis to point coordinates.\r\n *\r\n * @param position Position (0-1)\r\n * @param position2 Position (0-1) Position on the second axis\r\n * @return Point\r\n */\r\n AxisRendererRadial.prototype.positionToPoint = function (position, position2) {\r\n var radius = $math.fitToRange(this.positionToCoordinate(position), 0, Infinity);\r\n return { x: radius * $math.cos(this.axisAngle), y: radius * $math.sin(this.axisAngle) };\r\n };\r\n /**\r\n * Updates and positions the axis line element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererRadial.prototype.updateAxisLine = function () {\r\n this.line.path = $path.moveTo({ x: this.pixelInnerRadius * $math.cos(this.axisAngle), y: this.pixelInnerRadius * $math.sin(this.axisAngle) }) + $path.lineTo({ x: this.pixelRadius * $math.cos(this.axisAngle), y: this.pixelRadius * $math.sin(this.axisAngle) });\r\n var title = this.axis.title;\r\n title.valign = \"none\";\r\n title.horizontalCenter = \"middle\";\r\n title.verticalCenter = \"bottom\";\r\n title.y = -this.axisLength / 2;\r\n var rotation = 90;\r\n if (this.opposite) {\r\n if (!this.inside) {\r\n rotation = -90;\r\n }\r\n }\r\n else {\r\n if (this.inside) {\r\n rotation = -90;\r\n }\r\n }\r\n title.rotation = rotation;\r\n };\r\n /**\r\n * Updates and positions a grid element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param grid Grid element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererRadial.prototype.updateGridElement = function (grid, position, endPosition) {\r\n position = position + (endPosition - position) * grid.location;\r\n var point = this.positionToPoint(position);\r\n var path;\r\n var radius = $math.getDistance(point);\r\n var startAngle = this.startAngle;\r\n var endAngle = this.endAngle;\r\n var chart = this.chart;\r\n if ($type.isNumber(radius) && grid.element && chart) {\r\n var xAxis = chart.xAxes.getIndex(0);\r\n var count = 0;\r\n var series = chart.series.getIndex(0);\r\n if (series) {\r\n count = series.dataItems.length;\r\n }\r\n // polygons are only possible if x axis is present\r\n // @todo: review this\r\n if (this.gridType == \"polygons\" && count > 0 && series && xAxis && xAxis instanceof CategoryAxis) {\r\n var gridLocation = xAxis.renderer.grid.template.location;\r\n var angle = xAxis.getAngle(series.dataItems.getIndex(0), \"categoryX\", gridLocation);\r\n path = $path.moveTo({ x: radius * $math.cos(angle), y: radius * $math.sin(angle) });\r\n for (var i = 1; i < count; i++) {\r\n angle = xAxis.getAngle(series.dataItems.getIndex(i), \"categoryX\", gridLocation);\r\n path += $path.lineTo({ x: radius * $math.cos(angle), y: radius * $math.sin(angle) });\r\n }\r\n angle = xAxis.getAngle(series.dataItems.getIndex(count - 1), \"categoryX\", xAxis.renderer.cellEndLocation);\r\n path += $path.lineTo({ x: radius * $math.cos(angle), y: radius * $math.sin(angle) });\r\n }\r\n else {\r\n path = $path.moveTo({ x: radius * $math.cos(startAngle), y: radius * $math.sin(startAngle) }) + $path.arcTo(startAngle, endAngle - startAngle, radius, radius);\r\n }\r\n grid.path = path;\r\n }\r\n this.toggleVisibility(grid, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions a label element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param label Label element\r\n * @param position Starting position\r\n * @param endPosition Ending position\r\n */\r\n AxisRendererRadial.prototype.updateLabelElement = function (label, position, endPosition, location) {\r\n if (!$type.hasValue(location)) {\r\n location = label.location;\r\n }\r\n position = position + (endPosition - position) * location;\r\n var point = this.positionToPoint(position);\r\n this.positionItem(label, point);\r\n this.toggleVisibility(label, position, this.minLabelPosition, this.maxLabelPosition);\r\n };\r\n /**\r\n * Updates and positions the base grid element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererRadial.prototype.updateBaseGridElement = function () {\r\n // @todo? zero grid for radar chart, is it needed?\r\n };\r\n /**\r\n * Checks if point is within bounds of a container.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point Point coordinates\r\n * @return Fits?\r\n */\r\n AxisRendererRadial.prototype.fitsToBounds = function (point) {\r\n return true;\r\n };\r\n Object.defineProperty(AxisRendererRadial.prototype, \"startAngle\", {\r\n /**\r\n * @return Start angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startAngle\");\r\n },\r\n /**\r\n * Start angle of the axis in degrees. (0-360)\r\n *\r\n * @param value Start angle\r\n */\r\n set: function (value) {\r\n // do not normalize angle here!\r\n if (this.setPropertyValue(\"startAngle\", value)) {\r\n this.invalidateAxisItems();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererRadial.prototype, \"endAngle\", {\r\n /**\r\n * @return End angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endAngle\");\r\n },\r\n /**\r\n * End angle of the axis in degrees. (0-360)\r\n *\r\n * @param value End angle\r\n */\r\n set: function (value) {\r\n // do not normalize angel here!\r\n if (this.setPropertyValue(\"endAngle\", value)) {\r\n this.invalidateAxisItems();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererRadial.prototype, \"axisAngle\", {\r\n /**\r\n * @return Axis angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"axisAngle\");\r\n //return $math.fitToRange(this.getPropertyValue(\"axisAngle\"), this.startAngle, this.endAngle); // no good, as less flexible\r\n },\r\n /**\r\n * Angle of the radial axis in degrees. (0-360)\r\n *\r\n * @param value Axis angle\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"axisAngle\", $math.normalizeAngle(value));\r\n this.invalidateAxisItems();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererRadial.prototype, \"gridType\", {\r\n /**\r\n * Grid type\r\n */\r\n get: function () {\r\n var axis = this.chart.xAxes.getIndex(0);\r\n if (axis instanceof CategoryAxis) {\r\n return this.getPropertyValue(\"gridType\");\r\n }\r\n else {\r\n return \"circles\";\r\n }\r\n },\r\n // polygons grid type is only possible under these conditions: xAxis is available and it is CategoryAxis, also at least one series should be added to a chart\r\n /**\r\n * Grid type for radial axis.\r\n *\r\n * A grid on radia axis can either be perfect circles (\"circles\"), or\r\n * straight lines (\"polygons\").\r\n *\r\n * @default \"circles\"\r\n * @param value Grid type\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"gridType\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * [getPositionRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param startPosition Starting position\r\n * @param endPosition End position\r\n * @return SVG path\r\n */\r\n AxisRendererRadial.prototype.getPositionRangePath = function (startPosition, endPosition) {\r\n var pixelInnerRadius = this.pixelInnerRadius;\r\n var pixelRadius = this.axisLength + pixelInnerRadius;\r\n var innerRadius = $math.fitToRange(this.positionToCoordinate(startPosition), pixelInnerRadius, pixelRadius);\r\n var radius = $math.fitToRange(this.positionToCoordinate(endPosition), pixelInnerRadius, pixelRadius);\r\n //let angleCount: number = this.angleCount;\r\n var startAngle = this.startAngle;\r\n var endAngle = this.endAngle;\r\n var arc = endAngle - startAngle;\r\n var path;\r\n var chart = this.chart;\r\n var xAxis = chart.xAxes.getIndex(0);\r\n var series = chart.series.getIndex(0);\r\n var count = 0;\r\n if (series) {\r\n count = series.dataItems.length;\r\n }\r\n // polygons are only possible if x axis is present\r\n // @todo: review this\r\n if (this.gridType == \"polygons\" && count > 0 && series && xAxis && xAxis instanceof CategoryAxis) {\r\n var gridLocation = xAxis.renderer.grid.template.location;\r\n var angle = xAxis.getAngle(series.dataItems.getIndex(0), \"categoryX\", gridLocation);\r\n path = $path.moveTo({ x: radius * $math.cos(angle), y: radius * $math.sin(angle) });\r\n for (var i = 1; i < count; i++) {\r\n angle = xAxis.getAngle(series.dataItems.getIndex(i), \"categoryX\", gridLocation);\r\n path += $path.lineTo({ x: radius * $math.cos(angle), y: radius * $math.sin(angle) });\r\n }\r\n angle = xAxis.getAngle(series.dataItems.getIndex(count - 1), \"categoryX\", xAxis.renderer.cellEndLocation);\r\n path += $path.lineTo({ x: radius * $math.cos(angle), y: radius * $math.sin(angle) });\r\n path += $path.moveTo({ x: innerRadius * $math.cos(angle), y: innerRadius * $math.sin(angle) });\r\n for (var i = count - 1; i >= 0; i--) {\r\n angle = xAxis.getAngle(series.dataItems.getIndex(i), \"categoryX\", gridLocation);\r\n path += $path.lineTo({ x: innerRadius * $math.cos(angle), y: innerRadius * $math.sin(angle) });\r\n }\r\n }\r\n else {\r\n path = $path.arc(startAngle, arc, radius, innerRadius);\r\n }\r\n return path;\r\n };\r\n /**\r\n * Updates and positions an axis break element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axisBreak Break element\r\n */\r\n AxisRendererRadial.prototype.updateBreakElement = function (axisBreak) {\r\n // @todo: someday we might need axis break when gridType is polygons\r\n var startLine = axisBreak.startLine;\r\n var endLine = axisBreak.endLine;\r\n var fillShape = axisBreak.fillShape;\r\n var startPoint = axisBreak.startPoint;\r\n var endPoint = axisBreak.endPoint;\r\n startLine.radius = Math.abs(startPoint.y);\r\n endLine.radius = Math.abs(endPoint.y);\r\n fillShape.radius = Math.abs(endPoint.y);\r\n fillShape.innerRadius = Math.abs(startPoint.y);\r\n };\r\n /**\r\n * Creates visual elements for and axis break.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axisBreak Axis break\r\n */\r\n AxisRendererRadial.prototype.createBreakSprites = function (axisBreak) {\r\n axisBreak.startLine = new WavedCircle();\r\n axisBreak.endLine = new WavedCircle();\r\n axisBreak.fillShape = new WavedCircle();\r\n };\r\n /**\r\n * Updates some of the Axis tooltip's visual properties, related to\r\n * rendering of the Axis.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererRadial.prototype.updateTooltip = function () {\r\n var axis = this.axis;\r\n if (axis) {\r\n var bigNum = 4000;\r\n var bbx = -4000;\r\n var bby = -4000;\r\n var bbw = bigNum * 2;\r\n var bbh = bigNum * 2;\r\n var axisAngle = this.axisAngle;\r\n if (axisAngle < 0) {\r\n axisAngle += 360;\r\n }\r\n var tooltipOrientation = \"vertical\";\r\n if ((axisAngle > 45 && axisAngle < 135) || (axisAngle > 225 && axisAngle < 315)) {\r\n tooltipOrientation = \"horizontal\";\r\n }\r\n this.axis.updateTooltip(tooltipOrientation, { x: bbx, y: bby, width: bbw, height: bbh });\r\n }\r\n };\r\n /**\r\n * Updates and positions a tick element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param tick Tick element\r\n * @param position Position\r\n */\r\n AxisRendererRadial.prototype.updateTickElement = function (tick, position, endPosition) {\r\n position = position + (endPosition - position) * tick.location;\r\n var point = this.positionToPoint(position);\r\n if (tick.element) {\r\n var angle = $math.normalizeAngle(this.axisAngle + 90);\r\n if (angle / 90 != Math.round(angle / 90)) {\r\n tick.pixelPerfect = false;\r\n }\r\n else {\r\n tick.pixelPerfect = true;\r\n }\r\n var tickLength = -tick.length;\r\n if (tick.inside) {\r\n tickLength *= -1;\r\n }\r\n tick.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: tickLength * $math.cos(angle), y: tickLength * $math.sin(angle) });\r\n }\r\n this.positionItem(tick, point);\r\n this.toggleVisibility(tick, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions axis bullet.\r\n *\r\n * @ignore Exclude from docs\r\n * @param bullet AxisBullet element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererRadial.prototype.updateBullet = function (bullet, position, endPosition) {\r\n var location = 0.5;\r\n if (bullet instanceof AxisBullet) {\r\n location = bullet.location;\r\n }\r\n position = position + (endPosition - position) * location;\r\n var point = this.positionToPoint(position);\r\n this.positionItem(bullet, point);\r\n this.toggleVisibility(bullet, position, 0, 1);\r\n };\r\n /**\r\n * Converts a position on the axis to a coordinate in pixels.\r\n *\r\n * @ignore Exclude from docs\r\n * @param position Position (0-1)\r\n * @return Coordinate (px)\r\n */\r\n AxisRendererRadial.prototype.positionToCoordinate = function (position) {\r\n var coordinate;\r\n var axis = this.axis;\r\n var axisFullLength = axis.axisFullLength;\r\n var innerRadius = this.pixelInnerRadius;\r\n if (axis.renderer.inversed) {\r\n coordinate = (axis.end - position) * axisFullLength + innerRadius;\r\n }\r\n else {\r\n coordinate = (position - axis.start) * axisFullLength + innerRadius;\r\n }\r\n return $math.round(coordinate, 1);\r\n };\r\n /**\r\n * Converts a point at specific coordinates to a relative position (0-1)\r\n * on the axis.\r\n *\r\n * @param point Point\r\n * @return Position (0-1)\r\n */\r\n AxisRendererRadial.prototype.pointToPosition = function (point) {\r\n var coordinate = ($math.getDistance(point) - this.pixelInnerRadius);\r\n return this.coordinateToPosition(coordinate);\r\n };\r\n Object.defineProperty(AxisRendererRadial.prototype, \"chart\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Chart\r\n */\r\n get: function () {\r\n return this._chart.get();\r\n },\r\n /**\r\n * A chart, associated with the Axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Chart\r\n */\r\n set: function (value) {\r\n this._chart.set(value, null);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AxisRendererRadial;\r\n}(AxisRendererY));\r\nexport { AxisRendererRadial };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"AxisRendererRadial\"] = AxisRendererRadial;\r\n//# sourceMappingURL=AxisRendererRadial.js.map","/**\r\n * Radar chart module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { XYChart, XYChartDataItem } from \"./XYChart\";\r\nimport { percent, Percent } from \"../../core/utils/Percent\";\r\nimport { RadarSeries } from \"../series/RadarSeries\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { Circle } from \"../../core/elements/Circle\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { AxisRendererCircular } from \"../axes/AxisRendererCircular\";\r\nimport { AxisRendererRadial } from \"../axes/AxisRendererRadial\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[RadarChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar RadarChartDataItem = /** @class */ (function (_super) {\r\n __extends(RadarChartDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function RadarChartDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"RadarChartDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return RadarChartDataItem;\r\n}(XYChartDataItem));\r\nexport { RadarChartDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a Radar chart.\r\n *\r\n * @see {@link IRadarChartEvents} for a list of available Events\r\n * @see {@link IRadarChartAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/radar-chart/} for documentation\r\n * @important\r\n */\r\nvar RadarChart = /** @class */ (function (_super) {\r\n __extends(RadarChart, _super);\r\n /**\r\n * Constructor\r\n */\r\n function RadarChart() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Defines X axis renderer type.\r\n */\r\n _this._axisRendererX = AxisRendererCircular;\r\n /**\r\n * Defines Y axis renderer type.\r\n */\r\n _this._axisRendererY = AxisRendererRadial;\r\n /**\r\n * used by cursor. We adjust innerradius if start and end angle are close to each other\r\n * @ignore Exclude from docs\r\n */\r\n _this.innerRadiusModifyer = 1;\r\n /**\r\n * @ignore\r\n */\r\n _this.mr = 1;\r\n _this.className = \"RadarChart\";\r\n _this.startAngle = -90;\r\n _this.endAngle = 270;\r\n _this.radius = percent(80);\r\n _this.innerRadius = 0;\r\n var radarContainer = _this.plotContainer.createChild(Container);\r\n radarContainer.shouldClone = false;\r\n radarContainer.layout = \"absolute\";\r\n radarContainer.align = \"center\";\r\n radarContainer.valign = \"middle\";\r\n _this.seriesContainer.parent = radarContainer;\r\n _this.radarContainer = radarContainer;\r\n _this.bulletsContainer.parent = radarContainer;\r\n _this.axisBulletsContainer = radarContainer;\r\n _this._cursorContainer = radarContainer;\r\n _this.chartContainer.events.on(\"maxsizechanged\", _this.invalidate, _this, false); // need this for the chart to change radius if legend is removed/disabled\r\n _this._bulletMask = radarContainer.createChild(Circle);\r\n _this._bulletMask.shouldClone = false;\r\n _this._bulletMask.element = _this.paper.add(\"path\");\r\n _this._bulletMask.opacity = 0;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n RadarChart.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n // Add a default screen reader title for accessibility\r\n // This will be overridden in screen reader if there are any `titles` set\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Radar chart\");\r\n }\r\n };\r\n /**\r\n * Decorates Axis with required properties for this chart.\r\n *\r\n * @param axis Axis\r\n */\r\n RadarChart.prototype.processAxis = function (axis) {\r\n _super.prototype.processAxis.call(this, axis);\r\n var renderer = axis.renderer;\r\n renderer.gridContainer.parent = renderer;\r\n renderer.breakContainer.parent = renderer;\r\n axis.parent = this.radarContainer;\r\n renderer.toBack();\r\n };\r\n /**\r\n * Updates all X axes after range change event.\r\n */\r\n RadarChart.prototype.handleXAxisRangeChange = function () {\r\n _super.prototype.handleXAxisRangeChange.call(this);\r\n $iter.each(this.yAxes.iterator(), function (axis) {\r\n axis.invalidate();\r\n });\r\n };\r\n /**\r\n * Updates all Y axes after range change event.\r\n */\r\n RadarChart.prototype.handleYAxisRangeChange = function () {\r\n _super.prototype.handleYAxisRangeChange.call(this);\r\n $iter.each(this.xAxes.iterator(), function (axis) {\r\n axis.invalidate();\r\n });\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n RadarChart.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Set up cursor\r\n if ($type.hasValue(config.cursor) && !$type.hasValue(config.cursor.type)) {\r\n config.cursor.type = \"RadarCursor\";\r\n }\r\n // Set up series\r\n if ($type.hasValue(config.series) && $type.isArray(config.series)) {\r\n for (var i = 0, len = config.series.length; i < len; i++) {\r\n config.series[i].type = config.series[i].type || \"RadarSeries\";\r\n }\r\n }\r\n // Set up axes\r\n /*if ($type.hasValue(config.xAxes) && $type.isArray(config.xAxes)) {\r\n for (let i = 0, len = config.xAxes.length; i < len; i++) {\r\n config.xAxes[i].type = config.xAxes[i].type || \"AxisRendererCircular\";\r\n }\r\n }\r\n if ($type.hasValue(config.yAxes) && $type.isArray(config.yAxes)) {\r\n for (let i = 0, len = config.yAxes.length; i < len; i++) {\r\n config.yAxes[i].type = config.yAxes[i].type || \"AxisRendererRadial\";\r\n }\r\n }*/\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n /**\r\n * Does calculations before drawing the chart.\r\n */\r\n RadarChart.prototype.beforeDraw = function () {\r\n _super.prototype.beforeDraw.call(this);\r\n var plotContainer = this.plotContainer;\r\n var rect = $math.getArcRect(this.startAngle, this.endAngle, 1);\r\n var innerRect = { x: 0, y: 0, width: 0, height: 0 };\r\n var wr = plotContainer.innerWidth / rect.width;\r\n var hr = plotContainer.innerHeight / rect.height;\r\n var innerRadius = this.innerRadius;\r\n if (innerRadius instanceof Percent) {\r\n var value = innerRadius.value;\r\n var mr = Math.min(wr, hr);\r\n this.mr = mr;\r\n value = Math.max(mr * value, mr - Math.min(plotContainer.innerHeight, plotContainer.innerWidth)) / mr;\r\n innerRect = $math.getArcRect(this.startAngle, this.endAngle, value);\r\n this.innerRadiusModifyer = value / innerRadius.value;\r\n innerRadius = percent(value * 100);\r\n }\r\n // @todo handle this when innerRadius set in pixels (do it for pie also)\r\n rect = $math.getCommonRectangle([rect, innerRect]);\r\n var maxRadius = Math.min(plotContainer.innerWidth / rect.width, plotContainer.innerHeight / rect.height);\r\n var diameter = $utils.relativeRadiusToValue(this.radius, maxRadius) * 2 || 0;\r\n var radius = diameter / 2;\r\n var startAngle = this.startAngle;\r\n var endAngle = this.endAngle;\r\n this._pixelInnerRadius = $utils.relativeRadiusToValue(innerRadius, radius);\r\n this._bulletMask.path = $path.arc(startAngle, endAngle - startAngle, radius, this._pixelInnerRadius);\r\n $iter.each(this.xAxes.iterator(), function (axis) {\r\n if (axis.renderer.useChartAngles) {\r\n axis.renderer.startAngle = startAngle;\r\n axis.renderer.endAngle = endAngle;\r\n }\r\n axis.width = diameter;\r\n axis.height = diameter;\r\n //axis.renderer.width = diameter;\r\n //axis.renderer.height = diameter;\r\n axis.renderer.pixelRadiusReal = radius;\r\n //axis.renderer.innerRadius = innerRadius;\r\n });\r\n $iter.each(this.yAxes.iterator(), function (axis) {\r\n axis.renderer.startAngle = startAngle;\r\n axis.renderer.endAngle = endAngle;\r\n axis.width = diameter;\r\n axis.height = diameter;\r\n //axis.renderer.width = diameter;\r\n //axis.renderer.height = diameter;\r\n axis.renderer.pixelRadiusReal = radius;\r\n //axis.renderer.innerRadius = innerRadius;\r\n });\r\n var cursor = this.cursor;\r\n if (cursor) {\r\n cursor.width = diameter;\r\n cursor.height = diameter;\r\n cursor.startAngle = startAngle;\r\n cursor.endAngle = endAngle;\r\n }\r\n this.radarContainer.definedBBox = { x: radius * rect.x, y: radius * rect.y, width: radius * rect.width, height: radius * rect.height };\r\n this.radarContainer.validatePosition();\r\n };\r\n /**\r\n * Creates and returns a new Series, suitable for RadarChart.\r\n *\r\n * @return New Series\r\n */\r\n RadarChart.prototype.createSeries = function () {\r\n return new RadarSeries();\r\n };\r\n Object.defineProperty(RadarChart.prototype, \"startAngle\", {\r\n /**\r\n * @return Start angle (degrees)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startAngle\");\r\n },\r\n /**\r\n * Starting angle of the Radar face. (degrees)\r\n *\r\n * Normally, a circular radar face begins (the radial axis is drawn) at the\r\n * top center. (at -90 degrees)\r\n *\r\n * You can use `startAngle` to change this setting.\r\n *\r\n * E.g. setting this to 0 will make the radial axis start horizontally to\r\n * the right, as opposed to vertical.\r\n *\r\n * For a perfect circle the absolute sum of `startAngle` and `endAngle`\r\n * needs to be 360.\r\n *\r\n * However, it's **not** necessary to do so. You can set those to lesser\r\n * numbers, to create semi-circles.\r\n *\r\n * E.g. `startAngle = -90` with `endAngle = 0` will create a radar face that\r\n * looks like a quarter of a circle.\r\n *\r\n * @default -90\r\n * @param value Start angle (degrees)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"startAngle\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RadarChart.prototype, \"endAngle\", {\r\n /**\r\n * @return End angle (degrees)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endAngle\");\r\n },\r\n /**\r\n * Starting angle of the Radar face. (degrees)\r\n *\r\n * Normally, a circular radar face ends (the radial axis is drawn) exactly\r\n * where it has started, forming a full 360 circle. (at 270 degrees)\r\n *\r\n * You can use `endAngle` to end the circle somewhere else.\r\n *\r\n * E.g. setting this to 180 will make the radar face end at horizontal line\r\n * to the left off the center.\r\n *\r\n * For a perfect circle the absolute sum of `startAngle` and `endAngle`\r\n * needs to be 360.\r\n *\r\n * However, it's **not** necessary to do so. You can set those to lesser\r\n * numbers, to create semi-circles.\r\n *\r\n * E.g. `startAngle = -90` with `endAngle = 0` will create a radar face that\r\n * looks like a quarter of a circle.\r\n *\r\n * @default -90\r\n * @param value End angle (degrees)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"endAngle\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RadarChart.prototype, \"radius\", {\r\n /**\r\n * @return Outer radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"radius\");\r\n },\r\n /**\r\n * Outer radius of the Radar face.\r\n *\r\n * This can either be in absolute pixel value, or relative [[Percent]].\r\n *\r\n * @param value Outer radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"radius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RadarChart.prototype, \"pixelInnerRadius\", {\r\n /**\r\n * @return Inner radius in pixels\r\n */\r\n get: function () {\r\n return this._pixelInnerRadius;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RadarChart.prototype, \"innerRadius\", {\r\n /**\r\n * @return Inner radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"innerRadius\");\r\n },\r\n /**\r\n * Inner radius of the radar face.\r\n *\r\n * This can either be in absolute pixel value, or relative [[Percent]].\r\n *\r\n * If set in Percent, it will be relative to `radius`. (outer radius)\r\n *\r\n * @param value Inner radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Triggers (re)rendering of the horizontal (X) axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axis Axis\r\n */\r\n RadarChart.prototype.updateXAxis = function (renderer) {\r\n //do not call super!\r\n if (renderer) {\r\n renderer.processRenderer();\r\n }\r\n };\r\n /**\r\n * Triggers (re)rendering of the vertical (Y) axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axis Axis\r\n */\r\n RadarChart.prototype.updateYAxis = function (renderer) {\r\n // do not call super!\r\n if (renderer) {\r\n renderer.processRenderer();\r\n }\r\n };\r\n return RadarChart;\r\n}(XYChart));\r\nexport { RadarChart };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"RadarChart\"] = RadarChart;\r\n//# sourceMappingURL=RadarChart.js.map","/**\r\n * Functionality for drawing simple ClockHands\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../../core/Container\";\r\nimport { Circle } from \"../../core/elements/Circle\";\r\nimport { Trapezoid } from \"../../core/elements/Trapezoid\";\r\nimport { MutableValueDisposer, MultiDisposer } from \"../../core/utils/Disposer\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * ClockHand class is capable of drawing a simple pointy shape with optionally\r\n * rounderd corners and an icon.\r\n *\r\n * @see {@link IClockHandEvents} for a list of available events\r\n * @see {@link IClockHandAdapters} for a list of available Adapters\r\n * @todo Improve\r\n * @important\r\n */\r\nvar ClockHand = /** @class */ (function (_super) {\r\n __extends(ClockHand, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ClockHand() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * An Axis hand is related to.\r\n */\r\n _this._axis = new MutableValueDisposer();\r\n _this.className = \"ClockHand\";\r\n var interfaceColors = new InterfaceColorSet();\r\n _this.fill = interfaceColors.getFor(\"alternativeBackground\");\r\n _this.stroke = _this.fill;\r\n var pin = new Circle();\r\n pin.radius = 5;\r\n _this.pin = pin;\r\n _this.isMeasured = false;\r\n _this.startWidth = 5;\r\n _this.endWidth = 1;\r\n _this.width = percent(100);\r\n _this.height = percent(100);\r\n _this.radius = percent(100);\r\n _this.innerRadius = percent(0);\r\n var hand = new Trapezoid();\r\n _this.hand = hand;\r\n _this._disposers.push(_this._axis);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Re(validates) the clock hand, effectively redrawing it.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ClockHand.prototype.validate = function () {\r\n _super.prototype.validate.call(this);\r\n var hand = this.hand;\r\n hand.width = this.pixelWidth;\r\n var h = Math.max(this.startWidth, this.endWidth);\r\n hand.height = h;\r\n hand.leftSide = percent(this.startWidth / h * 100);\r\n hand.rightSide = percent(this.endWidth / h * 100);\r\n if (this.axis) {\r\n var renderer = this.axis.renderer;\r\n var x0 = $utils.relativeRadiusToValue(this.innerRadius, renderer.pixelRadius);\r\n var x1 = $utils.relativeRadiusToValue(this.radius, renderer.pixelRadius);\r\n hand.x = x0;\r\n hand.y = -h / 2;\r\n hand.width = x1 - x0;\r\n }\r\n };\r\n Object.defineProperty(ClockHand.prototype, \"pin\", {\r\n /**\r\n * @return Pin element\r\n */\r\n get: function () {\r\n return this._pin;\r\n },\r\n /**\r\n * A circle element used as hand's base. (pin)\r\n *\r\n * @param pin Pin element\r\n */\r\n set: function (pin) {\r\n if (this._pin) {\r\n this.removeDispose(this._pin);\r\n }\r\n if (pin) {\r\n this._pin = pin;\r\n pin.parent = this;\r\n this._disposers.push(pin);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ClockHand.prototype, \"hand\", {\r\n /**\r\n * @return Hand element\r\n */\r\n get: function () {\r\n return this._hand;\r\n },\r\n /**\r\n * A trapezoid shape used for hand itself.\r\n *\r\n * The shape of the trapezoid is controlled by ClockHand's `startWidth` and\r\n * `endWidth` properties.\r\n *\r\n * Set `endWidth` to 1 (px) to make it pointy.\r\n *\r\n * @param hand Hand element\r\n */\r\n set: function (hand) {\r\n if (this._hand) {\r\n this.removeDispose(this._hand);\r\n }\r\n if (hand) {\r\n this._hand = hand;\r\n hand.parent = this;\r\n this._disposers.push(hand);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ClockHand.prototype, \"radius\", {\r\n /**\r\n * @return Radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"radius\");\r\n },\r\n /**\r\n * Radius of the hand's outer end. (tip)\r\n *\r\n * Absolute (px) or relative ([[Percent]]).\r\n *\r\n * @default Percent(0)\r\n * @param value Radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"radius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ClockHand.prototype, \"innerRadius\", {\r\n /**\r\n * @return Radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"innerRadius\");\r\n },\r\n /**\r\n * Radius of the hand's inner end. (base)\r\n *\r\n * Absolute (px) or relative ([[Percent]]).\r\n *\r\n * @default Percent(0)\r\n * @param value Radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ClockHand.prototype, \"startWidth\", {\r\n /**\r\n * @return Width (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startWidth\");\r\n },\r\n /**\r\n * Width, in pixels, of the clock hand's inner end. (base)\r\n *\r\n * @default 5\r\n * @param value Width (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"startWidth\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ClockHand.prototype, \"endWidth\", {\r\n /**\r\n * @return Width (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endWidth\");\r\n },\r\n /**\r\n * Width, in pixels, of the clock hand's outer end. (tip)\r\n *\r\n * @default 1\r\n * @param value Width (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"endWidth\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ClockHand.prototype, \"rotationDirection\", {\r\n /**\r\n * @return rotationDirection\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"rotationDirection\");\r\n },\r\n /**\r\n * Rotation direction\r\n *\r\n * @default any\r\n * @param value\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"rotationDirection\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Moves clock hand to particular value.\r\n *\r\n * If `duration` is set to a number in milliseconds, the hand will move\r\n * to the new position gracefully, rather than jumping rigth to it.\r\n *\r\n * Alternatively, you can also set `value` directly.\r\n *\r\n * @param value New value\r\n * @param duration Animation duration (ms)\r\n * @param easing Animation easing function\r\n */\r\n ClockHand.prototype.showValue = function (value, duration, easing) {\r\n this._value = value;\r\n if (value != undefined) {\r\n if (!$type.isNumber(duration)) {\r\n duration = 0;\r\n }\r\n if (this.axis) {\r\n var renderer = this.axis.renderer;\r\n var newAngle = renderer.positionToAngle(this.axis.anyToPosition(value));\r\n var currentAngle = this.rotation;\r\n if (this.rotationDirection == \"clockWise\") {\r\n if (newAngle < currentAngle) {\r\n this.rotation = currentAngle - 360;\r\n }\r\n }\r\n if (this.rotationDirection == \"counterClockWise\") {\r\n if (newAngle > currentAngle) {\r\n this.rotation = currentAngle + 360;\r\n }\r\n }\r\n this.animate({ property: \"rotation\", to: newAngle }, duration, easing);\r\n }\r\n }\r\n };\r\n Object.defineProperty(ClockHand.prototype, \"currentPosition\", {\r\n /**\r\n * Returns hand's relative position on axis\r\n */\r\n get: function () {\r\n if (this.axis) {\r\n var renderer = this.axis.renderer;\r\n return renderer.angleToPosition(this.rotation);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ClockHand.prototype, \"value\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this._value;\r\n },\r\n /**\r\n * A current value clock hand is pointing to.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.showValue(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ClockHand.prototype, \"axis\", {\r\n /**\r\n * @return Axis\r\n */\r\n get: function () {\r\n return this._axis.get();\r\n },\r\n /**\r\n * An Axis clock hand is associated with.\r\n *\r\n * Hand's `value` relates to values on the Axis.\r\n *\r\n * @param axis Axis\r\n */\r\n set: function (axis) {\r\n if (this.axis != axis) {\r\n this._axis.set(axis, new MultiDisposer([\r\n axis.events.on(\"datavalidated\", this.updateValue, this, false),\r\n axis.events.on(\"datarangechanged\", this.updateValue, this, false),\r\n axis.events.on(\"dataitemsvalidated\", this.updateValue, this, false),\r\n axis.events.on(\"propertychanged\", this.invalidate, this, false)\r\n ]));\r\n }\r\n if (axis) {\r\n var chart = axis.chart;\r\n if (chart) {\r\n this.rotation = chart.startAngle;\r\n }\r\n }\r\n this.parent = axis.renderer;\r\n this.zIndex = 5;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Triggers `value` accessor, so that Hand animates to new position, in case\r\n * value has changed.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ClockHand.prototype.updateValue = function () {\r\n this.value = this.value;\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n ClockHand.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Connect clock hands with axes\r\n if ($type.hasValue(config.axis) && $type.isString(config.axis) && this.map.hasKey(config.axis)) {\r\n config.axis = this.map.getKey(config.axis);\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n return ClockHand;\r\n}(Container));\r\nexport { ClockHand };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ClockHand\"] = ClockHand;\r\n//# sourceMappingURL=ClockHand.js.map","/**\r\n * Module for building Gauge charts.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { RadarChart, RadarChartDataItem } from \"./RadarChart\";\r\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { ClockHand } from \"../elements/ClockHand\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[GaugeChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar GaugeChartDataItem = /** @class */ (function (_super) {\r\n __extends(GaugeChartDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function GaugeChartDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"GaugeChartDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return GaugeChartDataItem;\r\n}(RadarChartDataItem));\r\nexport { GaugeChartDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a Gauge chart.\r\n *\r\n * @see {@link IGaugeChartEvents} for a list of available Events\r\n * @see {@link IGaugeChartAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/gauge-chart/} for documentation\r\n * @important\r\n */\r\nvar GaugeChart = /** @class */ (function (_super) {\r\n __extends(GaugeChart, _super);\r\n /**\r\n * Constructor\r\n */\r\n function GaugeChart() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"GaugeChart\";\r\n _this.startAngle = 180;\r\n _this.endAngle = 360;\r\n _this.hands = new ListTemplate(new ClockHand());\r\n _this.hands.events.on(\"inserted\", _this.processHand, _this, false);\r\n _this._disposers.push(new ListDisposer(_this.hands));\r\n _this._disposers.push(_this.hands.template);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n GaugeChart.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n // Add a default screen reader title for accessibility\r\n // This will be overridden in screen reader if there are any `titles` set\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Gauge chart\");\r\n }\r\n };\r\n /**\r\n * Decorates a [[ClockHand]] when it is added to the chart.\r\n *\r\n * @param event Event\r\n */\r\n GaugeChart.prototype.processHand = function (event) {\r\n var hand = event.newValue;\r\n if (!hand.axis) {\r\n hand.axis = this.xAxes.getIndex(0);\r\n }\r\n };\r\n /**\r\n * This function is used to sort element's JSON config properties, so that\r\n * some properties that absolutely need to be processed last, can be put at\r\n * the end.\r\n *\r\n * @ignore Exclude from docs\r\n * @param a Element 1\r\n * @param b Element 2\r\n * @return Sorting number\r\n */\r\n GaugeChart.prototype.configOrder = function (a, b) {\r\n if (a == b) {\r\n return 0;\r\n }\r\n // Must come last\r\n else if (a == \"hands\") {\r\n return 1;\r\n }\r\n else if (b == \"hands\") {\r\n return -1;\r\n }\r\n else {\r\n return _super.prototype.configOrder.call(this, a, b);\r\n }\r\n };\r\n return GaugeChart;\r\n}(RadarChart));\r\nexport { GaugeChart };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"GaugeChart\"] = GaugeChart;\r\n//# sourceMappingURL=GaugeChart.js.map","/**\r\n * Defines Percent Chart Series.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Series, SeriesDataItem } from \"./Series\";\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { Label } from \"../../core/elements/Label\";\r\nimport { Color } from \"../../core/utils/Color\";\r\nimport { Tick } from \"../elements/Tick\";\r\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { ColorSet } from \"../../core/utils/ColorSet\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $ease from \"../../core/utils/Ease\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { Disposer } from \"../../core/utils/Disposer\";\r\nimport { defaultRules, ResponsiveBreakpoints } from \"../../core/utils/Responsive\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n//@todo: sequenced?\r\n/**\r\n * Defines a [[DataItem]] for [[PercentSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar PercentSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(PercentSeriesDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PercentSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PercentSeriesDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Adds an `id` attribute the the slice element and returns its id.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n PercentSeriesDataItem.prototype.uidAttr = function () {\r\n return this.slice.uidAttr();\r\n };\r\n /**\r\n * Hide the data item (and corresponding visual elements).\r\n *\r\n * @param duration Duration (ms)\r\n * @param delay Delay hiding (ms)\r\n * @param toValue Target value for animation\r\n * @param fields Fields to animate while hiding\r\n */\r\n PercentSeriesDataItem.prototype.hide = function (duration, delay, toValue, fields) {\r\n if (!fields) {\r\n fields = [\"value\"];\r\n }\r\n return _super.prototype.hide.call(this, duration, delay, 0, fields);\r\n };\r\n /**\r\n * Sets visibility of the Data Item.\r\n *\r\n * @param value Data Item\r\n */\r\n PercentSeriesDataItem.prototype.setVisibility = function (value, noChangeValues) {\r\n if (!noChangeValues) {\r\n if (value) {\r\n this.setWorkingValue(\"value\", this.values[\"value\"].value, 0, 0);\r\n }\r\n else {\r\n this.setWorkingValue(\"value\", 0, 0, 0);\r\n }\r\n }\r\n _super.prototype.setVisibility.call(this, value, noChangeValues);\r\n };\r\n /**\r\n * Show hidden data item (and corresponding visual elements).\r\n *\r\n * @param duration Duration (ms)\r\n * @param delay Delay hiding (ms)\r\n * @param fields Fields to animate while hiding\r\n */\r\n PercentSeriesDataItem.prototype.show = function (duration, delay, fields) {\r\n if (!fields) {\r\n fields = [\"value\"];\r\n }\r\n return _super.prototype.show.call(this, duration, delay, fields);\r\n };\r\n Object.defineProperty(PercentSeriesDataItem.prototype, \"category\", {\r\n /**\r\n * @return Category\r\n */\r\n get: function () {\r\n return this.properties.category;\r\n },\r\n /**\r\n * Category.\r\n *\r\n * @param value Category\r\n */\r\n set: function (value) {\r\n this.setProperty(\"category\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates a marker used in the legend for this slice.\r\n *\r\n * @ignore Exclude from docs\r\n * @param marker Marker container\r\n */\r\n PercentSeriesDataItem.prototype.createLegendMarker = function (marker) {\r\n this.component.createLegendMarker(marker, this);\r\n };\r\n Object.defineProperty(PercentSeriesDataItem.prototype, \"legendDataItem\", {\r\n /**\r\n * @return Legend data item\r\n */\r\n get: function () {\r\n return this._legendDataItem;\r\n },\r\n /**\r\n * A legend's data item, that corresponds to this data item.\r\n *\r\n * @param value Legend data item\r\n */\r\n set: function (value) {\r\n this._legendDataItem = value;\r\n if (value.label) {\r\n value.label.dataItem = this;\r\n }\r\n if (value.valueLabel) {\r\n value.valueLabel.dataItem = this;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PercentSeriesDataItem.prototype, \"tick\", {\r\n /**\r\n * A Tick element, related to this data item. (slice)\r\n *\r\n * @readonly\r\n * @return Tick element\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._tick) {\r\n var tick_1 = this.component.ticks.create();\r\n this._tick = tick_1;\r\n this.addSprite(tick_1);\r\n this._disposers.push(tick_1);\r\n tick_1.parent = this.component.ticksContainer;\r\n this._disposers.push(new Disposer(function () {\r\n if (_this.component) {\r\n _this.component.ticks.removeValue(tick_1);\r\n }\r\n }));\r\n tick_1.visible = this.visible;\r\n }\r\n return this._tick;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PercentSeriesDataItem.prototype, \"label\", {\r\n /**\r\n * A Label element, related to this data item. (slice)\r\n *\r\n * @readonly\r\n * @return Label element\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._label) {\r\n var label_1 = this.component.labels.create();\r\n this.addSprite(label_1);\r\n this._label = label_1;\r\n this._disposers.push(label_1);\r\n label_1.parent = this.component.labelsContainer;\r\n this._disposers.push(new Disposer(function () {\r\n if (_this.component) {\r\n _this.component.labels.removeValue(label_1);\r\n }\r\n }));\r\n label_1.visible = this.visible;\r\n }\r\n return this._label;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PercentSeriesDataItem.prototype, \"slice\", {\r\n /**\r\n * An element, related to this data item. (slice)\r\n *\r\n * @readonly\r\n * @return Slice element\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._slice) {\r\n var component_1 = this.component;\r\n var slice_1 = component_1.slices.create();\r\n this.addSprite(slice_1);\r\n this._slice = slice_1;\r\n this._disposers.push(slice_1);\r\n slice_1.parent = component_1.slicesContainer;\r\n this._disposers.push(new Disposer(function () {\r\n component_1.slices.removeValue(slice_1);\r\n }));\r\n slice_1.visible = this.visible;\r\n // Apply accessibility\r\n if (component_1.itemsFocusable()) {\r\n if (!$type.hasValue(this.component.role)) {\r\n this.component.role = \"menu\";\r\n }\r\n if (!$type.hasValue(slice_1.role)) {\r\n slice_1.role = \"menuitem\";\r\n }\r\n slice_1.focusable = true;\r\n }\r\n else {\r\n if (!$type.hasValue(this.component.role)) {\r\n this.component.role = \"list\";\r\n }\r\n if (!$type.hasValue(slice_1.role)) {\r\n slice_1.role = \"listitem\";\r\n }\r\n slice_1.focusable = false;\r\n }\r\n // Apply screen reader label\r\n if (slice_1.focusable) {\r\n slice_1.events.on(\"focus\", function (ev) {\r\n slice_1.readerTitle = component_1.populateString(component_1.itemReaderText, _this);\r\n }, undefined, false);\r\n slice_1.events.on(\"blur\", function (ev) {\r\n slice_1.readerTitle = \"\";\r\n }, undefined, false);\r\n }\r\n if (slice_1.hoverable) {\r\n slice_1.events.on(\"over\", function (ev) {\r\n slice_1.readerTitle = component_1.populateString(component_1.itemReaderText, _this);\r\n }, undefined, false);\r\n slice_1.events.on(\"out\", function (ev) {\r\n slice_1.readerTitle = \"\";\r\n }, undefined, false);\r\n }\r\n }\r\n return this._slice;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PercentSeriesDataItem.prototype, \"hiddenInLegend\", {\r\n /**\r\n * @return Disabled in legend?\r\n */\r\n get: function () {\r\n return this.properties.hiddenInLegend;\r\n },\r\n /**\r\n * Should dataItem (slice) be hidden in legend?\r\n *\r\n * @param value Visible in legend?\r\n */\r\n set: function (value) {\r\n this.setProperty(\"hiddenInLegend\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return PercentSeriesDataItem;\r\n}(SeriesDataItem));\r\nexport { PercentSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[PercentSeries]] which is a base class for [[PieSeries]],\r\n * [[FunnelSeries]], and [[PyramidSeries]].\r\n *\r\n * @see {@link IPercentSeriesEvents} for a list of available Events\r\n * @see {@link IPercentSeriesAdapters} for a list of available Adapters\r\n */\r\nvar PercentSeries = /** @class */ (function (_super) {\r\n __extends(PercentSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PercentSeries() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PercentSeries\";\r\n _this._addAllDataItems = false;\r\n _this.colors = new ColorSet();\r\n _this.colors.step = 1;\r\n _this.isMeasured = true;\r\n _this.calculatePercent = true;\r\n var slicesContainer = _this.createChild(Container);\r\n slicesContainer.shouldClone = false;\r\n slicesContainer.isMeasured = false;\r\n _this.slicesContainer = slicesContainer;\r\n var ticksContainer = _this.createChild(Container);\r\n ticksContainer.shouldClone = false;\r\n ticksContainer.isMeasured = false;\r\n ticksContainer.layout = \"none\";\r\n _this.ticksContainer = ticksContainer;\r\n var labelsContainer = _this.createChild(Container);\r\n labelsContainer.shouldClone = false;\r\n labelsContainer.isMeasured = false;\r\n labelsContainer.layout = \"none\";\r\n _this.labelsContainer = labelsContainer;\r\n _this.alignLabels = false;\r\n _this.bulletsContainer.toFront();\r\n // Make all slices focusable\r\n _this.skipFocusThreshold = 50;\r\n var defaultState = _this.defaultState;\r\n defaultState.transitionEasing = $ease.sinOut;\r\n // Accessibility\r\n _this.itemReaderText = \"{category}: {value.percent.formatNumber('#.#')}%\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Creates a slice element.\r\n *\r\n * @return Slice\r\n */\r\n PercentSeries.prototype.createSlice = function () {\r\n return new Sprite();\r\n };\r\n /**\r\n * Creates a tick element.\r\n *\r\n * @return Tick\r\n */\r\n PercentSeries.prototype.createTick = function () {\r\n return new Tick();\r\n };\r\n /**\r\n * Sreates label element.\r\n *\r\n * @return label\r\n */\r\n PercentSeries.prototype.createLabel = function () {\r\n return new Label();\r\n };\r\n Object.defineProperty(PercentSeries.prototype, \"slices\", {\r\n /**\r\n * A list of slice elements for the series.\r\n *\r\n * Use its `template` to configure look and behavior of the slices. E.g.:\r\n *\r\n * ```TypeScript\r\n * series.slices.template.stroke = am4core.color(\"#fff\");\r\n * series.slices.template.strokeWidth = 2;\r\n * ```\r\n * ```JavaScript\r\n * series.slices.template.stroke = am4core.color(\"#fff\");\r\n * series.slices.template.strokeWidth = 2;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"slices\": {\r\n * \"stroke\": \"#fff\",\r\n * \"strokeWidth\": 2\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/list-templates/} for more information about list templates\r\n * @return Slices\r\n */\r\n get: function () {\r\n if (!this._slices) {\r\n var slice = this.createSlice();\r\n slice.applyOnClones = true;\r\n this._disposers.push(slice);\r\n this.initSlice(slice);\r\n this._slices = new ListTemplate(slice);\r\n this._disposers.push(new ListDisposer(this._slices));\r\n }\r\n return this._slices;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PercentSeries.prototype, \"ticks\", {\r\n /**\r\n * A list of tick elements for the series. Ticks connect slice to its label.\r\n *\r\n * Use its `template` to configure look and behavior of the ticks. E.g.:\r\n *\r\n * ```TypeScript\r\n * series.ticks.template.strokeWidth = 2;\r\n * ```\r\n * ```JavaScript\r\n * series.ticks.template.strokeWidth = 2;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"ticks\": {\r\n * \"strokeWidth\": 2\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/list-templates/} for more information about list templates\r\n * @return Ticks\r\n */\r\n get: function () {\r\n if (!this._ticks) {\r\n var tick = this.createTick();\r\n tick.applyOnClones = true;\r\n this._disposers.push(tick);\r\n this.initTick(tick);\r\n this._ticks = new ListTemplate(tick);\r\n this._disposers.push(new ListDisposer(this._ticks));\r\n }\r\n return this._ticks;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PercentSeries.prototype, \"labels\", {\r\n /**\r\n * A list of slice label elements for the series.\r\n *\r\n * Use its `template` to configure look and behavior of the labels. E.g.:\r\n *\r\n * ```TypeScript\r\n * series.labels.template.fill = am4core.color(\"#c00\");\r\n * series.labels.template.fontSize = 20;\r\n * ```\r\n * ```JavaScript\r\n * series.labels.template.fill = am4core.color(\"#c00\");\r\n * series.labels.template.fontSize = 20;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"labels\": {\r\n * \"stroke\": \"#c00\",\r\n * \"fontSize\": 20\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/list-templates/} for more information about list templates\r\n * @return Labels\r\n */\r\n get: function () {\r\n if (!this._labels) {\r\n var label = this.createLabel();\r\n label.applyOnClones = true;\r\n this._disposers.push(label);\r\n this.initLabel(label);\r\n this._labels = new ListTemplate(label);\r\n this._disposers.push(new ListDisposer(this._labels));\r\n }\r\n return this._labels;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n PercentSeries.prototype.createDataItem = function () {\r\n return new PercentSeriesDataItem();\r\n };\r\n /**\r\n * Creates and returns a new slice element.\r\n *\r\n * @param sliceType Type of the slice element\r\n * @return Slice\r\n */\r\n PercentSeries.prototype.initSlice = function (slice) {\r\n };\r\n PercentSeries.prototype.initLabel = function (label) {\r\n label.text = \"{category}: {value.percent.formatNumber('#.0')}%\";\r\n label.isMeasured = false;\r\n label.padding(5, 5, 5, 5);\r\n };\r\n PercentSeries.prototype.initTick = function (label) {\r\n };\r\n /**\r\n * Validates (processes) data items.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n PercentSeries.prototype.validateDataItems = function () {\r\n this.colors.reset();\r\n if (this.patterns) {\r\n this.patterns.reset();\r\n }\r\n _super.prototype.validateDataItems.call(this);\r\n };\r\n /**\r\n * Validates data item's element, effectively redrawing it.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n PercentSeries.prototype.validateDataElement = function (dataItem) {\r\n var slice = dataItem.slice;\r\n if (slice) {\r\n if (slice.fill == undefined) {\r\n if (this.patterns) {\r\n if (!$type.hasValue(slice.stroke)) {\r\n slice.stroke = this.colors.next();\r\n }\r\n slice.fill = this.patterns.next();\r\n if ($type.hasValue(slice.fillOpacity)) {\r\n slice.fill.backgroundOpacity = slice.fillOpacity;\r\n }\r\n if (slice.stroke instanceof Color) {\r\n slice.fill.stroke = slice.stroke;\r\n slice.fill.fill = slice.stroke;\r\n }\r\n }\r\n else {\r\n slice.fill = this.colors.next();\r\n }\r\n }\r\n else {\r\n this.colors.currentStep += this.colors.step;\r\n }\r\n if (slice.stroke == undefined) {\r\n slice.stroke = slice.fill;\r\n }\r\n }\r\n // do this at the end, otherwise bullets won't be positioned properly\r\n _super.prototype.validateDataElement.call(this, dataItem);\r\n if (slice) {\r\n dataItem.bullets.each(function (key, bullet) {\r\n if (bullet.fill == undefined) {\r\n bullet.fill = slice.fill;\r\n }\r\n if (bullet.stroke == undefined) {\r\n bullet.stroke = slice.stroke;\r\n }\r\n });\r\n }\r\n this.updateLegendValue(dataItem);\r\n };\r\n /**\r\n * Validates (processes) data.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n PercentSeries.prototype.validateData = function () {\r\n _super.prototype.validateData.call(this);\r\n if (this.chart) {\r\n this.chart.feedLegend();\r\n }\r\n };\r\n /**\r\n * Arranges slice labels according to position settings.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItems Data items\r\n */\r\n PercentSeries.prototype.arrangeLabels = function (dataItems) {\r\n for (var i = 0, len = dataItems.length; i < len; i++) {\r\n var dataItem = dataItems[i];\r\n var label = dataItem.label;\r\n if (label) {\r\n if (label.invalid) {\r\n label.validate();\r\n }\r\n var lh = label.measuredHeight;\r\n if (!label.visible) {\r\n lh = 0;\r\n }\r\n if (label.pixelY - lh / 2 < -this.maxHeight / 2) {\r\n label.y = -this.maxHeight / 2 + lh / 2;\r\n }\r\n var nextLabel = this.getNextLabel(i + 1, dataItems);\r\n var bottom = label.pixelY + lh;\r\n if (nextLabel) {\r\n if (nextLabel.y < bottom) {\r\n nextLabel.y = bottom;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n PercentSeries.prototype.arrangeLabels2 = function (dataItems) {\r\n var previousTop = this.maxHeight / 2;\r\n for (var i = dataItems.length - 1; i >= 0; i--) {\r\n var dataItem = dataItems[i];\r\n var label = dataItem.label;\r\n if (label) {\r\n if (label.invalid) {\r\n label.validate();\r\n }\r\n var lh = label.measuredHeight;\r\n if (!label.visible) {\r\n lh = 0;\r\n }\r\n if (i == dataItems.length - 1) {\r\n previousTop += lh / 2;\r\n }\r\n if (label.pixelY + lh > previousTop) {\r\n label.y = previousTop - lh;\r\n previousTop = label.y;\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Returns the next label according to `index`.\r\n *\r\n * @param index Current index\r\n * @param dataItems Data items\r\n * @return Label element\r\n */\r\n PercentSeries.prototype.getNextLabel = function (index, dataItems) {\r\n if (dataItems.length >= index) {\r\n var nextDataItem = dataItems[index];\r\n if (nextDataItem) {\r\n if (nextDataItem.label) {\r\n if (nextDataItem.visible) {\r\n return nextDataItem.label;\r\n }\r\n else {\r\n return this.getNextLabel(index + 1, dataItems);\r\n }\r\n }\r\n else {\r\n return this.getNextLabel(index + 1, dataItems);\r\n }\r\n }\r\n }\r\n };\r\n Object.defineProperty(PercentSeries.prototype, \"colors\", {\r\n /**\r\n * @return Color set\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"colors\");\r\n },\r\n /**\r\n * A color set to be used for slices.\r\n *\r\n * For each new subsequent slice, the chart will assign the next color in\r\n * this set.\r\n *\r\n * @param value Color set\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"colors\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PercentSeries.prototype, \"patterns\", {\r\n /**\r\n * @return Pattern set\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"patterns\");\r\n },\r\n /**\r\n * A [[PatternSet]] to use when creating patterned fills for slices.\r\n *\r\n * @since 4.7.5\r\n * @param value Pattern set\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"patterns\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Binds related legend data item's visual settings to this series' visual\r\n * settings.\r\n *\r\n * @ignore Exclude from docs\r\n * @param marker Container\r\n * @param dataItem Data item\r\n */\r\n PercentSeries.prototype.createLegendMarker = function (marker, dataItem) {\r\n $iter.each(marker.children.iterator(), function (child) {\r\n var slice = dataItem.slice;\r\n child.defaultState.properties.fill = slice.fill;\r\n child.defaultState.properties.stroke = slice.stroke;\r\n child.defaultState.properties.fillOpacity = slice.fillOpacity;\r\n child.defaultState.properties.strokeOpacity = slice.strokeOpacity;\r\n child.fill = slice.fill;\r\n child.stroke = slice.stroke;\r\n child.fillOpacity = slice.fillOpacity;\r\n child.strokeOpacity = slice.strokeOpacity;\r\n if (child.fill == undefined) {\r\n child.__disabled = true;\r\n }\r\n var legendDataItem = marker.dataItem;\r\n legendDataItem.color = slice.fill;\r\n legendDataItem.colorOrig = slice.fill;\r\n child.addDisposer(slice.events.on(\"propertychanged\", function (ev) {\r\n if (ev.property == \"fill\") {\r\n child.__disabled = false;\r\n if (!child.isActive) {\r\n child.fill = slice.fill;\r\n }\r\n child.defaultState.properties.fill = slice.fill;\r\n legendDataItem.color = slice.fill;\r\n legendDataItem.colorOrig = slice.fill;\r\n }\r\n if (ev.property == \"stroke\") {\r\n if (!child.isActive) {\r\n child.stroke = slice.stroke;\r\n }\r\n child.defaultState.properties.stroke = slice.stroke;\r\n }\r\n }, undefined, false));\r\n });\r\n };\r\n /**\r\n * Repositions bullets when slice's size changes.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\r\n PercentSeries.prototype.handleSliceScale = function (event) {\r\n var _this = this;\r\n var slice = event.target;\r\n var dataItem = slice.dataItem;\r\n $iter.each(dataItem.bullets.iterator(), function (a) {\r\n var value = a[1];\r\n _this.positionBullet(value);\r\n });\r\n };\r\n /**\r\n * Repositions bullet and labels when slice moves.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\r\n PercentSeries.prototype.handleSliceMove = function (event) {\r\n };\r\n /**\r\n * Copies all properties from another instance of [[PercentSeries]].\r\n *\r\n * @param source Source series\r\n */\r\n PercentSeries.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.slices.template.copyFrom(source.slices.template);\r\n this.labels.template.copyFrom(source.labels.template);\r\n this.ticks.template.copyFrom(source.ticks.template);\r\n this.colors = source.colors.clone();\r\n };\r\n Object.defineProperty(PercentSeries.prototype, \"alignLabels\", {\r\n /**\r\n * @return Align labels?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"alignLabels\");\r\n },\r\n /**\r\n * Align labels into nice vertical columns?\r\n *\r\n * This will ensure that labels never overlap with each other.\r\n *\r\n * Arranging labels into columns makes them more readble, and better user\r\n * experience.\r\n *\r\n * If set to `false` labels will be positioned at `label.radius` distance,\r\n * and may, in some cases, overlap.\r\n *\r\n * @default true\r\n * @param value Align labels?\r\n */\r\n set: function (value) {\r\n this.setAlignLabels(value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n PercentSeries.prototype.setAlignLabels = function (value) {\r\n this.setPropertyValue(\"alignLabels\", value, true);\r\n };\r\n Object.defineProperty(PercentSeries.prototype, \"ignoreZeroValues\", {\r\n /**\r\n * @return Ignore zero values\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"ignoreZeroValues\");\r\n },\r\n /**\r\n * If set to `true` the chart will not show slices with zero values.\r\n *\r\n * @default false\r\n * @since 4.7.9\r\n * @param value Ignore zero values\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"ignoreZeroValues\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Updates corresponding legend data item with current values.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n PercentSeries.prototype.updateLegendValue = function (dataItem) {\r\n if (dataItem) {\r\n var legendDataItem = dataItem.legendDataItem;\r\n var legendSettings = dataItem.legendSettings;\r\n if (legendDataItem && legendSettings) {\r\n if (legendSettings) {\r\n if (legendSettings.labelText) {\r\n legendDataItem.label.text = legendSettings.labelText;\r\n }\r\n if (legendSettings.itemLabelText) {\r\n legendDataItem.label.text = legendSettings.itemLabelText;\r\n }\r\n if (legendSettings.valueText) {\r\n legendDataItem.valueLabel.text = legendSettings.valueText;\r\n }\r\n if (legendSettings.itemValueText) {\r\n legendDataItem.valueLabel.text = legendSettings.itemValueText;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n return PercentSeries;\r\n}(Series));\r\nexport { PercentSeries };\r\n/**\r\n * bboxter class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"PercentSeries\"] = PercentSeries;\r\nregistry.registeredClasses[\"PercentSeriesDataItem\"] = PercentSeriesDataItem;\r\n/**\r\n * Add default responsive rules\r\n */\r\n/**\r\n * Disable labels and ticks.\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.maybeXS,\r\n state: function (target, stateId) {\r\n if (target instanceof PercentSeries) {\r\n var state = target.states.create(stateId);\r\n var labelState = target.labels.template.states.create(stateId);\r\n labelState.properties.disabled = true;\r\n var tickState = target.ticks.template.states.create(stateId);\r\n tickState.properties.disabled = true;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n//# sourceMappingURL=PercentSeries.js.map","/**\r\n * Percent chart module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { SerialChart, SerialChartDataItem } from \"./SerialChart\";\r\nimport { PercentSeries } from \"../series/PercentSeries\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[PercentChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar PercentChartDataItem = /** @class */ (function (_super) {\r\n __extends(PercentChartDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PercentChartDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PercentChartDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return PercentChartDataItem;\r\n}(SerialChartDataItem));\r\nexport { PercentChartDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * This is a base class for \"percent-based\" chart types like Pie and Funnel.\r\n *\r\n * @see {@link IPercentChartEvents} for a list of available Events\r\n * @see {@link IPercentChartAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/pie-chart/} for Pie chart documentation\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/sliced-chart/} for Sliced chart documentation\r\n */\r\nvar PercentChart = /** @class */ (function (_super) {\r\n __extends(PercentChart, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PercentChart() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"PercentChart\";\r\n _this.align = \"none\";\r\n _this.valign = \"none\";\r\n // so that the chart is always drawn, even the legend wants all the space\r\n _this.chartContainer.minHeight = 50;\r\n _this.chartContainer.minWidth = 50;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * (Re)validates chart data.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n PercentChart.prototype.validateData = function () {\r\n _super.prototype.validateData.call(this);\r\n this.feedLegend();\r\n };\r\n /**\r\n * Setups the legend to use the chart's data.\r\n * @ignore\r\n */\r\n PercentChart.prototype.feedLegend = function () {\r\n var legend = this.legend;\r\n if (legend) {\r\n var legendData_1 = [];\r\n $iter.each(this.series.iterator(), function (series) {\r\n if (!series.hiddenInLegend) {\r\n $iter.each(series.dataItems.iterator(), function (dataItem) {\r\n if (!dataItem.hiddenInLegend) {\r\n legendData_1.push(dataItem);\r\n if (!dataItem.legendSettings) {\r\n dataItem.legendSettings = series.legendSettings;\r\n }\r\n }\r\n });\r\n }\r\n });\r\n legend.data = legendData_1;\r\n legend.dataFields.name = \"category\";\r\n }\r\n };\r\n /**\r\n * Creates a new [[PercentSeries]].\r\n *\r\n * @return New series\r\n */\r\n PercentChart.prototype.createSeries = function () {\r\n return new PercentSeries();\r\n };\r\n /**\r\n * @ignore\r\n */\r\n PercentChart.prototype.setLegend = function (legend) {\r\n _super.prototype.setLegend.call(this, legend);\r\n if (legend) {\r\n legend.labels.template.text = \"{category}\";\r\n legend.valueLabels.template.text = \"{value.percent.formatNumber('#.0')}%\";\r\n legend.itemContainers.template.events.on(\"over\", function (event) {\r\n var percentSeriesDataItem = event.target.dataItem.dataContext;\r\n if (percentSeriesDataItem.visible && !percentSeriesDataItem.isHiding) {\r\n var slice = percentSeriesDataItem.slice;\r\n slice.dispatchImmediately(\"over\");\r\n slice.isHover = true;\r\n slice.interactions.isRealHover = true;\r\n }\r\n });\r\n legend.itemContainers.template.events.on(\"out\", function (event) {\r\n var percentSeriesDataItem = event.target.dataItem.dataContext;\r\n var slice = percentSeriesDataItem.slice;\r\n slice.dispatchImmediately(\"out\");\r\n slice.isHover = false;\r\n });\r\n }\r\n };\r\n return PercentChart;\r\n}(SerialChart));\r\nexport { PercentChart };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @hidden\r\n */\r\nregistry.registeredClasses[\"PercentChart\"] = PercentChart;\r\nregistry.registeredClasses[\"PercentChartDataItem\"] = PercentChartDataItem;\r\n//# sourceMappingURL=PercentChart.js.map","/**\r\n * Pie tick module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Tick } from \"../elements/Tick\";\r\nimport { MutableValueDisposer, MultiDisposer } from \"../../core/utils/Disposer\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws an tick line for a pie slice connecting it to a related label.\r\n *\r\n * @see {@link IPieTickEvents} for a list of available events\r\n * @see {@link IPieTickAdapters} for a list of available Adapters\r\n */\r\nvar PieTick = /** @class */ (function (_super) {\r\n __extends(PieTick, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PieTick() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * A label element this tick is attached to.\r\n */\r\n _this._label = new MutableValueDisposer();\r\n /**\r\n * A slice element this tick is attached to.\r\n */\r\n _this._slice = new MutableValueDisposer();\r\n _this.className = \"PieTick\";\r\n _this.element = _this.paper.add(\"polyline\");\r\n _this._disposers.push(_this._label);\r\n _this._disposers.push(_this._slice);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the tick element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n PieTick.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n var slice = this.slice;\r\n var label = this.label;\r\n var series = slice.dataItem.component;\r\n if (slice && slice.radius > 0 && label && label.text) {\r\n var x0 = slice.dx + slice.slice.dx + slice.pixelX + slice.ix * slice.radius * slice.scale;\r\n var y0 = slice.dy + slice.slice.dy + slice.pixelY + slice.iy * slice.radiusY * slice.scale;\r\n var x1 = void 0;\r\n var y1 = void 0;\r\n var x2 = void 0;\r\n var y2 = void 0;\r\n if (series.alignLabels) {\r\n x1 = label.pixelX - this.length;\r\n y1 = label.pixelY;\r\n x2 = label.pixelX;\r\n y2 = y1;\r\n if (label.horizontalCenter == \"right\") {\r\n x1 += 2 * this.length;\r\n x2 = x1 - this.length;\r\n }\r\n }\r\n else {\r\n var r = label.pixelRadius(slice.radius);\r\n x1 = x0 + r * slice.ix;\r\n y1 = y0 + r * slice.iy;\r\n x2 = x1;\r\n y2 = y1;\r\n }\r\n this.element.attr({ \"points\": [x0, y0, x1, y1, x2, y2] });\r\n }\r\n };\r\n Object.defineProperty(PieTick.prototype, \"slice\", {\r\n /**\r\n * @return Slice\r\n */\r\n get: function () {\r\n return this._slice.get();\r\n },\r\n /**\r\n * Slice element tick is attached to.\r\n *\r\n * @param slice Slice\r\n */\r\n set: function (slice) {\r\n this._slice.set(slice, new MultiDisposer([\r\n slice.events.on(\"transformed\", this.invalidate, this),\r\n slice.events.on(\"validated\", this.invalidate, this)\r\n ]));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PieTick.prototype, \"label\", {\r\n /**\r\n * @return Label\r\n */\r\n get: function () {\r\n return this._label.get();\r\n },\r\n /**\r\n * Label element tick is attached to.\r\n *\r\n * @param label Label\r\n */\r\n set: function (label) {\r\n this._label.set(label, label.events.on(\"transformed\", this.invalidate, this, false));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return PieTick;\r\n}(Tick));\r\nexport { PieTick };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"PieTick\"] = PieTick;\r\n//# sourceMappingURL=PieTick.js.map","/**\r\n * Defines Pie Chart Series.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { PercentSeries, PercentSeriesDataItem } from \"./PercentSeries\";\r\nimport { Slice } from \"../../core/elements/Slice\";\r\n//import { Slice3D } from \"../../core/elements/3D/Slice3D\";\r\nimport { AxisLabelCircular } from \"../axes/AxisLabelCircular\";\r\nimport { PieTick } from \"../elements/PieTick\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { Percent, percent } from \"../../core/utils/Percent\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n//@todo: sequenced?\r\n/**\r\n * Defines a [[DataItem]] for [[PieSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar PieSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(PieSeriesDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PieSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PieSeriesDataItem\";\r\n _this.values.radiusValue = {};\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(PieSeriesDataItem.prototype, \"radiusValue\", {\r\n /**\r\n * @return Radius\r\n */\r\n get: function () {\r\n return this.values.radiusValue.value;\r\n },\r\n /**\r\n * Slice's radius, if other than default.\r\n *\r\n * @param value Radius\r\n */\r\n set: function (value) {\r\n this.setValue(\"radiusValue\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Hide the data item (and corresponding visual elements).\r\n *\r\n * @param duration Duration (ms)\r\n * @param delay Delay hiding (ms)\r\n * @param toValue Target value for animation\r\n * @param fields Fields to animate while hiding\r\n */\r\n PieSeriesDataItem.prototype.hide = function (duration, delay, toValue, fields) {\r\n return _super.prototype.hide.call(this, duration, delay, 0, [\"value\", \"radiusValue\"]);\r\n };\r\n /**\r\n * Show hidden data item (and corresponding visual elements).\r\n *\r\n * @param duration Duration (ms)\r\n * @param delay Delay hiding (ms)\r\n * @param fields Fields to animate while hiding\r\n */\r\n PieSeriesDataItem.prototype.show = function (duration, delay, fields) {\r\n return _super.prototype.show.call(this, duration, delay, [\"value\", \"radiusValue\"]);\r\n };\r\n return PieSeriesDataItem;\r\n}(PercentSeriesDataItem));\r\nexport { PieSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[Series]] for a slice series on a Pie chart.\r\n *\r\n * @see {@link IPieSeriesEvents} for a list of available Events\r\n * @see {@link IPieSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\r\nvar PieSeries = /** @class */ (function (_super) {\r\n __extends(PieSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PieSeries() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PieSeries\";\r\n _this.alignLabels = true;\r\n //this.startAngle = -90;\r\n //this.endAngle = 270;\r\n _this.layout = \"none\";\r\n _this.labels.template.radius = percent(5);\r\n _this.addDisposer(_this.labels.template.events.on(\"enabled\", _this.invalidate, _this, false));\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * creates slice\r\n */\r\n PieSeries.prototype.createSlice = function () {\r\n return new Slice();\r\n };\r\n /**\r\n * creates tick\r\n */\r\n PieSeries.prototype.createTick = function () {\r\n return new PieTick();\r\n };\r\n /**\r\n * creates label\r\n */\r\n PieSeries.prototype.createLabel = function () {\r\n return new AxisLabelCircular();\r\n };\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n PieSeries.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Pie Slice Series\");\r\n }\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n PieSeries.prototype.createDataItem = function () {\r\n return new PieSeriesDataItem();\r\n };\r\n /**\r\n * Inits slice.\r\n *\r\n * @param slice to init\r\n */\r\n PieSeries.prototype.initSlice = function (slice) {\r\n slice.isMeasured = false;\r\n slice.defaultState.properties.scale = 1;\r\n slice.observe(\"scale\", this.handleSliceScale, this);\r\n slice.observe([\"dx\", \"dy\", \"x\", \"y\", \"shiftRadius\"], this.handleSliceMove, this);\r\n slice.tooltipText = \"{category}: {value.percent.formatNumber('#.#')}% ({value.value})\";\r\n var hoverState = slice.states.create(\"hover\");\r\n hoverState.properties.scale = 1.05;\r\n var defaultState = slice.defaultState;\r\n defaultState.properties.shiftRadius = 0;\r\n slice.togglable = true;\r\n slice.events.on(\"toggled\", function (event) {\r\n event.target.hideTooltip();\r\n // The following takes care of removing hover on subsequent click of\r\n // a slice\r\n if (event.target.interactions.lastHitPointer\r\n && event.target.interactions.lastHitPointer.touch\r\n && !event.target.isActive) {\r\n event.target.isHover = false;\r\n }\r\n });\r\n var activeState = slice.states.create(\"active\");\r\n activeState.properties.shiftRadius = 0.10;\r\n };\r\n /**\r\n * (Re)validates the whole series, effectively causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n PieSeries.prototype.validate = function () {\r\n this._leftItems = [];\r\n this._rightItems = [];\r\n this._currentStartAngle = this.startAngle;\r\n this._arcRect = $math.getArcRect(this.startAngle, this.endAngle);\r\n this._maxRadiusPercent = 0;\r\n for (var i = this.startIndex; i < this.endIndex; i++) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n var radiusValuePercent = dataItem.values.radiusValue.percent;\r\n if (radiusValuePercent > this._maxRadiusPercent) {\r\n this._maxRadiusPercent = radiusValuePercent;\r\n }\r\n }\r\n _super.prototype.validate.call(this);\r\n if (this.alignLabels) {\r\n if (this.startAngle > this.endAngle) {\r\n this._rightItems.reverse();\r\n }\r\n else {\r\n this._leftItems.reverse();\r\n }\r\n this._rightItems.sort(function (a, b) {\r\n var aAngle = (a.slice.middleAngle + 360) % 360;\r\n var bAngle = (b.slice.middleAngle + 360) % 360;\r\n if (aAngle > 270) {\r\n aAngle -= 360;\r\n }\r\n if (bAngle > 270) {\r\n bAngle -= 360;\r\n }\r\n if (aAngle < bAngle) {\r\n return -1;\r\n }\r\n else if (aAngle > bAngle) {\r\n return 1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n });\r\n this._leftItems.sort(function (a, b) {\r\n var aAngle = (a.slice.middleAngle + 360) % 360;\r\n var bAngle = (b.slice.middleAngle + 360) % 360;\r\n if (aAngle < bAngle) {\r\n return 1;\r\n }\r\n else if (aAngle > bAngle) {\r\n return -1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n });\r\n this.arrangeLabels(this._rightItems);\r\n this.arrangeLabels2(this._rightItems);\r\n this.arrangeLabels(this._leftItems);\r\n this.arrangeLabels2(this._leftItems);\r\n }\r\n };\r\n /**\r\n * Validates data item's element, effectively redrawing it.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n PieSeries.prototype.validateDataElement = function (dataItem) {\r\n if (this.pixelRadius > 0) {\r\n if (this.ignoreZeroValues && (dataItem.value == 0 || dataItem.value == null)) {\r\n dataItem.__disabled = true;\r\n }\r\n else {\r\n dataItem.__disabled = false;\r\n }\r\n // SLICE\r\n var slice = dataItem.slice;\r\n slice.radius = this.pixelRadius;\r\n if ($type.isNumber(dataItem.radiusValue)) {\r\n slice.radius = this.pixelInnerRadius + (this.pixelRadius - this.pixelInnerRadius) * dataItem.values.radiusValue.percent / this._maxRadiusPercent;\r\n }\r\n if (!(slice.innerRadius instanceof Percent)) {\r\n slice.innerRadius = this.pixelInnerRadius;\r\n }\r\n slice.startAngle = this._currentStartAngle;\r\n slice.arc = Math.abs(dataItem.values.value.percent) * (this.endAngle - this.startAngle) / 100;\r\n // LABEL\r\n if (!this.labels.template.disabled) {\r\n var label = dataItem.label;\r\n var tick = dataItem.tick;\r\n tick.slice = slice;\r\n tick.label = label;\r\n var normalizedMiddleAngle = (slice.middleAngle + 360) % 360; // force angle to be 0 - 360;\r\n var point = void 0;\r\n if (this.alignLabels) {\r\n var labelRadius = label.pixelRadius(slice.radius);\r\n var x = tick.length + labelRadius;\r\n label.dx = 0;\r\n label.dy = 0;\r\n label.verticalCenter = \"middle\";\r\n var arcRect = this._arcRect;\r\n // right half\r\n if (normalizedMiddleAngle > 270 || normalizedMiddleAngle <= 90) {\r\n x += (arcRect.width + arcRect.x) * this.pixelRadius;\r\n label.horizontalCenter = \"left\";\r\n this._rightItems.push(dataItem);\r\n }\r\n // left half\r\n else {\r\n x -= arcRect.x * this.pixelRadius;\r\n label.horizontalCenter = \"right\";\r\n this._leftItems.push(dataItem);\r\n x *= -1;\r\n }\r\n var distance = slice.radius + tick.length + labelRadius;\r\n point = { x: x, y: slice.iy * distance };\r\n label.moveTo(point);\r\n }\r\n else {\r\n var depth = slice[\"depth\"];\r\n if (!$type.isNumber(depth)) {\r\n depth = 0;\r\n }\r\n label.fixPosition(slice.middleAngle, slice.radius, slice.radiusY, 0, -depth);\r\n }\r\n }\r\n this._currentStartAngle += slice.arc;\r\n // do this at the end, otherwise bullets won't be positioned properly\r\n _super.prototype.validateDataElement.call(this, dataItem);\r\n }\r\n };\r\n Object.defineProperty(PieSeries.prototype, \"radius\", {\r\n /**\r\n * @return Radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"radius\");\r\n },\r\n /**\r\n * Outer radius for the series' slices in pixels or [[Percent]].\r\n *\r\n * @param value Radius\r\n */\r\n set: function (value) {\r\n if (this.setPercentProperty(\"radius\", value, true, false, 10, false)) {\r\n this.invalidateDataItems();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PieSeries.prototype, \"pixelRadius\", {\r\n /**\r\n * @return Radius\r\n * @ignore\r\n */\r\n get: function () {\r\n return this._pixelRadius;\r\n },\r\n /**\r\n * @ignore\r\n */\r\n set: function (value) {\r\n if (this._pixelRadius != value) {\r\n this._pixelRadius = value;\r\n this.invalidateDataItems();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PieSeries.prototype, \"pixelInnerRadius\", {\r\n /**\r\n * @return Pixel inner radius\r\n * @ignore\r\n */\r\n get: function () {\r\n return this._pixelInnerRadius;\r\n },\r\n /**\r\n * @ignore\r\n */\r\n set: function (value) {\r\n if (this._pixelInnerRadius != value) {\r\n this._pixelInnerRadius = value;\r\n this.invalidateDataItems();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PieSeries.prototype, \"innerRadius\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"innerRadius\");\r\n },\r\n /**\r\n * Inner radius for the series' slices in pixels.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Redo so that users can set it\r\n * @param value Radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PieSeries.prototype, \"startAngle\", {\r\n /**\r\n * @return Angle\r\n */\r\n get: function () {\r\n var startAngle = this.getPropertyValue(\"startAngle\");\r\n if ($type.isNumber(startAngle)) {\r\n return startAngle;\r\n }\r\n else {\r\n return this._startAngleInternal;\r\n }\r\n },\r\n /**\r\n * Start angle for the series' slices in degrees. (0-360)\r\n *\r\n * @param value Angle\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"startAngle\", $math.normalizeAngle(value), true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PieSeries.prototype, \"endAngle\", {\r\n /**\r\n * @return Angle\r\n */\r\n get: function () {\r\n var endAngle = this.getPropertyValue(\"endAngle\");\r\n if ($type.isNumber(endAngle)) {\r\n return endAngle;\r\n }\r\n else {\r\n return this._endAngleInternal;\r\n }\r\n },\r\n /**\r\n * End angle for the series' slices in degrees. (0-360)\r\n *\r\n * @param value Angle\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"endAngle\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Positions series bullet.\r\n *\r\n * @ignore Exclude from docs\r\n * @param bullet Bullet\r\n */\r\n PieSeries.prototype.positionBullet = function (bullet) {\r\n _super.prototype.positionBullet.call(this, bullet);\r\n var dataItem = bullet.dataItem;\r\n var slice = dataItem.slice;\r\n var locationX = bullet.locationX;\r\n if (!$type.isNumber(locationX)) {\r\n locationX = 0.5;\r\n }\r\n var locationY = bullet.locationY;\r\n if (!$type.isNumber(locationY)) {\r\n locationY = 1;\r\n }\r\n var angle = slice.startAngle + slice.arc * locationX;\r\n bullet.x = locationY * slice.radius * $math.cos(angle);\r\n bullet.y = locationY * slice.radiusY * $math.sin(angle);\r\n };\r\n /**\r\n * Repositions bullet and labels when slice moves.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\r\n PieSeries.prototype.handleSliceMove = function (event) {\r\n if (!this.alignLabels) {\r\n var slice = event.target;\r\n var dataItem = slice.dataItem;\r\n // moving textelement, as label dx and dy are already employed for aligning\r\n //@labeltodo\r\n if (dataItem) {\r\n var label = dataItem.label;\r\n if (label) {\r\n label.dx = label.fdx + slice.dx + slice.pixelX;\r\n label.dy = label.fdy + slice.dy + slice.pixelY;\r\n }\r\n }\r\n }\r\n };\r\n Object.defineProperty(PieSeries.prototype, \"bbox\", {\r\n /**\r\n * Returns bounding box (square) for this element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n get: function () {\r\n if (this.definedBBox) {\r\n return this.definedBBox;\r\n }\r\n var chart = this.chart;\r\n if (chart) {\r\n return $math.getArcRect(chart.startAngle, chart.endAngle, this.pixelRadius);\r\n }\r\n return $math.getArcRect(this.startAngle, this.endAngle, this.pixelRadius);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return PieSeries;\r\n}(PercentSeries));\r\nexport { PieSeries };\r\n/**\r\n * bboxter class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"PieSeries\"] = PieSeries;\r\nregistry.registeredClasses[\"PieSeriesDataItem\"] = PieSeriesDataItem;\r\n//# sourceMappingURL=PieSeries.js.map","/**\r\n * Pie chart module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { PercentChart, PercentChartDataItem } from \"./PercentChart\";\r\nimport { percent, Percent } from \"../../core/utils/Percent\";\r\nimport { PieSeries } from \"../series/PieSeries\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[PieChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar PieChartDataItem = /** @class */ (function (_super) {\r\n __extends(PieChartDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PieChartDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PieChartDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return PieChartDataItem;\r\n}(PercentChartDataItem));\r\nexport { PieChartDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a Pie chart.\r\n *\r\n * ```TypeScript\r\n * // Includes\r\n * import * as am4core from \"@amcharts/amcharts4/core\";\r\n * import * as am4charts from \"@amcharts/amcharts4/charts\";\r\n *\r\n * // Create chart\r\n * let chart = am4core.create(\"chartdiv\", am4charts.PieChart);\r\n *\r\n * // Set data\r\n * chart.data = [{\r\n * \t\"country\": \"Lithuania\",\r\n * \t\"litres\": 501.9\r\n * }, {\r\n * \t\"country\": \"Czechia\",\r\n * \t\"litres\": 301.9\r\n * }, {\r\n * \t\"country\": \"Ireland\",\r\n * \t\"litres\": 201.1\r\n * }];\r\n *\r\n * // Create series\r\n * let series = chart.series.push(new am4charts.PieSeries());\r\n * series.dataFields.value = \"litres\";\r\n * series.dataFields.category = \"country\";\r\n * ```\r\n * ```JavaScript\r\n * // Create chart\r\n * var chart = am4core.create(\"chartdiv\", am4charts.PieChart);\r\n *\r\n * // The following would work as well:\r\n * // var chart = am4core.create(\"chartdiv\", \"PieChart\");\r\n *\r\n * // Set data\r\n * chart.data = [{\r\n * \t\"country\": \"Lithuania\",\r\n * \t\"litres\": 501.9\r\n * }, {\r\n * \t\"country\": \"Czechia\",\r\n * \t\"litres\": 301.9\r\n * }, {\r\n * \t\"country\": \"Ireland\",\r\n * \t\"litres\": 201.1\r\n * }];\r\n *\r\n * // Create series\r\n * var series = chart.series.push(new am4charts.PieSeries());\r\n * series.dataFields.value = \"litres\";\r\n * series.dataFields.category = \"country\";\r\n * ```\r\n * ```JSON\r\n * var chart = am4core.createFromConfig({\r\n *\r\n * \t// Series\r\n * \t\"series\": [{\r\n * \t\t\"type\": \"PieSeries\",\r\n * \t\t\"dataFields\": {\r\n * \t\t\t\"value\": \"litres\",\r\n * \t\t\t\"category\": \"country\"\r\n * \t\t}\r\n * \t}],\r\n *\r\n * \t// Data\r\n * \t\"data\": [{\r\n * \t\t\"country\": \"Lithuania\",\r\n * \t\t\"litres\": 501.9\r\n * \t}, {\r\n * \t\t\"country\": \"Czechia\",\r\n * \t\t\"litres\": 301.9\r\n * \t}, {\r\n * \t\t\"country\": \"Ireland\",\r\n * \t\t\"litres\": 201.1\r\n * \t}]\r\n *\r\n * }, \"chartdiv\", \"PieChart\");\r\n * ```\r\n *\r\n * @see {@link IPieChartEvents} for a list of available Events\r\n * @see {@link IPieChartAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/pie-chart/} for documentation\r\n * @important\r\n */\r\nvar PieChart = /** @class */ (function (_super) {\r\n __extends(PieChart, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PieChart() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"PieChart\";\r\n // Set defaults\r\n _this.innerRadius = 0;\r\n _this.radius = percent(80);\r\n _this.align = \"none\";\r\n _this.valign = \"none\";\r\n _this.startAngle = -90;\r\n _this.endAngle = 270;\r\n var seriesContainer = _this.seriesContainer;\r\n seriesContainer.isMeasured = true;\r\n seriesContainer.valign = \"middle\";\r\n seriesContainer.align = \"center\";\r\n seriesContainer.layout = \"absolute\";\r\n seriesContainer.width = undefined;\r\n seriesContainer.height = undefined;\r\n // so that the pie is always drawn, even the legend wants all the space\r\n _this.chartContainer.minHeight = 50;\r\n _this.chartContainer.minWidth = 50;\r\n _this.chartContainer.events.on(\"maxsizechanged\", _this.updateRadius, _this, false); // need this for the chart to change radius if legend is removed/disabled\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n PieChart.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n // Add a default screen reader title for accessibility\r\n // This will be overridden in screen reader if there are any `titles` set\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Pie chart\");\r\n }\r\n };\r\n /**\r\n * (Re)validates the chart, causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n PieChart.prototype.validateLayout = function () {\r\n _super.prototype.validateLayout.call(this);\r\n this.updateRadius();\r\n };\r\n /**\r\n * Decorates a new [[Series]] object with required parameters when it is\r\n * added to the chart.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\r\n PieChart.prototype.handleSeriesAdded = function (event) {\r\n _super.prototype.handleSeriesAdded.call(this, event);\r\n this._chartPixelRadius = undefined;\r\n this.updateSeriesAngles();\r\n };\r\n PieChart.prototype.updateSeriesAngles = function () {\r\n var _this = this;\r\n this.series.each(function (series) {\r\n series._startAngleInternal = _this.startAngle;\r\n series._endAngleInternal = _this.endAngle;\r\n //series.defaultState.properties.startAngle = this.startAngle;\r\n //series.defaultState.properties.endAngle = this.endAngle;\r\n });\r\n };\r\n /**\r\n * Recalculates pie's radius, based on a number of criteria.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n PieChart.prototype.updateRadius = function () {\r\n var chartCont = this.chartContainer;\r\n var rect = $math.getArcRect(this.startAngle, this.endAngle, 1);\r\n var innerRect = { x: 0, y: 0, width: 0, height: 0 };\r\n var innerRadius = this.innerRadius;\r\n if (innerRadius instanceof Percent) {\r\n innerRect = $math.getArcRect(this.startAngle, this.endAngle, innerRadius.value);\r\n }\r\n // @todo handle this when innerRadius set in pixels (do it for radar also)\r\n rect = $math.getCommonRectangle([rect, innerRect]);\r\n var maxRadius = Math.min(chartCont.innerWidth / rect.width, chartCont.innerHeight / rect.height);\r\n if (!$type.isNumber(maxRadius)) {\r\n maxRadius = 0;\r\n }\r\n var chartRadius = $utils.relativeRadiusToValue(this.radius, maxRadius);\r\n var chartPixelInnerRadius = $utils.relativeRadiusToValue(this.innerRadius, maxRadius);\r\n var seriesRadius = (chartRadius - chartPixelInnerRadius) / this.series.length;\r\n if (chartRadius != this._chartPixelRadius || chartPixelInnerRadius != this._chartPixelInnerRadius) {\r\n this._chartPixelRadius = chartRadius;\r\n this._chartPixelInnerRadius = chartPixelInnerRadius;\r\n //@todo: make it possible to set series radius in percent\r\n $iter.each($iter.indexed(this.series.iterator()), function (a) {\r\n var i = a[0];\r\n var series = a[1];\r\n var radius = chartPixelInnerRadius + $utils.relativeRadiusToValue(series.radius, chartRadius - chartPixelInnerRadius);\r\n var innerRadius = chartPixelInnerRadius + $utils.relativeRadiusToValue(series.innerRadius, chartRadius - chartPixelInnerRadius);\r\n if (!$type.isNumber(radius)) {\r\n radius = chartPixelInnerRadius + seriesRadius * (i + 1);\r\n }\r\n if (!$type.isNumber(innerRadius)) {\r\n innerRadius = chartPixelInnerRadius + seriesRadius * i;\r\n }\r\n series.pixelRadius = radius;\r\n series.pixelInnerRadius = innerRadius;\r\n });\r\n this.seriesContainer.definedBBox = { x: chartRadius * rect.x, y: chartRadius * rect.y, width: chartRadius * rect.width, height: chartRadius * rect.height };\r\n this.seriesContainer.invalidateLayout();\r\n this.bulletsContainer.x = this.seriesContainer.x;\r\n this.bulletsContainer.y = this.seriesContainer.y;\r\n }\r\n };\r\n Object.defineProperty(PieChart.prototype, \"radius\", {\r\n /**\r\n * @return Radius (px or relative)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"radius\");\r\n },\r\n /**\r\n * Sets radius of the pie chart.\r\n *\r\n * Setting to a number will mean a fixed pixel radius.\r\n *\r\n * Setting to an instance of [[Percent]] will mean a relative radius to\r\n * available space.\r\n *\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * // Set pie chart to be at 50% of the available space\r\n * pieChart.radius = am4core.percent.percent(50);\r\n * ```\r\n * ```JavaScript\r\n * // Set pie chart to be at 50% of the available space\r\n * pieChart.radius = am4core.percent.percent(50);\r\n * ```\r\n * ```JSON\r\n * {\r\n * // Set pie chart to be at 50% of the available space\r\n * \"radius\": \"50%\"\r\n * }\r\n * ```\r\n *\r\n * @default 80%\r\n * @param value Radius (px or relative)\r\n */\r\n set: function (value) {\r\n if (this.setPercentProperty(\"radius\", value, true, false, 10, false)) {\r\n this.invalidateLayout();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PieChart.prototype, \"innerRadius\", {\r\n /**\r\n * @return Relative inner radius (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"innerRadius\");\r\n },\r\n /**\r\n * Sets relative inner radius (to create a donut chart).\r\n *\r\n * Setting to a number will mean a fixed pixel radius.\r\n *\r\n * Setting to an instance of [[Percent]] will mean a relative radius to\r\n * available space.\r\n *\r\n * NOTE: it's not related to `radius`.\r\n *\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * // Set pie chart to be at 50% of the available space\r\n * pieChart.innerRadius = am4core.percent.percent(50);\r\n * ```\r\n * ```JavaScript\r\n * // Set pie chart to be at 50% of the available space\r\n * pieChart.innerRadius = am4core.percent.percent(50);\r\n * ```\r\n * ```JSON\r\n * {\r\n * // Set pie chart to be at 50% of the available space\r\n * \"innerRadius\": \"50%\"\r\n * }\r\n * ```\r\n *\r\n * @default 0\r\n * @param value Relative inner radius (0-1)\r\n * @todo Setting things like `innerRadius` modifies `slice.radius` and it then looks like it is not the same value as in default state\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates a new [[PieSeries]].\r\n *\r\n * @return New series\r\n */\r\n PieChart.prototype.createSeries = function () {\r\n return new PieSeries();\r\n };\r\n Object.defineProperty(PieChart.prototype, \"startAngle\", {\r\n /**\r\n * @return Start angle (degrees)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startAngle\");\r\n },\r\n /**\r\n * Starting angle of the Pie circle. (degrees)\r\n *\r\n * Normally, a pie chart begins (the left side of the first slice is drawn)\r\n * at the top center. (at -90 degrees)\r\n *\r\n * You can use `startAngle` to change this setting.\r\n *\r\n * E.g. setting this to 0 will make the first slice be drawn to the right.\r\n *\r\n * For a perfect circle the absolute sum of `startAngle` and `endAngle`\r\n * needs to be 360.\r\n *\r\n * However, it's **not** necessary to do so. You can set to those lesser\r\n * numbers, to create semi-circles.\r\n *\r\n * E.g. `startAngle = -90` with `endAngle = 0` will create a Pie chart that\r\n * looks like a quarter of a circle.\r\n *\r\n * NOTE: This setting is not supported in a 3D pie chart.\r\n *\r\n * @default -90\r\n * @param value Start angle (degrees)\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"startAngle\", value)) {\r\n this.updateRadius();\r\n this.updateSeriesAngles();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PieChart.prototype, \"endAngle\", {\r\n /**\r\n * @return End angle (degrees)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endAngle\");\r\n },\r\n /**\r\n * End angle of the Pie circle. (degrees)\r\n *\r\n * Normally, a pie chart ends (the right side of the last slice is drawn)\r\n * at the top center. (at 270 degrees)\r\n *\r\n * You can use `endAngle` to change this setting.\r\n *\r\n * For a perfect circle the absolute sum of `startAngle` and `endAngle`\r\n * needs to be 360.\r\n *\r\n * However, it's **not** necessary to do so. You can set to those lesser\r\n * numbers, to create semi-circles.\r\n *\r\n * E.g. `startAngle = -90` with `endAngle = 0` will create a Pie chart that\r\n * looks like a quarter of a circle.\r\n *\r\n * NOTE: This setting is not supported in a 3D pie chart.\r\n *\r\n * @default 270\r\n * @param value End angle (degrees)\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"endAngle\", value)) {\r\n this.updateRadius();\r\n this.updateSeriesAngles();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return PieChart;\r\n}(PercentChart));\r\nexport { PieChart };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"PieChart\"] = PieChart;\r\nregistry.registeredClasses[\"PieChartDataItem\"] = PieChartDataItem;\r\n//# sourceMappingURL=PieChart.js.map","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { __extends } from \"tslib\";\r\nimport { PieSeries, PieSeriesDataItem } from \"../series/PieSeries\";\r\nimport { Slice3D } from \"../../core/elements/3d/Slice3D\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[PieSeries3D]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar PieSeries3DDataItem = /** @class */ (function (_super) {\r\n __extends(PieSeries3DDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PieSeries3DDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PieSeries3DDataItem\";\r\n _this.values.depthValue = {};\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(PieSeries3DDataItem.prototype, \"depthValue\", {\r\n /**\r\n * @return Depth\r\n */\r\n get: function () {\r\n return this.values[\"depthValue\"].value;\r\n },\r\n /**\r\n * Slice depth (height).\r\n *\r\n * @param value Depth\r\n */\r\n set: function (value) {\r\n this.setValue(\"depthValue\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return PieSeries3DDataItem;\r\n}(PieSeriesDataItem));\r\nexport { PieSeries3DDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[Series]] for a slice series on a 3D pie chart.\r\n *\r\n * @see {@link IPieSeries3DEvents} for a list of available Events\r\n * @see {@link IPieSeries3DAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\r\nvar PieSeries3D = /** @class */ (function (_super) {\r\n __extends(PieSeries3D, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PieSeries3D() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PieSeries3D\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n PieSeries3D.prototype.createDataItem = function () {\r\n return new PieSeries3DDataItem();\r\n };\r\n /**\r\n * creates slice\r\n */\r\n PieSeries3D.prototype.createSlice = function () {\r\n return new Slice3D();\r\n };\r\n /**\r\n * Validates data item's element, effectively redrawing it.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n PieSeries3D.prototype.validateDataElement = function (dataItem) {\r\n var slice = dataItem.slice;\r\n var depth = this.depth;\r\n if (!$type.isNumber(depth)) {\r\n depth = this.chart.depth;\r\n }\r\n var depthPercent = dataItem.values.depthValue.percent;\r\n if (!$type.isNumber(depthPercent)) {\r\n depthPercent = 100;\r\n }\r\n slice.depth = depthPercent * depth / 100;\r\n var angle = this.angle;\r\n if (!$type.isNumber(angle)) {\r\n angle = this.chart.angle;\r\n }\r\n slice.angle = angle;\r\n _super.prototype.validateDataElement.call(this, dataItem);\r\n };\r\n /**\r\n * (Re)validates the whole series, effectively causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n PieSeries3D.prototype.validate = function () {\r\n _super.prototype.validate.call(this);\r\n for (var i = this._workingStartIndex; i < this._workingEndIndex; i++) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n var slice = dataItem.slice;\r\n var startAngle = slice.startAngle;\r\n // find quarter\r\n //q0 || q1\r\n if ((startAngle >= -90 && startAngle < 90)) {\r\n slice.toFront();\r\n }\r\n //q2 || q3\r\n else if ((startAngle >= 90)) {\r\n slice.toBack();\r\n }\r\n }\r\n };\r\n Object.defineProperty(PieSeries3D.prototype, \"depth\", {\r\n /**\r\n * @return Depth (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"depth\");\r\n },\r\n /**\r\n * Depth (height) of the pie slice in pixels.\r\n *\r\n * @param value Depth (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"depth\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PieSeries3D.prototype, \"angle\", {\r\n /**\r\n * @return Angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"angle\");\r\n },\r\n /**\r\n * Angle of the view point of the 3D pie. (0-360)\r\n *\r\n * @param value Angle\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"angle\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Positions series bullet.\r\n *\r\n * @ignore Exclude from docs\r\n * @param bullet Bullet\r\n */\r\n PieSeries3D.prototype.positionBullet = function (bullet) {\r\n _super.prototype.positionBullet.call(this, bullet);\r\n var dataItem = bullet.dataItem;\r\n var slice = dataItem.slice;\r\n bullet.y = bullet.pixelY - slice.depth;\r\n };\r\n return PieSeries3D;\r\n}(PieSeries));\r\nexport { PieSeries3D };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"PieSeries3D\"] = PieSeries3D;\r\nregistry.registeredClasses[\"PieSeries3DDataItem\"] = PieSeries3DDataItem;\r\n//# sourceMappingURL=PieSeries3D.js.map","/**\r\n * 3D Pie chart module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * Imports\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { PieChart, PieChartDataItem } from \"./PieChart\";\r\nimport { PieSeries3D } from \"../series/PieSeries3D\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $math from \"../../core/utils/Math\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[PieChart3D]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar PieChart3DDataItem = /** @class */ (function (_super) {\r\n __extends(PieChart3DDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PieChart3DDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PieChart3DDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return PieChart3DDataItem;\r\n}(PieChartDataItem));\r\nexport { PieChart3DDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a 3D Pie chart.\r\n *\r\n * * ```TypeScript\r\n * // Includes\r\n * import * as am4core from \"@amcharts/amcharts4/core\";\r\n * import * as am4charts from \"@amcharts/amcharts4/charts\";\r\n *\r\n * // Create chart\r\n * let chart = am4core.create(\"chartdiv\", am4charts.Pie3DChart);\r\n *\r\n * // Set data\r\n * chart.data = [{\r\n * \t\"country\": \"Lithuania\",\r\n * \t\"litres\": 501.9\r\n * }, {\r\n * \t\"country\": \"Czechia\",\r\n * \t\"litres\": 301.9\r\n * }, {\r\n * \t\"country\": \"Ireland\",\r\n * \t\"litres\": 201.1\r\n * }];\r\n *\r\n * // Create series\r\n * let series = chart.series.push(new am4charts.Pie3DSeries());\r\n * series.dataFields.value = \"litres\";\r\n * series.dataFields.category = \"country\";\r\n * ```\r\n * ```JavaScript\r\n * // Create chart\r\n * var chart = am4core.create(\"chartdiv\", am4charts.Pie3DChart);\r\n *\r\n * // The following would work as well:\r\n * // var chart = am4core.create(\"chartdiv\", \"Pie3DChart\");\r\n *\r\n * // Set data\r\n * chart.data = [{\r\n * \t\"country\": \"Lithuania\",\r\n * \t\"litres\": 501.9\r\n * }, {\r\n * \t\"country\": \"Czechia\",\r\n * \t\"litres\": 301.9\r\n * }, {\r\n * \t\"country\": \"Ireland\",\r\n * \t\"litres\": 201.1\r\n * }];\r\n *\r\n * // Create series\r\n * var series = chart.series.push(new am4charts.Pie3DSeries());\r\n * series.dataFields.value = \"litres\";\r\n * series.dataFields.category = \"country\";\r\n * ```\r\n * ```JSON\r\n * var chart = am4core.createFromConfig({\r\n *\r\n * \t// Series\r\n * \t\"series\": [{\r\n * \t\t\"type\": \"Pie3DSeries\",\r\n * \t\t\"dataFields\": {\r\n * \t\t\t\"value\": \"litres\",\r\n * \t\t\t\"category\": \"country\"\r\n * \t\t}\r\n * \t}],\r\n *\r\n * \t// Data\r\n * \t\"data\": [{\r\n * \t\t\"country\": \"Lithuania\",\r\n * \t\t\"litres\": 501.9\r\n * \t}, {\r\n * \t\t\"country\": \"Czechia\",\r\n * \t\t\"litres\": 301.9\r\n * \t}, {\r\n * \t\t\"country\": \"Ireland\",\r\n * \t\t\"litres\": 201.1\r\n * \t}]\r\n *\r\n * }, \"chartdiv\", \"Pie3DChart\");\r\n * ```\r\n *\r\n * @see {@link IPieChart3DEvents} for a list of available Events\r\n * @see {@link IPieChart3DAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/pie-chart/} for documentation\r\n * @important\r\n */\r\nvar PieChart3D = /** @class */ (function (_super) {\r\n __extends(PieChart3D, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PieChart3D() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"PieChart3D\";\r\n _this.depth = 20;\r\n _this.angle = 10;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(PieChart3D.prototype, \"depth\", {\r\n /**\r\n * @return Depth (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"depth\");\r\n },\r\n /**\r\n * Depth of the 3D pie in pixels.\r\n *\r\n * This will determine \"height\" of the pie.\r\n *\r\n * @default 20\r\n * @param value Depth (px)\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"depth\", value)) {\r\n this.invalidateDataUsers();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PieChart3D.prototype, \"angle\", {\r\n /**\r\n * @return Angle (degrees)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"angle\");\r\n },\r\n /**\r\n * An angle of a \"point of view\" in degrees. Possible range 0 - 90.\r\n *\r\n * @default 10\r\n * @param value Angle (degrees)\r\n */\r\n set: function (value) {\r\n value = $math.fitToRange(value, 0, 90);\r\n if (this.setPropertyValue(\"angle\", value)) {\r\n this.invalidateDataUsers();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates and returns a new Series.\r\n *\r\n * @return New series\r\n */\r\n PieChart3D.prototype.createSeries = function () {\r\n return new PieSeries3D();\r\n };\r\n return PieChart3D;\r\n}(PieChart));\r\nexport { PieChart3D };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"PieChart3D\"] = PieChart3D;\r\n//# sourceMappingURL=PieChart3D.js.map","/**\r\n * Sliced chart module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { PercentChart, PercentChartDataItem } from \"./PercentChart\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[SlicedChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar SlicedChartDataItem = /** @class */ (function (_super) {\r\n __extends(SlicedChartDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function SlicedChartDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"SlicedChartDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return SlicedChartDataItem;\r\n}(PercentChartDataItem));\r\nexport { SlicedChartDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a Sliced chart.\r\n *\r\n * @see {@link ISlicedChartEvents} for a list of available Events\r\n * @see {@link ISlicedChartAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/sliced-chart/} for documentation\r\n * @important\r\n */\r\nvar SlicedChart = /** @class */ (function (_super) {\r\n __extends(SlicedChart, _super);\r\n /**\r\n * Constructor\r\n */\r\n function SlicedChart() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"SlicedChart\";\r\n _this.seriesContainer.layout = \"horizontal\";\r\n _this.padding(15, 15, 15, 15);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n SlicedChart.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n // Add a default screen reader title for accessibility\r\n // This will be overridden in screen reader if there are any `titles` set\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Sliced chart\");\r\n }\r\n };\r\n /**\r\n * (Re)validates the chart, causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n SlicedChart.prototype.validate = function () {\r\n _super.prototype.validate.call(this);\r\n };\r\n return SlicedChart;\r\n}(PercentChart));\r\nexport { SlicedChart };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"SlicedChart\"] = SlicedChart;\r\nregistry.registeredClasses[\"SlicedChartDataItem\"] = SlicedChartDataItem;\r\n//# sourceMappingURL=SlicedChart.js.map","/**\r\n * FlowDiagramNode module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../../core/Container\";\r\nimport { visualProperties } from \"../../core/Sprite\";\r\nimport { List } from \"../../core/utils/List\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $string from \"../../core/utils/String\";\r\nimport * as $order from \"../../core/utils/Order\";\r\nimport * as $number from \"../../core/utils/Number\";\r\nimport { RoundedRectangle } from \"../../core/elements/RoundedRectangle\";\r\nimport * as $object from \"../../core/utils/Object\";\r\nimport { LegendSettings } from \"../Legend\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a node in a Flow Diagram.\r\n *\r\n * A Flow node is a block with a value, which represents its size on the\r\n * diagram.\r\n *\r\n * Nodes are connected via [[FlowLink]] elements.\r\n *\r\n * @see {@link IFlowDiagramNodeEvents} for a list of available events\r\n * @see {@link IFlowDiagramNodeAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar FlowDiagramNode = /** @class */ (function (_super) {\r\n __extends(FlowDiagramNode, _super);\r\n /**\r\n * Constructor\r\n */\r\n function FlowDiagramNode() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Settings for the appearance of the related legend items.\r\n */\r\n _this.legendSettings = new LegendSettings();\r\n _this.className = \"FlowDiagramNode\";\r\n _this.isMeasured = false;\r\n // TODO can this be removed ?\r\n new InterfaceColorSet();\r\n _this.draggable = true;\r\n _this.inert = true;\r\n _this.setStateOnChildren = true;\r\n _this.events.on(\"positionchanged\", _this.invalidateLinks, _this, false);\r\n _this.events.on(\"sizechanged\", _this.invalidateLinks, _this, false);\r\n return _this;\r\n //this.events.on(\"hit\", this.handleHit, this, false);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n FlowDiagramNode.prototype.handleHit = function (event) {\r\n if (this.isHidden || this.isHiding) {\r\n this.show();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n };\r\n /**\r\n * Shows hidden node.\r\n *\r\n * @param duration Duration of reveal animation (ms)\r\n * @return Animation\r\n */\r\n FlowDiagramNode.prototype.show = function (duration) {\r\n var animation = _super.prototype.show.call(this, duration);\r\n this.outgoingDataItems.each(function (dataItem) {\r\n if (!dataItem.toNode || (dataItem.toNode && !dataItem.toNode.isHidden)) {\r\n dataItem.setWorkingValue(\"value\", dataItem.getValue(\"value\"), duration);\r\n dataItem.link.show();\r\n }\r\n });\r\n this.incomingDataItems.each(function (dataItem) {\r\n if (!dataItem.fromNode || (dataItem.fromNode && !dataItem.fromNode.isHidden)) {\r\n dataItem.setWorkingValue(\"value\", dataItem.getValue(\"value\"), duration);\r\n dataItem.link.show();\r\n }\r\n });\r\n return animation;\r\n };\r\n /**\r\n * Hides node.\r\n *\r\n * @param duration Duration of hiding animation (ms)\r\n * @return Animation\r\n */\r\n FlowDiagramNode.prototype.hide = function (duration) {\r\n var animation = _super.prototype.hide.call(this, duration);\r\n this.outgoingDataItems.each(function (dataItem) {\r\n dataItem.setWorkingValue(\"value\", 0, duration);\r\n dataItem.link.hide();\r\n });\r\n this.incomingDataItems.each(function (dataItem) {\r\n dataItem.setWorkingValue(\"value\", 0, duration);\r\n dataItem.link.hide();\r\n });\r\n return animation;\r\n };\r\n /**\r\n * Marks node as invalid, for redrawal in the next update cycle.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n FlowDiagramNode.prototype.validate = function () {\r\n if (!this.isDisposed()) {\r\n _super.prototype.validate.call(this);\r\n this.invalidateLinks();\r\n }\r\n };\r\n /**\r\n * Invalidates all links, attached to this node.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n FlowDiagramNode.prototype.invalidateLinks = function () {\r\n var _this = this;\r\n this.outgoingDataItems.each(function (dataItem) {\r\n var link = dataItem.link;\r\n if (link.colorMode == \"fromNode\") {\r\n link.fill = link.dataItem.fromNode.color;\r\n }\r\n if (link.colorMode == \"gradient\") {\r\n link.fill = link.gradient;\r\n link.stroke = link.gradient;\r\n var stop_1 = link.gradient.stops.getIndex(0);\r\n if (stop_1) {\r\n stop_1.color = _this.color;\r\n link.gradient.validate();\r\n }\r\n }\r\n });\r\n this.incomingDataItems.each(function (dataItem) {\r\n var link = dataItem.link;\r\n if (link.colorMode == \"toNode\") {\r\n link.fill = link.dataItem.toNode.color;\r\n }\r\n if (link.colorMode == \"gradient\") {\r\n link.fill = link.gradient;\r\n link.stroke = link.gradient;\r\n var stop_2 = link.gradient.stops.getIndex(1);\r\n if (stop_2) {\r\n stop_2.color = _this.color;\r\n link.gradient.validate();\r\n }\r\n }\r\n });\r\n };\r\n Object.defineProperty(FlowDiagramNode.prototype, \"incomingDataItems\", {\r\n /**\r\n * List of incoming items (links).\r\n *\r\n * @readonly\r\n * @return Incoming items\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._incomingDataItems) {\r\n var incomingDataItems = new List();\r\n incomingDataItems.events.on(\"inserted\", function () {\r\n if (_this.chart.sortBy == \"name\") {\r\n _this._incomingSorted = $iter.sort(_this._incomingDataItems.iterator(), function (x, y) { return $string.order(x.fromName, y.fromName); });\r\n }\r\n else if (_this.chart.sortBy == \"value\") {\r\n _this._incomingSorted = $iter.sort(_this._incomingDataItems.iterator(), function (x, y) { return $order.reverse($number.order(x.value, y.value)); });\r\n }\r\n else {\r\n _this._incomingSorted = _this._incomingDataItems.iterator();\r\n }\r\n }, undefined, false);\r\n this._incomingDataItems = incomingDataItems;\r\n }\r\n return this._incomingDataItems;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramNode.prototype, \"outgoingDataItems\", {\r\n /**\r\n * List of outgoing items (links).\r\n *\r\n * @readonly\r\n * @return Outgoing items\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._outgoingDataItems) {\r\n var outgoingDataItems = new List();\r\n outgoingDataItems.events.on(\"inserted\", function () {\r\n if (_this.chart.sortBy == \"name\") {\r\n _this._outgoingSorted = $iter.sort(_this._outgoingDataItems.iterator(), function (x, y) { return $string.order(x.fromName, y.fromName); });\r\n }\r\n else if (_this.chart.sortBy == \"value\") {\r\n _this._outgoingSorted = $iter.sort(_this._outgoingDataItems.iterator(), function (x, y) { return $order.reverse($number.order(x.value, y.value)); });\r\n }\r\n else {\r\n _this._outgoingSorted = _this._outgoingDataItems.iterator();\r\n }\r\n }, undefined, false);\r\n this._outgoingDataItems = outgoingDataItems;\r\n }\r\n return this._outgoingDataItems;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramNode.prototype, \"name\", {\r\n /**\r\n * @return Name\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"name\");\r\n },\r\n /**\r\n * A name of the node.\r\n *\r\n * @param value Name\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"name\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramNode.prototype, \"total\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"total\");\r\n },\r\n /**\r\n * Sum of all incoming+outgoing link values\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"total\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramNode.prototype, \"totalIncoming\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"totalIncoming\");\r\n },\r\n /**\r\n * Sum of all incomming link values.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"totalIncoming\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramNode.prototype, \"totalOutgoing\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"totalOutgoing\");\r\n },\r\n /**\r\n * Sum of all outgoing link values.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"totalOutgoing\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramNode.prototype, \"color\", {\r\n /**\r\n * @return Color\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"color\");\r\n },\r\n /**\r\n * Node's color.\r\n *\r\n * @param value Color\r\n */\r\n set: function (value) {\r\n this.setColorProperty(\"color\", value);\r\n if (this._background) {\r\n this._background.fill = value;\r\n }\r\n this.fill = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates elements in related legend container, that mimics the look of this\r\n * Series.\r\n *\r\n * @ignore Exclude from docs\r\n * @param marker Legend item container\r\n */\r\n FlowDiagramNode.prototype.createLegendMarker = function (marker) {\r\n var w = marker.pixelWidth;\r\n var h = marker.pixelHeight;\r\n marker.removeChildren();\r\n var column = marker.createChild(RoundedRectangle);\r\n column.shouldClone = false;\r\n $object.copyProperties(this, column, visualProperties);\r\n column.stroke = this.fill;\r\n column.copyFrom(this);\r\n column.padding(0, 0, 0, 0); // if columns will have padding (which is often), legend marker will be very narrow\r\n column.width = w;\r\n column.height = h;\r\n var legendDataItem = marker.dataItem;\r\n legendDataItem.color = column.fill;\r\n legendDataItem.colorOrig = column.fill;\r\n };\r\n Object.defineProperty(FlowDiagramNode.prototype, \"legendDataItem\", {\r\n /**\r\n * @return Data item\r\n */\r\n get: function () {\r\n return this._legendDataItem;\r\n },\r\n /**\r\n * Legend data item that corresponds to this series.\r\n *\r\n * @param value Data item\r\n */\r\n set: function (value) {\r\n this._legendDataItem = value;\r\n this._legendDataItem.itemContainer.deepInvalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return FlowDiagramNode;\r\n}(Container));\r\nexport { FlowDiagramNode };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"FlowDiagramNode\"] = FlowDiagramNode;\r\n//# sourceMappingURL=FlowDiagramNode.js.map","/**\r\n * FlowDiagramLink module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { LinearGradient } from \"../../core/rendering/fills/LinearGradient\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { Bullet } from \"../elements/Bullet\";\r\nimport { Color } from \"../../core/utils/Color\";\r\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { Polyline } from \"../../core/elements/Polyline\";\r\nimport { Line } from \"../../core/elements/Line\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * This class creates a link (waved color-filled line) between two nodes in a\r\n * Flow Diagram.\r\n *\r\n * @see {@link IFlowDiagramLinkEvents} for a list of available events\r\n * @see {@link IFlowDiagramLinkAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar FlowDiagramLink = /** @class */ (function (_super) {\r\n __extends(FlowDiagramLink, _super);\r\n /**\r\n * Constructor\r\n */\r\n function FlowDiagramLink() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"FlowDiagramLink\";\r\n var interfaceColors = new InterfaceColorSet();\r\n _this.maskBullets = false;\r\n _this.colorMode = \"fromNode\";\r\n _this.layout = \"none\";\r\n _this.isMeasured = false;\r\n _this.startAngle = 0;\r\n _this.endAngle = 0;\r\n _this.strokeOpacity = 0;\r\n // this is very important, otherwise the container will be shifted\r\n _this.verticalCenter = \"none\";\r\n _this.horizontalCenter = \"none\";\r\n _this.tooltipText = \"{fromName}→{toName}:{value.value}\";\r\n _this.tooltipLocation = 0.5;\r\n _this.link = _this.createChild(Sprite);\r\n _this.link.shouldClone = false;\r\n _this.link.setElement(_this.paper.add(\"path\"));\r\n _this.link.isMeasured = false;\r\n _this.fillOpacity = 0.2;\r\n _this.fill = interfaceColors.getFor(\"alternativeBackground\");\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Positions bullets\r\n * @ignore\r\n */\r\n FlowDiagramLink.prototype.positionBullets = function () {\r\n var _this = this;\r\n $iter.each(this.bullets.iterator(), function (bullet) {\r\n bullet.parent = _this.bulletsContainer;\r\n bullet.maxWidth = _this.maxWidth;\r\n bullet.maxHeight = _this.maxHeight;\r\n _this.positionBullet(bullet);\r\n });\r\n };\r\n Object.defineProperty(FlowDiagramLink.prototype, \"bulletsContainer\", {\r\n /**\r\n * Bullets container\r\n */\r\n get: function () {\r\n if (!this._bulletsContainer) {\r\n var bulletsContainer = this.createChild(Container);\r\n bulletsContainer.shouldClone = false;\r\n bulletsContainer.layout = \"none\";\r\n this._bulletsContainer = bulletsContainer;\r\n }\r\n return this._bulletsContainer;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramLink.prototype, \"bulletsMask\", {\r\n /**\r\n * Bullets mask sprite\r\n */\r\n get: function () {\r\n if (!this._bulletsMask) {\r\n var bulletsMask = this.createChild(Sprite);\r\n bulletsMask.shouldClone = false;\r\n bulletsMask.setElement(this.paper.add(\"path\"));\r\n bulletsMask.isMeasured = false;\r\n this._bulletsMask = bulletsMask;\r\n }\r\n return this._bulletsMask;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Positions bullets at relative bullet.locationX position on the link.\r\n * @ignore\r\n */\r\n FlowDiagramLink.prototype.positionBullet = function (bullet) {\r\n var location = bullet.locationX;\r\n if (!$type.isNumber(location)) {\r\n location = bullet.locationY;\r\n }\r\n if (!$type.isNumber(location)) {\r\n location = 0.5;\r\n }\r\n var point = this.middleLine.positionToPoint(location);\r\n bullet.moveTo(point);\r\n var rotationField = bullet.propertyFields.rotation;\r\n var angle;\r\n if (bullet.dataItem) {\r\n var dataContext = bullet.dataItem.dataContext;\r\n angle = dataContext[rotationField];\r\n }\r\n if (!$type.isNumber(angle)) {\r\n angle = point.angle;\r\n }\r\n bullet.rotation = angle;\r\n };\r\n Object.defineProperty(FlowDiagramLink.prototype, \"startAngle\", {\r\n /**\r\n * @return Start angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startAngle\");\r\n },\r\n /**\r\n * [startAngle description]\r\n *\r\n * @todo Description\r\n * @param value Start angle\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"startAngle\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramLink.prototype, \"endAngle\", {\r\n /**\r\n * @return End angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endAngle\");\r\n },\r\n /**\r\n * [endAngle description]\r\n *\r\n * @todo Description\r\n * @param value End angle\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"endAngle\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramLink.prototype, \"colorMode\", {\r\n /**\r\n * Fill mode\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"colorMode\");\r\n },\r\n /**\r\n * Should link be filled with a solid color, color of from node, color of toNode or gradient between node colors.\r\n * Some of the links, like ChordLink does not support gradiens well.\r\n *\r\n * @param value Fill mode\r\n */\r\n set: function (value) {\r\n if (value == \"gradient\") {\r\n var color = this.fill;\r\n this.gradient.stops.clear();\r\n if (color instanceof Color) {\r\n this.gradient.addColor(color);\r\n this.gradient.addColor(color);\r\n }\r\n this.fill = this.gradient;\r\n this.stroke = this.gradient;\r\n }\r\n this.setPropertyValue(\"colorMode\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramLink.prototype, \"maskBullets\", {\r\n /**\r\n * @return mask bullets value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maskBullets\");\r\n },\r\n /**\r\n * Should link bullets be masked or not\r\n *\r\n * @param value\r\n * @default false\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"maskBullets\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramLink.prototype, \"tooltipLocation\", {\r\n /**\r\n * Tooltip location value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tooltipLocation\");\r\n },\r\n /**\r\n * Relative location of a tooltip.\r\n * @default 0.5\r\n *\r\n * @param value\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"tooltipLocation\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Adds color steps in the link gradient.\r\n *\r\n * @param value Fill option\r\n */\r\n FlowDiagramLink.prototype.setFill = function (value) {\r\n _super.prototype.setFill.call(this, value);\r\n var gradient = this._gradient;\r\n if (gradient && value instanceof Color) {\r\n gradient.stops.clear();\r\n gradient.addColor(value);\r\n gradient.addColor(value);\r\n }\r\n };\r\n /**\r\n * Updates bounding box based on element dimension settings.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n FlowDiagramLink.prototype.measureElement = function () {\r\n };\r\n Object.defineProperty(FlowDiagramLink.prototype, \"bullets\", {\r\n /**\r\n * List of bullets\r\n *\r\n * @return [description]\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._bullets) {\r\n this._bullets = new ListTemplate(new Bullet());\r\n this._disposers.push(new ListDisposer(this._bullets));\r\n this._disposers.push(this._bullets.template);\r\n this._bullets.events.on(\"inserted\", function (event) {\r\n event.newValue.events.on(\"propertychanged\", function (event) {\r\n if (event.property == \"locationX\" || event.property == \"locationY\") {\r\n _this.positionBullet(event.target);\r\n }\r\n }, undefined, false);\r\n }, undefined, false);\r\n }\r\n return this._bullets;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies properties from another [[FlowDiagramLink]].\r\n *\r\n * @param source Source link\r\n */\r\n FlowDiagramLink.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.bullets.copyFrom(source.bullets);\r\n var middleLine = this.middleLine;\r\n if (middleLine) {\r\n if (middleLine instanceof Line && source.middleLine instanceof Line) {\r\n middleLine.copyFrom(source.middleLine);\r\n }\r\n if (middleLine instanceof Polyline && source.middleLine instanceof Polyline) {\r\n middleLine.copyFrom(source.middleLine);\r\n }\r\n }\r\n this.link.copyFrom(source.link);\r\n };\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Tooltip X (px)\r\n */\r\n FlowDiagramLink.prototype.getTooltipX = function () {\r\n if (this.middleLine) {\r\n return this.middleLine.positionToPoint(this.tooltipLocation).x;\r\n }\r\n };\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Tooltip Y (px)\r\n */\r\n FlowDiagramLink.prototype.getTooltipY = function () {\r\n if (this.middleLine) {\r\n return this.middleLine.positionToPoint(this.tooltipLocation).y;\r\n }\r\n };\r\n Object.defineProperty(FlowDiagramLink.prototype, \"gradient\", {\r\n /**\r\n * A gradiend instance that is used to provided colored gradient fills for\r\n * the Flow link.\r\n */\r\n get: function () {\r\n if (!this._gradient) {\r\n this._gradient = new LinearGradient();\r\n }\r\n return this._gradient;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return FlowDiagramLink;\r\n}(Container));\r\nexport { FlowDiagramLink };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"FlowDiagramLink\"] = FlowDiagramLink;\r\n//# sourceMappingURL=FlowDiagramLink.js.map","/**\r\n * FlowDiagram module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Chart, ChartDataItem } from \"../Chart\";\r\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { DictionaryTemplate, DictionaryDisposer } from \"../../core/utils/Dictionary\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { FlowDiagramNode } from \"../elements/FlowDiagramNode\";\r\nimport { FlowDiagramLink } from \"../elements/FlowDiagramLink\";\r\nimport { LinearGradientModifier } from \"../../core/rendering/fills/LinearGradientModifier\";\r\nimport { ColorSet } from \"../../core/utils/ColorSet\";\r\nimport { toColor, Color } from \"../../core/utils/Color\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $number from \"../../core/utils/Number\";\r\nimport * as $order from \"../../core/utils/Order\";\r\nimport { Disposer } from \"../../core/utils/Disposer\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n//@todo rearange notes after dragged\r\n/**\r\n * Defines a [[DataItem]] for [[FlowDiagram]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar FlowDiagramDataItem = /** @class */ (function (_super) {\r\n __extends(FlowDiagramDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function FlowDiagramDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"FlowDiagramDataItem\";\r\n _this.values.value = {};\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(FlowDiagramDataItem.prototype, \"fromName\", {\r\n /**\r\n * @return name\r\n */\r\n get: function () {\r\n return this.properties.fromName;\r\n },\r\n /**\r\n * Source node's name.\r\n *\r\n * @param value Name\r\n */\r\n set: function (value) {\r\n this.setProperty(\"fromName\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramDataItem.prototype, \"toName\", {\r\n /**\r\n * @return name\r\n */\r\n get: function () {\r\n return this.properties.toName;\r\n },\r\n /**\r\n * Destination node's name.\r\n *\r\n * @param value Name\r\n */\r\n set: function (value) {\r\n this.setProperty(\"toName\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramDataItem.prototype, \"color\", {\r\n /**\r\n * @return color\r\n */\r\n get: function () {\r\n return this.properties.color;\r\n },\r\n /**\r\n * Node color\r\n *\r\n * @param value Name\r\n */\r\n set: function (value) {\r\n this.setProperty(\"color\", toColor(value));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramDataItem.prototype, \"value\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.values.value.value;\r\n },\r\n /**\r\n * Link's value.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"value\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramDataItem.prototype, \"link\", {\r\n /**\r\n * A visual element, representing link between the source and target nodes.\r\n *\r\n * Link's actual thickness will be determined by `value` of this link and\r\n * `value` of the source node.\r\n *\r\n * @readonly\r\n * @return Link element\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._link) {\r\n var link_1 = this.component.links.create();\r\n this._link = link_1;\r\n this.addSprite(link_1);\r\n this._disposers.push(new Disposer(function () {\r\n if (_this.component) {\r\n _this.component.links.removeValue(link_1);\r\n }\r\n }));\r\n }\r\n return this._link;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return FlowDiagramDataItem;\r\n}(ChartDataItem));\r\nexport { FlowDiagramDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a Pie chart\r\n * @see {@link IFlowDiagramEvents} for a list of available Events\r\n * @see {@link IFlowDiagramAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar FlowDiagram = /** @class */ (function (_super) {\r\n __extends(FlowDiagram, _super);\r\n /**\r\n * Constructor\r\n */\r\n function FlowDiagram() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * A Color Set to use when applying/generating colors for each subsequent\r\n * node.\r\n */\r\n _this.colors = new ColorSet();\r\n _this.className = \"FlowDiagram\";\r\n _this.nodePadding = 20;\r\n _this.sortBy = \"none\";\r\n _this.sequencedInterpolation = true;\r\n _this.colors.step = 2;\r\n _this.minNodeSize = 0.02;\r\n var linksContainer = _this.chartContainer.createChild(Container);\r\n linksContainer.shouldClone = false;\r\n linksContainer.layout = \"none\";\r\n linksContainer.isMeasured = false;\r\n _this.linksContainer = linksContainer;\r\n var nodesContainer = _this.chartContainer.createChild(Container);\r\n nodesContainer.shouldClone = false;\r\n nodesContainer.layout = \"none\";\r\n nodesContainer.isMeasured = false;\r\n _this.nodesContainer = nodesContainer;\r\n // this data item holds sums, averages, etc\r\n _this.dataItem = _this.createDataItem();\r\n _this.dataItem.component = _this;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n FlowDiagram.prototype.dispose = function () {\r\n _super.prototype.dispose.call(this);\r\n this.dataItem.dispose();\r\n };\r\n /**\r\n * (Re)validates chart's data, effectively causing the chart to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n FlowDiagram.prototype.validateData = function () {\r\n var _this = this;\r\n if (this._parseDataFrom == 0) {\r\n this.nodes.clear();\r\n }\r\n this.sortNodes();\r\n this.colors.reset();\r\n _super.prototype.validateData.call(this);\r\n var sum = 0;\r\n var count = 0;\r\n var low;\r\n var high;\r\n // build blocks\r\n $iter.each(this.dataItems.iterator(), function (dataItem) {\r\n var fromName = dataItem.fromName;\r\n if (fromName) {\r\n var node = _this.nodes.getKey(fromName);\r\n if (!node) {\r\n node = _this.nodes.create(fromName);\r\n node.name = fromName;\r\n node.chart = _this;\r\n node.dataItem = dataItem;\r\n }\r\n dataItem.fromNode = node;\r\n dataItem.fromNode.outgoingDataItems.push(dataItem);\r\n }\r\n var toName = dataItem.toName;\r\n if (toName) {\r\n var node = _this.nodes.getKey(toName);\r\n if (!node) {\r\n node = _this.nodes.create(toName);\r\n node.name = toName;\r\n node.chart = _this;\r\n node.dataItem = dataItem;\r\n }\r\n dataItem.toNode = node;\r\n dataItem.toNode.incomingDataItems.push(dataItem);\r\n }\r\n if (!dataItem.fromNode) {\r\n var strokeModifier = new LinearGradientModifier();\r\n strokeModifier.opacities = [0, 1];\r\n dataItem.link.strokeModifier = strokeModifier;\r\n }\r\n if (!dataItem.toNode) {\r\n var fillModifier = new LinearGradientModifier();\r\n fillModifier.opacities = [1, 0];\r\n dataItem.link.strokeModifier = fillModifier;\r\n }\r\n var value = dataItem.value;\r\n if ($type.isNumber(value)) {\r\n sum += value;\r\n count++;\r\n if (low > value || !$type.isNumber(low)) {\r\n low = value;\r\n }\r\n if (high < value || !$type.isNumber(high)) {\r\n high = value;\r\n }\r\n }\r\n });\r\n var key = \"value\";\r\n this.dataItem.setCalculatedValue(key, high, \"high\");\r\n this.dataItem.setCalculatedValue(key, low, \"low\");\r\n this.dataItem.setCalculatedValue(key, sum, \"sum\");\r\n this.dataItem.setCalculatedValue(key, sum / count, \"average\");\r\n this.dataItem.setCalculatedValue(key, count, \"count\");\r\n $iter.each(this.nodes.iterator(), function (strNode) {\r\n var node = strNode[1];\r\n if (node.fill instanceof Color) {\r\n node.color = node.fill;\r\n }\r\n if (node.color == undefined) {\r\n node.color = _this.colors.next();\r\n }\r\n if (node.dataItem.color != undefined) {\r\n node.color = node.dataItem.color;\r\n }\r\n if (!node.dataItem.visible) {\r\n node.hide(0);\r\n }\r\n _this.getNodeValue(node);\r\n });\r\n this.sortNodes();\r\n this.feedLegend();\r\n };\r\n /**\r\n * [handleDataItemWorkingValueChange description]\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n FlowDiagram.prototype.handleDataItemWorkingValueChange = function (dataItem, name) {\r\n this.invalidate();\r\n };\r\n /**\r\n * Sorts nodes by either their values or names, based on `sortBy` setting.\r\n */\r\n FlowDiagram.prototype.sortNodes = function () {\r\n if (this.sortBy == \"name\") {\r\n this._sorted = this.nodes.sortedIterator();\r\n }\r\n else if (this.sortBy == \"value\") {\r\n this._sorted = $iter.sort(this.nodes.iterator(), function (x, y) { return $order.reverse($number.order(x[1].total, y[1].total)); });\r\n }\r\n else {\r\n this._sorted = this.nodes.iterator();\r\n }\r\n };\r\n /**\r\n * Updates a cummulative value of the node.\r\n *\r\n * A node's value is determined by summing values of all of the incoming\r\n * links or all of the outgoing links, whichever results in bigger number.\r\n *\r\n * @param node Node value\r\n */\r\n FlowDiagram.prototype.getNodeValue = function (node) {\r\n // todo: totalIncomming totalOutgoing, total\r\n var incomingTotal = 0;\r\n var outgoingTotal = 0;\r\n $iter.each(node.incomingDataItems.iterator(), function (dataItem) {\r\n var value = dataItem.getWorkingValue(\"value\");\r\n if ($type.isNumber(value)) {\r\n incomingTotal += value;\r\n }\r\n });\r\n $iter.each(node.outgoingDataItems.iterator(), function (dataItem) {\r\n var value = dataItem.getWorkingValue(\"value\");\r\n if ($type.isNumber(value)) {\r\n outgoingTotal += value;\r\n }\r\n });\r\n node.total = incomingTotal + outgoingTotal;\r\n node.totalIncoming = incomingTotal;\r\n node.totalOutgoing = outgoingTotal;\r\n };\r\n ;\r\n /**\r\n * Changes the sort type of the nodes.\r\n *\r\n * This will actually reshuffle nodes using nice animation.\r\n */\r\n FlowDiagram.prototype.changeSorting = function () {\r\n this.sortNodes();\r\n };\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n FlowDiagram.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n // Add a default screen reader title for accessibility\r\n // This will be overridden in screen reader if there are any `titles` set\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Flow diagram\");\r\n }\r\n };\r\n /**\r\n * Creates and returns a new data item.\r\n *\r\n * @return Data item\r\n */\r\n FlowDiagram.prototype.createDataItem = function () {\r\n return new FlowDiagramDataItem();\r\n };\r\n Object.defineProperty(FlowDiagram.prototype, \"nodePadding\", {\r\n /**\r\n * @return Padding (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"nodePadding\");\r\n },\r\n /**\r\n * Padding for node square in pixels.\r\n *\r\n * Padding will add extra space around node's name label.\r\n *\r\n * @param value Padding (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"nodePadding\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagram.prototype, \"sortBy\", {\r\n /**\r\n * @returns Node sorting\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"sortBy\");\r\n },\r\n /**\r\n * Sort nodes by \"name\" or \"value\" or do not sort at all. If not sorted, nodes will appear in the same order as they are in the data.\r\n * @default \"none\"\r\n * @param value Node sorting\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"sortBy\", value);\r\n this.changeSorting();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagram.prototype, \"minNodeSize\", {\r\n /**\r\n * @returns min node size\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minNodeSize\");\r\n },\r\n /**\r\n * Sometimes nodes can get very small if their value is little. With this setting you\r\n * can set min size of a node (this is relative value from the total size of all nodes)\r\n * @default 0.02\r\n * @param value Node sorting\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"minNodeSize\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagram.prototype, \"nodes\", {\r\n /**\r\n * A list of chart's nodes.\r\n *\r\n * @param {DictionaryTemplate<string, this[\"_node\"]>}\r\n */\r\n get: function () {\r\n if (!this._nodes) {\r\n var template = this.createNode();\r\n template.events.on(\"hit\", function (event) {\r\n event.target.handleHit(event);\r\n });\r\n this._nodes = new DictionaryTemplate(template);\r\n this._disposers.push(new DictionaryDisposer(this._nodes));\r\n }\r\n return this._nodes;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n FlowDiagram.prototype.createNode = function () {\r\n var node = new FlowDiagramNode();\r\n this._disposers.push(node);\r\n return node;\r\n };\r\n Object.defineProperty(FlowDiagram.prototype, \"links\", {\r\n /**\r\n * A list of chart's links.\r\n *\r\n * @param {ListTemplate<this[\"_link\"]>}\r\n */\r\n get: function () {\r\n if (!this._links) {\r\n this._links = new ListTemplate(this.createLink());\r\n this._disposers.push(new ListDisposer(this._links));\r\n }\r\n return this._links;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n FlowDiagram.prototype.createLink = function () {\r\n var link = new FlowDiagramLink();\r\n this._disposers.push(link);\r\n return link;\r\n };\r\n /**\r\n * Setups the legend to use the chart's data.\r\n * @ignore\r\n */\r\n FlowDiagram.prototype.feedLegend = function () {\r\n var legend = this.legend;\r\n if (legend) {\r\n var legendData_1 = [];\r\n this.nodes.each(function (key, node) {\r\n legendData_1.push(node);\r\n });\r\n legend.data = legendData_1;\r\n legend.dataFields.name = \"name\";\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n FlowDiagram.prototype.disposeData = function () {\r\n _super.prototype.disposeData.call(this);\r\n this.nodes.clear();\r\n };\r\n return FlowDiagram;\r\n}(Chart));\r\nexport { FlowDiagram };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"FlowDiagram\"] = FlowDiagram;\r\n//# sourceMappingURL=FlowDiagram.js.map","/**\r\n * Bullet module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Bullet } from \"./Bullet\";\r\nimport { Label } from \"../../core/elements/Label\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { color } from \"../../core/utils/Color\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a bullet with a textual label.\r\n *\r\n * Uses [[Label]] instance to draw the label, so the label itself is\r\n * configurable.\r\n *\r\n * @see {@link IBulletEvents} for a list of available events\r\n * @see {@link IBulletAdapters} for a list of available Adapters\r\n * @todo Usage example\r\n * @important\r\n */\r\nvar LabelBullet = /** @class */ (function (_super) {\r\n __extends(LabelBullet, _super);\r\n /**\r\n * Constructor\r\n */\r\n function LabelBullet() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"LabelBullet\";\r\n var label = _this.createChild(Label);\r\n label.shouldClone = false;\r\n label.verticalCenter = \"middle\";\r\n label.horizontalCenter = \"middle\";\r\n label.truncate = true;\r\n label.hideOversized = false;\r\n label.maxWidth = 500;\r\n label.maxHeight = 500;\r\n label.stroke = color();\r\n label.strokeOpacity = 0;\r\n label.fill = new InterfaceColorSet().getFor(\"text\");\r\n _this.events.on(\"maxsizechanged\", _this.handleMaxSize, _this, false);\r\n _this.label = label;\r\n // not good, as lineSeries will have labels somewhere in the middle.\r\n //this.locationX = 0.5;\r\n //this.locationY = 0.5;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n LabelBullet.prototype.handleMaxSize = function () {\r\n this.label.maxWidth = this.maxWidth;\r\n this.label.maxHeight = this.maxHeight;\r\n };\r\n /**\r\n * Copies all proprities and related stuff from another instance of\r\n * [[LabelBullet]].\r\n *\r\n * @param source Source element\r\n */\r\n LabelBullet.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.label.copyFrom(source.label);\r\n };\r\n return LabelBullet;\r\n}(Bullet));\r\nexport { LabelBullet };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"LabelBullet\"] = LabelBullet;\r\n//# sourceMappingURL=LabelBullet.js.map","/**\r\n * SankeyNode module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { FlowDiagramNode } from \"./FlowDiagramNode\";\r\nimport { LabelBullet } from \"./LabelBullet\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a node in a Sankey Diagram.\r\n *\r\n * A Sankey node is a block with a value, which represents its size on the\r\n * diagram.\r\n *\r\n * Nodes are connected via [[SankeyLink]] elements.\r\n *\r\n * @see {@link ISankeyNodeEvents} for a list of available events\r\n * @see {@link ISankeyNodeAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar SankeyNode = /** @class */ (function (_super) {\r\n __extends(SankeyNode, _super);\r\n /**\r\n * Constructor\r\n */\r\n function SankeyNode() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * [nextInCoord description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n _this.nextInCoord = 0;\r\n /**\r\n * [nextOutCoord description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n _this.nextOutCoord = 0;\r\n _this.className = \"SankeyNode\";\r\n _this.width = 10;\r\n _this.height = 10;\r\n var nameLabel = _this.createChild(LabelBullet);\r\n nameLabel.shouldClone = false;\r\n //@should we auto update these locations if position is changed?\r\n nameLabel.locationX = 1;\r\n nameLabel.locationY = 0.5;\r\n nameLabel.label.text = \"{name}\";\r\n //nameLabel.label.textElement.hideOversized = false;\r\n nameLabel.width = 150;\r\n nameLabel.height = 150;\r\n nameLabel.label.horizontalCenter = \"left\";\r\n nameLabel.label.padding(0, 5, 0, 5);\r\n _this.nameLabel = nameLabel;\r\n var valueLabel = _this.createChild(LabelBullet);\r\n valueLabel.shouldClone = false;\r\n valueLabel.label.hideOversized = false;\r\n valueLabel.locationX = 0.5;\r\n valueLabel.locationY = 0.5;\r\n valueLabel.width = 150;\r\n valueLabel.height = 150;\r\n //valueLabel.label.text = \"{value}\";\r\n valueLabel.label.horizontalCenter = \"middle\";\r\n _this.valueLabel = valueLabel;\r\n var hiddenState = _this.hiddenState;\r\n hiddenState.properties.fill = new InterfaceColorSet().getFor(\"disabledBackground\");\r\n hiddenState.properties.opacity = 0.5;\r\n hiddenState.properties.visible = true;\r\n _this.background.hiddenState.copyFrom(hiddenState);\r\n return _this;\r\n }\r\n /**\r\n * Invalidates all links, attached to this node.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n SankeyNode.prototype.invalidateLinks = function () {\r\n var _this = this;\r\n _super.prototype.invalidateLinks.call(this);\r\n this.nextInCoord = 0;\r\n this.nextOutCoord = 0;\r\n var chart = this.chart;\r\n if (chart) {\r\n var orientation_1 = chart.orientation;\r\n if (this._incomingSorted) {\r\n $iter.each(this._incomingSorted, function (dataItem) {\r\n var link = dataItem.link;\r\n var value = dataItem.getWorkingValue(\"value\");\r\n if ($type.isNumber(value)) {\r\n link.parent = _this.chart.linksContainer;\r\n var x = void 0;\r\n var y = void 0;\r\n var angle = void 0;\r\n if (orientation_1 == \"horizontal\") {\r\n x = _this.pixelX + _this.dx;\r\n y = _this.nextInCoord + _this.pixelY + _this.dy;\r\n angle = 0;\r\n }\r\n else {\r\n y = _this.pixelY + _this.dy;\r\n x = _this.nextInCoord + _this.pixelX + _this.dx;\r\n angle = 90;\r\n }\r\n link.endX = x;\r\n link.endY = y;\r\n link.startAngle = angle;\r\n link.endAngle = angle;\r\n link.gradient.rotation = angle;\r\n link.linkWidth = value * chart.valueHeight;\r\n if (!dataItem.fromNode) {\r\n if (orientation_1 == \"horizontal\") {\r\n link.maxWidth = 200;\r\n link.startX = _this.pixelX + _this.dx - link.maxWidth;\r\n link.startY = link.endY;\r\n }\r\n else {\r\n link.maxHeight = 200;\r\n link.startX = link.endX;\r\n link.startY = _this.pixelY + _this.dy - link.maxHeight;\r\n }\r\n // TODO is this needed ?\r\n $utils.used(link.gradient);\r\n link.fill = dataItem.toNode.color;\r\n var stop_1 = link.gradient.stops.getIndex(0);\r\n if (stop_1) {\r\n if (link.colorMode == \"gradient\") {\r\n stop_1.color = _this.color;\r\n }\r\n stop_1.opacity = 0;\r\n link.fill = link.gradient;\r\n link.stroke = link.gradient;\r\n link.gradient.validate();\r\n }\r\n }\r\n //link.validate();\r\n _this.nextInCoord += link.linkWidth;\r\n }\r\n });\r\n }\r\n if (this._outgoingSorted) {\r\n $iter.each(this._outgoingSorted, function (dataItem) {\r\n var link = dataItem.link;\r\n link.parent = _this.chart.linksContainer;\r\n var value = dataItem.getWorkingValue(\"value\");\r\n if ($type.isNumber(value)) {\r\n var x = void 0;\r\n var y = void 0;\r\n var angle = void 0;\r\n if (orientation_1 == \"horizontal\") {\r\n angle = 0;\r\n x = _this.pixelX + _this.pixelWidth + _this.dx - 1;\r\n y = _this.nextOutCoord + _this.pixelY + _this.dy;\r\n }\r\n else {\r\n angle = 90;\r\n x = _this.nextOutCoord + _this.pixelX + _this.dx;\r\n y = _this.pixelY + _this.pixelHeight + _this.dy - 1;\r\n }\r\n link.startX = x;\r\n link.startY = y;\r\n link.startAngle = angle;\r\n link.endAngle = angle;\r\n link.gradient.rotation = angle;\r\n link.linkWidth = value * _this.chart.valueHeight;\r\n if (!dataItem.toNode) {\r\n if (orientation_1 == \"horizontal\") {\r\n link.maxWidth = 200;\r\n link.endX = _this.pixelX + link.maxWidth + _this.dx;\r\n link.endY = link.startY;\r\n }\r\n else {\r\n link.maxHeight = 200;\r\n link.endX = link.startX;\r\n link.endY = _this.pixelY + link.maxHeight + _this.dy;\r\n }\r\n link.opacity = _this.opacity;\r\n var stop_2 = link.gradient.stops.getIndex(1);\r\n if (stop_2) {\r\n if (link.colorMode == \"gradient\") {\r\n stop_2.color = _this.color;\r\n }\r\n stop_2.opacity = 0;\r\n link.fill = link.gradient;\r\n link.stroke = link.gradient;\r\n link.gradient.validate();\r\n }\r\n }\r\n //link.validate();\r\n _this.nextOutCoord += link.linkWidth;\r\n }\r\n });\r\n }\r\n }\r\n this.positionBullet(this.nameLabel);\r\n this.positionBullet(this.valueLabel);\r\n };\r\n /**\r\n * Positions the bullet so it is centered within the node element.\r\n *\r\n * @param bullet Target bullet\r\n */\r\n SankeyNode.prototype.positionBullet = function (bullet) {\r\n if (bullet) {\r\n bullet.x = this.measuredWidth * bullet.locationX;\r\n bullet.y = this.measuredHeight * bullet.locationY;\r\n }\r\n };\r\n Object.defineProperty(SankeyNode.prototype, \"level\", {\r\n /**\r\n * @return Level\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"level\");\r\n },\r\n /**\r\n * A level node is displayed at. (0 - ...)\r\n *\r\n * Levels are measured from left to right.\r\n *\r\n * The nodes in the left-most column will have `level = 0`.\r\n *\r\n * Nodes in second column - `level = 1`, etc.\r\n *\r\n * @param value Level\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"level\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies properties and labels from another [[SankeyNode]].\r\n *\r\n * @param source Source node\r\n */\r\n SankeyNode.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.nameLabel.copyFrom(source.nameLabel);\r\n this.valueLabel.copyFrom(source.valueLabel);\r\n };\r\n return SankeyNode;\r\n}(FlowDiagramNode));\r\nexport { SankeyNode };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"SankeyNode\"] = SankeyNode;\r\n//# sourceMappingURL=SankeyNode.js.map","/**\r\n * SankeyLink module\r\n */\r\nimport { __extends, __read } from \"tslib\";\r\nimport { FlowDiagramLink } from \"./FlowDiagramLink\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { Polyspline } from \"../../core/elements/Polyspline\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $smoothing from \"../../core/rendering/Smoothing\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * This class creates a link (waved color-filled line) between two nodes in a\r\n * Sankey Diagram.\r\n *\r\n * @see {@link ISankeyLinkEvents} for a list of available events\r\n * @see {@link ISankeyLinkAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar SankeyLink = /** @class */ (function (_super) {\r\n __extends(SankeyLink, _super);\r\n /**\r\n * Constructor\r\n */\r\n function SankeyLink() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"SankeyLink\";\r\n // TODO can this be removed ?\r\n new InterfaceColorSet();\r\n _this.tension = 0.8;\r\n _this.controlPointDistance = 0.2;\r\n _this.startAngle = 0;\r\n _this.endAngle = 0;\r\n _this.linkWidth = 0;\r\n _this.startX = 0;\r\n _this.endX = 0;\r\n _this.startY = 0;\r\n _this.endY = 0;\r\n _this.middleLine = _this.createChild(Polyspline);\r\n _this.middleLine.shouldClone = false;\r\n _this.middleLine.strokeOpacity = 0;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n SankeyLink.prototype.makeBackwards = function () {\r\n if (this.states.getKey(\"backwards\") != undefined) {\r\n this.setState(\"backwards\");\r\n }\r\n };\r\n /**\r\n * (Re)validates (redraws) the link.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n SankeyLink.prototype.validate = function () {\r\n var _a, _b, _c, _d;\r\n _super.prototype.validate.call(this);\r\n if (!this.isTemplate) {\r\n var x0 = this.startX;\r\n var y0 = this.startY;\r\n var x1 = this.endX;\r\n var y1 = this.endY;\r\n if (this.states.getKey(\"backwards\")) {\r\n this.setState(\"default\");\r\n }\r\n if (this.dataItem) {\r\n var chart = this.dataItem.component;\r\n if (chart) {\r\n if (chart.orientation == \"horizontal\") {\r\n if (x1 < x0) {\r\n _a = __read([x1, x0], 2), x0 = _a[0], x1 = _a[1];\r\n _b = __read([y1, y0], 2), y0 = _b[0], y1 = _b[1];\r\n this.makeBackwards();\r\n }\r\n }\r\n else {\r\n if (y1 < y0) {\r\n _c = __read([y1, y0], 2), y0 = _c[0], y1 = _c[1];\r\n _d = __read([x1, x0], 2), x0 = _d[0], x1 = _d[1];\r\n this.makeBackwards();\r\n }\r\n }\r\n }\r\n }\r\n if (!$type.isNumber(x1)) {\r\n x1 = x0;\r\n }\r\n if (!$type.isNumber(y1)) {\r\n y1 = y0;\r\n }\r\n var startAngle = this.startAngle;\r\n var endAngle = this.endAngle;\r\n var w = this.linkWidth;\r\n var path = \"\";\r\n var xt0 = x0;\r\n var yt0 = y0;\r\n var xt1 = x1;\r\n var yt1 = y1;\r\n var xb0 = x0 + w * $math.sin(startAngle);\r\n var xb1 = x1 + w * $math.sin(endAngle);\r\n var yb0 = y0 + w * $math.cos(startAngle);\r\n var yb1 = y1 + w * $math.cos(endAngle);\r\n var xm0 = x0 + w / 2 * $math.sin(startAngle);\r\n var xm1 = x1 + w / 2 * $math.sin(endAngle);\r\n var ym0 = y0 + w / 2 * $math.cos(startAngle);\r\n var ym1 = y1 + w / 2 * $math.cos(endAngle);\r\n this.zIndex = this.zIndex || this.dataItem.index;\r\n var tensionX = this.tension + (1 - this.tension) * $math.sin(startAngle);\r\n var tensionY = this.tension + (1 - this.tension) * $math.cos(startAngle);\r\n this.middleLine.tensionX = tensionX;\r\n this.middleLine.tensionY = tensionY;\r\n if ($type.isNumber(w) && ($type.isNumber(x0) && $type.isNumber(x1) && $type.isNumber(y0) && $type.isNumber(y1))) {\r\n // solves issues with gradient fill of straight lines\r\n if ($math.round(xt0, 3) == $math.round(xt1, 3)) {\r\n xt1 += 0.01;\r\n }\r\n if ($math.round(yt0, 3) == $math.round(yt1, 3)) {\r\n yt1 += 0.01;\r\n }\r\n if ($math.round(xb0, 3) == $math.round(xb1, 3)) {\r\n xb1 += 0.01;\r\n }\r\n if ($math.round(yb0, 3) == $math.round(yb1, 3)) {\r\n yb1 += 0.01;\r\n }\r\n var minX = Math.min(xb0, xb1, xt0, xt1);\r\n var minY = Math.min(yb0, yb1, yt0, yt1);\r\n var maxX = Math.max(xb0, xb1, xt0, xt1);\r\n var maxY = Math.max(yb0, yb1, yt0, yt1);\r\n this._bbox = {\r\n x: minX,\r\n y: minY,\r\n width: maxX - minX,\r\n height: maxY - minY\r\n };\r\n var cpd = this.controlPointDistance;\r\n var kxt0 = xt0 + (xt1 - xt0) * cpd * $math.cos(startAngle);\r\n var kyt0 = yt0 + (yt1 - yt0) * cpd * $math.sin(startAngle);\r\n var kxt1 = xt1 - (xt1 - xt0) * cpd * $math.cos(endAngle);\r\n var kyt1 = yt1 - (yt1 - yt0) * cpd * $math.sin(endAngle);\r\n var kxm0 = xm0 + (xm1 - xm0) * cpd * $math.cos(startAngle);\r\n var kym0 = ym0 + (ym1 - ym0) * cpd * $math.sin(startAngle);\r\n var kxm1 = xm1 - (xm1 - xm0) * cpd * $math.cos(endAngle);\r\n var kym1 = ym1 - (ym1 - ym0) * cpd * $math.sin(endAngle);\r\n var angle = $math.getAngle({ x: kxt0, y: kyt0 }, { x: kxt1, y: kyt1 });\r\n var dx = (w / $math.cos(angle) - w) / $math.tan(angle) * $math.cos(startAngle);\r\n var dy = (w / $math.sin(angle) - w) * $math.tan(angle) * $math.sin(startAngle);\r\n var kxb0 = -dx / 2 + xb0 + (xb1 - xb0) * cpd * $math.cos(startAngle);\r\n var kyb0 = -dy / 2 + yb0 + (yb1 - yb0) * cpd * $math.sin(startAngle);\r\n var kxb1 = -dx / 2 + xb1 - (xb1 - xb0) * cpd * $math.cos(endAngle);\r\n var kyb1 = -dy / 2 + yb1 - (yb1 - yb0) * cpd * $math.sin(endAngle);\r\n this.middleLine.segments = [[{ x: xm0, y: ym0 }, { x: kxm0, y: kym0 }, { x: kxm1, y: kym1 }, { x: xm1, y: ym1 }]];\r\n kxt0 += dx / 2;\r\n kyt0 += dy / 2;\r\n kxt1 += dx / 2;\r\n kyt1 += dy / 2;\r\n path += $path.moveTo({ x: xt0, y: yt0 });\r\n path += new $smoothing.Tension(tensionX, tensionY).smooth([{ x: xt0, y: yt0 }, { x: kxt0, y: kyt0 }, { x: kxt1, y: kyt1 }, { x: xt1, y: yt1 }]);\r\n path += $path.lineTo({ x: xb1, y: yb1 });\r\n path += new $smoothing.Tension(tensionX, tensionY).smooth([{ x: xb1, y: yb1 }, { x: kxb1, y: kyb1 }, { x: kxb0, y: kyb0 }, { x: xb0, y: yb0 }]);\r\n path += $path.closePath();\r\n }\r\n this.link.path = path;\r\n if (this.maskBullets) {\r\n this.bulletsMask.path = path;\r\n this.bulletsContainer.mask = this.bulletsMask;\r\n }\r\n this.positionBullets();\r\n }\r\n };\r\n Object.defineProperty(SankeyLink.prototype, \"startX\", {\r\n /**\r\n * @return Start X\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startX\");\r\n },\r\n /**\r\n * [startX description]\r\n *\r\n * @todo Description\r\n * @param value Start X\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"startX\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SankeyLink.prototype, \"endX\", {\r\n /**\r\n * @return End X\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endX\");\r\n },\r\n /**\r\n * [endX description]\r\n *\r\n * @todo Description\r\n * @param value End X\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"endX\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SankeyLink.prototype, \"startY\", {\r\n /**\r\n * @return Start Y\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startY\");\r\n },\r\n /**\r\n * [startY description]\r\n *\r\n * @todo Description\r\n * @param value Start Y\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"startY\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SankeyLink.prototype, \"endY\", {\r\n /**\r\n * @return End Y\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endY\");\r\n },\r\n /**\r\n * [endY description]\r\n *\r\n * @todo Description\r\n * @param value End Y\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"endY\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SankeyLink.prototype, \"linkWidth\", {\r\n /**\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"linkWidth\");\r\n },\r\n /**\r\n * [linkWidth description]\r\n *\r\n * @todo Description\r\n * @param value [description]\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"linkWidth\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SankeyLink.prototype, \"controlPointDistance\", {\r\n /**\r\n * @return relative control point distance\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"controlPointDistance\");\r\n },\r\n /**\r\n * Distance of control point of a link, defines relative distance from a node at which linke should bend\r\n * @default 0.2\r\n * @param value\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"controlPointDistance\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SankeyLink.prototype, \"tension\", {\r\n /**\r\n * @return tension value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tension\");\r\n },\r\n /**\r\n * Tension of a spline, 1 would make the link to have sharp edges\r\n * @default 0.8\r\n * @param value\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"tension\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return SankeyLink;\r\n}(FlowDiagramLink));\r\nexport { SankeyLink };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"SankeyLink\"] = SankeyLink;\r\n//# sourceMappingURL=SankeyLink.js.map","/**\r\n * Sankey diagram module.\r\n */\r\nimport { __extends, __read, __spread } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { FlowDiagram, FlowDiagramDataItem } from \"./FlowDiagram\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { SankeyNode } from \"../elements/SankeyNode\";\r\nimport { SankeyLink } from \"../elements/SankeyLink\";\r\nimport { Animation } from \"../../core/utils/Animation\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $object from \"../../core/utils/Object\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n//@todo rearange notes after dragged\r\n/**\r\n * Defines a [[DataItem]] for [[SankeyDiagram]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar SankeyDiagramDataItem = /** @class */ (function (_super) {\r\n __extends(SankeyDiagramDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function SankeyDiagramDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"SankeyDiagramDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return SankeyDiagramDataItem;\r\n}(FlowDiagramDataItem));\r\nexport { SankeyDiagramDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a Sankey Diagram chart.\r\n *\r\n * @see {@link ISankeyDiagramEvents} for a list of available Events\r\n * @see {@link ISankeyDiagramAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/sankey-diagram/} for documentation\r\n * @important\r\n */\r\nvar SankeyDiagram = /** @class */ (function (_super) {\r\n __extends(SankeyDiagram, _super);\r\n /**\r\n * Constructor\r\n */\r\n function SankeyDiagram() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"SankeyDiagram\";\r\n _this.orientation = \"horizontal\";\r\n _this.nodeAlign = \"middle\";\r\n _this.nodesContainer.width = percent(100);\r\n _this.nodesContainer.height = percent(100);\r\n _this.linksContainer.width = percent(100);\r\n _this.linksContainer.height = percent(100);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * (Re)validates chart's data, effectively causing the chart to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n SankeyDiagram.prototype.validateData = function () {\r\n var _this = this;\r\n this._valueHeight = undefined;\r\n _super.prototype.validateData.call(this);\r\n this._levelCount = 0;\r\n this.nodes.each(function (key, node) {\r\n node.level = undefined;\r\n });\r\n this.nodes.each(function (key, node) {\r\n node.level = _this.getNodeLevel(node, 0);\r\n _this._levelCount = $math.max(_this._levelCount, node.level);\r\n });\r\n };\r\n /**\r\n * Returns node's highest level.\r\n *\r\n * @param node Node\r\n * @param level Current level\r\n * @return New level\r\n */\r\n SankeyDiagram.prototype.getNodeLevel = function (node, level) {\r\n var _this = this;\r\n var levels = [level];\r\n $iter.each(node.incomingDataItems.iterator(), function (link) {\r\n if (link.fromNode) {\r\n if ($type.isNumber(link.fromNode.level)) {\r\n levels.push(link.fromNode.level + 1);\r\n }\r\n else {\r\n _this._counter = 0;\r\n _this.checkLoop(link.fromNode);\r\n if (_this._counter < _this.dataItems.length) {\r\n levels.push(_this.getNodeLevel(link.fromNode, level + 1));\r\n }\r\n }\r\n }\r\n });\r\n return Math.max.apply(Math, __spread(levels));\r\n };\r\n /**\r\n * Checks if there's no loop in the ancestor chain.\r\n *\r\n * @param node Node\r\n */\r\n SankeyDiagram.prototype.checkLoop = function (node) {\r\n var _this = this;\r\n this._counter++;\r\n if (this._counter > this.dataItems.length) {\r\n return;\r\n }\r\n $iter.each(node.incomingDataItems.iterator(), function (link) {\r\n _this.checkLoop(link.fromNode);\r\n });\r\n };\r\n /**\r\n * Calculates relation between pixel height and total value.\r\n *\r\n * In Sankey the actual thickness of links and height of nodes will depend\r\n * on their values.\r\n */\r\n SankeyDiagram.prototype.calculateValueHeight = function () {\r\n var _this = this;\r\n // calculate sums of each level\r\n this._levelSum = {};\r\n this._levelNodesCount = {};\r\n this.maxSum = 0;\r\n var total = this.dataItem.values.value.sum;\r\n $iter.each(this._sorted, function (strNode) {\r\n var node = strNode[1];\r\n _this.getNodeValue(node);\r\n });\r\n this.nodes.each(function (key, node) {\r\n var level = node.level;\r\n var value = Math.max(node.totalIncoming, node.totalOutgoing);\r\n if (value / total < _this.minNodeSize) {\r\n value = total * _this.minNodeSize;\r\n }\r\n if ($type.isNumber(_this._levelSum[level])) {\r\n _this._levelSum[level] += value;\r\n }\r\n else {\r\n _this._levelSum[level] = value;\r\n }\r\n if ($type.isNumber(_this._levelNodesCount[level])) {\r\n _this._levelNodesCount[level]++;\r\n }\r\n else {\r\n _this._levelNodesCount[level] = 1;\r\n }\r\n });\r\n var availableHeight;\r\n if (this.orientation == \"horizontal\") {\r\n availableHeight = this.chartContainer.maxHeight - 1;\r\n }\r\n else {\r\n availableHeight = this.chartContainer.maxWidth - 1;\r\n }\r\n var maxSumLevel;\r\n var minHeight;\r\n $object.each(this._levelSum, function (key, value) {\r\n var realValue = value;\r\n var levelNodeCount = _this._levelNodesCount[key];\r\n var valueHeight = (availableHeight - (levelNodeCount - 1) * _this.nodePadding) / realValue;\r\n if (valueHeight == Infinity) {\r\n valueHeight = 0;\r\n }\r\n if (minHeight > valueHeight || !$type.isNumber(minHeight)) {\r\n minHeight = valueHeight;\r\n _this.maxSum = realValue;\r\n maxSumLevel = $type.toNumber(key);\r\n }\r\n });\r\n this._maxSumLevel = maxSumLevel;\r\n var maxSumLevelNodeCount = this._levelNodesCount[this._maxSumLevel];\r\n var valueHeight = (availableHeight - (maxSumLevelNodeCount - 1) * this.nodePadding) / this.maxSum;\r\n if (valueHeight == Infinity) {\r\n valueHeight = 0;\r\n }\r\n if (!$type.isNumber(this.valueHeight)) {\r\n this.valueHeight = valueHeight;\r\n }\r\n else {\r\n var finalHeight = void 0;\r\n try {\r\n finalHeight = this._heightAnimation.animationOptions[0].to;\r\n }\r\n catch (err) {\r\n }\r\n // without animations it will be non-smooth as maxValue jumps from one column to another\r\n if (finalHeight != valueHeight) {\r\n var duration = this.interpolationDuration;\r\n try {\r\n duration = this.nodes.template.states.getKey(\"active\").transitionDuration;\r\n }\r\n catch (err) {\r\n }\r\n this._heightAnimation = new Animation(this, { property: \"valueHeight\", from: this.valueHeight, to: valueHeight }, duration, this.interpolationEasing).start();\r\n this._disposers.push(this._heightAnimation);\r\n }\r\n }\r\n };\r\n /**\r\n * Redraws the chart.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n SankeyDiagram.prototype.validate = function () {\r\n var _this = this;\r\n _super.prototype.validate.call(this);\r\n this.calculateValueHeight();\r\n var container = this.nodesContainer;\r\n var nextCoordinate = {};\r\n var maxSumLevelNodeCount = this._levelNodesCount[this._maxSumLevel];\r\n var total = this.dataItem.values.value.sum;\r\n var availableHeight;\r\n if (this.orientation == \"horizontal\") {\r\n availableHeight = this.chartContainer.maxHeight - 1;\r\n }\r\n else {\r\n availableHeight = this.chartContainer.maxWidth - 1;\r\n }\r\n $iter.each(this._sorted, function (strNode) {\r\n var node = strNode[1];\r\n var level = node.level;\r\n var levelCoordinate = 0;\r\n var nodeCount = _this._levelNodesCount[level];\r\n switch (_this.nodeAlign) {\r\n case \"bottom\":\r\n levelCoordinate = (_this.maxSum - _this._levelSum[level]) * _this.valueHeight - (nodeCount - maxSumLevelNodeCount) * _this.nodePadding;\r\n break;\r\n case \"middle\":\r\n levelCoordinate = (_this.maxSum - _this._levelSum[level]) * _this.valueHeight / 2 - (nodeCount - maxSumLevelNodeCount) * _this.nodePadding / 2;\r\n break;\r\n }\r\n if (_this.maxSum == 0) {\r\n switch (_this.nodeAlign) {\r\n case \"bottom\":\r\n levelCoordinate = availableHeight - nodeCount * (_this.minNodeSize * availableHeight + _this.nodePadding);\r\n break;\r\n case \"middle\":\r\n levelCoordinate = availableHeight / 2 - nodeCount / 2 * (_this.minNodeSize * availableHeight + _this.nodePadding);\r\n break;\r\n }\r\n }\r\n node.parent = container;\r\n var delta;\r\n var x;\r\n var y;\r\n var value = Math.max(node.totalIncoming, node.totalOutgoing);\r\n if (value / total < _this.minNodeSize) {\r\n value = total * _this.minNodeSize;\r\n }\r\n if (_this.orientation == \"horizontal\") {\r\n delta = (_this.innerWidth - node.pixelWidth) / _this._levelCount;\r\n x = delta * node.level;\r\n y = nextCoordinate[level] || levelCoordinate;\r\n var h = value * _this.valueHeight;\r\n if (total == 0 && h == 0) {\r\n h = _this.minNodeSize * availableHeight;\r\n }\r\n node.height = h;\r\n node.minX = x;\r\n node.maxX = x;\r\n nextCoordinate[level] = y + h + _this.nodePadding;\r\n }\r\n else {\r\n delta = (_this.innerHeight - node.pixelHeight) / _this._levelCount;\r\n x = nextCoordinate[level] || levelCoordinate;\r\n y = delta * node.level;\r\n var w = value * _this.valueHeight;\r\n if (total == 0 && w == 0) {\r\n w = _this.minNodeSize * availableHeight;\r\n }\r\n node.width = w;\r\n node.minY = y;\r\n node.maxY = y;\r\n nextCoordinate[level] = x + w + _this.nodePadding;\r\n }\r\n node.x = x;\r\n node.y = y;\r\n });\r\n };\r\n /**\r\n * Performs actual operations to reveal this element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param duration Fade in duration (ms)\r\n * @return Fade in duration (ms)\r\n */\r\n SankeyDiagram.prototype.showReal = function (duration) {\r\n var _this = this;\r\n if (this.preventShow) {\r\n return;\r\n }\r\n if (this.interpolationDuration > 0) {\r\n var container_1 = this.nodesContainer;\r\n var i_1 = 0;\r\n $iter.each(this.links.iterator(), function (link) {\r\n link.hide(0);\r\n });\r\n $iter.each(this._sorted, function (strNode) {\r\n var node = strNode[1];\r\n var property;\r\n if (_this.orientation == \"horizontal\") {\r\n node.dx = -(container_1.pixelWidth - node.pixelWidth) / Math.max(_this._levelCount, 1);\r\n property = \"dx\";\r\n }\r\n else {\r\n node.dy = -(container_1.pixelHeight - node.pixelHeight) / Math.max(_this._levelCount, 1);\r\n property = \"dy\";\r\n }\r\n var delay = 0;\r\n var duration = _this.interpolationDuration;\r\n if (_this.sequencedInterpolation) {\r\n delay = _this.sequencedInterpolationDelay * i_1 + duration * i_1 / $iter.length(_this.nodes.iterator());\r\n }\r\n node.opacity = 0;\r\n node.invalidateLinks();\r\n node.animate([{ property: \"opacity\", from: 0, to: 1 }, { property: property, to: 0 }], _this.interpolationDuration, _this.interpolationEasing).delay(delay);\r\n $iter.each(node.outgoingDataItems.iterator(), function (dataItem) {\r\n var animation = dataItem.link.show(_this.interpolationDuration);\r\n if (animation && !animation.isFinished()) {\r\n animation.delay(delay);\r\n }\r\n });\r\n $iter.each(node.incomingDataItems.iterator(), function (dataItem) {\r\n if (!dataItem.fromNode) {\r\n var animation = dataItem.link.show(_this.interpolationDuration);\r\n if (animation && !animation.isFinished()) {\r\n animation.delay(delay);\r\n }\r\n }\r\n });\r\n i_1++;\r\n });\r\n }\r\n return _super.prototype.showReal.call(this);\r\n };\r\n /**\r\n * Changes the sort type of the nodes.\r\n *\r\n * This will actually reshuffle nodes using nice animation.\r\n */\r\n SankeyDiagram.prototype.changeSorting = function () {\r\n var _this = this;\r\n this.sortNodes();\r\n var nextCoordinate = {};\r\n $iter.each(this._sorted, function (strNode) {\r\n var node = strNode[1];\r\n var level = node.level;\r\n var levelCoordinate = (_this.maxSum - _this._levelSum[level]) * _this.valueHeight / 2;\r\n var property;\r\n var nodeHeight;\r\n if (_this.orientation == \"horizontal\") {\r\n property = \"y\";\r\n nodeHeight = node.pixelHeight;\r\n }\r\n else {\r\n property = \"x\";\r\n nodeHeight = node.pixelWidth;\r\n }\r\n node.animate({ property: property, to: nextCoordinate[level] || levelCoordinate }, _this.interpolationDuration, _this.interpolationEasing);\r\n nextCoordinate[level] = (nextCoordinate[level] || levelCoordinate) + nodeHeight + _this.nodePadding;\r\n node.invalidateLinks();\r\n });\r\n };\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n SankeyDiagram.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n // Add a default screen reader title for accessibility\r\n // This will be overridden in screen reader if there are any `titles` set\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Sankey diagram\");\r\n }\r\n };\r\n /**\r\n * Creates and returns a new data item.\r\n *\r\n * @return Data item\r\n */\r\n SankeyDiagram.prototype.createDataItem = function () {\r\n return new SankeyDiagramDataItem();\r\n };\r\n Object.defineProperty(SankeyDiagram.prototype, \"nodeAlign\", {\r\n /**\r\n * @returns Returns nodeAlign value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"nodeAlign\");\r\n },\r\n /**\r\n * How to align nodes. In case layout is vertical, top means left and bottom means right\r\n *\r\n * @param value Node sorting\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"nodeAlign\", value);\r\n this.changeSorting();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SankeyDiagram.prototype, \"orientation\", {\r\n /**\r\n * @return Orientation\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"orientation\");\r\n },\r\n /**\r\n * Orientation of the chart: \"horizontal\" or \"vertical\";\r\n *\r\n * @param value Orientation\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"orientation\", value, true);\r\n var nameLabel = this.nodes.template.nameLabel;\r\n if (value == \"vertical\") {\r\n this.nodes.template.width = undefined;\r\n nameLabel.label.horizontalCenter = \"middle\";\r\n nameLabel.locationX = 0.5;\r\n }\r\n else {\r\n this.nodes.template.height = undefined;\r\n nameLabel.label.horizontalCenter = \"left\";\r\n nameLabel.locationX = 1;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n SankeyDiagram.prototype.createNode = function () {\r\n var node = new SankeyNode();\r\n this._disposers.push(node);\r\n return node;\r\n };\r\n /**\r\n * @ignore\r\n */\r\n SankeyDiagram.prototype.createLink = function () {\r\n var link = new SankeyLink();\r\n this._disposers.push(link);\r\n return link;\r\n };\r\n Object.defineProperty(SankeyDiagram.prototype, \"valueHeight\", {\r\n /**\r\n * @ignore\r\n */\r\n get: function () {\r\n return this._valueHeight;\r\n },\r\n /**\r\n * @ignore\r\n */\r\n set: function (value) {\r\n if (value != this._valueHeight) {\r\n this._valueHeight = value;\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n SankeyDiagram.prototype.disposeData = function () {\r\n _super.prototype.disposeData.call(this);\r\n this._sorted = this.nodes.iterator();\r\n };\r\n return SankeyDiagram;\r\n}(FlowDiagram));\r\nexport { SankeyDiagram };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"SankeyDiagram\"] = SankeyDiagram;\r\n//# sourceMappingURL=SankeyDiagram.js.map","/**\r\n * ChordNode module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { FlowDiagramNode } from \"./FlowDiagramNode\";\r\nimport { AxisLabelCircular } from \"../axes/AxisLabelCircular\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { Slice } from \"../../core/elements/Slice\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { Bullet } from \"../elements/Bullet\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a node in a Chord Diagram.\r\n *\r\n * A Chord node is a block with a value, which represents its size on the\r\n * diagram.\r\n *\r\n * Nodes are connected via [[ChordLink]] elements.\r\n *\r\n * @see {@link IChordNodeEvents} for a list of available events\r\n * @see {@link IChordNodeAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar ChordNode = /** @class */ (function (_super) {\r\n __extends(ChordNode, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ChordNode() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ChordNode\";\r\n var label = _this.createChild(AxisLabelCircular);\r\n label.location = 0.5;\r\n label.radius = 5;\r\n label.text = \"{name}\";\r\n label.zIndex = 1;\r\n label.shouldClone = false;\r\n _this.label = label;\r\n _this.layout = \"none\";\r\n _this.events.on(\"positionchanged\", _this.updateRotation, _this, false);\r\n _this.isMeasured = false;\r\n _this.slice = _this.createChild(Slice);\r\n _this.slice.isMeasured = false;\r\n var hiddenState = _this.hiddenState;\r\n hiddenState.properties.fill = new InterfaceColorSet().getFor(\"disabledBackground\");\r\n hiddenState.properties.opacity = 0.5;\r\n hiddenState.properties.visible = true;\r\n _this.setStateOnChildren = false;\r\n _this.slice.hiddenState.properties.visible = true;\r\n _this.adapter.add(\"tooltipX\", function (tooltipX, target) {\r\n return target.slice.ix * (target.slice.radius - (target.slice.radius - target.slice.pixelInnerRadius) / 2);\r\n });\r\n _this.adapter.add(\"tooltipY\", function (tooltipY, target) {\r\n return target.slice.iy * (target.slice.radius - (target.slice.radius - target.slice.pixelInnerRadius) / 2);\r\n });\r\n return _this;\r\n }\r\n /**\r\n * Invalidates all links, attached to this node.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ChordNode.prototype.invalidateLinks = function () {\r\n var _this = this;\r\n _super.prototype.invalidateLinks.call(this);\r\n var label = this.label;\r\n var slice = this.slice;\r\n var chart = this.chart;\r\n if (chart && slice) {\r\n var sum = this.total;\r\n var arc_1 = slice.arc;\r\n var sliceStartAngle_1 = slice.startAngle;\r\n this.children.each(function (child) {\r\n if (child instanceof Bullet) {\r\n var locationX = child.locationX;\r\n if (!$type.isNumber(locationX)) {\r\n locationX = 0.5;\r\n }\r\n var locationY = child.locationY;\r\n if (!$type.isNumber(locationY)) {\r\n locationY = 1;\r\n }\r\n var childAngle = sliceStartAngle_1 + arc_1 * locationX;\r\n var childRadius = locationY * slice.radius;\r\n child.x = childRadius * $math.cos(childAngle);\r\n child.y = childRadius * $math.sin(childAngle);\r\n }\r\n });\r\n var labelAngle = sliceStartAngle_1 + arc_1 * label.location;\r\n var startAngle = sliceStartAngle_1 + (1 - sum / this.adjustedTotal) * arc_1 * 0.5; // if value of a node is > then sum of the links, add to center link\r\n if ($type.isNaN(startAngle)) {\r\n startAngle = sliceStartAngle_1;\r\n }\r\n label.fixPosition(labelAngle, slice.radius);\r\n this.nextAngle = startAngle;\r\n if (this._outgoingSorted) {\r\n $iter.each(this._outgoingSorted, function (dataItem) {\r\n var link = dataItem.link;\r\n link.parent = _this.chart.linksContainer;\r\n var value = dataItem.getWorkingValue(\"value\");\r\n if ($type.isNumber(value)) {\r\n if (chart.nonRibbon) {\r\n var percentWidth = link.percentWidth;\r\n if (!$type.isNumber(percentWidth)) {\r\n percentWidth = 5;\r\n }\r\n percentWidth = percentWidth / 100;\r\n link.startAngle = sliceStartAngle_1 + arc_1 / 2 - arc_1 / 2 * percentWidth;\r\n link.arc = arc_1 * percentWidth;\r\n }\r\n else {\r\n link.arc = value * chart.valueAngle;\r\n link.startAngle = _this.nextAngle;\r\n _this.nextAngle += link.arc;\r\n }\r\n if (!dataItem.toNode) {\r\n link.endAngle = link.startAngle;\r\n }\r\n link.radius = slice.pixelInnerRadius;\r\n }\r\n //link.validate();\r\n });\r\n }\r\n if (this._incomingSorted) {\r\n $iter.each(this._incomingSorted, function (dataItem) {\r\n var link = dataItem.link;\r\n link.radius = slice.pixelInnerRadius;\r\n if (chart.nonRibbon) {\r\n var percentWidth = link.percentWidth;\r\n if (!$type.isNumber(percentWidth)) {\r\n percentWidth = 5;\r\n }\r\n percentWidth = percentWidth / 100;\r\n link.endAngle = sliceStartAngle_1 + arc_1 / 2 - arc_1 / 2 * percentWidth;\r\n link.arc = arc_1 * percentWidth;\r\n }\r\n else {\r\n link.endAngle = _this.nextAngle;\r\n var value = dataItem.getWorkingValue(\"value\");\r\n if ($type.isNumber(value)) {\r\n link.arc = value * chart.valueAngle; // yes, this is needed\r\n _this.nextAngle += link.arc;\r\n }\r\n }\r\n if (!dataItem.fromNode) {\r\n link.startAngle = link.endAngle;\r\n }\r\n //link.validate();\r\n });\r\n }\r\n }\r\n };\r\n /**\r\n * @ignore\r\n * updates slice start angle so that when we drag a node it would face the center\r\n */\r\n ChordNode.prototype.updateRotation = function () {\r\n var slice = this.slice;\r\n var mAngle = this.trueStartAngle + slice.arc / 2;\r\n var radius = slice.radius;\r\n var tx = radius * $math.cos(mAngle);\r\n var ty = radius * $math.sin(mAngle);\r\n var angle = $math.getAngle({ x: tx + this.pixelX, y: ty + this.pixelY });\r\n slice.startAngle = this.trueStartAngle + (angle - mAngle);\r\n this.dx = -this.pixelX;\r\n this.dy = -this.pixelY;\r\n };\r\n /**\r\n * Copies properties and labels from another [[ChordNode]].\r\n *\r\n * @param source Source node\r\n */\r\n ChordNode.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.label.copyFrom(source.label);\r\n this.slice.copyFrom(source.slice);\r\n };\r\n return ChordNode;\r\n}(FlowDiagramNode));\r\nexport { ChordNode };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ChordNode\"] = ChordNode;\r\n//# sourceMappingURL=ChordNode.js.map","/**\r\n * Functionality for drawing quadratic curves.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Line } from \"./Line\";\r\nimport { color } from \"../utils/Color\";\r\nimport * as $path from \"../rendering/Path\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $type from \"../utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws a waved line.\r\n *\r\n * @see {@link IQuadraticCurveEvents} for a list of available events\r\n * @see {@link IQuadraticCurveAdapters} for a list of available Adapters\r\n */\r\nvar QuadraticCurve = /** @class */ (function (_super) {\r\n __extends(QuadraticCurve, _super);\r\n /**\r\n * Constructor\r\n */\r\n function QuadraticCurve() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"QuadraticCurve\";\r\n _this.element = _this.paper.add(\"path\");\r\n _this.pixelPerfect = false;\r\n _this.fill = color();\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the waved line.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n QuadraticCurve.prototype.draw = function () {\r\n //super.draw();\r\n if ($type.isNumber(this.x1 + this.x2 + this.y1 + this.y2 + this.cpx + this.cpy)) {\r\n var p1 = { x: this.x1, y: this.y1 };\r\n var p2 = { x: this.x2, y: this.y2 };\r\n var cp = { x: this.cpx, y: this.cpy };\r\n var d = $path.moveTo(p1) + $path.quadraticCurveTo(p2, cp);\r\n this.path = d;\r\n }\r\n };\r\n Object.defineProperty(QuadraticCurve.prototype, \"cpx\", {\r\n /**\r\n * @return X\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"cpx\");\r\n },\r\n /**\r\n * X coordinate of control point.\r\n *\r\n * @param value X\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"cpx\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(QuadraticCurve.prototype, \"cpy\", {\r\n /**\r\n * @return Y\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"cpy\");\r\n },\r\n /**\r\n * Y coordinate of control point.\r\n *\r\n * @param value Y\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"cpy\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts relative position along the line (0-1) into pixel coordinates.\r\n *\r\n * @param position Position (0-1)\r\n * @return Coordinates\r\n */\r\n QuadraticCurve.prototype.positionToPoint = function (position) {\r\n var p1 = { x: this.x1, y: this.y1 };\r\n var cp = { x: this.cpx, y: this.cpy };\r\n var p2 = { x: this.x2, y: this.y2 };\r\n var point1 = $math.getPointOnQuadraticCurve(p1, p2, cp, position);\r\n var point2 = $math.getPointOnQuadraticCurve(p1, p2, cp, position + 0.001);\r\n return { x: point1.x, y: point1.y, angle: $math.getAngle(point1, point2) };\r\n };\r\n return QuadraticCurve;\r\n}(Line));\r\nexport { QuadraticCurve };\r\n//# sourceMappingURL=QuadraticCurve.js.map","/**\r\n * ChordLink module\r\n */\r\nimport { __extends } from \"tslib\";\r\nimport { FlowDiagramLink } from \"./FlowDiagramLink\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { QuadraticCurve } from \"../../core/elements/QuadraticCurve\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * This class creates a link (waved color-filled line) between two nodes in a\r\n * Chord Diagram.\r\n *\r\n * @see {@link IChordLinkEvents} for a list of available events\r\n * @see {@link IChordLinkAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar ChordLink = /** @class */ (function (_super) {\r\n __extends(ChordLink, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ChordLink() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ChordLink\";\r\n _this.middleLine = _this.createChild(QuadraticCurve);\r\n _this.middleLine.shouldClone = false;\r\n _this.middleLine.strokeOpacity = 0;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * (Re)validates (redraws) the link.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ChordLink.prototype.validate = function () {\r\n _super.prototype.validate.call(this);\r\n if (!this.isTemplate) {\r\n var startAngle = this.startAngle;\r\n var endAngle = this.endAngle;\r\n var arc = this.arc;\r\n var radius = this.radius;\r\n var fromNode = this.dataItem.fromNode;\r\n var toNode = this.dataItem.toNode;\r\n var fromX = 0;\r\n var fromY = 0;\r\n if (fromNode) {\r\n fromX = fromNode.pixelX + fromNode.dx;\r\n fromY = fromNode.pixelY + fromNode.dy;\r\n }\r\n var toX = 0;\r\n var toY = 0;\r\n if (toNode) {\r\n toX = toNode.pixelX + toNode.dx;\r\n toY = toNode.pixelY + toNode.dy;\r\n }\r\n if (radius > 0) {\r\n var x1 = radius * $math.cos(startAngle) + fromX;\r\n var y1 = radius * $math.sin(startAngle) + fromY;\r\n var x2 = radius * $math.cos(endAngle) + toX;\r\n var y2 = radius * $math.sin(endAngle) + toY;\r\n //let cpAngle = startAngle + arc + (endAngle - startAngle - arc) / 2;\r\n //let arcWidth = $math.getDistance({x:x1, y:y1}, {x:x4, y:y4});\r\n //let cpx = (arcWidth) * $math.cos(cpAngle);\r\n //let cpy = (arcWidth) * $math.sin(cpAngle);\r\n var cp = { x: 0, y: 0 };\r\n var path = $path.moveTo({ x: x1, y: y1 });\r\n path += $path.arcTo(startAngle, arc, radius);\r\n path += $path.quadraticCurveTo({ x: x2, y: y2 }, cp);\r\n path += $path.arcTo(endAngle, arc, radius);\r\n path += $path.quadraticCurveTo({ x: x1, y: y1 }, cp);\r\n if (arc > 0) {\r\n this.link.path = path;\r\n }\r\n else {\r\n this.link.path = \"\";\r\n }\r\n if (this.maskBullets) {\r\n this.bulletsMask.path = path;\r\n this.bulletsContainer.mask = this.bulletsMask;\r\n }\r\n var mAngle1 = startAngle + arc / 2;\r\n var mAngle2 = endAngle + arc / 2;\r\n var middleLine = this.middleLine;\r\n middleLine.x1 = radius * $math.cos(mAngle1) + fromX;\r\n middleLine.y1 = radius * $math.sin(mAngle1) + fromY;\r\n middleLine.x2 = radius * $math.cos(mAngle2) + toX;\r\n middleLine.y2 = radius * $math.sin(mAngle2) + toY;\r\n middleLine.cpx = 0;\r\n middleLine.cpy = 0;\r\n middleLine.stroke = this.fill;\r\n this.positionBullets();\r\n }\r\n }\r\n };\r\n Object.defineProperty(ChordLink.prototype, \"radius\", {\r\n /**\r\n * @return End Y\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"radius\");\r\n },\r\n /**\r\n * [radius description]\r\n *\r\n * @todo Description\r\n * @param value End Y\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"radius\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ChordLink.prototype, \"arc\", {\r\n /**\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"arc\");\r\n },\r\n /**\r\n * [arc description]\r\n *\r\n * @todo Description\r\n * @param value [description]\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"arc\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ChordLink;\r\n}(FlowDiagramLink));\r\nexport { ChordLink };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ChordLink\"] = ChordLink;\r\n//# sourceMappingURL=ChordLink.js.map","/**\r\n * Chord diagram module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { FlowDiagram, FlowDiagramDataItem } from \"./FlowDiagram\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { ChordNode } from \"../elements/ChordNode\";\r\nimport { ChordLink } from \"../elements/ChordLink\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n//@todo rearange notes after dragged\r\n/**\r\n * Defines a [[DataItem]] for [[ChordDiagram]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar ChordDiagramDataItem = /** @class */ (function (_super) {\r\n __extends(ChordDiagramDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ChordDiagramDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ChordDiagramDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return ChordDiagramDataItem;\r\n}(FlowDiagramDataItem));\r\nexport { ChordDiagramDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a Chord Diagram chart.\r\n *\r\n * @see {@link IChordDiagramEvents} for a list of available Events\r\n * @see {@link IChordDiagramAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/chord-diagram/} for documentation\r\n * @important\r\n */\r\nvar ChordDiagram = /** @class */ (function (_super) {\r\n __extends(ChordDiagram, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ChordDiagram() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * [valueAngle description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n _this.valueAngle = 0;\r\n _this.className = \"ChordDiagram\";\r\n _this.startAngle = -90;\r\n _this.endAngle = 270;\r\n _this.radius = percent(80);\r\n _this.innerRadius = -15;\r\n _this.nodePadding = 5;\r\n var chordContainer = _this.chartContainer.createChild(Container);\r\n chordContainer.align = \"center\";\r\n chordContainer.valign = \"middle\";\r\n chordContainer.shouldClone = false;\r\n chordContainer.layout = \"absolute\";\r\n _this.chordContainer = chordContainer;\r\n _this.nodesContainer.parent = chordContainer;\r\n _this.linksContainer.parent = chordContainer;\r\n _this.chartContainer.events.on(\"maxsizechanged\", _this.invalidate, _this, false);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Redraws the chart.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ChordDiagram.prototype.validate = function () {\r\n var _this = this;\r\n var chartContainer = this.chartContainer;\r\n var endAngle = this.endAngle;\r\n var startAngle = this.startAngle + this.nodePadding / 2;\r\n var rect = $math.getArcRect(this.startAngle, this.endAngle, 1);\r\n var innerRect = { x: 0, y: 0, width: 0, height: 0 };\r\n rect = $math.getCommonRectangle([rect, innerRect]);\r\n var maxRadius = Math.min(chartContainer.innerWidth / rect.width, chartContainer.innerHeight / rect.height);\r\n if (!$type.isNumber(maxRadius)) {\r\n maxRadius = 0;\r\n }\r\n var radius = $utils.relativeRadiusToValue(this.radius, maxRadius);\r\n var pixelInnerRadius = $utils.relativeRadiusToValue(this.innerRadius, radius, true);\r\n var total = this.dataItem.values.value.sum;\r\n var count = 0;\r\n var newTotal = 0;\r\n $iter.each(this._sorted, function (strNode) {\r\n var node = strNode[1];\r\n _this.getNodeValue(node);\r\n count++;\r\n var value = node.total;\r\n if (node.total / total < _this.minNodeSize) {\r\n value = total * _this.minNodeSize;\r\n }\r\n newTotal += value;\r\n });\r\n this.valueAngle = (endAngle - this.startAngle - this.nodePadding * count) / newTotal;\r\n $iter.each(this._sorted, function (strNode) {\r\n var node = strNode[1];\r\n var slice = node.slice;\r\n slice.radius = radius;\r\n slice.innerRadius = pixelInnerRadius;\r\n var value = node.total;\r\n if (node.total / total < _this.minNodeSize) {\r\n value = total * _this.minNodeSize;\r\n }\r\n node.adjustedTotal = value;\r\n var arc;\r\n if (_this.nonRibbon) {\r\n arc = (endAngle - _this.startAngle) / count - _this.nodePadding;\r\n }\r\n else {\r\n arc = _this.valueAngle * value;\r\n }\r\n slice.arc = arc;\r\n slice.startAngle = startAngle;\r\n node.trueStartAngle = startAngle;\r\n node.parent = _this.nodesContainer;\r\n node.validate(); // otherwise flickers - nodes are already created, but not yet positioned etc.\r\n startAngle += arc + _this.nodePadding;\r\n });\r\n this.chordContainer.definedBBox = { x: radius * rect.x, y: radius * rect.y, width: radius * rect.width, height: radius * rect.height };\r\n this.chordContainer.invalidateLayout();\r\n _super.prototype.validate.call(this);\r\n };\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n ChordDiagram.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n // Add a default screen reader title for accessibility\r\n // This will be overridden in screen reader if there are any `titles` set\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Chord diagram\");\r\n }\r\n };\r\n /**\r\n * Creates and returns a new data item.\r\n *\r\n * @return Data item\r\n */\r\n ChordDiagram.prototype.createDataItem = function () {\r\n return new ChordDiagramDataItem();\r\n };\r\n Object.defineProperty(ChordDiagram.prototype, \"startAngle\", {\r\n /**\r\n * @return Start angle (degrees)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startAngle\");\r\n },\r\n /**\r\n * Starting angle of the Radar face. (degrees)\r\n *\r\n * Normally, a circular radar face begins (the radial axis is drawn) at the\r\n * top center. (at -90 degrees)\r\n *\r\n * You can use `startAngle` to change this setting.\r\n *\r\n * E.g. setting this to 0 will make the radial axis start horizontally to\r\n * the right, as opposed to vertical.\r\n *\r\n * For a perfect circle the absolute sum of `startAngle` and `endAngle`\r\n * needs to be 360.\r\n *\r\n * However, it's **not** necessary to do so. You can set those to lesser\r\n * numbers, to create semi-circles.\r\n *\r\n * E.g. `startAngle = -90` with `endAngle = 0` will create a radar face that\r\n * looks like a quarter of a circle.\r\n *\r\n * @default -90\r\n * @param value Start angle (degrees)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"startAngle\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ChordDiagram.prototype, \"endAngle\", {\r\n /**\r\n * @return End angle (degrees)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endAngle\");\r\n },\r\n /**\r\n * Starting angle of the Radar face. (degrees)\r\n *\r\n * Normally, a circular radar face ends (the radial axis is drawn) exactly\r\n * where it has started, forming a full 360 circle. (at 270 degrees)\r\n *\r\n * You can use `endAngle` to end the circle somewhere else.\r\n *\r\n * E.g. setting this to 180 will make the radar face end at horizontal line\r\n * to the left off the center.\r\n *\r\n * For a perfect circle the absolute sum of `startAngle` and `endAngle`\r\n * needs to be 360.\r\n *\r\n * However, it's **not** necessary to do so. You can set those to lesser\r\n * numbers, to create semi-circles.\r\n *\r\n * E.g. `startAngle = -90` with `endAngle = 0` will create a radar face that\r\n * looks like a quarter of a circle.\r\n *\r\n * @default -90\r\n * @param value End angle (degrees)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"endAngle\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ChordDiagram.prototype, \"radius\", {\r\n /**\r\n * @return Outer radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"radius\");\r\n },\r\n /**\r\n * Outer radius of the Radar face.\r\n *\r\n * This can either be in absolute pixel value, or relative [[Percent]].\r\n *\r\n * @param value Outer radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"radius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ChordDiagram.prototype, \"innerRadius\", {\r\n /**\r\n * @return Inner radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"innerRadius\");\r\n },\r\n /**\r\n * Inner radius of the Chord nodes.\r\n *\r\n * This can either be in absolute pixel value, or relative [[Percent]].\r\n *\r\n * @param value Outer radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ChordDiagram.prototype, \"nonRibbon\", {\r\n /**\r\n * @return Non-ribbon\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"nonRibbon\");\r\n },\r\n /**\r\n *\r\n * If you set this to true, all the lines will be of the same width. This is done by making middleLine of a ChordLink visible.\r\n *\r\n * @param value\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"nonRibbon\", value, true);\r\n this.links.template.middleLine.strokeOpacity = 1;\r\n this.links.template.link.fillOpacity = 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n ChordDiagram.prototype.createNode = function () {\r\n var node = new ChordNode();\r\n this._disposers.push(node);\r\n return node;\r\n };\r\n /**\r\n * @ignore\r\n */\r\n ChordDiagram.prototype.createLink = function () {\r\n var link = new ChordLink();\r\n this._disposers.push(link);\r\n return link;\r\n };\r\n return ChordDiagram;\r\n}(FlowDiagram));\r\nexport { ChordDiagram };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ChordDiagram\"] = ChordDiagram;\r\n//# sourceMappingURL=ChordDiagram.js.map","/**\r\n * Module that defines everything related to building Columns.\r\n * It is a container which has column element which is a RoundedRectangle.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../../core/Container\";\r\nimport { RoundedRectangle } from \"../../core/elements/RoundedRectangle\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport * as $math from \"../../core/utils/Math\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Class used to creates Columns.\r\n *\r\n * @see {@link IColumnEvents} for a list of available events\r\n * @see {@link IColumnAdapters} for a list of available Adapters\r\n * @todo Usage example\r\n * @important\r\n */\r\nvar Column = /** @class */ (function (_super) {\r\n __extends(Column, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Column() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Column\";\r\n _this.width = percent(80);\r\n _this.height = percent(80);\r\n //this.isMeasured = true; // for correct position of the tooltip\r\n _this.events.disableType(\"transformed\"); // not to bug parent\r\n _this.applyOnClones = true;\r\n _this.strokeOpacity = 1;\r\n _this.layout = \"none\";\r\n _this.createAssets();\r\n // otherwise users will have to set layout themselves if they'll want to align, scale etc children\r\n _this.events.on(\"childadded\", _this.handleKidAdded, _this, false);\r\n return _this;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n Column.prototype.handleKidAdded = function () {\r\n if (this.layout == \"none\") {\r\n this.layout = \"absolute\";\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Column.prototype.createAssets = function () {\r\n this.column = this.createChild(RoundedRectangle);\r\n this.column.shouldClone = false;\r\n this.column.isMeasured = false;\r\n this.column.cornerRadius(0, 0, 0, 0);\r\n this._disposers.push(this.column);\r\n };\r\n /**\r\n * @ignore Exclude from docs\r\n */\r\n Column.prototype.validate = function () {\r\n _super.prototype.validate.call(this);\r\n var column = this.column;\r\n if (column) {\r\n column.width = $math.min(this.pixelWidth, this.maxWidth);\r\n column.height = $math.min(this.pixelHeight, this.maxHeight);\r\n if (column.invalid) {\r\n column.validate(); // important!\r\n }\r\n }\r\n };\r\n /**\r\n * Copies all parameters from another [[Column]].\r\n *\r\n * @param source Source Column\r\n */\r\n Column.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n if (this.column) {\r\n this.column.copyFrom(source.column);\r\n }\r\n };\r\n Object.defineProperty(Column.prototype, \"bbox\", {\r\n /**\r\n * Returns bounding box (square) for this element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n get: function () {\r\n if (this.definedBBox) {\r\n return this.definedBBox;\r\n }\r\n if (this.column) {\r\n return { x: 0, y: 0, width: this.column.measuredWidth, height: this.column.measuredHeight };\r\n }\r\n else {\r\n return { x: 0, y: 0, width: $math.min(this.pixelWidth, this.maxWidth), height: $math.min(this.pixelHeight, this.maxHeight) };\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Column;\r\n}(Container));\r\nexport { Column };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Column\"] = Column;\r\n//# sourceMappingURL=Column.js.map","/**\r\n * Column series module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { XYSeries, XYSeriesDataItem } from \"./XYSeries\";\r\nimport { visualProperties } from \"../../core/Sprite\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { Dictionary } from \"../../core/utils/Dictionary\";\r\nimport { ValueAxis } from \"../axes/ValueAxis\";\r\nimport { CategoryAxis } from \"../axes/CategoryAxis\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { Column } from \"../elements/Column\";\r\nimport { RoundedRectangle } from \"../../core/elements/RoundedRectangle\";\r\nimport { percent, Percent } from \"../../core/utils/Percent\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $object from \"../../core/utils/Object\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { Disposer } from \"../../core/utils/Disposer\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[ColumnSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar ColumnSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(ColumnSeriesDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ColumnSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ColumnSeriesDataItem\";\r\n _this.locations[\"dateX\"] = 0.5;\r\n _this.locations[\"dateY\"] = 0.5;\r\n _this.locations[\"categoryX\"] = 0.5;\r\n _this.locations[\"categoryY\"] = 0.5;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(ColumnSeriesDataItem.prototype, \"column\", {\r\n /**\r\n * @return Column\r\n */\r\n get: function () {\r\n return this._column;\r\n },\r\n /**\r\n * A column used to draw a column for this data item.\r\n *\r\n * @param column\r\n */\r\n set: function (column) {\r\n this.setColumn(column);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ColumnSeriesDataItem.prototype.setColumn = function (column) {\r\n var _this = this;\r\n if (this._column && column != this._column) {\r\n $array.remove(this.sprites, this._column);\r\n }\r\n this._column = column;\r\n if (column) {\r\n var prevDataItem = column.dataItem;\r\n if (prevDataItem && prevDataItem != this) {\r\n prevDataItem.column = undefined;\r\n }\r\n this.addSprite(column);\r\n this._disposers.push(new Disposer(function () {\r\n // TODO investigate why component is undefined\r\n // https://codepen.io/team/amcharts/pen/dac4be245d658233a6d7e5597df2208b?editors=0010\r\n if (_this.component) {\r\n _this.component.columns.removeValue(column);\r\n }\r\n }));\r\n }\r\n };\r\n Object.defineProperty(ColumnSeriesDataItem.prototype, \"width\", {\r\n get: function () {\r\n var width = this.properties.width;\r\n if (this._adapterO) {\r\n width = this._adapterO.apply(\"width\", width);\r\n }\r\n return width;\r\n },\r\n set: function (value) {\r\n if (this.properties.width != value) {\r\n this.properties.width = value;\r\n if (this.component) {\r\n this.component.validateDataElement(this);\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ColumnSeriesDataItem.prototype, \"height\", {\r\n get: function () {\r\n var height = this.properties.height;\r\n if (this._adapterO) {\r\n height = this._adapterO.apply(\"height\", height);\r\n }\r\n return height;\r\n },\r\n set: function (value) {\r\n if (this.properties.height != value) {\r\n this.properties.height = value;\r\n if (this.component) {\r\n this.component.validateDataElement(this);\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ColumnSeriesDataItem.prototype, \"rangesColumns\", {\r\n /**\r\n * A dictionary storing axes ranges columns by axis uid\r\n */\r\n get: function () {\r\n if (!this._rangesColumns) {\r\n this._rangesColumns = new Dictionary();\r\n }\r\n return this._rangesColumns;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ColumnSeriesDataItem;\r\n}(XYSeriesDataItem));\r\nexport { ColumnSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[Series]] for a column graph.\r\n *\r\n * @see {@link IColumnSeriesEvents} for a list of available Events\r\n * @see {@link IColumnSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\r\nvar ColumnSeries = /** @class */ (function (_super) {\r\n __extends(ColumnSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ColumnSeries() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Start location within cell for columns.\r\n */\r\n _this._startLocation = 0;\r\n /**\r\n * End location within cell for columns.\r\n */\r\n _this._endLocation = 1;\r\n _this.className = \"ColumnSeries\";\r\n _this.width = percent(100);\r\n _this.height = percent(100);\r\n _this.strokeOpacity = 0;\r\n _this.fillOpacity = 1;\r\n _this.clustered = true;\r\n var columnsContainer = _this.mainContainer.createChild(Container);\r\n columnsContainer.shouldClone = false;\r\n columnsContainer.isMeasured = false;\r\n columnsContainer.layout = \"none\";\r\n _this._columnsContainer = columnsContainer;\r\n _this.columns.template.pixelPerfect = false;\r\n _this.tooltipColorSource = _this.columns.template;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(ColumnSeries.prototype, \"columnsContainer\", {\r\n /**\r\n * A container that columns are created in.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n get: function () {\r\n return this._columnsContainer;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n ColumnSeries.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Column Series\");\r\n }\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n ColumnSeries.prototype.createDataItem = function () {\r\n return new ColumnSeriesDataItem();\r\n };\r\n /**\r\n * (Re)validates the whole series, effectively causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ColumnSeries.prototype.validate = function () {\r\n //@todo Check if we can do better than use `instanceof`\r\n // find start/end locations based on clustered/stacked settings\r\n // go through chart series instead of base axis series, because axis series doesn't maintain order\r\n var _this = this;\r\n this.group.node.removeAttribute(\"fill\");\r\n if (this.chart && this.xAxis && this.yAxis) {\r\n var baseAxisSeries = this.chart.series;\r\n var clusterCount_1 = 0;\r\n var index_1 = 0;\r\n var sortedByAxis_1 = [];\r\n $iter.each(baseAxisSeries.iterator(), function (series) {\r\n if (series instanceof ColumnSeries) {\r\n if (_this.baseAxis == series.baseAxis) {\r\n var index_2;\r\n if (_this.baseAxis == _this.xAxis) {\r\n index_2 = _this.chart.yAxes.indexOf(series.yAxis);\r\n }\r\n else {\r\n index_2 = _this.chart.xAxes.indexOf(series.xAxis);\r\n }\r\n sortedByAxis_1.push({ series: series, axis: index_2 });\r\n }\r\n }\r\n });\r\n sortedByAxis_1.sort(function (a, b) { return a.axis - b.axis; });\r\n var prevAxisIndex_1;\r\n $array.each(sortedByAxis_1, function (sortedItem) {\r\n var series = sortedItem.series;\r\n if (series instanceof ColumnSeries) {\r\n if ((!series.stacked && series.clustered) || (prevAxisIndex_1 != sortedItem.axis && series.clustered)) {\r\n clusterCount_1++;\r\n }\r\n if (series == _this) {\r\n index_1 = clusterCount_1 - 1;\r\n }\r\n }\r\n prevAxisIndex_1 = sortedItem.axis;\r\n });\r\n if (!this.clustered) {\r\n index_1 = 0;\r\n clusterCount_1 = 1;\r\n }\r\n var renderer = this.baseAxis.renderer;\r\n var cellStartLocation = renderer.cellStartLocation;\r\n var cellEndLocation = renderer.cellEndLocation;\r\n this._startLocation = cellStartLocation + (index_1 / clusterCount_1) * (cellEndLocation - cellStartLocation);\r\n this._endLocation = cellStartLocation + (index_1 + 1) / clusterCount_1 * (cellEndLocation - cellStartLocation);\r\n var xAxis = this.xAxis;\r\n var yAxis = this.yAxis;\r\n if (xAxis instanceof CategoryAxis && yAxis instanceof ValueAxis) {\r\n if (xAxis.sortBySeries == this) {\r\n this.sortCategoryAxis(xAxis, \"valueY\");\r\n }\r\n }\r\n if (yAxis instanceof CategoryAxis && xAxis instanceof ValueAxis) {\r\n if (yAxis.sortBySeries == this) {\r\n this.sortCategoryAxis(yAxis, \"valueX\");\r\n }\r\n }\r\n }\r\n _super.prototype.validate.call(this);\r\n for (var i = 0; i < this.startIndex; i++) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n this.disableUnusedColumns(dataItem);\r\n }\r\n for (var i = this.dataItems.length - 1; i > this.endIndex; i--) {\r\n var dataItem = this.dataItems.getIndex(i);\r\n this.disableUnusedColumns(dataItem);\r\n }\r\n this._propertiesChanged = false;\r\n };\r\n ColumnSeries.prototype.sortCategoryAxis = function (axis, key) {\r\n var _this = this;\r\n this.dataItems.values.sort(function (x, y) {\r\n return y.values[key].workingValue - x.values[key].workingValue;\r\n });\r\n var i = 0;\r\n this.dataItems.each(function (dataItem) {\r\n dataItem._index = i;\r\n i++;\r\n });\r\n axis.dataItems.each(function (dataItem) {\r\n var axis = dataItem.component;\r\n var currentPosition = axis.categoryToPosition(dataItem.category) - dataItem.deltaPosition;\r\n var seriesDataItem = axis.getSeriesDataItemByCategory(dataItem.category, _this);\r\n if (seriesDataItem) {\r\n var index = _this.dataItems.indexOf(seriesDataItem);\r\n dataItem._index = index;\r\n var deltaPosition = $math.round((index + 0.5) / _this.dataItems.length - currentPosition, 3);\r\n if (dataItem.deltaAnimation && !dataItem.deltaAnimation.isDisposed() && dataItem.deltaAnimation.animationOptions[0].to == deltaPosition) {\r\n // void\r\n }\r\n else if (deltaPosition != $math.round(dataItem.deltaPosition, 3)) {\r\n if (dataItem.deltaAnimation) {\r\n dataItem.deltaAnimation.stop();\r\n }\r\n dataItem.deltaAnimation = dataItem.animate({ property: \"deltaPosition\", from: -deltaPosition, to: 0 }, axis.interpolationDuration, axis.interpolationEasing);\r\n _this._disposers.push(dataItem.deltaAnimation);\r\n }\r\n }\r\n });\r\n axis.dataItems.values.sort(function (x, y) {\r\n return x.index - y.index;\r\n });\r\n };\r\n /**\r\n * Validates data item's element, effectively redrawing it.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n ColumnSeries.prototype.validateDataElement = function (dataItem) {\r\n // important oder here, first real, then super. we need this to know size\r\n if (this.chart && this.xAxis && this.yAxis) {\r\n this.validateDataElementReal(dataItem);\r\n _super.prototype.validateDataElement.call(this, dataItem);\r\n }\r\n };\r\n /**\r\n * Returns relative start location for the data item.\r\n *\r\n * @param dataItem Data item\r\n * @return Location (0-1)\r\n */\r\n ColumnSeries.prototype.getStartLocation = function (dataItem) {\r\n var startLocation = this._startLocation;\r\n if (this.baseAxis == this.xAxis) {\r\n startLocation += dataItem.locations[this.xOpenField] - 0.5;\r\n }\r\n else {\r\n startLocation += dataItem.locations[this.yOpenField] - 0.5;\r\n }\r\n return startLocation;\r\n };\r\n /**\r\n * [handleDataItemWorkingValueChange description]\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n /*\r\n public handleDataItemWorkingValueChange(dataItem?: this[\"_dataItem\"], name?: string): void {\r\n if (this.simplifiedProcessing) {\r\n this.validateDataElement(dataItem);\r\n }\r\n else {\r\n super.handleDataItemWorkingValueChange(dataItem, name);\r\n }\r\n }*/\r\n /**\r\n * Returns relative end location for the data item.\r\n *\r\n * @param dataItem Data item\r\n * @return Location (0-1)\r\n */\r\n ColumnSeries.prototype.getEndLocation = function (dataItem) {\r\n var endLocation = this._endLocation;\r\n if (this.baseAxis == this.xAxis) {\r\n endLocation += dataItem.locations[this.xField] - 0.5;\r\n }\r\n else {\r\n endLocation += dataItem.locations[this.yField] - 0.5;\r\n }\r\n return endLocation;\r\n };\r\n /**\r\n * Validates data item's elements.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n ColumnSeries.prototype.validateDataElementReal = function (dataItem) {\r\n var _this = this;\r\n //\tif (dataItem.hasValue([this.xField, this.yField])) { // todo: this doesn't work with categories, think of a better way\r\n var l;\r\n var r;\r\n var t;\r\n var b;\r\n var startLocation = this.getStartLocation(dataItem);\r\n var endLocation = this.getEndLocation(dataItem);\r\n var xField = this.xField;\r\n var xOpenField = this.xOpenField;\r\n var yField = this.yField;\r\n var yOpenField = this.yOpenField;\r\n var template = this.columns.template;\r\n var percentWidth = template.percentWidth;\r\n var percentHeight = template.percentHeight;\r\n var pixelWidth = template.pixelWidth;\r\n var pixelHeight = template.pixelHeight;\r\n var maxWidth = template.maxWidth;\r\n var maxHeight = template.maxHeight;\r\n var paddingLeft = template.pixelPaddingLeft;\r\n var paddingRight = template.pixelPaddingRight;\r\n var paddingTop = template.pixelPaddingTop;\r\n var paddingBottom = template.pixelPaddingBottom;\r\n var outOfBounds = false;\r\n var diw = dataItem.width;\r\n if ($type.hasValue(diw)) {\r\n if ($type.isNumber(diw)) {\r\n pixelWidth = diw;\r\n }\r\n if (diw instanceof Percent) {\r\n percentWidth = diw.value * 100;\r\n }\r\n }\r\n var dih = dataItem.height;\r\n if ($type.hasValue(dih)) {\r\n if ($type.isNumber(dih)) {\r\n pixelHeight = dih;\r\n }\r\n if (dih instanceof Percent) {\r\n percentHeight = dih.value * 100;\r\n }\r\n }\r\n // two category axes\r\n if ((this.xAxis instanceof CategoryAxis) && (this.yAxis instanceof CategoryAxis)) {\r\n if (!dataItem.hasValue(this._xValueFields) || !dataItem.hasValue(this._yValueFields)) {\r\n return;\r\n }\r\n startLocation = 0;\r\n endLocation = 1;\r\n if (!$type.isNaN(percentWidth)) {\r\n var offset = $math.round((endLocation - startLocation) * (1 - percentWidth / 100) / 2, 5);\r\n startLocation += offset;\r\n endLocation -= offset;\r\n }\r\n l = this.xAxis.getX(dataItem, xOpenField, startLocation);\r\n r = this.xAxis.getX(dataItem, xField, endLocation);\r\n // in case width is set in pixels\r\n if ($type.isNaN(percentWidth)) {\r\n var offset = ((r - l) - pixelWidth) / 2;\r\n l += offset;\r\n r -= offset;\r\n }\r\n // in case max width is set in pixels\r\n if (!$type.isNaN(maxWidth) && maxWidth < Math.abs(r - l)) {\r\n var offset = ((r - l) - maxWidth) / 2;\r\n l += offset;\r\n r -= offset;\r\n }\r\n startLocation = 0;\r\n endLocation = 1;\r\n if (!$type.isNaN(percentHeight)) {\r\n var offset = $math.round((1 - percentHeight / 100) / 2, 5);\r\n startLocation += offset;\r\n endLocation -= offset;\r\n }\r\n t = this.yAxis.getY(dataItem, yOpenField, startLocation);\r\n b = this.yAxis.getY(dataItem, yField, endLocation);\r\n // in case width is set in pixels\r\n if ($type.isNaN(percentHeight)) {\r\n var offset = ((b - t) - pixelHeight) / 2;\r\n b += offset;\r\n t -= offset;\r\n }\r\n // in case max width is set in pixels\r\n if (!$type.isNaN(maxHeight) && maxHeight < Math.abs(b - t)) {\r\n var offset = ((b - t) - maxHeight) / 2;\r\n b += offset;\r\n t -= offset;\r\n }\r\n r = this.fixHorizontalCoordinate(r);\r\n l = this.fixHorizontalCoordinate(l);\r\n t = this.fixVerticalCoordinate(t);\r\n b = this.fixVerticalCoordinate(b);\r\n }\r\n else if (this.baseAxis == this.xAxis) {\r\n if (!dataItem.hasValue(this._yValueFields)) {\r\n return;\r\n }\r\n // in case width is set in percent\r\n if (!$type.isNaN(percentWidth)) {\r\n var offset = $math.round((endLocation - startLocation) * (1 - percentWidth / 100) / 2, 5);\r\n startLocation += offset;\r\n endLocation -= offset;\r\n }\r\n l = this.xAxis.getX(dataItem, xOpenField, startLocation);\r\n r = this.xAxis.getX(dataItem, xField, endLocation);\r\n // in case width is set in pixels\r\n if ($type.isNaN(percentWidth)) {\r\n var offset = ((r - l) - pixelWidth) / 2;\r\n l += offset;\r\n r -= offset;\r\n }\r\n // in case width is set in pixels\r\n if (!$type.isNaN(maxWidth) && maxWidth < Math.abs(r - l)) {\r\n var offset = ((r - l) - maxWidth) / 2;\r\n l += offset;\r\n r -= offset;\r\n }\r\n var bottomLocation = dataItem.locations[yOpenField];\r\n var topLocation = dataItem.locations[yField];\r\n // otherwise gantt chart will start items in the middle of a cell\r\n if (this.yAxis instanceof ValueAxis) {\r\n if (this.dataFields[this.yField] != this.dataFields[this.yOpenField]) {\r\n bottomLocation = 0;\r\n topLocation = 0;\r\n }\r\n }\r\n b = this.yAxis.getY(dataItem, yOpenField, bottomLocation);\r\n t = this.yAxis.getY(dataItem, yField, topLocation);\r\n // used to save location for bullets, but it's not a good approach\r\n // dataItem.locations[xField] = startLocation + (endLocation - startLocation) / 2;\r\n var axisLenght = Math.ceil(this.yAxis.axisLength);\r\n if ((t < 0 && b < 0) || (t > axisLenght && b > axisLenght)) {\r\n outOfBounds = true;\r\n }\r\n t = this.fixVerticalCoordinate(t);\r\n b = this.fixVerticalCoordinate(b);\r\n if (Math.abs(r - l) - paddingLeft - paddingRight == 0) {\r\n outOfBounds = true;\r\n }\r\n }\r\n // horizontal bars\r\n else {\r\n if (!dataItem.hasValue(this._xValueFields)) {\r\n return;\r\n }\r\n if (!$type.isNaN(percentHeight)) {\r\n var offset = $math.round((endLocation - startLocation) * (1 - percentHeight / 100) / 2, 5);\r\n startLocation += offset;\r\n endLocation -= offset;\r\n }\r\n t = this.yAxis.getY(dataItem, yOpenField, startLocation);\r\n b = this.yAxis.getY(dataItem, yField, endLocation);\r\n // in case height is set in pixels\r\n if ($type.isNaN(percentHeight)) {\r\n var offset = ((b - t) - pixelHeight) / 2;\r\n b -= offset;\r\n t += offset;\r\n }\r\n // in case height is set in pixels\r\n if (!$type.isNaN(maxHeight) && maxHeight < Math.abs(b - t)) {\r\n var offset = ((b - t) - maxHeight) / 2;\r\n b -= offset;\r\n t += offset;\r\n }\r\n var rightLocation = dataItem.locations[xField];\r\n var leftLocation = dataItem.locations[xOpenField];\r\n // otherwise gantt chart will start items in the middle of a cell\r\n if (this.xAxis instanceof ValueAxis) {\r\n if (this.dataFields[this.xField] != this.dataFields[this.xOpenField]) {\r\n rightLocation = 0;\r\n leftLocation = 0;\r\n }\r\n }\r\n r = this.xAxis.getX(dataItem, xField, rightLocation);\r\n l = this.xAxis.getX(dataItem, xOpenField, leftLocation);\r\n // used to save location for bullets, but it's not a good approach\r\n // dataItem.locations[yField] = startLocation + (endLocation - startLocation) / 2;\r\n var axisLenght = Math.ceil(this.xAxis.axisLength);\r\n if ((r < 0 && l < 0) || (r > axisLenght && l > axisLenght)) {\r\n outOfBounds = true;\r\n }\r\n r = this.fixHorizontalCoordinate(r);\r\n l = this.fixHorizontalCoordinate(l);\r\n if (Math.abs(t - b) - paddingTop - paddingBottom == 0) {\r\n outOfBounds = true;\r\n }\r\n }\r\n var w = Math.abs(r - l);\r\n var h = Math.abs(b - t);\r\n var x = Math.min(l, r);\r\n var y = Math.min(t, b);\r\n if (!outOfBounds) {\r\n var column_1;\r\n if (!dataItem.column) {\r\n column_1 = this.columns.create();\r\n //$object.forceCopyProperties(this.columns.template, column, visualProperties);\r\n $object.copyProperties(this, column_1, visualProperties); // need this because 3d columns are not in the same container\r\n $object.copyProperties(this.columns.template, column_1, visualProperties); // second time, no force, so that columns.template would override series properties\r\n dataItem.addSprite(column_1);\r\n dataItem.column = column_1;\r\n column_1.paper = this.paper; // sometimes pattern is not drawn if is set with adapter without this.\r\n // accessibility\r\n if (this.itemsFocusable()) {\r\n if (!$type.hasValue(this.role)) {\r\n this.role = \"menu\";\r\n }\r\n if (!$type.hasValue(column_1.role)) {\r\n column_1.role = \"menuitem\";\r\n }\r\n column_1.focusable = true;\r\n }\r\n else {\r\n if (!$type.hasValue(this.role)) {\r\n this.role = \"list\";\r\n }\r\n if (!$type.hasValue(column_1.role)) {\r\n column_1.role = \"listitem\";\r\n }\r\n column_1.focusable = false;\r\n }\r\n if (column_1.focusable) {\r\n column_1.events.on(\"focus\", function (ev) {\r\n column_1.readerTitle = _this.populateString(_this.itemReaderText, dataItem);\r\n }, undefined, false);\r\n column_1.events.on(\"blur\", function (ev) {\r\n column_1.readerTitle = \"\";\r\n }, undefined, false);\r\n }\r\n if (column_1.hoverable) {\r\n column_1.events.on(\"over\", function (ev) {\r\n column_1.readerTitle = _this.populateString(_this.itemReaderText, dataItem);\r\n }, undefined, false);\r\n column_1.events.on(\"out\", function (ev) {\r\n column_1.readerTitle = \"\";\r\n }, undefined, false);\r\n }\r\n column_1.parent = this.columnsContainer;\r\n column_1.virtualParent = this;\r\n }\r\n else {\r\n column_1 = dataItem.column;\r\n if (this._propertiesChanged) {\r\n $object.copyProperties(this, column_1, visualProperties);\r\n $object.copyProperties(this.columns.template, column_1, visualProperties);\r\n $array.each(visualProperties, function (property) {\r\n column_1[property] = column_1[property];\r\n });\r\n }\r\n }\r\n column_1.width = w;\r\n column_1.height = h;\r\n column_1.x = x;\r\n column_1.y = y;\r\n column_1.realX = l;\r\n column_1.realY = t;\r\n column_1.realWidth = r - l;\r\n column_1.realHeight = b - t;\r\n this.setColumnStates(column_1);\r\n if (column_1.invalid) {\r\n column_1.validate(); // validate as if it was used previously, it will flicker with previous dimensions\r\n }\r\n column_1.__disabled = false;\r\n //column.returnAfterTemp();\r\n $iter.each(this.axisRanges.iterator(), function (axisRange) {\r\n var rangeColumn = dataItem.rangesColumns.getKey(axisRange.uid);\r\n if (!rangeColumn) {\r\n rangeColumn = _this.columns.create();\r\n //$object.forceCopyProperties(this.columns.template, rangeColumn, visualProperties);\r\n $object.copyProperties(axisRange.contents, rangeColumn, visualProperties); // need this because 3d columns are not in the same container\r\n dataItem.addSprite(rangeColumn);\r\n dataItem.rangesColumns.setKey(axisRange.uid, rangeColumn);\r\n rangeColumn.paper = _this.paper; // sometimes pattern is not drawn if is set with adapter without this.\r\n }\r\n rangeColumn.parent = axisRange.contents;\r\n rangeColumn.width = w;\r\n rangeColumn.height = h;\r\n rangeColumn.x = x;\r\n rangeColumn.y = y;\r\n _this.setColumnStates(rangeColumn);\r\n if (rangeColumn.invalid) {\r\n rangeColumn.validate(); // validate as if it was used previously, it will flicker with previous dimensions\r\n }\r\n rangeColumn.__disabled = false;\r\n //rangeColumn.returnAfterTemp();\r\n });\r\n }\r\n else {\r\n this.disableUnusedColumns(dataItem);\r\n }\r\n dataItem.itemWidth = w;\r\n dataItem.itemHeight = h;\r\n };\r\n /**\r\n * @ignore\r\n */\r\n ColumnSeries.prototype.disableUnusedColumns = function (dataItem) {\r\n if (dataItem) {\r\n if (dataItem.column) {\r\n // otherwise might flicker when enabling\r\n dataItem.column.width = 0;\r\n dataItem.column.height = 0;\r\n dataItem.column.__disabled = true;\r\n }\r\n $iter.each(this.axisRanges.iterator(), function (axisRange) {\r\n var rangeColumn = dataItem.rangesColumns.getKey(axisRange.uid);\r\n if (rangeColumn) {\r\n // otherwise might flicker when enabling\r\n rangeColumn.width = 0;\r\n rangeColumn.height = 0;\r\n rangeColumn.__disabled = true;\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * Apply different state/coloring to columns based on the change value.\r\n *\r\n * @param sprite Sprite to apply state to\r\n * @todo Do not apply accessibility to wicks of the candlesticks\r\n */\r\n ColumnSeries.prototype.setColumnStates = function (sprite) {\r\n if (this._dropFromOpenState || this._dropFromPreviousState || this._riseFromOpenState || this._riseFromPreviousState) {\r\n var dataItem = sprite.dataItem;\r\n if (this.xAxis instanceof ValueAxis || this.yAxis instanceof ValueAxis) {\r\n var open_1;\r\n var value = void 0;\r\n var change = void 0;\r\n if (this.baseAxis == this.yAxis) {\r\n if (this.xOpenField && this.xField && this.xAxis instanceof ValueAxis) {\r\n open_1 = dataItem.getValue(this.xOpenField);\r\n value = dataItem.getValue(this.xField);\r\n }\r\n change = dataItem.getValue(this.xAxis.axisFieldName + \"X\", \"previousChange\");\r\n }\r\n else {\r\n if (this.yOpenField && this.yField && this.yAxis instanceof ValueAxis) {\r\n open_1 = dataItem.getValue(this.yOpenField);\r\n value = dataItem.getValue(this.yField);\r\n }\r\n change = dataItem.getValue(this.yAxis.axisFieldName + \"Y\", \"previousChange\");\r\n }\r\n if (value < open_1) {\r\n dataItem.droppedFromOpen = true;\r\n sprite.defaultState.copyFrom(this._dropFromOpenState);\r\n sprite.setState(this._dropFromOpenState, 0);\r\n }\r\n else {\r\n dataItem.droppedFromOpen = false;\r\n sprite.defaultState.copyFrom(this._riseFromOpenState);\r\n sprite.setState(this._riseFromOpenState, 0);\r\n }\r\n if (change < 0) {\r\n dataItem.droppedFromPrevious = true;\r\n sprite.defaultState.copyFrom(this._dropFromPreviousState);\r\n sprite.setState((this._dropFromPreviousState), 0);\r\n }\r\n else {\r\n dataItem.droppedFromPrevious = false;\r\n sprite.defaultState.copyFrom(this._riseFromPreviousState);\r\n sprite.setState((this._riseFromPreviousState), 0);\r\n }\r\n }\r\n }\r\n };\r\n Object.defineProperty(ColumnSeries.prototype, \"columns\", {\r\n /**\r\n * A list of column elements in the series.\r\n *\r\n * @return Columns\r\n */\r\n get: function () {\r\n if (!this._columns) {\r\n this._columns = new ListTemplate(this.createColumnTemplate());\r\n this._disposers.push(new ListDisposer(this._columns));\r\n this._disposers.push(this._columns.template);\r\n }\r\n return this._columns;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates and returns a column element to use as a template.\r\n *\r\n * @return Column template\r\n */\r\n ColumnSeries.prototype.createColumnTemplate = function () {\r\n return new Column();\r\n };\r\n Object.defineProperty(ColumnSeries.prototype, \"clustered\", {\r\n /**\r\n * @return Clustered?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"clustered\");\r\n },\r\n /**\r\n * Cluster this series columns?\r\n *\r\n * Setting to `false` will make columns overlap with other series.\r\n *\r\n * @default true\r\n * @param value Clustered?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"clustered\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ColumnSeries.prototype, \"dropFromOpenState\", {\r\n /**\r\n * @return State\r\n */\r\n get: function () {\r\n if (!this._dropFromOpenState) {\r\n this._dropFromOpenState = this.states.create(\"dropFromOpenState\");\r\n }\r\n return this._dropFromOpenState;\r\n },\r\n /**\r\n * A state to apply to a column when close value is lower than open value.\r\n *\r\n * Can be used to differentiate appearance based on value relations.\r\n *\r\n * NOTE: this will work only if at least one axis is [[ValueAxis]].\r\n *\r\n * @readonly You can modify state object, but can't overwrite it\r\n * @param value State\r\n */\r\n set: function (value) {\r\n this._dropFromOpenState = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ColumnSeries.prototype, \"dropFromPreviousState\", {\r\n /**\r\n * @return State\r\n */\r\n get: function () {\r\n if (!this._dropFromPreviousState) {\r\n this._dropFromPreviousState = this.states.create(\"dropFromPreviousState\");\r\n }\r\n return this._dropFromPreviousState;\r\n },\r\n /**\r\n * A state to apply to a column when its value is lower value of a previous\r\n * column.\r\n *\r\n * Can be used to differentiate appearance based on value relations.\r\n *\r\n * @readonly You can modify state object, but can't overwrite it\r\n * @param value State\r\n */\r\n set: function (value) {\r\n this._dropFromPreviousState = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ColumnSeries.prototype, \"riseFromOpenState\", {\r\n /**\r\n * @return State\r\n */\r\n get: function () {\r\n if (!this._riseFromOpenState) {\r\n this._riseFromOpenState = this.states.create(\"riseFromOpenState\");\r\n }\r\n return this._riseFromOpenState;\r\n },\r\n /**\r\n * A state to apply to a column when close value is same or higher than open\r\n * value.\r\n *\r\n * Can be used to differentiate appearance based on value relations.\r\n *\r\n * NOTE: this will work only if at least one axis is [[ValueAxis]].\r\n *\r\n * @readonly You can modify state object, but can't overwrite it\r\n * @param value State\r\n */\r\n set: function (value) {\r\n this._riseFromOpenState = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ColumnSeries.prototype, \"riseFromPreviousState\", {\r\n /**\r\n * @return State\r\n */\r\n get: function () {\r\n if (!this._riseFromPreviousState) {\r\n this._riseFromPreviousState = this.states.create(\"riseFromPreviousState\");\r\n }\r\n return this._riseFromPreviousState;\r\n },\r\n /**\r\n * A state to apply to a column when its value is same or higher than value\r\n * of a previous column.\r\n *\r\n * Can be used to differentiate appearance based on value relations.\r\n *\r\n * @readonly You can modify state object, but can't overwrite it\r\n * @param value State\r\n */\r\n set: function (value) {\r\n this._riseFromPreviousState = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Updates value of the related legend item.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n ColumnSeries.prototype.updateLegendValue = function (dataItem, notRange) {\r\n var _this = this;\r\n _super.prototype.updateLegendValue.call(this, dataItem, notRange);\r\n if (this.legendDataItem) {\r\n var marker = this.legendDataItem.marker;\r\n var fromOpenState_1;\r\n var fromPreviousState_1;\r\n if (dataItem) {\r\n if (dataItem.droppedFromOpen) {\r\n fromOpenState_1 = this._dropFromOpenState;\r\n }\r\n else {\r\n fromOpenState_1 = this._riseFromOpenState;\r\n }\r\n if (dataItem.droppedFromPrevious) {\r\n fromPreviousState_1 = this._dropFromPreviousState;\r\n }\r\n else {\r\n fromPreviousState_1 = this._riseFromPreviousState;\r\n }\r\n }\r\n $iter.each(marker.children.iterator(), function (child) {\r\n if (dataItem) {\r\n child.setState(fromPreviousState_1);\r\n child.setState(fromOpenState_1);\r\n }\r\n else {\r\n // todo: think what to do here, maybe apply above states based on totals?\r\n child.setState(_this._riseFromPreviousState);\r\n child.setState(_this._riseFromOpenState);\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * Creates elements in related legend container, that mimics the look of this\r\n * Series.\r\n *\r\n * @ignore Exclude from docs\r\n * @param marker Legend item container\r\n */\r\n ColumnSeries.prototype.createLegendMarker = function (marker) {\r\n var w = marker.pixelWidth;\r\n var h = marker.pixelHeight;\r\n marker.removeChildren();\r\n var column = marker.createChild(RoundedRectangle);\r\n column.shouldClone = false;\r\n $object.copyProperties(this, column, visualProperties);\r\n column.copyFrom(this.columns.template);\r\n column.padding(0, 0, 0, 0); // if columns will have padding (which is often), legend marker will be very narrow\r\n column.width = w;\r\n column.height = h;\r\n var legendDataItem = marker.dataItem;\r\n legendDataItem.color = this.fill;\r\n legendDataItem.colorOrig = this.fill;\r\n };\r\n /**\r\n * Copies all properties from another instance of [[ColumnSeries]].\r\n *\r\n * @param source Source series\r\n */\r\n ColumnSeries.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.columns.template.copyFrom(source.columns.template);\r\n };\r\n /**\r\n * returns bullet x location\r\n * @ignore\r\n */\r\n ColumnSeries.prototype.getBulletLocationX = function (bullet, field) {\r\n if (this.baseAxis == this.xAxis) {\r\n var bulletLocationX = bullet.locationX;\r\n if (!$type.isNumber(bulletLocationX)) {\r\n bulletLocationX = 0.5;\r\n }\r\n var endLocation = this.getEndLocation(bullet.dataItem);\r\n var startLocation = this.getStartLocation(bullet.dataItem);\r\n return endLocation - (endLocation - startLocation) * bulletLocationX;\r\n }\r\n else {\r\n return _super.prototype.getBulletLocationX.call(this, bullet, field);\r\n }\r\n };\r\n /**\r\n * returns bullet y location\r\n * @ignore\r\n */\r\n ColumnSeries.prototype.getBulletLocationY = function (bullet, field) {\r\n if (this.baseAxis == this.yAxis) {\r\n var bulletLocationY = bullet.locationY;\r\n if (!$type.isNumber(bulletLocationY)) {\r\n bulletLocationY = 0.5;\r\n }\r\n var endLocation = this.getEndLocation(bullet.dataItem);\r\n var startLocation = this.getStartLocation(bullet.dataItem);\r\n return endLocation - (endLocation - startLocation) * bulletLocationY;\r\n }\r\n else {\r\n return _super.prototype.getBulletLocationY.call(this, bullet, field);\r\n }\r\n };\r\n ColumnSeries.prototype.getAdjustedXLocation = function (dataItem, field, bulletLocationX) {\r\n //if (this.baseAxis == this.xAxis) {\r\n if (!$type.isNumber(bulletLocationX)) {\r\n if (dataItem) {\r\n bulletLocationX = dataItem.locations[field];\r\n }\r\n else {\r\n bulletLocationX = 0.5;\r\n }\r\n }\r\n return this._endLocation - (this._endLocation - this._startLocation) * (1 - bulletLocationX);\r\n //}\r\n //else {\r\n //\treturn super.getAdjustedXLocation(dataItem, field);\r\n //}\r\n };\r\n ColumnSeries.prototype.getAdjustedYLocation = function (dataItem, field, bulletLocationY) {\r\n //if (this.baseAxis == this.yAxis) {\r\n if (!$type.isNumber(bulletLocationY)) {\r\n if (dataItem) {\r\n bulletLocationY = dataItem.locations[field];\r\n }\r\n else {\r\n bulletLocationY = 0.5;\r\n }\r\n }\r\n return this._endLocation - (this._endLocation - this._startLocation) * bulletLocationY;\r\n //}\r\n //else {\r\n //\treturn super.getAdjustedYLocation(dataItem, field);\r\n //}\r\n };\r\n /**\r\n * @ignore Exclude from docs\r\n */\r\n ColumnSeries.prototype.fixVerticalCoordinate = function (coordinate) {\r\n var paddingBottom = this.columns.template.pixelPaddingBottom;\r\n var paddingTop = this.columns.template.pixelPaddingTop;\r\n var minY = -paddingTop;\r\n var maxY = this.yAxis.axisLength + paddingBottom;\r\n return $math.fitToRange(coordinate, minY, maxY);\r\n };\r\n /**\r\n * @ignore Exclude from docs\r\n */\r\n ColumnSeries.prototype.fixHorizontalCoordinate = function (coordinate) {\r\n var paddingLeft = this.columns.template.pixelPaddingLeft;\r\n var paddingRight = this.columns.template.pixelPaddingRight;\r\n var minX = -paddingLeft;\r\n var maxX = this.xAxis.axisLength + paddingRight;\r\n return $math.fitToRange(coordinate, minX, maxX);\r\n };\r\n /**\r\n * @ignore\r\n */\r\n ColumnSeries.prototype.disposeData = function () {\r\n _super.prototype.disposeData.call(this);\r\n this.columns.clear();\r\n };\r\n return ColumnSeries;\r\n}(XYSeries));\r\nexport { ColumnSeries };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ColumnSeries\"] = ColumnSeries;\r\nregistry.registeredClasses[\"ColumnSeriesDataItem\"] = ColumnSeriesDataItem;\r\n//# sourceMappingURL=ColumnSeries.js.map","/**\r\n * TreeMap series module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { ColumnSeries, ColumnSeriesDataItem } from \"./ColumnSeries\";\r\nimport { visualProperties } from \"../../core/Sprite\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { RoundedRectangle } from \"../../core/elements/RoundedRectangle\";\r\nimport * as $object from \"../../core/utils/Object\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[TreeMapSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar TreeMapSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(TreeMapSeriesDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function TreeMapSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"TreeMapSeriesDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(TreeMapSeriesDataItem.prototype, \"parentName\", {\r\n /**\r\n * Data for the this particular item.\r\n *\r\n * @param value Item's data\r\n */\r\n //public set dataContext(value: Object) {\r\n //\tthis._dataContext = value;\r\n //}\r\n /**\r\n * @return Item's data\r\n */\r\n /*\r\n public get dataContext(): Object {\r\n // It's because data of tree series is TreeMapDataItems.\r\n if (this._dataContext) {\r\n return (<any>this._dataContext).dataContext;\r\n }\r\n }*/\r\n /**\r\n * The name of the item's parent item.\r\n *\r\n * @return Parent name\r\n */\r\n get: function () {\r\n var treeMapDataItem = this.treeMapDataItem;\r\n if (treeMapDataItem && treeMapDataItem.parent) {\r\n return treeMapDataItem.parent.name;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapSeriesDataItem.prototype, \"value\", {\r\n /**\r\n * Item's numeric value.\r\n *\r\n * @readonly\r\n * @return Value\r\n */\r\n get: function () {\r\n var treeMapDataItem = this.treeMapDataItem;\r\n if (treeMapDataItem) {\r\n return treeMapDataItem.value;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapSeriesDataItem.prototype, \"treeMapDataItem\", {\r\n /**\r\n * A corresponding data item from the tree map.\r\n *\r\n * @readonly\r\n * @return Data item\r\n */\r\n get: function () {\r\n return this._dataContext;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Hides the Data Item and related visual elements.\r\n *\r\n * @param duration Animation duration (ms)\r\n * @param delay Delay animation (ms)\r\n * @param toValue A value to set to `fields` when hiding\r\n * @param fields A list of data fields to set value to `toValue`\r\n */\r\n TreeMapSeriesDataItem.prototype.hide = function (duration, delay, toValue, fields) {\r\n var treeMapDataItem = this.treeMapDataItem;\r\n if (treeMapDataItem) {\r\n treeMapDataItem.hide(duration);\r\n }\r\n return _super.prototype.hide.call(this, duration, delay, toValue, fields);\r\n };\r\n /**\r\n * Shows the Data Item and related visual elements.\r\n *\r\n * @param duration Animation duration (ms)\r\n * @param delay Delay animation (ms)\r\n * @param fields A list of fields to set values of\r\n */\r\n TreeMapSeriesDataItem.prototype.show = function (duration, delay, fields) {\r\n var treeMapDataItem = this.treeMapDataItem;\r\n if (treeMapDataItem) {\r\n treeMapDataItem.show(duration, delay, fields);\r\n }\r\n return _super.prototype.show.call(this, duration, delay, fields);\r\n };\r\n return TreeMapSeriesDataItem;\r\n}(ColumnSeriesDataItem));\r\nexport { TreeMapSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines Series for a TreeMap chart.\r\n *\r\n * @see {@link ITreeMapSeriesEvents} for a list of available Events\r\n * @see {@link ITreeMapSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\r\nvar TreeMapSeries = /** @class */ (function (_super) {\r\n __extends(TreeMapSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function TreeMapSeries() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"TreeMapSeries\";\r\n _this.applyTheme();\r\n _this.fillOpacity = 1;\r\n _this.strokeOpacity = 1;\r\n _this.minBulletDistance = 0;\r\n _this.columns.template.tooltipText = \"{parentName} {name}: {value}\"; //@todo add format number?\r\n _this.columns.template.configField = \"config\";\r\n var interfaceColors = new InterfaceColorSet();\r\n _this.stroke = interfaceColors.getFor(\"background\");\r\n _this.dataFields.openValueX = \"x0\";\r\n _this.dataFields.valueX = \"x1\";\r\n _this.dataFields.openValueY = \"y0\";\r\n _this.dataFields.valueY = \"y1\";\r\n _this.sequencedInterpolation = false;\r\n _this.showOnInit = false;\r\n // otherwise nodes don't stack nicely to each other\r\n _this.columns.template.pixelPerfect = false;\r\n return _this;\r\n }\r\n /**\r\n * Processes data item.\r\n *\r\n * @param dataItem Data item\r\n * @param dataContext Raw data\r\n * @param index Index of the data item\r\n */\r\n TreeMapSeries.prototype.processDataItem = function (dataItem, dataContext) {\r\n dataContext.seriesDataItem = dataItem; // save a reference here. dataContext is TreeMapDataItem and we need to know dataItem sometimes\r\n _super.prototype.processDataItem.call(this, dataItem, dataContext);\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n TreeMapSeries.prototype.createDataItem = function () {\r\n return new TreeMapSeriesDataItem();\r\n };\r\n /**\r\n * Shows series.\r\n *\r\n * @param duration Duration of fade in (ms)\r\n * @return Animation\r\n */\r\n TreeMapSeries.prototype.show = function (duration) {\r\n if (this.preventShow) {\r\n return;\r\n }\r\n var interpolationDuration = this.defaultState.transitionDuration;\r\n if ($type.isNumber(duration)) {\r\n interpolationDuration = duration;\r\n }\r\n this.dataItems.each(function (dataItem) {\r\n //dataItem.treeMapDataItem.setWorkingValue(\"value\", dataItem.treeMapDataItem.values.value.value);\r\n dataItem.show(duration);\r\n });\r\n return _super.prototype.showReal.call(this, interpolationDuration);\r\n };\r\n /**\r\n * Hides series.\r\n *\r\n * @param duration Duration of fade out (ms)\r\n * @return Animation\r\n */\r\n TreeMapSeries.prototype.hide = function (duration) {\r\n var interpolationDuration = this.defaultState.transitionDuration;\r\n if ($type.isNumber(duration)) {\r\n interpolationDuration = duration;\r\n }\r\n var animation = _super.prototype.hideReal.call(this, interpolationDuration);\r\n this.dataItems.each(function (dataItem) {\r\n //dataItem.treeMapDataItem.setWorkingValue(\"value\", 0);\r\n dataItem.hide(duration);\r\n });\r\n return animation;\r\n };\r\n /**\r\n * Process values.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n TreeMapSeries.prototype.processValues = function () {\r\n // Just overriding so that inherited method does not kick in.\r\n };\r\n /**\r\n * Returns relative start location for the data item.\r\n *\r\n * @param dataItem Data item\r\n * @return Location (0-1)\r\n */\r\n TreeMapSeries.prototype.getStartLocation = function (dataItem) {\r\n return 0;\r\n };\r\n /**\r\n * Returns relative end location for the data item.\r\n *\r\n * @param dataItem Data item\r\n * @return Location (0-1)\r\n */\r\n TreeMapSeries.prototype.getEndLocation = function (dataItem) {\r\n return 1;\r\n };\r\n /**\r\n * @ignore\r\n */\r\n TreeMapSeries.prototype.dataChangeUpdate = function () {\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n TreeMapSeries.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Add empty data fields if the they are not set, so that XYSeries\r\n // dataField check does not result in error.\r\n if (!$type.hasValue(config.dataFields) || !$type.isObject(config.dataFields)) {\r\n config.dataFields = {};\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n /**\r\n * Creates elements in related legend container, that mimics the look of this\r\n * Series.\r\n *\r\n * @ignore Exclude from docs\r\n * @param marker Legend item container\r\n */\r\n TreeMapSeries.prototype.createLegendMarker = function (marker) {\r\n var w = marker.pixelWidth;\r\n var h = marker.pixelHeight;\r\n marker.removeChildren();\r\n var column = marker.createChild(RoundedRectangle);\r\n column.shouldClone = false;\r\n $object.copyProperties(this, column, visualProperties);\r\n //column.copyFrom(<any>this.columns.template);\r\n column.padding(0, 0, 0, 0); // if columns will have padding (which is often), legend marker will be very narrow\r\n column.width = w;\r\n column.height = h;\r\n var legendDataItem = marker.dataItem;\r\n legendDataItem.color = column.fill;\r\n legendDataItem.colorOrig = column.fill;\r\n };\r\n TreeMapSeries.prototype.disableUnusedColumns = function (dataItem) {\r\n _super.prototype.disableUnusedColumns.call(this, dataItem);\r\n if (dataItem.column) {\r\n dataItem.column.__disabled = false;\r\n }\r\n };\r\n return TreeMapSeries;\r\n}(ColumnSeries));\r\nexport { TreeMapSeries };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"TreeMapSeries\"] = TreeMapSeries;\r\nregistry.registeredClasses[\"TreeMapSeriesDataItem\"] = TreeMapSeriesDataItem;\r\n//# sourceMappingURL=TreeMapSeries.js.map","/**\r\n * TreeMap chart module.\r\n *\r\n * Parts of the functionality used in this module are taken from D3.js library\r\n * (https://d3js.org/)\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { XYChart, XYChartDataItem } from \"./XYChart\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { DictionaryTemplate, DictionaryDisposer } from \"../../core/utils/Dictionary\";\r\nimport { ValueAxis } from \"../axes/ValueAxis\";\r\nimport { TreeMapSeries } from \"../series/TreeMapSeries\";\r\nimport { ColorSet } from \"../../core/utils/ColorSet\";\r\nimport { MouseCursorStyle } from \"../../core/interaction/Mouse\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $array from \"../../core/utils/Array\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[TreeMap]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar TreeMapDataItem = /** @class */ (function (_super) {\r\n __extends(TreeMapDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function TreeMapDataItem() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Required for squarify functionality.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this.rows = [];\r\n _this.className = \"TreeMapDataItem\";\r\n _this.values.value = { workingValue: 0 };\r\n _this.values.x0 = {};\r\n _this.values.y0 = {};\r\n _this.values.x1 = {};\r\n _this.values.y1 = {};\r\n _this.hasChildren.children = true;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(TreeMapDataItem.prototype, \"legendDataItem\", {\r\n /**\r\n * @return Legend data item\r\n */\r\n get: function () {\r\n return this._legendDataItem;\r\n },\r\n /**\r\n * A legend's data item, that corresponds to this data item.\r\n *\r\n * @param value Legend data item\r\n */\r\n set: function (value) {\r\n this._legendDataItem = value;\r\n if (value.label) {\r\n value.label.dataItem = this;\r\n }\r\n if (value.valueLabel) {\r\n value.valueLabel.dataItem = this;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a duration (ms) the Data Item should take to animate from one\r\n * value to another.\r\n *\r\n * If the duration is not specified via parameter, this method will try to\r\n * request a default duration from the related `Component`.\r\n *\r\n * @param duration Default duration (ms)\r\n * @return Duration (ms)\r\n */\r\n TreeMapDataItem.prototype.getDuration = function () {\r\n return 0;\r\n };\r\n Object.defineProperty(TreeMapDataItem.prototype, \"value\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n var value = 0;\r\n if (!this.children || this.children.length == 0) {\r\n value = this.values[\"value\"].workingValue;\r\n }\r\n else {\r\n $iter.each(this.children.iterator(), function (child) {\r\n var childValue = child.value;\r\n if ($type.isNumber(childValue)) {\r\n value += childValue;\r\n }\r\n });\r\n }\r\n return value;\r\n /*\r\n let value = this.values[\"value\"].workingValue;\r\n \r\n if (!$type.isNumber(value)) {\r\n value = 0;\r\n if (this.children) {\r\n $iter.each(this.children.iterator(), (child) => {\r\n if ($type.isNumber(child.value)) {\r\n value += child.value;\r\n }\r\n });\r\n }\r\n }\r\n return value;*/\r\n },\r\n /**\r\n * Numeric value of the item.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"value\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"percent\", {\r\n /**\r\n * Percent value of a node\r\n */\r\n get: function () {\r\n if (this.parent) {\r\n return this.value / this.parent.value * 100;\r\n }\r\n return 100;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"x0\", {\r\n /**\r\n * @return X\r\n */\r\n get: function () {\r\n return this.values.x0.value;\r\n },\r\n /**\r\n * Item's X position.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param value X\r\n */\r\n set: function (value) {\r\n this.setValue(\"x0\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"x1\", {\r\n /**\r\n * @return X\r\n */\r\n get: function () {\r\n return this.values.x1.value;\r\n },\r\n /**\r\n * Item's X position.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param value X\r\n */\r\n set: function (value) {\r\n this.setValue(\"x1\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"y0\", {\r\n /**\r\n * @return Y\r\n */\r\n get: function () {\r\n return this.values.y0.value;\r\n },\r\n /**\r\n * Item's Y position.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param value Y\r\n */\r\n set: function (value) {\r\n this.setValue(\"y0\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"y1\", {\r\n /**\r\n * @return Y\r\n */\r\n get: function () {\r\n return this.values.y1.value;\r\n },\r\n /**\r\n * Item's Y position.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param value Y\r\n */\r\n set: function (value) {\r\n this.setValue(\"y1\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"name\", {\r\n /**\r\n * @return Name\r\n */\r\n get: function () {\r\n return this.properties.name;\r\n },\r\n /**\r\n * Item's name.\r\n *\r\n * @param name Name\r\n */\r\n set: function (name) {\r\n this.setProperty(\"name\", name);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"children\", {\r\n /**\r\n * @return Item's children\r\n */\r\n get: function () {\r\n return this.properties.children;\r\n },\r\n /**\r\n * A list of item's sub-children.\r\n *\r\n * Having children means that the TreeMap chat will automatically be\r\n * \"drillable\". Clicking on an item with children will zoom to the item, then\r\n * display its children.\r\n *\r\n * Treemap can have any level of nesting.\r\n *\r\n * @param children Item's children\r\n */\r\n set: function (children) {\r\n this.setProperty(\"children\", children);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"level\", {\r\n /**\r\n * Depth level in the treemap hierarchy.\r\n *\r\n * The top-level item will have level set at 0. Its children will have\r\n * level 1, and so on.\r\n *\r\n * @readonly\r\n * @return Level\r\n */\r\n get: function () {\r\n if (!this.parent) {\r\n return 0;\r\n }\r\n else {\r\n return this.parent.level + 1;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"color\", {\r\n /**\r\n * @return Color\r\n */\r\n get: function () {\r\n var color = this.properties.color;\r\n if (color == undefined) {\r\n if (this.parent) {\r\n color = this.parent.color;\r\n }\r\n }\r\n if (color == undefined) {\r\n if (this.component) {\r\n color = this.component.colors.getIndex(this.component.colors.step * this.index);\r\n }\r\n }\r\n return color;\r\n },\r\n /**\r\n * Item's color.\r\n *\r\n * If not set, will use parent's color, or, if that is not set either,\r\n * automatically assigned color from chart's color set. (`chart.colors`)\r\n *\r\n * @param value Color\r\n */\r\n set: function (value) {\r\n this.setProperty(\"color\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"fill\", {\r\n /**\r\n * @ignore\r\n * For the legend to work properly\r\n */\r\n get: function () {\r\n return this.color;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"series\", {\r\n get: function () {\r\n return this._series;\r\n },\r\n /**\r\n * Series of children data items\r\n * @todo: proper descrition\r\n */\r\n set: function (series) {\r\n if (series != this._series) {\r\n if (this._series) {\r\n this.component.series.removeValue(this._series);\r\n this._series.dispose();\r\n }\r\n this._series = series;\r\n this._disposers.push(series);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Hides the Data Item and related visual elements.\r\n *\r\n * @param duration Animation duration (ms)\r\n * @param delay Delay animation (ms)\r\n * @param toValue A value to set to `fields` when hiding\r\n * @param fields A list of data fields to set value to `toValue`\r\n */\r\n TreeMapDataItem.prototype.hide = function (duration, delay, toValue, fields) {\r\n this.setWorkingValue(\"value\", 0);\r\n if (this.children) {\r\n this.children.each(function (child) {\r\n child.hide(duration, delay, toValue, fields);\r\n });\r\n }\r\n var seriesDataItem = this.seriesDataItem;\r\n if (seriesDataItem) {\r\n seriesDataItem.bullets.each(function (key, value) {\r\n value.hide();\r\n value.preventShow = true;\r\n });\r\n }\r\n return _super.prototype.hide.call(this, duration, delay, toValue, fields);\r\n };\r\n /**\r\n * Shows the Data Item and related visual elements.\r\n *\r\n * @param duration Animation duration (ms)\r\n * @param delay Delay animation (ms)\r\n * @param fields A list of fields to set values of\r\n */\r\n TreeMapDataItem.prototype.show = function (duration, delay, fields) {\r\n this.setWorkingValue(\"value\", this.values.value.value);\r\n if (this.children) {\r\n this.children.each(function (child) {\r\n child.show(duration, delay, fields);\r\n });\r\n }\r\n var seriesDataItem = this.seriesDataItem;\r\n if (seriesDataItem) {\r\n seriesDataItem.bullets.each(function (key, value) {\r\n value.preventShow = false;\r\n });\r\n }\r\n return _super.prototype.show.call(this, duration, delay, fields);\r\n };\r\n return TreeMapDataItem;\r\n}(XYChartDataItem));\r\nexport { TreeMapDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a TreeMap chart.\r\n *\r\n * @see {@link ITreeMapEvents} for a list of available Events\r\n * @see {@link ITreeMapAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/treemap/} for documentation\r\n */\r\nvar TreeMap = /** @class */ (function (_super) {\r\n __extends(TreeMap, _super);\r\n /**\r\n * Constructor\r\n */\r\n function TreeMap() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * An algorithm used to divide area into squares based on their value.\r\n *\r\n * Available options: squarify (default), binaryTree, slice, dice, sliceDice.\r\n *\r\n * ```TypeScript\r\n * chart.layoutAlgorithm = chart.sliceDice;\r\n * ```\r\n * ```JavaScript\r\n * chart.layoutAlgorithm = chart.sliceDice;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"layoutAlgorithm\": \"sliceDice\",\r\n * // ...\r\n * }\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/treemap/#Area_division_methods} For more info and examples.\r\n * @default squarify\r\n */\r\n _this.layoutAlgorithm = _this.squarify;\r\n /**\r\n * Is the chart zoomable?\r\n *\r\n * If the chart is `zoomable`, and items have sub-items, the chart will\r\n * drill-down to sub-items when click on their parent item.\r\n *\r\n * @default true\r\n */\r\n _this.zoomable = true;\r\n _this.className = \"TreeMap\";\r\n _this._usesData = true;\r\n _this.maxLevels = 2;\r\n _this.currentLevel = 0;\r\n _this.hideParentColumns = false;\r\n _this.colors = new ColorSet();\r\n _this.sorting = \"descending\";\r\n // create two value axes for the chart\r\n var xAxis = _this.xAxes.push(new ValueAxis());\r\n xAxis.title.disabled = true;\r\n xAxis.strictMinMax = true;\r\n var xRenderer = xAxis.renderer;\r\n xRenderer.inside = true;\r\n xRenderer.labels.template.disabled = true;\r\n xRenderer.ticks.template.disabled = true;\r\n xRenderer.grid.template.disabled = true;\r\n xRenderer.axisFills.template.disabled = true;\r\n xRenderer.minGridDistance = 100;\r\n xRenderer.line.disabled = true;\r\n xRenderer.baseGrid.disabled = true;\r\n //xRenderer.inversed = true;\r\n var yAxis = _this.yAxes.push(new ValueAxis());\r\n yAxis.title.disabled = true;\r\n yAxis.strictMinMax = true;\r\n var yRenderer = yAxis.renderer;\r\n yRenderer.inside = true;\r\n yRenderer.labels.template.disabled = true;\r\n yRenderer.ticks.template.disabled = true;\r\n yRenderer.grid.template.disabled = true;\r\n yRenderer.axisFills.template.disabled = true;\r\n yRenderer.minGridDistance = 100;\r\n yRenderer.line.disabled = true;\r\n yRenderer.baseGrid.disabled = true;\r\n yRenderer.inversed = true;\r\n // shortcuts\r\n _this.xAxis = xAxis;\r\n _this.yAxis = yAxis;\r\n var template = new TreeMapSeries();\r\n _this.seriesTemplates = new DictionaryTemplate(template);\r\n template.virtualParent = _this;\r\n _this._disposers.push(new DictionaryDisposer(_this.seriesTemplates));\r\n _this._disposers.push(template);\r\n _this.zoomOutButton.events.on(\"hit\", function () {\r\n _this.zoomToChartDataItem(_this._homeDataItem);\r\n }, undefined, false);\r\n _this.seriesTemplates.events.on(\"insertKey\", function (event) {\r\n event.newValue.isTemplate = true;\r\n }, undefined, false);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(TreeMap.prototype, \"navigationBar\", {\r\n /**\r\n * Returns navigationBar if it is added to a chart\r\n */\r\n get: function () {\r\n return this._navigationBar;\r\n },\r\n /**\r\n * A navigation bar used to show \"breadcrumb\" control, indicating current\r\n * drill-down path.\r\n */\r\n set: function (navigationBar) {\r\n var _this = this;\r\n if (this._navigationBar != navigationBar) {\r\n this._navigationBar = navigationBar;\r\n navigationBar.parent = this;\r\n navigationBar.toBack();\r\n navigationBar.links.template.events.on(\"hit\", function (event) {\r\n var dataItem = event.target.dataItem.dataContext;\r\n if (!dataItem.isDisposed()) {\r\n _this.zoomToChartDataItem(dataItem);\r\n _this.createTreeSeries(dataItem);\r\n }\r\n }, undefined, true);\r\n this._disposers.push(navigationBar);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * (Re)validates chart's data.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n TreeMap.prototype.validateData = function () {\r\n this.series.clear();\r\n this._tempSeries = [];\r\n _super.prototype.validateData.call(this);\r\n if (this._homeDataItem) {\r\n this._homeDataItem.dispose();\r\n }\r\n var homeDataItem = this.dataItems.template.clone(); // cant' use createDataItem here!\r\n this._homeDataItem = homeDataItem;\r\n $iter.each(this.dataItems.iterator(), function (dataItem) {\r\n dataItem.parent = homeDataItem;\r\n });\r\n homeDataItem.children = this.dataItems;\r\n homeDataItem.x0 = 0;\r\n homeDataItem.y0 = 0;\r\n homeDataItem.name = this._homeText;\r\n var maxX = 1000;\r\n var maxY = Math.round((maxX * this.pixelHeight / this.pixelWidth) / 10) * 10 || 1000;\r\n homeDataItem.x1 = maxX;\r\n homeDataItem.y1 = maxY;\r\n this.xAxis.min = 0;\r\n this.xAxis.max = maxX;\r\n this.xAxis.getMinMax();\r\n this.yAxis.min = 0;\r\n this.yAxis.max = maxY;\r\n this.yAxis.getMinMax();\r\n this.layoutItems(homeDataItem);\r\n this.createTreeSeries(homeDataItem);\r\n this.feedLegend();\r\n };\r\n /**\r\n * Layouts and sizes all items according to their value and\r\n * `layoutAlgorithm`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param parent Parent data item\r\n */\r\n TreeMap.prototype.layoutItems = function (parent, sorting) {\r\n if (parent) {\r\n var children = parent.children;\r\n if (!sorting) {\r\n sorting = this.sorting;\r\n }\r\n if (sorting == \"ascending\") {\r\n children.values.sort(function (a, b) {\r\n return a.value - b.value;\r\n });\r\n }\r\n if (sorting == \"descending\") {\r\n children.values.sort(function (a, b) {\r\n return b.value - a.value;\r\n });\r\n }\r\n this._updateDataItemIndexes(0);\r\n this.layoutAlgorithm(parent);\r\n for (var i = 0, len = children.length; i < len; i++) {\r\n var node = children.getIndex(i);\r\n if (node.children) {\r\n this.layoutItems(node);\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Creates and returns a new treemap series.\r\n *\r\n * @todo Description\r\n * @param dataItem Data item to create series out of\r\n */\r\n TreeMap.prototype.createTreeSeries = function (dataItem) {\r\n var _this = this;\r\n this._tempSeries = [];\r\n var navigationData = [dataItem];\r\n // create parent series and navigation data\r\n var parentDataItem = dataItem.parent;\r\n while (parentDataItem != undefined) {\r\n this.initSeries(parentDataItem);\r\n navigationData.push(parentDataItem);\r\n parentDataItem = parentDataItem.parent;\r\n }\r\n navigationData.reverse();\r\n if (this.navigationBar) {\r\n this.navigationBar.data = navigationData;\r\n }\r\n // create series and children series\r\n this.createTreeSeriesReal(dataItem);\r\n // add those which are not in the list\r\n $array.each(this._tempSeries, function (series) {\r\n if (_this.series.indexOf(series) == -1) {\r\n _this.series.push(series);\r\n }\r\n series.zIndex = series.level;\r\n });\r\n };\r\n /**\r\n * [createTreeSeriesReal description]\r\n *\r\n * @todo Description\r\n * @param dataItem [description]\r\n */\r\n TreeMap.prototype.createTreeSeriesReal = function (dataItem) {\r\n if (dataItem.children) {\r\n var level = dataItem.level;\r\n if (level < this.currentLevel + this.maxLevels) {\r\n this.initSeries(dataItem);\r\n for (var i = 0; i < dataItem.children.length; i++) {\r\n var child = dataItem.children.getIndex(i);\r\n if (child.children) {\r\n this.createTreeSeriesReal(child);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n TreeMap.prototype.setData = function (value) {\r\n this.currentLevel = 0;\r\n this.currentlyZoomed = undefined;\r\n this.xAxis.start = 0;\r\n this.xAxis.end = 1;\r\n this.yAxis.start = 0;\r\n this.yAxis.end = 1;\r\n _super.prototype.setData.call(this, value);\r\n };\r\n /**\r\n * @ignore\r\n * Overriding, as tree map series are created on the fly all the time\r\n */\r\n TreeMap.prototype.seriesAppeared = function () {\r\n return true;\r\n };\r\n /**\r\n * Initializes the treemap series.\r\n *\r\n * @todo Description\r\n * @param dataItem Chart data item\r\n */\r\n TreeMap.prototype.initSeries = function (dataItem) {\r\n var _this = this;\r\n if (!dataItem.series) {\r\n var series = void 0;\r\n var template = this.seriesTemplates.getKey(dataItem.level.toString());\r\n if (template) {\r\n series = template.clone();\r\n }\r\n else {\r\n series = this.series.create();\r\n }\r\n // for the legend to get {value}\r\n series.dataItem.dataContext = dataItem;\r\n series.name = dataItem.name;\r\n series.parentDataItem = dataItem;\r\n dataItem.series = series;\r\n var level = dataItem.level;\r\n series.level = level;\r\n var dataContext = dataItem.dataContext;\r\n if (dataContext) {\r\n series.config = dataContext.config;\r\n }\r\n this.dataUsers.removeValue(series); // series do not use data directly, that's why we remove it\r\n series.data = dataItem.children.values;\r\n series.fill = dataItem.color;\r\n series.columnsContainer.hide(0);\r\n series.bulletsContainer.hide(0);\r\n series.columns.template.adapter.add(\"fill\", function (fill, target) {\r\n var dataItem = target.dataItem;\r\n if (dataItem) {\r\n var treeMapDataItem = dataItem.treeMapDataItem;\r\n if (treeMapDataItem) {\r\n target.fill = treeMapDataItem.color;\r\n target.adapter.remove(\"fill\"); //@todo: make it possible adapters applied once?\r\n return treeMapDataItem.color;\r\n }\r\n }\r\n });\r\n if (this.zoomable && (dataItem.level > this.currentLevel || (dataItem.children && dataItem.children.length > 0))) {\r\n series.columns.template.cursorOverStyle = MouseCursorStyle.pointer;\r\n if (this.zoomable) {\r\n series.columns.template.events.on(\"hit\", function (event) {\r\n var seriesDataItem = event.target.dataItem;\r\n if (dataItem.level > _this.currentLevel) {\r\n _this.zoomToChartDataItem(seriesDataItem.treeMapDataItem.parent);\r\n }\r\n else {\r\n _this.zoomToSeriesDataItem(seriesDataItem);\r\n }\r\n }, this, undefined);\r\n }\r\n }\r\n }\r\n this._tempSeries.push(dataItem.series);\r\n };\r\n /**\r\n * Toggles bullets so that labels that belong to current drill level are\r\n * shown.\r\n *\r\n * @param duration Animation duration (ms)\r\n */\r\n TreeMap.prototype.toggleBullets = function (duration) {\r\n var _this = this;\r\n // hide all series which are not in tempSeries\r\n $iter.each(this.series.iterator(), function (series) {\r\n if (_this._tempSeries.indexOf(series) == -1) {\r\n //series.hideReal(duration);\r\n series.columnsContainer.hide();\r\n series.bulletsContainer.hide(duration);\r\n }\r\n else {\r\n //series.showReal(duration);\r\n series.columnsContainer.show();\r\n series.bulletsContainer.show(duration);\r\n series.dataItems.each(function (dataItem) {\r\n dataItem.bullets.each(function (key, bullet) {\r\n bullet.show();\r\n });\r\n });\r\n if (series.level < _this.currentLevel) {\r\n if (_this.hideParentColumns) {\r\n series.columnsContainer.hide();\r\n }\r\n series.bulletsContainer.hide(duration);\r\n }\r\n else if (series.level == _this.currentLevel) {\r\n if (_this.maxLevels > 1) {\r\n series.dataItems.each(function (dataItem) {\r\n if (dataItem.treeMapDataItem.children) {\r\n dataItem.bullets.each(function (key, bullet) {\r\n bullet.hide();\r\n });\r\n }\r\n });\r\n }\r\n }\r\n }\r\n });\r\n };\r\n /**\r\n * Zooms to particular item in series.\r\n *\r\n * @param dataItem Data item\r\n */\r\n TreeMap.prototype.zoomToSeriesDataItem = function (dataItem) {\r\n this.zoomToChartDataItem(dataItem.treeMapDataItem);\r\n };\r\n /**\r\n * Zooms to particular item. If dataItem is not specified, the chart will zoom-out.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n TreeMap.prototype.zoomToChartDataItem = function (dataItem) {\r\n var _this = this;\r\n if (!dataItem) {\r\n dataItem = this._homeDataItem;\r\n }\r\n var zoomOutButton = this.zoomOutButton;\r\n // this is needed because if there is only one fist level, it won't be shown\r\n if (zoomOutButton) {\r\n if (dataItem != this._homeDataItem) {\r\n zoomOutButton.show();\r\n }\r\n else {\r\n zoomOutButton.hide();\r\n }\r\n }\r\n if (dataItem && dataItem.children) {\r\n this.xAxis.zoomToValues(dataItem.x0, dataItem.x1);\r\n this.yAxis.zoomToValues(dataItem.y0, dataItem.y1);\r\n this.currentLevel = dataItem.level;\r\n this.currentlyZoomed = dataItem;\r\n this.createTreeSeries(dataItem);\r\n var rangeChangeAnimation = this.xAxis.rangeChangeAnimation || this.yAxis.rangeChangeAnimation;\r\n if (rangeChangeAnimation && !rangeChangeAnimation.isDisposed() && !rangeChangeAnimation.isFinished()) {\r\n this._dataDisposers.push(rangeChangeAnimation);\r\n rangeChangeAnimation.events.once(\"animationended\", function () {\r\n _this.toggleBullets();\r\n });\r\n }\r\n else {\r\n this.toggleBullets();\r\n }\r\n }\r\n };\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n TreeMap.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n // Add a default screen reader title for accessibility\r\n // This will be overridden in screen reader if there are any `titles` set\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"TreeMap chart\");\r\n }\r\n //this.homeText = this.language.translate(\"Home\");\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n TreeMap.prototype.createDataItem = function () {\r\n return new TreeMapDataItem();\r\n };\r\n Object.defineProperty(TreeMap.prototype, \"maxLevels\", {\r\n /**\r\n * @return Maximum drill-down level\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxLevels\");\r\n },\r\n /**\r\n * Maximum number of levels the chart will display initially.\r\n *\r\n * @default 2\r\n * @param value Maximum drill-down level\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"maxLevels\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMap.prototype, \"currentLevel\", {\r\n /**\r\n * @return Current level\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"currentLevel\");\r\n },\r\n /**\r\n * Current drill-down level the chart is at.\r\n *\r\n * @param value Current level\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"currentLevel\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMap.prototype, \"hideParentColumns\", {\r\n /**\r\n * @return Hide?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"hideParentColumns\");\r\n },\r\n /**\r\n * If set to `true`, columns of parent nodes will be hidden when user\r\n * drills-down into deeper levels.\r\n *\r\n * @sice 4.7.4\r\n * @default false\r\n * @param value Hide?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"hideParentColumns\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMap.prototype, \"sorting\", {\r\n get: function () {\r\n return this.getPropertyValue(\"sorting\");\r\n },\r\n /**\r\n * Sorting direction of treemap items.\r\n *\r\n * Available options: \"none\", \"ascending\", and \"descending\" (default).\r\n *\r\n * @default \"descending\"\r\n * @param value [description]\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"sorting\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates and returns a new series of the suitable type.\r\n *\r\n * @return new series\r\n */\r\n TreeMap.prototype.createSeries = function () {\r\n return new TreeMapSeries();\r\n };\r\n Object.defineProperty(TreeMap.prototype, \"homeText\", {\r\n /**\r\n * @return Home text\r\n */\r\n get: function () {\r\n return this._homeText;\r\n },\r\n /**\r\n * A text displayed on the \"home\" button which is used to go back to level 0\r\n * after drill into sub-items.\r\n *\r\n * @param value Home text\r\n */\r\n set: function (value) {\r\n this._homeText = value;\r\n if (this._homeDataItem) {\r\n this._homeDataItem.name = this._homeText;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n TreeMap.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Instantiate layout algorithm\r\n if ($type.hasValue(config[\"layoutAlgorithm\"]) && $type.isString(config[\"layoutAlgorithm\"])) {\r\n switch (config[\"layoutAlgorithm\"]) {\r\n case \"squarify\":\r\n config[\"layoutAlgorithm\"] = this.squarify;\r\n break;\r\n case \"binaryTree\":\r\n config[\"layoutAlgorithm\"] = this.binaryTree;\r\n break;\r\n case \"slice\":\r\n config[\"layoutAlgorithm\"] = this.slice;\r\n break;\r\n case \"dice\":\r\n config[\"layoutAlgorithm\"] = this.dice;\r\n break;\r\n case \"sliceDice\":\r\n config[\"layoutAlgorithm\"] = this.sliceDice;\r\n break;\r\n default:\r\n delete config[\"layoutAlgorithm\"];\r\n break;\r\n }\r\n }\r\n // Set type for navigation bar\r\n if ($type.hasValue(config.navigationBar) && !$type.hasValue(config.navigationBar.type)) {\r\n config.navigationBar.type = \"NavigationBar\";\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n }\r\n };\r\n /**\r\n * Measures the size of container and informs its children of how much size\r\n * they can occupy, by setting their relative `maxWidth` and `maxHeight`\r\n * properties.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n TreeMap.prototype.validateLayout = function () {\r\n _super.prototype.validateLayout.call(this);\r\n this.layoutItems(this.currentlyZoomed);\r\n };\r\n /**\r\n * Validates (processes) data items.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n TreeMap.prototype.validateDataItems = function () {\r\n _super.prototype.validateDataItems.call(this);\r\n this.layoutItems(this._homeDataItem);\r\n $iter.each(this.series.iterator(), function (series) {\r\n series.validateRawData();\r\n });\r\n this.zoomToChartDataItem(this._homeDataItem);\r\n };\r\n /**\r\n * ==========================================================================\r\n * TREEMAP LAYOUT FUNCTIONS\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * The functions below are from D3.js library (https://d3js.org/)\r\n *\r\n * --------------------------------------------------------------------------\r\n * Copyright 2017 Mike Bostock\r\n *\r\n * Redistribution and use in source and binary forms, with or without\r\n * modification, are permitted provided that the following conditions are met:\r\n *\r\n * 1. Redistributions of source code must retain the above copyright notice,\r\n * this list of conditions and the following disclaimer.\r\n *\r\n * 2. Redistributions in binary form must reproduce the above copyright\r\n * notice,this list of conditions and the following disclaimer in the\r\n * documentation and/or other materials provided with the distribution.\r\n *\r\n * 3. Neither the name of the copyright holder nor the names of its\r\n * contributors may be used to endorse or promote products derived from\r\n * this software without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n * --------------------------------------------------------------------------\r\n * @hidden\r\n */\r\n /**\r\n * Treemap layout algorithm: binaryTree.\r\n *\r\n * @ignore Exclude from docs\r\n * @param parent Data item\r\n */\r\n TreeMap.prototype.binaryTree = function (parent) {\r\n var nodes = parent.children, i, n = nodes.length, sum, sums = new Array(n + 1);\r\n for (sums[0] = sum = i = 0; i < n; ++i) {\r\n sums[i + 1] = sum += nodes.getIndex(i).value;\r\n }\r\n if (n > 0) {\r\n partition(0, n, parent.value, parent.x0, parent.y0, parent.x1, parent.y1);\r\n }\r\n function partition(i, j, value, x0, y0, x1, y1) {\r\n if (i >= j - 1) {\r\n var node = nodes.getIndex(i);\r\n node.x0 = x0;\r\n node.y0 = y0;\r\n node.x1 = x1;\r\n node.y1 = y1;\r\n return;\r\n }\r\n var valueOffset = sums[i], valueTarget = (value / 2) + valueOffset, k = i + 1, hi = j - 1;\r\n while (k < hi) {\r\n var mid = k + hi >>> 1;\r\n if (sums[mid] < valueTarget) {\r\n k = mid + 1;\r\n }\r\n else {\r\n hi = mid;\r\n }\r\n }\r\n if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) {\r\n --k;\r\n }\r\n var valueLeft = sums[k] - valueOffset, valueRight = value - valueLeft;\r\n if (value == 0) {\r\n var node = nodes.getIndex(i);\r\n node.x0 = x0;\r\n node.y0 = y0;\r\n node.x1 = x1;\r\n node.y1 = y1;\r\n return;\r\n }\r\n if ((x1 - x0) > (y1 - y0)) {\r\n var xk = (x0 * valueRight + x1 * valueLeft) / value;\r\n partition(i, k, valueLeft, x0, y0, xk, y1);\r\n partition(k, j, valueRight, xk, y0, x1, y1);\r\n }\r\n else {\r\n var yk = (y0 * valueRight + y1 * valueLeft) / value;\r\n partition(i, k, valueLeft, x0, y0, x1, yk);\r\n partition(k, j, valueRight, x0, yk, x1, y1);\r\n }\r\n }\r\n };\r\n /**\r\n * Treemap layout algorithm: slice.\r\n *\r\n * @ignore Exclude from docs\r\n * @param parent Data item\r\n */\r\n TreeMap.prototype.slice = function (parent) {\r\n var x0 = parent.x0;\r\n var x1 = parent.x1;\r\n var y0 = parent.y0;\r\n var y1 = parent.y1;\r\n var nodes = parent.children;\r\n var node;\r\n var i = -1;\r\n var n = nodes.length;\r\n var k = parent.value && (y1 - y0) / parent.value;\r\n while (++i < n) {\r\n node = nodes.getIndex(i);\r\n node.x0 = x0;\r\n node.x1 = x1;\r\n node.y0 = y0;\r\n y0 += node.value * k;\r\n node.y1 = y0;\r\n }\r\n };\r\n /**\r\n * Treemap layout algorithm: dice.\r\n *\r\n * @ignore Exclude from docs\r\n * @param parent Data item\r\n */\r\n TreeMap.prototype.dice = function (parent) {\r\n var x0 = parent.x0;\r\n var x1 = parent.x1;\r\n var y0 = parent.y0;\r\n var y1 = parent.y1;\r\n var nodes = parent.children, node, i = -1, n = nodes.length, k = parent.value && (x1 - x0) / parent.value;\r\n while (++i < n) {\r\n node = nodes.getIndex(i);\r\n node.y0 = y0;\r\n node.y1 = y1;\r\n node.x0 = x0;\r\n x0 += node.value * k;\r\n node.x1 = x0;\r\n }\r\n };\r\n /**\r\n * Treemap layout algorithm: slideDice.\r\n *\r\n * @ignore Exclude from docs\r\n * @param parent Data item\r\n */\r\n TreeMap.prototype.sliceDice = function (parent) {\r\n if (parent.level & 1) {\r\n this.slice(parent);\r\n }\r\n else {\r\n this.dice(parent);\r\n }\r\n };\r\n /**\r\n * Treemap layout algorithm: squarify.\r\n *\r\n * @ignore Exclude from docs\r\n * @param parent Data item\r\n */\r\n TreeMap.prototype.squarify = function (parent) {\r\n var ratio = (1 + Math.sqrt(5)) / 2;\r\n var x0 = parent.x0;\r\n var x1 = parent.x1;\r\n var y0 = parent.y0;\r\n var y1 = parent.y1;\r\n var nodes = parent.children;\r\n var nodeValue;\r\n var i0 = 0;\r\n var i1 = 0;\r\n var n = nodes.length;\r\n var dx;\r\n var dy;\r\n var value = parent.value;\r\n var sumValue;\r\n var minValue;\r\n var maxValue;\r\n var newRatio;\r\n var minRatio;\r\n var alpha;\r\n var beta;\r\n while (i0 < n) {\r\n dx = x1 - x0;\r\n dy = y1 - y0;\r\n // Find the next non-empty node.\r\n do {\r\n sumValue = nodes.getIndex(i1++).value;\r\n } while (!sumValue && i1 < n);\r\n minValue = maxValue = sumValue;\r\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\r\n beta = sumValue * sumValue * alpha;\r\n minRatio = Math.max(maxValue / beta, beta / minValue);\r\n // Keep adding nodes while the aspect ratio maintains or improves.\r\n for (; i1 < n; ++i1) {\r\n sumValue += nodeValue = nodes.getIndex(i1).value;\r\n if (nodeValue < minValue) {\r\n minValue = nodeValue;\r\n }\r\n if (nodeValue > maxValue) {\r\n maxValue = nodeValue;\r\n }\r\n beta = sumValue * sumValue * alpha;\r\n newRatio = Math.max(maxValue / beta, beta / minValue);\r\n if (newRatio > minRatio) {\r\n sumValue -= nodeValue;\r\n break;\r\n }\r\n minRatio = newRatio;\r\n }\r\n // Position and record the row orientation.\r\n var row = this.dataItems.template.clone();\r\n row.value = sumValue;\r\n row.dice = dx < dy;\r\n row.children = nodes.slice(i0, i1);\r\n row.x0 = x0;\r\n row.y0 = y0;\r\n row.x1 = x1;\r\n row.y1 = y1;\r\n if (row.dice) {\r\n row.y1 = value ? (y0 += (dy * sumValue) / value) : y1;\r\n this.dice(row);\r\n }\r\n else {\r\n row.x1 = value ? (x0 += (dx * sumValue) / value) : x1;\r\n this.slice(row);\r\n }\r\n value -= sumValue;\r\n i0 = i1;\r\n }\r\n };\r\n TreeMap.prototype.handleSeriesAdded2 = function () {\r\n // void\r\n };\r\n /**\r\n * [handleDataItemValueChange description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n TreeMap.prototype.handleDataItemValueChange = function (dataItem, name) {\r\n if (name == \"value\") {\r\n this.invalidateDataItems();\r\n }\r\n };\r\n TreeMap.prototype.handleDataItemWorkingValueChange = function (dataItem, name) {\r\n if (name == \"value\") {\r\n this.invalidateDataItems();\r\n }\r\n };\r\n TreeMap.prototype.getLegendLevel = function (dataItem) {\r\n if (!dataItem) {\r\n return;\r\n }\r\n if (!dataItem.children) {\r\n return;\r\n }\r\n if (dataItem.children.length > 1) {\r\n return dataItem;\r\n }\r\n else if (dataItem.children.length == 1) {\r\n var child = dataItem.children.getIndex(0);\r\n if (child.children) {\r\n return this.getLegendLevel(child);\r\n }\r\n else {\r\n return dataItem;\r\n }\r\n }\r\n else {\r\n return dataItem;\r\n }\r\n };\r\n TreeMap.prototype.handleLegendSeriesAdded = function (series) {\r\n // void\r\n };\r\n Object.defineProperty(TreeMap.prototype, \"homeDataItem\", {\r\n /**\r\n * A data item associated with top node.\r\n *\r\n * @since 4.8.2\r\n */\r\n get: function () {\r\n return this._homeDataItem;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Setups the legend to use the chart's data.\r\n * @ignore\r\n */\r\n TreeMap.prototype.feedLegend = function () {\r\n var legend = this.legend;\r\n if (legend) {\r\n legend.dataFields.name = \"name\";\r\n var legendParent = this.getLegendLevel(this._homeDataItem);\r\n if (legendParent) {\r\n var legendData_1 = [];\r\n legendParent.children.each(function (dataItem) {\r\n //if (!dataItem.hiddenInLegend) {\r\n legendData_1.push(dataItem);\r\n //}\r\n });\r\n legend.data = legendData_1;\r\n }\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n TreeMap.prototype.disposeData = function () {\r\n _super.prototype.disposeData.call(this);\r\n this._homeDataItem = undefined;\r\n this.series.clear();\r\n if (this.navigationBar) {\r\n this.navigationBar.disposeData();\r\n }\r\n this.xAxis.disposeData();\r\n this.yAxis.disposeData();\r\n };\r\n /**\r\n * Since this chart uses hierarchical data, we need to remove childrent\r\n * dataField from export of non-hierarchical formats such as CSV and XSLX.\r\n *\r\n * @return Export\r\n */\r\n TreeMap.prototype.getExporting = function () {\r\n var _this = this;\r\n var exporting = _super.prototype.getExporting.call(this);\r\n exporting.adapter.add(\"formatDataFields\", function (info) {\r\n if (info.format == \"csv\" || info.format == \"xlsx\") {\r\n if ($type.hasValue(_this.dataFields.children)) {\r\n delete info.dataFields[_this.dataFields.children];\r\n }\r\n }\r\n return info;\r\n });\r\n return exporting;\r\n };\r\n return TreeMap;\r\n}(XYChart));\r\nexport { TreeMap };\r\n/**\r\n * Register class, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"TreeMap\"] = TreeMap;\r\n//# sourceMappingURL=TreeMap.js.map","/**\r\n * Module, defining Axis Renderer for horizontal 3D axes.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AxisRendererX } from \"../axes/AxisRendererX\";\r\nimport { MutableValueDisposer } from \"../../core/utils/Disposer\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Renderer for horizontal 3D axis.\r\n *\r\n * @see {@link IAxisRendererX3DEvents} for a list of available events\r\n * @see {@link IAxisRendererX3DAdapters} for a list of available Adapters\r\n */\r\nvar AxisRendererX3D = /** @class */ (function (_super) {\r\n __extends(AxisRendererX3D, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param axis Related axis\r\n */\r\n function AxisRendererX3D() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * A related chart.\r\n *\r\n * @todo Description\r\n */\r\n _this._chart = new MutableValueDisposer();\r\n _this.className = \"AxisRendererX3D\";\r\n _this._disposers.push(_this._chart);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Updates and positions a grid element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param grid Grid element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererX3D.prototype.updateGridElement = function (grid, position, endPosition) {\r\n position = position + (endPosition - position) * grid.location;\r\n var point = this.positionToPoint(position);\r\n if (grid.element) {\r\n var dx = this.chart.dx3D || 0;\r\n var dy = this.chart.dy3D || 0;\r\n var h = this.getHeight();\r\n grid.path = $path.moveTo({ x: dx, y: dy }) + $path.lineTo({ x: dx, y: h + dy }) + $path.lineTo({ x: 0, y: h });\r\n }\r\n this.positionItem(grid, point);\r\n this.toggleVisibility(grid, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions the base grid element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererX3D.prototype.updateBaseGridElement = function () {\r\n _super.prototype.updateBaseGridElement.call(this);\r\n var h = this.getHeight();\r\n var dx = this.chart.dx3D || 0;\r\n var dy = this.chart.dy3D || 0;\r\n this.baseGrid.path = $path.moveTo({ x: dx, y: dy }) + $path.lineTo({ x: 0, y: 0 }) + $path.lineTo({ x: 0, y: h });\r\n };\r\n Object.defineProperty(AxisRendererX3D.prototype, \"chart\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Chart\r\n */\r\n get: function () {\r\n return this._chart.get();\r\n },\r\n /**\r\n * Chart, associated with the Axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Chart\r\n */\r\n set: function (chart) {\r\n if (chart) {\r\n this._chart.set(chart, chart.events.on(\"propertychanged\", this.handle3DChanged, this, false));\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Invoked when 3D-related settings change, like depth or angle.\r\n *\r\n * @param event Event\r\n */\r\n AxisRendererX3D.prototype.handle3DChanged = function (event) {\r\n if (event.property == \"depth\" || event.property == \"angle\") {\r\n this.invalidate();\r\n }\r\n };\r\n return AxisRendererX3D;\r\n}(AxisRendererX));\r\nexport { AxisRendererX3D };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"AxisRendererX3D\"] = AxisRendererX3D;\r\n//# sourceMappingURL=AxisRendererX3D.js.map","/**\r\n * Module, defining Axis Renderer for vertical 3D axes.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AxisRendererY } from \"../axes/AxisRendererY\";\r\nimport { MutableValueDisposer } from \"../../core/utils/Disposer\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Renderer for vertical 3D axis.\r\n *\r\n * @see {@link IAxisRendererY3DEvents} for a list of available events\r\n * @see {@link IAxisRendererY3DAdapters} for a list of available Adapters\r\n */\r\nvar AxisRendererY3D = /** @class */ (function (_super) {\r\n __extends(AxisRendererY3D, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param axis Related axis\r\n */\r\n function AxisRendererY3D() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * A related chart.\r\n *\r\n * @todo Description\r\n */\r\n _this._chart = new MutableValueDisposer();\r\n _this.className = \"AxisRendererY3D\";\r\n _this._disposers.push(_this._chart);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Updates and positions a grid element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param grid Grid element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererY3D.prototype.updateGridElement = function (grid, position, endPosition) {\r\n position = position + (endPosition - position) * grid.location;\r\n var point = this.positionToPoint(position);\r\n if (grid.element) {\r\n var dx = this.chart.dx3D || 0;\r\n var dy = this.chart.dy3D || 0;\r\n var w = this.getWidth();\r\n grid.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: dx, y: dy }) + $path.lineTo({ x: w + dx, y: dy });\r\n }\r\n this.positionItem(grid, point);\r\n this.toggleVisibility(grid, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions the base grid element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererY3D.prototype.updateBaseGridElement = function () {\r\n _super.prototype.updateBaseGridElement.call(this);\r\n var dx = this.chart.dx3D || 0;\r\n var dy = this.chart.dy3D || 0;\r\n var w = this.getWidth();\r\n this.baseGrid.path = $path.moveTo({ x: 0, y: 0 })\r\n + $path.lineTo({ x: w, y: 0 })\r\n + $path.lineTo({ x: w + dx, y: dy });\r\n };\r\n Object.defineProperty(AxisRendererY3D.prototype, \"chart\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Chart\r\n */\r\n get: function () {\r\n return this._chart.get();\r\n },\r\n /**\r\n * Chart, associated with the Axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Chart\r\n */\r\n set: function (chart) {\r\n if (chart) {\r\n this._chart.set(chart, chart.events.on(\"propertychanged\", this.handle3DChanged, this, false));\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Invoked when 3D-related settings change, like depth or angle.\r\n *\r\n * @param event Event\r\n */\r\n AxisRendererY3D.prototype.handle3DChanged = function (event) {\r\n if (event.property == \"depth\" || event.property == \"angle\") {\r\n this.invalidate();\r\n }\r\n };\r\n return AxisRendererY3D;\r\n}(AxisRendererY));\r\nexport { AxisRendererY3D };\r\n//# sourceMappingURL=AxisRendererY3D.js.map","/**\r\n * Module that defines everything related to building 3D Columns.\r\n * It is a container which has column3D element which is a Rectangle3D.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Column } from \"./Column\";\r\nimport { Rectangle3D } from \"../../core/elements/3d/Rectangle3D\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Class used to creates Column3Ds.\r\n *\r\n * @see {@link IColumn3DEvents} for a list of available events\r\n * @see {@link IColumn3DAdapters} for a list of available Adapters\r\n * @todo Usage example\r\n * @important\r\n */\r\nvar Column3D = /** @class */ (function (_super) {\r\n __extends(Column3D, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Column3D() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Column3D\";\r\n return _this;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n Column3D.prototype.createAssets = function () {\r\n this.column3D = this.createChild(Rectangle3D);\r\n this.column3D.shouldClone = false;\r\n this.column3D.strokeOpacity = 0;\r\n // some dirty hack so that if user access column, it won't get error\r\n this.column = this.column3D;\r\n };\r\n /**\r\n * @ignore Exclude from docs\r\n */\r\n Column3D.prototype.validate = function () {\r\n _super.prototype.validate.call(this);\r\n if (this.column3D) {\r\n this.column3D.width = this.pixelWidth;\r\n this.column3D.height = this.pixelHeight;\r\n if (this.column3D.invalid) {\r\n this.column3D.validate();\r\n }\r\n }\r\n };\r\n /**\r\n * Copies all parameters from another [[Column3D]].\r\n *\r\n * @param source Source Column3D\r\n */\r\n Column3D.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n if (this.column3D) {\r\n this.column3D.copyFrom(source.column3D);\r\n }\r\n };\r\n /**\r\n * Sets actual `fill` property on the SVG element, including applicable color\r\n * modifiers.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Fill\r\n */\r\n Column3D.prototype.setFill = function (value) {\r\n _super.prototype.setFill.call(this, value);\r\n this.column.fill = value;\r\n };\r\n return Column3D;\r\n}(Column));\r\nexport { Column3D };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Column3D\"] = Column3D;\r\n//# sourceMappingURL=Column3D.js.map","/**\r\n * 3D column series module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { ColumnSeries, ColumnSeriesDataItem } from \"../series/ColumnSeries\";\r\nimport { Column3D } from \"../elements/Column3D\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\nvar ColumnSeries3DDataItem = /** @class */ (function (_super) {\r\n __extends(ColumnSeries3DDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ColumnSeries3DDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ColumnSeries3DDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return ColumnSeries3DDataItem;\r\n}(ColumnSeriesDataItem));\r\nexport { ColumnSeries3DDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[Series]] for a 3D column graph.\r\n *\r\n * @see {@link IColumnSeries3DEvents} for a list of available Events\r\n * @see {@link IColumnSeries3DAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\r\nvar ColumnSeries3D = /** @class */ (function (_super) {\r\n __extends(ColumnSeries3D, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ColumnSeries3D() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ColumnSeries3D\";\r\n _this.columns.template.column3D.applyOnClones = true;\r\n _this.columns.template.hiddenState.properties.visible = true;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(ColumnSeries3D.prototype, \"columnsContainer\", {\r\n /**\r\n * @ignore\r\n */\r\n get: function () {\r\n var chart = this.chart;\r\n if (chart && chart.columnsContainer && chart.leftAxesContainer.layout != \"vertical\" && chart.rightAxesContainer.layout != \"vertical\" && chart.bottomAxesContainer.layout != \"horizontal\" && chart.topAxesContainer.layout != \"horizontal\") {\r\n return chart.columnsContainer;\r\n }\r\n else {\r\n return this._columnsContainer;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Validates data item's elements.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n ColumnSeries3D.prototype.validateDataElementReal = function (dataItem) {\r\n _super.prototype.validateDataElementReal.call(this, dataItem);\r\n if (dataItem.column) {\r\n dataItem.column.dx = this.dx;\r\n dataItem.column.dy = this.dy;\r\n dataItem.column.visible = this.visible;\r\n }\r\n };\r\n /**\r\n * Validates data item's elements.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ColumnSeries3D.prototype.validateDataElements = function () {\r\n _super.prototype.validateDataElements.call(this);\r\n if (this.chart) {\r\n this.chart.invalidateLayout();\r\n }\r\n };\r\n /**\r\n * Returns an element to use for 3D bar.\r\n * @ignore\r\n * @return Element.\r\n */\r\n ColumnSeries3D.prototype.createColumnTemplate = function () {\r\n return new Column3D();\r\n };\r\n Object.defineProperty(ColumnSeries3D.prototype, \"depth\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Depth (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"depth\");\r\n },\r\n /**\r\n * Depth (height) of the slices in the series in pixels.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Depth (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"depth\", value, true);\r\n var template = this.columns.template; // todo: Cone is not Rectangle3D, maybe we should do some I3DShape?\r\n template.column3D.depth = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ColumnSeries3D.prototype, \"angle\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Angle (0-360)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"angle\");\r\n },\r\n /**\r\n * Angle of view for the slices in series. (0-360)\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Angle (0-360)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"angle\", value);\r\n var template = this.columns.template;\r\n template.column3D.angle = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ColumnSeries3D;\r\n}(ColumnSeries));\r\nexport { ColumnSeries3D };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ColumnSeries3D\"] = ColumnSeries3D;\r\nregistry.registeredClasses[\"ColumnSeries3DDataItem\"] = ColumnSeries3DDataItem;\r\n//# sourceMappingURL=ColumnSeries3D.js.map","/**\r\n * Module for building 3D serial charts.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * Imports\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { XYChart, XYChartDataItem } from \"./XYChart\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { AxisRendererX3D } from \"../axes/AxisRendererX3D\";\r\nimport { AxisRendererY3D } from \"../axes/AxisRendererY3D\";\r\nimport { ColumnSeries3D } from \"../series/ColumnSeries3D\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[XYChart3D]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar XYChart3DDataItem = /** @class */ (function (_super) {\r\n __extends(XYChart3DDataItem, _super);\r\n function XYChart3DDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"XYChart3DDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return XYChart3DDataItem;\r\n}(XYChartDataItem));\r\nexport { XYChart3DDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a 3D XY chart.\r\n *\r\n * @see {@link IXYChart3DEvents} for a list of available Events\r\n * @see {@link IXYChart3DAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/xy-chart/} for documentation\r\n * @important\r\n */\r\nvar XYChart3D = /** @class */ (function (_super) {\r\n __extends(XYChart3D, _super);\r\n /**\r\n * Constructor\r\n */\r\n function XYChart3D() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Type of the axis renderer to use for X axes.\r\n */\r\n _this._axisRendererX = AxisRendererX3D;\r\n /**\r\n * Type of the axis renderer to use for Y axes.\r\n */\r\n _this._axisRendererY = AxisRendererY3D;\r\n _this.className = \"XYChart3D\";\r\n // Set defaults\r\n _this.depth = 30;\r\n _this.angle = 30;\r\n // Creeate container for columns\r\n var columnsContainer = _this.seriesContainer.createChild(Container);\r\n columnsContainer.shouldClone = false;\r\n columnsContainer.isMeasured = false;\r\n columnsContainer.layout = \"none\";\r\n _this.columnsContainer = columnsContainer;\r\n _this.columnsContainer.mask = _this.createChild(Sprite);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * This is done because for some reason IE doesn't change mask if path of a\r\n * mask changes.\r\n */\r\n XYChart3D.prototype.updateSeriesMasks = function () {\r\n _super.prototype.updateSeriesMasks.call(this);\r\n if ($utils.isIE()) {\r\n var columnsContainer = this.columnsContainer;\r\n var mask = columnsContainer.mask;\r\n columnsContainer.mask = undefined;\r\n columnsContainer.mask = mask;\r\n }\r\n };\r\n Object.defineProperty(XYChart3D.prototype, \"depth\", {\r\n /**\r\n * @return Depth (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"depth\");\r\n },\r\n /**\r\n * Depth of the 3D chart / columns in pixels.\r\n *\r\n * @param value Depth (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"depth\", value);\r\n this.fixLayout();\r\n this.invalidateDataUsers();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYChart3D.prototype, \"angle\", {\r\n /**\r\n * @return Angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"angle\");\r\n },\r\n /**\r\n * Angle the chart is viewed at.\r\n *\r\n * @todo Description (review)\r\n * @param value Angle\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"angle\", value);\r\n this.fixLayout();\r\n this.invalidateDataUsers();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYChart3D.prototype, \"dx3D\", {\r\n /**\r\n * A calculated horizontal 3D offset (px).\r\n *\r\n * @readonly\r\n * @return Offset (px)\r\n */\r\n get: function () {\r\n return $math.cos(this.angle) * this.depth;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYChart3D.prototype, \"dy3D\", {\r\n /**\r\n * A calculated vertical 3D offset (px).\r\n *\r\n * @readonly\r\n * @return Offset (px)\r\n */\r\n get: function () {\r\n return -$math.sin(this.angle) * this.depth;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * (Re)validates layout\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYChart3D.prototype.validateLayout = function () {\r\n _super.prototype.validateLayout.call(this);\r\n this.fixColumns();\r\n };\r\n /**\r\n * Updates the layout (padding and scrollbar positions) to accommodate for\r\n * 3D depth and angle.\r\n */\r\n XYChart3D.prototype.fixLayout = function () {\r\n this.chartContainer.paddingTop = -this.dy3D;\r\n this.chartContainer.paddingRight = this.dx3D;\r\n if (this.scrollbarX) {\r\n this.scrollbarX.dy = this.dy3D;\r\n this.scrollbarX.dx = this.dx3D;\r\n }\r\n if (this.scrollbarY) {\r\n this.scrollbarY.dy = this.dy3D;\r\n this.scrollbarY.dx = this.dx3D;\r\n }\r\n this.fixColumns();\r\n _super.prototype.fixLayout.call(this);\r\n };\r\n /**\r\n * Updates column positions, offset and dimensions based on chart's angle\r\n * and depth.\r\n */\r\n XYChart3D.prototype.fixColumns = function () {\r\n var _this = this;\r\n var count = 1;\r\n var i = 0;\r\n $iter.each(this.series.iterator(), function (series) {\r\n if (series instanceof ColumnSeries3D) {\r\n if (!series.clustered && i > 0) {\r\n count++;\r\n }\r\n series.depthIndex = count - 1;\r\n i++;\r\n }\r\n });\r\n var s = 0;\r\n $iter.each(this.series.iterator(), function (series) {\r\n if (series instanceof ColumnSeries3D) {\r\n series.depth = _this.depth / (count);\r\n series.angle = _this.angle;\r\n if (series.columnsContainer == _this.columnsContainer) {\r\n series.dx = _this.depth / (count) * $math.cos(_this.angle) * (series.depthIndex);\r\n series.dy = -_this.depth / (count) * $math.sin(_this.angle) * (series.depthIndex);\r\n }\r\n var inversed_1 = false;\r\n if ((series.baseAxis == series.xAxis && series.xAxis.renderer.inversed) || (series.baseAxis == series.yAxis && series.yAxis.renderer.inversed)) {\r\n inversed_1 = true;\r\n }\r\n var i_1 = 1;\r\n series.dataItems.each(function (dataItem) {\r\n var column = dataItem.column;\r\n if (column) {\r\n if (inversed_1) {\r\n column.zIndex = 1000 * (1000 - i_1) + s - series.depthIndex * 100;\r\n }\r\n else {\r\n column.zIndex = 1000 * i_1 + s - series.depthIndex * 100;\r\n }\r\n }\r\n i_1++;\r\n });\r\n if (inversed_1) {\r\n s--;\r\n }\r\n else {\r\n s++;\r\n }\r\n }\r\n });\r\n this.maskColumns();\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n XYChart3D.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Set up series\r\n if ($type.hasValue(config.series) && $type.isArray(config.series)) {\r\n for (var i = 0, len = config.series.length; i < len; i++) {\r\n config.series[i].type = config.series[i].type || \"ColumnSeries3D\";\r\n }\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n XYChart3D.prototype.maskColumns = function () {\r\n var w = this.plotContainer.pixelWidth;\r\n var h = this.plotContainer.pixelHeight;\r\n var dx = this.dx3D;\r\n var dy = this.dy3D;\r\n var path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: dx, y: dy }) + $path.lineTo({ x: w + dx, y: dy }) + $path.lineTo({ x: w + dx, y: h + dy }) + $path.lineTo({ x: w, y: h }) + $path.lineTo({ x: w, y: h }) + $path.lineTo({ x: 0, y: h }) + $path.closePath();\r\n var columnsContainer = this.columnsContainer;\r\n if (columnsContainer && columnsContainer.mask) {\r\n columnsContainer.mask.path = path;\r\n }\r\n };\r\n return XYChart3D;\r\n}(XYChart));\r\nexport { XYChart3D };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"XYChart3D\"] = XYChart3D;\r\n//# sourceMappingURL=XYChart3D.js.map","/**\r\n * HeatLegend module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../../core/Container\";\r\nimport { LinearGradient } from \"../../core/rendering/fills/LinearGradient\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { toColor, Color } from \"../../core/utils/Color\";\r\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { ValueAxis } from \"../../charts/axes/ValueAxis\";\r\nimport { AxisRendererX } from \"../../charts/axes/AxisRendererX\";\r\nimport { AxisRendererY } from \"../../charts/axes/AxisRendererY\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $colors from \"../../core/utils/Colors\";\r\nimport { RoundedRectangle } from \"../../core/elements/RoundedRectangle\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * This class creates a link (waved color-filled line) between two nodes in a\r\n * Sankey Diagram.\r\n *\r\n * @see {@link IHeatLegendEvents} for a list of available events\r\n * @see {@link IHeatLegendAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar HeatLegend = /** @class */ (function (_super) {\r\n __extends(HeatLegend, _super);\r\n /**\r\n * Constructor\r\n */\r\n function HeatLegend() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"HeatLegend\";\r\n _this.markerContainer = _this.createChild(Container);\r\n _this.markerContainer.shouldClone = false;\r\n _this.markerCount = 1;\r\n // Create a template container and list for the a marker\r\n var marker = new RoundedRectangle();\r\n marker.minHeight = 20;\r\n marker.minWidth = 20;\r\n marker.interactionsEnabled = false;\r\n marker.fillOpacity = 1;\r\n marker.cornerRadius(0, 0, 0, 0);\r\n _this.markerContainer.minHeight = 20;\r\n _this.markerContainer.minWidth = 20;\r\n _this.orientation = \"horizontal\";\r\n _this.markers = new ListTemplate(marker);\r\n _this._disposers.push(new ListDisposer(_this.markers));\r\n _this._disposers.push(_this.markers.template);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n HeatLegend.prototype.getMinFromRules = function (property) {\r\n var series = this.series;\r\n if (series) {\r\n var minValue_1;\r\n $iter.eachContinue(series.heatRules.iterator(), function (heatRule) {\r\n if (heatRule.property == property) {\r\n minValue_1 = heatRule.min;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return minValue_1;\r\n }\r\n };\r\n HeatLegend.prototype.getMaxFromRules = function (property) {\r\n var series = this.series;\r\n if (series) {\r\n var maxValue_1;\r\n $iter.each(series.heatRules.iterator(), function (heatRule) {\r\n if (heatRule.property == property) {\r\n maxValue_1 = heatRule.max;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return maxValue_1;\r\n }\r\n };\r\n /**\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n HeatLegend.prototype.validate = function () {\r\n _super.prototype.validate.call(this);\r\n this.valueAxis.renderer.inversed = this.reverseOrder;\r\n var series = this.series;\r\n var minColor = this.minColor;\r\n var maxColor = this.maxColor;\r\n if (!$type.hasValue(minColor)) {\r\n minColor = toColor(this.getMinFromRules(\"fill\"));\r\n }\r\n if (!$type.hasValue(maxColor)) {\r\n maxColor = toColor(this.getMaxFromRules(\"fill\"));\r\n }\r\n if (series) {\r\n var seriesFill = series.fill;\r\n if (!$type.hasValue(minColor) && seriesFill instanceof Color) {\r\n minColor = seriesFill;\r\n }\r\n if (!$type.hasValue(maxColor) && seriesFill instanceof Color) {\r\n maxColor = seriesFill;\r\n }\r\n }\r\n if (!$type.hasValue(maxColor)) {\r\n maxColor = toColor(this.getMaxFromRules(\"fill\"));\r\n }\r\n var minOpacity = $type.toNumber(this.getMinFromRules(\"fillOpacity\"));\r\n if (!$type.isNumber(minOpacity)) {\r\n minOpacity = 1;\r\n }\r\n var maxOpacity = $type.toNumber(this.getMaxFromRules(\"fillOpacity\"));\r\n if (!$type.isNumber(maxOpacity)) {\r\n maxOpacity = 1;\r\n }\r\n var minStrokeOpacity = $type.toNumber(this.getMinFromRules(\"strokeOpacity\"));\r\n if (!$type.isNumber(minStrokeOpacity)) {\r\n minStrokeOpacity = 1;\r\n }\r\n var maxStrokeOpacity = $type.toNumber(this.getMaxFromRules(\"strokeOpacity\"));\r\n if (!$type.isNumber(maxStrokeOpacity)) {\r\n maxStrokeOpacity = 1;\r\n }\r\n var minStroke = toColor(this.getMinFromRules(\"stroke\"));\r\n var maxStroke = toColor(this.getMaxFromRules(\"stroke\"));\r\n //if (series) {\r\n for (var i = 0; i < this.markerCount; i++) {\r\n var marker = this.markers.getIndex(i);\r\n if (!marker) {\r\n marker = this.markers.create();\r\n marker.parent = this.markerContainer;\r\n marker.height = percent(100);\r\n marker.width = percent(100);\r\n }\r\n if (this.markerCount == 1) {\r\n var gradient = new LinearGradient();\r\n if (this.reverseOrder) {\r\n gradient.addColor(maxColor, maxOpacity);\r\n gradient.addColor(minColor, minOpacity);\r\n }\r\n else {\r\n gradient.addColor(minColor, minOpacity);\r\n gradient.addColor(maxColor, maxOpacity);\r\n }\r\n if (this.orientation == \"vertical\") {\r\n gradient.rotation = -90;\r\n }\r\n marker.fill = gradient;\r\n if ($type.hasValue(minStroke) && $type.hasValue(maxStroke)) {\r\n var strokeGradient = new LinearGradient();\r\n if (this.reverseOrder) {\r\n strokeGradient.addColor(maxStroke, maxStrokeOpacity);\r\n strokeGradient.addColor(minStroke, minStrokeOpacity);\r\n }\r\n else {\r\n strokeGradient.addColor(minStroke, minStrokeOpacity);\r\n strokeGradient.addColor(maxStroke, maxStrokeOpacity);\r\n }\r\n if (this.orientation == \"vertical\") {\r\n strokeGradient.rotation = -90;\r\n }\r\n marker.stroke = strokeGradient;\r\n }\r\n }\r\n else {\r\n var c = i;\r\n if (this.reverseOrder) {\r\n c = this.markerCount - i - 1;\r\n }\r\n var color = new Color($colors.interpolate(minColor.rgb, maxColor.rgb, c / this.markerCount));\r\n marker.fill = color;\r\n var opacity = minOpacity + (maxOpacity - minOpacity) * c / this.markerCount;\r\n marker.fillOpacity = opacity;\r\n if ($type.hasValue(minStroke) && $type.hasValue(maxStroke)) {\r\n var color_1 = new Color($colors.interpolate(minStroke.rgb, maxStroke.rgb, c / this.markerCount));\r\n marker.stroke = color_1;\r\n var opacity_1 = minStrokeOpacity + (maxStrokeOpacity - minStrokeOpacity) * c / this.markerCount;\r\n marker.strokeOpacity = opacity_1;\r\n }\r\n }\r\n }\r\n var renderer = this.valueAxis.renderer;\r\n if (this.markerCount > 1) {\r\n if (this.orientation == \"horizontal\") {\r\n renderer.minGridDistance = this.measuredWidth / this.markerCount;\r\n }\r\n else {\r\n renderer.minGridDistance = this.measuredHeight / this.markerCount;\r\n }\r\n }\r\n this.valueAxis.invalidate();\r\n for (var i = this.markerCount, len = this.markers.length; i < len; i++) {\r\n this.markers.getIndex(i).parent = undefined;\r\n }\r\n };\r\n Object.defineProperty(HeatLegend.prototype, \"minColor\", {\r\n /**\r\n * Returns minColor value\r\n * @return {Color}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minColor\");\r\n },\r\n /**\r\n * Min color of a heat legend. If a series is set for the legend, minColor is taken from series.\r\n *\r\n * @param {Color}\r\n */\r\n set: function (value) {\r\n if (!(value instanceof Color)) {\r\n value = toColor(value);\r\n }\r\n this.setColorProperty(\"minColor\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(HeatLegend.prototype, \"maxColor\", {\r\n /**\r\n * Returns maxColor value\r\n * @return {Color}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxColor\");\r\n },\r\n /**\r\n * Max color of a heat legend. If a series is set for the legend, maxColor is taken from series.\r\n *\r\n * @param {Color}\r\n */\r\n set: function (value) {\r\n if (!(value instanceof Color)) {\r\n value = toColor(value);\r\n }\r\n this.setColorProperty(\"maxColor\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(HeatLegend.prototype, \"markerCount\", {\r\n /**\r\n * Returns number of color squares (markers).\r\n * @return {number}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"markerCount\");\r\n },\r\n /**\r\n * Number of color squares (markers) in the heat legend. If only 1 marker is used, it will be filled with gradient.\r\n *\r\n * @param {number}\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"markerCount\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(HeatLegend.prototype, \"minValue\", {\r\n /**\r\n * Returns minimum value of heat legend.\r\n * @return {number}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minValue\");\r\n },\r\n /**\r\n * Minimum value of heat legend's value axis. If a series is set for the legend, min is taken from series.\r\n *\r\n * @param {number}\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"minValue\", value);\r\n this.valueAxis.min = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(HeatLegend.prototype, \"maxValue\", {\r\n /**\r\n * Returns maximum value of heat legend.\r\n * @return {number}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxValue\");\r\n },\r\n /**\r\n * Maximum value of heat legend's value axis. If a series is set for the legend, max is taken from series.\r\n *\r\n * @param {number}\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"maxValue\", value);\r\n this.valueAxis.max = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(HeatLegend.prototype, \"orientation\", {\r\n /**\r\n * Returns orientation value.\r\n *\r\n * @return {\"horizontal\" | \"vertical\"}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"orientation\");\r\n },\r\n /**\r\n * Heat legend orientation. Note, if you change orientation of a heat legend, you must set value axis renderer properties after that, as with orientation renderer changes.\r\n *\r\n * @param {\"horizontal\" | \"vertical\"}\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"orientation\", value, true);\r\n var markerContainer = this.markerContainer;\r\n var valueAxis = this.valueAxis;\r\n // HORIZONTAL\r\n if (value == \"horizontal\") {\r\n if (!$type.hasValue(this.width)) {\r\n this.width = 200;\r\n }\r\n this.height = undefined;\r\n valueAxis.width = percent(100);\r\n valueAxis.height = undefined;\r\n valueAxis.tooltip.pointerOrientation = \"vertical\";\r\n this.layout = \"vertical\";\r\n markerContainer.width = percent(100);\r\n markerContainer.height = undefined;\r\n if (!(valueAxis.renderer instanceof AxisRendererX)) {\r\n valueAxis.renderer = new AxisRendererX();\r\n }\r\n }\r\n // VERTICAL\r\n else {\r\n if (!$type.hasValue(this.height)) {\r\n this.height = 200;\r\n }\r\n this.width = undefined;\r\n this.layout = \"horizontal\";\r\n markerContainer.width = undefined;\r\n markerContainer.height = percent(100);\r\n valueAxis.height = percent(100);\r\n valueAxis.width = undefined;\r\n valueAxis.tooltip.pointerOrientation = \"horizontal\";\r\n if (!(valueAxis.renderer instanceof AxisRendererY)) {\r\n valueAxis.renderer = new AxisRendererY();\r\n }\r\n valueAxis.renderer.inside = true;\r\n valueAxis.renderer.labels.template.inside = true;\r\n this.markerContainer.reverseOrder = true;\r\n }\r\n var renderer = valueAxis.renderer;\r\n renderer.grid.template.disabled = true;\r\n renderer.axisFills.template.disabled = true;\r\n renderer.baseGrid.disabled = true;\r\n renderer.labels.template.padding(2, 3, 2, 3);\r\n renderer.minHeight = undefined;\r\n renderer.minWidth = undefined;\r\n this.markerContainer.layout = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(HeatLegend.prototype, \"valueAxis\", {\r\n /**\r\n * Returns valueAxis value.\r\n * @return {ValueAxis}\r\n */\r\n get: function () {\r\n if (!this._valueAxis) {\r\n this.valueAxis = this.createChild(ValueAxis);\r\n this.valueAxis.shouldClone = false;\r\n }\r\n return this._valueAxis;\r\n },\r\n /**\r\n * Sets a value axis of heat legend. Value axis for heat legend is created automatically.\r\n * @param {ValueAxis}\r\n */\r\n set: function (valueAxis) {\r\n this._valueAxis = valueAxis;\r\n valueAxis.parent = this;\r\n valueAxis.strictMinMax = true;\r\n this.orientation = this.orientation;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(HeatLegend.prototype, \"series\", {\r\n /**\r\n * Returns series value.\r\n * @return {Series}\r\n */\r\n get: function () {\r\n return this._series;\r\n },\r\n /**\r\n * You can set series for heat legend. It will take min, max, minColor and maxColor values from this series.\r\n * @param series\r\n */\r\n set: function (series) {\r\n var _this = this;\r\n this._series = series;\r\n var dataField = \"value\";\r\n try {\r\n var dataFieldDefined = series.heatRules.getIndex(0).dataField;\r\n if (dataFieldDefined) {\r\n dataField = dataFieldDefined;\r\n }\r\n }\r\n catch (err) {\r\n }\r\n this.updateMinMax(series.dataItem.values[dataField].low, series.dataItem.values[dataField].high);\r\n series.dataItem.events.on(\"calculatedvaluechanged\", function (event) {\r\n _this.updateMinMax(series.dataItem.values[dataField].low, series.dataItem.values[dataField].high);\r\n }, undefined, false);\r\n series.heatRules.events.on(\"inserted\", this.invalidate, this, false);\r\n series.heatRules.events.on(\"removed\", this.invalidate, this, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Updates min/max of value axis.\r\n * @ignore\r\n */\r\n HeatLegend.prototype.updateMinMax = function (min, max) {\r\n var valueAxis = this.valueAxis;\r\n if (!$type.isNumber(this.minValue)) {\r\n valueAxis.min = min;\r\n valueAxis.invalidate();\r\n }\r\n if (!$type.isNumber(this.maxValue)) {\r\n valueAxis.max = max;\r\n valueAxis.invalidate();\r\n }\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n HeatLegend.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Set up series\r\n if ($type.hasValue(config.series) && $type.isString(config.series)) {\r\n if ($type.isString(config.series)) {\r\n if (this.map.hasKey(config.series)) {\r\n config.series = this.map.getKey(config.series);\r\n }\r\n else {\r\n var seriesId_1 = config.series;\r\n var disposer_1 = this.map.events.on(\"insertKey\", function (ev) {\r\n if (ev.key == seriesId_1) {\r\n this.series = ev.newValue;\r\n disposer_1.dispose();\r\n }\r\n }, this);\r\n this._disposers.push(disposer_1);\r\n delete config.series;\r\n }\r\n }\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n return HeatLegend;\r\n}(Container));\r\nexport { HeatLegend };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"HeatLegend\"] = HeatLegend;\r\n//# sourceMappingURL=HeatLegend.js.map","/**\r\n * Module that defines everything related to building Candlesticks.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Column } from \"./Column\";\r\nimport { Line } from \"../../core/elements/Line\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Class used to creates Candlesticks.\r\n *\r\n * @see {@link ICandlestickEvents} for a list of available events\r\n * @see {@link ICandlestickAdapters} for a list of available Adapters\r\n * @todo Usage example\r\n * @important\r\n */\r\nvar Candlestick = /** @class */ (function (_super) {\r\n __extends(Candlestick, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Candlestick() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Candlestick\";\r\n _this.layout = \"none\";\r\n return _this;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n Candlestick.prototype.createAssets = function () {\r\n _super.prototype.createAssets.call(this);\r\n this.lowLine = this.createChild(Line);\r\n this.lowLine.shouldClone = false;\r\n this.highLine = this.createChild(Line);\r\n this.highLine.shouldClone = false;\r\n };\r\n /**\r\n * Copies all parameters from another [[Candlestick]].\r\n *\r\n * @param source Source Candlestick\r\n */\r\n Candlestick.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n if (this.lowLine) {\r\n this.lowLine.copyFrom(source.lowLine);\r\n }\r\n if (this.highLine) {\r\n this.highLine.copyFrom(source.highLine);\r\n }\r\n };\r\n return Candlestick;\r\n}(Column));\r\nexport { Candlestick };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Candlestick\"] = Candlestick;\r\n//# sourceMappingURL=Candlestick.js.map","/**\r\n * Candlestick Series module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { ColumnSeries, ColumnSeriesDataItem } from \"./ColumnSeries\";\r\nimport { visualProperties } from \"../../core/Sprite\";\r\nimport { Candlestick } from \"../elements/Candlestick\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $object from \"../../core/utils/Object\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[CandlestickSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar CandlestickSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(CandlestickSeriesDataItem, _super);\r\n /**\r\n * Defines a type of [[Component]] this data item is used for\r\n * @todo Disabled to work around TS bug (see if we can re-enable it again)\r\n */\r\n //public _component!: CandlestickSeries;\r\n /**\r\n * Constructor\r\n */\r\n function CandlestickSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.values.lowValueX = {};\r\n _this.values.lowValueY = {};\r\n _this.values.highValueX = {};\r\n _this.values.highValueY = {};\r\n _this.className = \"CandlestickSeriesDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(CandlestickSeriesDataItem.prototype, \"lowValueX\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.values.lowValueX.value;\r\n },\r\n /**\r\n * Low value for horizontal axis.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"lowValueX\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CandlestickSeriesDataItem.prototype, \"lowValueY\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.values.lowValueY.value;\r\n },\r\n /**\r\n * Low value for vertical axis.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"lowValueY\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CandlestickSeriesDataItem.prototype, \"highValueX\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.values.highValueX.value;\r\n },\r\n /**\r\n * High value for horizontal axis.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"highValueX\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CandlestickSeriesDataItem.prototype, \"highValueY\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.values.highValueY.value;\r\n },\r\n /**\r\n * High value for vertical axis.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"highValueY\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CandlestickSeriesDataItem.prototype, \"closeValueX\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.values.valueX.value;\r\n },\r\n /**\r\n * Close value for horizontal axis.\r\n *\r\n * This is an alias for `valueX` added for convenience only.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"valueX\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CandlestickSeriesDataItem.prototype, \"closeValueY\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.values.valueY.value;\r\n },\r\n /**\r\n * Close value for vertical axis.\r\n *\r\n * This is an alias for `valueX` added for convenience only.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"valueY\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return CandlestickSeriesDataItem;\r\n}(ColumnSeriesDataItem));\r\nexport { CandlestickSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[Series]] for a candlestick graph.\r\n *\r\n * @see {@link ICandlestickSeriesEvents} for a list of available Events\r\n * @see {@link ICandlestickSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\r\nvar CandlestickSeries = /** @class */ (function (_super) {\r\n __extends(CandlestickSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function CandlestickSeries() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"CandlestickSeries\";\r\n _this.groupFields.lowValueX = \"low\";\r\n _this.groupFields.lowValueY = \"low\";\r\n _this.groupFields.highValueX = \"high\";\r\n _this.groupFields.highValueY = \"high\";\r\n _this.strokeOpacity = 1;\r\n var interfaceColors = new InterfaceColorSet();\r\n var positiveColor = interfaceColors.getFor(\"positive\");\r\n var negativeColor = interfaceColors.getFor(\"negative\");\r\n _this.dropFromOpenState.properties.fill = negativeColor;\r\n _this.dropFromOpenState.properties.stroke = negativeColor;\r\n _this.riseFromOpenState.properties.fill = positiveColor;\r\n _this.riseFromOpenState.properties.stroke = positiveColor;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n CandlestickSeries.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Candlestick Series\");\r\n }\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n CandlestickSeries.prototype.createDataItem = function () {\r\n return new CandlestickSeriesDataItem();\r\n };\r\n /**\r\n * Validates data item's element, effectively redrawing it.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n CandlestickSeries.prototype.validateDataElementReal = function (dataItem) {\r\n _super.prototype.validateDataElementReal.call(this, dataItem);\r\n this.validateCandlestick(dataItem);\r\n };\r\n CandlestickSeries.prototype.validateCandlestick = function (dataItem) {\r\n var column = dataItem.column;\r\n if (column) {\r\n var lowLine_1 = column.lowLine;\r\n var highLine_1 = column.highLine;\r\n if (this.baseAxis == this.xAxis) {\r\n var x = column.pixelWidth / 2;\r\n lowLine_1.x = x;\r\n highLine_1.x = x;\r\n var open_1 = dataItem.getWorkingValue(this.yOpenField);\r\n var close_1 = dataItem.getWorkingValue(this.yField);\r\n var yOpen = this.yAxis.getY(dataItem, this.yOpenField);\r\n var yClose = this.yAxis.getY(dataItem, this.yField);\r\n var yLow = this.yAxis.getY(dataItem, this.yLowField);\r\n var yHigh = this.yAxis.getY(dataItem, this.yHighField);\r\n var pixelY = column.pixelY;\r\n lowLine_1.y1 = yLow - pixelY;\r\n highLine_1.y1 = yHigh - pixelY;\r\n if (open_1 < close_1) {\r\n lowLine_1.y2 = yOpen - pixelY;\r\n highLine_1.y2 = yClose - pixelY;\r\n }\r\n else {\r\n lowLine_1.y2 = yClose - pixelY;\r\n highLine_1.y2 = yOpen - pixelY;\r\n }\r\n }\r\n if (this.baseAxis == this.yAxis) {\r\n var y = column.pixelHeight / 2;\r\n lowLine_1.y = y;\r\n highLine_1.y = y;\r\n var open_2 = dataItem.getWorkingValue(this.xOpenField);\r\n var close_2 = dataItem.getWorkingValue(this.xField);\r\n var xOpen = this.xAxis.getX(dataItem, this.xOpenField);\r\n var xClose = this.xAxis.getX(dataItem, this.xField);\r\n var xLow = this.xAxis.getX(dataItem, this.xLowField);\r\n var xHigh = this.xAxis.getX(dataItem, this.xHighField);\r\n var pixelX = column.pixelX;\r\n lowLine_1.x1 = xLow - pixelX;\r\n highLine_1.x1 = xHigh - pixelX;\r\n if (open_2 < close_2) {\r\n lowLine_1.x2 = xOpen - pixelX;\r\n highLine_1.x2 = xClose - pixelX;\r\n }\r\n else {\r\n lowLine_1.x2 = xClose - pixelX;\r\n highLine_1.x2 = xOpen - pixelX;\r\n }\r\n }\r\n $iter.each(this.axisRanges.iterator(), function (axisRange) {\r\n // LOW LINE\r\n var rangeColumn = dataItem.rangesColumns.getKey(axisRange.uid);\r\n if (rangeColumn) {\r\n var rangeLowLine = rangeColumn.lowLine;\r\n rangeLowLine.x = lowLine_1.x;\r\n rangeLowLine.y = lowLine_1.y;\r\n rangeLowLine.x1 = lowLine_1.x1;\r\n rangeLowLine.x2 = lowLine_1.x2;\r\n rangeLowLine.y1 = lowLine_1.y1;\r\n rangeLowLine.y2 = lowLine_1.y2;\r\n // HIGH LINE\r\n var rangehighLine = rangeColumn.highLine;\r\n rangehighLine.x = highLine_1.x;\r\n rangehighLine.y = highLine_1.y;\r\n rangehighLine.x1 = highLine_1.x1;\r\n rangehighLine.x2 = highLine_1.x2;\r\n rangehighLine.y1 = highLine_1.y1;\r\n rangehighLine.y2 = highLine_1.y2;\r\n }\r\n });\r\n }\r\n };\r\n Object.defineProperty(CandlestickSeries.prototype, \"xLowField\", {\r\n /**\r\n * A data field to look for \"low\" value for horizontal axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Field name\r\n */\r\n get: function () {\r\n return this._xLowField;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CandlestickSeries.prototype, \"yLowField\", {\r\n /**\r\n * A data field to look for \"low\" value for vertical axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Field name\r\n */\r\n get: function () {\r\n return this._yLowField;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CandlestickSeries.prototype, \"xHighField\", {\r\n /**\r\n * A data field to look for \"high\" value for horizontal axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Field name\r\n */\r\n get: function () {\r\n return this._xHighField;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CandlestickSeries.prototype, \"yHighField\", {\r\n /**\r\n * A data field to look for \"high\" value for vertical axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Field name\r\n */\r\n get: function () {\r\n return this._yHighField;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets up which data fields to use for data access.\r\n */\r\n CandlestickSeries.prototype.defineFields = function () {\r\n _super.prototype.defineFields.call(this);\r\n var xAxis = this.xAxis;\r\n var yAxis = this.yAxis;\r\n if (xAxis && yAxis) {\r\n if (this.baseAxis == xAxis) {\r\n var yAxisFieldName = $utils.capitalize(yAxis.axisFieldName);\r\n this._yLowField = (\"low\" + yAxisFieldName + \"Y\");\r\n this._yHighField = (\"high\" + yAxisFieldName + \"Y\");\r\n }\r\n if (this.baseAxis == yAxis) {\r\n var xAxisFieldName = $utils.capitalize(xAxis.axisFieldName);\r\n this._xLowField = (\"low\" + xAxisFieldName + \"X\");\r\n this._xHighField = (\"high\" + xAxisFieldName + \"X\");\r\n }\r\n this.addValueField(xAxis, this._xValueFields, this._xLowField);\r\n this.addValueField(xAxis, this._xValueFields, this._xHighField);\r\n this.addValueField(yAxis, this._yValueFields, this._yLowField);\r\n this.addValueField(yAxis, this._yValueFields, this._yHighField);\r\n }\r\n };\r\n /**\r\n * Creates elements in related legend container, that mimics the look of this\r\n * Series.\r\n *\r\n * @ignore Exclude from docs\r\n * @param marker Legend item container\r\n */\r\n CandlestickSeries.prototype.createLegendMarker = function (marker) {\r\n var w = marker.pixelWidth;\r\n var h = marker.pixelHeight;\r\n marker.removeChildren();\r\n var column = marker.createChild(Candlestick);\r\n column.shouldClone = false;\r\n column.copyFrom(this.columns.template);\r\n var cw;\r\n var ch;\r\n var highLine = column.lowLine;\r\n var lowLine = column.highLine;\r\n if (this.baseAxis == this.yAxis) {\r\n cw = w / 3;\r\n ch = h;\r\n highLine.y = h / 2;\r\n lowLine.y = h / 2;\r\n highLine.x2 = w / 3;\r\n lowLine.x2 = w / 3;\r\n lowLine.x = w / 3 * 2;\r\n column.column.x = w / 3;\r\n }\r\n else {\r\n cw = w;\r\n ch = h / 3;\r\n highLine.x = w / 2;\r\n lowLine.x = w / 2;\r\n highLine.y2 = h / 3;\r\n lowLine.y2 = h / 3;\r\n lowLine.y = h / 3 * 2;\r\n column.column.y = h / 3;\r\n }\r\n column.width = cw;\r\n column.height = ch;\r\n $object.copyProperties(this, marker, visualProperties);\r\n $object.copyProperties(this.columns.template, column, visualProperties);\r\n column.stroke = this.riseFromOpenState.properties.stroke;\r\n column.fill = column.stroke;\r\n var legendDataItem = marker.dataItem;\r\n legendDataItem.color = column.fill;\r\n legendDataItem.colorOrig = column.fill;\r\n };\r\n /**\r\n * Returns an element to use for Candlestick\r\n * @ignore\r\n * @return Element.\r\n */\r\n CandlestickSeries.prototype.createColumnTemplate = function () {\r\n return new Candlestick();\r\n };\r\n return CandlestickSeries;\r\n}(ColumnSeries));\r\nexport { CandlestickSeries };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"CandlestickSeries\"] = CandlestickSeries;\r\nregistry.registeredClasses[\"CandlestickSeriesDataItem\"] = CandlestickSeriesDataItem;\r\n//# sourceMappingURL=CandlestickSeries.js.map","/**\r\n * Module that defines everything related to building OHLCs.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Candlestick } from \"./Candlestick\";\r\nimport { Line } from \"../../core/elements/Line\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Class used to creates OHLCs.\r\n *\r\n * @see {@link IOHLCEvents} for a list of available events\r\n * @see {@link IOHLCAdapters} for a list of available Adapters\r\n * @todo Usage example\r\n * @important\r\n */\r\nvar OHLC = /** @class */ (function (_super) {\r\n __extends(OHLC, _super);\r\n /**\r\n * Constructor\r\n */\r\n function OHLC() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"OHLC\";\r\n _this.layout = \"none\";\r\n return _this;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n OHLC.prototype.createAssets = function () {\r\n //super.createAssets();\r\n this.openLine = this.createChild(Line);\r\n this.openLine.shouldClone = false;\r\n this.highLowLine = this.createChild(Line);\r\n this.highLowLine.shouldClone = false;\r\n this.closeLine = this.createChild(Line);\r\n this.closeLine.shouldClone = false;\r\n };\r\n /**\r\n * Copies all parameters from another [[OHLC]].\r\n *\r\n * @param source Source OHLC\r\n */\r\n OHLC.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n if (this.openLine) {\r\n this.openLine.copyFrom(source.openLine);\r\n }\r\n if (this.highLowLine) {\r\n this.highLowLine.copyFrom(source.highLowLine);\r\n }\r\n if (this.closeLine) {\r\n this.closeLine.copyFrom(source.closeLine);\r\n }\r\n };\r\n return OHLC;\r\n}(Candlestick));\r\nexport { OHLC };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"OHLC\"] = OHLC;\r\n//# sourceMappingURL=OHLC.js.map","/**\r\n * Candlestick Series module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { CandlestickSeries, CandlestickSeriesDataItem } from \"./CandlestickSeries\";\r\nimport { visualProperties } from \"../../core/Sprite\";\r\nimport { OHLC } from \"../elements/OHLC\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $object from \"../../core/utils/Object\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[OHLCSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar OHLCSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(OHLCSeriesDataItem, _super);\r\n /**\r\n * Defines a type of [[Component]] this data item is used for\r\n * @todo Disabled to work around TS bug (see if we can re-enable it again)\r\n */\r\n //public _component!: OHLCSeries;\r\n /**\r\n * Constructor\r\n */\r\n function OHLCSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"OHLCSeriesDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return OHLCSeriesDataItem;\r\n}(CandlestickSeriesDataItem));\r\nexport { OHLCSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[Series]] for a candlestick graph.\r\n *\r\n * @see {@link IOHLCSeriesEvents} for a list of available Events\r\n * @see {@link IOHLCSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\r\nvar OHLCSeries = /** @class */ (function (_super) {\r\n __extends(OHLCSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function OHLCSeries() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"OHLCSeries\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n OHLCSeries.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"OHLC Series\");\r\n }\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n OHLCSeries.prototype.createDataItem = function () {\r\n return new OHLCSeriesDataItem();\r\n };\r\n OHLCSeries.prototype.validateCandlestick = function (dataItem) {\r\n var column = dataItem.column;\r\n if (column) {\r\n var openLine_1 = column.openLine;\r\n var highLowLine_1 = column.highLowLine;\r\n var closeLine_1 = column.closeLine;\r\n if (this.baseAxis == this.xAxis) {\r\n var x = column.pixelWidth / 2;\r\n highLowLine_1.x = x;\r\n // TODO can these be removed ?\r\n dataItem.getWorkingValue(this.yOpenField);\r\n dataItem.getWorkingValue(this.yField);\r\n var yOpen = this.yAxis.getY(dataItem, this.yOpenField);\r\n var yClose = this.yAxis.getY(dataItem, this.yField);\r\n var yLow = this.yAxis.getY(dataItem, this.yLowField);\r\n var yHigh = this.yAxis.getY(dataItem, this.yHighField);\r\n var pixelY = column.pixelY;\r\n openLine_1.y1 = yOpen - pixelY;\r\n openLine_1.y2 = yOpen - pixelY;\r\n openLine_1.x1 = 0;\r\n openLine_1.x2 = x;\r\n closeLine_1.y1 = yClose - pixelY;\r\n closeLine_1.y2 = yClose - pixelY;\r\n closeLine_1.x1 = x;\r\n closeLine_1.x2 = 2 * x;\r\n highLowLine_1.y1 = yHigh - pixelY;\r\n highLowLine_1.y2 = yLow - pixelY;\r\n }\r\n if (this.baseAxis == this.yAxis) {\r\n var y = column.pixelHeight / 2;\r\n highLowLine_1.y = y;\r\n // TODO can these be removed ?\r\n dataItem.getWorkingValue(this.xOpenField);\r\n dataItem.getWorkingValue(this.xField);\r\n var xOpen = this.xAxis.getX(dataItem, this.xOpenField);\r\n var xClose = this.xAxis.getX(dataItem, this.xField);\r\n var xLow = this.xAxis.getX(dataItem, this.xLowField);\r\n var xHigh = this.xAxis.getX(dataItem, this.xHighField);\r\n var pixelX = column.pixelX;\r\n openLine_1.x1 = xOpen - pixelX;\r\n openLine_1.x2 = xOpen - pixelX;\r\n openLine_1.y1 = y;\r\n openLine_1.y2 = 2 * y;\r\n closeLine_1.x1 = xClose - pixelX;\r\n closeLine_1.x2 = xClose - pixelX;\r\n closeLine_1.y1 = 0;\r\n closeLine_1.y2 = y;\r\n highLowLine_1.x1 = xHigh - pixelX;\r\n highLowLine_1.x2 = xLow - pixelX;\r\n }\r\n $iter.each(this.axisRanges.iterator(), function (axisRange) {\r\n var rangeColumn = dataItem.rangesColumns.getKey(axisRange.uid);\r\n if (rangeColumn) {\r\n var rangeOpenLine = rangeColumn.openLine;\r\n rangeOpenLine.x = openLine_1.x;\r\n rangeOpenLine.y = openLine_1.y;\r\n rangeOpenLine.x1 = openLine_1.x1;\r\n rangeOpenLine.x2 = openLine_1.x2;\r\n rangeOpenLine.y1 = openLine_1.y1;\r\n rangeOpenLine.y2 = openLine_1.y2;\r\n var rangeCloseLine = rangeColumn.closeLine;\r\n rangeCloseLine.x = closeLine_1.x;\r\n rangeCloseLine.y = closeLine_1.y;\r\n rangeCloseLine.x1 = closeLine_1.x1;\r\n rangeCloseLine.x2 = closeLine_1.x2;\r\n rangeCloseLine.y1 = closeLine_1.y1;\r\n rangeCloseLine.y2 = closeLine_1.y2;\r\n var rangeHighLowLine = rangeColumn.highLowLine;\r\n rangeHighLowLine.x = highLowLine_1.x;\r\n rangeHighLowLine.y = highLowLine_1.y;\r\n rangeHighLowLine.x1 = highLowLine_1.x1;\r\n rangeHighLowLine.x2 = highLowLine_1.x2;\r\n rangeHighLowLine.y1 = highLowLine_1.y1;\r\n rangeHighLowLine.y2 = highLowLine_1.y2;\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * Creates elements in related legend container, that mimics the look of this\r\n * Series.\r\n *\r\n * @ignore Exclude from docs\r\n * @param marker Legend item container\r\n */\r\n OHLCSeries.prototype.createLegendMarker = function (marker) {\r\n var w = marker.pixelWidth;\r\n var h = marker.pixelHeight;\r\n marker.removeChildren();\r\n var column = marker.createChild(OHLC);\r\n column.shouldClone = false;\r\n column.copyFrom(this.columns.template);\r\n var cw;\r\n var ch;\r\n var openLine = column.openLine;\r\n var closeLine = column.closeLine;\r\n var highLowLine = column.highLowLine;\r\n if (this.baseAxis == this.yAxis) {\r\n cw = w / 3;\r\n ch = h;\r\n highLowLine.y = h / 2;\r\n highLowLine.x2 = w;\r\n openLine.x = w / 3 * 2;\r\n openLine.y2 = h / 2;\r\n closeLine.x = w / 3;\r\n closeLine.y2 = h;\r\n closeLine.y1 = h / 2;\r\n }\r\n else {\r\n cw = w;\r\n ch = h / 3;\r\n highLowLine.x = w / 2;\r\n highLowLine.y2 = h;\r\n openLine.y = h / 3 * 2;\r\n openLine.x2 = w / 2;\r\n closeLine.y = h / 3;\r\n closeLine.x2 = w;\r\n closeLine.x1 = w / 2;\r\n }\r\n column.width = cw;\r\n column.height = ch;\r\n $object.copyProperties(this, marker, visualProperties);\r\n $object.copyProperties(this.columns.template, column, visualProperties);\r\n column.stroke = this.riseFromOpenState.properties.stroke;\r\n var legendDataItem = marker.dataItem;\r\n legendDataItem.color = column.stroke;\r\n legendDataItem.colorOrig = column.stroke;\r\n };\r\n /**\r\n * Returns an element to use for Candlestick\r\n * @ignore\r\n * @return Element.\r\n */\r\n OHLCSeries.prototype.createColumnTemplate = function () {\r\n return new OHLC();\r\n };\r\n return OHLCSeries;\r\n}(CandlestickSeries));\r\nexport { OHLCSeries };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"OHLCSeries\"] = OHLCSeries;\r\nregistry.registeredClasses[\"OHLCSeriesDataItem\"] = OHLCSeriesDataItem;\r\n//# sourceMappingURL=OHLCSeries.js.map","/**\r\n * Line series segment module.\r\n * @todo Add description about what this is\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { LineSeriesSegment } from \"./LineSeriesSegment\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Represents a line series segment.\r\n *\r\n * A line segment can be used to apply different properties to a part of the\r\n * line series, between two data points.\r\n *\r\n * @see {@link IStepLineSeriesSegmentEvents} for a list of available events\r\n * @see {@link IStepLineSeriesSegmentAdapters} for a list of available Adapters\r\n * @todo Example\r\n */\r\nvar StepLineSeriesSegment = /** @class */ (function (_super) {\r\n __extends(StepLineSeriesSegment, _super);\r\n /**\r\n * Constructor\r\n */\r\n function StepLineSeriesSegment() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"StepLineSeriesSegment\";\r\n return _this;\r\n }\r\n /**\r\n * Draws the series segment.\r\n *\r\n * @ignore Exclude from docs\r\n * @param points Points to connect\r\n * @param closePoints ?\r\n * @param smoothnessX Horizontal bezier setting (?)\r\n * @param smoothnessY Vertical bezier setting (?)\r\n */\r\n StepLineSeriesSegment.prototype.drawSegment = function (points, closePoints, smoothnessX, smoothnessY, noRisers, vertical) {\r\n if (points.length > 0 && closePoints.length > 0) {\r\n if (noRisers) {\r\n var path = $path.moveTo(points[0]);\r\n if (points.length > 0) {\r\n for (var i = 1; i < points.length; i++) {\r\n var point = points[i];\r\n if (i / 2 == Math.round(i / 2)) {\r\n path += $path.moveTo(point);\r\n }\r\n else {\r\n path += $path.lineTo(point);\r\n }\r\n }\r\n }\r\n this.strokeSprite.path = path;\r\n if (this.fillOpacity > 0 || this.fillSprite.fillOpacity > 0) { // helps to avoid drawing fill object if fill is not visible\r\n path = $path.moveTo(points[0]) + $path.polyline(points);\r\n path += $path.lineTo(closePoints[0]) + $path.polyline(closePoints);\r\n path += $path.lineTo(points[0]);\r\n path += $path.closePath();\r\n this.fillSprite.path = path;\r\n }\r\n else {\r\n }\r\n }\r\n else {\r\n var path = $path.moveTo(points[0]) + $path.polyline(points);\r\n this.strokeSprite.path = path;\r\n if (this.fillOpacity > 0 || this.fillSprite.fillOpacity > 0) { // helps to avoid drawing fill object if fill is not visible\r\n path += $path.lineTo(closePoints[0]) + $path.polyline(closePoints);\r\n path += $path.lineTo(points[0]);\r\n path += $path.closePath();\r\n this.fillSprite.path = path;\r\n }\r\n }\r\n }\r\n else {\r\n this.strokeSprite.path = \"\";\r\n this.fillSprite.path = \"\";\r\n }\r\n };\r\n return StepLineSeriesSegment;\r\n}(LineSeriesSegment));\r\nexport { StepLineSeriesSegment };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"StepLineSeriesSegment\"] = StepLineSeriesSegment;\r\n//# sourceMappingURL=StepLineSeriesSegment.js.map","/**\r\n * Step line series module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { LineSeries, LineSeriesDataItem } from \"./LineSeries\";\r\nimport { StepLineSeriesSegment } from \"./StepLineSeriesSegment\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $math from \"../../core/utils/Math\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[StepLineSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar StepLineSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(StepLineSeriesDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function StepLineSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"StepLineSeriesDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return StepLineSeriesDataItem;\r\n}(LineSeriesDataItem));\r\nexport { StepLineSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[Series]] for a step line graph.\r\n *\r\n * @see {@link IStepLineSeriesEvents} for a list of available Events\r\n * @see {@link IStepLineSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\r\nvar StepLineSeries = /** @class */ (function (_super) {\r\n __extends(StepLineSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function StepLineSeries() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"StepLineSeries\";\r\n _this.applyTheme();\r\n _this.startLocation = 0;\r\n _this.endLocation = 1;\r\n return _this;\r\n }\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n StepLineSeries.prototype.createDataItem = function () {\r\n return new StepLineSeriesDataItem();\r\n };\r\n /**\r\n * [addPoints description]\r\n *\r\n * @todo Description\r\n * @param points [description]\r\n * @param dataItem [description]\r\n * @param xField [description]\r\n * @param yField [description]\r\n * @param backwards [description]\r\n */\r\n StepLineSeries.prototype.addPoints = function (points, dataItem, xField, yField, backwards) {\r\n var startLocationX;\r\n var endLocationX;\r\n var startLocationY;\r\n var endLocationY;\r\n if (this.baseAxis == this.xAxis) {\r\n startLocationX = this.startLocation;\r\n endLocationX = this.endLocation;\r\n startLocationY = this.getAdjustedXLocation(dataItem, this.yOpenField);\r\n endLocationY = this.getAdjustedXLocation(dataItem, this.yField);\r\n }\r\n if (this.baseAxis == this.yAxis) {\r\n startLocationY = this.startLocation;\r\n endLocationY = this.endLocation;\r\n startLocationX = this.getAdjustedXLocation(dataItem, this.xOpenField);\r\n endLocationX = this.getAdjustedXLocation(dataItem, this.xField);\r\n }\r\n var x0 = this.xAxis.getX(dataItem, xField, startLocationX);\r\n var y0 = this.yAxis.getY(dataItem, yField, startLocationY);\r\n var x1 = this.xAxis.getX(dataItem, xField, endLocationX);\r\n var y1 = this.yAxis.getY(dataItem, yField, endLocationY);\r\n x0 = $math.fitToRange(x0, -100000, 100000); // from geometric point of view this is not right, but practically it's ok. this is done to avoid too big objects.\r\n y0 = $math.fitToRange(y0, -100000, 100000); // from geometric point of view this is not right, but practically it's ok. this is done to avoid too big objects.\r\n x1 = $math.fitToRange(x1, -100000, 100000); // from geometric point of view this is not right, but practically it's ok. this is done to avoid too big objects.\r\n y1 = $math.fitToRange(y1, -100000, 100000); // from geometric point of view this is not right, but practically it's ok. this is done to avoid too big objects.\r\n // this might make an impression that points are duplicated, and they indeed are, but this is needed to handle gaps in data\r\n if (!this.noRisers) {\r\n if (points.length > 1) {\r\n var prevPoint = points[points.length - 1];\r\n if (this.baseAxis == this.xAxis) {\r\n if (backwards) {\r\n points.push({ x: prevPoint.x, y: y1 });\r\n }\r\n else {\r\n points.push({ x: x0, y: prevPoint.y });\r\n }\r\n }\r\n if (this.baseAxis == this.yAxis) {\r\n if (backwards) {\r\n points.push({ x: x1, y: prevPoint.y });\r\n }\r\n else {\r\n points.push({ x: prevPoint.x, y: y0 });\r\n }\r\n }\r\n }\r\n }\r\n var point0 = { x: x0, y: y0 };\r\n var point1 = { x: x1, y: y1 };\r\n if (backwards) {\r\n points.push(point1, point0);\r\n }\r\n else {\r\n points.push(point0, point1);\r\n }\r\n };\r\n /**\r\n * Draws the line segment.\r\n *\r\n * @param segment Segment\r\n * @param points Segment points\r\n * @param closePoints Segment close points\r\n */\r\n StepLineSeries.prototype.drawSegment = function (segment, points, closePoints) {\r\n var vertical = false;\r\n if (this.yAxis == this.baseAxis) {\r\n vertical = true;\r\n }\r\n segment.drawSegment(points, closePoints, this.tensionX, this.tensionY, this.noRisers, vertical);\r\n };\r\n /**\r\n * @ignore\r\n */\r\n StepLineSeries.prototype.createSegment = function () {\r\n return new StepLineSeriesSegment();\r\n };\r\n Object.defineProperty(StepLineSeries.prototype, \"noRisers\", {\r\n /**\r\n * @return No risers\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"noRisers\");\r\n },\r\n /**\r\n * Specifies if step line series should draw only horizontal (or only\r\n * vertical, depending on base axis) lines, instead of connecting them with\r\n * vertical (or horizontal) lines.\r\n *\r\n * @default false\r\n * @param value No risers\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"noRisers\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(StepLineSeries.prototype, \"startLocation\", {\r\n /**\r\n * @return Location (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startLocation\");\r\n },\r\n /**\r\n * start location of the step\r\n *\r\n * @param value Location (0-1)\r\n * @default 0\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"startLocation\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(StepLineSeries.prototype, \"endLocation\", {\r\n /**\r\n * @return Location (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endLocation\");\r\n },\r\n /**\r\n * Step end location.\r\n *\r\n * @param value Location (0-1)\r\n * #default 1\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"endLocation\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return StepLineSeries;\r\n}(LineSeries));\r\nexport { StepLineSeries };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"StepLineSeries\"] = StepLineSeries;\r\nregistry.registeredClasses[\"StepLineSeriesDataItem\"] = StepLineSeriesDataItem;\r\n//# sourceMappingURL=StepLineSeries.js.map","/**\r\n * Module that defines everything related to building RadarColumns.\r\n * It is a container which has radarColumn element which is a Slice.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Column } from \"./Column\";\r\nimport { Slice } from \"../../core/elements/Slice\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Class used to creates RadarColumns.\r\n *\r\n * @see {@link IRadarColumnEvents} for a list of available events\r\n * @see {@link IRadarColumnAdapters} for a list of available Adapters\r\n * @todo Usage example\r\n * @important\r\n */\r\nvar RadarColumn = /** @class */ (function (_super) {\r\n __extends(RadarColumn, _super);\r\n /**\r\n * Constructor\r\n */\r\n function RadarColumn() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"RadarColumn\";\r\n return _this;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n RadarColumn.prototype.createAssets = function () {\r\n this.radarColumn = this.createChild(Slice);\r\n this.radarColumn.shouldClone = false;\r\n this.radarColumn.strokeOpacity = undefined;\r\n // some dirty hack so that if user access column, it won't get error\r\n this.column = this.radarColumn;\r\n };\r\n /**\r\n * Copies all parameters from another [[RadarColumn]].\r\n *\r\n * @param source Source RadarColumn\r\n */\r\n RadarColumn.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n if (this.radarColumn) {\r\n this.radarColumn.copyFrom(source.radarColumn);\r\n }\r\n };\r\n /**\r\n * X coordinate for the slice tooltip.\r\n *\r\n * @return X\r\n * @ignore\r\n */\r\n RadarColumn.prototype.getTooltipX = function () {\r\n var value = this.getPropertyValue(\"tooltipX\");\r\n if (!$type.isNumber(value)) {\r\n return this.radarColumn.getTooltipX();\r\n }\r\n return value;\r\n };\r\n /**\r\n * Y coordinate for the slice tooltip.\r\n *\r\n * @return Y\r\n * @ignore\r\n */\r\n RadarColumn.prototype.getTooltipY = function () {\r\n var value = this.getPropertyValue(\"tooltipX\");\r\n if (!$type.isNumber(value)) {\r\n return this.radarColumn.getTooltipY();\r\n }\r\n return value;\r\n };\r\n return RadarColumn;\r\n}(Column));\r\nexport { RadarColumn };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"RadarColumn\"] = RadarColumn;\r\n//# sourceMappingURL=RadarColumn.js.map","/**\r\n * Radar column series module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { ColumnSeries, ColumnSeriesDataItem } from \"../series/ColumnSeries\";\r\nimport { visualProperties } from \"../../core/Sprite\";\r\nimport { CategoryAxis } from \"../axes/CategoryAxis\";\r\nimport { RadarColumn } from \"../elements/RadarColumn\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $object from \"../../core/utils/Object\";\r\nimport { Percent } from \"../../core/utils/Percent\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[RadarColumnSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar RadarColumnSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(RadarColumnSeriesDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function RadarColumnSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ColumnSeriesDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return RadarColumnSeriesDataItem;\r\n}(ColumnSeriesDataItem));\r\nexport { RadarColumnSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[Series]] for a 3D column graph.\r\n *\r\n * @see {@link IRadarColumnSeriesEvents} for a list of available Events\r\n * @see {@link IRadarColumnSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\r\nvar RadarColumnSeries = /** @class */ (function (_super) {\r\n __extends(RadarColumnSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function RadarColumnSeries() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"RadarColumnSeries\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Creates and returns a RadarColumn element to use as column in radar chart.\r\n *\r\n * @return RadarColumn.\r\n */\r\n RadarColumnSeries.prototype.createColumnTemplate = function () {\r\n return new RadarColumn();\r\n };\r\n /**\r\n * (Re)validates the whole series, effectively causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n RadarColumnSeries.prototype.validate = function () {\r\n // so that radius would be updated\r\n if (this.chart.invalid) {\r\n this.chart.validate();\r\n }\r\n _super.prototype.validate.call(this);\r\n };\r\n /**\r\n * @ignore\r\n */\r\n RadarColumnSeries.prototype.disableUnusedColumns = function (dataItem) {\r\n if (dataItem) {\r\n if (dataItem.column) {\r\n dataItem.column.__disabled = true;\r\n }\r\n $iter.each(this.axisRanges.iterator(), function (axisRange) {\r\n var rangeColumn = dataItem.rangesColumns.getKey(axisRange.uid);\r\n if (rangeColumn) {\r\n rangeColumn.__disabled = true;\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * Validates data item's element, effectively redrawing it.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n RadarColumnSeries.prototype.validateDataElementReal = function (dataItem) {\r\n var _this = this;\r\n var startAngle = this.chart.startAngle;\r\n var endAngle = this.chart.endAngle;\r\n var yField = this.yField;\r\n var yOpenField = this.yOpenField;\r\n var xField = this.xField;\r\n var xOpenField = this.xOpenField;\r\n var lAngle;\r\n var rAngle;\r\n var tRadius;\r\n var bRadius;\r\n var startLocation = this.getStartLocation(dataItem);\r\n var endLocation = this.getEndLocation(dataItem);\r\n var cellAngle = (endAngle - startAngle) / (this.dataItems.length * (this.end - this.start));\r\n var radarColumn = dataItem.column;\r\n if (!radarColumn) {\r\n radarColumn = this.columns.create();\r\n dataItem.column = radarColumn;\r\n $object.copyProperties(this, radarColumn, visualProperties); // need this \r\n $object.copyProperties(this.columns.template, radarColumn, visualProperties); // second time, no force, so that columns.template would override series properties\t\t\t\r\n dataItem.addSprite(radarColumn);\r\n radarColumn.paper = this.paper; // sometimes pattern is not drawn if is set with adapter without this.\r\n this.setColumnStates(radarColumn);\r\n }\r\n var width = radarColumn.width;\r\n var percentWidth = 100;\r\n if (width instanceof Percent) {\r\n percentWidth = width.percent;\r\n }\r\n var offset = $math.round((endLocation - startLocation) * (1 - percentWidth / 100) / 2, 5);\r\n startLocation += offset;\r\n endLocation -= offset;\r\n // two category axes\r\n if ((this.xAxis instanceof CategoryAxis) && (this.yAxis instanceof CategoryAxis)) {\r\n tRadius = $math.getDistance({ x: this.yAxis.getX(dataItem, yField, 0, \"valueY\"), y: this.yAxis.getY(dataItem, yField, 0, \"valueY\") });\r\n bRadius = $math.getDistance({ x: this.yAxis.getX(dataItem, yOpenField, 1, \"valueY\"), y: this.yAxis.getY(dataItem, yOpenField, 1, \"valueY\") });\r\n lAngle = this.xAxis.getAngle(dataItem, xOpenField, 0, \"valueX\");\r\n rAngle = this.xAxis.getAngle(dataItem, xField, 1, \"valueX\");\r\n startAngle = startAngle + startLocation * cellAngle;\r\n endAngle = endAngle - (1 - endLocation) * cellAngle;\r\n }\r\n else if (this.baseAxis == this.xAxis) {\r\n tRadius = $math.getDistance({ x: this.yAxis.getX(dataItem, yField, dataItem.locations[yField], \"valueY\"), y: this.yAxis.getY(dataItem, yField, dataItem.locations[yField], \"valueY\") });\r\n bRadius = $math.getDistance({ x: this.yAxis.getX(dataItem, yOpenField, dataItem.locations[yOpenField], \"valueY\"), y: this.yAxis.getY(dataItem, yOpenField, dataItem.locations[yOpenField], \"valueY\") });\r\n lAngle = this.xAxis.getAngle(dataItem, xOpenField, startLocation, \"valueX\");\r\n rAngle = this.xAxis.getAngle(dataItem, xField, endLocation, \"valueX\");\r\n startAngle = startAngle + startLocation * cellAngle;\r\n endAngle = endAngle - (1 - endLocation) * cellAngle;\r\n }\r\n else {\r\n tRadius = $math.getDistance({ x: this.yAxis.getX(dataItem, yField, startLocation, \"valueY\"), y: this.yAxis.getY(dataItem, yField, startLocation, \"valueY\") });\r\n bRadius = $math.getDistance({ x: this.yAxis.getX(dataItem, yOpenField, endLocation, \"valueY\"), y: this.yAxis.getY(dataItem, yOpenField, endLocation, \"valueY\") });\r\n if ($type.isNumber(width)) {\r\n var abs = Math.abs(tRadius - bRadius);\r\n if (abs > width) {\r\n var d = (abs - width) / 2;\r\n tRadius += d;\r\n bRadius -= d;\r\n }\r\n }\r\n lAngle = this.xAxis.getAngle(dataItem, xField, dataItem.locations[xField], \"valueX\");\r\n rAngle = this.xAxis.getAngle(dataItem, xOpenField, dataItem.locations[xOpenField], \"valueX\");\r\n }\r\n if (rAngle < lAngle) {\r\n var temp = rAngle;\r\n rAngle = lAngle;\r\n lAngle = temp;\r\n }\r\n lAngle = $math.fitToRange(lAngle, startAngle, endAngle);\r\n rAngle = $math.fitToRange(rAngle, startAngle, endAngle);\r\n var slice = radarColumn.radarColumn;\r\n slice.startAngle = lAngle;\r\n var arc = rAngle - lAngle;\r\n if (arc > 0) {\r\n slice.arc = arc;\r\n slice.radius = tRadius;\r\n slice.innerRadius = bRadius;\r\n radarColumn.__disabled = false;\r\n radarColumn.parent = this.columnsContainer;\r\n $iter.each(this.axisRanges.iterator(), function (axisRange) {\r\n var rangeColumn = dataItem.rangesColumns.getKey(axisRange.uid);\r\n if (!rangeColumn) {\r\n rangeColumn = _this.columns.create();\r\n $object.forceCopyProperties(_this.columns.template, rangeColumn, visualProperties);\r\n $object.copyProperties(axisRange.contents, rangeColumn, visualProperties); // need this because 3d columns are not in the same container\r\n if (rangeColumn.dataItem) {\r\n $array.remove(rangeColumn.dataItem.sprites, rangeColumn);\r\n }\r\n dataItem.addSprite(rangeColumn);\r\n rangeColumn.paper = _this.paper; // sometimes pattern is not drawn if is set with adapter without this.\t\t\t\t\t\r\n _this.setColumnStates(rangeColumn);\r\n dataItem.rangesColumns.setKey(axisRange.uid, rangeColumn);\r\n }\r\n var slice = rangeColumn.radarColumn;\r\n slice.startAngle = lAngle;\r\n slice.arc = arc;\r\n slice.radius = tRadius;\r\n slice.innerRadius = bRadius;\r\n if (slice.invalid) {\r\n slice.paper = _this.paper;\r\n slice.validate(); // validate as if it was used previously, it will flicker with previous dimensions\r\n }\r\n rangeColumn.__disabled = false;\r\n rangeColumn.parent = axisRange.contents;\r\n });\r\n }\r\n else {\r\n this.disableUnusedColumns(dataItem);\r\n }\r\n };\r\n /**\r\n * Returns an [[IPoint]] coordinates of the specific Serie's data point.\r\n *\r\n * @param dataItem Data item\r\n * @param xKey Name of X data field\r\n * @param yKey Name of Y data field\r\n * @param locationX X location\r\n * @param locationY Y location\r\n * @param stackKeyX ?\r\n * @param stackKeyY ?\r\n * @returns Coordinates\r\n */\r\n RadarColumnSeries.prototype.getPoint = function (dataItem, xKey, yKey, locationX, locationY, stackKeyX, stackKeyY) {\r\n if (!stackKeyX) {\r\n stackKeyX = \"valueX\";\r\n }\r\n if (!stackKeyY) {\r\n stackKeyY = \"valueY\";\r\n }\r\n var x = this.yAxis.getX(dataItem, yKey, locationY, stackKeyY);\r\n var y = this.yAxis.getY(dataItem, yKey, locationY, stackKeyY);\r\n var radius = $math.getDistance({ x: x, y: y });\r\n // hack to be able to determine angle later\r\n if (radius == 0) {\r\n radius = 0.00001;\r\n }\r\n var angle = this.xAxis.getAngle(dataItem, xKey, locationX, stackKeyX);\r\n return { x: radius * $math.cos(angle), y: radius * $math.sin(angle) };\r\n };\r\n /**\r\n * Returns an SVG path to be used as a mask for the series.\r\n *\r\n * @return SVG path\r\n */\r\n RadarColumnSeries.prototype.getMaskPath = function () {\r\n var renderer = this.yAxis.renderer;\r\n return $path.arc(renderer.startAngle, renderer.endAngle - renderer.startAngle, renderer.pixelRadius, renderer.pixelInnerRadius);\r\n };\r\n RadarColumnSeries.prototype.positionBulletReal = function (bullet, positionX, positionY) {\r\n var xAxis = this.xAxis;\r\n var yAxis = this.yAxis;\r\n if (positionX < xAxis.start || positionX > xAxis.end || positionY < yAxis.start || positionY > yAxis.end) {\r\n bullet.visible = false;\r\n }\r\n bullet.moveTo(this.xAxis.renderer.positionToPoint(positionX, positionY));\r\n };\r\n RadarColumnSeries.prototype.setXAxis = function (axis) {\r\n _super.prototype.setXAxis.call(this, axis);\r\n this.updateRendererRefs();\r\n };\r\n RadarColumnSeries.prototype.setYAxis = function (axis) {\r\n _super.prototype.setYAxis.call(this, axis);\r\n this.updateRendererRefs();\r\n };\r\n RadarColumnSeries.prototype.updateRendererRefs = function () {\r\n var rendererX = this.xAxis.renderer;\r\n var rendererY = this.yAxis.renderer;\r\n rendererX.axisRendererY = rendererY;\r\n };\r\n return RadarColumnSeries;\r\n}(ColumnSeries));\r\nexport { RadarColumnSeries };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"RadarColumnSeries\"] = RadarColumnSeries;\r\nregistry.registeredClasses[\"RadarColumnSeriesDataItem\"] = RadarColumnSeriesDataItem;\r\n//# sourceMappingURL=RadarColumnSeries.js.map","/**\r\n * Module that defines everything related to building Funnel slices.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../../core/Container\";\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Class used to create [[FunnelSlice]] elements.\r\n *\r\n * @see {@link IFunnelSliceEvents} for a list of available events\r\n * @see {@link IFunnelSliceAdapters} for a list of available adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/sliced-chart/} for documentation\r\n * @important\r\n */\r\nvar FunnelSlice = /** @class */ (function (_super) {\r\n __extends(FunnelSlice, _super);\r\n /**\r\n * Constructor\r\n */\r\n function FunnelSlice() {\r\n var _this = _super.call(this) || this;\r\n _this.slice = _this.createChild(Sprite);\r\n _this.slice.shouldClone = false;\r\n _this.slice.setElement(_this.paper.add(\"path\"));\r\n _this.slice.isMeasured = false;\r\n _this.orientation = \"vertical\";\r\n _this.bottomWidth = percent(100);\r\n _this.topWidth = percent(100);\r\n _this.isMeasured = false;\r\n _this.width = 10;\r\n _this.height = 10;\r\n _this.expandDistance = 0;\r\n _this.className = \"FunnelSlice\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the element.\r\n */\r\n FunnelSlice.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n var pt = this.pixelPaddingTop;\r\n var pb = this.pixelPaddingBottom;\r\n var pr = this.pixelPaddingRight;\r\n var pl = this.pixelPaddingLeft;\r\n var w = this.pixelWidth - pr - pl;\r\n var h = this.pixelHeight - pt - pb;\r\n var ed = this.expandDistance;\r\n var path = \"\";\r\n if (this.orientation == \"vertical\") {\r\n var tw = $utils.relativeToValue(this.topWidth, w);\r\n var bw = $utils.relativeToValue(this.bottomWidth, w);\r\n var tl = { x: (w - tw) / 2 + pl, y: pt };\r\n var tr = { x: (w + tw) / 2 + pl, y: pt };\r\n var br = { x: (w + bw) / 2 + pl, y: pt + h };\r\n var bl = { x: (w - bw) / 2 + pl, y: pt + h };\r\n var cpr = { x: tr.x + (br.x - tr.x) / 2 + ed * h, y: tr.y + 0.5 * h };\r\n var cpl = { x: tl.x + (bl.x - tl.x) / 2 - ed * h, y: tl.y + 0.5 * h };\r\n var qp1 = $path.lineTo(br);\r\n var qp2 = $path.lineTo(tl);\r\n if (ed != 0) {\r\n qp1 = $path.quadraticCurveTo(br, cpr);\r\n qp2 = $path.quadraticCurveTo(tl, cpl);\r\n }\r\n path = $path.moveTo(tl) + $path.lineTo(tr) + qp1 + $path.lineTo(bl) + qp2;\r\n this.tickPoint = { x: tr.x + (br.x - tr.x) / 2, y: tr.y + (br.y - tr.y) / 2 };\r\n }\r\n else {\r\n var tw = $utils.relativeToValue(this.topWidth, h);\r\n var bw = $utils.relativeToValue(this.bottomWidth, h);\r\n var tt = { x: pl, y: (h - tw) / 2 + pt };\r\n var tb = { x: pl, y: (h + tw) / 2 + pt };\r\n var bt = { x: pl + w, y: (h - bw) / 2 + pt };\r\n var bb = { x: pl + w, y: (h + bw) / 2 + pt };\r\n var cpr = { y: tt.y + (bt.y - tt.y) / 2 - ed * w, x: tt.x + 0.5 * w };\r\n var cpl = { y: tb.y + (bb.y - tb.y) / 2 + ed * w, x: tb.x + 0.5 * w };\r\n var qp1 = $path.lineTo(bt);\r\n var qp2 = $path.lineTo(tb);\r\n if (ed != 0) {\r\n qp1 = $path.quadraticCurveTo(bt, cpr);\r\n qp2 = $path.quadraticCurveTo(tb, cpl);\r\n }\r\n path = $path.moveTo(tb) + $path.lineTo(tt) + qp1 + $path.lineTo(bb) + qp2;\r\n this.tickPoint = { y: tb.y + (bb.y - tb.y) / 2, x: tb.x + (bb.x - tb.x) / 2 };\r\n }\r\n this.slice.path = path;\r\n this.invalidateLayout();\r\n };\r\n FunnelSlice.prototype.getPoint = function (locationX, locationY) {\r\n var pt = this.pixelPaddingTop;\r\n var pb = this.pixelPaddingBottom;\r\n var pr = this.pixelPaddingRight;\r\n var pl = this.pixelPaddingLeft;\r\n var w = this.pixelWidth - pr - pl;\r\n var h = this.pixelHeight - pt - pb;\r\n if (this.orientation == \"vertical\") {\r\n var tw = $utils.relativeToValue(this.topWidth, w);\r\n var bw = $utils.relativeToValue(this.bottomWidth, w);\r\n var tl = { x: (w - tw) / 2 + pl, y: pt };\r\n var tr = { x: (w + tw) / 2 + pl, y: pt };\r\n var br = { x: (w + bw) / 2 + pl, y: pt + h };\r\n var bl = { x: (w - bw) / 2 + pl, y: pt + h };\r\n var mlx = tl.x + (bl.x - tl.x) * locationY;\r\n var mrx = tr.x + (br.x - tr.x) * locationY;\r\n return { x: mlx + (mrx - mlx) * locationX, y: tr.y + (br.y - tr.y) * locationY };\r\n }\r\n else {\r\n var tw = $utils.relativeToValue(this.topWidth, h);\r\n var bw = $utils.relativeToValue(this.bottomWidth, h);\r\n var tt = { x: pl, y: (h - tw) / 2 + pt };\r\n var tb = { x: pl, y: (h + tw) / 2 + pt };\r\n var bt = { x: pl + w, y: (h - bw) / 2 + pt };\r\n var bb = { x: pl + w, y: (h + bw) / 2 + pt };\r\n var mty = tt.y + (bt.y - tt.y) * locationX;\r\n var mby = tb.y + (bb.y - tb.y) * locationX;\r\n return { y: mty + (mby - mty) * locationY, x: tt.x + (bt.x - tt.x) * locationX };\r\n }\r\n };\r\n Object.defineProperty(FunnelSlice.prototype, \"bottomWidth\", {\r\n /**\r\n * @return bottom width\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"bottomWidth\");\r\n },\r\n /**\r\n * Bottom width in pixels or percent.\r\n *\r\n * IMPORTANT: this setting might be used to set dimensions if you use slice\r\n * as a standalone element. If it's a part of [[FunnelSeries]] this setting\r\n * becomes read-only as it will be automatically reset by series.\r\n *\r\n * @param value Bottom width\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"bottomWidth\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FunnelSlice.prototype, \"topWidth\", {\r\n /**\r\n * @return Top width\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"topWidth\");\r\n },\r\n /**\r\n * Top width in pixels or percent.\r\n *\r\n * IMPORTANT: this setting might be used to set dimensions if you use slice\r\n * as a standalone element. If it's a part of [[FunnelSeries]] this setting\r\n * becomes read-only as it will be automatically reset by series.\r\n *\r\n * @param value Top width\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"topWidth\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FunnelSlice.prototype, \"orientation\", {\r\n /**\r\n * @return Orientation\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"orientation\");\r\n },\r\n /**\r\n * Orientation of the funnel slice: \"horizontal\" or \"vertical\".\r\n *\r\n * IMPORTANT: this setting might be used to set orintation if you use slice\r\n * as a standalone element. If it's a part of [[FunnelSeries]] this setting\r\n * becomes read-only as it will be automatically reset by series.\r\n *\r\n * @param value Orientation\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"orientation\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FunnelSlice.prototype, \"expandDistance\", {\r\n /**\r\n * @return expandDistance\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"expandDistance\");\r\n },\r\n /**\r\n * A relative distance slice's sides should be bent to. It's relative to the\r\n * height of the slice.\r\n *\r\n * Zero (default) will mean the sides will be perfectly straight.\r\n *\r\n * Positive value will make them bend outwards, resulting in \"puffed\" slices.\r\n *\r\n * Negative values will make them bend inwards.\r\n *\r\n * @default 0\r\n * @param {number}\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"expandDistance\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies all parameters from another [[Sprite]].\r\n *\r\n * @param source Source Sprite\r\n */\r\n FunnelSlice.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n if (this.slice) {\r\n this.slice.copyFrom(source.slice);\r\n }\r\n };\r\n return FunnelSlice;\r\n}(Container));\r\nexport { FunnelSlice };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"FunnelSlice\"] = FunnelSlice;\r\n//# sourceMappingURL=FunnelSlice.js.map","/**\r\n * Funnel tick module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Tick } from \"../elements/Tick\";\r\nimport { MutableValueDisposer, MultiDisposer } from \"../../core/utils/Disposer\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws an tick line for a funnel slice connecting it to a related label.\r\n *\r\n * @see {@link IFunnelTickEvents} for a list of available events\r\n * @see {@link IFunnelTickAdapters} for a list of available Adapters\r\n */\r\nvar FunnelTick = /** @class */ (function (_super) {\r\n __extends(FunnelTick, _super);\r\n /**\r\n * Constructor\r\n */\r\n function FunnelTick() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * A label element this tick is attached to.\r\n */\r\n _this._label = new MutableValueDisposer();\r\n /**\r\n * A slice element this tick is attached to.\r\n */\r\n _this._slice = new MutableValueDisposer();\r\n _this.className = \"FunnelTick\";\r\n _this.element = _this.paper.add(\"path\");\r\n _this._disposers.push(_this._label);\r\n _this._disposers.push(_this._slice);\r\n _this.setPropertyValue(\"locationX\", 0);\r\n _this.setPropertyValue(\"locationY\", 0);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the tick element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n FunnelTick.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n var slice = this.slice;\r\n var point = slice.getPoint(this.locationX, this.locationY);\r\n if (point) {\r\n var label = this.label;\r\n var series = slice.dataItem.component;\r\n var p0 = void 0;\r\n var p1 = void 0;\r\n var p2 = void 0;\r\n if (series.orientation == \"vertical\") {\r\n var x1 = label.pixelX;\r\n var y1 = label.pixelY;\r\n if (!series.labelsOpposite) {\r\n x1 += label.maxRight;\r\n }\r\n p0 = $utils.spritePointToSprite(point, slice, this.parent);\r\n p2 = $utils.spritePointToSprite({ x: x1, y: y1 }, label.parent, this.parent);\r\n p1 = { x: label.parent.pixelX - this.length, y: p2.y };\r\n if (!series.labelsOpposite) {\r\n p1.x = label.parent.measuredWidth + this.length;\r\n }\r\n }\r\n else {\r\n var x1 = label.pixelX;\r\n var y1 = label.pixelY;\r\n if (!series.labelsOpposite) {\r\n y1 += label.maxBottom;\r\n }\r\n p0 = $utils.spritePointToSprite(point, slice, this.parent);\r\n p2 = $utils.spritePointToSprite({ x: x1, y: y1 }, label.parent, this.parent);\r\n p1 = { x: p2.x, y: label.parent.pixelY - this.length };\r\n if (!series.labelsOpposite) {\r\n p1.y = label.parent.measuredHeight + this.length;\r\n }\r\n }\r\n this.path = $path.moveTo(p0) + $path.lineTo(p1) + $path.lineTo(p2);\r\n }\r\n };\r\n Object.defineProperty(FunnelTick.prototype, \"slice\", {\r\n /**\r\n * @return FunnelSlice\r\n */\r\n get: function () {\r\n return this._slice.get();\r\n },\r\n /**\r\n * [[FunnelSlice]] element tick is attached to.\r\n *\r\n * @param slice Slice\r\n */\r\n set: function (slice) {\r\n this._slice.set(slice, new MultiDisposer([\r\n slice.events.on(\"transformed\", this.invalidate, this, false),\r\n slice.events.on(\"validated\", this.invalidate, this, false)\r\n ]));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FunnelTick.prototype, \"label\", {\r\n /**\r\n * @return Label\r\n */\r\n get: function () {\r\n return this._label.get();\r\n },\r\n /**\r\n * [[Label]] element tick is attached to.\r\n *\r\n * @param label Label\r\n */\r\n set: function (label) {\r\n this._label.set(label, label.events.on(\"transformed\", this.invalidate, this, false));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FunnelTick.prototype, \"locationX\", {\r\n /**\r\n * @return Location (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"locationX\");\r\n },\r\n /**\r\n * A relative horizontal position within target element a tick is pointing\r\n * to.\r\n *\r\n * A scale is from 0 to 1, where 0 means left edge, and 1 right edge.\r\n *\r\n * You can also set any value in-between (e.g. 0.5 will point to the middle\r\n * of the slice), or outside 0-1 range, which will put tick anchor position\r\n * outside target element.\r\n *\r\n * @param value Location (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"locationX\", value, false, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FunnelTick.prototype, \"locationY\", {\r\n /**\r\n * @return Location (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"locationY\");\r\n },\r\n /**\r\n * A relative vertical position within target element a tick is pointing\r\n * to.\r\n *\r\n * A scale is from 0 to 1, where 0 means top edge, and 1 bottom edge.\r\n *\r\n * You can also set any value in-between (e.g. 0.5 will point to the middle\r\n * of the slice), or outside 0-1 range, which will put tick anchor position\r\n * outside target element.\r\n *\r\n * @param value Location (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"locationY\", value, false, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return FunnelTick;\r\n}(Tick));\r\nexport { FunnelTick };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"FunnelTick\"] = FunnelTick;\r\n//# sourceMappingURL=FunnelTick.js.map","/**\r\n * Defines Funnel Chart Series.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { PercentSeries, PercentSeriesDataItem } from \"./PercentSeries\";\r\nimport { FunnelSlice } from \"../elements/FunnelSlice\";\r\nimport { FunnelTick } from \"../elements/FunnelTick\";\r\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { Disposer } from \"../../core/utils/Disposer\";\r\nimport { options } from \"../../core/Options\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n//@todo: sequenced?\r\n/**\r\n * Defines a [[DataItem]] for [[FunnelSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar FunnelSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(FunnelSeriesDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function FunnelSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"FunnelSeriesDataItem\";\r\n // this helps to invalidate series when value is 0 an it is hidden (no other events are triggered then)\r\n _this.events.on(\"visibilitychanged\", function () {\r\n if (_this.component) {\r\n _this.component.invalidateDataItems();\r\n }\r\n }, _this, false);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(FunnelSeriesDataItem.prototype, \"sliceLink\", {\r\n /**\r\n * A [[FunnelSlice]] element, related to this data item ([[FunnelSlice]]).\r\n *\r\n * @readonly\r\n * @return Slice element\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._sliceLink) {\r\n var sliceLink_1 = this.component.sliceLinks.create();\r\n this._sliceLink = sliceLink_1;\r\n this._disposers.push(sliceLink_1);\r\n sliceLink_1.parent = this.component.slicesContainer;\r\n this._disposers.push(new Disposer(function () {\r\n if (_this.component) {\r\n _this.component.sliceLinks.removeValue(sliceLink_1);\r\n }\r\n }));\r\n this.addSprite(sliceLink_1);\r\n sliceLink_1.visible = this.visible;\r\n }\r\n return this._sliceLink;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return FunnelSeriesDataItem;\r\n}(PercentSeriesDataItem));\r\nexport { FunnelSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[Series]] for a FunnelSlice series on a [[SlicedChart]].\r\n *\r\n * @see {@link IFunnelSeriesEvents} for a list of available Events\r\n * @see {@link IFunnelSeriesAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/sliced-chart/} for documentation\r\n * @important\r\n */\r\nvar FunnelSeries = /** @class */ (function (_super) {\r\n __extends(FunnelSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function FunnelSeries() {\r\n var _this = _super.call(this) || this;\r\n _this._nextY = 0;\r\n _this.className = \"FunnelSeries\";\r\n _this.orientation = \"vertical\";\r\n _this.width = percent(100);\r\n _this.height = percent(100);\r\n _this.slicesContainer.width = percent(100);\r\n _this.slicesContainer.height = percent(100);\r\n _this._disposers.push(_this.slicesContainer.events.on(\"maxsizechanged\", _this.invalidateDataItems, _this, false));\r\n _this.labelsOpposite = true;\r\n _this.labelsContainer.layout = \"absolute\";\r\n _this.bottomRatio = 0;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Creates a [[FunnelSlice]] element.\r\n *\r\n * @return Slice\r\n */\r\n FunnelSeries.prototype.createSlice = function () {\r\n return new FunnelSlice();\r\n };\r\n /**\r\n * Creates a [[FunnelTick]] element.\r\n *\r\n * @return Tick\r\n */\r\n FunnelSeries.prototype.createTick = function () {\r\n return new FunnelTick();\r\n };\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n FunnelSeries.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Funnel Series\");\r\n }\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n FunnelSeries.prototype.createDataItem = function () {\r\n return new FunnelSeriesDataItem();\r\n };\r\n /**\r\n * Inits FunnelSlice.\r\n *\r\n * @param slice to init\r\n */\r\n FunnelSeries.prototype.initSlice = function (slice) {\r\n slice.isMeasured = false;\r\n slice.defaultState.properties.scale = 1;\r\n slice.observe(\"scale\", this.handleSliceScale, this);\r\n slice.observe([\"dx\", \"dy\", \"x\", \"y\"], this.handleSliceMove, this);\r\n slice.tooltipText = \"{category}: {value.percent.formatNumber('#.#')}% ({value.value})\";\r\n var hoverState = slice.states.create(\"hover\");\r\n hoverState.properties.expandDistance = 0.2;\r\n };\r\n /**\r\n * [initLabel description]\r\n *\r\n * @todo Description\r\n * @param label [description]\r\n */\r\n FunnelSeries.prototype.initLabel = function (label) {\r\n _super.prototype.initLabel.call(this, label);\r\n label.verticalCenter = \"middle\";\r\n label.horizontalCenter = \"middle\";\r\n label.isMeasured = true;\r\n label.padding(5, 5, 5, 5);\r\n };\r\n /**\r\n * (Re)validates the whole series, effectively causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n FunnelSeries.prototype.validate = function () {\r\n _super.prototype.validate.call(this);\r\n this._nextY = 0;\r\n };\r\n /**\r\n * [validateDataElements description]\r\n *\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n */\r\n FunnelSeries.prototype.validateDataElements = function () {\r\n var _this = this;\r\n var slicesContainer = this.slicesContainer;\r\n var labelsContainer = this.labelsContainer;\r\n var labelTemplate = this.labels.template;\r\n if (this.alignLabels) {\r\n labelTemplate.interactionsEnabled = true;\r\n slicesContainer.isMeasured = true;\r\n labelsContainer.isMeasured = true;\r\n }\r\n else {\r\n labelTemplate.interactionsEnabled = false;\r\n slicesContainer.isMeasured = false;\r\n labelsContainer.isMeasured = false;\r\n }\r\n var total = 0;\r\n var count = 0;\r\n this.dataItems.each(function (dItem) {\r\n if ($type.hasValue(dItem.value)) {\r\n count++;\r\n if (dItem.value > 0) {\r\n total += Math.abs(dItem.getWorkingValue(\"value\") / dItem.value);\r\n }\r\n else {\r\n if (_this.ignoreZeroValues) {\r\n count--;\r\n }\r\n else {\r\n if (!dItem.visible || dItem.__disabled || dItem.isHiding) {\r\n count--;\r\n }\r\n else {\r\n total += 1;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n this._total = 1 / count * total;\r\n this._count = count;\r\n _super.prototype.validateDataElements.call(this);\r\n this.arrangeLabels();\r\n };\r\n /**\r\n * [getNextValue description]\r\n *\r\n * @todo Description\r\n * @param dataItem [description]\r\n * @return [description]\r\n */\r\n FunnelSeries.prototype.getNextValue = function (dataItem) {\r\n var index = dataItem.index;\r\n var nextValue = dataItem.getWorkingValue(\"value\");\r\n if (index < this.dataItems.length - 1) {\r\n var nextItem = this.dataItems.getIndex(index + 1);\r\n nextValue = nextItem.getWorkingValue(\"value\");\r\n if (!nextItem.visible || nextItem.isHiding || nextItem.__disabled || (nextItem.value == 0 && this.ignoreZeroValues)) {\r\n return this.getNextValue(nextItem);\r\n }\r\n }\r\n return nextValue;\r\n };\r\n /**\r\n * [formDataElement description]\r\n *\r\n * @todo Description\r\n */\r\n FunnelSeries.prototype.formDataElement = function () {\r\n };\r\n /**\r\n * Validates data item's element, effectively redrawing it.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n FunnelSeries.prototype.validateDataElement = function (dataItem) {\r\n var _this = this;\r\n //if ($type.hasValue(dataItem.value)) {\r\n // FunnelSlice\r\n var slice = dataItem.slice;\r\n slice.orientation = this.orientation;\r\n var sliceLink = dataItem.sliceLink;\r\n sliceLink.orientation = this.orientation;\r\n var tick = dataItem.tick;\r\n var label = dataItem.label;\r\n tick.slice = slice;\r\n tick.label = label;\r\n if ($type.hasValue(dataItem.value)) {\r\n this.decorateSlice(dataItem);\r\n $array.each(dataItem.sprites, function (sprite) {\r\n if (dataItem.value == 0 && _this.ignoreZeroValues) {\r\n sprite.__disabled = true;\r\n }\r\n else {\r\n sprite.__disabled = false;\r\n }\r\n });\r\n }\r\n else {\r\n $array.each(dataItem.sprites, function (sprite) {\r\n sprite.__disabled = true;\r\n });\r\n }\r\n if (dataItem.index == this.dataItems.length - 1) {\r\n sliceLink.disabled = true;\r\n }\r\n // do this at the end, otherwise bullets won't be positioned properly\r\n _super.prototype.validateDataElement.call(this, dataItem);\r\n sliceLink.fill = slice.fill;\r\n //}\r\n };\r\n /**\r\n * [decorateSlice description]\r\n *\r\n * @todo Description\r\n * @param dataItem [description]\r\n */\r\n FunnelSeries.prototype.decorateSlice = function (dataItem) {\r\n var slice = dataItem.slice;\r\n var sliceLink = dataItem.sliceLink;\r\n var label = dataItem.label;\r\n var tick = dataItem.tick;\r\n var maxWidth = this.slicesContainer.innerWidth;\r\n var maxHeight = this.slicesContainer.innerHeight;\r\n var nextValue = this.getNextValue(dataItem);\r\n var workingValue = Math.abs(dataItem.getWorkingValue(\"value\"));\r\n var bottomRatio = this.bottomRatio;\r\n var d = 1;\r\n if (dataItem.value != 0) {\r\n d = workingValue / Math.abs(dataItem.value);\r\n }\r\n else {\r\n if (dataItem.__disabled || dataItem.isHiding || !dataItem.visible) {\r\n d = 0.000001;\r\n }\r\n }\r\n if (this.ignoreZeroValues && dataItem.value == 0) {\r\n dataItem.__disabled = true;\r\n return;\r\n }\r\n else {\r\n dataItem.__disabled = false;\r\n }\r\n if (this._nextY == Infinity) {\r\n this._nextY = 0;\r\n }\r\n if (this.orientation == \"vertical\") {\r\n var linkHeight = sliceLink.pixelHeight * d;\r\n maxHeight = maxHeight + linkHeight; // to avoid one link gap in the bottom\r\n slice.topWidth = workingValue / this.dataItem.values.value.high * maxWidth;\r\n slice.bottomWidth = (workingValue - (workingValue - nextValue) * bottomRatio) / this.dataItem.values.value.high * maxWidth;\r\n sliceLink.topWidth = slice.bottomWidth;\r\n sliceLink.bottomWidth = (workingValue - (workingValue - nextValue)) / this.dataItem.values.value.high * maxWidth;\r\n slice.y = this._nextY;\r\n slice.height = Math.min(100000, $math.max(0, maxHeight / this._count * d / this._total - linkHeight));\r\n slice.x = maxWidth / 2;\r\n if (!this.alignLabels) {\r\n label.x = slice.x;\r\n }\r\n else {\r\n label.x = undefined;\r\n }\r\n label.y = slice.pixelY + slice.pixelHeight * tick.locationY;\r\n this._nextY += slice.pixelHeight + linkHeight;\r\n sliceLink.y = this._nextY - linkHeight;\r\n sliceLink.x = slice.x;\r\n }\r\n else {\r\n var linkWidth = sliceLink.pixelWidth * d;\r\n maxWidth = maxWidth + linkWidth; // to avoid one link gap in the bottom\r\n slice.topWidth = workingValue / this.dataItem.values.value.high * maxHeight;\r\n slice.bottomWidth = (workingValue - (workingValue - nextValue) * bottomRatio) / this.dataItem.values.value.high * maxHeight;\r\n sliceLink.topWidth = slice.bottomWidth;\r\n sliceLink.bottomWidth = (workingValue - (workingValue - nextValue)) / this.dataItem.values.value.high * maxHeight;\r\n slice.x = this._nextY;\r\n slice.width = Math.min(100000, maxWidth / this._count * d * 1 / this._total - linkWidth);\r\n slice.y = maxHeight / 2;\r\n if (!this.alignLabels) {\r\n label.y = slice.y;\r\n }\r\n else {\r\n label.y = this.labelsContainer.measuredHeight;\r\n }\r\n label.x = slice.pixelX + slice.pixelWidth * tick.locationX;\r\n this._nextY += slice.pixelWidth + linkWidth;\r\n sliceLink.x = this._nextY - linkWidth;\r\n sliceLink.y = slice.y;\r\n }\r\n };\r\n FunnelSeries.prototype.getLastLabel = function (index) {\r\n if (index > 0) {\r\n var lastLabel = this.labels.getIndex(index);\r\n if (lastLabel.__disabled || !lastLabel.visible) {\r\n return this.getLastLabel(index - 1);\r\n }\r\n else {\r\n return lastLabel;\r\n }\r\n }\r\n };\r\n /**\r\n * [arrangeLabels description]\r\n *\r\n * @todo Description\r\n */\r\n FunnelSeries.prototype.arrangeLabels = function () {\r\n if (this.alignLabels) {\r\n var count = this.labels.length;\r\n if (count > 1) {\r\n var lastLabel = this.getLastLabel(count - 1);\r\n if (lastLabel) {\r\n var lastY = lastLabel.pixelY;\r\n var lastX = lastLabel.pixelX;\r\n if (count > 1) {\r\n for (var i = count - 2; i >= 0; i--) {\r\n var label = this.labels.getIndex(i);\r\n if (label.visible && !label.__disabled) {\r\n if (label.invalid) {\r\n label.validate();\r\n }\r\n if (this.orientation == \"vertical\") {\r\n if (label.pixelY + label.measuredHeight > lastY) {\r\n label.y = Math.min(1000000, lastY - label.measuredHeight);\r\n }\r\n }\r\n // horizontal\r\n else {\r\n if (label.pixelX + label.measuredWidth > lastX) {\r\n label.x = Math.min(1000000, lastX - label.measuredWidth);\r\n }\r\n }\r\n lastY = label.pixelY;\r\n lastX = label.pixelX;\r\n }\r\n }\r\n lastY = 0;\r\n lastX = 0;\r\n for (var i = 0; i < count; i++) {\r\n var label = this.labels.getIndex(i);\r\n if (label.visible && !label.__disabled) {\r\n if (label.invalid) {\r\n label.validate();\r\n }\r\n if (this.orientation == \"vertical\") {\r\n if (label.pixelY < lastY) {\r\n label.y = Math.min(1000000, lastY);\r\n }\r\n }\r\n // horizontal\r\n else {\r\n if (label.pixelX < lastX) {\r\n label.x = Math.min(1000000, lastX);\r\n }\r\n }\r\n lastY += label.measuredHeight;\r\n lastX += label.measuredWidth;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Positions series bullet.\r\n *\r\n * @ignore Exclude from docs\r\n * @param bullet Bullet\r\n */\r\n FunnelSeries.prototype.positionBullet = function (bullet) {\r\n _super.prototype.positionBullet.call(this, bullet);\r\n var dataItem = bullet.dataItem;\r\n var slice = dataItem.slice;\r\n var locationX = bullet.locationX;\r\n if (!$type.isNumber(locationX)) {\r\n locationX = 0.5;\r\n }\r\n var locationY = bullet.locationY;\r\n if (!$type.isNumber(locationY)) {\r\n locationY = 1;\r\n }\r\n bullet.x = slice.pixelX + slice.measuredWidth * locationX;\r\n bullet.y = slice.pixelY + slice.measuredHeight * locationY;\r\n };\r\n Object.defineProperty(FunnelSeries.prototype, \"orientation\", {\r\n /**\r\n * @return Orientation\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"orientation\");\r\n },\r\n /**\r\n * Orientation of the funnel slices: \"horizontal\" or \"vertical\" (default).\r\n *\r\n * @default \"vertical\"\r\n * @param value Orientation\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"orientation\", value)) {\r\n this.labelsOpposite = this.labelsOpposite;\r\n this.invalidate();\r\n if (value == \"vertical\") {\r\n this.ticks.template.locationX = 1;\r\n this.ticks.template.locationY = 0.5;\r\n this.labels.template.rotation = 0;\r\n this.layout = \"horizontal\";\r\n }\r\n else {\r\n this.ticks.template.locationX = 0.5;\r\n this.ticks.template.locationY = 1;\r\n this.labels.template.rotation = -90;\r\n this.layout = \"vertical\";\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FunnelSeries.prototype, \"bottomRatio\", {\r\n /**\r\n * @return {number}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"bottomRatio\");\r\n },\r\n /**\r\n * Indicates how slice's bottom will change in relation to slices top AND\r\n * next slices top.\r\n *\r\n * Basically it's a relative value (0-1) that indicates bottom width\r\n * position between current slice's top width and the top withd of the next\r\n * one.\r\n *\r\n * The scale goes from 0 (closer to current slice width) to 1 (closer to next\r\n * slice with).\r\n *\r\n * `0` (default) will mean that bottom will be the same as top, resulting in\r\n * a prefectly square slice.\r\n *\r\n * From the data-viz standpoint `0` is a correct setting, since area of the\r\n * slices will depict their value correctly.\r\n *\r\n * `1` will mean that slice will become trapezoid with its bottom matching\r\n * width of the next slice.\r\n *\r\n * `0.5` will make bottom width be in the middle of width of current slice\r\n * and the next slice.\r\n *\r\n * @default 0\r\n * @param {number}\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"bottomRatio\", value)) {\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FunnelSeries.prototype, \"sliceLinks\", {\r\n /**\r\n * A list of elements linking each actual slice.\r\n *\r\n * Please note that links are [[FunnelSlice]] objects, just like real links,\r\n * so they have all the same configuration options.\r\n *\r\n * You can use `template` of this link, to specify how links will look.\r\n *\r\n * ```TypeScript\r\n * series.sliceLinks.template.fillOpacity = 0.5;\r\n * ```\r\n * ```JavaScript\r\n * series.sliceLinks.template.fillOpacity = 0.5;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * \"type\": \"FunnelSeries\",\r\n * // ...\r\n * \"sliceLinks\": {\r\n * \"fillOpacity\": 0.5\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @return Funnel links\r\n */\r\n get: function () {\r\n if (!this._sliceLinks) {\r\n var sliceLink = new FunnelSlice();\r\n sliceLink.applyOnClones = true;\r\n sliceLink.fillOpacity = 0.5;\r\n sliceLink.expandDistance = -0.3;\r\n sliceLink.hiddenState.properties.opacity = 0;\r\n this._disposers.push(sliceLink);\r\n this._sliceLinks = new ListTemplate(sliceLink);\r\n this._disposers.push(new ListDisposer(this._sliceLinks));\r\n }\r\n return this._sliceLinks;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Shows hidden series.\r\n *\r\n * @param duration Duration of reveal animation (ms)\r\n * @return Animation\r\n */\r\n FunnelSeries.prototype.show = function (duration) {\r\n var _this = this;\r\n var startIndex = this.startIndex;\r\n var endIndex = this.endIndex;\r\n var interpolationDuration = this.defaultState.transitionDuration;\r\n if ($type.isNumber(duration)) {\r\n interpolationDuration = duration;\r\n }\r\n if (!options.animationsEnabled) {\r\n interpolationDuration = 0;\r\n }\r\n var delay = 0;\r\n $iter.each($iter.indexed(this.dataItems.iterator()), function (a) {\r\n var i = a[0];\r\n var dataItem = a[1];\r\n if (_this.sequencedInterpolation) {\r\n delay = _this.sequencedInterpolationDelay * i + interpolationDuration * (i - startIndex) / (endIndex - startIndex);\r\n }\r\n dataItem.show(interpolationDuration, delay, [\"value\"]);\r\n });\r\n var animation = _super.prototype.show.call(this, duration);\r\n return animation;\r\n };\r\n /**\r\n * Hides series.\r\n *\r\n * @param duration Duration of hiding animation (ms)\r\n * @return Animation\r\n */\r\n FunnelSeries.prototype.hide = function (duration) {\r\n var _this = this;\r\n var fields = [\"value\"];\r\n var value = 0;\r\n var startIndex = this.startIndex;\r\n var endIndex = this.endIndex;\r\n var delay = 0;\r\n var interpolationDuration = this.hiddenState.transitionDuration;\r\n if ($type.isNumber(duration)) {\r\n interpolationDuration = duration;\r\n }\r\n if (!options.animationsEnabled) {\r\n interpolationDuration = 0;\r\n }\r\n $iter.each($iter.indexed(this.dataItems.iterator()), function (a) {\r\n var i = a[0];\r\n var dataItem = a[1];\r\n if (_this.sequencedInterpolation) {\r\n delay = _this.sequencedInterpolationDelay * i + interpolationDuration * (i - startIndex) / (endIndex - startIndex);\r\n }\r\n dataItem.hide(interpolationDuration, delay, value, fields);\r\n });\r\n var animation = _super.prototype.hide.call(this, duration);\r\n if (animation && !animation.isFinished()) {\r\n animation.delay(delay);\r\n }\r\n return animation;\r\n };\r\n /**\r\n * @ignore\r\n */\r\n FunnelSeries.prototype.setAlignLabels = function (value) {\r\n _super.prototype.setAlignLabels.call(this, value);\r\n this.ticks.template.disabled = !value;\r\n var labelsContainer = this.labelsContainer;\r\n if (labelsContainer) {\r\n // do not align\r\n if (!value) {\r\n labelsContainer.width = percent(100);\r\n labelsContainer.height = percent(100);\r\n }\r\n //align\r\n else {\r\n labelsContainer.height = undefined;\r\n labelsContainer.width = undefined;\r\n labelsContainer.margin(10, 10, 10, 10);\r\n }\r\n }\r\n this.labelsOpposite = this.labelsOpposite;\r\n };\r\n Object.defineProperty(FunnelSeries.prototype, \"labelsOpposite\", {\r\n /**\r\n * @return Labels on opposite side?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"labelsOpposite\");\r\n },\r\n /**\r\n * Put labels on the oppsite side of the series?\r\n *\r\n * This setting is only used if `alignLabels = true`.\r\n *\r\n * If set to `true` (default) labels will be drawn to the right (on vertical\r\n * series), or to the bottom (on horizontal series).\r\n *\r\n * If set to `false`, labels will be positioned to the left or top\r\n * respectively.\r\n *\r\n * @default true\r\n * @since 4.1.13\r\n * @param value Labels on opposite side?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"labelsOpposite\", value);\r\n var labelTemplate = this.labels.template;\r\n var labelAlign = \"none\";\r\n var labelValign = \"none\";\r\n if (!this.alignLabels) {\r\n if (this.orientation == \"vertical\") {\r\n labelAlign = \"center\";\r\n }\r\n else {\r\n labelValign = \"middle\";\r\n }\r\n }\r\n else {\r\n // opposite (left/bottom)\r\n if (value) {\r\n this.labelsContainer.toFront();\r\n // left\r\n if (this.orientation == \"vertical\") {\r\n this.ticks.template.locationX = 1;\r\n labelTemplate.horizontalCenter = \"left\";\r\n labelAlign = \"right\";\r\n }\r\n // bottom\r\n else {\r\n this.ticks.template.locationY = 1;\r\n labelTemplate.horizontalCenter = \"right\";\r\n labelValign = \"bottom\";\r\n }\r\n }\r\n // non oposite (right/top)\r\n else {\r\n this.labelsContainer.toBack();\r\n // right\r\n if (this.orientation == \"vertical\") {\r\n this.ticks.template.locationX = 0;\r\n labelAlign = \"left\";\r\n }\r\n // top\r\n else {\r\n labelValign = \"top\";\r\n this.ticks.template.locationY = 0;\r\n }\r\n }\r\n }\r\n labelTemplate.align = labelAlign;\r\n labelTemplate.valign = labelValign;\r\n this.validateLayout();\r\n this.ticks.each(function (tick) {\r\n tick.invalidate();\r\n });\r\n this.invalidateDataItems();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return FunnelSeries;\r\n}(PercentSeries));\r\nexport { FunnelSeries };\r\n/**\r\n * bboxter class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"FunnelSeries\"] = FunnelSeries;\r\nregistry.registeredClasses[\"FunnelSeriesDataItem\"] = FunnelSeriesDataItem;\r\n//# sourceMappingURL=FunnelSeries.js.map","/**\r\n * Defines Pyramid Series.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { FunnelSeries, FunnelSeriesDataItem } from \"./FunnelSeries\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n//@todo: sequenced?\r\n/**\r\n * Defines a [[DataItem]] for [[PyramidSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar PyramidSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(PyramidSeriesDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PyramidSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PyramidSeriesDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return PyramidSeriesDataItem;\r\n}(FunnelSeriesDataItem));\r\nexport { PyramidSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[Series]] for a FunnelSlice series on a [[SlicedChart]].\r\n *\r\n * @see {@link IPyramidSeriesEvents} for a list of available Events\r\n * @see {@link IPyramidSeriesAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/sliced-chart/} for documentation\r\n * @important\r\n */\r\nvar PyramidSeries = /** @class */ (function (_super) {\r\n __extends(PyramidSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PyramidSeries() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PyramidSeries\";\r\n _this.topWidth = percent(0);\r\n _this.bottomWidth = percent(100);\r\n _this.pyramidHeight = percent(100);\r\n _this.valueIs = \"area\";\r\n _this.sliceLinks.template.width = 0;\r\n _this.sliceLinks.template.height = 0;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n PyramidSeries.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Pyramid Series\");\r\n }\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n PyramidSeries.prototype.createDataItem = function () {\r\n return new PyramidSeriesDataItem();\r\n };\r\n /**\r\n * (Re)validates the whole series, effectively causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n PyramidSeries.prototype.validate = function () {\r\n _super.prototype.validate.call(this);\r\n this._nextWidth = undefined;\r\n };\r\n /**\r\n * [getNextValue description]\r\n *\r\n * @todo Description\r\n * @param dataItem [description]\r\n * @return [description]\r\n */\r\n PyramidSeries.prototype.getNextValue = function (dataItem) {\r\n var index = dataItem.index;\r\n var nextValue = dataItem.getWorkingValue(\"value\");\r\n if (index < this.dataItems.length - 1) {\r\n var nextItem = this.dataItems.getIndex(index + 1);\r\n nextValue = nextItem.getWorkingValue(\"value\");\r\n }\r\n if (nextValue == 0) {\r\n nextValue = 0.000001;\r\n }\r\n return nextValue;\r\n };\r\n /**\r\n * [validateDataElements description]\r\n *\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n */\r\n PyramidSeries.prototype.validateDataElements = function () {\r\n var _this = this;\r\n var maxWidth = this.slicesContainer.innerWidth;\r\n var maxHeight = this.slicesContainer.innerHeight;\r\n this.dataItems.each(function (dataItem) {\r\n if (dataItem.value > 0) {\r\n var relValue = dataItem.getWorkingValue(\"value\") / dataItem.value;\r\n var sliceLink = dataItem.sliceLink;\r\n if (_this.orientation == \"vertical\") {\r\n maxHeight -= (sliceLink.pixelHeight * relValue);\r\n }\r\n else {\r\n maxWidth -= (sliceLink.pixelWidth * relValue);\r\n }\r\n }\r\n });\r\n this._pyramidHeight = $utils.relativeToValue(this.pyramidHeight, maxHeight);\r\n this._pyramidWidth = $utils.relativeToValue(this.pyramidHeight, maxWidth);\r\n if (this.orientation == \"vertical\") {\r\n var y = (maxHeight - this._pyramidHeight) / 2;\r\n this.slicesContainer.y = y;\r\n this.labelsContainer.y = y;\r\n this.ticksContainer.y = y;\r\n }\r\n else {\r\n var x = (maxWidth - this._pyramidWidth) / 2;\r\n this.slicesContainer.x = x;\r\n this.labelsContainer.x = x;\r\n this.ticksContainer.x = x;\r\n }\r\n _super.prototype.validateDataElements.call(this);\r\n };\r\n /**\r\n * [decorateSlice description]\r\n *\r\n * @todo Description\r\n * @param dataItem [description]\r\n */\r\n PyramidSeries.prototype.decorateSlice = function (dataItem) {\r\n var sum = this.dataItem.values.value.absoluteSum;\r\n if (sum == 0) {\r\n return;\r\n }\r\n var slice = dataItem.slice;\r\n var sliceLink = dataItem.sliceLink;\r\n var label = dataItem.label;\r\n var tick = dataItem.tick;\r\n // TODO can this be removed ?\r\n this.getNextValue(dataItem);\r\n var workingValue = Math.abs(dataItem.getWorkingValue(\"value\"));\r\n var pyramidWidth = this._pyramidWidth;\r\n var pyramidHeight = this._pyramidHeight;\r\n var maxWidth = this.slicesContainer.innerWidth;\r\n var maxHeight = this.slicesContainer.innerHeight;\r\n var linkWidth = sliceLink.pixelWidth;\r\n var linkHeight = sliceLink.pixelHeight;\r\n if ((dataItem.value == 0 || dataItem.value == null) && this.ignoreZeroValues) {\r\n dataItem.__disabled = true;\r\n }\r\n else {\r\n dataItem.__disabled = false;\r\n }\r\n if (this.orientation == \"vertical\") {\r\n var topWidth = $utils.relativeToValue(this.topWidth, maxWidth);\r\n if (!$type.isNumber(this._nextWidth)) {\r\n this._nextWidth = topWidth;\r\n }\r\n var bottomWidth = $utils.relativeToValue(this.bottomWidth, maxWidth);\r\n var sliceTopWidth = this._nextWidth;\r\n var angle = Math.atan2(pyramidHeight, topWidth - bottomWidth);\r\n var c = Math.tan(Math.PI / 2 - angle);\r\n if (c == 0) {\r\n c = 0.00000001;\r\n }\r\n var sliceHeight = void 0;\r\n var sliceBottomWidth = void 0;\r\n if (this.valueIs == \"area\") {\r\n var totalSquare = (topWidth + bottomWidth) / 2 * pyramidHeight;\r\n var square = totalSquare * workingValue / sum;\r\n var s = Math.abs(sliceTopWidth * sliceTopWidth - 2 * square * c);\r\n sliceHeight = (sliceTopWidth - Math.sqrt(s)) / c;\r\n if (sliceHeight > 0) {\r\n sliceBottomWidth = (2 * square - sliceHeight * sliceTopWidth) / sliceHeight;\r\n }\r\n else {\r\n sliceBottomWidth = sliceTopWidth;\r\n }\r\n }\r\n else {\r\n sliceHeight = pyramidHeight * workingValue / sum;\r\n sliceBottomWidth = sliceTopWidth - sliceHeight * c;\r\n }\r\n slice.height = sliceHeight;\r\n slice.width = maxWidth;\r\n slice.bottomWidth = sliceBottomWidth;\r\n slice.topWidth = sliceTopWidth;\r\n sliceLink.topWidth = slice.bottomWidth;\r\n sliceLink.bottomWidth = slice.bottomWidth;\r\n slice.y = this._nextY;\r\n //slice.x = maxWidth / 2;\r\n if (!this.alignLabels) {\r\n label.x = maxWidth / 2;\r\n }\r\n else {\r\n label.x = 0;\r\n }\r\n label.y = slice.pixelY + slice.pixelHeight * tick.locationY + slice.dy;\r\n this._nextY += slice.pixelHeight + linkHeight * workingValue / Math.max(Math.abs(dataItem.value), 0.00000001);\r\n sliceLink.y = this._nextY - linkHeight;\r\n sliceLink.x = maxWidth / 2;\r\n }\r\n else {\r\n var topWidth = $utils.relativeToValue(this.topWidth, maxHeight);\r\n if (!$type.isNumber(this._nextWidth)) {\r\n this._nextWidth = topWidth;\r\n }\r\n var bottomWidth = $utils.relativeToValue(this.bottomWidth, maxHeight);\r\n var sliceTopWidth = this._nextWidth;\r\n var angle = Math.atan2(pyramidWidth, topWidth - bottomWidth);\r\n var c = Math.tan(Math.PI / 2 - angle);\r\n if (c == 0) {\r\n c = 0.00000001;\r\n }\r\n var sliceWidth = void 0;\r\n var sliceBottomWidth = void 0;\r\n if (this.valueIs == \"area\") {\r\n var totalSquare = (topWidth + bottomWidth) / 2 * pyramidWidth;\r\n var square = totalSquare * workingValue / sum;\r\n sliceWidth = (sliceTopWidth - Math.sqrt(sliceTopWidth * sliceTopWidth - 2 * square * c)) / c;\r\n sliceBottomWidth = (2 * square - sliceWidth * sliceTopWidth) / sliceWidth;\r\n }\r\n else {\r\n sliceWidth = pyramidWidth * workingValue / sum;\r\n sliceBottomWidth = sliceTopWidth - sliceWidth * c;\r\n }\r\n slice.width = sliceWidth;\r\n slice.height = maxHeight;\r\n slice.bottomWidth = sliceBottomWidth;\r\n slice.topWidth = sliceTopWidth;\r\n sliceLink.topWidth = slice.bottomWidth;\r\n sliceLink.bottomWidth = slice.bottomWidth;\r\n slice.x = this._nextY;\r\n if (!this.alignLabels) {\r\n label.y = maxHeight / 2;\r\n }\r\n else {\r\n label.y = this.labelsContainer.measuredHeight;\r\n }\r\n label.x = slice.pixelX + slice.pixelWidth * tick.locationX + slice.dx;\r\n this._nextY += slice.pixelWidth + linkWidth * workingValue / Math.max(Math.abs(dataItem.value), 0.00000001);\r\n sliceLink.x = this._nextY - linkWidth;\r\n sliceLink.y = maxHeight / 2;\r\n }\r\n this._nextWidth = slice.bottomWidth;\r\n };\r\n Object.defineProperty(PyramidSeries.prototype, \"topWidth\", {\r\n /**\r\n * @return {number | Percent}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"topWidth\");\r\n },\r\n /**\r\n * Width of the pyramid's tip in pixels or relative (`Percent`).\r\n *\r\n * `0%` (default) means the pyramid will be perfectly pointy.\r\n * `50%` will have a cut off / blunt top that is half the width of the chart.\r\n * `100%` will take the whole width of the chart.\r\n *\r\n * If you need the downward-pointing pyramid, you might want to `topWidth` to\r\n * `100%` and `bottomWidth` to `0%`.\r\n *\r\n * @default 0%\r\n * @param {number | Percent}\r\n */\r\n set: function (value) {\r\n if (this.setPercentProperty(\"topWidth\", value, false, false, 10, false)) {\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PyramidSeries.prototype, \"pyramidHeight\", {\r\n /**\r\n * @return {number | Percent}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"pyramidHeight\");\r\n },\r\n /**\r\n * Height of pyramid\r\n *\r\n *\r\n * @default 100%\r\n * @param {number | Percent}\r\n */\r\n set: function (value) {\r\n if (this.setPercentProperty(\"pyramidHeight\", value, false, false, 10, false)) {\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PyramidSeries.prototype, \"bottomWidth\", {\r\n /**\r\n * @return {number | Percent}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"bottomWidth\");\r\n },\r\n /**\r\n * Width of the pyramid's bottom (bsae) in pixels or relative (`Percent`).\r\n *\r\n * `0%` means the pyramid's botto will be pointy.\r\n * `50%` will have a cut off / blunt bottom that is half the width of the chart.\r\n * `100%` (default) will take the whole width of the chart.\r\n *\r\n * If you need the downward-pointing pyramid, you might want to `topWidth` to\r\n * `100%` and `bottomWidth` to `0%`.\r\n *\r\n * @param {number | Percent}\r\n */\r\n set: function (value) {\r\n if (this.setPercentProperty(\"bottomWidth\", value, false, false, 10, false)) {\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PyramidSeries.prototype, \"valueIs\", {\r\n /**\r\n * @return {\"area\" | \"height\"}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"valueIs\");\r\n },\r\n /**\r\n * Indicates how slice's value will influence its size.\r\n *\r\n * `\"area\"` (default) means that the whole area of the pyramid (counting in\r\n * modifications by `topWidth` and `bottomWidth`) will be divvied up between\r\n * slices based on their value.\r\n *\r\n * With this setting at `\"area\"` the area of the trapezoids of each slice\r\n * will represent their value relatively to values of the other slices.\r\n *\r\n * This is a correct way to depict \"weight\" of each slice based on their\r\n * values.\r\n *\r\n * `\"height\"` means whole height (as opposed to area) of the pyramid will be\r\n * divvied up between slices. Actual slice width or area is not counted in.\r\n *\r\n * From the data-viz standpoint this does not make a lot of sense, since\r\n * slices with lesser values might appear more prominent if they are placed\r\n * towards thick end of the pyramid since their areas will be bigger.\r\n *\r\n * @default \"area\"\r\n * @param {\"area\" | \"height\"}\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"valueIs\", value)) {\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return PyramidSeries;\r\n}(FunnelSeries));\r\nexport { PyramidSeries };\r\n/**\r\n * bboxter class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"PyramidSeries\"] = PyramidSeries;\r\nregistry.registeredClasses[\"PyramidSeriesDataItem\"] = PyramidSeriesDataItem;\r\n//# sourceMappingURL=PyramidSeries.js.map","/**\r\n * Defines Pictorial Stacked Series.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { PyramidSeries, PyramidSeriesDataItem } from \"./PyramidSeries\";\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n//@todo: sequenced?\r\n/**\r\n * Defines a [[DataItem]] for [[PictorialStackedSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar PictorialStackedSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(PictorialStackedSeriesDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PictorialStackedSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PictorialStackedSeriesDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return PictorialStackedSeriesDataItem;\r\n}(PyramidSeriesDataItem));\r\nexport { PictorialStackedSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[Series]] for a PictorialStacked series on a [[SlicedChart]].\r\n *\r\n * @see {@link IPictorialStackedSeriesEvents} for a list of available Events\r\n * @see {@link IPictorialStackedSeriesAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/sliced-chart/} for documentation\r\n * @important\r\n */\r\nvar PictorialStackedSeries = /** @class */ (function (_super) {\r\n __extends(PictorialStackedSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PictorialStackedSeries() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PictorialStackedSeries\";\r\n _this.topWidth = percent(100);\r\n _this.bottomWidth = percent(100);\r\n _this.valueIs = \"height\";\r\n _this.applyTheme();\r\n _this.startLocation = 0;\r\n _this.endLocation = 1;\r\n _this.align = \"center\";\r\n _this.valign = \"middle\";\r\n _this._maskSprite = _this.slicesContainer.createChild(Sprite);\r\n _this._maskSprite.visible = false;\r\n _this._maskSprite.zIndex = 100;\r\n _this._maskSprite.shouldClone = false;\r\n return _this;\r\n }\r\n /**\r\n * Sizes the mask to fit the series.\r\n *\r\n * @ignore\r\n */\r\n PictorialStackedSeries.prototype.validateDataElements = function () {\r\n var maxWidth = this.slicesContainer.maxWidth;\r\n var maxHeight = this.slicesContainer.maxHeight;\r\n var maskSprite = this._maskSprite;\r\n //maskSprite.validatePosition(); // for some reason size of the maskSprite is 0x0 after we removed validatePosition in afterdraw\r\n var pictureWidth = maskSprite.measuredWidth / maskSprite.scale;\r\n var pictureHeight = maskSprite.measuredHeight / maskSprite.scale;\r\n var scale = $math.min(maxHeight / pictureHeight, maxWidth / pictureWidth);\r\n if (scale == Infinity) {\r\n scale = 1; // can't return here, won't draw legend properly\r\n }\r\n scale = $math.max(0.001, scale);\r\n var startLocation = this.startLocation;\r\n var endLocation = this.endLocation;\r\n var newWidth = $math.min(maxWidth, pictureWidth * scale);\r\n var newHeight = $math.min(maxHeight, pictureHeight * scale);\r\n maskSprite.scale = scale;\r\n if (this.orientation == \"vertical\") {\r\n this.topWidth = newWidth + 4;\r\n this.bottomWidth = newWidth + 4;\r\n this.pyramidHeight = newHeight * (endLocation - startLocation);\r\n maskSprite.x = maxWidth / 2;\r\n maskSprite.y = newHeight / 2;\r\n }\r\n else {\r\n this.topWidth = newHeight + 4;\r\n this.bottomWidth = newHeight + 4;\r\n this.pyramidHeight = newWidth * (endLocation - startLocation);\r\n maskSprite.valign = \"middle\";\r\n maskSprite.x = newWidth / 2;\r\n maskSprite.y = maxHeight / 2;\r\n }\r\n maskSprite.verticalCenter = \"middle\";\r\n maskSprite.horizontalCenter = \"middle\";\r\n _super.prototype.validateDataElements.call(this);\r\n var y;\r\n var x;\r\n if (this.orientation == \"vertical\") {\r\n if (this.valign == \"bottom\") {\r\n y = (maxHeight - newHeight);\r\n }\r\n if (this.valign == \"middle\") {\r\n y = (maxHeight - newHeight) / 2;\r\n }\r\n if (this.valign == \"top\") {\r\n y = 0;\r\n }\r\n if (this.align == \"left\") {\r\n x = -(maxWidth - newWidth) / 2;\r\n }\r\n if (this.align == \"center\") {\r\n x = 0;\r\n }\r\n if (this.align == \"right\") {\r\n x = (maxWidth - newWidth) / 2;\r\n }\r\n this.slices.template.dy = startLocation * newHeight;\r\n if (this.alignLabels) {\r\n this.slicesContainer.dx = x;\r\n }\r\n }\r\n else {\r\n if (this.valign == \"bottom\") {\r\n y = (maxHeight - newHeight) / 2;\r\n }\r\n if (this.valign == \"middle\") {\r\n y = 0;\r\n }\r\n if (this.valign == \"top\") {\r\n y = -(maxHeight - newHeight) / 2;\r\n }\r\n if (this.align == \"left\") {\r\n x = 0;\r\n }\r\n if (this.align == \"center\") {\r\n x = (maxWidth - newWidth) / 2;\r\n }\r\n if (this.align == \"right\") {\r\n x = (maxWidth - newWidth);\r\n }\r\n this.slices.template.dx = startLocation * newWidth;\r\n if (this.alignLabels) {\r\n this.slicesContainer.dy = y;\r\n }\r\n }\r\n this.slicesContainer.x = x;\r\n this.labelsContainer.x = x;\r\n this.ticksContainer.x = x;\r\n this.slicesContainer.y = y;\r\n this.labelsContainer.y = y;\r\n this.ticksContainer.y = y;\r\n if (newWidth > 0 && newHeight > 0) {\r\n this.slicesContainer.mask = maskSprite;\r\n }\r\n };\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n PictorialStackedSeries.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Pyramid Series\");\r\n }\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n PictorialStackedSeries.prototype.createDataItem = function () {\r\n return new PictorialStackedSeriesDataItem();\r\n };\r\n Object.defineProperty(PictorialStackedSeries.prototype, \"maskSprite\", {\r\n /**\r\n * A [[Sprite]] element that is used as a series mask.\r\n *\r\n * If set, this element's shape will be used to apply shape to the whole\r\n * stacked pictorial series.\r\n *\r\n * You can use this element's `path` property to set an SVG path for the\r\n * shape:\r\n *\r\n * ```TypeScript\r\n * let iconPath = \"M511.82,329.991c-0.256-1.212-1.064-2.244-2.192-2.784l-24.396-11.684c17.688-29.776,11.804-68.912-15.58-91.88 c-53.756-45.084-131.696-70.936-213.828-70.936c-82.128,0-160.068,25.856-213.82,70.936c-27.416,22.992-33.28,62.18-15.524,91.972 L2.276,327.203c-1.128,0.54-1.936,1.572-2.192,2.792c-0.256,1.22,0.08,2.496,0.896,3.436l21.204,24.388 c0.764,0.88,1.868,1.376,3.02,1.376c0.084,0,0.172,0,0.26-0.008c1.244-0.084,2.384-0.74,3.072-1.776l14.852-22.376 c12.648,10.112,28.392,15.776,44.916,15.776c16.872,0,33.284-5.98,46.232-16.836c27.828-23.34,73.172-37.272,121.288-37.272 c48.12,0,93.464,13.932,121.296,37.272c12.944,10.856,29.36,16.836,46.228,16.836c16.596,0,32.4-5.724,45.08-15.916l14.94,22.512 c0.692,1.04,1.824,1.696,3.076,1.776c0.084,0.008,0.172,0.008,0.256,0.008c1.156,0,2.256-0.496,3.02-1.376l21.2-24.388C511.74,332.487,512.068,331.211,511.82,329.991z\";\r\n * // ...\r\n * series.maskSprite.path = iconPath;\r\n * ```\r\n * ```JavaScript\r\n * let iconPath = \"M511.82,329.991c-0.256-1.212-1.064-2.244-2.192-2.784l-24.396-11.684c17.688-29.776,11.804-68.912-15.58-91.88 c-53.756-45.084-131.696-70.936-213.828-70.936c-82.128,0-160.068,25.856-213.82,70.936c-27.416,22.992-33.28,62.18-15.524,91.972 L2.276,327.203c-1.128,0.54-1.936,1.572-2.192,2.792c-0.256,1.22,0.08,2.496,0.896,3.436l21.204,24.388 c0.764,0.88,1.868,1.376,3.02,1.376c0.084,0,0.172,0,0.26-0.008c1.244-0.084,2.384-0.74,3.072-1.776l14.852-22.376 c12.648,10.112,28.392,15.776,44.916,15.776c16.872,0,33.284-5.98,46.232-16.836c27.828-23.34,73.172-37.272,121.288-37.272 c48.12,0,93.464,13.932,121.296,37.272c12.944,10.856,29.36,16.836,46.228,16.836c16.596,0,32.4-5.724,45.08-15.916l14.94,22.512 c0.692,1.04,1.824,1.696,3.076,1.776c0.084,0.008,0.172,0.008,0.256,0.008c1.156,0,2.256-0.496,3.02-1.376l21.2-24.388C511.74,332.487,512.068,331.211,511.82,329.991z\";\r\n * // ...\r\n * series.maskSprite.path = iconPath;\r\n * ```\r\n * ```JSON\r\n * let iconPath = \"M511.82,329.991c-0.256-1.212-1.064-2.244-2.192-2.784l-24.396-11.684c17.688-29.776,11.804-68.912-15.58-91.88 c-53.756-45.084-131.696-70.936-213.828-70.936c-82.128,0-160.068,25.856-213.82,70.936c-27.416,22.992-33.28,62.18-15.524,91.972 L2.276,327.203c-1.128,0.54-1.936,1.572-2.192,2.792c-0.256,1.22,0.08,2.496,0.896,3.436l21.204,24.388 c0.764,0.88,1.868,1.376,3.02,1.376c0.084,0,0.172,0,0.26-0.008c1.244-0.084,2.384-0.74,3.072-1.776l14.852-22.376 c12.648,10.112,28.392,15.776,44.916,15.776c16.872,0,33.284-5.98,46.232-16.836c27.828-23.34,73.172-37.272,121.288-37.272 c48.12,0,93.464,13.932,121.296,37.272c12.944,10.856,29.36,16.836,46.228,16.836c16.596,0,32.4-5.724,45.08-15.916l14.94,22.512 c0.692,1.04,1.824,1.696,3.076,1.776c0.084,0.008,0.172,0.008,0.256,0.008c1.156,0,2.256-0.496,3.02-1.376l21.2-24.388C511.74,332.487,512.068,331.211,511.82,329.991z\";\r\n * // ...\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * \"type\": \"PictorialStackedSeries\",\r\n * // ...\r\n * \"maskSprite\": {\r\n * \"path\": iconPath\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @return Mask sprite\r\n */\r\n get: function () {\r\n return this._maskSprite;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Inits FunnelSlice.\r\n *\r\n * @param slice to init\r\n */\r\n PictorialStackedSeries.prototype.initSlice = function (slice) {\r\n _super.prototype.initSlice.call(this, slice);\r\n var hs = slice.states.getKey(\"hover\");\r\n if (hs) {\r\n hs.properties.expandDistance = 0;\r\n }\r\n };\r\n Object.defineProperty(PictorialStackedSeries.prototype, \"startLocation\", {\r\n /**\r\n * @return Start location\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startLocation\");\r\n },\r\n /**\r\n * Relative location to start series from.\r\n *\r\n * Range of values: 0 to 1.\r\n *\r\n * This setting indicates where actual slices will start relatively to the\r\n * whole height/width of the series.\r\n *\r\n * For example, if we want slices to start at 30% from the top/left of the\r\n * series, we can set `startLocation = 0.3`.\r\n *\r\n * To fill shape outside of the location range, use background of the\r\n * property `slicesContainer`.\r\n *\r\n * ```TypeScript\r\n * series.startLocation = 0.2;\r\n * series.endLocation = 0.8;\r\n * series.slicesContainer.background.fill = am4core.color(\"#eee\");\r\n * ```\r\n * ```JavaScript\r\n * series.startLocation = 0.2;\r\n * series.endLocation = 0.8;\r\n * series.slicesContainer.background.fill = am4core.color(\"#eee\");\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"startLocation\": 0.2,\r\n * \"endLocation\": 0.8,\r\n * \"slicesContainer\": {\r\n * \"background\": {\r\n * \"fill\": \"#eee\"\r\n * }\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @default 0\r\n * @since 4.1.13\r\n * @param value Start location\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"startLocation\", value)) {\r\n this.invalidateDataItems();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PictorialStackedSeries.prototype, \"endLocation\", {\r\n /**\r\n * @return End location\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endLocation\");\r\n },\r\n /**\r\n * Relative location to end series at.\r\n *\r\n * Range of values: 0 to 1.\r\n *\r\n * This setting indicates where actual slices will end relatively to the\r\n * whole height/width of the series.\r\n *\r\n * For example, if we want slices to end at 70% from the top/left of the\r\n * series, we can set `endLocation = 0.7`.\r\n *\r\n * To fill shape outside of the location range, use background of the\r\n * property `slicesContainer`.\r\n *\r\n * ```TypeScript\r\n * series.startLocation = 0.2;\r\n * series.endLocation = 0.8;\r\n * series.slicesContainer.background.fill = am4core.color(\"#eee\");\r\n * ```\r\n * ```JavaScript\r\n * series.startLocation = 0.2;\r\n * series.endLocation = 0.8;\r\n * series.slicesContainer.background.fill = am4core.color(\"#eee\");\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"startLocation\": 0.2,\r\n * \"endLocation\": 0.8,\r\n * \"slicesContainer\": {\r\n * \"background\": {\r\n * \"fill\": \"#eee\"\r\n * }\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @default 1\r\n * @since 4.1.13\r\n * @param value End location\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"endLocation\", value)) {\r\n this.invalidateDataItems();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return PictorialStackedSeries;\r\n}(PyramidSeries));\r\nexport { PictorialStackedSeries };\r\n/**\r\n * bboxter class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"PictorialStackedSeries\"] = PictorialStackedSeries;\r\nregistry.registeredClasses[\"PictorialStackedSeriesDataItem\"] = PictorialStackedSeriesDataItem;\r\n//# sourceMappingURL=PictorialStackedSeries.js.map","/**\r\n * Module that defines everything related to building Cone Columns.\r\n * It is a container which has coneColumn element which is a Cone.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Column } from \"./Column\";\r\nimport { Cone } from \"../../core/elements/3d/Cone\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Class used to creates ConeColumns.\r\n *\r\n * @see {@link IConeColumnEvents} for a list of available events\r\n * @see {@link IConeColumnAdapters} for a list of available Adapters\r\n * @todo Usage example\r\n * @important\r\n */\r\nvar ConeColumn = /** @class */ (function (_super) {\r\n __extends(ConeColumn, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ConeColumn() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ConeColumn\";\r\n return _this;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n ConeColumn.prototype.createAssets = function () {\r\n this.coneColumn = this.createChild(Cone);\r\n this.coneColumn.shouldClone = false;\r\n // some dirty hack so that if user access column, it won't get error\r\n this.column = this.coneColumn;\r\n };\r\n /**\r\n * Copies all parameters from another [[ConeColumn]].\r\n *\r\n * @param source Source ConeColumn\r\n */\r\n ConeColumn.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n if (this.coneColumn) {\r\n this.coneColumn.copyFrom(source.coneColumn);\r\n }\r\n };\r\n return ConeColumn;\r\n}(Column));\r\nexport { ConeColumn };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ConeColumn\"] = ConeColumn;\r\n//# sourceMappingURL=ConeColumn.js.map","/**\r\n * ConeSeries module\r\n * Not recommended using if you use scrollbars or your chart is zoomable in some other way.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { ColumnSeries, ColumnSeriesDataItem } from \"./ColumnSeries\";\r\nimport { ConeColumn } from \"../elements/ConeColumn\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[ConeSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar ConeSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(ConeSeriesDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ConeSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ConeSeriesDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return ConeSeriesDataItem;\r\n}(ColumnSeriesDataItem));\r\nexport { ConeSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[Series]] for a cone graph.\r\n *\r\n * @see {@link IConeSeriesEvents} for a list of available Events\r\n * @see {@link IConeSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\r\nvar ConeSeries = /** @class */ (function (_super) {\r\n __extends(ConeSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ConeSeries() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ConeSeries\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Returns an element to use for Candlestick\r\n * @ignore\r\n * @return Element.\r\n */\r\n ConeSeries.prototype.createColumnTemplate = function () {\r\n return new ConeColumn();\r\n };\r\n /**\r\n * Returns an SVG path to use as series mask.\r\n *\r\n * @return SVG path\r\n */\r\n ConeSeries.prototype.getMaskPath = function () {\r\n var dx = 0;\r\n var dy = 0;\r\n var column = this.columns.getIndex(0);\r\n if (column) {\r\n if (this.baseAxis == this.xAxis) {\r\n dy = column.coneColumn.innerWidth / 2 + 1;\r\n }\r\n else {\r\n dx = column.coneColumn.innerHeight / 2 + 1;\r\n }\r\n return $path.rectToPath({\r\n x: -dx,\r\n y: 0,\r\n width: this.xAxis.axisLength + dx,\r\n height: this.yAxis.axisLength + dy\r\n });\r\n }\r\n };\r\n /**\r\n * Validates data item's elements.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n ConeSeries.prototype.validateDataElementReal = function (dataItem) {\r\n _super.prototype.validateDataElementReal.call(this, dataItem);\r\n var column = dataItem.column;\r\n if (column) {\r\n var coneColumn = dataItem.column.coneColumn;\r\n coneColumn.fill = dataItem.column.fill;\r\n if (this.baseAxis == this.yAxis) {\r\n coneColumn.orientation = \"horizontal\";\r\n }\r\n else {\r\n coneColumn.orientation = \"vertical\";\r\n }\r\n }\r\n };\r\n return ConeSeries;\r\n}(ColumnSeries));\r\nexport { ConeSeries };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ConeSeries\"] = ConeSeries;\r\nregistry.registeredClasses[\"ConeSeriesDataItem\"] = ConeSeriesDataItem;\r\n//# sourceMappingURL=ConeSeries.js.map","/**\r\n * Module that defines everything related to building Curved Columns.\r\n * It is a container which has CurvedColumn element which is a Sprite.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Column } from \"./Column\";\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $smoothing from \"../../core/rendering/Smoothing\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Class used to creates CurvedColumns.\r\n *\r\n * @see {@link ICurvedColumnEvents} for a list of available events\r\n * @see {@link ICurvedColumnAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar CurvedColumn = /** @class */ (function (_super) {\r\n __extends(CurvedColumn, _super);\r\n /**\r\n * Constructor\r\n */\r\n function CurvedColumn() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"CurvedColumn\";\r\n return _this;\r\n }\r\n /**\r\n * [createAssets description]\r\n *\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n */\r\n CurvedColumn.prototype.createAssets = function () {\r\n this.curvedColumn = this.createChild(Sprite);\r\n this.curvedColumn.shouldClone = false;\r\n this.setPropertyValue(\"tension\", 0.7);\r\n this.width = percent(120);\r\n this.height = percent(120);\r\n // some dirty hack so that if user access column, it won't get error\r\n this.column = this.curvedColumn;\r\n };\r\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n CurvedColumn.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n var w = this.realWidth;\r\n var h = this.realHeight;\r\n var x = this.realX - this.pixelX;\r\n var y = this.realY - this.pixelY;\r\n var points;\r\n // TODO can this be removed ?\r\n $utils.used(this.width);\r\n var tensionX = 1;\r\n var tensionY = 1;\r\n if (this.orientation == \"vertical\") {\r\n tensionX = this.tension;\r\n points = [{ x: 0, y: h + y }, { x: w / 2, y: y }, { x: w, y: h + y }];\r\n }\r\n else {\r\n tensionY = this.tension;\r\n h = Math.abs(h);\r\n points = [{ x: x, y: h }, { x: x + w, y: h / 2 }, { x: x, y: 0 }];\r\n }\r\n var path = $path.moveTo(points[0]) + new $smoothing.Tension(tensionX, tensionY).smooth(points);\r\n this.column.path = path;\r\n };\r\n /**\r\n * Copies all parameters from another [[CurvedColumn]].\r\n *\r\n * @param source Source CurvedColumn\r\n */\r\n CurvedColumn.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n if (this.curvedColumn) {\r\n this.curvedColumn.copyFrom(source.curvedColumn);\r\n }\r\n };\r\n Object.defineProperty(CurvedColumn.prototype, \"tension\", {\r\n /**\r\n * @return Tension (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tension\");\r\n },\r\n /**\r\n * Horizontal tension of the curve.\r\n *\r\n * Tension defines how \"lose\" the line will be.\r\n *\r\n * 1 is the maximum tension which would result in pointy columns with\r\n * straight edges.\r\n *\r\n * The smaller the tension th wider the column will be.\r\n *\r\n * @default 0.7\r\n * @param value tension (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"tension\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CurvedColumn.prototype, \"orientation\", {\r\n /**\r\n * Orientation\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"orientation\");\r\n },\r\n /**\r\n * Orientation of the column.\r\n *\r\n * Available options: \"vertical\" (default) and \"horizontal\".\r\n *\r\n * @default \"vertical\"\r\n * @param value Orientation\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"orientation\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return CurvedColumn;\r\n}(Column));\r\nexport { CurvedColumn };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"CurvedColumn\"] = CurvedColumn;\r\n//# sourceMappingURL=CurvedColumn.js.map","/**\r\n * CurvedColumnSeries module.\r\n *\r\n * Not recommended using if you use scrollbars or your chart is zoomable in some other way.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { ColumnSeries, ColumnSeriesDataItem } from \"./ColumnSeries\";\r\nimport { CurvedColumn } from \"../elements/CurvedColumn\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[CurvedColumnSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar CurvedColumnSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(CurvedColumnSeriesDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function CurvedColumnSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"CurvedColumnSeriesDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return CurvedColumnSeriesDataItem;\r\n}(ColumnSeriesDataItem));\r\nexport { CurvedColumnSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[Series]] for a curved columns graph.\r\n *\r\n * @see {@link ICurvedColumnSeriesEvents} for a list of available Events\r\n * @see {@link ICurvedColumnSeriesAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar CurvedColumnSeries = /** @class */ (function (_super) {\r\n __extends(CurvedColumnSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function CurvedColumnSeries() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"CurvedColumnSeries\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Returns an element to use for the curved column.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Element.\r\n */\r\n CurvedColumnSeries.prototype.createColumnTemplate = function () {\r\n return new CurvedColumn();\r\n };\r\n /**\r\n * Validates data item's elements.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n CurvedColumnSeries.prototype.validateDataElementReal = function (dataItem) {\r\n _super.prototype.validateDataElementReal.call(this, dataItem);\r\n var column = dataItem.column;\r\n column = dataItem.column;\r\n if (column) {\r\n var curvedColumn = dataItem.column.curvedColumn;\r\n curvedColumn.fill = dataItem.column.fill;\r\n if (this.baseAxis == this.yAxis) {\r\n column.orientation = \"horizontal\";\r\n }\r\n else {\r\n column.orientation = \"vertical\";\r\n }\r\n }\r\n };\r\n return CurvedColumnSeries;\r\n}(ColumnSeries));\r\nexport { CurvedColumnSeries };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"CurvedColumnSeries\"] = CurvedColumnSeries;\r\nregistry.registeredClasses[\"CurvedColumnSeriesDataItem\"] = CurvedColumnSeriesDataItem;\r\n//# sourceMappingURL=CurvedColumnSeries.js.map","/**\r\n * Bullet module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Bullet } from \"./Bullet\";\r\nimport { Circle } from \"../../core/elements/Circle\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a bullet with a textual label.\r\n *\r\n * Uses [[Label]] instance to draw the label, so the label itself is\r\n * configurable.\r\n *\r\n * @see {@link IBulletEvents} for a list of available events\r\n * @see {@link IBulletAdapters} for a list of available Adapters\r\n * @todo Usage example\r\n * @important\r\n */\r\nvar CircleBullet = /** @class */ (function (_super) {\r\n __extends(CircleBullet, _super);\r\n /**\r\n * Constructor\r\n */\r\n function CircleBullet() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"CircleBullet\";\r\n var circle = _this.createChild(Circle);\r\n circle.shouldClone = false;\r\n circle.radius = 5;\r\n circle.isMeasured = false;\r\n _this.circle = circle;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Copies all proprities and related stuff from another instance of\r\n * [[CircleBullet]].\r\n *\r\n * @param source Source element\r\n */\r\n CircleBullet.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.circle.copyFrom(source.circle);\r\n };\r\n return CircleBullet;\r\n}(Bullet));\r\nexport { CircleBullet };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"CircleBullet\"] = CircleBullet;\r\n//# sourceMappingURL=CircleBullet.js.map","/**\r\n * Bullet module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Bullet } from \"./Bullet\";\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a bullet with a textual label.\r\n *\r\n * Uses [[Label]] instance to draw the label, so the label itself is\r\n * configurable.\r\n *\r\n * @see {@link IBulletEvents} for a list of available events\r\n * @see {@link IBulletAdapters} for a list of available Adapters\r\n * @todo Usage example\r\n * @important\r\n */\r\nvar ErrorBullet = /** @class */ (function (_super) {\r\n __extends(ErrorBullet, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ErrorBullet() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ErrorBullet\";\r\n _this.errorLine = _this.createChild(Sprite);\r\n _this.errorLine.shouldClone = false;\r\n _this.width = 20;\r\n _this.height = 20;\r\n _this.strokeOpacity = 1;\r\n _this.isDynamic = true;\r\n return _this;\r\n }\r\n ErrorBullet.prototype.validatePosition = function () {\r\n _super.prototype.validatePosition.call(this);\r\n var w = this.pixelWidth / 2;\r\n var h = this.pixelHeight / 2;\r\n this.errorLine.path = $path.moveTo({ x: -w, y: -h }) + $path.lineTo({ x: w, y: -h }) + $path.moveTo({ x: 0, y: -h }) + $path.lineTo({ x: 0, y: h }) + $path.moveTo({ x: -w, y: h }) + $path.lineTo({ x: w, y: h });\r\n };\r\n /**\r\n * Copies all proprities and related stuff from another instance of\r\n * [[ErrorBullet]].\r\n *\r\n * @param source Source element\r\n */\r\n ErrorBullet.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.errorLine.copyFrom(source.errorLine);\r\n };\r\n return ErrorBullet;\r\n}(Bullet));\r\nexport { ErrorBullet };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ErrorBullet\"] = ErrorBullet;\r\n//# sourceMappingURL=ErrorBullet.js.map","/**\r\n * Functionality for drawing simple NavigationBar.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Component } from \"../../core/Component\";\r\nimport { DataItem } from \"../../core/DataItem\";\r\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { TextLink } from \"../../core/elements/TextLink\";\r\nimport { Triangle } from \"../../core/elements/Triangle\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[NavigationBar]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar NavigationBarDataItem = /** @class */ (function (_super) {\r\n __extends(NavigationBarDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function NavigationBarDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"NavigationBarDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(NavigationBarDataItem.prototype, \"name\", {\r\n /**\r\n * @return Name\r\n */\r\n get: function () {\r\n return this.properties[\"name\"];\r\n },\r\n /**\r\n * Name of the navigation bar item.\r\n *\r\n * @param value Name\r\n */\r\n set: function (value) {\r\n this.setProperty(\"name\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return NavigationBarDataItem;\r\n}(DataItem));\r\nexport { NavigationBarDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * NavigationBar class can be used to create a multi-level breadcrumb-style\r\n * navigation control.\r\n *\r\n * @see {@link INavigationBarEvents} for a list of available events\r\n * @see {@link INavigationBarAdapters} for a list of available Adapters\r\n * @todo Implement better\r\n * @important\r\n */\r\nvar NavigationBar = /** @class */ (function (_super) {\r\n __extends(NavigationBar, _super);\r\n /**\r\n * Constructor\r\n */\r\n function NavigationBar() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"NavigationBar\";\r\n var interfaceColors = new InterfaceColorSet();\r\n var textLink = new TextLink();\r\n textLink.valign = \"middle\";\r\n textLink.paddingTop = 8;\r\n textLink.paddingBottom = 8;\r\n _this.paddingBottom = 2;\r\n _this.links = new ListTemplate(textLink);\r\n _this._disposers.push(new ListDisposer(_this.links));\r\n _this._disposers.push(textLink);\r\n _this._linksIterator = new $iter.ListIterator(_this.links, function () { return _this.links.create(); });\r\n _this._linksIterator.createNewItems = true;\r\n var triangle = new Triangle();\r\n triangle.direction = \"right\";\r\n triangle.width = 8;\r\n triangle.height = 12;\r\n triangle.fill = interfaceColors.getFor(\"alternativeBackground\");\r\n triangle.fillOpacity = 0.5;\r\n triangle.valign = \"middle\";\r\n triangle.marginLeft = 10;\r\n triangle.marginRight = 10;\r\n _this.separators = new ListTemplate(triangle);\r\n _this._disposers.push(new ListDisposer(_this.separators));\r\n _this._disposers.push(triangle);\r\n var activeLink = new TextLink();\r\n _this.activeLink = activeLink;\r\n activeLink.copyFrom(textLink);\r\n activeLink.valign = \"middle\";\r\n activeLink.fontWeight = \"bold\";\r\n _this.width = percent(100);\r\n _this.layout = \"grid\";\r\n _this.dataFields.name = \"name\";\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Completely redraws the navigation bar.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n NavigationBar.prototype.validateDataElements = function () {\r\n this.removeChildren();\r\n this._linksIterator.reset();\r\n _super.prototype.validateDataElements.call(this);\r\n //@todo: dispose\r\n };\r\n /**\r\n * Creates a visual element for a data item (nav item).\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n NavigationBar.prototype.validateDataElement = function (dataItem) {\r\n _super.prototype.validateDataElement.call(this, dataItem);\r\n var textLink;\r\n if (dataItem.index < this.dataItems.length - 1) {\r\n textLink = this._linksIterator.getLast();\r\n textLink.parent = this;\r\n var separator = this.separators.create();\r\n separator.parent = this;\r\n separator.valign = \"middle\";\r\n }\r\n else {\r\n textLink = this.activeLink;\r\n textLink.events.copyFrom(this.links.template.events);\r\n textLink.hide(0);\r\n textLink.show();\r\n textLink.parent = this;\r\n }\r\n textLink.dataItem = dataItem;\r\n textLink.text = dataItem.name;\r\n textLink.validate();\r\n };\r\n return NavigationBar;\r\n}(Component));\r\nexport { NavigationBar };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"NavigationBar\"] = NavigationBar;\r\nregistry.registeredClasses[\"NavigationBarDataItem\"] = NavigationBarDataItem;\r\n//# sourceMappingURL=NavigationBar.js.map","/**\r\n * Cursor module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../../core/Container\";\r\nimport { getInteraction } from \"../../core/interaction/Interaction\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { MouseCursorStyle } from \"../../core/interaction/Mouse\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $dom from \"../../core/utils/DOM\";\r\nimport { system } from \"../../core/System\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Main Cursor class with common cursor functionality.\r\n *\r\n * Chart-specific cursors must extend this class.\r\n *\r\n * @see {@link ICursorEvents} for a list of available events\r\n * @see {@link ICursorAdapters} for a list of available Adapters\r\n * @todo Add description, examples\r\n * @todo Should we allow changing `_generalBehavior`?\r\n */\r\nvar Cursor = /** @class */ (function (_super) {\r\n __extends(Cursor, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Cursor() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Current cursor position during selection.\r\n *\r\n * @todo Better description\r\n */\r\n _this.point = { x: 0, y: 0 };\r\n /**\r\n * Specifies the rules when cursor needs to be moved or hidden.\r\n */\r\n _this._stick = \"none\";\r\n _this.className = \"Cursor\";\r\n // Set defaults\r\n _this.width = percent(100);\r\n _this.height = percent(100);\r\n _this.shouldClone = false;\r\n _this.hide(0);\r\n _this.trackable = true;\r\n _this.clickable = true;\r\n _this.isMeasured = false;\r\n // Add events on body to trigger down and up events (to start zooming or\r\n // selection)\r\n var interaction = getInteraction();\r\n _this._disposers.push(interaction.body.events.on(\"down\", _this.handleCursorDown, _this));\r\n _this._disposers.push(interaction.body.events.on(\"up\", _this.handleCursorUp, _this));\r\n _this._disposers.push(interaction.body.events.on(\"track\", _this.handleCursorMove, _this));\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Handle pointer movement in document and update cursor position as needed.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\r\n Cursor.prototype.handleCursorMove = function (event) {\r\n if (!this.interactionsEnabled || (this.interactions.isTouchProtected && event.touch)) {\r\n return;\r\n }\r\n if (((this._generalBehavior != \"zoom\" && this._generalBehavior != \"pan\") || !this.downPoint) && !getInteraction().isLocalElement(event.pointer, this.paper.svg, this.uid)) {\r\n // We want to let zoom/pan continue even if cursor is outside chart area\r\n if (!this.isHidden || !this.isHiding) {\r\n this.hide();\r\n }\r\n return;\r\n }\r\n var local = $utils.documentPointToSprite(event.pointer.point, this);\r\n if (this._stick == \"hard\" && this._stickPoint) {\r\n local = this._stickPoint;\r\n }\r\n if (this._stick == \"soft\" && this._stickPoint) {\r\n if (!this.fitsToBounds(local)) {\r\n local = this._stickPoint;\r\n }\r\n }\r\n if (this._adapterO) {\r\n this._adapterO.apply(\"cursorPoint\", local);\r\n }\r\n this.triggerMove(local);\r\n return local;\r\n };\r\n /**\r\n * Hides actual SVG elements and handles hiding animations.\r\n *\r\n * @param duration Fade out duration (ms)\r\n * @return Fade out duration (ms)\r\n * @ignore\r\n */\r\n Cursor.prototype.hideReal = function (duration) {\r\n if ((this._stick == \"hard\" || this._stick == \"soft\") && this._stickPoint) {\r\n return;\r\n }\r\n return _super.prototype.hideReal.call(this, duration);\r\n };\r\n /**\r\n * Places the cursor at specific point.\r\n *\r\n * The second parameter has following options:\r\n *\r\n * `\"none\"` - placed cursor will only be there until mouse/touch moves, then\r\n * it either moves to a new place (if pointer over plot area) or is hidden.\r\n *\r\n * `\"soft\"` - cursor will stay in the place if mouse/touch is happening\r\n * outside chart, but will move to a new place whe plot area is hovered or\r\n * touched.\r\n *\r\n * `\"hard\"` - cursor will stay in place no matter what, until it is moved by\r\n * another `triggerMove()` call.\r\n *\r\n * The third parameter - `force` (since `4.9.5`) - if set to `true` will\r\n * make cursor execute all of the actions associated with cursor move,\r\n * including line redraws, tooltip updates, etc. Useful when underlying\r\n * chart data is dynamically being updated.\r\n *\r\n * @param point Point to place cursor at\r\n * @param stick Level of cursor stickiness to the place\r\n * @param force Force cursor move\r\n */\r\n Cursor.prototype.triggerMove = function (point, stick, force) {\r\n point.x = $math.round(point.x, 1);\r\n point.y = $math.round(point.y, 1);\r\n if (stick) {\r\n this._stick = stick;\r\n }\r\n if (stick == \"hard\" || stick == \"soft\") {\r\n this._stickPoint = point;\r\n }\r\n this.triggerMoveReal(point, force);\r\n };\r\n /**\r\n * Places the cursor at specific point.\r\n *\r\n * @param point Point to place cursor at\r\n */\r\n Cursor.prototype.triggerMoveReal = function (point, force) {\r\n if (this.point.x != point.x || this.point.y != point.y || force) {\r\n this.point = point;\r\n this.invalidatePosition();\r\n // hide cursor if it's out of bounds\r\n if (this.fitsToBounds(point)) {\r\n this.show(0);\r\n }\r\n else {\r\n // unless we are selecting (mouse is down)\r\n if (!this.downPoint) {\r\n this.hide(0);\r\n }\r\n }\r\n if (this.visible) {\r\n this.getPositions();\r\n this.dispatch(\"cursorpositionchanged\"); // not good to dispatch later (check step count example)\r\n }\r\n }\r\n };\r\n /**\r\n * Simulates pressing down (click/touch) action by a cursor.\r\n *\r\n * @param point Point of action\r\n */\r\n Cursor.prototype.triggerDown = function (point) {\r\n this.triggerDownReal(point);\r\n };\r\n /**\r\n * Simulates pressing down (click/touch) action by a cursor.\r\n *\r\n * @param point Point of action\r\n */\r\n Cursor.prototype.triggerDownReal = function (point) {\r\n switch (this._generalBehavior) {\r\n case \"zoom\":\r\n this.dispatchImmediately(\"zoomstarted\");\r\n break;\r\n case \"select\":\r\n this.dispatchImmediately(\"selectstarted\");\r\n break;\r\n case \"pan\":\r\n this.dispatchImmediately(\"panstarted\");\r\n getInteraction().setGlobalStyle(MouseCursorStyle.grabbing);\r\n break;\r\n }\r\n };\r\n /**\r\n * Simulates the action of release of the mouse down / touch.\r\n *\r\n * @param point Point of action\r\n */\r\n Cursor.prototype.triggerUp = function (point) {\r\n this.triggerUpReal(point);\r\n };\r\n /**\r\n * Simulates the action of release of the mouse down / touch.\r\n *\r\n * @param point Point of action\r\n */\r\n Cursor.prototype.triggerUpReal = function (point) {\r\n system.requestFrame();\r\n this.updatePoint(this.upPoint);\r\n var interaction = getInteraction();\r\n if ($math.getDistance(this._upPointOrig, this._downPointOrig) > interaction.getHitOption(this.interactions, \"hitTolerance\")) {\r\n switch (this._generalBehavior) {\r\n case \"zoom\":\r\n this.dispatch(\"zoomended\");\r\n break;\r\n case \"select\":\r\n this.dispatch(\"selectended\");\r\n break;\r\n case \"pan\":\r\n this.dispatch(\"panended\");\r\n interaction.setGlobalStyle(MouseCursorStyle.default);\r\n break;\r\n }\r\n this.downPoint = undefined;\r\n this.updateSelection();\r\n }\r\n /*\r\n else {\r\n \r\n if(this._generalBehavior == \"select\"){\r\n this.dispatchImmediately(\"selectended\");\r\n }\r\n this.dispatchImmediately(\"behaviorcanceled\");\r\n interaction.setGlobalStyle(MouseCursorStyle.default);\r\n this.downPoint = undefined;\r\n }*/\r\n };\r\n /**\r\n * Updates selection dimensions on size change.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Cursor.prototype.updateSelection = function () {\r\n };\r\n /**\r\n * Updates cursors current positions.\r\n */\r\n Cursor.prototype.getPositions = function () {\r\n // positions are used by axes or series\r\n this.xPosition = this.point.x / this.innerWidth;\r\n this.yPosition = 1 - this.point.y / this.innerHeight;\r\n };\r\n /**\r\n * Handles pointer down event so we can start zoom or selection.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Original event\r\n */\r\n Cursor.prototype.handleCursorDown = function (event) {\r\n if (!this.interactionsEnabled || (this.interactions.isTouchProtected && event.touch) || !getInteraction().isLocalElement(event.pointer, this.paper.svg, this.uid)) {\r\n return;\r\n }\r\n // Initiate blur so that whatever focused element on the page is unselected\r\n $dom.blur();\r\n // Get local point\r\n var local = $utils.documentPointToSprite(event.pointer.point, this);\r\n if (this._stick == \"hard\" && this._stickPoint) {\r\n local = this._stickPoint;\r\n }\r\n if (this._adapterO) {\r\n this._adapterO.apply(\"cursorPoint\", local);\r\n }\r\n if (!this.fitsToBounds(local)) {\r\n return;\r\n }\r\n this._downPointOrig = { x: local.x, y: local.y };\r\n // We need to cancel the event to prevent gestures on touch devices\r\n if (event.event.cancelable && this.shouldPreventGestures(event.touch) && this.fitsToBounds(local)) {\r\n event.event.preventDefault();\r\n }\r\n // Make this happen\r\n this.triggerMove(local);\r\n this.triggerDown(local);\r\n };\r\n /**\r\n * Determines whether Cursor should prevent default action on move.\r\n *\r\n * Child classes should override this as necessary.\r\n *\r\n * @return Prevent default?\r\n */\r\n Cursor.prototype.shouldPreventGestures = function (touch) {\r\n return true;\r\n };\r\n /**\r\n * Updates the coordinates of where pointer down event occurred\r\n * (was pressed).\r\n */\r\n Cursor.prototype.updatePoint = function (point) {\r\n };\r\n /**\r\n * Handles pointer up event - finishes zoom or selection action.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Original event\r\n */\r\n Cursor.prototype.handleCursorUp = function (event) {\r\n if (!this.interactionsEnabled) {\r\n return;\r\n }\r\n if (!this.downPoint && !getInteraction().isLocalElement(event.pointer, this.paper.svg, this.uid)) {\r\n return;\r\n }\r\n var local = $utils.documentPointToSprite(event.pointer.point, this);\r\n if (this._adapterO) {\r\n this._adapterO.apply(\"cursorPoint\", local);\r\n }\r\n if (!this.downPoint || !this.fitsToBounds(this.downPoint)) {\r\n return;\r\n }\r\n if (this._stick == \"hard\" && this._stickPoint) {\r\n local = this._stickPoint;\r\n }\r\n this._upPointOrig = { x: local.x, y: local.y };\r\n this.triggerMove(local);\r\n this.triggerUp(local);\r\n };\r\n Object.defineProperty(Cursor.prototype, \"chart\", {\r\n /**\r\n * @return Chart\r\n */\r\n get: function () {\r\n return this._chart;\r\n },\r\n /**\r\n * A reference to a [[Chart]] the cursor belongs to.\r\n *\r\n * @param value Chart\r\n */\r\n set: function (value) {\r\n this._chart = value;\r\n if ($type.hasValue(this._chart.plotContainer)) {\r\n getInteraction().lockElement(this._chart.plotContainer.interactions);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Cursor;\r\n}(Container));\r\nexport { Cursor };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Cursor\"] = Cursor;\r\n//# sourceMappingURL=Cursor.js.map","/**\r\n * Cursor for XY chart\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Cursor } from \"./Cursor\";\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { MutableValueDisposer, MultiDisposer } from \"../../core/utils/Disposer\";\r\nimport { ValueAxis } from \"../axes/ValueAxis\";\r\nimport { DateAxis } from \"../axes/DateAxis\";\r\nimport { XYSeries } from \"../series/XYSeries\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { color } from \"../../core/utils/Color\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { getInteraction } from \"../../core/interaction/Interaction\";\r\nimport { MouseCursorStyle } from \"../../core/interaction/Mouse\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A cursor used on [[XYChart]].\r\n *\r\n * @see {@link IXYCursorEvents} for a list of available events\r\n * @see {@link IXYCursorAdapters} for a list of available Adapters\r\n * @todo Add description, examples\r\n */\r\nvar XYCursor = /** @class */ (function (_super) {\r\n __extends(XYCursor, _super);\r\n /**\r\n * Constructor\r\n */\r\n function XYCursor() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Vertical cursor line element.\r\n */\r\n _this._lineX = new MutableValueDisposer();\r\n /**\r\n * Horizontal cursor line element.\r\n */\r\n _this._lineY = new MutableValueDisposer();\r\n /**\r\n * Horizontal [[Axis]].\r\n */\r\n _this._xAxis = new MutableValueDisposer();\r\n /**\r\n * Vertical [[Axis]].\r\n */\r\n _this._yAxis = new MutableValueDisposer();\r\n _this._snapToDisposers = [];\r\n _this.className = \"XYCursor\";\r\n // Defaults\r\n _this.behavior = \"zoomX\";\r\n _this.maxPanOut = 0.1;\r\n var interfaceColors = new InterfaceColorSet();\r\n _this.snapOnPan = true;\r\n // Create selection element\r\n var selection = _this.createChild(Sprite);\r\n selection.shouldClone = false;\r\n selection.fillOpacity = 0.2;\r\n selection.fill = interfaceColors.getFor(\"alternativeBackground\");\r\n selection.isMeasured = false;\r\n selection.visible = false;\r\n selection.interactionsEnabled = false;\r\n _this.selection = selection;\r\n _this._disposers.push(_this.selection);\r\n // Create cursor's vertical line\r\n var lineX = _this.createChild(Sprite);\r\n lineX.shouldClone = false;\r\n lineX.stroke = interfaceColors.getFor(\"grid\");\r\n lineX.fill = color();\r\n lineX.strokeDasharray = \"3,3\";\r\n lineX.isMeasured = false;\r\n lineX.strokeOpacity = 0.4;\r\n lineX.interactionsEnabled = false;\r\n lineX.y = 0; // important\r\n _this.lineX = lineX;\r\n _this._disposers.push(_this.lineX);\r\n // Create cursor's horizontal line\r\n var lineY = _this.createChild(Sprite);\r\n lineY.shouldClone = false;\r\n lineY.stroke = interfaceColors.getFor(\"grid\");\r\n lineY.fill = color();\r\n lineY.strokeDasharray = \"3,3\";\r\n lineY.isMeasured = false;\r\n lineY.strokeOpacity = 0.4;\r\n lineY.interactionsEnabled = false;\r\n lineY.x = 0; // important\r\n _this.lineY = lineY;\r\n _this._disposers.push(_this.lineY);\r\n // Add handler for size changes\r\n _this.events.on(\"sizechanged\", _this.updateSize, _this, false);\r\n _this._disposers.push(_this._lineX);\r\n _this._disposers.push(_this._lineY);\r\n _this._disposers.push(_this._xAxis);\r\n _this._disposers.push(_this._yAxis);\r\n _this.mask = _this;\r\n _this.hideSeriesTooltipsOnSelection = true;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Updates cursor element dimensions on size change.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYCursor.prototype.updateSize = function () {\r\n if (this.lineX) {\r\n this.lineX.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: 0, y: this.innerHeight });\r\n }\r\n if (this.lineY) {\r\n this.lineY.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: this.innerWidth, y: 0 });\r\n }\r\n };\r\n /**\r\n * Updates selection dimensions on size change.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYCursor.prototype.updateSelection = function () {\r\n if (this._usesSelection) {\r\n var downPoint = this.downPoint;\r\n var behavior = this.behavior;\r\n if (downPoint) {\r\n var point = this.point;\r\n if (this.lineX) {\r\n point.x = this.lineX.pixelX;\r\n }\r\n if (this.lineY) {\r\n point.y = this.lineY.pixelY;\r\n }\r\n var selection = this.selection;\r\n var x = Math.min(point.x, downPoint.x);\r\n var y = Math.min(point.y, downPoint.y);\r\n var w = $math.round(Math.abs(downPoint.x - point.x), this._positionPrecision);\r\n var h = $math.round(Math.abs(downPoint.y - point.y), this._positionPrecision);\r\n switch (behavior) {\r\n case \"zoomX\":\r\n y = 0;\r\n h = this.pixelHeight;\r\n break;\r\n case \"zoomY\":\r\n x = 0;\r\n w = this.pixelWidth;\r\n break;\r\n case \"selectX\":\r\n y = 0;\r\n h = this.pixelHeight;\r\n break;\r\n case \"selectY\":\r\n x = 0;\r\n w = this.pixelWidth;\r\n break;\r\n }\r\n selection.x = x;\r\n selection.y = y;\r\n selection.path = $path.rectangle(w, h);\r\n selection.validatePosition(); // otherwise Edge shoes some incorrect size rectangle\r\n }\r\n else {\r\n if (this._generalBehavior != \"select\") {\r\n this.selection.hide();\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYCursor.prototype.fixPoint = function (point) {\r\n point.x = Math.max(0, point.x);\r\n point.y = Math.max(0, point.y);\r\n point.x = Math.min(this.pixelWidth, point.x);\r\n point.y = Math.min(this.pixelHeight, point.y);\r\n return point;\r\n };\r\n /**\r\n * Places the cursor at specific point.\r\n *\r\n * @param point Point to place cursor at\r\n */\r\n XYCursor.prototype.triggerMoveReal = function (point, force) {\r\n _super.prototype.triggerMoveReal.call(this, point, force);\r\n var snapToSeries = this.snapToSeries;\r\n if ((snapToSeries && !this.downPoint)) {\r\n if (snapToSeries instanceof XYSeries) {\r\n if (snapToSeries.isHidden) {\r\n this.updateLinePositions(point);\r\n }\r\n }\r\n else {\r\n var allHidden_1 = true;\r\n $array.each(snapToSeries, function (s) {\r\n if (!s.isHidden) {\r\n allHidden_1 = false;\r\n }\r\n });\r\n if (allHidden_1) {\r\n this.updateLinePositions(point);\r\n }\r\n }\r\n }\r\n else {\r\n this.updateLinePositions(point);\r\n }\r\n if (this.downPoint && $math.getDistance(this.downPoint, point) > 3) {\r\n if (this._generalBehavior == \"pan\") {\r\n this.getPanningRanges();\r\n this.dispatch(\"panning\");\r\n }\r\n }\r\n };\r\n /**\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYCursor.prototype.updateLinePositions = function (point) {\r\n point = this.fixPoint(this.point);\r\n if (this.lineX && this.lineX.visible && !this.xAxis) {\r\n this.lineX.x = point.x;\r\n }\r\n if (this.lineY && this.lineY.visible && !this.yAxis) {\r\n this.lineY.y = point.y;\r\n }\r\n this.updateSelection();\r\n };\r\n XYCursor.prototype.triggerDownReal = function (point) {\r\n if (this.visible && !this.isHiding) {\r\n if (this._generalBehavior == \"select\") {\r\n this.selection.parent = this.parent;\r\n }\r\n if (this.fitsToBounds(point)) {\r\n this.downPoint = { x: point.x, y: point.y };\r\n this.updatePoint(point);\r\n //this.updateLinePositions(point); // otherwise lines won't be in correct position and touch won't work fine\r\n this.point.x = this.downPoint.x;\r\n this.point.y = this.downPoint.y;\r\n var selection = this.selection;\r\n var selectionX = this.downPoint.x;\r\n var selectionY = this.downPoint.y;\r\n if (this._usesSelection) {\r\n selection.x = selectionX;\r\n selection.y = selectionY;\r\n selection.path = \"\";\r\n selection.show();\r\n }\r\n _super.prototype.triggerDownReal.call(this, point);\r\n }\r\n else {\r\n this.downPoint = undefined;\r\n }\r\n }\r\n else {\r\n this.downPoint = undefined;\r\n }\r\n };\r\n /**\r\n * Updates the coordinates of where pointer down event occurred\r\n * (was pressed).\r\n */\r\n XYCursor.prototype.updatePoint = function (point) {\r\n if (this.lineX) {\r\n point.x = this.lineX.pixelX;\r\n }\r\n if (this.lineY) {\r\n point.y = this.lineY.pixelY;\r\n }\r\n };\r\n /**\r\n * Handle action when cursor is released, which should perform an operation\r\n * based on its `behavior`, like zoom.\r\n *\r\n * @param point Release point\r\n */\r\n XYCursor.prototype.triggerUpReal = function (point) {\r\n if (this.hasMoved()) {\r\n if (this.downPoint) {\r\n this.upPoint = point;\r\n this.updatePoint(this.upPoint);\r\n if (this._generalBehavior != \"pan\") {\r\n this.getRanges();\r\n }\r\n if (this._generalBehavior != \"select\") {\r\n this.selection.hide();\r\n }\r\n _super.prototype.triggerUpReal.call(this, point);\r\n }\r\n }\r\n else {\r\n if (this._generalBehavior != \"select\") {\r\n this.selection.hide(0);\r\n }\r\n else {\r\n this.xRange = undefined;\r\n this.yRange = undefined;\r\n this.dispatchImmediately(\"selectended\");\r\n }\r\n // reset cursor style, just in case\r\n if (this._generalBehavior == \"pan\") {\r\n var interaction = getInteraction();\r\n interaction.setGlobalStyle(MouseCursorStyle.default);\r\n }\r\n this.dispatchImmediately(\"behaviorcanceled\");\r\n }\r\n this.downPoint = undefined;\r\n this.dispatch(\"cursorpositionchanged\");\r\n };\r\n /**\r\n * Calculates if the cursor has moved enough based on its `behavior`.\r\n *\r\n * @return Moved?\r\n */\r\n XYCursor.prototype.hasMoved = function () {\r\n var distance;\r\n if (this.behavior == \"zoomX\" || this.behavior == \"panX\") {\r\n distance = $math.getHorizontalDistance(this._upPointOrig, this._downPointOrig);\r\n }\r\n else if (this.behavior == \"zoomY\" || this.behavior == \"panY\") {\r\n distance = $math.getVerticalDistance(this._upPointOrig, this._downPointOrig);\r\n }\r\n else {\r\n distance = $math.getDistance(this._upPointOrig, this._downPointOrig);\r\n }\r\n return distance > getInteraction().getHitOption(this.interactions, \"hitTolerance\");\r\n };\r\n /**\r\n * [getRanges description]\r\n *\r\n * @todo Description\r\n */\r\n XYCursor.prototype.getPanningRanges = function () {\r\n var startX = $math.round(this.downPoint.x / this.innerWidth, 5);\r\n var startY = 1 - $math.round(this.downPoint.y / this.innerHeight, 5);\r\n var currentX = $math.round(this.point.x / this.innerWidth, 5);\r\n var currentY = 1 - $math.round(this.point.y / this.innerHeight, 5);\r\n var deltaX = startX - currentX;\r\n var deltaY = startY - currentY;\r\n this.xRange = { start: deltaX, end: 1 + deltaX };\r\n this.yRange = { start: deltaY, end: 1 + deltaY };\r\n if (this.behavior == \"panX\") {\r\n this.yRange.start = 0;\r\n this.yRange.end = 1;\r\n }\r\n if (this.behavior == \"panY\") {\r\n this.xRange.start = 0;\r\n this.xRange.end = 1;\r\n }\r\n };\r\n /**\r\n * [getRanges description]\r\n *\r\n * @todo Description\r\n */\r\n XYCursor.prototype.getRanges = function () {\r\n if (this.lineX) {\r\n this.upPoint.x = this.lineX.pixelX;\r\n }\r\n if (this.lineY) {\r\n this.upPoint.y = this.lineY.pixelY;\r\n }\r\n // @todo Is this needed?\r\n $utils.used(this.selection);\r\n var startX = $math.round(this.downPoint.x / this.innerWidth, 5);\r\n var endX = $math.round((this.upPoint.x) / this.innerWidth, 5);\r\n var startY = 1 - $math.round(this.downPoint.y / this.innerHeight, 5);\r\n var endY = 1 - $math.round((this.upPoint.y) / this.innerHeight, 5);\r\n this.xRange = { start: $math.min(startX, endX), end: $math.max(startX, endX) };\r\n this.yRange = { start: $math.min(startY, endY), end: $math.max(startY, endY) };\r\n };\r\n Object.defineProperty(XYCursor.prototype, \"behavior\", {\r\n /**\r\n * Behavior\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"behavior\");\r\n },\r\n /**\r\n * Cursor's behavior when it's moved with pointer down:\r\n *\r\n * * `\"zoomX\"` - zooms horizontally.\r\n * * `\"zoomY\"` - zooms vertically.\r\n * * `\"zoomXY\"` - zooms both horizontally and vertically.\r\n * * `\"selectX\"` - selects a range horizontally.\r\n * * `\"selectY\"` - selects a range vertically.\r\n * * `\"selectXY\"` - selects a range both horizontally and vertically.\r\n * * `\"panX\"` - moves (pans) current selection horizontally.\r\n * * `\"panY\"` - moves (pans) current selection vertically.\r\n * * `\"panXY\"` - moves (pans) current selection both horizontally and vertically.\r\n * * `\"none\"` - does nothing with pointer down.\r\n *\r\n * E.g. \"zoomXY\" will mean that pressing a mouse (or touching) over plot area\r\n * and dragging it will start zooming the chart.\r\n *\r\n * NOTE: `\"zoomXY\"` acts differently when used on a `DateAxis`.\r\n * See [this note](https://www.amcharts.com/docs/v4/concepts/chart-cursor/#zoomXY_behavior_and_DateAxis).\r\n *\r\n * @param value Bheavior\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"behavior\", value, true);\r\n this._usesSelection = false;\r\n if (value.indexOf(\"zoom\") != -1) {\r\n this._generalBehavior = \"zoom\";\r\n this._usesSelection = true;\r\n }\r\n if (value.indexOf(\"select\") != -1) {\r\n this._generalBehavior = \"select\";\r\n this._usesSelection = true;\r\n }\r\n if (value.indexOf(\"pan\") != -1) {\r\n this._generalBehavior = \"pan\";\r\n this._usesSelection = false;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Determines whether Cursor should prevent default action on move.\r\n *\r\n * If cursor's behavior is \"none\", it should not obstruct the page scrolling.\r\n *\r\n * @return Prevent default?\r\n */\r\n XYCursor.prototype.shouldPreventGestures = function (touch) {\r\n return (!this.interactions.isTouchProtected || !touch) && this.behavior != \"none\";\r\n };\r\n Object.defineProperty(XYCursor.prototype, \"fullWidthLineX\", {\r\n /**\r\n * @return Full width?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"fullWidthLineX\");\r\n },\r\n /**\r\n * Cursor's horizontal line is expanded to take full width of the related\r\n * Axis' cell/category.\r\n *\r\n * NOTE: this setting will work properly if `xAxis` is set and only in case\r\n * `xAxis` is [[CategoryAxis]] or [[DateAxis]].\r\n *\r\n * @param value Full width?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"fullWidthLineX\", value);\r\n if (!value) {\r\n this.updateSize();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYCursor.prototype, \"fullWidthLineY\", {\r\n /**\r\n * @return Full width?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"fullWidthLineY\");\r\n },\r\n /**\r\n * Cursor's vertical line is expanded to take full width of the related\r\n * Axis' cell/category.\r\n *\r\n * NOTE: this setting will work properly if `yAxis` is set and only in case\r\n * `yAxis` is [[CategoryAxis]] or [[DateAxis]].\r\n *\r\n * @param value Full width?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"fullWidthLineY\", value);\r\n if (!value) {\r\n this.updateSize();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYCursor.prototype, \"hideSeriesTooltipsOnSelection\", {\r\n /**\r\n * @return hide tooltip?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"hideSeriesTooltipsOnSelection\");\r\n },\r\n /**\r\n * If set to `true` this will hide series tooltips when selecting with cursor.\r\n *\r\n * @since 4.5.15\r\n * @param value hide tooltips?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"hideSeriesTooltipsOnSelection\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYCursor.prototype, \"maxTooltipDistance\", {\r\n /**\r\n * @return Distance\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxTooltipDistance\");\r\n },\r\n /**\r\n * If set to a numeric value, cursor will display closest series' tooltips\r\n * plus tooltips from series that are closer to than `maxTooltipDistance` to\r\n * it.\r\n *\r\n * Set it to `-1` to always force one tooltip, even if there are multiple\r\n * data items in exactly same place.\r\n *\r\n * @since 4.7.18\r\n * @param value Distance\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"maxTooltipDistance\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYCursor.prototype, \"maxPanOut\", {\r\n /**\r\n * @return Full width?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxPanOut\");\r\n },\r\n /**\r\n * If cursor behavior is panX or panY, we allow to pan plot out of it's max bounds for a better user experience.\r\n * This setting specifies relative value by how much we can pan out the plot\r\n *\r\n * @param value\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"maxPanOut\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYCursor.prototype, \"xAxis\", {\r\n /**\r\n * @return X axis\r\n */\r\n get: function () {\r\n return this._xAxis.get();\r\n },\r\n /**\r\n * A reference to X [[Axis]].\r\n *\r\n * An XY cursor can live without `xAxis` set. You set xAxis for cursor when\r\n * you have axis tooltip enabled and you want cursor line to be at the same\r\n * position as tooltip.\r\n *\r\n * This works with [[CategoryAxis]] and [[DateAxis]] but not with\r\n * [[ValueAxis]].\r\n *\r\n * @todo Description (review)\r\n * @param axis X axis\r\n */\r\n set: function (axis) {\r\n var _this = this;\r\n if (this._xAxis.get() != axis) {\r\n this._xAxis.set(axis, new MultiDisposer([\r\n axis.tooltip.events.on(\"positionchanged\", this.handleXTooltipPosition, this, false),\r\n axis.events.on(\"rangechangestarted\", function (event) {\r\n _this.hide(0);\r\n _this.preventShow = true;\r\n }, undefined, false),\r\n axis.events.on(\"rangechangeended\", function (event) {\r\n _this.preventShow = false;\r\n _this.hide(0);\r\n _this.dispatch(\"cursorpositionchanged\");\r\n }, undefined, false)\r\n ]));\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYCursor.prototype, \"yAxis\", {\r\n /**\r\n * @return Y Axis\r\n */\r\n get: function () {\r\n return this._yAxis.get();\r\n },\r\n /**\r\n * A reference to Y [[Axis]].\r\n *\r\n * An XY cursor can live without `yAxis` set. You set xAxis for cursor when\r\n * you have axis tooltip enabled and you want cursor line to be at the same\r\n * position as tooltip.\r\n *\r\n * This works with [[CategoryAxis]] and [[DateAxis]] but not with\r\n * [[ValueAxis]].\r\n *\r\n * @todo Description (review)\r\n * @param axis Y axis\r\n */\r\n set: function (axis) {\r\n var _this = this;\r\n if (this._yAxis.get() != axis) {\r\n this._yAxis.set(axis, new MultiDisposer([\r\n axis.tooltip.events.on(\"positionchanged\", this.handleYTooltipPosition, this, false),\r\n axis.events.on(\"rangechangestarted\", function (event) {\r\n _this.hide(0);\r\n _this.__disabled = true;\r\n }, undefined, false),\r\n axis.events.on(\"rangechangeended\", function (event) {\r\n _this.__disabled = false;\r\n _this.hide(0);\r\n _this.dispatch(\"cursorpositionchanged\");\r\n }, undefined, false)\r\n ]));\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Updates Cursor's position when axis tooltip changes position.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Original Axis event\r\n */\r\n XYCursor.prototype.handleXTooltipPosition = function (event) {\r\n var tooltip = this.xAxis.tooltip;\r\n var point = $utils.svgPointToSprite({ x: tooltip.pixelX, y: tooltip.pixelY }, this);\r\n var x = point.x;\r\n point.y = 1;\r\n if (this.lineX) {\r\n this.lineX.x = x;\r\n if (!this.fitsToBounds(point)) {\r\n this.hide();\r\n }\r\n }\r\n if (this.xAxis && this.fullWidthLineX) {\r\n var startPoint = this.xAxis.currentItemStartPoint;\r\n var endPoint = this.xAxis.currentItemEndPoint;\r\n if (startPoint && endPoint) {\r\n this.lineX.x = x;\r\n var width = endPoint.x - startPoint.x;\r\n this.lineX.path = $path.rectangle(width, this.innerHeight, -width / 2);\r\n }\r\n }\r\n };\r\n /**\r\n * Updates Cursor's position when Y axis changes position or scale.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Original Axis event\r\n */\r\n XYCursor.prototype.handleYTooltipPosition = function (event) {\r\n var tooltip = this.yAxis.tooltip;\r\n var point = $utils.svgPointToSprite({ x: tooltip.pixelX, y: tooltip.pixelY }, this);\r\n var y = point.y;\r\n point.x = 1;\r\n if (this.lineY) {\r\n this.lineY.y = y;\r\n if (!this.fitsToBounds(point)) {\r\n this.hide();\r\n }\r\n }\r\n if (this.yAxis && this.fullWidthLineY) {\r\n var startPoint = this.yAxis.currentItemStartPoint;\r\n var endPoint = this.yAxis.currentItemEndPoint;\r\n if (startPoint && endPoint) {\r\n this.lineY.y = y;\r\n var height = endPoint.y - startPoint.y;\r\n this.lineY.path = $path.rectangle(this.innerWidth, height, 0, -height / 2);\r\n }\r\n }\r\n };\r\n Object.defineProperty(XYCursor.prototype, \"lineX\", {\r\n /**\r\n * @return Line element\r\n */\r\n get: function () {\r\n return this._lineX.get();\r\n },\r\n /**\r\n * A Line element to use for X axis.\r\n *\r\n * @param lineX Line\r\n */\r\n set: function (lineX) {\r\n if (lineX) {\r\n lineX.setElement(this.paper.add(\"path\"));\r\n this._lineX.set(lineX, lineX.events.on(\"positionchanged\", this.updateSelection, this, false));\r\n lineX.interactionsEnabled = false;\r\n lineX.parent = this;\r\n }\r\n else {\r\n this._lineX.reset();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYCursor.prototype, \"lineY\", {\r\n /**\r\n * @return Line element\r\n */\r\n get: function () {\r\n return this._lineY.get();\r\n },\r\n /**\r\n * A Line element to use Y axis.\r\n *\r\n * @param lineY Line\r\n */\r\n set: function (lineY) {\r\n if (lineY) {\r\n lineY.setElement(this.paper.add(\"path\"));\r\n this._lineY.set(lineY, lineY.events.on(\"positionchanged\", this.updateSelection, this, false));\r\n lineY.parent = this;\r\n lineY.interactionsEnabled = false;\r\n }\r\n else {\r\n this._lineY.reset();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYCursor.prototype, \"selection\", {\r\n /**\r\n * @return Selection rectangle\r\n */\r\n get: function () {\r\n return this._selection;\r\n },\r\n /**\r\n * A selection element ([[Sprite]]).\r\n *\r\n * @param selection Selection rectangle\r\n */\r\n set: function (selection) {\r\n this._selection = selection;\r\n if (selection) {\r\n selection.element = this.paper.add(\"path\");\r\n selection.parent = this;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * Looks if `xAxis` and `yAxis` is set via ID in JSON config, and replaces\r\n * with real references.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n XYCursor.prototype.processConfig = function (config) {\r\n var _this = this;\r\n if (config) {\r\n // Set up axes\r\n if ($type.hasValue(config.xAxis) && $type.isString(config.xAxis)) {\r\n if (this.map.hasKey(config.xAxis)) {\r\n config.xAxis = this.map.getKey(config.xAxis);\r\n }\r\n else {\r\n this.processingErrors.push(\"[XYCursor] No axis with id \\\"\" + config.xAxis + \"\\\" found for `xAxis`\");\r\n delete config.xAxis;\r\n }\r\n }\r\n if ($type.hasValue(config.yAxis) && $type.isString(config.yAxis)) {\r\n if (this.map.hasKey(config.yAxis)) {\r\n config.yAxis = this.map.getKey(config.yAxis);\r\n }\r\n else {\r\n this.processingErrors.push(\"[XYCursor] No axis with id \\\"\" + config.yAxis + \"\\\" found for `yAxis`\");\r\n delete config.yAxis;\r\n }\r\n }\r\n if ($type.hasValue(config.snapToSeries)) {\r\n var snapTo_1 = $type.isArray(config.snapToSeries) ? config.snapToSeries : [config.snapToSeries];\r\n var snapError_1 = false;\r\n $array.each(snapTo_1, function (snap, index) {\r\n if ($type.isString(snap)) {\r\n if (_this.map.hasKey(snap)) {\r\n snapTo_1[index] = _this.map.getKey(snap);\r\n }\r\n else {\r\n _this.processingErrors.push(\"[XYCursor] No series with id \\\"\" + snap + \"\\\" found for `series`\");\r\n snapError_1 = true;\r\n }\r\n }\r\n });\r\n if (snapError_1) {\r\n delete config.snapToSeries;\r\n }\r\n else {\r\n config.snapToSeries = snapTo_1;\r\n }\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n Object.defineProperty(XYCursor.prototype, \"snapToSeries\", {\r\n /**\r\n * @return {XYSeries | XYSeries[]}\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"snapToSeries\");\r\n },\r\n /**\r\n * Specifies to which series cursor lines should be snapped.\r\n *\r\n * Can be a single series instance or an array of series.\r\n *\r\n * @param {XYSeries | XYSeries[]}\r\n */\r\n set: function (series) {\r\n var _this = this;\r\n if (this.setPropertyValue(\"snapToSeries\", series)) {\r\n if (series instanceof XYSeries) {\r\n series = [series];\r\n }\r\n if (this._snapToDisposers) {\r\n $array.each(this._snapToDisposers, function (disposer) {\r\n disposer.dispose();\r\n });\r\n }\r\n this._snapToDisposers = [];\r\n if (series) {\r\n $array.each(series, function (s) {\r\n _this._snapToDisposers.push(s.events.on(\"tooltipshownat\", function () { _this.handleSnap(s); }, undefined, false));\r\n });\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYCursor.prototype, \"snapOnPan\", {\r\n /**\r\n * Should zoom selection \"snap\" into equal categories/intervals after panning\r\n * the chart? (when `behavior == \"panX\"`)\r\n *\r\n * @default true\r\n * @since 4.10.17\r\n * @return Snap on pan?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"snapOnPan\");\r\n },\r\n /**\r\n * @param value Snap on pan?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"snapOnPan\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Snaps the zoom selection after chart is panned.\r\n *\r\n * @ignore\r\n */\r\n XYCursor.prototype.handleSnap = function (series) {\r\n if (!this.downPoint) {\r\n var x = series.getTooltipX() + series.xAxis.pixelX;\r\n var y = series.getTooltipY() + series.yAxis.pixelY;\r\n var xAxis = series.xAxis;\r\n var yAxis = series.yAxis;\r\n if (xAxis) {\r\n if (xAxis.renderer.opposite) {\r\n y -= this.pixelHeight;\r\n }\r\n }\r\n this.point = { x: x, y: y };\r\n this.getPositions();\r\n var xx = x;\r\n var yy = y;\r\n x -= this.pixelWidth;\r\n if (yAxis) {\r\n if (yAxis.renderer.opposite) {\r\n x += this.pixelWidth;\r\n }\r\n }\r\n var tooltip = series.tooltip;\r\n var duration = tooltip.animationDuration;\r\n var easing = tooltip.animationEasing;\r\n if (xAxis instanceof ValueAxis && !(xAxis instanceof DateAxis) && yAxis instanceof ValueAxis && !(yAxis instanceof DateAxis)) {\r\n series.yAxis.showTooltipAtPosition(this.yPosition);\r\n series.xAxis.showTooltipAtPosition(this.xPosition);\r\n }\r\n else {\r\n if (series.baseAxis == series.xAxis) {\r\n series.yAxis.showTooltipAtPosition(this.yPosition);\r\n }\r\n if (series.baseAxis == series.yAxis) {\r\n series.xAxis.showTooltipAtPosition(this.xPosition);\r\n }\r\n }\r\n //\tthis.lineX.animate([{ property: \"y\", to: y }], duration, easing);\r\n //\tthis.lineY.animate([{ property: \"x\", to: x }], duration, easing);\r\n this.lineY.x = x;\r\n this.lineX.y = y;\r\n if (!this.xAxis) {\r\n this.lineX.animate([{ property: \"x\", to: xx }], duration, easing);\r\n }\r\n if (!this.yAxis) {\r\n this.lineY.animate([{ property: \"y\", to: yy }], duration, easing);\r\n }\r\n }\r\n };\r\n /**\r\n * Destroys this object and all related data.\r\n */\r\n XYCursor.prototype.dispose = function () {\r\n this.hide(0);\r\n _super.prototype.dispose.call(this);\r\n };\r\n return XYCursor;\r\n}(Cursor));\r\nexport { XYCursor };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"XYCursor\"] = XYCursor;\r\n//# sourceMappingURL=XYCursor.js.map","import { __extends } from \"tslib\";\r\nimport { XYCursor } from \"./XYCursor\";\r\nimport { Percent, percent } from \"../../core/utils/Percent\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Cursor for [[RadarChart]].\r\n *\r\n * @see {@link IRadarCursorEvents} for a list of available events\r\n * @see {@link IRadarCursorAdapters} for a list of available Adapters\r\n */\r\nvar RadarCursor = /** @class */ (function (_super) {\r\n __extends(RadarCursor, _super);\r\n /**\r\n * Constructor\r\n */\r\n function RadarCursor() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"RadarCursor\";\r\n _this.radius = percent(100);\r\n _this.innerRadius = percent(0);\r\n // Apply theme\r\n _this.applyTheme();\r\n _this.mask = undefined;\r\n return _this;\r\n }\r\n /**\r\n * Checks if point is within bounds of a container.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point Point to check\r\n * @return Fits within container?\r\n */\r\n RadarCursor.prototype.fitsToBounds = function (point) {\r\n var radius = $math.getDistance(point);\r\n //if(!$math.isAngleInRange(angle, this.startAngle, this.endAngle)){\r\n //return false;\r\n //}\r\n if (radius < this.truePixelRadius + 1 && radius > this.pixelInnerRadius - 1) { // ok to add/remove some\r\n return true;\r\n }\r\n return false;\r\n };\r\n Object.defineProperty(RadarCursor.prototype, \"startAngle\", {\r\n /**\r\n * @return Start angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startAngle\");\r\n },\r\n /**\r\n * Starting angle of the cursor's radial line.\r\n *\r\n * @param value Start angle\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"startAngle\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RadarCursor.prototype, \"endAngle\", {\r\n /**\r\n * @return End angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endAngle\");\r\n },\r\n /**\r\n * End angle of the cursor's radial line.\r\n *\r\n * @param value End angle\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"endAngle\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n RadarCursor.prototype.triggerMoveReal = function (point, force) {\r\n if (!this.xAxis || (this.xAxis && (!this.xAxis.cursorTooltipEnabled || this.xAxis.tooltip.disabled))) {\r\n this.updateLineX(this.point);\r\n }\r\n if (!this.yAxis || (this.yAxis && (!this.yAxis.cursorTooltipEnabled || this.yAxis.tooltip.disabled))) {\r\n this.updateLineY(this.point);\r\n }\r\n this.updateSelection();\r\n _super.prototype.triggerMoveReal.call(this, point, force);\r\n };\r\n /**\r\n * (Re)draws the horizontal (circular) cursor's line.\r\n *\r\n * @param point New target point\r\n */\r\n RadarCursor.prototype.updateLineX = function (point) {\r\n var radius = this.pixelRadius;\r\n var startAngle = this.startAngle;\r\n var endAngle = this.endAngle;\r\n var innerRadius = this.pixelInnerRadius;\r\n if (radius > 0 && $type.isNumber(startAngle) && $type.isNumber(endAngle) && $type.isNumber(innerRadius)) {\r\n var angle = $math.fitAngleToRange($math.getAngle(point), startAngle, endAngle);\r\n var path = void 0;\r\n if (this.lineX && this.lineX.visible) {\r\n this.lineX.moveTo({ x: 0, y: 0 });\r\n // fill\r\n if (this.xAxis && this.fullWidthLineX) {\r\n var startPoint = this.xAxis.currentItemStartPoint;\r\n var endPoint = this.xAxis.currentItemEndPoint;\r\n if (startPoint && endPoint) {\r\n var fillStartAngle = $math.fitAngleToRange($math.getAngle(startPoint), startAngle, endAngle);\r\n var fillEndAngle = $math.fitAngleToRange($math.getAngle(endPoint), startAngle, endAngle);\r\n var arc = fillEndAngle - fillStartAngle;\r\n // clockwise\r\n // this is needed, normalizeAngle doesn't solve it\r\n if (startAngle < endAngle) {\r\n if (arc < 0) {\r\n arc += 360;\r\n }\r\n }\r\n // ccw\r\n else {\r\n if (arc > 0) {\r\n arc -= 360;\r\n }\r\n }\r\n angle -= arc / 2;\r\n path = $path.moveTo({ x: innerRadius * $math.cos(angle), y: innerRadius * $math.sin(angle) })\r\n + $path.lineTo({ x: radius * $math.cos(angle), y: radius * $math.sin(angle) })\r\n + $path.arcTo(angle, arc, radius)\r\n + $path.lineTo({ x: innerRadius * $math.cos(angle + arc), y: innerRadius * $math.sin(angle + arc) })\r\n + $path.arcTo(angle + arc, -arc, innerRadius);\r\n }\r\n }\r\n // line\r\n if (!path) {\r\n path = $path.moveTo({ x: innerRadius * $math.cos(angle), y: innerRadius * $math.sin(angle) }) + $path.lineTo({ x: radius * $math.cos(angle), y: radius * $math.sin(angle) });\r\n }\r\n this.lineX.path = path;\r\n }\r\n }\r\n };\r\n /**\r\n * (Re)draws the vertical (radial) cursor's line.\r\n *\r\n * @param point New target point\r\n */\r\n RadarCursor.prototype.updateLineY = function (point) {\r\n if (this.lineY && this.lineY.visible) {\r\n var startAngle = this.startAngle;\r\n var endAngle = this.endAngle;\r\n var truePixelRadius = this.truePixelRadius;\r\n var radius = $math.fitToRange($math.getDistance(point), 0, this.truePixelRadius);\r\n if ($type.isNumber(radius) && $type.isNumber(startAngle)) {\r\n this.lineY.moveTo({ x: 0, y: 0 });\r\n var path = void 0;\r\n var arc = endAngle - startAngle;\r\n if (this.yAxis && this.fullWidthLineY) {\r\n // fill\r\n var startPoint = this.yAxis.currentItemStartPoint;\r\n var endPoint = this.yAxis.currentItemEndPoint;\r\n if (startPoint && endPoint) {\r\n var innerRadius = $math.fitToRange($math.getDistance(startPoint), 0, truePixelRadius);\r\n radius = $math.fitToRange($math.getDistance(endPoint), 0, truePixelRadius);\r\n path = $path.moveTo({ x: radius * $math.cos(startAngle), y: radius * $math.sin(startAngle) }) + $path.arcTo(startAngle, arc, radius);\r\n path += $path.moveTo({ x: innerRadius * $math.cos(endAngle), y: innerRadius * $math.sin(endAngle) }) + $path.arcTo(endAngle, -arc, innerRadius);\r\n }\r\n }\r\n if (!path) {\r\n path = $path.moveTo({ x: radius * $math.cos(startAngle), y: radius * $math.sin(startAngle) }) + $path.arcTo(startAngle, endAngle - startAngle, radius);\r\n }\r\n this.lineY.path = path;\r\n }\r\n }\r\n };\r\n /**\r\n * Updates selection dimensions on size change.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n RadarCursor.prototype.updateSelection = function () {\r\n if (this._usesSelection) {\r\n var downPoint = this.downPoint;\r\n if (downPoint) {\r\n var point = this.point;\r\n var radius = this.pixelRadius;\r\n var truePixelRadius = this.truePixelRadius;\r\n var innerRadius = this.pixelInnerRadius;\r\n var startAngle = Math.min(this.startAngle, this.endAngle);\r\n var endAngle = Math.max(this.startAngle, this.endAngle);\r\n var downAngle = $math.fitAngleToRange($math.getAngle(downPoint), startAngle, endAngle);\r\n var angle = $math.fitAngleToRange($math.getAngle(point), startAngle, endAngle);\r\n var downRadius = $math.getDistance(downPoint);\r\n if (downRadius < truePixelRadius) {\r\n var currentRadius = $math.fitToRange($math.getDistance(point), 0, truePixelRadius);\r\n this._prevAngle = angle;\r\n var path = $path.moveTo({ x: 0, y: 0 });\r\n var downSin = $math.sin(downAngle);\r\n var downCos = $math.cos(downAngle);\r\n var sin = $math.sin(angle);\r\n var cos = $math.cos(angle);\r\n var behavior = this.behavior;\r\n if (behavior == \"zoomX\" || behavior == \"selectX\") {\r\n path += $path.lineTo({ x: radius * downCos, y: radius * downSin }) + $path.arcTo(downAngle, angle - downAngle, radius) + $path.lineTo({ x: innerRadius * cos, y: innerRadius * sin }) + $path.arcTo(angle, downAngle - angle, innerRadius);\r\n }\r\n else if (behavior == \"zoomY\" || behavior == \"selectY\") {\r\n path = $path.moveTo({ x: currentRadius * $math.cos(startAngle), y: currentRadius * $math.sin(startAngle) }) + $path.arcTo(startAngle, endAngle - startAngle, currentRadius) + $path.lineTo({ x: downRadius * $math.cos(endAngle), y: downRadius * $math.sin(endAngle) }) + $path.arcTo(endAngle, startAngle - endAngle, downRadius) + $path.closePath();\r\n }\r\n else if (behavior == \"zoomXY\") {\r\n path = $path.moveTo({ x: currentRadius * $math.cos(downAngle), y: currentRadius * $math.sin(downAngle) }) + $path.arcTo(downAngle, angle - downAngle, currentRadius) + $path.lineTo({ x: downRadius * $math.cos(angle), y: downRadius * $math.sin(angle) }) + $path.arcTo(angle, downAngle - angle, downRadius) + $path.closePath();\r\n }\r\n this.selection.path = path;\r\n }\r\n this.selection.moveTo({ x: 0, y: 0 });\r\n }\r\n }\r\n };\r\n /**\r\n * Updates cursors current positions.\r\n */\r\n RadarCursor.prototype.getPositions = function () {\r\n // positions are used by axes or series\r\n var chart = this.chart;\r\n if (chart) {\r\n var innerRadius = this.pixelInnerRadius;\r\n var radius = this.truePixelRadius - innerRadius;\r\n var startAngle = this.startAngle;\r\n var endAngle = this.endAngle;\r\n var angle = $math.fitAngleToRange($math.getAngle(this.point), startAngle, endAngle);\r\n var xPosition = ((angle - startAngle) / (endAngle - startAngle));\r\n this.xPosition = xPosition;\r\n this.yPosition = $math.fitToRange(($math.getDistance(this.point) - innerRadius) / radius, 0, 1);\r\n }\r\n };\r\n /**\r\n * Overriding inherited method, so that nothing happens when it's triggered.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n RadarCursor.prototype.updatePoint = function (point) {\r\n };\r\n /**\r\n * Updates Cursor's position when axis tooltip changes horizontal position.\r\n *\r\n * @param event Axis event\r\n */\r\n RadarCursor.prototype.handleXTooltipPosition = function (event) {\r\n if (this.xAxis.cursorTooltipEnabled) {\r\n var tooltip = this.xAxis.tooltip;\r\n this.updateLineX($utils.svgPointToSprite({ x: tooltip.pixelX, y: tooltip.pixelY }, this));\r\n }\r\n };\r\n /**\r\n * Updates Cursor's position when axis tooltip changes vertical position.\r\n *\r\n * @todo Description\r\n * @param event Axis event\r\n */\r\n RadarCursor.prototype.handleYTooltipPosition = function (event) {\r\n if (this.yAxis.cursorTooltipEnabled) {\r\n var tooltip = this.yAxis.tooltip;\r\n this.updateLineY($utils.svgPointToSprite({ x: tooltip.pixelX, y: tooltip.pixelY }, this));\r\n }\r\n };\r\n /**\r\n * needs to be overriden\r\n * @ignore\r\n */\r\n RadarCursor.prototype.updateLinePositions = function (point) {\r\n };\r\n /**\r\n * [getRanges description]\r\n *\r\n * @todo Description\r\n */\r\n RadarCursor.prototype.getRanges = function () {\r\n var downPoint = this.downPoint;\r\n if (downPoint) {\r\n var upPoint = this.upPoint;\r\n var chart = this.chart;\r\n if (chart) {\r\n var radius = this.pixelRadius;\r\n var startAngle = this.startAngle;\r\n var endAngle = this.endAngle;\r\n var downAngle = $math.fitAngleToRange($math.getAngle(downPoint), this.startAngle, this.endAngle);\r\n var upAngle = $math.fitAngleToRange($math.getAngle(upPoint), this.startAngle, this.endAngle);\r\n var downRadius = $math.fitToRange($math.getDistance(downPoint), 0, radius);\r\n var upRadius = $math.fitToRange($math.getDistance(upPoint), 0, radius);\r\n var startX = 0;\r\n var endX = 1;\r\n var startY = 0;\r\n var endY = 1;\r\n var behavior = this.behavior;\r\n if (behavior == \"zoomX\" || behavior == \"selectX\" || behavior == \"zoomXY\" || behavior == \"selectXY\") {\r\n var arc = endAngle - startAngle;\r\n startX = $math.round((downAngle - startAngle) / arc, 5);\r\n endX = $math.round((upAngle - startAngle) / arc, 5);\r\n }\r\n if (behavior == \"zoomY\" || behavior == \"selectY\" || behavior == \"zoomXY\" || behavior == \"selectXY\") {\r\n startY = $math.round(downRadius / radius, 5);\r\n endY = $math.round(upRadius / radius, 5);\r\n }\r\n this.xRange = { start: Math.min(startX, endX), end: Math.max(startX, endX) };\r\n this.yRange = { start: Math.min(startY, endY), end: Math.max(startY, endY) };\r\n if (this.behavior == \"selectX\" || this.behavior == \"selectY\" || this.behavior == \"selectXY\") {\r\n // void\r\n }\r\n else {\r\n this.selection.hide();\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Overriding inherited method, so that nothing happens when `updateSize`\r\n * is triggered.\r\n *\r\n * RadarCursor is quite complicated and needs own sizing logic.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n RadarCursor.prototype.updateSize = function () { };\r\n Object.defineProperty(RadarCursor.prototype, \"radius\", {\r\n /**\r\n * @return Outer radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"radius\");\r\n },\r\n /**\r\n * Outer radius of the cursor's circular line.\r\n * Absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Outer radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"radius\", value, false, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RadarCursor.prototype, \"pixelRadius\", {\r\n /**\r\n * Outer radius of the circular line in pixels.\r\n *\r\n * @return Outer radius (px)\r\n * @readonly\r\n */\r\n get: function () {\r\n return $utils.relativeRadiusToValue(this.radius, this.truePixelRadius);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RadarCursor.prototype, \"truePixelRadius\", {\r\n /**\r\n * [truePixelRadius description]\r\n *\r\n * @todo Description\r\n * @return Outer radius (px)\r\n * @readonly\r\n */\r\n get: function () {\r\n return $utils.relativeToValue(percent(100), $math.min(this.innerWidth / 2, this.innerHeight / 2));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RadarCursor.prototype, \"innerRadius\", {\r\n /**\r\n * @return Inner radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"innerRadius\");\r\n },\r\n /**\r\n * Inner radius of the cursor's circular line.\r\n * Absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Inner radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"innerRadius\", value, false, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RadarCursor.prototype, \"pixelInnerRadius\", {\r\n /**\r\n * Inner radius of the circular line in pixels.\r\n *\r\n * @return Inner radius (px)\r\n * @readonly\r\n */\r\n get: function () {\r\n var innerRadius = this.innerRadius;\r\n if (innerRadius instanceof Percent) {\r\n innerRadius = percent(100 * innerRadius.value * this.chart.innerRadiusModifyer);\r\n }\r\n return $utils.relativeRadiusToValue(innerRadius, this.truePixelRadius) || 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n RadarCursor.prototype.fixPoint = function (point) {\r\n // overriding xy method\r\n return point;\r\n };\r\n return RadarCursor;\r\n}(XYCursor));\r\nexport { RadarCursor };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"RadarCursor\"] = RadarCursor;\r\n//# sourceMappingURL=RadarCursor.js.map","/**\r\n * Functionality for adding images in SVG tree.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../Sprite\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $dom from \"../utils/DOM\";\r\nimport * as $type from \"../utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Used to add `<image>` elements to SVG.\r\n *\r\n * @see {@link IImageEvents} for a list of available events\r\n * @see {@link IImageAdapters} for a list of available Adapters\r\n */\r\nvar Image = /** @class */ (function (_super) {\r\n __extends(Image, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Image() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Image\";\r\n _this.element = _this.paper.add(\"image\");\r\n _this.applyTheme();\r\n _this.width = 50;\r\n _this.height = 50;\r\n return _this;\r\n }\r\n /**\r\n * Draws an `<image>` element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Image.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n if (this.href) {\r\n var width = this.innerWidth;\r\n var height = this.innerHeight;\r\n if ($type.isNumber(this.widthRatio)) {\r\n width = height * this.widthRatio;\r\n this.width = width;\r\n }\r\n if ($type.isNumber(this.heightRatio)) {\r\n height = width * this.heightRatio;\r\n this.height = height;\r\n }\r\n this.element.attr({\r\n \"width\": width,\r\n \"height\": height\r\n });\r\n this.element.attrNS($dom.XLINK, \"xlink:href\", this.href);\r\n }\r\n };\r\n Object.defineProperty(Image.prototype, \"href\", {\r\n /**\r\n * @return Image URI\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"href\");\r\n },\r\n /**\r\n * An image URI.\r\n *\r\n * @param value Image URI\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"href\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Image.prototype, \"widthRatio\", {\r\n /**\r\n * @return Ratio\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"widthRatio\");\r\n },\r\n /**\r\n * Sets image `width` relatively to its `height`.\r\n *\r\n * If image's `height = 100` and `widthRatio = 0.5` the actual width will be\r\n * `50`.\r\n *\r\n * @param value Ratio\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"widthRatio\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Image.prototype, \"heightRatio\", {\r\n /**\r\n * @return Ratio\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"heightRatio\");\r\n },\r\n /**\r\n * Sets image `height` relatively to its `width`.\r\n *\r\n * If image's `width = 100` and `heightRatio = 0.5` the actual height will be\r\n * `50`.\r\n *\r\n * @param value Ratio\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"heightRatio\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Image.prototype, \"bbox\", {\r\n /**\r\n * Returns bounding box (square) for this element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n get: function () {\r\n return {\r\n x: 0,\r\n y: 0,\r\n width: this.pixelWidth,\r\n height: this.pixelHeight\r\n };\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Image;\r\n}(Sprite));\r\nexport { Image };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Image\"] = Image;\r\n//# sourceMappingURL=Image.js.map","/**\r\n * Module for a multi-part arched line.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Polyline } from \"./Polyline\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws a multi-part arched line.\r\n *\r\n * @see {@link IPolyarcEvents} for a list of available events\r\n * @see {@link IPolyarcAdapters} for a list of available Adapters\r\n */\r\nvar Polyarc = /** @class */ (function (_super) {\r\n __extends(Polyarc, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Polyarc() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Polyarc\";\r\n _this.controlPointDistance = 0.5;\r\n _this.controlPointPosition = 0.5;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Creats and adds an SVG path for the arc.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Polyarc.prototype.makePath = function () {\r\n this._distance = 0;\r\n var segments = this.segments;\r\n if (segments && segments.length > 0) {\r\n var path = \"\";\r\n this._realSegments = [];\r\n for (var i = 0, len = segments.length; i < len; i++) {\r\n var points = segments[i];\r\n var realPoints = [];\r\n this._realSegments.push(realPoints);\r\n if (points.length > 0) {\r\n path += $path.moveTo(points[0]);\r\n for (var p = 1; p < points.length; p++) {\r\n var pointA = points[p - 1];\r\n var pointB = points[p];\r\n var distanceAB = $math.getDistance(pointB, pointA);\r\n var cpDistance = distanceAB * this.controlPointDistance;\r\n var controlPointPosition = this.controlPointPosition;\r\n var angle = -$math.getAngle(pointA, pointB);\r\n var cpx = pointA.x + (pointB.x - pointA.x) * controlPointPosition * 0.5 - cpDistance * $math.sin(angle);\r\n var cpy = pointA.y + (pointB.y - pointA.y) * controlPointPosition * 0.5 - cpDistance * $math.cos(angle);\r\n var controlPoint1 = { x: cpx, y: cpy };\r\n var cpx2 = pointA.x + (pointB.x - pointA.x) * controlPointPosition * 1.5 - cpDistance * $math.sin(angle);\r\n var cpy2 = pointA.y + (pointB.y - pointA.y) * controlPointPosition * 1.5 - cpDistance * $math.cos(angle);\r\n var controlPoint2 = { x: cpx2, y: cpy2 };\r\n path += $path.cubicCurveTo(pointB, controlPoint1, controlPoint2);\r\n // we add a lot of points in order to get the position/angle later\r\n var stepCount = Math.ceil(distanceAB);\r\n var prevPoint = pointA;\r\n if (stepCount > 0) {\r\n for (var i_1 = 0; i_1 <= stepCount; i_1++) {\r\n var point = $math.getPointOnCubicCurve(pointA, pointB, controlPoint1, controlPoint2, i_1 / stepCount);\r\n realPoints.push(point);\r\n this._distance += $math.getDistance(prevPoint, point);\r\n prevPoint = point;\r\n }\r\n }\r\n else {\r\n realPoints.push(pointA);\r\n }\r\n }\r\n }\r\n }\r\n this.path = path;\r\n }\r\n };\r\n Object.defineProperty(Polyarc.prototype, \"controlPointPosition\", {\r\n /**\r\n * @return Position (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"controlPointPosition\");\r\n },\r\n /**\r\n * Relative position along the line the control point is. (0-1)\r\n *\r\n * @default 0.5\r\n * @param value Position (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"controlPointPosition\", value);\r\n this.makePath();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Polyarc.prototype, \"controlPointDistance\", {\r\n /**\r\n * @return Distance (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"controlPointDistance\");\r\n },\r\n /**\r\n * Relative distance of the control point. (0-1)\r\n *\r\n * Default is half the length of the line. (0.5)\r\n *\r\n * @default 0.5\r\n * @param value Distance (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"controlPointDistance\", value);\r\n this.makePath();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Polyarc;\r\n}(Polyline));\r\nexport { Polyarc };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Polyarc\"] = Polyarc;\r\n//# sourceMappingURL=Polyarc.js.map","/**\r\n * Morpher module contains functionality that allows morphing one polygon to\r\n * another.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../Base\";\r\nimport { Animation, AnimationDisposer } from \"../utils/Animation\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $ease from \"../utils/Ease\";\r\nimport * as $type from \"../utils/Type\";\r\n/**\r\n * Morpher can be used to morph one polygon to some other polygon.\r\n */\r\nvar Morpher = /** @class */ (function (_super) {\r\n __extends(Morpher, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param morphable An object to morph\r\n */\r\n function Morpher(morphable) {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * A storage for measurements.\r\n */\r\n _this._bboxes = [];\r\n /**\r\n * Duration of the morphing animation in milliseconds.\r\n */\r\n _this.morphDuration = 800;\r\n /**\r\n * An easing function to use for morphing animation.\r\n *\r\n * @see {@link Ease}\r\n */\r\n _this.morphEasing = $ease.cubicOut;\r\n /**\r\n * If set to `true`, all separate parts of the multi-part polygon will\r\n * morph into a single circle or polygon when using built-in methods\r\n * `morphToCircle()` or `morphToPolygon()`.\r\n *\r\n * Otherwise each separate part of polygon will morph to individual target\r\n * circle or polgyon.\r\n */\r\n _this.morphToSingle = true;\r\n /**\r\n * A ratio to scale morphed object in relation to the source object.\r\n */\r\n _this.scaleRatio = 1;\r\n _this.className = \"Morpher\";\r\n _this.morphable = morphable;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Morphs a polygon to another polygon.\r\n *\r\n * @param toPoints Corner points of the target shape\r\n * @param duration Duration in milliseconds\r\n * @param easing Easing function\r\n * @return Animation\r\n */\r\n Morpher.prototype.morphToPolygon = function (toPoints, duration, easing) {\r\n var points = this.morphable.currentPoints;\r\n if (points && toPoints) {\r\n this.sortPoints(points);\r\n this.sortPoints(toPoints);\r\n this._morphFromPointsReal = [];\r\n this._morphToPointsReal = [];\r\n if (!$type.hasValue(duration)) {\r\n duration = this.morphDuration;\r\n }\r\n if (!$type.hasValue(easing)) {\r\n easing = this.morphEasing;\r\n }\r\n this._morphFromPointsReal = this.normalizePoints(toPoints, points);\r\n this._morphToPointsReal = this.normalizePoints(points, toPoints);\r\n this.morphable.currentPoints = this._morphFromPointsReal;\r\n var animation = new Animation(this, { property: \"morphProgress\", from: 0, to: 1 }, duration, easing);\r\n this._disposers.push(animation);\r\n animation.start();\r\n return animation;\r\n }\r\n };\r\n /**\r\n * [normalizePoints description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param pointsA Point A\r\n * @param pointsB Point B\r\n * @return Normalized points\r\n */\r\n Morpher.prototype.normalizePoints = function (pointsA, pointsB) {\r\n for (var i = 0, len = pointsA.length; i < len; i++) {\r\n var surfaceA = pointsA[i][0];\r\n var holeA = pointsA[i][1];\r\n var bboxA = $type.getValue($math.getBBox(surfaceA));\r\n var middleX = bboxA.x + bboxA.width;\r\n var middleY = bboxA.y + bboxA.height;\r\n // check if we have the same in PointsB\r\n if (!pointsB[i]) {\r\n pointsB[i] = [];\r\n }\r\n // check if we have surface in pointsB\r\n if (surfaceA && !pointsB[i][0]) {\r\n pointsB[i][0] = [{ x: middleX, y: middleY }, { x: middleX, y: middleY }];\r\n }\r\n if (pointsB[i][0]) {\r\n pointsB[i][0] = this.addPoints(pointsB[i][0], surfaceA.length);\r\n var distance = Infinity;\r\n var splitAt = 0;\r\n for (var a = 0; a < pointsB[i][0].length; a++) {\r\n var newDistance = $math.getDistance(pointsB[i][0][a], surfaceA[0]);\r\n if (newDistance < distance) {\r\n splitAt = a;\r\n distance = newDistance;\r\n }\r\n }\r\n var partA = pointsB[i][0].slice(0, splitAt);\r\n var partB = pointsB[i][0].slice(splitAt);\r\n pointsB[i][0] = partB.concat(partA);\r\n }\r\n if (holeA) {\r\n if (!pointsB[i][1]) {\r\n pointsB[i][1] = [{ x: middleX, y: middleY }, { x: middleX, y: middleY }];\r\n }\r\n pointsB[i][1] = this.addPoints(pointsB[i][1], holeA.length);\r\n }\r\n }\r\n return pointsB;\r\n };\r\n /**\r\n * [sortPoints description]\r\n *\r\n * @ignore Exclude from doc\r\n * @todo Description\r\n * @param points [description]\r\n * @return common bbox of points\r\n */\r\n Morpher.prototype.sortPoints = function (points) {\r\n points.sort(function (a, b) {\r\n var bbox1 = $type.getValue($math.getBBox(a[0]));\r\n var bbox2 = $type.getValue($math.getBBox(b[0]));\r\n if (bbox1.width * bbox1.height > bbox2.width * bbox2.height) {\r\n return -1;\r\n }\r\n else {\r\n return 1;\r\n }\r\n });\r\n var bboxes = [];\r\n for (var i = 0, len = points.length; i < len; i++) {\r\n var surface = points[i][0];\r\n if (surface) {\r\n bboxes.push($type.getValue($math.getBBox(surface)));\r\n }\r\n }\r\n return $math.getCommonRectangle(bboxes);\r\n };\r\n /**\r\n * Morphs polygon to a circle (it is actually a polygon which makes a circle).\r\n *\r\n * @param radius Target circle radius (px)\r\n * @param duration Duration (ms)\r\n * @param easing Easing function\r\n * @return Animation\r\n */\r\n Morpher.prototype.morphToCircle = function (radius, duration, easing) {\r\n var points = this.morphable.points;\r\n var commonBBox = this.sortPoints(points);\r\n this._morphFromPointsReal = [];\r\n this._morphToPointsReal = [];\r\n if (!$type.hasValue(duration)) {\r\n duration = this.morphDuration;\r\n }\r\n if (!$type.hasValue(easing)) {\r\n easing = this.morphEasing;\r\n }\r\n // surface\r\n for (var i = 0, len = points.length; i < len; i++) {\r\n var surface = points[i][0];\r\n var hole = points[i][1];\r\n this._morphFromPointsReal[i] = [];\r\n this._morphToPointsReal[i] = [];\r\n if (surface) {\r\n var toPoints = surface;\r\n var fromPoints = surface;\r\n var bbox = $type.getValue($math.getBBox(fromPoints)); // this._bboxes[i];\r\n if (this.morphToSingle) {\r\n bbox = $type.getValue(commonBBox);\r\n }\r\n var middleX = bbox.x + bbox.width / 2;\r\n var middleY = bbox.y + bbox.height / 2;\r\n var realRadius = radius;\r\n if (!$type.isNumber(realRadius)) {\r\n realRadius = Math.min(bbox.width / 2, bbox.height / 2);\r\n }\r\n toPoints = [];\r\n // find angle for the first point\r\n var startAngle = $math.getAngle({ x: middleX, y: middleY }, surface[0]);\r\n var count = 100;\r\n if (surface.length > count) {\r\n count = surface.length;\r\n }\r\n fromPoints = this.addPoints(surface, count);\r\n count = fromPoints.length; // add Points might increase number a bit\r\n var angle = 360 / (count - 1);\r\n for (var a = 0; a < count; a++) {\r\n var realAngle = angle * a + startAngle;\r\n var pointOnCircle = { x: middleX + realRadius * $math.cos(realAngle), y: middleY + realRadius * $math.sin(realAngle) };\r\n toPoints[a] = pointOnCircle;\r\n }\r\n if (hole && hole.length > 0) {\r\n for (var i_1 = 0, hlen = hole.length; i_1 < hlen; i_1++) {\r\n toPoints.push({ x: middleX, y: middleY });\r\n }\r\n }\r\n this._morphFromPointsReal[i][0] = fromPoints;\r\n this._morphToPointsReal[i][0] = toPoints;\r\n }\r\n }\r\n this.morphable.currentPoints = this._morphFromPointsReal;\r\n var animation = new Animation(this, { property: \"morphProgress\", from: 0, to: 1 }, duration, easing);\r\n this._disposers.push(animation);\r\n animation.start();\r\n return animation;\r\n };\r\n /**\r\n * [addPoints description]\r\n *\r\n * @ignore Exclude from doc\r\n * @todo Description\r\n * @param points [description]\r\n * @param mustHaveCount [description]\r\n * @return [description]\r\n */\r\n Morpher.prototype.addPoints = function (points, mustHaveCount) {\r\n var addToSegmentCount = Math.round(mustHaveCount / points.length);\r\n var newPoints = [];\r\n for (var i = 0, len = points.length; i < len; i++) {\r\n var point0 = points[i];\r\n var point1 = void 0;\r\n if (i == points.length - 1) {\r\n point1 = points[0];\r\n }\r\n else {\r\n point1 = points[i + 1];\r\n }\r\n newPoints.push(point0);\r\n for (var p = 1; p < addToSegmentCount; p++) {\r\n var percent = p / addToSegmentCount;\r\n var extraPoint = { x: point0.x + (point1.x - point0.x) * percent, y: point0.y + (point1.y - point0.y) * percent };\r\n newPoints.push(extraPoint);\r\n }\r\n // stop adding in case we already added more than left in original\r\n if (newPoints.length + points.length - i == mustHaveCount) {\r\n addToSegmentCount = 0;\r\n }\r\n }\r\n if (newPoints.length < mustHaveCount && points.length > 0) {\r\n var lastPoint = points[points.length - 1];\r\n for (var p = newPoints.length; p < mustHaveCount; p++) {\r\n // add same as last\r\n newPoints.push({ x: lastPoint.x, y: lastPoint.y });\r\n }\r\n }\r\n return newPoints;\r\n };\r\n /**\r\n * Morphs polygon into a rectangular polygon.\r\n *\r\n * @param width Width of the target rectangle (px)\r\n * @param height Height of the target rectangle (px)\r\n * @param duration Duration (ms)\r\n * @param easing Easing function\r\n * @return Animation\r\n */\r\n Morpher.prototype.morphToRectangle = function (width, height, duration, easing) {\r\n var points = this.morphable.points;\r\n this.sortPoints(points);\r\n this._morphFromPointsReal = [];\r\n this._morphToPointsReal = [];\r\n if (!$type.hasValue(duration)) {\r\n duration = this.morphDuration;\r\n }\r\n if (!$type.hasValue(easing)) {\r\n easing = this.morphEasing;\r\n }\r\n //\t\tlet biggestBBox: IRectangle = this._bboxes[this._biggestIndex];\r\n // surface\r\n for (var i = 0, len = points.length; i < len; i++) {\r\n var surface = points[i][0];\r\n var hole = points[i][1];\r\n this._morphFromPointsReal[i] = [];\r\n this._morphToPointsReal[i] = [];\r\n if (surface) {\r\n var toPoints = surface;\r\n var fromPoints = surface;\r\n var bbox = this._bboxes[i];\r\n // we only work with first area. TODO: maybe we should find the biggest one?\r\n if (this.morphToSingle) {\r\n //if (i != this._biggestIndex) {\r\n //\tbbox = { x: biggestBBox.x + biggestBBox.width / 2, y: biggestBBox.y + biggestBBox.height / 2, width: 0, height: 0 };\r\n //}\r\n }\r\n var x = bbox.x;\r\n var y = bbox.y;\r\n var realWidth = width;\r\n var realHeight = height;\r\n if (!$type.isNumber(realWidth)) {\r\n realWidth = bbox.width;\r\n }\r\n if (!$type.isNumber(realHeight)) {\r\n realHeight = bbox.height;\r\n }\r\n toPoints = [{ x: x, y: y }, { x: x + realWidth, y: y }, { x: x + realWidth, y: y + realHeight }, { x: x, y: y + realHeight }];\r\n toPoints = this.addPoints(toPoints, surface.length);\r\n // if polygon has less points then count, add\r\n if (surface.length < 4) {\r\n for (var i_2 = surface.length; i_2 < 4; i_2++) {\r\n toPoints.push({ x: surface[i_2].x, y: surface[i_2].y });\r\n }\r\n }\r\n if (hole && hole.length > 0) {\r\n var middleX = bbox.x + bbox.width / 2;\r\n var middleY = bbox.y + bbox.height / 2;\r\n for (var i_3 = 0, hlen = hole.length; i_3 < hlen; i_3++) {\r\n toPoints.push({ x: middleX, y: middleY });\r\n }\r\n }\r\n this._morphFromPointsReal[i][0] = fromPoints;\r\n this._morphToPointsReal[i][0] = toPoints;\r\n }\r\n }\r\n this.morphable.currentPoints = this._morphFromPointsReal;\r\n var animation = new Animation(this, { property: \"morphProgress\", from: 0, to: 1 }, duration, easing);\r\n this._disposers.push(animation);\r\n animation.start();\r\n return animation;\r\n };\r\n Object.defineProperty(Morpher.prototype, \"morphProgress\", {\r\n /**\r\n * Returns the progress of morph transition.\r\n *\r\n * @return Progress (0-1)\r\n */\r\n get: function () {\r\n return this._morphProgress;\r\n },\r\n /**\r\n * Progress of the morph transition.\r\n *\r\n * Setting this will also trigger actual transformation.\r\n *\r\n * @param value Progress (0-1)\r\n */\r\n set: function (value) {\r\n this._morphProgress = value;\r\n var currentPoints = [];\r\n if (value != null) {\r\n var fromPoints = this._morphFromPointsReal;\r\n var toPoints = this._morphToPointsReal;\r\n if (fromPoints != null && toPoints != null) {\r\n for (var i = 0, len = fromPoints.length; i < len; i++) {\r\n var currentArea = [];\r\n currentPoints.push(currentArea);\r\n var surfaceFrom = fromPoints[i][0];\r\n var holeFrom = fromPoints[i][1];\r\n var surfaceTo = toPoints[i][0];\r\n var holeTo = toPoints[i][1];\r\n if (surfaceFrom && surfaceFrom.length > 0 && surfaceTo && surfaceTo.length > 0) {\r\n var currentSurface = [];\r\n for (var i_4 = 0, slen = surfaceFrom.length; i_4 < slen; i_4++) {\r\n var point0 = surfaceFrom[i_4];\r\n var point1 = surfaceTo[i_4];\r\n var currentPoint = { x: point0.x + (point1.x * this.scaleRatio - point0.x) * value, y: point0.y + (point1.y * this.scaleRatio - point0.y) * value };\r\n currentSurface.push(currentPoint);\r\n }\r\n currentArea[0] = currentSurface;\r\n }\r\n if (holeFrom && holeFrom.length > 0 && holeTo && holeTo.length > 0) {\r\n var currentHole = [];\r\n for (var i_5 = 0, hlen = holeFrom.length; i_5 < hlen; i_5++) {\r\n var point0 = holeFrom[i_5];\r\n var point1 = holeTo[i_5];\r\n var currentPoint = { x: point0.x + (point1.x * this.scaleRatio - point0.x) * value, y: point0.y + (point1.y * this.scaleRatio - point0.y) * value };\r\n currentHole.push(currentPoint);\r\n }\r\n currentArea[1] = currentHole;\r\n }\r\n }\r\n }\r\n }\r\n this.morphable.currentPoints = currentPoints;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Restores the polygon to its original appearance.\r\n *\r\n * @param duration Duration (ms)\r\n * @param easing Easing function\r\n * @return Animation\r\n */\r\n Morpher.prototype.morphBack = function (duration, easing) {\r\n this._morphToPointsReal = this._morphFromPointsReal;\r\n this._morphFromPointsReal = this.morphable.currentPoints;\r\n if (!$type.hasValue(duration)) {\r\n duration = this.morphDuration;\r\n }\r\n if (!$type.hasValue(easing)) {\r\n easing = this.morphEasing;\r\n }\r\n var animation = new Animation(this, { property: \"morphProgress\", from: 0, to: 1 }, duration, easing);\r\n this._disposers.push(animation);\r\n animation.start();\r\n return animation;\r\n };\r\n Object.defineProperty(Morpher.prototype, \"animations\", {\r\n /**\r\n * Returns a list of morph animations currently being played.\r\n *\r\n * @return List of animations\r\n */\r\n get: function () {\r\n if (!this._animations) {\r\n this._animations = [];\r\n this._disposers.push(new AnimationDisposer(this._animations));\r\n }\r\n return this._animations;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Morpher;\r\n}(BaseObject));\r\nexport { Morpher };\r\n//# sourceMappingURL=Morpher.js.map","/**\r\n * Polygon module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../Sprite\";\r\nimport { Morpher } from \"../utils/Morpher\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $path from \"../rendering/Path\";\r\nimport * as $type from \"../utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws a polygon.\r\n *\r\n * @see {@link IPolygonEvents} for a list of available events\r\n * @see {@link IPolygonAdapters} for a list of available Adapters\r\n */\r\nvar Polygon = /** @class */ (function (_super) {\r\n __extends(Polygon, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Polygon() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Polygon\";\r\n _this.element = _this.paper.add(\"path\");\r\n _this.shapeRendering = \"auto\";\r\n _this._currentPoints = [];\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(Polygon.prototype, \"points\", {\r\n /**\r\n * @return Polygon points\r\n */\r\n get: function () {\r\n var points = this.getPropertyValue(\"points\");\r\n var path = this.path;\r\n if (path && (!points || points.length == 0)) {\r\n var valueStr = path.slice(1, path.length - 1);\r\n var segments = valueStr.split(\"ZM\");\r\n for (var s = 0; s < segments.length; s++) {\r\n var segment = segments[s];\r\n if (segment.length > 0) {\r\n var areaHole = segment.split(\"M\");\r\n var areaArr = areaHole[0];\r\n var holeArr = areaHole[1];\r\n if (areaArr && areaArr.length > 0) {\r\n var pointsArr = areaArr.split(\"L\");\r\n if (pointsArr.length > 0) {\r\n var area = [];\r\n var areaAndHole = [area];\r\n points.push(areaAndHole);\r\n for (var p = 0; p < pointsArr.length; p++) {\r\n var coords = pointsArr[p].split(\",\");\r\n area.push({ x: +coords[0], y: +coords[1] });\r\n }\r\n if (holeArr && holeArr.length > 0) {\r\n var pointsArr_1 = holeArr.split(\"L\");\r\n if (pointsArr_1.length > 0) {\r\n var hole = [];\r\n areaAndHole.push(hole);\r\n for (var p = pointsArr_1.length - 1; p >= 0; p--) {\r\n var coords = pointsArr_1[p].split(\",\");\r\n hole.push({ x: +coords[0], y: +coords[1] });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n this.setPropertyValue(\"points\", points);\r\n this._currentPoints = points;\r\n }\r\n return points;\r\n },\r\n /**\r\n * An array of X/Y coordinates for each elbow of the polygon.\r\n *\r\n * @todo Example\r\n * @param points Polygon points\r\n */\r\n set: function (points) {\r\n this.setPropertyValue(\"points\", points, true);\r\n this._currentPoints = points;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Polygon.prototype, \"currentPoints\", {\r\n /**\r\n * @return Polygon points\r\n */\r\n get: function () {\r\n if ((!this._currentPoints || this._currentPoints.length == 0) && this.path) {\r\n this._currentPoints = this.points;\r\n }\r\n return this._currentPoints;\r\n },\r\n /**\r\n * Current points. Used when morphing the element, so that original `points`\r\n * are not overwritten.\r\n *\r\n * @param points Polygon points\r\n */\r\n set: function (points) {\r\n if (this._currentPoints != points) {\r\n this._currentPoints = points;\r\n this.draw();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Polygon.prototype.draw = function () {\r\n var path = \"\";\r\n var points = this._currentPoints;\r\n var left;\r\n var right;\r\n var top;\r\n var bottom;\r\n if (points.length > 0) {\r\n // separate areas\r\n for (var i = 0, len = points.length; i < len; i++) {\r\n // surface\r\n var surface = points[i][0];\r\n var hole = points[i][1];\r\n if (surface && surface.length > 0) {\r\n var point = surface[0];\r\n path += $path.moveTo(point);\r\n for (var s = 0; s < surface.length; s++) {\r\n point = surface[s];\r\n path += $path.lineTo(point);\r\n if (!$type.isNumber(right) || (right < point.x)) {\r\n right = point.x;\r\n }\r\n if (!$type.isNumber(left) || (left > point.x)) {\r\n left = point.x;\r\n }\r\n if (!$type.isNumber(top) || (top > point.y)) {\r\n top = point.y;\r\n }\r\n if (!$type.isNumber(bottom) || (bottom < point.y)) {\r\n bottom = point.y;\r\n }\r\n }\r\n }\r\n // hole\r\n if (hole && hole.length > 0) {\r\n var point = hole[0];\r\n path += $path.moveTo(point);\r\n for (var h = 0, hlen = hole.length; h < hlen; h++) {\r\n point = hole[h];\r\n path += $path.lineTo(point);\r\n }\r\n }\r\n }\r\n if (path) {\r\n path += $path.closePath();\r\n }\r\n this.bbox.x = left;\r\n this.bbox.y = top;\r\n this.bbox.width = right - left;\r\n this.bbox.height = bottom - top;\r\n _super.prototype.setPath.call(this, path);\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Polygon.prototype.setPath = function (value) {\r\n if (_super.prototype.setPath.call(this, value)) {\r\n this.points = [];\r\n this._bbox = this.group.getBBox();\r\n return true;\r\n }\r\n return false;\r\n };\r\n /**\r\n * Measures element\r\n */\r\n Polygon.prototype.measureElement = function () {\r\n // Overriding to avoid extra measurement.\r\n };\r\n Object.defineProperty(Polygon.prototype, \"centerPoint\", {\r\n /**\r\n * A calculated center point for the shape.\r\n *\r\n * @readonly\r\n * @return Center\r\n */\r\n get: function () {\r\n return { x: this.bbox.x + this.bbox.width / 2, y: this.bbox.y + this.bbox.height / 2 };\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Polygon.prototype, \"morpher\", {\r\n /**\r\n * A [[Morpher]] instance that is used to morph polygon into some other\r\n * shape.\r\n *\r\n * @readonly\r\n * @return Morpher instance\r\n */\r\n get: function () {\r\n if (!this._morpher) {\r\n this._morpher = new Morpher(this);\r\n this._disposers.push(this._morpher);\r\n }\r\n return this._morpher;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Polygon;\r\n}(Sprite));\r\nexport { Polygon };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Polygon\"] = Polygon;\r\n//# sourceMappingURL=Polygon.js.map","/**\r\n * Preloader module.\r\n *\r\n * Preloader is a progress indicator.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../Container\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { Slice } from \"./Slice\";\r\nimport { Label } from \"./Label\";\r\nimport { registry } from \"../Registry\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A class used to draw and display progress indicator.\r\n *\r\n * @see {@link IPreloaderEvents} for a list of available events\r\n * @see {@link IPreloaderAdapters} for a list of available Adapters\r\n */\r\nvar Preloader = /** @class */ (function (_super) {\r\n __extends(Preloader, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Preloader() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"Preloader\";\r\n // Set dimensions\r\n _this.width = percent(100);\r\n _this.height = percent(100);\r\n var interfaceColors = new InterfaceColorSet();\r\n // Create main container\r\n var sliceContainer = _this.createChild(Container);\r\n sliceContainer.shouldClone = false;\r\n // Add background (100%) slice\r\n var backgroundSlice = sliceContainer.createChild(Slice);\r\n backgroundSlice.shouldClone = false;\r\n backgroundSlice.radius = 53;\r\n backgroundSlice.arc = 360;\r\n backgroundSlice.fill = interfaceColors.getFor(\"fill\");\r\n backgroundSlice.fillOpacity = 0.8;\r\n backgroundSlice.innerRadius = 42;\r\n backgroundSlice.isMeasured = false;\r\n _this.backgroundSlice = backgroundSlice;\r\n // Add progress slice\r\n var progressSlice = sliceContainer.createChild(Slice);\r\n progressSlice.shouldClone = false;\r\n progressSlice.radius = 50;\r\n progressSlice.innerRadius = 45;\r\n progressSlice.fill = interfaceColors.getFor(\"alternativeBackground\");\r\n progressSlice.fillOpacity = 0.2;\r\n progressSlice.isMeasured = false;\r\n _this.progressSlice = progressSlice;\r\n // Add text label element\r\n var label = sliceContainer.createChild(Label);\r\n label.shouldClone = false;\r\n label.horizontalCenter = \"middle\";\r\n label.verticalCenter = \"middle\";\r\n label.isMeasured = false;\r\n label.fill = interfaceColors.getFor(\"text\");\r\n label.align = \"center\";\r\n label.valign = \"middle\";\r\n label.textAlign = \"middle\";\r\n label.fillOpacity = 0.4;\r\n _this.label = label;\r\n // Set defaults\r\n _this.background.opacity = 1;\r\n _this.background.fill = interfaceColors.getFor(\"background\");\r\n _this.contentAlign = \"center\";\r\n _this.contentValign = \"middle\";\r\n _this.delay = 300;\r\n // Create hidden state\r\n var hiddenState = _this.states.create(\"hidden\");\r\n hiddenState.properties.opacity = 0;\r\n // Hide by default\r\n _this.visible = false;\r\n _this.hide(0);\r\n _this.__disabled = true;\r\n // Make it disposable\r\n // @todo Maybe it's enough to just dispose `sliceContainer`?\r\n _this._disposers.push(_this.backgroundSlice);\r\n _this._disposers.push(_this.progressSlice);\r\n _this._disposers.push(_this.label);\r\n _this._disposers.push(sliceContainer);\r\n return _this;\r\n }\r\n Object.defineProperty(Preloader.prototype, \"progress\", {\r\n /**\r\n * @return Progress (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"progress\");\r\n },\r\n /**\r\n * Current preload progress. (0-1)\r\n *\r\n * * 0 - 0%\r\n * * 0.5 - 50%\r\n * * 1 - 100%\r\n *\r\n * Setting this to a value less than 1, will automatically reveal the\r\n * preloader, while setting it to 1 (100%) will hide it.\r\n *\r\n * @param value Progress (0-1)\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n this.__disabled = false;\r\n this.validateLayout(); // show not in center without this\r\n this.setPropertyValue(\"progress\", value);\r\n /*if (!this.visible && value == 1) {\r\n return;\r\n }*/\r\n this.progressSlice.arc = 360 * value;\r\n if (this.label) {\r\n this.label.text = Math.round(value * 100) + \"%\";\r\n }\r\n if (value >= 1) {\r\n // Cancel the timeout\r\n if (this._started) {\r\n this._started = undefined;\r\n }\r\n // TODO remove closure ?\r\n registry.events.once(\"enterframe\", function () {\r\n var animation = _this.hide();\r\n if (animation && !animation.isFinished()) {\r\n animation.events.once(\"animationended\", function () {\r\n _this.__disabled = true;\r\n });\r\n }\r\n else {\r\n _this.__disabled = true;\r\n }\r\n });\r\n this.interactionsEnabled = false;\r\n this.setPropertyValue(\"progress\", 0);\r\n }\r\n else if (value > 0) {\r\n if (this.delay) {\r\n if (!this._started) {\r\n this._started = new Date().getTime();\r\n }\r\n else if ((this._started + this.delay) <= new Date().getTime()) {\r\n this.__disabled = false;\r\n this.show();\r\n this.interactionsEnabled = true;\r\n }\r\n }\r\n else {\r\n this.__disabled = false;\r\n this.show();\r\n this.interactionsEnabled = true;\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Preloader.prototype, \"delay\", {\r\n /**\r\n * @return Delay (ms)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"delay\");\r\n },\r\n /**\r\n * Delay display of preloader by X milliseconds.\r\n *\r\n * When loading starts (`progress` is set to <1) and finishes (`progress` is\r\n * set to 1) before `delay` ms, the loader is never shown.\r\n *\r\n * This is used to avoid brief flashing of the preload for very quick loads.\r\n *\r\n * @default 1000\r\n * @param value Delay (ms)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"delay\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Preloader;\r\n}(Container));\r\nexport { Preloader };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Preloader\"] = Preloader;\r\n//# sourceMappingURL=Preloader.js.map","/**\r\n * Zoom out button functionality.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Button } from \"./Button\";\r\nimport { Sprite } from \"../Sprite\";\r\nimport { registry } from \"../Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $path from \"../rendering/Path\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { MouseCursorStyle } from \"../../core/interaction/Mouse\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a zoom out button.\r\n *\r\n * @see {@link ICloseButtonEvents} for a list of available events\r\n * @see {@link ICloseButtonAdapters} for a list of available Adapters\r\n */\r\nvar CloseButton = /** @class */ (function (_super) {\r\n __extends(CloseButton, _super);\r\n /**\r\n * Constructor\r\n */\r\n function CloseButton() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"CloseButton\";\r\n _this.padding(8, 8, 8, 8);\r\n _this.showSystemTooltip = true;\r\n _this.width = 30;\r\n _this.height = 30;\r\n var interfaceColors = new InterfaceColorSet();\r\n _this.cursorOverStyle = MouseCursorStyle.pointer;\r\n var background = _this.background;\r\n background.cornerRadius(20, 20, 20, 20);\r\n var bgc = interfaceColors.getFor(\"background\");\r\n background.fill = bgc;\r\n background.stroke = interfaceColors.getFor(\"primaryButton\");\r\n background.strokeOpacity = 1;\r\n background.strokeWidth = 1;\r\n var downColor = interfaceColors.getFor(\"primaryButtonActive\");\r\n var bhs = background.states.getKey(\"hover\");\r\n bhs.properties.strokeWidth = 3;\r\n bhs.properties.fill = bgc;\r\n var bds = background.states.getKey(\"down\");\r\n bds.properties.stroke = downColor;\r\n bds.properties.fill = bgc;\r\n // Create an icon\r\n var icon = new Sprite();\r\n icon.element = _this.paper.add(\"path\");\r\n icon.stroke = background.stroke;\r\n _this.icon = icon;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n CloseButton.prototype.validate = function () {\r\n _super.prototype.validate.call(this);\r\n var w = this.pixelWidth / 3;\r\n var h = this.pixelHeight / 3;\r\n var path = $path.moveTo({ x: -w / 2, y: -h / 2 });\r\n path += $path.lineTo({ x: w / 2, y: h / 2 });\r\n path += $path.moveTo({ x: w / 2, y: -h / 2 });\r\n path += $path.lineTo({ x: -w / 2, y: h / 2 });\r\n this.icon.path = path;\r\n this.invalidateLayout();\r\n };\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n CloseButton.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Close\");\r\n }\r\n };\r\n return CloseButton;\r\n}(Button));\r\nexport { CloseButton };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"CloseButton\"] = CloseButton;\r\n//# sourceMappingURL=CloseButton.js.map","/**\r\n * Functionality for drawing simple SwitchButtons.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../Container\";\r\nimport { Label } from \"./Label\";\r\nimport { Button } from \"../elements/Button\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { Circle } from \"../../core/elements/Circle\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { registry } from \"../Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * SwitchButton class is capable of drawing a simple rectangular SwitchButton with\r\n * optionally rounded corners and an icon in it.\r\n *\r\n * @see {@link ISwitchButtonEvents} for a list of available events\r\n * @see {@link ISwitchButtonAdapters} for a list of available Adapters\r\n */\r\nvar SwitchButton = /** @class */ (function (_super) {\r\n __extends(SwitchButton, _super);\r\n /**\r\n * Constructor\r\n */\r\n function SwitchButton() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"SwitchButton\";\r\n _this.tooltipY = 0;\r\n // Set defaults\r\n _this.layout = \"horizontal\";\r\n _this.contentAlign = \"center\";\r\n _this.contentValign = \"middle\";\r\n _this.padding(8, 16, 8, 16);\r\n _this.setStateOnChildren = true;\r\n _this.states.create(\"active\");\r\n var interfaceColors = new InterfaceColorSet();\r\n // Create the label element\r\n var leftLabel = new Label();\r\n leftLabel.fillOpacity = 0.3;\r\n var llas = leftLabel.states.create(\"active\");\r\n llas.properties.fillOpacity = 1;\r\n leftLabel.isActive = true;\r\n _this.leftLabel = leftLabel;\r\n var button = new Button();\r\n var circle = new Circle();\r\n button.contentValign = \"none\";\r\n button.padding(0, 0, 0, 0);\r\n circle.radius = 10;\r\n button.icon = circle;\r\n button.icon.valign = \"middle\";\r\n button.label = undefined;\r\n var p100 = percent(100);\r\n button.background.cornerRadius(p100, p100, p100, p100);\r\n button.width = circle.radius * 3.5;\r\n button.height = circle.radius * 2.1;\r\n button.marginLeft = 8;\r\n button.marginRight = 8;\r\n button.togglable = true;\r\n circle.dx = -circle.radius * 0.7;\r\n circle.fill = interfaceColors.getFor(\"primaryButton\");\r\n var hs = circle.states.create(\"hover\");\r\n hs.properties.fill = interfaceColors.getFor(\"primaryButtonHover\");\r\n var as = circle.states.create(\"active\");\r\n as.properties.fill = interfaceColors.getFor(\"primaryButtonActive\");\r\n as.properties.dx = circle.radius * 0.7;\r\n _this.switchButton = button;\r\n _this.events.on(\"toggled\", function () {\r\n _this.leftLabel.isActive = !_this.isActive;\r\n _this.rightLabel.isActive = _this.isActive;\r\n });\r\n // Create the label element\r\n var rightLabel = new Label();\r\n rightLabel.fillOpacity = 0.3;\r\n var rlas = rightLabel.states.create(\"active\");\r\n rlas.properties.fillOpacity = 1;\r\n _this.rightLabel = rightLabel;\r\n // Set up accessibility\r\n // A Button should be always focusable\r\n _this.role = \"button\";\r\n _this.focusable = true;\r\n rightLabel.valign = \"middle\";\r\n leftLabel.valign = \"middle\";\r\n button.valign = \"middle\";\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(SwitchButton.prototype, \"leftLabel\", {\r\n /**\r\n * @return Left label element\r\n */\r\n get: function () {\r\n return this._leftLabel;\r\n },\r\n /**\r\n * [[Label]] element to be used for left text.\r\n *\r\n * @param left label element\r\n */\r\n set: function (label) {\r\n if (this._leftLabel) {\r\n this.removeDispose(this._leftLabel);\r\n }\r\n this._leftLabel = label;\r\n if (label) {\r\n label.parent = this;\r\n label.interactionsEnabled = false;\r\n label.shouldClone = false;\r\n this._disposers.push(this._leftLabel);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SwitchButton.prototype, \"rightLabel\", {\r\n /**\r\n * @return Rigth label element\r\n */\r\n get: function () {\r\n return this._rightLabel;\r\n },\r\n /**\r\n * [[Label]] element to be used for left text.\r\n *\r\n * @param rigth label element\r\n */\r\n set: function (label) {\r\n if (this._rightLabel) {\r\n this.removeDispose(this._rightLabel);\r\n }\r\n this._rightLabel = label;\r\n if (label) {\r\n label.parent = this;\r\n label.interactionsEnabled = false;\r\n label.shouldClone = false;\r\n this._disposers.push(this._rightLabel);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SwitchButton.prototype, \"switch\", {\r\n /**\r\n * @ignore\r\n * @deprecated Use `switchButton` instead\r\n */\r\n get: function () {\r\n return this._switchButton;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SwitchButton.prototype, \"switchButton\", {\r\n /**\r\n * @return Button\r\n */\r\n get: function () {\r\n return this._switchButton;\r\n },\r\n /**\r\n * A [[Button]] element for switch.\r\n *\r\n * @param Button\r\n */\r\n set: function (button) {\r\n if (this._switchButton) {\r\n this.removeDispose(this._switchButton);\r\n }\r\n this._switchButton = button;\r\n if (button) {\r\n button.parent = this;\r\n button.shouldClone = false;\r\n this._disposers.push(this._switchButton);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies properties and other attributes.\r\n *\r\n * @param source Source\r\n */\r\n SwitchButton.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n if (source.leftLabel) {\r\n this.leftLabel.copyFrom(source.leftLabel);\r\n }\r\n if (source.rightLabel) {\r\n this.rightLabel.copyFrom(source.rightLabel);\r\n }\r\n if (source.switchButton) {\r\n this.switchButton.copyFrom(source.switchButton);\r\n }\r\n };\r\n return SwitchButton;\r\n}(Container));\r\nexport { SwitchButton };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"SwitchButton\"] = SwitchButton;\r\n//# sourceMappingURL=SwitchButton.js.map","/**\r\n * Slider is a scrollbar with just one selection grip.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Scrollbar } from \"../../core/elements/Scrollbar\";\r\nimport { registry } from \"../Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a slider - a version of scrollbar with just one grip.\r\n *\r\n * @see {@link ISliderEvents} for a list of available events\r\n * @see {@link ISliderAdapters} for a list of available Adapters\r\n */\r\nvar Slider = /** @class */ (function (_super) {\r\n __extends(Slider, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Slider() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Slider\";\r\n _this.thumb.opacity = 0;\r\n _this.thumb.interactionsEnabled = false;\r\n _this.endGrip.opacity = 0;\r\n _this.endGrip.interactionsEnabled = false;\r\n _this.startGrip.events.on(\"drag\", function () {\r\n _this.endGrip.x = _this.startGrip.x;\r\n _this.endGrip.y = _this.startGrip.y;\r\n });\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(Slider.prototype, \"__end\", {\r\n /**\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this._start;\r\n },\r\n set: function (value) {\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slider.prototype, \"end\", {\r\n /**\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this._start;\r\n },\r\n /**\r\n * Relative position (0-1) of the end grip.\r\n *\r\n * @param position Position (0-1)\r\n */\r\n set: function (position) {\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slider.prototype, \"start\", {\r\n /**\r\n * @return Position (0-1)\r\n */\r\n get: function () {\r\n return this._start;\r\n },\r\n /**\r\n * Relative position (0-1) of the start grip.\r\n *\r\n * @param position Position (0-1)\r\n */\r\n set: function (position) {\r\n if (!this._isBusy) {\r\n this.__start = position;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Slider;\r\n}(Scrollbar));\r\nexport { Slider };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Slider\"] = Slider;\r\n//# sourceMappingURL=Slider.js.map","/**\r\n * Play button functionality.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Button } from \"./Button\";\r\nimport { RoundedRectangle } from \"./RoundedRectangle\";\r\nimport { registry } from \"../Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { Triangle } from \"./Triangle\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a zoom out button.\r\n *\r\n * @see {@link IPlayButtonEvents} for a list of available events\r\n * @see {@link IPlayButtonAdapters} for a list of available Adapters\r\n */\r\nvar PlayButton = /** @class */ (function (_super) {\r\n __extends(PlayButton, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PlayButton() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"PlayButton\";\r\n _this.padding(12, 12, 12, 12);\r\n _this.showSystemTooltip = true;\r\n var interfaceColors = new InterfaceColorSet();\r\n var background = _this.background;\r\n background.cornerRadius(25, 25, 25, 25);\r\n background.fill = interfaceColors.getFor(\"primaryButton\");\r\n background.stroke = interfaceColors.getFor(\"primaryButtonStroke\");\r\n background.strokeOpacity = 0;\r\n background.states.getKey(\"hover\").properties.fill = interfaceColors.getFor(\"primaryButtonHover\");\r\n background.states.getKey(\"down\").properties.fill = interfaceColors.getFor(\"primaryButtonActive\");\r\n // Create a play icon\r\n var playIcon = new Triangle();\r\n playIcon.direction = \"right\";\r\n playIcon.width = 9;\r\n playIcon.height = 11;\r\n playIcon.marginLeft = 1;\r\n playIcon.marginRight = 1;\r\n playIcon.horizontalCenter = \"middle\";\r\n playIcon.verticalCenter = \"middle\";\r\n playIcon.stroke = interfaceColors.getFor(\"primaryButtonText\");\r\n playIcon.fill = playIcon.stroke;\r\n _this.icon = playIcon;\r\n // Create a play icon\r\n var stopIcon = new RoundedRectangle();\r\n stopIcon.width = 11;\r\n stopIcon.height = 11;\r\n stopIcon.horizontalCenter = \"middle\";\r\n stopIcon.verticalCenter = \"middle\";\r\n stopIcon.cornerRadius(0, 0, 0, 0);\r\n stopIcon.stroke = interfaceColors.getFor(\"primaryButtonText\");\r\n stopIcon.fill = playIcon.stroke;\r\n _this.togglable = true;\r\n var activeState = _this.states.create(\"active\");\r\n activeState.transitionDuration = 0;\r\n activeState.properties.icon = stopIcon;\r\n _this.defaultState.transitionDuration = 0;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n PlayButton.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Play\");\r\n }\r\n };\r\n return PlayButton;\r\n}(Button));\r\nexport { PlayButton };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"PlayButton\"] = PlayButton;\r\n//# sourceMappingURL=PlayButton.js.map","import { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { RadialGradient } from \"./RadialGradient\";\r\nimport { GradientModifier } from \"./GradientModifier\";\r\nimport { registry } from \"../../Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * This class can be used to modify radial gradient steps, changing visual\r\n * properties like lightness, brightness, opacity of each set.\r\n *\r\n * It can also set offsets for each gradient step.\r\n *\r\n * E.g. if I want to fill a columns in a column series to be a solid fill from\r\n * top to 80% of height, then gradually fades out, I can use the following\r\n * gradient modifier as a `fillModifier`:\r\n *\r\n * ```TypeScript\r\n * let fillModifier = new am4core.LinearGradientModifier();\r\n * fillModifier.opacities = [1, 1, 0];\r\n * fillModifier.offsets = [0, 0.8, 1];\r\n * columnSeries.columns.template.fillModifier = fillModifier;\r\n * ```\r\n * ```JavaScript\r\n * var fillModifier = new am4core.LinearGradientModifier();\r\n * fillModifier.opacities = [1, 1, 0];\r\n * fillModifier.offsets = [0, 0.8, 1];\r\n * columnSeries.columns.template.fillModifier = fillModifier;\r\n * ```\r\n * ```JSON\r\n * \"series\": [{\r\n * \"type\": \"ColumnSeries\",\r\n * \"columns\": {\r\n * \"fillModifier\": {\r\n * \"type\": \"LinearGradientModifier\",\r\n * \"opacities\": [1, 1, 0],\r\n * \"offsets\": [0, 0.8, 1]\r\n * }\r\n * }\r\n * }]\r\n * ```\r\n */\r\nvar RadialGradientModifier = /** @class */ (function (_super) {\r\n __extends(RadialGradientModifier, _super);\r\n /**\r\n * Constructor.\r\n */\r\n function RadialGradientModifier() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"RadialGradientModifier\";\r\n _this.gradient = new RadialGradient();\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n RadialGradientModifier.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.gradient = source.gradient.clone();\r\n };\r\n return RadialGradientModifier;\r\n}(GradientModifier));\r\nexport { RadialGradientModifier };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"RadialGradientModifier\"] = RadialGradientModifier;\r\n//# sourceMappingURL=RadialGradientModifier.js.map","import { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Pattern } from \"./Pattern\";\r\nimport { registry } from \"../../Registry\";\r\nimport * as $path from \"../../rendering/Path\";\r\n;\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Line pattern.\r\n */\r\nvar LinePattern = /** @class */ (function (_super) {\r\n __extends(LinePattern, _super);\r\n /**\r\n * Constructor\r\n */\r\n function LinePattern() {\r\n var _this = _super.call(this) || this;\r\n _this.properties[\"gap\"] = 0;\r\n _this._line = _this.paper.add(\"path\");\r\n _this.addElement(_this._line);\r\n return _this;\r\n }\r\n /**\r\n * Draws the pattern.\r\n */\r\n LinePattern.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n if (Math.round(this.rotation / 90) != this.rotation / 90) {\r\n this.properties[\"shapeRendering\"] = \"auto\";\r\n }\r\n if (this._line) {\r\n var w = this.width;\r\n var h = this.height;\r\n var path = \"\";\r\n if (!this.gap) {\r\n if (Math.round(this.rotation / 90) != this.rotation / 90) {\r\n path = $path.moveTo({ x: -w, y: h / 2 }) + $path.lineTo({ x: w * 2, y: h / 2 });\r\n this.properties[\"rotationX\"] = this.width / 2;\r\n this.properties[\"rotationY\"] = this.height / 2;\r\n }\r\n else {\r\n path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: w, y: 0 });\r\n }\r\n }\r\n else {\r\n var step = this.gap + this.strokeWidth;\r\n var count = this.height / step;\r\n for (var i = -count / 2; i < count * 1.5; i++) {\r\n if (Math.round(this.rotation / 90) != this.rotation / 90) {\r\n path += $path.moveTo({ x: -w, y: (i + 0.5) * step }) + $path.lineTo({ x: w * 2, y: (i + 0.5) * step });\r\n this.properties[\"rotationX\"] = this.width / 2;\r\n this.properties[\"rotationY\"] = this.height / 2;\r\n }\r\n else {\r\n path += $path.moveTo({ x: -w, y: i * step }) + $path.lineTo({ x: w * 2, y: i * step });\r\n }\r\n }\r\n }\r\n this._line.attr({ \"d\": path });\r\n }\r\n };\r\n Object.defineProperty(LinePattern.prototype, \"gap\", {\r\n /**\r\n * @return gap\r\n */\r\n get: function () {\r\n return this.properties[\"gap\"];\r\n },\r\n /**\r\n * Number of pixels between pattern lines.\r\n *\r\n * The pattern will automatically draw required number of lines to fill\r\n * pattern area maintaining `gap` distance between them.\r\n *\r\n * 0 (zero) means only single line will be drawn.\r\n *\r\n * @default 0\r\n * @since 4.7.7\r\n */\r\n set: function (value) {\r\n this.properties[\"gap\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return LinePattern;\r\n}(Pattern));\r\nexport { LinePattern };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"LinePattern\"] = LinePattern;\r\n//# sourceMappingURL=LinePattern.js.map","/**\r\n * Rectangular pattern module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Pattern } from \"./Pattern\";\r\nimport { registry } from \"../../Registry\";\r\n;\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Circular pattern\r\n */\r\nvar CirclePattern = /** @class */ (function (_super) {\r\n __extends(CirclePattern, _super);\r\n /**\r\n * Constructor\r\n */\r\n function CirclePattern() {\r\n var _this = _super.call(this) || this;\r\n _this.properties[\"radius\"] = 2;\r\n _this._circle = _this.paper.add(\"circle\");\r\n _this.addElement(_this._circle);\r\n _this.shapeRendering = \"auto\";\r\n return _this;\r\n }\r\n /**\r\n * Draws the circle element.\r\n */\r\n CirclePattern.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n if (this._circle) {\r\n this._circle.attr({ \"r\": this.radius, \"cx\": this.width / 2, \"cy\": this.height / 2 });\r\n }\r\n };\r\n Object.defineProperty(CirclePattern.prototype, \"radius\", {\r\n /**\r\n * @return Radius (px)\r\n */\r\n get: function () {\r\n return this.properties[\"radius\"];\r\n },\r\n /**\r\n * Circle radius in pixels.\r\n *\r\n * @param value Radius (px)\r\n */\r\n set: function (value) {\r\n this.properties[\"radius\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return CirclePattern;\r\n}(Pattern));\r\nexport { CirclePattern };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"CirclePattern\"] = CirclePattern;\r\n//# sourceMappingURL=CirclePattern.js.map","/**\r\n * Rectangular pattern module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Pattern } from \"./Pattern\";\r\nimport { registry } from \"../../Registry\";\r\n;\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Rectangular pattern\r\n */\r\nvar RectPattern = /** @class */ (function (_super) {\r\n __extends(RectPattern, _super);\r\n /**\r\n * Constructor\r\n */\r\n function RectPattern() {\r\n var _this = _super.call(this) || this;\r\n _this.rectHeight = 1;\r\n _this.rectWidth = 1;\r\n _this._rect = _this.paper.add(\"rect\");\r\n _this.addElement(_this._rect);\r\n return _this;\r\n }\r\n /**\r\n * Draws the rectangular element.\r\n */\r\n RectPattern.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n this.properties[\"rotationX\"] = this.width / 2;\r\n this.properties[\"rotationY\"] = this.height / 2;\r\n if (this._rect) {\r\n this._rect.attr({ \"width\": this.rectWidth, \"height\": this.rectHeight, \"x\": (this.width - this.rectWidth) / 2, \"y\": (this.height - this.rectHeight) / 2 });\r\n }\r\n };\r\n Object.defineProperty(RectPattern.prototype, \"rectWidth\", {\r\n /**\r\n * @return Width (px)\r\n */\r\n get: function () {\r\n return this.properties[\"rectWidth\"];\r\n },\r\n /**\r\n * Rectangle width in pixels.\r\n *\r\n * @param value Width (px)\r\n */\r\n set: function (value) {\r\n this.properties[\"rectWidth\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RectPattern.prototype, \"rectHeight\", {\r\n /**\r\n * @return Height (px)\r\n */\r\n get: function () {\r\n return this.properties[\"rectHeight\"];\r\n },\r\n /**\r\n * Rectangle height in pixels.\r\n *\r\n * @param value Height (px)\r\n */\r\n set: function (value) {\r\n this.properties[\"rectHeight\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return RectPattern;\r\n}(Pattern));\r\nexport { RectPattern };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"RectPattern\"] = RectPattern;\r\n//# sourceMappingURL=RectPattern.js.map","/**\r\n * Module for \"Colorize\" filter.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Filter } from \"./Filter\";\r\nimport { registry } from \"../../Registry\";\r\n;\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a \"Colorize\" filter.\r\n */\r\nvar ColorizeFilter = /** @class */ (function (_super) {\r\n __extends(ColorizeFilter, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ColorizeFilter() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ColorizeFilter\";\r\n // Create elements\r\n // NOTE: we do not need to add each individual element to `_disposers`\r\n // because `filterPrimitives` has an event handler which automatically adds\r\n // anything added to it to `_disposers`\r\n _this.feColorMatrix = _this.paper.add(\"feColorMatrix\");\r\n _this.feColorMatrix.attr({ \"type\": \"matrix\" });\r\n //this.feColorMatrix.setAttribute(\"in\", \"SourceAlpha\");\r\n _this.filterPrimitives.push(_this.feColorMatrix);\r\n // Set default properties\r\n _this.intensity = 1;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * (Re)applies colors to the already existing filter by modifying filyer's\r\n * color matrix element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ColorizeFilter.prototype.applyFilter = function () {\r\n var i = this.intensity;\r\n var ii = 1 - i;\r\n var r;\r\n var g;\r\n var b;\r\n var color = this.color;\r\n if (color && color.rgb) {\r\n r = color.rgb.r / 255 * i;\r\n g = color.rgb.g / 255 * i;\r\n b = color.rgb.b / 255 * i;\r\n }\r\n else {\r\n r = 0;\r\n g = 0;\r\n b = 0;\r\n }\r\n this.feColorMatrix.attr({ \"values\": ii + \" 0 0 0 \" + r + \" 0 \" + ii + \" 0 0 \" + g + \" 0 0 \" + ii + \" 0 \" + b + \" 0 0 0 1 0\" });\r\n };\r\n Object.defineProperty(ColorizeFilter.prototype, \"color\", {\r\n /**\r\n * @return Color\r\n */\r\n get: function () {\r\n return this.properties[\"color\"];\r\n },\r\n /**\r\n * Target color to apply to the element.\r\n *\r\n * Depending on the `intensity`, all colors of the target element will steer\r\n * towards this color.\r\n *\r\n * E.g. setting to `am4core.color(\"greener\")` will make all colors greener.\r\n *\r\n * @param value Color\r\n */\r\n set: function (value) {\r\n this.properties[\"color\"] = value;\r\n this.applyFilter();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ColorizeFilter.prototype, \"intensity\", {\r\n /**\r\n * @return Intensity (0-1)\r\n */\r\n get: function () {\r\n return this.properties.intensity;\r\n },\r\n /**\r\n * Intensity of the color (0-1).\r\n *\r\n * The bigger the number the more of a `color` target's colors will become.\r\n *\r\n * 0 means the colors will remain as they are.\r\n * 1 means all colors will become the target `color`.\r\n *\r\n * @default 1\r\n * @param value Intensity (0-1)\r\n */\r\n set: function (value) {\r\n this.properties.intensity = value;\r\n this.applyFilter();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ColorizeFilter;\r\n}(Filter));\r\nexport { ColorizeFilter };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ColorizeFilter\"] = ColorizeFilter;\r\n//# sourceMappingURL=ColorizeFilter.js.map","/**\r\n * Module for \"Blur\" filter.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Filter } from \"./Filter\";\r\nimport { registry } from \"../../Registry\";\r\n;\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a \"Blur\" filter.\r\n */\r\nvar BlurFilter = /** @class */ (function (_super) {\r\n __extends(BlurFilter, _super);\r\n /**\r\n * Constructor\r\n */\r\n function BlurFilter() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"BlurFilter\";\r\n // Create elements\r\n // NOTE: we do not need to add each individual element to `_disposers`\r\n // because `filterPrimitives` has an event handler which automatically adds\r\n // anything added to it to `_disposers`\r\n _this.feGaussianBlur = _this.paper.add(\"feGaussianBlur\");\r\n _this.feGaussianBlur.attr({ \"result\": \"blurOut\", \"in\": \"SourceGraphic\" });\r\n _this.filterPrimitives.push(_this.feGaussianBlur);\r\n // Set default properties\r\n _this.width = 200;\r\n _this.height = 200;\r\n _this.blur = 1.5;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(BlurFilter.prototype, \"blur\", {\r\n /**\r\n * @return Blur\r\n */\r\n get: function () {\r\n return this.properties.blur;\r\n },\r\n /**\r\n * Blur value.\r\n *\r\n * The bigger the value, the blurrier the target element will become.\r\n *\r\n * @default 1.5\r\n * @param value Blur\r\n */\r\n set: function (value) {\r\n this.properties.blur = value;\r\n this.feGaussianBlur.attr({ \"stdDeviation\": value / this.scale });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return BlurFilter;\r\n}(Filter));\r\nexport { BlurFilter };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"BlurFilter\"] = BlurFilter;\r\n//# sourceMappingURL=BlurFilter.js.map","/**\r\n * Module for \"Focus\" filter.\r\n */\r\nimport { __extends } from \"tslib\";\r\nimport { Filter } from \"./Filter\";\r\nimport { InterfaceColorSet } from \"../../utils/InterfaceColorSet\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a \"Focus\" filter.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/accessibility/} more about accessibility\r\n * @see {@link https://www.amcharts.com/docs/v4/tutorials/changing-appearance-of-focused-items/} cusomizing focus appearance\r\n */\r\nvar FocusFilter = /** @class */ (function (_super) {\r\n __extends(FocusFilter, _super);\r\n /**\r\n * Constructor\r\n */\r\n function FocusFilter() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"FocusFilter\";\r\n // Create elements\r\n // NOTE: we do not need to add each individual element to `_disposers`\r\n // because `filterPrimitives` has an event handler which automatically adds\r\n // anything added to it to `_disposers`\r\n _this.feFlood = _this.paper.add(\"feFlood\");\r\n _this.feFlood.attr({ \"flood-color\": new InterfaceColorSet().getFor(\"primaryButtonHover\"), \"result\": \"base\" });\r\n _this.filterPrimitives.push(_this.feFlood);\r\n _this.feMorphology = _this.paper.add(\"feMorphology\");\r\n _this.feMorphology.attr({ \"result\": \"bigger\", \"in\": \"SourceGraphic\", \"operator\": \"dilate\", \"radius\": \"2\" });\r\n _this.filterPrimitives.push(_this.feMorphology);\r\n _this.feColorMatrix = _this.paper.add(\"feColorMatrix\");\r\n _this.feColorMatrix.attr({ \"result\": \"mask\", \"in\": \"bigger\", \"type\": \"matrix\", \"values\": \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0\" });\r\n _this.filterPrimitives.push(_this.feColorMatrix);\r\n _this.feComposite = _this.paper.add(\"feComposite\");\r\n _this.feComposite.attr({ \"result\": \"drop\", \"in\": \"base\", \"in2\": \"mask\", \"operator\": \"in\" });\r\n _this.filterPrimitives.push(_this.feComposite);\r\n _this.feBlend = _this.paper.add(\"feBlend\");\r\n _this.feBlend.attr({ \"in\": \"SourceGraphic\", \"in2\": \"drop\", \"mode\": \"normal\" });\r\n _this.filterPrimitives.push(_this.feBlend);\r\n // Set default properties\r\n _this.width = 130;\r\n _this.height = 130;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(FocusFilter.prototype, \"stroke\", {\r\n /**\r\n * @return Color\r\n */\r\n get: function () {\r\n return this.properties[\"stroke\"];\r\n },\r\n /**\r\n * Stroke (outline) color.\r\n *\r\n * @param value Color\r\n */\r\n set: function (value) {\r\n this.properties[\"stroke\"] = value;\r\n this.feFlood.attr({ \"flood-color\": value });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FocusFilter.prototype, \"strokeWidth\", {\r\n /**\r\n * @return Outline thickness (px)\r\n */\r\n get: function () {\r\n return this.properties[\"strokeWidth\"];\r\n },\r\n /**\r\n * Stroke (outline) thickness in pixels.\r\n *\r\n * @param value Outline thickness (px)\r\n */\r\n set: function (value) {\r\n this.properties[\"strokeWidth\"] = value;\r\n this.feMorphology.attr({ \"radius\": value });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FocusFilter.prototype, \"opacity\", {\r\n /**\r\n * @return Outline opacity (0-1)\r\n */\r\n get: function () {\r\n return this.properties[\"opacity\"];\r\n },\r\n /**\r\n * Opacity of the outline. (0-1)\r\n *\r\n * @param value Outline opacity (0-1)\r\n */\r\n set: function (value) {\r\n this.properties[\"opacity\"] = value;\r\n this.feColorMatrix.attr({ \"values\": \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \" + value + \" 0\" });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets filter's target element.\r\n *\r\n * In addition it also disables built-in focus outline on element this\r\n * filter is applied to.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Element filter is being attached to\r\n */\r\n FocusFilter.prototype.setSprite = function (value) {\r\n if (this._sprite && this._sprite != value) {\r\n this._sprite.group.removeStyle(\"outline\");\r\n }\r\n value.group.addStyle({\r\n \"outline\": \"none\"\r\n });\r\n _super.prototype.setSprite.call(this, value);\r\n };\r\n return FocusFilter;\r\n}(Filter));\r\nexport { FocusFilter };\r\n//# sourceMappingURL=FocusFilter.js.map","/**\r\n * This module contains PatternSet object definition\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../Base\";\r\nimport { Color } from \"./Color\";\r\nimport { InterfaceColorSet } from \"./InterfaceColorSet\";\r\nimport { LinePattern } from \"../rendering/fills/LinePattern\";\r\nimport { RectPattern } from \"../rendering/fills/RectPattern\";\r\nimport { CirclePattern } from \"../rendering/fills/CirclePattern\";\r\nimport { registry } from \"../Registry\";\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines an interable list of distinctive patterns that can be used in\r\n * conjunction to colors to generate various fill patterns.\r\n *\r\n * @important\r\n * @since 4.7.5\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/colors/} for color-related info\r\n */\r\nvar PatternSet = /** @class */ (function (_super) {\r\n __extends(PatternSet, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PatternSet() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Holds the list of the colors in this set. (preset or auto-generated)\r\n */\r\n _this._list = [];\r\n /**\r\n * Current step.\r\n */\r\n _this._currentStep = 0;\r\n /**\r\n * If set to non-zero value, the PatternSet will start iterating patterns from\r\n * that particular index, not the first pattern in the list.\r\n */\r\n _this._startIndex = 0;\r\n /**\r\n * Current pass in cycle. Once all patterns in the list are iterated,\r\n * iteration restarts from beginning and currentPass is incremented.\r\n */\r\n _this._currentPass = 0;\r\n /**\r\n * A base color. If there are no colors pre-set in the color list, ColorSet\r\n * will use this color as a base when generating new ones, applying\r\n * `stepOptions` and `passOptions` to this base color.\r\n */\r\n _this.baseColor = new Color({\r\n r: 103,\r\n g: 183,\r\n b: 220\r\n });\r\n _this.className = \"PatternSet\";\r\n // Set base color to be used for pattern elements\r\n var interfaceColors = new InterfaceColorSet();\r\n // Set default patterns\r\n _this.list = [\r\n _this.getLinePattern(1000, 45, 1, 6),\r\n _this.getRectPattern(10, 0, 4),\r\n _this.getLinePattern(1000, -45, 1, 6),\r\n _this.getCirclePattern(11, 2, true),\r\n _this.getLinePattern(6, 90, 1),\r\n _this.getRectPattern(12, 45, 6, true),\r\n _this.getLinePattern(6, 0, 1),\r\n _this.getRectPattern(7, 0, 4),\r\n _this.getLinePattern(1000, 45, 2, 3, \"4,2\"),\r\n _this.getCirclePattern(9, 3, false),\r\n _this.getLinePattern(1000, -45, 2, 3, \"4,2\"),\r\n _this.getRectPattern(10, 45, Math.sqrt(50)),\r\n _this.getLinePattern(1000, -45, 2, 1),\r\n _this.getRectPattern(10, 0, 9),\r\n _this.getLinePattern(1000, 45, 2, 1),\r\n _this.getLinePattern(1000, 0, 3, 1),\r\n _this.getRectPattern(10, 45, 10),\r\n _this.getLinePattern(1000, 90, 3, 1)\r\n ];\r\n _this.baseColor = interfaceColors.getFor(\"stroke\");\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n PatternSet.prototype.getLinePattern = function (size, rotation, thickness, gap, strokeDashArray) {\r\n var pattern = new LinePattern();\r\n pattern.width = size;\r\n pattern.height = size;\r\n pattern.stroke = this.baseColor;\r\n pattern.gap = gap;\r\n pattern.strokeDasharray = strokeDashArray;\r\n pattern.strokeWidth = thickness;\r\n pattern.rotation = rotation;\r\n return pattern;\r\n };\r\n PatternSet.prototype.getRectPattern = function (size, rotation, thickness, outline) {\r\n var pattern = new RectPattern();\r\n pattern.width = size;\r\n pattern.height = size;\r\n pattern.rectWidth = thickness;\r\n pattern.rectHeight = thickness;\r\n if (outline) {\r\n pattern.stroke = this.baseColor;\r\n pattern.strokeWidth = 1;\r\n pattern.fillOpacity = 0;\r\n }\r\n else {\r\n pattern.fill = this.baseColor;\r\n pattern.strokeWidth = 0;\r\n }\r\n if (rotation != 0) {\r\n pattern.shapeRendering = \"auto\";\r\n }\r\n pattern.rotation = rotation;\r\n return pattern;\r\n };\r\n PatternSet.prototype.getCirclePattern = function (size, radius, outline) {\r\n var pattern = new CirclePattern();\r\n pattern.width = size;\r\n pattern.height = size;\r\n pattern.shapeRendering = \"auto\";\r\n pattern.radius = radius;\r\n if (outline) {\r\n pattern.stroke = this.baseColor;\r\n pattern.strokeWidth = 1;\r\n pattern.fillOpacity = 0;\r\n }\r\n else {\r\n pattern.fill = this.baseColor;\r\n pattern.strokeWidth = 0;\r\n }\r\n return pattern;\r\n };\r\n Object.defineProperty(PatternSet.prototype, \"list\", {\r\n /**\r\n * @return Pattern list\r\n */\r\n get: function () {\r\n return this._list;\r\n },\r\n /**\r\n * List of pre-defined patterns to be used in set.\r\n *\r\n * @param value Pattern list\r\n */\r\n set: function (value) {\r\n this._list = value;\r\n this.reset();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns the next pattern in list.\r\n *\r\n * @return Pattern\r\n */\r\n PatternSet.prototype.next = function () {\r\n var pattern = this.getIndex(this.currentStep);\r\n this._currentStep++;\r\n return pattern;\r\n };\r\n /**\r\n * Returns a color at specific index in the list.\r\n *\r\n * @param i Index\r\n * @return Pattern\r\n */\r\n PatternSet.prototype.getIndex = function (i) {\r\n var pattern;\r\n while (this.list.length <= i) {\r\n this.generatePatterns();\r\n }\r\n pattern = this.list[i];\r\n return pattern.clone();\r\n };\r\n /**\r\n * Generates a new set of patterns.\r\n */\r\n PatternSet.prototype.generatePatterns = function () {\r\n var count = this.list.length / (this._currentPass + 1);\r\n this._currentPass++;\r\n for (var i = 0; i < count; i++) {\r\n this.list.push(this.list[i].clone());\r\n }\r\n };\r\n /**\r\n * Resets internal iterator.\r\n *\r\n * Calling `next()` after this will return the very first color in the color\r\n * list, even if it was already returned before.\r\n */\r\n PatternSet.prototype.reset = function () {\r\n this._currentStep = this._startIndex;\r\n };\r\n Object.defineProperty(PatternSet.prototype, \"currentStep\", {\r\n /**\r\n * @return Step\r\n */\r\n get: function () {\r\n return this._currentStep;\r\n },\r\n /**\r\n * Sets current color iteration. You can use this property to skip some\r\n * colors from iteration. E.g. setting it to `10` will skip first ten\r\n * colors.\r\n *\r\n * Please note that the number is zero-based.\r\n *\r\n * @param value Step\r\n */\r\n set: function (value) {\r\n this._currentStep = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PatternSet.prototype, \"startIndex\", {\r\n /**\r\n * @return Index\r\n */\r\n get: function () {\r\n return this._startIndex;\r\n },\r\n /**\r\n * If set to non-zero value, the ColorSet will start iterating colors from\r\n * that particular index, not the first color in the list.\r\n *\r\n * @default 0\r\n * @param value Index\r\n */\r\n set: function (value) {\r\n this._startIndex = value;\r\n this.reset();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n PatternSet.prototype.processConfig = function (config) {\r\n // if (config) {\r\n // \t// Set up axis ranges\r\n // \tif ($type.hasValue(config.list) && $type.isArray(config.list)) {\r\n // \t\tfor (let i = 0, len = config.list.length; i < len; i++) {\r\n // \t\t\tif (!(config.list[i] instanceof Color)) {\r\n // \t\t\t\tconfig.list[i] = color(config.list[i]);\r\n // \t\t\t}\r\n // \t\t}\r\n // \t}\r\n // }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n return PatternSet;\r\n}(BaseObject));\r\nexport { PatternSet };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"PatternSet\"] = PatternSet;\r\n//# sourceMappingURL=PatternSet.js.map","/**\r\n * A plugin base class.\r\n */\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * This is a base class that provides core functionality for plugins.\r\n *\r\n * The easiest way to start off with a new plugin is to extend this class.\r\n *\r\n * It will provide all the mandatory functionality, such as disposers.\r\n *\r\n * @since 4.2.2\r\n */\r\nvar Plugin = /** @class */ (function () {\r\n /**\r\n * Constructor\r\n */\r\n function Plugin() {\r\n /**\r\n * Is this object disposed?\r\n */\r\n this._disposed = false;\r\n /**\r\n * List of IDisposer which will be disposed when the BaseObject is disposed.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n this._disposers = [];\r\n // Nothing to do here\r\n }\r\n /**\r\n * Decorates series with required events and adapters used to hijack its\r\n * data.\r\n */\r\n Plugin.prototype.init = function () {\r\n // Does nothing\r\n // Override it\r\n };\r\n /**\r\n * Returns if this element is already disposed.\r\n *\r\n * @return Is disposed?\r\n */\r\n Plugin.prototype.isDisposed = function () {\r\n return this._disposed;\r\n };\r\n /**\r\n * Disposes this object and related stuff.\r\n */\r\n Plugin.prototype.dispose = function () {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n var a = this._disposers;\r\n this._disposers = null;\r\n while (a.length !== 0) {\r\n var disposer = a.shift();\r\n disposer.dispose();\r\n }\r\n }\r\n };\r\n return Plugin;\r\n}());\r\nexport { Plugin };\r\n//# sourceMappingURL=Plugin.js.map","/**\r\n * AmChartsLogo module.\r\n *\r\n * AmChartsLogo shows amCharts logo for non-commercial users of a library.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../Container\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { Polyspline } from \"./Polyspline\";\r\nimport { color } from \"../utils/Color\";\r\nimport { LinearGradient } from \"../rendering/fills/LinearGradient\";\r\nimport { DesaturateFilter } from \"../rendering/filters/DesaturateFilter\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A class used to draw and display progress indicator.\r\n *\r\n * @see {@link IAmChartsLogoEvents} for a list of available events\r\n * @see {@link IAmChartsLogoAdapters} for a list of available Adapters\r\n * @ignore Exclude from docs\r\n */\r\nvar AmChartsLogo = /** @class */ (function (_super) {\r\n __extends(AmChartsLogo, _super);\r\n /**\r\n * Constructor\r\n */\r\n function AmChartsLogo() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"AmChartsLogo\";\r\n _this.valign = \"bottom\";\r\n var d = 0.3;\r\n _this.opacity = 0.3;\r\n _this.defaultState.properties.opacity = 0.4;\r\n _this.url = \"https://www.amcharts.com/\";\r\n _this.urlTarget = \"_blank\";\r\n _this.showSystemTooltip = true;\r\n _this.readerTitle = \"Chart created using amCharts library\";\r\n _this.width = 220 * d;\r\n _this.height = 70 * d;\r\n _this.background.opacity = 0;\r\n var aColor = color(\"#474758\");\r\n if (new InterfaceColorSet().getFor(\"background\").alternative.hex == \"#ffffff\") {\r\n aColor = color(\"#ffffff\");\r\n }\r\n var aGradient = new LinearGradient();\r\n aGradient.addColor(aColor);\r\n aGradient.addColor(aColor, 1, 0.75);\r\n aGradient.addColor(color(\"#3cabff\"), 1, 0.755);\r\n aGradient.rotation = -10;\r\n var aStroke = aGradient;\r\n var m = _this.createChild(Polyspline);\r\n m.shouldClone = false;\r\n m.isMeasured = false;\r\n m.segments = [[{ x: 50 * d, y: 50 * d }, { x: 90 * d, y: 50 * d }, { x: 120 * d, y: 20 * d }, { x: 135 * d, y: 35 * d }, { x: 150 * d, y: 20 * d }, { x: 180 * d, y: 50 * d }, { x: 200 * d, y: 50 * d }]];\r\n m.strokeWidth = 6 * d;\r\n m.tensionX = 0.8;\r\n m.tensionY = 1;\r\n m.stroke = color(\"#3cabff\");\r\n var a = _this.createChild(Polyspline);\r\n a.shouldClone = false;\r\n a.isMeasured = false;\r\n a.segments = [[{ x: 20 * d, y: 50 * d }, { x: 50 * d, y: 50 * d }, { x: 90 * d, y: 12 * d }, { x: 133 * d, y: 50 * d }, { x: 170 * d, y: 50 * d }, { x: 200 * d, y: 50 * d }]];\r\n a.strokeWidth = 6 * d;\r\n a.tensionX = 0.75;\r\n a.tensionY = 1;\r\n a.stroke = aStroke;\r\n _this._disposers.push(a);\r\n var desaturateFilter = new DesaturateFilter();\r\n _this.filters.push(desaturateFilter);\r\n var desaturateFilterHover = new DesaturateFilter();\r\n desaturateFilterHover.saturation = 1;\r\n var hoverState = _this.states.create(\"hover\");\r\n hoverState.properties.opacity = 1;\r\n hoverState.filters.push(desaturateFilterHover);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return AmChartsLogo;\r\n}(Container));\r\nexport { AmChartsLogo };\r\n//# sourceMappingURL=AmChartsLogo.js.map","import { __read, __spread } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { system } from \"../System\";\r\nimport { registry } from \"../Registry\";\r\nimport { Container } from \"../Container\";\r\nimport { Component } from \"../Component\";\r\nimport { Paper } from \"../rendering/Paper\";\r\nimport { SVGContainer, svgContainers } from \"../rendering/SVGContainer\";\r\nimport { FocusFilter } from \"../rendering/filters/FocusFilter\";\r\nimport { Preloader } from \"../elements/Preloader\";\r\nimport { AmChartsLogo } from \"../elements/AmChartsLogo\";\r\nimport { Tooltip } from \"../elements/Tooltip\";\r\nimport { Disposer, MultiDisposer } from \"../utils/Disposer\";\r\nimport { percent } from \"./Percent\";\r\nimport { options } from \"../Options\";\r\nimport * as $array from \"./Array\";\r\nimport * as $type from \"./Type\";\r\nimport * as $dom from \"./DOM\";\r\nimport * as $utils from \"./Utils\";\r\nimport * as $log from \"./Log\";\r\n/**\r\n * ============================================================================\r\n * INSTANTIATION FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates all HTML and SVG containers needed for the chart instance, as well\r\n * as the new [[Sprite]] (as specified in `classType` parameter).\r\n *\r\n * @param htmlElement A container to creat elements in\r\n * @param classType A class definition of the new element to create\r\n * @return Newly-created Sprite object\r\n */\r\nfunction createChild(htmlElement, classType) {\r\n var htmlContainer = $dom.getElement(htmlElement);\r\n // If there's no container available yet, we create a fake one\r\n var tmpContainer = false;\r\n if (!htmlContainer) {\r\n htmlContainer = document.createElement(\"div\");\r\n htmlContainer.style.width = \"200px\";\r\n htmlContainer.style.height = \"200px\";\r\n htmlContainer.style.top = \"0\";\r\n htmlContainer.style.left = \"0\";\r\n htmlContainer.style.visibility = \"hidden\";\r\n htmlContainer.style.position = \"absolute\";\r\n document.body.appendChild(htmlContainer);\r\n tmpContainer = true;\r\n }\r\n if (htmlContainer) {\r\n htmlContainer.innerHTML = \"\";\r\n //htmlContainer.style.overflow = \"hidden\";\r\n var svgDiv_1 = new SVGContainer(htmlContainer);\r\n var paper = new Paper(svgDiv_1.SVGContainer, \"svg-\" + (svgContainers.length - 1));\r\n // the approach with masks is chosen because overflow:visible is set on SVG element in order tooltips could go outside\r\n // svg area - this is often needed when working with small charts.\r\n // main container which holds content container and tooltips container\r\n var container_1 = new Container();\r\n container_1.htmlContainer = htmlContainer;\r\n container_1.svgContainer = svgDiv_1;\r\n container_1.width = percent(100);\r\n container_1.height = percent(100);\r\n container_1.background.fillOpacity = 0;\r\n container_1.paper = paper;\r\n paper.append(container_1.group);\r\n // Set up moving to proper element container if it's not yet ready at call time\r\n if (tmpContainer) {\r\n $dom.ready(function () {\r\n container_1.moveHtmlContainer(htmlElement);\r\n });\r\n }\r\n // this is set from parent container, but this one doesn't have, so do it manually.\r\n container_1.relativeWidth = 1;\r\n container_1.relativeHeight = 1;\r\n svgDiv_1.container = container_1;\r\n // creating classType instance\r\n var sprite_1 = container_1.createChild(classType);\r\n sprite_1.topParent = container_1;\r\n var uid = sprite_1.uid;\r\n registry.invalidSprites[uid] = [];\r\n registry.invalidDatas[uid] = [];\r\n registry.invalidPositions[uid] = [];\r\n registry.invalidLayouts[uid] = [];\r\n container_1.baseId = uid;\r\n sprite_1.isBaseSprite = true;\r\n sprite_1.focusFilter = new FocusFilter();\r\n registry.baseSprites.push(sprite_1);\r\n registry.baseSpritesByUid[uid] = sprite_1;\r\n sprite_1.maskRectangle = { x: 0, y: 0, width: Math.max(svgDiv_1.width || 0, 0), height: Math.max(svgDiv_1.height || 0, 0) };\r\n // this solves issues with display:none, as all children are measured as 0x0\r\n container_1.events.on(\"maxsizechanged\", function (event) {\r\n if (event.previousWidth == 0 || event.previousHeight == 0) {\r\n container_1.deepInvalidate();\r\n }\r\n if (sprite_1.maskRectangle) {\r\n sprite_1.maskRectangle = { x: 0, y: 0, width: Math.max(svgDiv_1.width || 0, 0), height: Math.max(svgDiv_1.height || 0, 0) };\r\n }\r\n });\r\n var loopTimer_1 = null;\r\n // Checks to see whether the chart was properly disposed or not\r\n var loop_1 = function () {\r\n if (!sprite_1.isDisposed()) {\r\n if ($dom.getRoot(sprite_1.dom) == null) {\r\n if (options.autoDispose) {\r\n container_1.htmlContainer = undefined;\r\n svgDiv_1.htmlElement = undefined;\r\n sprite_1.dispose();\r\n }\r\n else {\r\n $log.warn(\"Chart was not disposed\", sprite_1.uid);\r\n }\r\n loopTimer_1 = null;\r\n }\r\n else {\r\n loopTimer_1 = window.setTimeout(loop_1, 1000);\r\n }\r\n }\r\n else {\r\n loopTimer_1 = null;\r\n }\r\n };\r\n loop_1();\r\n sprite_1.addDisposer(new Disposer(function () {\r\n if (loopTimer_1 !== null) {\r\n clearTimeout(loopTimer_1);\r\n }\r\n $array.remove(registry.baseSprites, sprite_1);\r\n registry.baseSpritesByUid[sprite_1.uid] = undefined;\r\n }));\r\n // TODO figure out a better way of doing this\r\n sprite_1.addDisposer(container_1);\r\n // tooltip container\r\n var tooltipContainer_1 = container_1.createChild(Container);\r\n tooltipContainer_1.topParent = container_1;\r\n tooltipContainer_1.width = percent(100);\r\n tooltipContainer_1.height = percent(100);\r\n tooltipContainer_1.isMeasured = false;\r\n container_1.tooltipContainer = tooltipContainer_1;\r\n sprite_1.tooltip = new Tooltip();\r\n sprite_1.tooltip.hide(0);\r\n sprite_1.tooltip.setBounds({ x: 0, y: 0, width: tooltipContainer_1.maxWidth, height: tooltipContainer_1.maxHeight });\r\n tooltipContainer_1.events.on(\"maxsizechanged\", function () {\r\n $type.getValue(sprite_1.tooltip).setBounds({ x: 0, y: 0, width: tooltipContainer_1.maxWidth, height: tooltipContainer_1.maxHeight });\r\n }, undefined, false);\r\n //@todo: maybe we don't need to create one by default but only on request?\r\n var preloader_1 = new Preloader();\r\n preloader_1.events.on(\"inited\", function () {\r\n preloader_1.__disabled = true;\r\n }, undefined, false);\r\n container_1.preloader = preloader_1;\r\n //if (!options.commercialLicense) {\r\n if (sprite_1 instanceof Container && !sprite_1.hasLicense()) {\r\n var logo_1 = tooltipContainer_1.createChild(AmChartsLogo);\r\n tooltipContainer_1.events.on(\"maxsizechanged\", function (ev) {\r\n if ((tooltipContainer_1.maxWidth <= 100) || (tooltipContainer_1.maxHeight <= 50)) {\r\n logo_1.hide();\r\n }\r\n else if (logo_1.isHidden || logo_1.isHiding) {\r\n logo_1.show();\r\n }\r\n }, undefined, false);\r\n sprite_1.logo = logo_1;\r\n logo_1.align = \"left\";\r\n logo_1.valign = \"bottom\";\r\n }\r\n $utils.used(sprite_1.numberFormatter); // need to create one.\r\n // Set this as an autonomouse instance\r\n // Controls like Preloader, Export will use this.\r\n container_1.isStandaloneInstance = true;\r\n if (options.onlyShowOnViewport) {\r\n if (!$dom.isElementInViewport(htmlContainer, options.viewportTarget)) {\r\n sprite_1.__disabled = true;\r\n sprite_1.tooltipContainer.__disabled = true;\r\n var disposers = [\r\n $dom.addEventListener(window, \"DOMContentLoaded\", function () { viewPortHandler(sprite_1); }),\r\n $dom.addEventListener(window, \"load\", function () { viewPortHandler(sprite_1); }),\r\n $dom.addEventListener(window, \"resize\", function () { viewPortHandler(sprite_1); }),\r\n $dom.addEventListener(window, \"scroll\", function () { viewPortHandler(sprite_1); })\r\n ];\r\n if (options.viewportTarget) {\r\n var targets = $type.isArray(options.viewportTarget) ? options.viewportTarget : options.viewportTarget ? [options.viewportTarget] : [];\r\n for (var i = 0; i < targets.length; i++) {\r\n var target = targets[i];\r\n disposers.push($dom.addEventListener(target, \"resize\", function () { viewPortHandler(sprite_1); }));\r\n disposers.push($dom.addEventListener(target, \"scroll\", function () { viewPortHandler(sprite_1); }));\r\n }\r\n }\r\n var disposer = new MultiDisposer(disposers);\r\n sprite_1.addDisposer(disposer);\r\n sprite_1.vpDisposer = disposer;\r\n }\r\n else if (options.queue) {\r\n addToQueue(sprite_1);\r\n }\r\n }\r\n else if (options.queue) {\r\n addToQueue(sprite_1);\r\n }\r\n return sprite_1;\r\n }\r\n else {\r\n system.log(\"html container not found\");\r\n throw new Error(\"html container not found\");\r\n }\r\n}\r\n/**\r\n * Disposes all of the currently active charts.\r\n */\r\nexport function disposeAllCharts() {\r\n while (registry.baseSprites.length !== 0) {\r\n registry.baseSprites.pop().dispose();\r\n }\r\n}\r\nexport function addToQueue(sprite) {\r\n if (registry.queue.indexOf(sprite) == -1) {\r\n sprite.__disabled = true;\r\n sprite.tooltipContainer.__disabled = true;\r\n sprite.events.disableType(\"appeared\");\r\n if (registry.queue.length == 0) {\r\n registry.events.once(\"exitframe\", function () {\r\n queueHandler(sprite);\r\n });\r\n system.requestFrame();\r\n }\r\n sprite.addDisposer(new Disposer(function () {\r\n removeFromQueue(sprite);\r\n }));\r\n registry.queue.push(sprite);\r\n }\r\n}\r\nexport function removeFromQueue(sprite) {\r\n var index = registry.queue.indexOf(sprite);\r\n if (index >= 0) {\r\n registry.queue.splice(registry.queue.indexOf(sprite), 1);\r\n var nextSprite = registry.queue[index];\r\n if (nextSprite) {\r\n queueHandler(nextSprite);\r\n }\r\n }\r\n}\r\n/**\r\n * Checks whether the chart was not initialized fully due to setting\r\n * of `onlyShowOnViewport`. If it hasn't and is now in the viewport\r\n * the chart will be initialized.\r\n *\r\n * @since 4.9.12\r\n * @param sprite Top-level chart object\r\n */\r\nexport function viewPortHandler(sprite) {\r\n if (sprite.__disabled && $dom.isElementInViewport(sprite.htmlContainer, options.viewportTarget)) {\r\n if (sprite.vpDisposer) {\r\n sprite.vpDisposer.dispose();\r\n }\r\n addToQueue(sprite);\r\n }\r\n}\r\nexport function queueHandler(sprite) {\r\n sprite.__disabled = false;\r\n sprite.tooltipContainer.__disabled = false;\r\n sprite.events.enableType(\"appeared\");\r\n sprite.dispatch(\"removedfromqueue\");\r\n if (sprite.showOnInit) {\r\n sprite.events.on(\"appeared\", function () {\r\n removeFromQueue(sprite);\r\n });\r\n }\r\n if (sprite.vpDisposer) {\r\n sprite.vpDisposer.dispose();\r\n }\r\n if (sprite instanceof Container) {\r\n sprite.invalidateLabels();\r\n }\r\n if (sprite.tooltipContainer) {\r\n sprite.tooltipContainer.invalidateLayout();\r\n }\r\n if (sprite instanceof Component) {\r\n sprite.invalidateData();\r\n sprite.reinit();\r\n sprite.events.once(\"datavalidated\", function () {\r\n if (sprite.showOnInit) {\r\n sprite.appear();\r\n }\r\n else {\r\n removeFromQueue(sprite);\r\n }\r\n });\r\n }\r\n else {\r\n sprite.reinit();\r\n sprite.events.once(\"inited\", function () {\r\n removeFromQueue(sprite);\r\n });\r\n if (sprite.showOnInit) {\r\n sprite.appear();\r\n }\r\n }\r\n}\r\n/**\r\n * A shortcut to creating a chart instance.\r\n *\r\n * The first argument is either a reference to or an id of a DOM element to be\r\n * used as a container for the chart.\r\n *\r\n * The second argument is the type reference of the chart type. (for plain\r\n * JavaScript users this can also be a string indicating chart type)\r\n *\r\n * ```TypeScript\r\n * let chart = am4core.create(\"chartdiv\", am4charts.PieChart);\r\n * ```\r\n * ```JavaScript\r\n * // Can pass in chart type reference like this:\r\n * var chart = am4core.create(\"chartdiv\", am4charts.PieChart);\r\n *\r\n * // ... or chart class type as a string:\r\n * var chart = am4core.create(\"chartdiv\", \"PieChart\");\r\n * ```\r\n *\r\n * @param htmlElement Reference or id of the target container element\r\n * @param classType Class type of the target chart type\r\n * @return Chart instance\r\n */\r\nexport function create(htmlElement, classType) {\r\n // This is a nasty hack for the benefit of vanilla JS users, who do not\r\n // enjoy benefits of type-check anyway.\r\n // We're allowing passing in a name of the class rather than type reference\r\n // itself.\r\n var classError;\r\n if ($type.isString(classType)) {\r\n if ($type.hasValue(registry.registeredClasses[classType])) {\r\n classType = registry.registeredClasses[classType];\r\n }\r\n else {\r\n classType = registry.registeredClasses[\"Container\"];\r\n classError = new Error(\"Class [\" + classType + \"] is not loaded.\");\r\n }\r\n }\r\n // Create the chart\r\n var chart = createChild(htmlElement, classType);\r\n // Error?\r\n if (classError) {\r\n chart.raiseCriticalError(classError);\r\n }\r\n return chart;\r\n}\r\n/**\r\n * A shortcut to creating a chart from a config object.\r\n *\r\n * Example:\r\n *\r\n * ```TypeScript\r\n * let chart am4core.createFromConfig({ ... }, \"chartdiv\", am4charts.XYChart );\r\n * ```\r\n * ```JavaScript\r\n * var chart am4core.createFromConfig({ ... }, \"chartdiv\", \"XYChart\" );\r\n * ```\r\n *\r\n * If `chartType` parameter is not supplied it must be set in a config object,\r\n * via reference to chart type, e.g.:\r\n *\r\n * ```TypeScript\r\n * {\r\n * \"type\": am4charts.XYChart,\r\n * // ...\r\n * }\r\n * ```\r\n * ```JavaScript\r\n * {\r\n * \"type\": am4charts.XYChart,\r\n * // ...\r\n * }\r\n * ```\r\n *\r\n * Or via string: (if you are using JavaScript)\r\n *\r\n * ```TypeScript\r\n * {\r\n * \"type\": \"XYChart\",\r\n * // ...\r\n * }\r\n * ```\r\n * ```JavaScript\r\n * {\r\n * \"type\": \"XYChart\",\r\n * // ...\r\n * }\r\n * ```\r\n *\r\n * A `container` can either be a reference to an HTML container to put chart\r\n * in, or it's unique id.\r\n *\r\n * If `container` is not specified, it must be included in the config object:\r\n *\r\n * ```TypeScript\r\n * {\r\n * \"type\": \"XYChart\",\r\n * \"container\": \"chartdiv\",\r\n * // ...\r\n * }\r\n * ```\r\n * ```JavaScript\r\n * {\r\n * \"type\": \"XYChart\",\r\n * \"container\": \"chartdiv\",\r\n * // ...\r\n * }\r\n * ```\r\n *\r\n * @param config Config object in property/value pairs\r\n * @param htmlElement Container reference or ID\r\n * @param objectType Chart type\r\n * @return A newly created chart instance\r\n * @todo Throw exception if type is not correct\r\n */\r\nexport function createFromConfig(config, htmlElement, classType) {\r\n // Extract chart type from config if necessary\r\n if (!$type.hasValue(classType)) {\r\n classType = config.type;\r\n delete config.type;\r\n }\r\n // Extract element from config if necessary\r\n if (!$type.hasValue(htmlElement)) {\r\n htmlElement = config.container;\r\n delete config.container;\r\n }\r\n // Check if we need to extract actual type reference\r\n var finalType;\r\n var classError;\r\n if ($type.isString(classType) && $type.hasValue(registry.registeredClasses[classType])) {\r\n finalType = registry.registeredClasses[classType];\r\n }\r\n else if (typeof classType !== \"function\") {\r\n finalType = Container;\r\n classError = new Error(\"Class [\" + classType + \"] is not loaded.\");\r\n }\r\n else {\r\n finalType = classType;\r\n }\r\n // Create the chart\r\n var chart = createChild(htmlElement, finalType);\r\n // Set config\r\n if (classError) {\r\n chart.raiseCriticalError(classError);\r\n }\r\n else {\r\n chart.config = config;\r\n }\r\n return chart;\r\n}\r\n/**\r\n * Useful in creating real queues form mult-chart creation.\r\n *\r\n * Accepts a reference to a function which crates and returns actual chart\r\n * object.\r\n *\r\n * It returns a `Promise` which you can use to catch chart instance once it's\r\n * created.\r\n *\r\n * ```TypeScript\r\n * am4core.createDeferred(function(div) {\r\n * // Create first chart\r\n * let chart = am4core.create(div, am4charts.XYChart);\r\n * // ...\r\n * return chart;\r\n * }, \"chartdiv1\").then(chart) {\r\n * // `chart` variable holds an instance of the chart\r\n * console.log(\"Chart ready\", chart);\r\n * }\r\n *\r\n * am4core.createDeferred(function(div) {\r\n * // Create second chart\r\n * let chart = am4core.create(div, am4charts.PieChart);\r\n * // ...\r\n * return chart;\r\n * }, \"chartdiv2\").then(chart) {\r\n * // `chart` variable holds an instance of the chart\r\n * console.log(\"Chart ready\", chart);\r\n * }\r\n * ```\r\n * ```JavaScript\r\n * am4core.createDeferred(function(div) {\r\n * // Create first chart\r\n * var chart = am4core.create(div, am4charts.XYChart);\r\n * // ...\r\n * return chart;\r\n * }, \"chartdiv1\").then(chart) {\r\n * // `chart` variable holds an instance of the chart\r\n * console.log(\"Chart ready\", chart);\r\n * }\r\n *\r\n * am4core.createDeferred(function(div) {\r\n * // Create second chart\r\n * var chart = am4core.create(div, am4charts.PieChart);\r\n * // ...\r\n * return chart;\r\n * }, \"chartdiv2\").then(chart) {\r\n * // `chart` variable holds an instance of the chart\r\n * console.log(\"Chart ready\", chart);\r\n * }\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/performance/#Deferred_daisy_chained_instantiation} for more information\r\n * @since 4.10.0\r\n * @param callback Callback function that creates chart\r\n * @param scope Scope to call callback in\r\n * @param ...rest Parameters to pass into callback\r\n * @return Promise with chart instance\r\n */\r\nexport function createDeferred(callback, scope) {\r\n var rest = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n rest[_i - 2] = arguments[_i];\r\n }\r\n return new Promise(function (resolve, reject) {\r\n registry.deferred.push({\r\n scope: scope,\r\n callback: callback,\r\n args: rest,\r\n resolve: resolve\r\n });\r\n if (registry.deferred.length == 1) {\r\n processNextDeferred();\r\n }\r\n });\r\n}\r\nfunction processNextDeferred() {\r\n var _a;\r\n var next = registry.deferred[0];\r\n if (next) {\r\n var sprite_2 = (_a = next.callback).call.apply(_a, __spread([next.scope], next.args));\r\n sprite_2.events.on(\"ready\", function () {\r\n next.resolve(sprite_2);\r\n registry.deferred.shift();\r\n if (options.deferredDelay) {\r\n setTimeout(processNextDeferred, options.deferredDelay);\r\n }\r\n else {\r\n processNextDeferred();\r\n }\r\n });\r\n }\r\n}\r\n/**\r\n * Applies a theme to System, and subsequently all chart instances created\r\n * from that point forward.\r\n *\r\n * amCharts supports multiple themes. Calling `useTheme` multiple times will\r\n * make the System apply multiple themes, rather than overwrite previously\r\n * set one.\r\n *\r\n * This enables combining features from multiple themes on the same chart.\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * am4core.useTheme(am4themes.material);\r\n * am4core.useTheme(am4themes.animated);\r\n * ```\r\n * ```JavaScript\r\n * am4core.useTheme(am4themes.material);\r\n * am4core.useTheme(am4themes.animated);\r\n * ```\r\n *\r\n * The above will apply both the Material color and animation options to all\r\n * charts created.\r\n *\r\n * @param value A reference to a theme\r\n */\r\nexport function useTheme(value) {\r\n if (registry.themes.indexOf(value) === -1) {\r\n registry.themes.push(value);\r\n }\r\n}\r\n/**\r\n * Removes a theme from \"active themes\" list, so it won't get applied to any\r\n * charts created subsequently.\r\n *\r\n * @param value A reference to a theme\r\n */\r\nexport function unuseTheme(value) {\r\n $array.remove(registry.themes, value);\r\n}\r\n/**\r\n * Removes all \"active\" themes. Any charts created subsequently will not have\r\n * any theme applied to them.\r\n */\r\nexport function unuseAllThemes() {\r\n registry.themes = [];\r\n}\r\n/**\r\n * Adds a license, e.g.:\r\n *\r\n * ```TypeScript\r\n * am4core.addLicense(\"xxxxxxxx\");\r\n * ```\r\n * ```JavaScript\r\n * am4core.addLicense(\"xxxxxxxx\");\r\n * ```\r\n *\r\n * Multiple licenses can be added to cover for multiple products.\r\n *\r\n * @since 4.5.16\r\n * @param license License key\r\n */\r\nexport function addLicense(license) {\r\n options.licenses.push(license);\r\n}\r\n//# sourceMappingURL=Instance.js.map","/**\r\n * amCharts 4 locale\r\n *\r\n * Locale: pt_BR\r\n * Language: Brazilian Portuguese\r\n *\r\n * Follow instructions in [on this page](https://www.amcharts.com/docs/v4/tutorials/creating-translations/) to make corrections or add new translations.\r\n */\r\nexport default {\r\n // Number formatting options.\r\n // \r\n // Please check with the local standards which separator is accepted to be\r\n // used for separating decimals, and which for thousands.\r\n \"_decimalSeparator\": \",\",\r\n \"_thousandSeparator\": \".\",\r\n // Default date formats for various periods.\r\n // \r\n // This should reflect official or de facto formatting universally accepted\r\n // in the country translation is being made for\r\n // Available format codes here:\r\n // https://www.amcharts.com/docs/v4/concepts/formatters/formatting-date-time/#Format_codes\r\n // \r\n // This will be used when formatting date/time for particular granularity,\r\n // e.g. \"_date_hour\" will be shown whenever we need to show time as hours.\r\n \"_date_millisecond\": \"mm:ss SSS\",\r\n \"_date_second\": \"HH:mm:ss\",\r\n \"_date_minute\": \"HH:mm\",\r\n \"_date_hour\": \"HH:mm\",\r\n \"_date_day\": \"dd MMM\",\r\n \"_date_week\": \"ww\",\r\n \"_date_month\": \"MMM\",\r\n \"_date_year\": \"yyyy\",\r\n // Default duration formats for various base units.\r\n // \r\n // This will be used by DurationFormatter to format numeric values into\r\n // duration.\r\n // \r\n // Available codes here:\r\n // https://www.amcharts.com/docs/v4/concepts/formatters/formatting-duration/#Available_Codes\r\n \"_duration_millisecond\": \"SSS\",\r\n \"_duration_second\": \"ss\",\r\n \"_duration_minute\": \"mm\",\r\n \"_duration_hour\": \"hh\",\r\n \"_duration_day\": \"dd\",\r\n \"_duration_week\": \"ww\",\r\n \"_duration_month\": \"MM\",\r\n \"_duration_year\": \"yyyy\",\r\n // Era translations\r\n \"_era_ad\": \"DC\",\r\n \"_era_bc\": \"AC\",\r\n // Day part, used in 12-hour formats, e.g. 5 P.M.\r\n // Please note that these come in 3 variants:\r\n // * one letter (e.g. \"A\")\r\n // * two letters (e.g. \"AM\")\r\n // * two letters with dots (e.g. \"A.M.\")\r\n // \r\n // All three need to to be translated even if they are all the same. Some\r\n // users might use one, some the other.\r\n \"A\": \"\",\r\n \"P\": \"\",\r\n \"AM\": \"\",\r\n \"PM\": \"\",\r\n \"A.M.\": \"\",\r\n \"P.M.\": \"\",\r\n // Date-related stuff.\r\n // \r\n // When translating months, if there's a difference, use the form which is\r\n // best for a full date, e.g. as you would use it in \"2018 January 1\".\r\n // \r\n // Note that May is listed twice. This is because in English May is the same\r\n // in both long and short forms, while in other languages it may not be the\r\n // case. Translate \"May\" to full word, while \"May(short)\" to shortened\r\n // version.\r\n \"January\": \"Janeiro\",\r\n \"February\": \"Fevereiro\",\r\n \"March\": \"Março\",\r\n \"April\": \"Abril\",\r\n \"May\": \"Maio\",\r\n \"June\": \"Junho\",\r\n \"July\": \"Julho\",\r\n \"August\": \"Agosto\",\r\n \"September\": \"Setembro\",\r\n \"October\": \"Outubro\",\r\n \"November\": \"Novembro\",\r\n \"December\": \"Dezembro\",\r\n \"Jan\": \"Jan\",\r\n \"Feb\": \"Fev\",\r\n \"Mar\": \"Mar\",\r\n \"Apr\": \"Abr\",\r\n \"May(short)\": \"Mai\",\r\n \"Jun\": \"Jun\",\r\n \"Jul\": \"Jul\",\r\n \"Aug\": \"Ago\",\r\n \"Sep\": \"Set\",\r\n \"Oct\": \"Out\",\r\n \"Nov\": \"Nov\",\r\n \"Dec\": \"Dez\",\r\n // Weekdays.\r\n \"Sunday\": \"Domingo\",\r\n \"Monday\": \"Segunda-feira\",\r\n \"Tuesday\": \"Terça-feira\",\r\n \"Wednesday\": \"Quarta-feira\",\r\n \"Thursday\": \"Quinta-feira\",\r\n \"Friday\": \"Sexta-feira\",\r\n \"Saturday\": \"Sábado\",\r\n \"Sun\": \"Dom\",\r\n \"Mon\": \"Seg\",\r\n \"Tue\": \"Ter\",\r\n \"Wed\": \"Qua\",\r\n \"Thu\": \"Qui\",\r\n \"Fri\": \"Sex\",\r\n \"Sat\": \"Sáb\",\r\n // Date ordinal function.\r\n // \r\n // This is used when adding number ordinal when formatting days in dates.\r\n // \r\n // E.g. \"January 1st\", \"February 2nd\".\r\n // \r\n // The function accepts day number, and returns a string to be added to the\r\n // day, like in default English translation, if we pass in 2, we will receive\r\n // \"nd\" back.\r\n \"_dateOrd\": function (day) {\r\n return \"º\";\r\n },\r\n // Various chart controls.\r\n // Shown as a tooltip on zoom out button.\r\n \"Zoom Out\": \"Reduzir Zoom\",\r\n // Timeline buttons\r\n \"Play\": \"Play\",\r\n \"Stop\": \"Parar\",\r\n // Chart's Legend screen reader title.\r\n \"Legend\": \"Legenda\",\r\n // Legend's item screen reader indicator.\r\n \"Click, tap or press ENTER to toggle\": \"Clique, toque ou pressione ENTER para alternar\",\r\n // Shown when the chart is busy loading something.\r\n \"Loading\": \"Carregando\",\r\n // Shown as the first button in the breadcrumb navigation, e.g.:\r\n // Home > First level > ...\r\n \"Home\": \"Início\",\r\n // Chart types.\r\n // Those are used as default screen reader titles for the main chart element\r\n // unless developer has set some more descriptive title.\r\n \"Chart\": \"Gráfico\",\r\n \"Serial chart\": \"Gráfico Serial\",\r\n \"X/Y chart\": \"Gráfico XY\",\r\n \"Pie chart\": \"Gráfico de Pizza\",\r\n \"Gauge chart\": \"Gráfico Indicador\",\r\n \"Radar chart\": \"Gráfico de Radar\",\r\n \"Sankey diagram\": \"Diagrama Sankey\",\r\n \"Chord diagram\": \"Diagram Chord\",\r\n \"Flow diagram\": \"Diagrama Flow\",\r\n \"TreeMap chart\": \"Gráfico de Mapa de Árvore\",\r\n // Series types.\r\n // Used to name series by type for screen readers if they do not have their\r\n // name set.\r\n \"Series\": \"Séries\",\r\n \"Candlestick Series\": \"Séries do Candlestick\",\r\n \"Column Series\": \"Séries de Colunas\",\r\n \"Line Series\": \"Séries de Linhas\",\r\n \"Pie Slice Series\": \"Séries de Fatias de Pizza\",\r\n \"X/Y Series\": \"Séries de XY\",\r\n // Map-related stuff.\r\n \"Map\": \"Mapa\",\r\n \"Press ENTER to zoom in\": \"Pressione ENTER para aumentar o zoom\",\r\n \"Press ENTER to zoom out\": \"Pressione ENTER para diminuir o zoom\",\r\n \"Use arrow keys to zoom in and out\": \"Use as setas para diminuir ou aumentar o zoom\",\r\n \"Use plus and minus keys on your keyboard to zoom in and out\": \"Use as teclas mais ou menos no seu teclado para diminuir ou aumentar o zoom\",\r\n // Export-related stuff.\r\n // These prompts are used in Export menu labels.\r\n // \r\n // \"Export\" is the top-level menu item.\r\n // \r\n // \"Image\", \"Data\", \"Print\" as second-level indicating type of export\r\n // operation.\r\n // \r\n // Leave actual format untranslated, unless you absolutely know that they\r\n // would convey more meaning in some other way.\r\n \"Export\": \"Exportar\",\r\n \"Image\": \"Imagem\",\r\n \"Data\": \"Dados\",\r\n \"Print\": \"Imprimir\",\r\n \"Click, tap or press ENTER to open\": \"Clique, toque ou pressione ENTER para abrir\",\r\n \"Click, tap or press ENTER to print.\": \"Clique, toque ou pressione ENTER para imprimir\",\r\n \"Click, tap or press ENTER to export as %1.\": \"Clique, toque ou pressione ENTER para exportar como %1.\",\r\n 'To save the image, right-click this link and choose \"Save picture as...\"': \"Para salvar a imagem, clique no link com o botão da direira e escolha \\\"Salvar imagem como...\\\"\",\r\n 'To save the image, right-click thumbnail on the left and choose \"Save picture as...\"': \"Para salvar, clique na imagem à esquerda com o botão direito e escolha \\\"Salvar imagem como...\\\"\",\r\n \"(Press ESC to close this message)\": \"(Pressione ESC para fechar esta mensagem)\",\r\n \"Image Export Complete\": \"A exportação da imagem foi completada\",\r\n \"Export operation took longer than expected. Something might have gone wrong.\": \"A exportação da imagem demorou mais do que o experado. Algo deve ter dado errado.\",\r\n \"Saved from\": \"Salvo de\",\r\n \"PNG\": \"\",\r\n \"JPG\": \"\",\r\n \"GIF\": \"\",\r\n \"SVG\": \"\",\r\n \"PDF\": \"\",\r\n \"JSON\": \"\",\r\n \"CSV\": \"\",\r\n \"XLSX\": \"\",\r\n // Scrollbar-related stuff.\r\n // \r\n // Scrollbar is a control which can zoom and pan the axes on the chart.\r\n // \r\n // Each scrollbar has two grips: left or right (for horizontal scrollbar) or\r\n // upper and lower (for vertical one).\r\n // \r\n // Prompts change in relation to whether Scrollbar is vertical or horizontal.\r\n // \r\n // The final section is used to indicate the current range of selection.\r\n \"Use TAB to select grip buttons or left and right arrows to change selection\": \"Use TAB para selecionar os botões ou setas para a direita ou esquerda para mudar a seleção\",\r\n \"Use left and right arrows to move selection\": \"Use as setas para a esquerda ou direita para mover a seleção\",\r\n \"Use left and right arrows to move left selection\": \"Use as setas para a esquerda ou direita para mover a seleção da esquerda\",\r\n \"Use left and right arrows to move right selection\": \"Use as setas para a esquerda ou direita para mover a seleção da direita\",\r\n \"Use TAB select grip buttons or up and down arrows to change selection\": \"Use TAB para selecionar os botões ou setas para cima ou para baixo para mudar a seleção\",\r\n \"Use up and down arrows to move selection\": \"Use as setas para cima ou para baixo para mover a seleção\",\r\n \"Use up and down arrows to move lower selection\": \"Use as setas para cima ou para baixo para mover a seleção de baixo\",\r\n \"Use up and down arrows to move upper selection\": \"Use as setas para cima ou para baixo para mover a seleção de cima\",\r\n \"From %1 to %2\": \"De %1 até %2\",\r\n \"From %1\": \"De %1\",\r\n \"To %1\": \"Até %1\",\r\n // Data loader-related.\r\n \"No parser available for file: %1\": \"Não há um interpretador para este arquivo: %1\",\r\n \"Error parsing file: %1\": \"Erro analizando o arquivo: %1\",\r\n \"Unable to load file: %1\": \"O arquivo não pôde ser carregado: %1\",\r\n \"Invalid date\": \"Data inválida\",\r\n};\r\n//# sourceMappingURL=pt_BR.js.map","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { is } from \"../core/Registry\";\r\nvar theme = function (object) {\r\n if (is(object, \"SpriteState\")) {\r\n object.transitionDuration = 400;\r\n }\r\n if (is(object, \"Component\")) {\r\n object.rangeChangeDuration = 500;\r\n object.interpolationDuration = 500;\r\n object.sequencedInterpolation = false;\r\n if (is(object, \"SankeyDiagram\")) {\r\n object.sequencedInterpolation = true;\r\n }\r\n if (is(object, \"FunnelSeries\")) {\r\n object.sequencedInterpolation = true;\r\n }\r\n }\r\n if (is(object, \"Chart\")) {\r\n object.defaultState.transitionDuration = 2000;\r\n object.hiddenState.transitionDuration = 1000;\r\n }\r\n if (is(object, \"Tooltip\")) {\r\n object.animationDuration = 400;\r\n object.defaultState.transitionDuration = 400;\r\n object.hiddenState.transitionDuration = 400;\r\n }\r\n if (is(object, \"Scrollbar\")) {\r\n object.animationDuration = 500;\r\n }\r\n if (is(object, \"Series\")) {\r\n object.defaultState.transitionDuration = 1000;\r\n object.hiddenState.transitionDuration = 700;\r\n object.hiddenState.properties.opacity = 1;\r\n object.showOnInit = true;\r\n }\r\n if (is(object, \"MapSeries\")) {\r\n object.hiddenState.properties.opacity = 0;\r\n }\r\n if (is(object, \"PercentSeries\")) {\r\n object.hiddenState.properties.opacity = 0;\r\n }\r\n if (is(object, \"FunnelSlice\")) {\r\n object.defaultState.transitionDuration = 800;\r\n object.hiddenState.transitionDuration = 1000;\r\n object.hiddenState.properties.opacity = 1;\r\n }\r\n if (is(object, \"Slice\")) {\r\n object.defaultState.transitionDuration = 700;\r\n object.hiddenState.transitionDuration = 1000;\r\n object.hiddenState.properties.opacity = 1;\r\n }\r\n if (is(object, \"Preloader\")) {\r\n object.hiddenState.transitionDuration = 2000;\r\n }\r\n if (is(object, \"Column\")) {\r\n object.defaultState.transitionDuration = 700;\r\n object.hiddenState.transitionDuration = 1000;\r\n object.hiddenState.properties.opacity = 1;\r\n }\r\n if (is(object, \"Column3D\")) {\r\n object.hiddenState.properties.opacity = 0;\r\n }\r\n};\r\nexport default theme;\r\n//# sourceMappingURL=animated.js.map","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e(require(\"moment\"),require(\"pikaday\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"pikaday\"],e):(t=t||self).vuePikaday=e(t.moment,t.Pikaday)}(this,(function(moment,Pikaday){\"use strict\";function t(e){return(t=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(e)}moment=moment&&Object.prototype.hasOwnProperty.call(moment,\"default\")?moment.default:moment,Pikaday=Pikaday&&Object.prototype.hasOwnProperty.call(Pikaday,\"default\")?Pikaday.default:Pikaday;var e=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{};var n=\"object\"==typeof e&&e&&e.Object===Object&&e,i=\"object\"==typeof self&&self&&self.Object===Object&&self,r=n||i||Function(\"return this\")(),o=r.Symbol,u=Object.prototype,a=u.hasOwnProperty,s=u.toString,f=o?o.toStringTag:void 0;var c=function(t){var e=a.call(t,f),n=t[f];try{t[f]=void 0;var i=!0}catch(t){}var r=s.call(t);return i&&(e?t[f]=n:delete t[f]),r},l=Object.prototype.toString;var d=function(t){return l.call(t)},p=o?o.toStringTag:void 0;var h=function(t){return null==t?void 0===t?\"[object Undefined]\":\"[object Null]\":p&&p in Object(t)?c(t):d(t)};var v=function(t){return null!=t&&\"object\"==typeof t};var y=function(t){return v(t)&&\"[object Date]\"==h(t)};var m=function(t){return function(e){return t(e)}},b=function(t,e){return t(e={exports:{}},e.exports),e.exports}((function(t,e){var i=e&&!e.nodeType&&e,r=i&&t&&!t.nodeType&&t,o=r&&r.exports===i&&n.process,u=function(){try{var t=r&&r.require&&r.require(\"util\").types;return t||o&&o.binding&&o.binding(\"util\")}catch(t){}}();t.exports=u})),g=b&&b.isDate,O=g?m(g):y,w=Array.isArray;var j=function(t){return\"string\"==typeof t||!w(t)&&v(t)&&\"[object String]\"==h(t)};var x={name:\"vue-pikaday\",inheritAttrs:!1,props:{value:{validator:function(e){var n=[void 0,null];if(function(t){return t instanceof Event||t&&t.constructor&&\"Event\"===t.constructor.name}(e))return!0;if(O(e))return!0;if(j(e)&&moment(e).isValid())return!0;for(var i=0,r=n;i<r.length;i++){var o=r[i];if(e===o||t(e)===o)return!0}return!1},required:!0},options:{required:!1,default:function(){return{}}},autoDefault:{type:Boolean,required:!1,default:!1}},data:function(){return{visible:!1,elAttrs:{type:\"text\"},defaultOptions:{format:\"D MMM YYYY\"}}},computed:{elementAttributes:function(){return Object.assign({},this.$attrs,this.elAttrs)},mergedOptions:function(){return Object.assign({},this.defaultOptions,this.options)}},render:function(t){return t(\"input\",{attrs:this.elementAttributes,on:this.$listeners,value:this.inputValue(this.value)},this.$slots.default)},mounted:function(){var t=this;this.create(),this.$watch(\"value\",(function(e){O(e)||(e=null),t.visible||t.pikaday.setDate(e,!0),t.change(e)}))},beforeDestroy:function(){this.destroy()},watch:{options:{handler:function(){this.reload()},deep:!0}},methods:{create:function(){var t=this;this.mergedOptions.field=this.$el,this.bindListener(\"onSelect\",(function(){return t.onSelect()})),this.bindListener(\"onOpen\",(function(){return t.onOpen()})),this.bindListener(\"onClose\",(function(){return t.onClose()})),this.pikaday=new Pikaday(this.mergedOptions);var e=this.value;!this.value&&this.autoDefault&&(e=moment().toDate(),this.change(e)),this.pikaday.setDate(e,!0),!1===this.mergedOptions.bound?this.hide():this.visible?this.show():this.hide()},destroy:function(){this.pikaday.destroy()},reload:function(){this.destroy(),this.create()},change:function(t){this.$emit(\"input\",t),this.$emit(\"input-value\",this.inputValue(t))},inputValue:function(t){if(!O(t))return null;var e=moment(t);return e.isValid()?e.format(this.mergedOptions.format):null},onSelect:function(){this.change(this.pikaday.getDate())},onOpen:function(){this.visible=!0},onClose:function(){O(this.value)||(this.pikaday.setDate(null,!0),this.change(null)),this.visible=!1},show:function(){this.pikaday.show()},hide:function(){this.pikaday.hide()},bindListener:function(t,e){var n=this;if(this.mergedOptions[t]){var i=this.mergedOptions[t];this.mergedOptions[t]=function(){for(var t=arguments.length,r=new Array(t),o=0;o<t;o++)r[o]=arguments[o];i(r),e.apply(n)}}else this.mergedOptions[t]=e}}};var S=function(t){var e=typeof t;return null!=t&&(\"object\"==e||\"function\"==e)},k=function(){return r.Date.now()},T=/\\s/;var D=function(t){for(var e=t.length;e--&&T.test(t.charAt(e)););return e},$=/^\\s+/;var A=function(t){return t?t.slice(0,D(t)+1).replace($,\"\"):t};var q=function(t){return\"symbol\"==typeof t||v(t)&&\"[object Symbol]\"==h(t)},V=/^[-+]0x[0-9a-f]+$/i,M=/^0b[01]+$/i,N=/^0o[0-7]+$/i,P=parseInt;var C=function(t){if(\"number\"==typeof t)return t;if(q(t))return NaN;if(S(t)){var e=\"function\"==typeof t.valueOf?t.valueOf():t;t=S(e)?e+\"\":e}if(\"string\"!=typeof t)return 0===t?t:+t;t=A(t);var n=M.test(t);return n||N.test(t)?P(t.slice(2),n?2:8):V.test(t)?NaN:+t},E=Math.max,L=Math.min;var Y=function(t,e,n){var i,r,o,u,a,s,f=0,c=!1,l=!1,d=!0;if(\"function\"!=typeof t)throw new TypeError(\"Expected a function\");function p(e){var n=i,o=r;return i=r=void 0,f=e,u=t.apply(o,n)}function h(t){return f=t,a=setTimeout(y,e),c?p(t):u}function v(t){var n=t-s;return void 0===s||n>=e||n<0||l&&t-f>=o}function y(){var t=k();if(v(t))return m(t);a=setTimeout(y,function(t){var n=e-(t-s);return l?L(n,o-(t-f)):n}(t))}function m(t){return a=void 0,d&&i?p(t):(i=r=void 0,u)}function b(){var t=k(),n=v(t);if(i=arguments,r=this,s=t,n){if(void 0===a)return h(s);if(l)return clearTimeout(a),a=setTimeout(y,e),p(s)}return void 0===a&&(a=setTimeout(y,e)),u}return e=C(e)||0,S(n)&&(c=!!n.leading,o=(l=\"maxWait\"in n)?E(C(n.maxWait)||0,e):o,d=\"trailing\"in n?!!n.trailing:d),b.cancel=function(){void 0!==a&&clearTimeout(a),f=0,i=s=r=a=void 0},b.flush=function(){return void 0===a?u:m(k())},b};function I(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;e[n]=t,i=i||e,t?i.show():i.hide()}var W={inserted:function(t,e,n){var i=n.componentInstance;i.onOpen=function(){return Y((function(){return I(!0,n.context,e.expression,i)}),100)},i.onClose=Y((function(){return I(!1,n.context,e.expression,i)}),100)},update:function(t,e,n){Y((function(){return I(e.value,n.componentInstance,e.expression)}),100)()}},B={install:function(t){t.component(x.name,x),t.directive(\"p-visible\",W)}};return\"undefined\"!=typeof window&&window.Vue&&window.Vue.use(B),B}));\n//# sourceMappingURL=vue-pikaday.js.map\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent(\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */,\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options =\n typeof scriptExports === 'function' ? scriptExports.options : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) {\n // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar pkg = require('./../../package.json');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed in ' + version));\n }\n\n if (isDeprecated && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","//\n// Single point of contact for Vue\n//\n// TODO:\n// Conditionally import Vue if no global Vue\n//\nimport Vue from 'vue';\nexport default Vue;","/**\n * Utilities to get information about the current environment\n */\n// --- Constants ---\nexport var hasWindowSupport = typeof window !== 'undefined';\nexport var hasDocumentSupport = typeof document !== 'undefined';\nexport var hasNavigatorSupport = typeof navigator !== 'undefined';\nexport var hasPromiseSupport = typeof Promise !== 'undefined';\nexport var hasMutationObserverSupport = typeof MutationObserver !== 'undefined' || typeof WebKitMutationObserver !== 'undefined' || typeof MozMutationObserver !== 'undefined';\nexport var isBrowser = hasWindowSupport && hasDocumentSupport && hasNavigatorSupport; // Browser type sniffing\n\nexport var userAgent = isBrowser ? window.navigator.userAgent.toLowerCase() : '';\nexport var isJSDOM = userAgent.indexOf('jsdom') > 0;\nexport var isIE = /msie|trident/.test(userAgent); // Determine if the browser supports the option passive for events\n\nexport var hasPassiveEventSupport = function () {\n var passiveEventSupported = false;\n\n if (isBrowser) {\n try {\n var options = {\n get passive() {\n // This function will be called when the browser\n // attempts to access the passive property.\n\n /* istanbul ignore next: will never be called in JSDOM */\n passiveEventSupported = true;\n }\n\n };\n window.addEventListener('test', options, options);\n window.removeEventListener('test', options, options);\n } catch (err) {\n /* istanbul ignore next: will never be called in JSDOM */\n passiveEventSupported = false;\n }\n }\n\n return passiveEventSupported;\n}();\nexport var hasTouchSupport = isBrowser && ('ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0);\nexport var hasPointerEventSupport = isBrowser && Boolean(window.PointerEvent || window.MSPointerEvent);\nexport var hasIntersectionObserverSupport = isBrowser && 'IntersectionObserver' in window && 'IntersectionObserverEntry' in window && // Edge 15 and UC Browser lack support for `isIntersecting`\n// but we an use intersectionRatio > 0 instead\n// 'isIntersecting' in window.IntersectionObserverEntry.prototype &&\n'intersectionRatio' in window.IntersectionObserverEntry.prototype; // --- Getters ---\n\nexport var getEnv = function getEnv(key) {\n var fallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var env = typeof process !== 'undefined' && process ? process.env || {} : {};\n\n if (!key) {\n /* istanbul ignore next */\n return env;\n }\n\n return env[key] || fallback;\n};\nexport var getNoWarn = function getNoWarn() {\n return getEnv('BOOTSTRAP_VUE_NO_WARN');\n};","import { isBrowser, hasPromiseSupport, hasMutationObserverSupport, getNoWarn } from './env';\n/**\n * Log a warning message to the console with BootstrapVue formatting\n * @param {string} message\n */\n\nexport var warn = function warn(message)\n/* istanbul ignore next */\n{\n if (!getNoWarn()) {\n console.warn(\"[BootstrapVue warn]: \".concat(message));\n }\n};\n/**\n * Warn when no Promise support is given\n * @param {string} source\n * @returns {boolean} warned\n */\n\nexport var warnNotClient = function warnNotClient(source) {\n /* istanbul ignore else */\n if (isBrowser) {\n return false;\n } else {\n warn(\"\".concat(source, \": Can not be called during SSR.\"));\n return true;\n }\n};\n/**\n * Warn when no Promise support is given\n * @param {string} source\n * @returns {boolean} warned\n */\n\nexport var warnNoPromiseSupport = function warnNoPromiseSupport(source) {\n /* istanbul ignore else */\n if (hasPromiseSupport) {\n return false;\n } else {\n warn(\"\".concat(source, \": Requires Promise support.\"));\n return true;\n }\n};\n/**\n * Warn when no MutationObserver support is given\n * @param {string} source\n * @returns {boolean} warned\n */\n\nexport var warnNoMutationObserverSupport = function warnNoMutationObserverSupport(source) {\n /* istanbul ignore else */\n if (hasMutationObserverSupport) {\n return false;\n } else {\n warn(\"\".concat(source, \": Requires MutationObserver support.\"));\n return true;\n }\n}; // Default export\n\nexport default warn;","import fromPolyfill from 'core-js/library/fn/array/from';\nimport isArrayPolyfill from 'core-js/library/fn/array/is-array'; // --- Static ---\n\nexport var from = Array.from || fromPolyfill;\nexport var isArray = Array.isArray || isArrayPolyfill; // --- Instance ---\n\nexport var arrayIncludes = function arrayIncludes(array, value) {\n return array.indexOf(value) !== -1;\n};\nexport var concat = function concat() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return Array.prototype.concat.apply([], args);\n};","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport assignPolyfill from 'core-js/library/fn/object/assign';\nimport isPolyfill from 'core-js/library/fn/object/is'; // --- Static ---\n\nexport var assign = Object.assign || assignPolyfill;\nexport var getOwnPropertyNames = Object.getOwnPropertyNames;\nexport var keys = Object.keys;\nexport var defineProperties = Object.defineProperties;\nexport var defineProperty = Object.defineProperty;\nexport var freeze = Object.freeze;\nexport var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nexport var getOwnPropertySymbols = Object.getOwnPropertySymbols;\nexport var getPrototypeOf = Object.getPrototypeOf;\nexport var create = Object.create;\nexport var isFrozen = Object.isFrozen;\nexport var is = Object.is || isPolyfill;\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n * Note object could be a complex type like array, date, etc.\n */\n\nexport var isObject = function isObject(obj) {\n return obj !== null && _typeof(obj) === 'object';\n};\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\n\nexport var isPlainObject = function isPlainObject(obj) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n}; // @link https://gist.github.com/bisubus/2da8af7e801ffd813fab7ac221aa7afc\n\nexport var omit = function omit(obj, props) {\n return keys(obj).filter(function (key) {\n return props.indexOf(key) === -1;\n }).reduce(function (result, key) {\n return _objectSpread({}, result, _defineProperty({}, key, obj[key]));\n }, {});\n};\nexport var readonlyDescriptor = function readonlyDescriptor() {\n return {\n enumerable: true,\n configurable: false,\n writable: false\n };\n};","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nimport { isArray, isPlainObject } from './inspect';\nimport { keys } from './object';\nexport var cloneDeep = function cloneDeep(obj) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : obj;\n\n if (isArray(obj)) {\n return obj.reduce(function (result, val) {\n return [].concat(_toConsumableArray(result), [cloneDeep(val, val)]);\n }, []);\n }\n\n if (isPlainObject(obj)) {\n return keys(obj).reduce(function (result, key) {\n return _objectSpread({}, result, _defineProperty({}, key, cloneDeep(obj[key], obj[key])));\n }, {});\n }\n\n return defaultValue;\n};\nexport default cloneDeep;","import { isArray, isObject } from './inspect';\n/**\n * Get property defined by dot/array notation in string.\n *\n * @link https://gist.github.com/jeneg/9767afdcca45601ea44930ea03e0febf#gistcomment-1935901\n *\n * @param {Object} obj\n * @param {string|Array} path\n * @param {*} defaultValue (optional)\n * @return {*}\n */\n\nvar get = function get(obj, path) {\n var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n // Handle array of path values\n path = isArray(path) ? path.join('.') : path; // If no path or no object passed\n\n if (!path || !isObject(obj)) {\n return defaultValue;\n } // Handle edge case where user has dot(s) in top-level item field key\n // See https://github.com/bootstrap-vue/bootstrap-vue/issues/2762\n\n\n if (obj.hasOwnProperty(path)) {\n return obj[path];\n } // Handle string array notation (numeric indices only)\n\n\n path = String(path).replace(/\\[(\\d+)]/g, '.$1');\n var steps = path.split('.').filter(Boolean); // Handle case where someone passes a string of only dots\n\n if (steps.length === 0) {\n return defaultValue;\n } // Traverse path in object to find result\n\n\n return steps.every(function (step) {\n return isObject(obj) && obj.hasOwnProperty(step) && (obj = obj[step]) != null;\n }) ? obj : defaultValue;\n};\n\nexport default get;","import { create } from './object';\n\nvar memoize = function memoize(fn) {\n var cache = create(null);\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var argsKey = JSON.stringify(args);\n return cache[argsKey] = cache[argsKey] || fn.apply(null, args);\n };\n};\n\nexport default memoize;","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * Convenience inspection utilities\n */\nimport { isArray } from './array';\nimport { isObject, isPlainObject } from './object';\nexport var toType = function toType(val) {\n return _typeof(val);\n};\nexport var toRawType = function toRawType(val) {\n return Object.prototype.toString.call(val).slice(8, -1);\n};\nexport var toRawTypeLC = function toRawTypeLC(val) {\n return toRawType(val).toLowerCase();\n};\nexport var isUndefined = function isUndefined(val) {\n return val === undefined;\n};\nexport var isNull = function isNull(val) {\n return val === null;\n};\nexport var isFunction = function isFunction(val) {\n return toType(val) === 'function';\n};\nexport var isBoolean = function isBoolean(val) {\n return toType(val) === 'boolean';\n};\nexport var isString = function isString(val) {\n return toType(val) === 'string';\n};\nexport var isNumber = function isNumber(val) {\n return toType(val) === 'number';\n};\nexport var isPrimitive = function isPrimitive(val) {\n return isBoolean(val) || isString(val) || isNumber(val);\n};\nexport var isDate = function isDate(val) {\n return val instanceof Date;\n};\nexport var isRegExp = function isRegExp(val) {\n return toRawType(val) === 'RegExp';\n};\nexport var isPromise = function isPromise(val) {\n return !isUndefined(val) && !isNull(val) && isFunction(val.then) && isFunction(val.catch);\n}; // Extra convenience named re-exports\n\nexport { isArray, isObject, isPlainObject };","import cloneDeep from './clone-deep';\nimport get from './get';\nimport memoize from './memoize';\nimport warn from './warn';\nimport { isArray, isObject, isString, isUndefined } from './inspect';\nimport { keys } from './object'; // General BootstrapVue configuration\n//\n// BREAKPOINT DEFINITIONS\n//\n// Some components (BCol and BFormGroup) generate props based on breakpoints, and this\n// occurs when the component is first loaded (evaluated), which may happen before the\n// config is created/modified\n//\n// To get around this we make these components async (lazy evaluation)\n// The component definition is only called/executed when the first access to the\n// component is used (and cached on subsequent uses)\n//\n// See: https://vuejs.org/v2/guide/components-dynamic-async.html#Async-Components\n//\n// PROP DEFAULTS\n//\n// For default values on props, we use the default value factory function approach so\n// so that the default values are pulled in at each component instantiation\n//\n// props: {\n// variant: {\n// type: String,\n// default: () => getConfigComponent('BAlert', 'variant')\n// }\n// }\n// prettier-ignore\n\nvar DEFAULTS = {\n // Breakpoints\n breakpoints: ['xs', 'sm', 'md', 'lg', 'xl'],\n // Component Specific defaults are keyed by the component\n // name (PascalCase) and prop name (camelCase)\n BAlert: {\n dismissLabel: 'Close',\n variant: 'info'\n },\n BBadge: {\n variant: 'secondary'\n },\n BButton: {\n variant: 'secondary'\n },\n BButtonClose: {\n // `textVariant` is `null` to inherit the current text color\n textVariant: null,\n ariaLabel: 'Close'\n },\n BCardSubTitle: {\n // BCard and BCardBody also inherit this prop\n subTitleTextVariant: 'muted'\n },\n BCarousel: {\n labelPrev: 'Previous Slide',\n labelNext: 'Next Slide',\n labelGotoSlide: 'Goto Slide',\n labelIndicators: 'Select a slide to display'\n },\n BDropdown: {\n toggleText: 'Toggle Dropdown',\n variant: 'secondary',\n splitVariant: null\n },\n BFormFile: {\n browseText: 'Browse',\n // Chrome default file prompt\n placeholder: 'No file chosen',\n dropPlaceholder: 'Drop files here'\n },\n BFormText: {\n textVariant: 'muted'\n },\n BImg: {\n blankColor: 'transparent'\n },\n BImgLazy: {\n blankColor: 'transparent'\n },\n BJumbotron: {\n bgVariant: null,\n borderVariant: null,\n textVariant: null\n },\n BListGroupItem: {\n variant: null\n },\n BModal: {\n titleTag: 'h5',\n size: 'md',\n headerBgVariant: null,\n headerBorderVariant: null,\n headerTextVariant: null,\n headerCloseVariant: null,\n bodyBgVariant: null,\n bodyTextVariant: null,\n footerBgVariant: null,\n footerBorderVariant: null,\n footerTextVariant: null,\n cancelTitle: 'Cancel',\n cancelVariant: 'secondary',\n okTitle: 'OK',\n okVariant: 'primary',\n headerCloseLabel: 'Close'\n },\n BNavbar: {\n variant: null\n },\n BNavbarToggle: {\n label: 'Toggle navigation'\n },\n BProgress: {\n variant: null\n },\n BProgressBar: {\n variant: null\n },\n BSpinner: {\n variant: null\n },\n BTable: {\n selectedVariant: 'primary',\n headVariant: null,\n footVariant: null\n },\n BToast: {\n toaster: 'b-toaster-top-right',\n autoHideDelay: 5000,\n variant: null,\n toastClass: null,\n headerClass: null,\n bodyClass: null,\n solid: false\n },\n BToaster: {\n ariaLive: null,\n ariaAtomic: null,\n role: null\n },\n BTooltip: {\n boundary: 'scrollParent',\n boundaryPadding: 5\n },\n BPopover: {\n boundary: 'scrollParent',\n boundaryPadding: 5\n } // This contains user defined configuration\n\n};\nvar CONFIG = {}; // Method to get a deep clone (immutable) copy of the defaults\n\nvar getDefaults = function getDefaults() {\n return cloneDeep(DEFAULTS);\n}; // Method to set the config\n// Merges in only known top-level and sub-level keys\n// Vue.use(BootstrapVue, config)\n// or\n// BootstrapVue.setConfig(config)\n// Vue.use(BootstrapVue)\n\n\nvar setConfig = function setConfig() {\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (!isObject(config)) {\n /* istanbul ignore next */\n return;\n }\n\n keys(config).filter(function (cmpName) {\n return config.hasOwnProperty(cmpName);\n }).forEach(function (cmpName) {\n if (!DEFAULTS.hasOwnProperty(cmpName)) {\n /* istanbul ignore next */\n warn(\"config: unknown config property \\\"\".concat(cmpName, \"\\\"\"));\n /* istanbul ignore next */\n\n return;\n }\n\n var cmpConfig = config[cmpName];\n\n if (cmpName === 'breakpoints') {\n // Special case for breakpoints\n var breakpoints = config.breakpoints;\n\n if (!isArray(breakpoints) || breakpoints.length < 2 || breakpoints.some(function (b) {\n return !isString(b) || b.length === 0;\n })) {\n /* istanbul ignore next */\n warn('config: \"breakpoints\" must be an array of at least 2 breakpoint names');\n } else {\n CONFIG.breakpoints = cloneDeep(breakpoints);\n }\n } else if (isObject(cmpConfig)) {\n keys(cmpConfig).filter(function (key) {\n return cmpConfig.hasOwnProperty(key);\n }).forEach(function (key) {\n if (!DEFAULTS[cmpName].hasOwnProperty(key)) {\n /* istanbul ignore next */\n warn(\"config: unknown config property \\\"\".concat(cmpName, \".{$key}\\\"\"));\n } else {\n // If we pre-populate the config with defaults, we can skip this line\n CONFIG[cmpName] = CONFIG[cmpName] || {};\n\n if (!isUndefined(cmpConfig[key])) {\n CONFIG[cmpName][key] = cloneDeep(cmpConfig[key]);\n }\n }\n });\n }\n });\n}; // Reset the user config to default\n// For testing purposes only\n\n\nvar resetConfig = function resetConfig() {\n CONFIG = {};\n}; // Get the current user config\n// For testing purposes only\n\n\nvar getConfig = function getConfig() {\n return cloneDeep(CONFIG);\n}; // Method to grab a config value based on a dotted/array notation key\n// Returns a deep clone (immutable) copy\n\n\nvar getConfigValue = function getConfigValue(key) {\n // First we try the user config, and if key not found we fall back to default value\n // NOTE: If we deep clone DEFAULTS into config, then we can skip the fallback for get\n return cloneDeep(get(CONFIG, key, get(getDefaults(), key)));\n}; // Method to grab a config value for a particular component.\n// Returns a deep clone (immutable) copy\n\n\nvar getComponentConfig = function getComponentConfig(cmpName) {\n var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n // Return the particular config value for key for if specified,\n // otherwise we return the full config\n return key ? getConfigValue(\"\".concat(cmpName, \".\").concat(key)) : getConfigValue(cmpName) || {};\n}; // Convenience method for getting all breakpoint names\n\n\nvar getBreakpoints = function getBreakpoints() {\n return getConfigValue('breakpoints');\n}; // Convenience method for getting all breakpoint names\n// Caches the results after first access\n\n\nvar getBreakpointsCached = memoize(function () {\n return getConfigValue('breakpoints');\n}); // Convenience method for getting breakpoints with\n// the smallest breakpoint set as ''\n// Useful for components that create breakpoint specific props\n\nvar getBreakpointsUp = function getBreakpointsUp() {\n var breakpoints = getBreakpoints();\n breakpoints[0] = '';\n return breakpoints;\n}; // Convenience method for getting breakpoints with\n// the smallest breakpoint set as ''\n// Useful for components that create breakpoint specific props\n// Caches the results after first access\n\n\nvar getBreakpointsUpCached = memoize(function () {\n var breakpoints = getBreakpointsCached().slice();\n breakpoints[0] = '';\n return breakpoints;\n}); // Convenience method for getting breakpoints with\n// the largest breakpoint set as ''\n// Useful for components that create breakpoint specific props\n\nvar getBreakpointsDown = function getBreakpointsDown() {\n var breakpoints = getBreakpoints();\n breakpoints[breakpoints.length - 1] = '';\n return breakpoints;\n}; // Convenience method for getting breakpoints with\n// the largest breakpoint set as ''\n// Useful for components that create breakpoint specific props\n// Caches the results after first access\n\n/* istanbul ignore next: we don't use this method anywhere, yet */\n\n\nvar getBreakpointsDownCached = memoize(function () {\n var breakpoints = getBreakpointsCached().slice();\n breakpoints[breakpoints.length - 1] = '';\n return breakpoints;\n}); // Named Exports\n\nexport { setConfig, resetConfig, getConfig, getDefaults, getConfigValue, getComponentConfig, getBreakpoints, getBreakpointsUp, getBreakpointsDown, getBreakpointsCached, getBreakpointsUpCached, getBreakpointsDownCached };","import OurVue from './vue';\nimport warn from './warn';\nimport { setConfig } from './config';\nimport { hasWindowSupport, isJSDOM } from './env';\n/**\n * Checks if there are multiple instances of Vue, and warns (once) about possible issues.\n * @param {object} Vue\n */\n\nexport var checkMultipleVue = function () {\n var checkMultipleVueWarned = false;\n var MULTIPLE_VUE_WARNING = ['Multiple instances of Vue detected!', 'You may need to set up an alias for Vue in your bundler config.', 'See: https://bootstrap-vue.js.org/docs#using-module-bundlers'].join('\\n');\n return function (Vue) {\n /* istanbul ignore next */\n if (!checkMultipleVueWarned && OurVue !== Vue && !isJSDOM) {\n warn(MULTIPLE_VUE_WARNING);\n }\n\n checkMultipleVueWarned = true;\n };\n}();\n/**\n * Plugin install factory function.\n * @param {object} { components, directives }\n * @returns {function} plugin install function\n */\n\nexport var installFactory = function installFactory(_ref) {\n var components = _ref.components,\n directives = _ref.directives,\n plugins = _ref.plugins;\n\n var install = function install(Vue) {\n var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (install.installed) {\n /* istanbul ignore next */\n return;\n }\n\n install.installed = true;\n checkMultipleVue(Vue);\n setConfig(config);\n registerComponents(Vue, components);\n registerDirectives(Vue, directives);\n registerPlugins(Vue, plugins);\n };\n\n install.installed = false;\n return install;\n};\n/**\n * Load a group of plugins.\n * @param {object} Vue\n * @param {object} Plugin definitions\n */\n\nexport var registerPlugins = function registerPlugins(Vue) {\n var plugins = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n for (var plugin in plugins) {\n if (plugin && plugins[plugin]) {\n Vue.use(plugins[plugin]);\n }\n }\n};\n/**\n * Load a component.\n * @param {object} Vue\n * @param {string} Component name\n * @param {object} Component definition\n */\n\nexport var registerComponent = function registerComponent(Vue, name, def) {\n if (Vue && name && def) {\n Vue.component(name, def);\n }\n};\n/**\n * Load a group of components.\n * @param {object} Vue\n * @param {object} Object of component definitions\n */\n\nexport var registerComponents = function registerComponents(Vue) {\n var components = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n for (var component in components) {\n registerComponent(Vue, component, components[component]);\n }\n};\n/**\n * Load a directive.\n * @param {object} Vue\n * @param {string} Directive name\n * @param {object} Directive definition\n */\n\nexport var registerDirective = function registerDirective(Vue, name, def) {\n if (Vue && name && def) {\n // Ensure that any leading V is removed from the\n // name, as Vue adds it automatically\n Vue.directive(name.replace(/^VB/, 'B'), def);\n }\n};\n/**\n * Load a group of directives.\n * @param {object} Vue\n * @param {object} Object of directive definitions\n */\n\nexport var registerDirectives = function registerDirectives(Vue) {\n var directives = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n for (var directive in directives) {\n registerDirective(Vue, directive, directives[directive]);\n }\n};\n/**\n * Install plugin if window.Vue available\n * @param {object} Plugin definition\n */\n\nexport var vueUse = function vueUse(VuePlugin) {\n /* istanbul ignore next */\n if (hasWindowSupport && window.Vue) {\n window.Vue.use(VuePlugin);\n }\n};","import { from as arrayFrom } from './array';\nimport { hasWindowSupport, hasDocumentSupport, hasPassiveEventSupport } from './env';\nimport { isFunction, isNull, isObject } from '../utils/inspect'; // --- Constants ---\n\nvar w = hasWindowSupport ? window : {};\nvar d = hasDocumentSupport ? document : {};\nvar elProto = typeof Element !== 'undefined' ? Element.prototype : {}; // --- Normalization utils ---\n// See: https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\n\n/* istanbul ignore next */\n\nexport var matchesEl = elProto.matches || elProto.msMatchesSelector || elProto.webkitMatchesSelector; // See: https://developer.mozilla.org/en-US/docs/Web/API/Element/closest\n\n/* istanbul ignore next */\n\nexport var closestEl = elProto.closest || function (sel)\n/* istanbul ignore next */\n{\n var el = this;\n\n do {\n // Use our \"patched\" matches function\n if (matches(el, sel)) {\n return el;\n }\n\n el = el.parentElement || el.parentNode;\n } while (!isNull(el) && el.nodeType === Node.ELEMENT_NODE);\n\n return null;\n}; // `requestAnimationFrame()` convenience method\n// We don't have a version for cancelAnimationFrame, but we don't call it anywhere\n\nexport var requestAF = w.requestAnimationFrame || w.webkitRequestAnimationFrame || w.mozRequestAnimationFrame || w.msRequestAnimationFrame || w.oRequestAnimationFrame || function (cb) {\n // Fallback, but not a true polyfill\n // All browsers we support (other than Opera Mini) support\n // `requestAnimationFrame()` without a polyfill\n\n /* istanbul ignore next */\n return setTimeout(cb, 16);\n};\nexport var MutationObs = w.MutationObserver || w.WebKitMutationObserver || w.MozMutationObserver || null; // --- Utils ---\n// Normalize event options based on support of passive option\n// Exported only for testing purposes\n\nexport var parseEventOptions = function parseEventOptions(options) {\n /* istanbul ignore else: can't test in JSDOM, as it supports passive */\n if (hasPassiveEventSupport) {\n return isObject(options) ? options : {\n useCapture: Boolean(options || false)\n };\n } else {\n // Need to translate to actual Boolean value\n return Boolean(isObject(options) ? options.useCapture : options);\n }\n}; // Attach an event listener to an element\n\nexport var eventOn = function eventOn(el, evtName, handler, options) {\n if (el && el.addEventListener) {\n el.addEventListener(evtName, handler, parseEventOptions(options));\n }\n}; // Remove an event listener from an element\n\nexport var eventOff = function eventOff(el, evtName, handler, options) {\n if (el && el.removeEventListener) {\n el.removeEventListener(evtName, handler, parseEventOptions(options));\n }\n}; // Determine if an element is an HTML Element\n\nexport var isElement = function isElement(el) {\n return Boolean(el && el.nodeType === Node.ELEMENT_NODE);\n}; // Determine if an HTML element is visible - Faster than CSS check\n\nexport var isVisible = function isVisible(el) {\n if (!isElement(el) || !contains(d.body, el)) {\n return false;\n }\n\n if (el.style.display === 'none') {\n // We do this check to help with vue-test-utils when using v-show\n\n /* istanbul ignore next */\n return false;\n } // All browsers support getBoundingClientRect(), except JSDOM as it returns all 0's for values :(\n // So any tests that need isVisible will fail in JSDOM\n // Except when we override the getBCR prototype in some tests\n\n\n var bcr = getBCR(el);\n return Boolean(bcr && bcr.height > 0 && bcr.width > 0);\n}; // Determine if an element is disabled\n\nexport var isDisabled = function isDisabled(el) {\n return !isElement(el) || el.disabled || Boolean(getAttr(el, 'disabled')) || hasClass(el, 'disabled');\n}; // Cause/wait-for an element to reflow it's content (adjusting it's height/width)\n\nexport var reflow = function reflow(el) {\n // Requesting an elements offsetHight will trigger a reflow of the element content\n\n /* istanbul ignore next: reflow doesn't happen in JSDOM */\n return isElement(el) && el.offsetHeight;\n}; // Select all elements matching selector. Returns `[]` if none found\n\nexport var selectAll = function selectAll(selector, root) {\n return arrayFrom((isElement(root) ? root : d).querySelectorAll(selector));\n}; // Select a single element, returns `null` if not found\n\nexport var select = function select(selector, root) {\n return (isElement(root) ? root : d).querySelector(selector) || null;\n}; // Determine if an element matches a selector\n\nexport var matches = function matches(el, selector) {\n if (!isElement(el)) {\n return false;\n }\n\n return matchesEl.call(el, selector);\n}; // Finds closest element matching selector. Returns `null` if not found\n\nexport var closest = function closest(selector, root) {\n if (!isElement(root)) {\n return null;\n }\n\n var el = closestEl.call(root, selector); // Emulate jQuery closest and return `null` if match is the passed in element (root)\n\n return el === root ? null : el;\n}; // Returns true if the parent element contains the child element\n\nexport var contains = function contains(parent, child) {\n if (!parent || !isFunction(parent.contains)) {\n return false;\n }\n\n return parent.contains(child);\n}; // Get an element given an ID\n\nexport var getById = function getById(id) {\n return d.getElementById(/^#/.test(id) ? id.slice(1) : id) || null;\n}; // Add a class to an element\n\nexport var addClass = function addClass(el, className) {\n // We are checking for `el.classList` existence here since IE 11\n // returns `undefined` for some elements (e.g. SVG elements)\n // See https://github.com/bootstrap-vue/bootstrap-vue/issues/2713\n if (className && isElement(el) && el.classList) {\n el.classList.add(className);\n }\n}; // Remove a class from an element\n\nexport var removeClass = function removeClass(el, className) {\n // We are checking for `el.classList` existence here since IE 11\n // returns `undefined` for some elements (e.g. SVG elements)\n // See https://github.com/bootstrap-vue/bootstrap-vue/issues/2713\n if (className && isElement(el) && el.classList) {\n el.classList.remove(className);\n }\n}; // Test if an element has a class\n\nexport var hasClass = function hasClass(el, className) {\n // We are checking for `el.classList` existence here since IE 11\n // returns `undefined` for some elements (e.g. SVG elements)\n // See https://github.com/bootstrap-vue/bootstrap-vue/issues/2713\n if (className && isElement(el) && el.classList) {\n return el.classList.contains(className);\n }\n\n return false;\n}; // Set an attribute on an element\n\nexport var setAttr = function setAttr(el, attr, value) {\n if (attr && isElement(el)) {\n el.setAttribute(attr, value);\n }\n}; // Remove an attribute from an element\n\nexport var removeAttr = function removeAttr(el, attr) {\n if (attr && isElement(el)) {\n el.removeAttribute(attr);\n }\n}; // Get an attribute value from an element\n// Returns `null` if not found\n\nexport var getAttr = function getAttr(el, attr) {\n return attr && isElement(el) ? el.getAttribute(attr) : null;\n}; // Determine if an attribute exists on an element\n// Returns `true` or `false`, or `null` if element not found\n\nexport var hasAttr = function hasAttr(el, attr) {\n return attr && isElement(el) ? el.hasAttribute(attr) : null;\n}; // Return the Bounding Client Rect of an element\n// Returns `null` if not an element\n\n/* istanbul ignore next: getBoundingClientRect() doesn't work in JSDOM */\n\nexport var getBCR = function getBCR(el) {\n return isElement(el) ? el.getBoundingClientRect() : null;\n}; // Get computed style object for an element\n\n/* istanbul ignore next: getComputedStyle() doesn't work in JSDOM */\n\nexport var getCS = function getCS(el) {\n return hasWindowSupport && isElement(el) ? w.getComputedStyle(el) : {};\n}; // Return an element's offset with respect to document element\n// https://j11y.io/jquery/#v=git&fn=jQuery.fn.offset\n\nexport var offset = function offset(el)\n/* istanbul ignore next: getBoundingClientRect(), getClientRects() doesn't work in JSDOM */\n{\n var _offset = {\n top: 0,\n left: 0\n };\n\n if (!isElement(el) || el.getClientRects().length === 0) {\n return _offset;\n }\n\n var bcr = getBCR(el);\n\n if (bcr) {\n var win = el.ownerDocument.defaultView;\n _offset.top = bcr.top + win.pageYOffset;\n _offset.left = bcr.left + win.pageXOffset;\n }\n\n return _offset;\n}; // Return an element's offset with respect to to it's offsetParent\n// https://j11y.io/jquery/#v=git&fn=jQuery.fn.position\n\nexport var position = function position(el)\n/* istanbul ignore next: getBoundingClientRect() doesn't work in JSDOM */\n{\n var _offset = {\n top: 0,\n left: 0\n };\n\n if (!isElement(el)) {\n return _offset;\n }\n\n var parentOffset = {\n top: 0,\n left: 0\n };\n var elStyles = getCS(el);\n\n if (elStyles.position === 'fixed') {\n _offset = getBCR(el) || _offset;\n } else {\n _offset = offset(el);\n var doc = el.ownerDocument;\n var offsetParent = el.offsetParent || doc.documentElement;\n\n while (offsetParent && (offsetParent === doc.body || offsetParent === doc.documentElement) && getCS(offsetParent).position === 'static') {\n offsetParent = offsetParent.parentNode;\n }\n\n if (offsetParent && offsetParent !== el && offsetParent.nodeType === Node.ELEMENT_NODE) {\n parentOffset = offset(offsetParent);\n var offsetParentStyles = getCS(offsetParent);\n parentOffset.top += parseFloat(offsetParentStyles.borderTopWidth);\n parentOffset.left += parseFloat(offsetParentStyles.borderLeftWidth);\n }\n }\n\n return {\n top: _offset.top - parentOffset.top - parseFloat(elStyles.marginTop),\n left: _offset.left - parentOffset.left - parseFloat(elStyles.marginLeft)\n };\n};","/**\n * Private ModalManager helper\n * Handles controlling modal stacking zIndexes and body adjustments/classes\n */\nimport Vue from '../../../utils/vue';\nimport { getAttr, hasAttr, removeAttr, setAttr, addClass, removeClass, getBCR, getCS, selectAll, requestAF } from '../../../utils/dom';\nimport { isBrowser } from '../../../utils/env';\nimport { isNull } from '../../../utils/inspect'; // --- Constants ---\n// Default modal backdrop z-index\n\nvar DEFAULT_ZINDEX = 1040; // Selectors for padding/margin adjustments\n\nvar Selector = {\n FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT: '.sticky-top',\n NAVBAR_TOGGLER: '.navbar-toggler' // @vue/component\n\n};\nvar ModalManager = Vue.extend({\n data: function data() {\n return {\n modals: [],\n baseZIndex: null,\n scrollbarWidth: null,\n isBodyOverflowing: false\n };\n },\n computed: {\n modalCount: function modalCount() {\n return this.modals.length;\n },\n modalsAreOpen: function modalsAreOpen() {\n return this.modalCount > 0;\n }\n },\n watch: {\n modalCount: function modalCount(newCount, oldCount) {\n if (isBrowser) {\n this.getScrollbarWidth();\n\n if (newCount > 0 && oldCount === 0) {\n // Transitioning to modal(s) open\n this.checkScrollbar();\n this.setScrollbar();\n addClass(document.body, 'modal-open');\n } else if (newCount === 0 && oldCount > 0) {\n // Transitioning to modal(s) closed\n this.resetScrollbar();\n removeClass(document.body, 'modal-open');\n }\n\n setAttr(document.body, 'data-modal-open-count', String(newCount));\n }\n },\n modals: function modals(newVal, oldVal) {\n var _this = this;\n\n this.checkScrollbar();\n requestAF(function () {\n _this.updateModals(newVal || []);\n });\n }\n },\n methods: {\n // Public methods\n registerModal: function registerModal(modal) {\n var _this2 = this;\n\n // Register the modal if not already registered\n if (modal && this.modals.indexOf(modal) === -1) {\n // Add modal to modals array\n this.modals.push(modal);\n modal.$once('hook:beforeDestroy', function () {\n _this2.unregisterModal(modal);\n });\n }\n },\n unregisterModal: function unregisterModal(modal) {\n var index = this.modals.indexOf(modal);\n\n if (index > -1) {\n // Remove modal from modals array\n this.modals.splice(index, 1); // Reset the modal's data\n\n if (!(modal._isBeingDestroyed || modal._isDestroyed)) {\n this.resetModal(modal);\n }\n }\n },\n getBaseZIndex: function getBaseZIndex() {\n if (isNull(this.baseZIndex) && isBrowser) {\n // Create a temporary `div.modal-backdrop` to get computed z-index\n var div = document.createElement('div');\n div.className = 'modal-backdrop d-none';\n div.style.display = 'none';\n document.body.appendChild(div);\n this.baseZIndex = parseInt(getCS(div).zIndex || DEFAULT_ZINDEX, 10);\n document.body.removeChild(div);\n }\n\n return this.baseZIndex || DEFAULT_ZINDEX;\n },\n getScrollbarWidth: function getScrollbarWidth() {\n if (isNull(this.scrollbarWidth) && isBrowser) {\n // Create a temporary `div.measure-scrollbar` to get computed z-index\n var div = document.createElement('div');\n div.className = 'modal-scrollbar-measure';\n document.body.appendChild(div);\n this.scrollbarWidth = getBCR(div).width - div.clientWidth;\n document.body.removeChild(div);\n }\n\n return this.scrollbarWidth || 0;\n },\n // Private methods\n updateModals: function updateModals(modals) {\n var _this3 = this;\n\n var baseZIndex = this.getBaseZIndex();\n var scrollbarWidth = this.getScrollbarWidth();\n modals.forEach(function (modal, index) {\n // We update data values on each modal\n modal.zIndex = baseZIndex + index;\n modal.scrollbarWidth = scrollbarWidth;\n modal.isTop = index === _this3.modals.length - 1;\n modal.isBodyOverflowing = _this3.isBodyOverflowing;\n });\n },\n resetModal: function resetModal(modal) {\n if (modal) {\n modal.zIndex = this.getBaseZIndex();\n modal.isTop = true;\n modal.isBodyOverflowing = false;\n }\n },\n checkScrollbar: function checkScrollbar() {\n // Determine if the body element is overflowing\n var _getBCR = getBCR(document.body),\n left = _getBCR.left,\n right = _getBCR.right;\n\n this.isBodyOverflowing = left + right < window.innerWidth;\n },\n setScrollbar: function setScrollbar() {\n var body = document.body; // Storage place to cache changes to margins and padding\n // Note: This assumes the following element types are not added to the\n // document after the modal has opened.\n\n body._paddingChangedForModal = body._paddingChangedForModal || [];\n body._marginChangedForModal = body._marginChangedForModal || [];\n\n if (this.isBodyOverflowing) {\n var scrollbarWidth = this.scrollbarWidth; // Adjust fixed content padding\n\n /* istanbul ignore next: difficult to test in JSDOM */\n\n selectAll(Selector.FIXED_CONTENT).forEach(function (el) {\n var actualPadding = el.style.paddingRight;\n var calculatedPadding = getCS(el).paddingRight || 0;\n setAttr(el, 'data-padding-right', actualPadding);\n el.style.paddingRight = \"\".concat(parseFloat(calculatedPadding) + scrollbarWidth, \"px\");\n\n body._paddingChangedForModal.push(el);\n }); // Adjust sticky content margin\n\n /* istanbul ignore next: difficult to test in JSDOM */\n\n selectAll(Selector.STICKY_CONTENT).forEach(function (el) {\n var actualMargin = el.style.marginRight;\n var calculatedMargin = getCS(el).marginRight || 0;\n setAttr(el, 'data-margin-right', actualMargin);\n el.style.marginRight = \"\".concat(parseFloat(calculatedMargin) - scrollbarWidth, \"px\");\n\n body._marginChangedForModal.push(el);\n }); // Adjust <b-navbar-toggler> margin\n\n /* istanbul ignore next: difficult to test in JSDOM */\n\n selectAll(Selector.NAVBAR_TOGGLER).forEach(function (el) {\n var actualMargin = el.style.marginRight;\n var calculatedMargin = getCS(el).marginRight || 0;\n setAttr(el, 'data-margin-right', actualMargin);\n el.style.marginRight = \"\".concat(parseFloat(calculatedMargin) + scrollbarWidth, \"px\");\n\n body._marginChangedForModal.push(el);\n }); // Adjust body padding\n\n var actualPadding = body.style.paddingRight;\n var calculatedPadding = getCS(body).paddingRight;\n setAttr(body, 'data-padding-right', actualPadding);\n body.style.paddingRight = \"\".concat(parseFloat(calculatedPadding) + scrollbarWidth, \"px\");\n }\n },\n resetScrollbar: function resetScrollbar() {\n var body = document.body;\n\n if (body._paddingChangedForModal) {\n // Restore fixed content padding\n body._paddingChangedForModal.forEach(function (el) {\n /* istanbul ignore next: difficult to test in JSDOM */\n if (hasAttr(el, 'data-padding-right')) {\n el.style.paddingRight = getAttr(el, 'data-padding-right') || '';\n removeAttr(el, 'data-padding-right');\n }\n });\n }\n\n if (body._marginChangedForModal) {\n // Restore sticky content and navbar-toggler margin\n body._marginChangedForModal.forEach(function (el) {\n /* istanbul ignore next: difficult to test in JSDOM */\n if (hasAttr(el, 'data-margin-right')) {\n el.style.marginRight = getAttr(el, 'data-margin-right') || '';\n removeAttr(el, 'data-margin-right');\n }\n });\n }\n\n body._paddingChangedForModal = null;\n body._marginChangedForModal = null; // Restore body padding\n\n if (hasAttr(body, 'data-padding-right')) {\n body.style.paddingRight = getAttr(body, 'data-padding-right') || '';\n removeAttr(body, 'data-padding-right');\n }\n }\n }\n}); // Export our ModalManager\n\nexport default new ModalManager();","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { assign, defineProperty, defineProperties, readonlyDescriptor } from './object';\n\nvar BvEvent =\n/*#__PURE__*/\nfunction () {\n function BvEvent(type) {\n var eventInit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, BvEvent);\n\n // Start by emulating native Event constructor.\n if (!type) {\n /* istanbul ignore next */\n throw new TypeError(\"Failed to construct '\".concat(this.constructor.name, \"'. 1 argument required, \").concat(arguments.length, \" given.\"));\n } // Assign defaults first, the eventInit,\n // and the type last so it can't be overwritten.\n\n\n assign(this, BvEvent.Defaults, this.constructor.Defaults, eventInit, {\n type: type\n }); // Freeze some props as readonly, but leave them enumerable.\n\n defineProperties(this, {\n type: readonlyDescriptor(),\n cancelable: readonlyDescriptor(),\n nativeEvent: readonlyDescriptor(),\n target: readonlyDescriptor(),\n relatedTarget: readonlyDescriptor(),\n vueTarget: readonlyDescriptor(),\n componentId: readonlyDescriptor()\n }); // Create a private variable using closure scoping.\n\n var defaultPrevented = false; // Recreate preventDefault method. One way setter.\n\n this.preventDefault = function preventDefault() {\n if (this.cancelable) {\n defaultPrevented = true;\n }\n }; // Create 'defaultPrevented' publicly accessible prop\n // that can only be altered by the preventDefault method.\n\n\n defineProperty(this, 'defaultPrevented', {\n enumerable: true,\n get: function get() {\n return defaultPrevented;\n }\n });\n }\n\n _createClass(BvEvent, null, [{\n key: \"Defaults\",\n get: function get() {\n return {\n type: '',\n cancelable: true,\n nativeEvent: null,\n target: null,\n relatedTarget: null,\n vueTarget: null,\n componentId: null\n };\n }\n }]);\n\n return BvEvent;\n}(); // Named Exports\n\n\nexport { BvEvent }; // Default Export\n\nexport default BvEvent;","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nimport BvEvent from '../../../utils/bv-event.class';\nimport warn from '../../../utils/warn';\nimport { defineProperties, readonlyDescriptor } from '../../../utils/object';\n\nvar BvModalEvent =\n/*#__PURE__*/\nfunction (_BvEvent) {\n _inherits(BvModalEvent, _BvEvent);\n\n function BvModalEvent(type) {\n var _this;\n\n var eventInit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, BvModalEvent);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(BvModalEvent).call(this, type, eventInit)); // Freeze our new props as readonly, but leave them enumerable\n\n defineProperties(_assertThisInitialized(_this), {\n trigger: readonlyDescriptor()\n });\n return _this;\n }\n\n _createClass(BvModalEvent, [{\n key: \"cancel\",\n value: function cancel()\n /* istanbul ignore next */\n {\n // Backwards compatibility for BootstrapVue 1.x\n warn('b-modal: evt.cancel() is deprecated. Please use evt.preventDefault().');\n this.preventDefault();\n }\n }, {\n key: \"modalId\",\n get: function get()\n /* istanbul ignore next */\n {\n // Backwards compatability <= 2.0.0-rc.19\n warn('b-modal: evt.modalId is deprecated. Please use evt.componentId.');\n return this.componentId;\n }\n }], [{\n key: \"Defaults\",\n get: function get() {\n return _objectSpread({}, _get(_getPrototypeOf(BvModalEvent), \"Defaults\", this), {\n trigger: null\n });\n }\n }]);\n\n return BvModalEvent;\n}(BvEvent); // Named exports\n\n\nexport { BvModalEvent }; // Default export\n\nexport default BvModalEvent;","var __assign=function(){return(__assign=Object.assign||function(e){for(var a,s=1,t=arguments.length;s<t;s++)for(var r in a=arguments[s])Object.prototype.hasOwnProperty.call(a,r)&&(e[r]=a[r]);return e}).apply(this,arguments)};function mergeData(){for(var e,a,s={},t=arguments.length;t--;)for(var r=0,c=Object.keys(arguments[t]);r<c.length;r++)switch(e=c[r]){case\"class\":case\"style\":case\"directives\":Array.isArray(s[e])||(s[e]=[]),s[e]=s[e].concat(arguments[t][e]);break;case\"staticClass\":if(!arguments[t][e])break;void 0===s[e]&&(s[e]=\"\"),s[e]&&(s[e]+=\" \"),s[e]+=arguments[t][e].trim();break;case\"on\":case\"nativeOn\":s[e]||(s[e]={});for(var n=0,o=Object.keys(arguments[t][e]||{});n<o.length;n++)a=o[n],s[e][a]?s[e][a]=[].concat(s[e][a],arguments[t][e][a]):s[e][a]=arguments[t][e][a];break;case\"attrs\":case\"props\":case\"domProps\":case\"scopedSlots\":case\"staticStyle\":case\"hook\":case\"transition\":s[e]||(s[e]={}),s[e]=__assign({},arguments[t][e],s[e]);break;case\"slot\":case\"key\":case\"ref\":case\"tag\":case\"show\":case\"keepAlive\":default:s[e]||(s[e]=arguments[t][e])}return s}export{mergeData};\n//# sourceMappingURL=lib.esm.js.map\n","var identity = function identity(x) {\n return x;\n};\n\nexport default identity;","import identity from './identity';\nimport { isArray } from './inspect';\nimport { keys } from './object';\n/**\n * Given an array of properties or an object of property keys,\n * plucks all the values off the target object, returning a new object\n * that has props that reference the original prop values\n *\n * @param {{}|string[]} keysToPluck\n * @param {{}} objToPluck\n * @param {Function} transformFn\n * @return {{}}\n */\n\nvar pluckProps = function pluckProps(keysToPluck, objToPluck) {\n var transformFn = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : identity;\n return (isArray(keysToPluck) ? keysToPluck.slice() : keys(keysToPluck)).reduce(function (memo, prop) {\n memo[transformFn(prop)] = objToPluck[prop];\n return memo;\n }, {});\n};\n\nexport default pluckProps;","import { isArray, isNull, isPlainObject, isUndefined } from './inspect';\n/**\n * Convert a value to a string that can be rendered.\n */\n\nvar toString = function toString(val) {\n var spaces = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n return isUndefined(val) || isNull(val) ? '' : isArray(val) || isPlainObject(val) && val.toString === Object.prototype.toString ? JSON.stringify(val, null, spaces) : String(val);\n};\n\nexport default toString;","import toString from './to-string';\nimport { isArray, isNull, isPlainObject, isString, isUndefined } from './inspect';\nimport { keys } from './object';\nvar ANCHOR_TAG = 'a'; // Precompile RegExp\n\nvar commaRE = /%2C/g;\nvar encodeReserveRE = /[!'()*]/g; // Method to replace reserved chars\n\nvar encodeReserveReplacer = function encodeReserveReplacer(c) {\n return '%' + c.charCodeAt(0).toString(16);\n}; // Fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\n\n\nvar encode = function encode(str) {\n return encodeURIComponent(toString(str)).replace(encodeReserveRE, encodeReserveReplacer).replace(commaRE, ',');\n};\n\nvar decode = decodeURIComponent; // Stringifies an object of query parameters\n// See: https://github.com/vuejs/vue-router/blob/dev/src/util/query.js\n\nexport var stringifyQueryObj = function stringifyQueryObj(obj) {\n if (!isPlainObject(obj)) {\n return '';\n }\n\n var query = keys(obj).map(function (key) {\n var val = obj[key];\n\n if (isUndefined(val)) {\n return '';\n } else if (isNull(val)) {\n return encode(key);\n } else if (isArray(val)) {\n return val.reduce(function (results, val2) {\n if (isNull(val2)) {\n results.push(encode(key));\n } else if (!isUndefined(val2)) {\n // Faster than string interpolation\n results.push(encode(key) + '=' + encode(val2));\n }\n\n return results;\n }, []).join('&');\n } // Faster than string interpolation\n\n\n return encode(key) + '=' + encode(val);\n })\n /* must check for length, as we only want to filter empty strings, not things that look falsey! */\n .filter(function (x) {\n return x.length > 0;\n }).join('&');\n return query ? \"?\".concat(query) : '';\n};\nexport var parseQuery = function parseQuery(query) {\n var parsed = {};\n query = toString(query).trim().replace(/^(\\?|#|&)/, '');\n\n if (!query) {\n return parsed;\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0 ? decode(parts.join('=')) : null;\n\n if (isUndefined(parsed[key])) {\n parsed[key] = val;\n } else if (isArray(parsed[key])) {\n parsed[key].push(val);\n } else {\n parsed[key] = [parsed[key], val];\n }\n });\n return parsed;\n};\nexport var isRouterLink = function isRouterLink(tag) {\n return tag !== ANCHOR_TAG;\n};\nexport var computeTag = function computeTag() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n to = _ref.to,\n disabled = _ref.disabled;\n\n var thisOrParent = arguments.length > 1 ? arguments[1] : undefined;\n return thisOrParent.$router && to && !disabled ? thisOrParent.$nuxt ? 'nuxt-link' : 'router-link' : ANCHOR_TAG;\n};\nexport var computeRel = function computeRel() {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n target = _ref2.target,\n rel = _ref2.rel;\n\n if (target === '_blank' && isNull(rel)) {\n return 'noopener';\n }\n\n return rel || null;\n};\nexport var computeHref = function computeHref() {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n href = _ref3.href,\n to = _ref3.to;\n\n var tag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ANCHOR_TAG;\n var fallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '#';\n var toFallback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '/';\n\n // We've already checked the $router in computeTag(), so isRouterLink() indicates a live router.\n // When deferring to Vue Router's router-link, don't use the href attribute at all.\n // We return null, and then remove href from the attributes passed to router-link\n if (isRouterLink(tag)) {\n return null;\n } // Return `href` when explicitly provided\n\n\n if (href) {\n return href;\n } // Reconstruct `href` when `to` used, but no router\n\n\n if (to) {\n // Fallback to `to` prop (if `to` is a string)\n if (isString(to)) {\n return to || toFallback;\n } // Fallback to `to.path + to.query + to.hash` prop (if `to` is an object)\n\n\n if (isPlainObject(to) && (to.path || to.query || to.hash)) {\n var path = toString(to.path);\n var query = stringifyQueryObj(to.query);\n var hash = toString(to.hash);\n hash = !hash || hash.charAt(0) === '#' ? hash : \"#\".concat(hash);\n return \"\".concat(path).concat(query).concat(hash) || toFallback;\n }\n } // If nothing is provided return the fallback\n\n\n return fallback;\n};","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { arrayIncludes, concat } from '../../utils/array';\nimport { isFunction } from '../../utils/inspect';\nimport { keys } from '../../utils/object';\nimport { isRouterLink, computeTag, computeRel, computeHref } from '../../utils/router';\n/**\n * The Link component is used in many other BV components.\n * As such, sharing its props makes supporting all its features easier.\n * However, some components need to modify the defaults for their own purpose.\n * Prefer sharing a fresh copy of the props to ensure mutations\n * do not affect other component references to the props.\n *\n * https://github.com/vuejs/vue-router/blob/dev/src/components/link.js\n * @return {{}}\n */\n\nexport var propsFactory = function propsFactory() {\n return {\n href: {\n type: String,\n default: null\n },\n rel: {\n type: String,\n default: null\n },\n target: {\n type: String,\n default: '_self'\n },\n active: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n },\n // router-link specific props\n to: {\n type: [String, Object],\n default: null\n },\n append: {\n type: Boolean,\n default: false\n },\n replace: {\n type: Boolean,\n default: false\n },\n event: {\n type: [String, Array],\n default: 'click'\n },\n activeClass: {\n type: String // default: undefined\n\n },\n exact: {\n type: Boolean,\n default: false\n },\n exactActiveClass: {\n type: String // default: undefined\n\n },\n routerTag: {\n type: String,\n default: 'a'\n },\n // nuxt-link specific prop(s)\n noPrefetch: {\n type: Boolean,\n default: false\n }\n };\n};\nexport var props = propsFactory(); // Return a fresh copy of <b-link> props\n// Containing only the specified prop(s)\n\nexport var pickLinkProps = function pickLinkProps(propsToPick) {\n var freshLinkProps = propsFactory(); // Normalize everything to array.\n\n propsToPick = concat(propsToPick);\n return keys(freshLinkProps).reduce(function (memo, prop) {\n if (arrayIncludes(propsToPick, prop)) {\n memo[prop] = freshLinkProps[prop];\n }\n\n return memo;\n }, {});\n}; // Return a fresh copy of <b-link> props\n// Keeping all but the specified omitting prop(s)\n\nexport var omitLinkProps = function omitLinkProps(propsToOmit) {\n var freshLinkProps = propsFactory(); // Normalize everything to array.\n\n propsToOmit = concat(propsToOmit);\n return keys(props).reduce(function (memo, prop) {\n if (!arrayIncludes(propsToOmit, prop)) {\n memo[prop] = freshLinkProps[prop];\n }\n\n return memo;\n }, {});\n};\n\nvar clickHandlerFactory = function clickHandlerFactory(_ref) {\n var disabled = _ref.disabled,\n tag = _ref.tag,\n href = _ref.href,\n suppliedHandler = _ref.suppliedHandler,\n parent = _ref.parent;\n return function onClick(evt) {\n var _arguments = arguments;\n\n if (disabled && evt instanceof Event) {\n // Stop event from bubbling up.\n evt.stopPropagation(); // Kill the event loop attached to this specific EventTarget.\n // Needed to prevent vue-router for doing its thing\n\n evt.stopImmediatePropagation();\n } else {\n if (isRouterLink(tag) && evt.target.__vue__) {\n // Router links do not emit instance 'click' events, so we\n // add in an $emit('click', evt) on it's vue instance\n\n /* istanbul ignore next: difficult to test, but we know it works */\n evt.target.__vue__.$emit('click', evt);\n } // Call the suppliedHandler(s), if any provided\n\n\n concat(suppliedHandler).filter(function (h) {\n return isFunction(h);\n }).forEach(function (handler) {\n handler.apply(void 0, _toConsumableArray(_arguments));\n });\n parent.$root.$emit('clicked::link', evt);\n }\n\n if (!isRouterLink(tag) && href === '#' || disabled) {\n // Stop scroll-to-top behavior or navigation on regular links\n // when href is just '#'\n evt.preventDefault();\n }\n };\n}; // @vue/component\n\n\nexport default Vue.extend({\n name: 'BLink',\n functional: true,\n props: propsFactory(),\n render: function render(h, _ref2) {\n var props = _ref2.props,\n data = _ref2.data,\n parent = _ref2.parent,\n children = _ref2.children;\n var tag = computeTag(props, parent);\n var rel = computeRel(props);\n var href = computeHref(props, tag);\n var eventType = isRouterLink(tag) ? 'nativeOn' : 'on';\n var suppliedHandler = (data[eventType] || {}).click;\n var handlers = {\n click: clickHandlerFactory({\n tag: tag,\n href: href,\n disabled: props.disabled,\n suppliedHandler: suppliedHandler,\n parent: parent\n })\n };\n var componentData = mergeData(data, {\n class: {\n active: props.active,\n disabled: props.disabled\n },\n attrs: {\n rel: rel,\n target: props.target,\n tabindex: props.disabled ? '-1' : data.attrs ? data.attrs.tabindex : null,\n 'aria-disabled': props.disabled ? 'true' : null\n },\n props: _objectSpread({}, props, {\n tag: props.routerTag\n })\n }); // If href attribute exists on router-link (even undefined or null) it fails working on SSR\n // So we explicitly add it here if needed (i.e. if computeHref() is truthy)\n\n if (href) {\n componentData.attrs.href = href;\n } else {\n // Ensure the prop HREF does not exist for router links\n delete componentData.props.href;\n } // We want to overwrite any click handler since our callback\n // will invoke the user supplied handler if !props.disabled\n\n\n componentData[eventType] = _objectSpread({}, componentData[eventType] || {}, handlers);\n return h(tag, componentData, children);\n }\n});","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport pluckProps from '../../utils/pluck-props';\nimport { concat } from '../../utils/array';\nimport { getComponentConfig } from '../../utils/config';\nimport { addClass, removeClass } from '../../utils/dom';\nimport { isBoolean, isFunction } from '../../utils/inspect';\nimport { keys } from '../../utils/object';\nimport BLink, { propsFactory as linkPropsFactory } from '../link/link'; // --- Constants --\n\nvar NAME = 'BButton';\nvar btnProps = {\n block: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n },\n size: {\n type: String,\n default: null\n },\n variant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'variant');\n }\n },\n type: {\n type: String,\n default: 'button'\n },\n tag: {\n type: String,\n default: 'button'\n },\n pill: {\n type: Boolean,\n default: false\n },\n pressed: {\n // tri-state prop: true, false or null\n // => on, off, not a toggle\n type: Boolean,\n default: null\n }\n};\nvar linkProps = linkPropsFactory();\ndelete linkProps.href.default;\ndelete linkProps.to.default;\nvar linkPropKeys = keys(linkProps);\nexport var props = _objectSpread({}, linkProps, btnProps); // --- Helper methods ---\n// Focus handler for toggle buttons. Needs class of 'focus' when focused.\n\nvar handleFocus = function handleFocus(evt) {\n if (evt.type === 'focusin') {\n addClass(evt.target, 'focus');\n } else if (evt.type === 'focusout') {\n removeClass(evt.target, 'focus');\n }\n}; // Is the requested button a link?\n\n\nvar isLink = function isLink(props) {\n // If tag prop is set to `a`, we use a b-link to get proper disabled handling\n return Boolean(props.href || props.to || props.tag && String(props.tag).toLowerCase() === 'a');\n}; // Is the button to be a toggle button?\n\n\nvar isToggle = function isToggle(props) {\n return isBoolean(props.pressed);\n}; // Is the button \"really\" a button?\n\n\nvar isButton = function isButton(props) {\n if (isLink(props)) {\n return false;\n } else if (props.tag && String(props.tag).toLowerCase() !== 'button') {\n return false;\n }\n\n return true;\n}; // Is the requested tag not a button or link?\n\n\nvar isNonStandardTag = function isNonStandardTag(props) {\n return !isLink(props) && !isButton(props);\n}; // Compute required classes (non static classes)\n\n\nvar computeClass = function computeClass(props) {\n var _ref;\n\n return [\"btn-\".concat(props.variant || getComponentConfig(NAME, 'variant')), (_ref = {}, _defineProperty(_ref, \"btn-\".concat(props.size), Boolean(props.size)), _defineProperty(_ref, 'btn-block', props.block), _defineProperty(_ref, 'rounded-pill', props.pill), _defineProperty(_ref, \"disabled\", props.disabled), _defineProperty(_ref, \"active\", props.pressed), _ref)];\n}; // Compute the link props to pass to b-link (if required)\n\n\nvar computeLinkProps = function computeLinkProps(props) {\n return isLink(props) ? pluckProps(linkPropKeys, props) : null;\n}; // Compute the attributes for a button\n\n\nvar computeAttrs = function computeAttrs(props, data) {\n var button = isButton(props);\n var link = isLink(props);\n var toggle = isToggle(props);\n var nonStdTag = isNonStandardTag(props);\n var role = data.attrs && data.attrs['role'] ? data.attrs['role'] : null;\n var tabindex = data.attrs ? data.attrs['tabindex'] : null;\n\n if (nonStdTag) {\n tabindex = '0';\n }\n\n return {\n // Type only used for \"real\" buttons\n type: button && !link ? props.type : null,\n // Disabled only set on \"real\" buttons\n disabled: button ? props.disabled : null,\n // We add a role of button when the tag is not a link or button for ARIA.\n // Don't bork any role provided in data.attrs when isLink or isButton\n role: nonStdTag ? 'button' : role,\n // We set the aria-disabled state for non-standard tags\n 'aria-disabled': nonStdTag ? String(props.disabled) : null,\n // For toggles, we need to set the pressed state for ARIA\n 'aria-pressed': toggle ? String(props.pressed) : null,\n // autocomplete off is needed in toggle mode to prevent some browsers from\n // remembering the previous setting when using the back button.\n autocomplete: toggle ? 'off' : null,\n // Tab index is used when the component is not a button.\n // Links are tabbable, but don't allow disabled, while non buttons or links\n // are not tabbable, so we mimic that functionality by disabling tabbing\n // when disabled, and adding a tabindex of '0' to non buttons or non links.\n tabindex: props.disabled && !button ? '-1' : tabindex\n };\n}; // @vue/component\n\n\nexport default Vue.extend({\n name: NAME,\n functional: true,\n props: props,\n render: function render(h, _ref2) {\n var props = _ref2.props,\n data = _ref2.data,\n listeners = _ref2.listeners,\n children = _ref2.children;\n var toggle = isToggle(props);\n var link = isLink(props);\n var on = {\n click: function click(e) {\n /* istanbul ignore if: blink/button disabled should handle this */\n if (props.disabled && e instanceof Event) {\n e.stopPropagation();\n e.preventDefault();\n } else if (toggle && listeners && listeners['update:pressed']) {\n // Send .sync updates to any \"pressed\" prop (if .sync listeners)\n // Concat will normalize the value to an array\n // without double wrapping an array value in an array.\n concat(listeners['update:pressed']).forEach(function (fn) {\n if (isFunction(fn)) {\n fn(!props.pressed);\n }\n });\n }\n }\n };\n\n if (toggle) {\n on.focusin = handleFocus;\n on.focusout = handleFocus;\n }\n\n var componentData = {\n staticClass: 'btn',\n class: computeClass(props),\n props: computeLinkProps(props),\n attrs: computeAttrs(props, data),\n on: on\n };\n return h(link ? BLink : props.tag, mergeData(data, componentData), children);\n }\n});","import { isFunction } from './inspect'; // Note for functional components:\n// In functional components, `slots` is a function so it must be called\n// first before passing to the below methods. `scopedSlots` is always an\n// object and may be undefined (for Vue < 2.6.x)\n\n/**\n * Returns true if either scoped or unscoped named slot eists\n *\n * @param {String} name\n * @param {Object} scopedSlots\n * @param {Object} slots\n * @returns {Array|undefined} vNodes\n */\n\nvar hasNormalizedSlot = function hasNormalizedSlot(name) {\n var $scopedSlots = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var $slots = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n // Returns true if the either a $scopedSlot or $slot exists with the specified name\n return Boolean($scopedSlots[name] || $slots[name]);\n};\n/**\n * Returns vNodes for named slot either scoped or unscoped\n *\n * @param {String} name\n * @param {String} scope\n * @param {Object} scopedSlots\n * @param {Object} slots\n * @returns {Array|undefined} vNodes\n */\n\n\nvar normalizeSlot = function normalizeSlot(name) {\n var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var $scopedSlots = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var $slots = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n // Note: in Vue 2.6.x, all names slots are also scoped slots\n var slot = $scopedSlots[name] || $slots[name];\n return isFunction(slot) ? slot(scope) : slot;\n}; // Named exports\n\n\nexport { hasNormalizedSlot, normalizeSlot }; // Default export (backwards compatability)\n\nexport default normalizeSlot;","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; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { getComponentConfig } from '../../utils/config';\nimport { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot';\nvar NAME = 'BButtonClose';\nvar props = {\n disabled: {\n type: Boolean,\n default: false\n },\n ariaLabel: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'ariaLabel');\n }\n },\n textVariant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'textVariant');\n }\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: NAME,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n listeners = _ref.listeners,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n var componentData = {\n staticClass: 'close',\n class: _defineProperty({}, \"text-\".concat(props.textVariant), props.textVariant),\n attrs: {\n type: 'button',\n disabled: props.disabled,\n 'aria-label': props.ariaLabel ? String(props.ariaLabel) : null\n },\n on: {\n click: function click(e) {\n // Ensure click on button HTML content is also disabled\n\n /* istanbul ignore if: bug in JSDOM still emits click on inner element */\n if (props.disabled && e instanceof Event) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n } // Careful not to override the default slot with innerHTML\n\n };\n\n if (!hasNormalizedSlot('default', $scopedSlots, $slots)) {\n componentData.domProps = {\n innerHTML: '×'\n };\n }\n\n return h('button', mergeData(data, componentData), normalizeSlot('default', {}, $scopedSlots, $slots));\n }\n});","/*\n * SSR Safe Client Side ID attribute generation\n * id's can only be generated client side, after mount.\n * this._uid is not synched between server and client.\n */\n// @vue/component\nexport default {\n props: {\n id: {\n type: String,\n default: null\n }\n },\n data: function data() {\n return {\n localId_: null\n };\n },\n computed: {\n safeId: function safeId() {\n // Computed property that returns a dynamic function for creating the ID.\n // Reacts to changes in both .id and .localId_ And regens a new function\n var id = this.id || this.localId_; // We return a function that accepts an optional suffix string\n // So this computed prop looks and works like a method!!!\n // But benefits from Vue's Computed prop caching\n\n var fn = function fn(suffix) {\n if (!id) {\n return null;\n }\n\n suffix = String(suffix || '').replace(/\\s+/g, '_');\n return suffix ? id + '_' + suffix : id;\n };\n\n return fn;\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n // mounted only occurs client side\n this.$nextTick(function () {\n // Update dom with auto ID after dom loaded to prevent\n // SSR hydration errors.\n _this.localId_ = \"__BVID__\".concat(_this._uid);\n });\n }\n};","/**\n * Issue #569: collapse::toggle::state triggered too many times\n * @link https://github.com/bootstrap-vue/bootstrap-vue/issues/569\n */\n// @vue/component\nexport default {\n methods: {\n /**\n * Safely register event listeners on the root Vue node.\n * While Vue automatically removes listeners for individual components,\n * when a component registers a listener on root and is destroyed,\n * this orphans a callback because the node is gone,\n * but the root does not clear the callback.\n *\n * When registering a $root listener, it also registers a listener on\n * the component's `beforeDestroy` hook to automatically remove the\n * event listener from the $root instance.\n *\n * @param {string} event\n * @param {function} callback\n * @chainable\n */\n listenOnRoot: function listenOnRoot(event, callback) {\n var _this = this;\n\n this.$root.$on(event, callback);\n this.$on('hook:beforeDestroy', function () {\n _this.$root.$off(event, callback);\n }); // Return this for easy chaining\n\n return this;\n },\n\n /**\n * Safely register a $once event listener on the root Vue node.\n * While Vue automatically removes listeners for individual components,\n * when a component registers a listener on root and is destroyed,\n * this orphans a callback because the node is gone,\n * but the root does not clear the callback.\n *\n * When registering a $root listener, it also registers a listener on\n * the component's `beforeDestroy` hook to automatically remove the\n * event listener from the $root instance.\n *\n * @param {string} event\n * @param {function} callback\n * @chainable\n */\n listenOnRootOnce: function listenOnRootOnce(event, callback) {\n var _this2 = this;\n\n this.$root.$once(event, callback);\n this.$on('hook:beforeDestroy', function () {\n _this2.$root.$off(event, callback);\n }); // Return this for easy chaining\n\n return this;\n },\n\n /**\n * Convenience method for calling vm.$emit on vm.$root.\n * @param {string} event\n * @param {*} args\n * @chainable\n */\n emitOnRoot: function emitOnRoot(event) {\n var _this$$root;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n (_this$$root = this.$root).$emit.apply(_this$$root, [event].concat(args)); // Return this for easy chaining\n\n\n return this;\n }\n }\n};","import { hasNormalizedSlot as _hasNormalizedSlot, normalizeSlot as _normalizeSlot } from '../utils/normalize-slot';\nimport { concat } from '../utils/array';\nexport default {\n methods: {\n hasNormalizedSlot: function hasNormalizedSlot(name) {\n // Returns true if the either a $scopedSlot or $slot exists with the specified name\n return _hasNormalizedSlot(name, this.$scopedSlots, this.$slots);\n },\n normalizeSlot: function normalizeSlot(name) {\n var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // Returns an array of rendered vNodes if slot found.\n // Returns undefined if not found.\n var vNodes = _normalizeSlot(name, scope, this.$scopedSlots, this.$slots);\n\n return vNodes ? concat(vNodes) : vNodes;\n }\n }\n};","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\n// Generic Bootstrap V4 fade (no-fade) transition component\nimport Vue from './vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { isPlainObject } from './inspect';\nvar NO_FADE_PROPS = {\n name: '',\n enterClass: '',\n enterActiveClass: '',\n enterToClass: 'show',\n leaveClass: 'show',\n leaveActiveClass: '',\n leaveToClass: ''\n};\n\nvar FADE_PROPS = _objectSpread({}, NO_FADE_PROPS, {\n enterActiveClass: 'fade',\n leaveActiveClass: 'fade'\n});\n\nexport var BVTransition = Vue.extend({\n name: 'BVTransition',\n functional: true,\n props: {\n noFade: {\n // Only applicable to the built in transition\n // Has no effect if `trans-props` provided\n type: Boolean,\n default: false\n },\n mode: {\n type: String // default: undefined\n\n },\n // For user supplied transitions (if needed)\n transProps: {\n type: Object,\n default: null\n }\n },\n render: function render(h, _ref) {\n var children = _ref.children,\n data = _ref.data,\n listeners = _ref.listeners,\n props = _ref.props;\n var transProps = props.transProps;\n\n if (!isPlainObject(transProps)) {\n transProps = props.noFade ? NO_FADE_PROPS : FADE_PROPS;\n }\n\n transProps = _objectSpread({\n mode: props.mode\n }, transProps, {\n // We always need `css` true\n css: true\n });\n return h('transition', // Any listeners will get merged here\n mergeData(data, {\n props: transProps\n }), children);\n }\n});\nexport default BVTransition;","/*\n * Key Codes (events)\n */\nvar KEY_CODES = {\n SPACE: 32,\n ENTER: 13,\n ESC: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n PAGEUP: 33,\n PAGEDOWN: 34,\n HOME: 36,\n END: 35,\n TAB: 9,\n SHIFT: 16,\n CTRL: 17,\n BACKSPACE: 8,\n ALT: 18,\n PAUSE: 19,\n BREAK: 19,\n INSERT: 45,\n INS: 45,\n DELETE: 46\n};\nexport default KEY_CODES;","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport { MutationObs, isElement } from './dom';\nimport { warnNoMutationObserverSupport } from './warn';\n/**\n * Observe a DOM element changes, falls back to eventListener mode\n * @param {Element} el The DOM element to observe\n * @param {Function} callback callback to be called on change\n * @param {object} [opts={childList: true, subtree: true}] observe options\n * @see http://stackoverflow.com/questions/3219758\n */\n\nvar observeDom = function observeDom(el, callback, opts)\n/* istanbul ignore next: difficult to test in JSDOM */\n{\n // Handle cases where we might be passed a Vue instance\n el = el ? el.$el || el : null; // Early exit when we have no element\n\n /* istanbul ignore next: difficult to test in JSDOM */\n\n if (!isElement(el)) {\n return null;\n } // Exit and throw a warning when `MutationObserver` isn't available\n\n\n if (warnNoMutationObserverSupport('observeDom')) {\n return null;\n } // Define a new observer\n\n\n var obs = new MutationObs(function (mutations) {\n var changed = false; // A mutation can contain several change records, so we loop\n // through them to see what has changed\n // We break out of the loop early if any \"significant\" change\n // has been detected\n\n for (var i = 0; i < mutations.length && !changed; i++) {\n // The mutation record\n var mutation = mutations[i]; // Mutation type\n\n var type = mutation.type; // DOM node (could be any DOM node type - HTMLElement, Text, comment, etc.)\n\n var target = mutation.target; // Detect whether a change happened based on type and target\n\n if (type === 'characterData' && target.nodeType === Node.TEXT_NODE) {\n // We ignore nodes that are not TEXT (i.e. comments, etc)\n // as they don't change layout\n changed = true;\n } else if (type === 'attributes') {\n changed = true;\n } else if (type === 'childList' && (mutation.addedNodes.length > 0 || mutation.removedNodes.length > 0)) {\n // This includes HTMLElement and text nodes being\n // added/removed/re-arranged\n changed = true;\n }\n } // We only call the callback if a change that could affect\n // layout/size truely happened\n\n\n if (changed) {\n callback();\n }\n }); // Have the observer observe foo for changes in children, etc\n\n obs.observe(el, _objectSpread({\n childList: true,\n subtree: true\n }, opts)); // We return a reference to the observer so that `obs.disconnect()`\n // can be called if necessary\n // To reduce overhead when the root element is hidden\n\n return obs;\n};\n\nexport default observeDom;","/**\n * SSR safe types\n */\nimport { hasWindowSupport } from './env';\nvar w = hasWindowSupport ? window : {};\nexport var HTMLElement = w.HTMLElement || Object;","import Vue from './vue';\nimport { concat } from './array';\nimport { select } from './dom';\nimport { isBrowser } from './env';\nimport { isFunction, isString } from './inspect';\nimport { HTMLElement } from './safe-types';\nimport normalizeSlotMixin from '../mixins/normalize-slot'; // BTransporterSingle/BTransporterTargetSingle:\n//\n// Single root node portaling of content, which retains parent/child hierarchy,\n// Unlike Portal-Vue where portaled content is no longer a descendent of\n// it's inteden parent components\n//\n// Private components for use by Tooltips, Popovers and Modals\n//\n// Based on vue-simple-portal\n// https://github.com/LinusBorg/vue-simple-portal\n// Tranporter target used by BTransporterSingle\n// Supports only a single root element.\n// @vue/component\n\nvar BTransporterTargetSingle = Vue.extend({\n // as an abstract component, it doesn't appear in the $parent chain of\n // components, which means the next parent of any component rendered inside\n // of this one will be the parent from which is was portal'd\n abstract: true,\n name: 'BTransporterTargetSingle',\n props: {\n nodes: {\n // Even though we only support a single root element,\n // vNodes are always passed as an array\n type: [Array, Function] // default: undefined\n\n }\n },\n data: function data(vm) {\n return {\n updatedNodes: vm.nodes\n };\n },\n destroyed: function destroyed() {\n var el = this.$el;\n el && el.parentNode && el.parentNode.removeChild(el);\n },\n render: function render(h) {\n var nodes = isFunction(this.updatedNodes) ? this.updatedNodes({}) : this.updatedNodes;\n nodes = concat(nodes).filter(Boolean);\n /* istanbul ignore else */\n\n if (nodes && nodes.length > 0 && !nodes[0].text) {\n return nodes[0];\n } else {\n return h(false);\n }\n }\n}); // This omponent has no root element, so only a single VNode is allowed\n// @vue/component\n\nexport var BTransporterSingle = Vue.extend({\n name: 'BTransporterSingle',\n mixins: [normalizeSlotMixin],\n props: {\n disabled: {\n type: Boolean,\n default: false\n },\n container: {\n // String: CSS selector,\n // HTMLElement: Element reference\n // Mainly needed for tooltips/popovers inside modals\n type: [String, HTMLElement],\n default: 'body'\n },\n tag: {\n // This should be set to match the root element type\n type: String,\n default: 'div'\n }\n },\n watch: {\n disabled: {\n immediate: true,\n handler: function handler(disabled) {\n disabled ? this.unmountTarget() : this.$nextTick(this.mountTarget);\n }\n }\n },\n created: function created() {\n this._bv_defaultFn = null;\n this._bv_target = null;\n },\n beforeMount: function beforeMount() {\n this.mountTarget();\n },\n updated: function updated() {\n var _this = this;\n\n // Placed in a nextTick to ensure that children have completed\n // updating before rendering in the target\n this.$nextTick(function () {\n _this.updateTarget();\n });\n },\n beforeDestroy: function beforeDestroy() {\n this.unmountTarget();\n this._bv_defaultFn = null;\n },\n methods: {\n // Get the element which the target should be appended to\n getContainer: function getContainer() {\n /* istanbul ignore else */\n if (isBrowser) {\n var container = this.container;\n return isString(container) ? select(container) : container;\n } else {\n return null;\n }\n },\n // Mount the target\n mountTarget: function mountTarget() {\n if (!this._bv_target) {\n var container = this.getContainer();\n\n if (container) {\n var el = document.createElement('div');\n container.appendChild(el);\n this._bv_target = new BTransporterTargetSingle({\n el: el,\n parent: this,\n propsData: {\n // Initial nodes to be rendered\n nodes: concat(this.normalizeSlot('default', {}))\n }\n });\n }\n }\n },\n // Update the content of the target\n updateTarget: function updateTarget() {\n if (isBrowser && this._bv_target) {\n var defaultFn = this.$scopedSlots.default;\n\n if (!this.disabled) {\n /* istanbul ignore else: only applicable in Vue 2.5.x */\n if (defaultFn && this._bv_defaultFn !== defaultFn) {\n // We only update the target component if the scoped slot\n // function is a fresh one. The new slot syntax (since Vue 2.6)\n // can cache unchanged slot functions and we want to respect that here.\n this._bv_target.updatedNodes = defaultFn;\n } else if (!defaultFn) {\n // We also need to be back compatable with non-scoped default slot (i.e. 2.5.x)\n this._bv_target.updatedNodes = this.$slots.default;\n }\n } // Update the scoped slot function cache\n\n\n this._bv_defaultFn = defaultFn;\n }\n },\n // Unmount the target\n unmountTarget: function unmountTarget() {\n if (this._bv_target) {\n this._bv_target.$destroy();\n\n this._bv_target = null;\n }\n }\n },\n render: function render(h) {\n if (this.disabled) {\n var nodes = concat(this.normalizeSlot('default', {})).filter(Boolean);\n\n if (nodes.length > 0 && !nodes[0].text) {\n return nodes[0];\n }\n }\n\n return h(false);\n }\n});","var stripTagsRegex = /(<([^>]+)>)/gi; // Removes any thing that looks like an HTML tag from the supplied string\n\nexport var stripTags = function stripTags() {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n return String(text).replace(stripTagsRegex, '');\n}; // Generate a domProps object for either innerHTML, textContent or nothing\n\nexport var htmlOrText = function htmlOrText(innerHTML, textContent) {\n return innerHTML ? {\n innerHTML: innerHTML\n } : textContent ? {\n textContent: textContent\n } : {};\n};","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; }\n\nimport Vue from '../../utils/vue';\nimport modalManager from './helpers/modal-manager';\nimport BvModalEvent from './helpers/bv-modal-event.class';\nimport BButton from '../button/button';\nimport BButtonClose from '../button/button-close';\nimport idMixin from '../../mixins/id';\nimport listenOnRootMixin from '../../mixins/listen-on-root';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport BVTransition from '../../utils/bv-transition';\nimport KeyCodes from '../../utils/key-codes';\nimport observeDom from '../../utils/observe-dom';\nimport { BTransporterSingle } from '../../utils/transporter';\nimport { isBrowser } from '../../utils/env';\nimport { isString } from '../../utils/inspect';\nimport { getComponentConfig } from '../../utils/config';\nimport { stripTags } from '../../utils/html';\nimport { contains, eventOff, eventOn, isVisible, select } from '../../utils/dom'; // --- Constants ---\n\nvar NAME = 'BModal'; // ObserveDom config to detect changes in modal content\n// so that we can adjust the modal padding if needed\n\nvar OBSERVER_CONFIG = {\n subtree: true,\n childList: true,\n characterData: true,\n attributes: true,\n attributeFilter: ['style', 'class'] // Options for DOM event listeners\n\n};\nvar EVT_OPTIONS = {\n passive: true,\n capture: false\n};\nexport var props = {\n title: {\n type: String,\n default: ''\n },\n titleHtml: {\n type: String\n },\n titleTag: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'titleTag');\n }\n },\n size: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'size');\n }\n },\n centered: {\n type: Boolean,\n default: false\n },\n scrollable: {\n type: Boolean,\n default: false\n },\n buttonSize: {\n type: String,\n default: ''\n },\n noStacking: {\n type: Boolean,\n default: false\n },\n noFade: {\n type: Boolean,\n default: false\n },\n noCloseOnBackdrop: {\n type: Boolean,\n default: false\n },\n noCloseOnEsc: {\n type: Boolean,\n default: false\n },\n noEnforceFocus: {\n type: Boolean,\n default: false\n },\n headerBgVariant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'headerBgVariant');\n }\n },\n headerBorderVariant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'headerBorderVariant');\n }\n },\n headerTextVariant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'headerTextVariant');\n }\n },\n headerCloseVariant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'headerCloseVariant');\n }\n },\n headerClass: {\n type: [String, Array],\n default: null\n },\n bodyBgVariant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'bodyBgVariant');\n }\n },\n bodyTextVariant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'bodyTextVariant');\n }\n },\n modalClass: {\n type: [String, Array],\n default: null\n },\n dialogClass: {\n type: [String, Array],\n default: null\n },\n contentClass: {\n type: [String, Array],\n default: null\n },\n bodyClass: {\n type: [String, Array],\n default: null\n },\n footerBgVariant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'footerBgVariant');\n }\n },\n footerBorderVariant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'footerBorderVariant');\n }\n },\n footerTextVariant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'footerTextVariant');\n }\n },\n footerClass: {\n type: [String, Array],\n default: null\n },\n hideHeader: {\n type: Boolean,\n default: false\n },\n hideFooter: {\n type: Boolean,\n default: false\n },\n hideHeaderClose: {\n type: Boolean,\n default: false\n },\n hideBackdrop: {\n type: Boolean,\n default: false\n },\n okOnly: {\n type: Boolean,\n default: false\n },\n okDisabled: {\n type: Boolean,\n default: false\n },\n cancelDisabled: {\n type: Boolean,\n default: false\n },\n visible: {\n type: Boolean,\n default: false\n },\n returnFocus: {\n // type: Object,\n default: null\n },\n headerCloseLabel: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'headerCloseLabel');\n }\n },\n cancelTitle: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'cancelTitle');\n }\n },\n cancelTitleHtml: {\n type: String\n },\n okTitle: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'okTitle');\n }\n },\n okTitleHtml: {\n type: String\n },\n cancelVariant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'cancelVariant');\n }\n },\n okVariant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'okVariant');\n }\n },\n lazy: {\n type: Boolean,\n default: false\n },\n busy: {\n type: Boolean,\n default: false\n },\n static: {\n type: Boolean,\n default: false\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: NAME,\n mixins: [idMixin, listenOnRootMixin, normalizeSlotMixin],\n model: {\n prop: 'visible',\n event: 'change'\n },\n props: props,\n data: function data() {\n return {\n isHidden: true,\n // If modal should not be in document\n isVisible: false,\n // Controls modal visible state\n isTransitioning: false,\n // Used for style control\n isShow: false,\n // Used for style control\n isBlock: false,\n // Used for style control\n isOpening: false,\n // To signal that the modal is in the process of opening\n isClosing: false,\n // To signal that the modal is in the process of closing\n ignoreBackdropClick: false,\n // Used to signify if click out listener should ignore the click\n isModalOverflowing: false,\n return_focus: this.returnFocus || null,\n // The following items are controlled by the modalManager instance\n scrollbarWidth: 0,\n zIndex: modalManager.getBaseZIndex(),\n isTop: true,\n isBodyOverflowing: false\n };\n },\n computed: {\n modalClasses: function modalClasses() {\n return [{\n fade: !this.noFade,\n show: this.isShow,\n 'd-block': this.isBlock\n }, this.modalClass];\n },\n modalStyles: function modalStyles() {\n var sbWidth = \"\".concat(this.scrollbarWidth, \"px\");\n return {\n paddingLeft: !this.isBodyOverflowing && this.isModalOverflowing ? sbWidth : '',\n paddingRight: this.isBodyOverflowing && !this.isModalOverflowing ? sbWidth : ''\n };\n },\n dialogClasses: function dialogClasses() {\n var _ref;\n\n return [(_ref = {}, _defineProperty(_ref, \"modal-\".concat(this.size), Boolean(this.size)), _defineProperty(_ref, 'modal-dialog-centered', this.centered), _defineProperty(_ref, 'modal-dialog-scrollable', this.scrollable), _ref), this.dialogClass];\n },\n headerClasses: function headerClasses() {\n var _ref2;\n\n return [(_ref2 = {}, _defineProperty(_ref2, \"bg-\".concat(this.headerBgVariant), Boolean(this.headerBgVariant)), _defineProperty(_ref2, \"text-\".concat(this.headerTextVariant), Boolean(this.headerTextVariant)), _defineProperty(_ref2, \"border-\".concat(this.headerBorderVariant), Boolean(this.headerBorderVariant)), _ref2), this.headerClass];\n },\n bodyClasses: function bodyClasses() {\n var _ref3;\n\n return [(_ref3 = {}, _defineProperty(_ref3, \"bg-\".concat(this.bodyBgVariant), Boolean(this.bodyBgVariant)), _defineProperty(_ref3, \"text-\".concat(this.bodyTextVariant), Boolean(this.bodyTextVariant)), _ref3), this.bodyClass];\n },\n footerClasses: function footerClasses() {\n var _ref4;\n\n return [(_ref4 = {}, _defineProperty(_ref4, \"bg-\".concat(this.footerBgVariant), Boolean(this.footerBgVariant)), _defineProperty(_ref4, \"text-\".concat(this.footerTextVariant), Boolean(this.footerTextVariant)), _defineProperty(_ref4, \"border-\".concat(this.footerBorderVariant), Boolean(this.footerBorderVariant)), _ref4), this.footerClass];\n },\n modalOuterStyle: function modalOuterStyle() {\n // Styles needed for proper stacking of modals\n return {\n position: 'absolute',\n zIndex: this.zIndex\n };\n },\n slotScope: function slotScope() {\n return {\n ok: this.onOk,\n cancel: this.onCancel,\n close: this.onClose,\n hide: this.hide,\n visible: this.isVisible\n };\n }\n },\n watch: {\n visible: function visible(newVal, oldVal) {\n if (newVal !== oldVal) {\n this[newVal ? 'show' : 'hide']();\n }\n }\n },\n created: function created() {\n // Define non-reactive properties\n this._observer = null;\n },\n mounted: function mounted() {\n // Set initial z-index as queried from the DOM\n this.zIndex = modalManager.getBaseZIndex(); // Listen for events from others to either open or close ourselves\n // and listen to all modals to enable/disable enforce focus\n\n this.listenOnRoot('bv::show::modal', this.showHandler);\n this.listenOnRoot('bv::hide::modal', this.hideHandler);\n this.listenOnRoot('bv::toggle::modal', this.toggleHandler); // Listen for `bv:modal::show events`, and close ourselves if the\n // opening modal not us\n\n this.listenOnRoot('bv::modal::show', this.modalListener); // Initially show modal?\n\n if (this.visible === true) {\n this.$nextTick(this.show);\n }\n },\n beforeDestroy: function beforeDestroy() {\n // Ensure everything is back to normal\n if (this._observer) {\n this._observer.disconnect();\n\n this._observer = null;\n }\n\n this.setEnforceFocus(false);\n this.setResizeEvent(false);\n\n if (this.isVisible) {\n this.isVisible = false;\n this.isShow = false;\n this.isTransitioning = false;\n }\n },\n methods: {\n updateModel: function updateModel(val) {\n if (val !== this.visible) {\n this.$emit('change', val);\n }\n },\n // Public Methods\n show: function show() {\n if (this.isVisible || this.isOpening) {\n // If already open, on in the process of opening, do nothing\n\n /* istanbul ignore next */\n return;\n }\n\n if (this.isClosing) {\n // If we are in the process of closing, wait until hidden before re-opening\n\n /* istanbul ignore next: very difficult to test */\n this.$once('hidden', this.show);\n /* istanbul ignore next */\n\n return;\n }\n\n this.isOpening = true; // Set the element to return focus to when closed\n\n this.return_focus = this.return_focus || this.getActiveElement();\n var showEvt = new BvModalEvent('show', {\n cancelable: true,\n vueTarget: this,\n target: this.$refs.modal,\n relatedTarget: null,\n componentId: this.safeId()\n });\n this.emitEvent(showEvt); // Don't show if canceled\n\n if (showEvt.defaultPrevented || this.isVisible) {\n this.isOpening = false; // Ensure the v-model reflects the current state\n\n this.updateModel(false);\n return;\n } // Show the modal\n\n\n this.doShow();\n },\n hide: function hide() {\n var trigger = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n if (!this.isVisible || this.isClosing) {\n /* istanbul ignore next */\n return;\n }\n\n this.isClosing = true;\n var hideEvt = new BvModalEvent('hide', {\n cancelable: trigger !== 'FORCE',\n vueTarget: this,\n target: this.$refs.modal,\n relatedTarget: null,\n componentId: this.safeId(),\n trigger: trigger || null\n }); // We emit specific event for one of the three built-in buttons\n\n if (trigger === 'ok') {\n this.$emit('ok', hideEvt);\n } else if (trigger === 'cancel') {\n this.$emit('cancel', hideEvt);\n } else if (trigger === 'headerclose') {\n this.$emit('close', hideEvt);\n }\n\n this.emitEvent(hideEvt); // Hide if not canceled\n\n if (hideEvt.defaultPrevented || !this.isVisible) {\n this.isClosing = false; // Ensure v-model reflects current state\n\n this.updateModel(true);\n return;\n } // Stop observing for content changes\n\n\n if (this._observer) {\n this._observer.disconnect();\n\n this._observer = null;\n } // Trigger the hide transition\n\n\n this.isVisible = false; // Update the v-model\n\n this.updateModel(false);\n },\n // Public method to toggle modal visibility\n toggle: function toggle(triggerEl) {\n if (triggerEl) {\n this.return_focus = triggerEl;\n }\n\n if (this.isVisible) {\n this.hide('toggle');\n } else {\n this.show();\n }\n },\n // Private method to get the current document active element\n getActiveElement: function getActiveElement() {\n if (isBrowser) {\n var activeElement = document.activeElement; // Note: On IE11, `document.activeElement` may be null.\n // So we test it for truthiness first.\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/3206\n // Returning focus to document.body may cause unwanted scrolls, so we\n // exclude setting focus on body\n\n if (activeElement && activeElement !== document.body && activeElement.focus) {\n // Preset the fallback return focus value if it is not set\n // `document.activeElement` should be the trigger element that was clicked or\n // in the case of using the v-model, which ever element has current focus\n // Will be overridden by some commands such as toggle, etc.\n return activeElement;\n }\n }\n\n return null;\n },\n // Private method to finish showing modal\n doShow: function doShow() {\n var _this = this;\n\n /* istanbul ignore next: commenting out for now until we can test stacking */\n if (modalManager.modalsAreOpen && this.noStacking) {\n // If another modal(s) is already open, wait for it(them) to close\n this.listenOnRootOnce('bv::modal::hidden', this.doShow);\n return;\n }\n\n modalManager.registerModal(this); // Place modal in DOM\n\n this.isHidden = false;\n this.$nextTick(function () {\n // We do this in `$nextTick()` to ensure the modal is in DOM first\n // before we show it\n _this.isVisible = true;\n _this.isOpening = false; // Update the v-model\n\n _this.updateModel(true);\n\n _this.$nextTick(function () {\n // In a nextTick in case modal content is lazy\n // Observe changes in modal content and adjust if necessary\n _this._observer = observeDom(_this.$refs.content, _this.checkModalOverflow.bind(_this), OBSERVER_CONFIG);\n });\n });\n },\n // Transition handlers\n onBeforeEnter: function onBeforeEnter() {\n this.isTransitioning = true;\n this.setResizeEvent(true);\n },\n onEnter: function onEnter() {\n this.isBlock = true;\n },\n onAfterEnter: function onAfterEnter() {\n var _this2 = this;\n\n this.checkModalOverflow();\n this.isShow = true;\n this.isTransitioning = false;\n this.$nextTick(function () {\n var shownEvt = new BvModalEvent('shown', {\n cancelable: false,\n vueTarget: _this2,\n target: _this2.$refs.modal,\n relatedTarget: null,\n componentId: _this2.safeId()\n });\n\n _this2.emitEvent(shownEvt);\n\n _this2.focusFirst();\n\n _this2.setEnforceFocus(true);\n });\n },\n onBeforeLeave: function onBeforeLeave() {\n this.isTransitioning = true;\n this.setResizeEvent(false);\n },\n onLeave: function onLeave() {\n // Remove the 'show' class\n this.isShow = false;\n },\n onAfterLeave: function onAfterLeave() {\n var _this3 = this;\n\n this.isBlock = false;\n this.isTransitioning = false;\n this.setEnforceFocus(false);\n this.isModalOverflowing = false;\n this.isHidden = true;\n this.$nextTick(function () {\n _this3.returnFocusTo();\n\n _this3.isClosing = false;\n _this3.return_focus = null;\n modalManager.unregisterModal(_this3); // TODO: Need to find a way to pass the `trigger` property\n // to the `hidden` event, not just only the `hide` event\n\n var hiddenEvt = new BvModalEvent('hidden', {\n cancelable: false,\n vueTarget: _this3,\n target: _this3.$el,\n relatedTarget: null,\n componentId: _this3.safeId()\n });\n\n _this3.emitEvent(hiddenEvt);\n });\n },\n // Event emitter\n emitEvent: function emitEvent(bvModalEvt) {\n var type = bvModalEvt.type; // We emit on root first incase a global listener wants to cancel\n // the event first before the instance emits it's event\n\n this.emitOnRoot(\"bv::modal::\".concat(type), bvModalEvt, bvModalEvt.componentId);\n this.$emit(type, bvModalEvt);\n },\n // UI event handlers\n onDialogMousedown: function onDialogMousedown() {\n var _this4 = this;\n\n // Watch to see if the matching mouseup event occurs outside the dialog\n // And if it does, cancel the clickOut handler\n var modal = this.$refs.modal;\n\n var onceModalMouseup = function onceModalMouseup(evt) {\n eventOff(modal, 'mouseup', onceModalMouseup, EVT_OPTIONS);\n\n if (evt.target === modal) {\n _this4.ignoreBackdropClick = true;\n }\n };\n\n eventOn(modal, 'mouseup', onceModalMouseup, EVT_OPTIONS);\n },\n onClickOut: function onClickOut(evt) {\n // Do nothing if not visible, backdrop click disabled, or element\n // that generated click event is no longer in document body\n if (!this.isVisible || this.noCloseOnBackdrop || !contains(document.body, evt.target)) {\n return;\n }\n\n if (this.ignoreBackdropClick) {\n // Click was initiated inside the modal content, but finished outside\n // Set by the above onDialogMousedown handler\n this.ignoreBackdropClick = false;\n return;\n } // If backdrop clicked, hide modal\n\n\n if (!contains(this.$refs.content, evt.target)) {\n this.hide('backdrop');\n }\n },\n onOk: function onOk() {\n this.hide('ok');\n },\n onCancel: function onCancel() {\n this.hide('cancel');\n },\n onClose: function onClose() {\n this.hide('headerclose');\n },\n onEsc: function onEsc(evt) {\n // If ESC pressed, hide modal\n if (evt.keyCode === KeyCodes.ESC && this.isVisible && !this.noCloseOnEsc) {\n this.hide('esc');\n }\n },\n // Document focusin listener\n focusHandler: function focusHandler(evt) {\n // If focus leaves modal, bring it back\n var modal = this.$refs.modal;\n\n if (!this.noEnforceFocus && this.isTop && this.isVisible && modal && document !== evt.target && !contains(modal, evt.target)) {\n modal.focus({\n preventScroll: true\n });\n }\n },\n // Turn on/off focusin listener\n setEnforceFocus: function setEnforceFocus(on) {\n var method = on ? eventOn : eventOff;\n method(document, 'focusin', this.focusHandler, EVT_OPTIONS);\n },\n // Resize listener\n setResizeEvent: function setResizeEvent(on) {\n var method = on ? eventOn : eventOff; // These events should probably also check if\n // body is overflowing\n\n method(window, 'resize', this.checkModalOverflow, EVT_OPTIONS);\n method(window, 'orientationchange', this.checkModalOverflow, EVT_OPTIONS);\n },\n // Root listener handlers\n showHandler: function showHandler(id, triggerEl) {\n if (id === this.id) {\n this.return_focus = triggerEl || this.getActiveElement();\n this.show();\n }\n },\n hideHandler: function hideHandler(id) {\n if (id === this.id) {\n this.hide('event');\n }\n },\n toggleHandler: function toggleHandler(id, triggerEl) {\n if (id === this.id) {\n this.toggle(triggerEl);\n }\n },\n modalListener: function modalListener(bvEvt) {\n // If another modal opens, close this one if stacking not permitted\n if (this.noStacking && bvEvt.vueTarget !== this) {\n this.hide();\n }\n },\n // Focus control handlers\n focusFirst: function focusFirst() {\n // TODO: Add support for finding input element with 'autofocus'\n // attribute set and focus that element\n // Don't try and focus if we are SSR\n if (isBrowser) {\n var modal = this.$refs.modal;\n var activeElement = this.getActiveElement(); // If the modal contains the activeElement, we don't do anything\n\n if (modal && !(activeElement && contains(modal, activeElement))) {\n // Make sure top of modal is showing (if longer than the viewport)\n // and focus the modal content wrapper\n this.$nextTick(function () {\n modal.scrollTop = 0;\n modal.focus();\n });\n }\n }\n },\n returnFocusTo: function returnFocusTo() {\n // Prefer `returnFocus` prop over event specified\n // `return_focus` value\n var el = this.returnFocus || this.return_focus || null; // Is el a string CSS selector?\n\n el = isString(el) ? select(el) : el;\n\n if (el) {\n // Possibly could be a component reference\n el = el.$el || el;\n\n if (isVisible(el) && el.focus) {\n el.focus();\n }\n }\n },\n checkModalOverflow: function checkModalOverflow() {\n if (this.isVisible) {\n var modal = this.$refs.modal;\n this.isModalOverflowing = modal.scrollHeight > document.documentElement.clientHeight;\n }\n },\n makeModal: function makeModal(h) {\n // Modal header\n var header = h(false);\n\n if (!this.hideHeader) {\n var modalHeader = this.normalizeSlot('modal-header', this.slotScope);\n\n if (!modalHeader) {\n var closeButton = h(false);\n\n if (!this.hideHeaderClose) {\n closeButton = h(BButtonClose, {\n props: {\n disabled: this.isTransitioning,\n ariaLabel: this.headerCloseLabel,\n textVariant: this.headerCloseVariant || this.headerTextVariant\n },\n on: {\n click: this.onClose\n }\n }, [this.normalizeSlot('modal-header-close', {})]);\n }\n\n modalHeader = [h(this.titleTag, {\n class: ['modal-title']\n }, [this.normalizeSlot('modal-title', this.slotScope) || this.titleHtml || stripTags(this.title)]), closeButton];\n }\n\n header = h('header', {\n ref: 'header',\n staticClass: 'modal-header',\n class: this.headerClasses,\n attrs: {\n id: this.safeId('__BV_modal_header_')\n }\n }, [modalHeader]);\n } // Modal body\n\n\n var body = h('div', {\n ref: 'body',\n staticClass: 'modal-body',\n class: this.bodyClasses,\n attrs: {\n id: this.safeId('__BV_modal_body_')\n }\n }, this.normalizeSlot('default', this.slotScope)); // Modal footer\n\n var footer = h(false);\n\n if (!this.hideFooter) {\n var modalFooter = this.normalizeSlot('modal-footer', this.slotScope);\n\n if (!modalFooter) {\n var cancelButton = h(false);\n\n if (!this.okOnly) {\n cancelButton = h(BButton, {\n props: {\n variant: this.cancelVariant,\n size: this.buttonSize,\n disabled: this.cancelDisabled || this.busy || this.isTransitioning\n },\n on: {\n click: this.onCancel\n }\n }, [this.normalizeSlot('modal-cancel', {}) || this.cancelTitleHtml || stripTags(this.cancelTitle)]);\n }\n\n var okButton = h(BButton, {\n props: {\n variant: this.okVariant,\n size: this.buttonSize,\n disabled: this.okDisabled || this.busy || this.isTransitioning\n },\n on: {\n click: this.onOk\n }\n }, [this.normalizeSlot('modal-ok', {}) || this.okTitleHtml || stripTags(this.okTitle)]);\n modalFooter = [cancelButton, okButton];\n }\n\n footer = h('footer', {\n ref: 'footer',\n staticClass: 'modal-footer',\n class: this.footerClasses,\n attrs: {\n id: this.safeId('__BV_modal_footer_')\n }\n }, [modalFooter]);\n } // Assemble modal content\n\n\n var modalContent = h('div', {\n ref: 'content',\n staticClass: 'modal-content',\n class: this.contentClass,\n attrs: {\n role: 'document',\n id: this.safeId('__BV_modal_content_'),\n 'aria-labelledby': this.hideHeader ? null : this.safeId('__BV_modal_header_'),\n 'aria-describedby': this.safeId('__BV_modal_body_')\n }\n }, [header, body, footer]); // Modal dialog wrapper\n\n var modalDialog = h('div', {\n staticClass: 'modal-dialog',\n class: this.dialogClasses,\n on: {\n mousedown: this.onDialogMousedown\n }\n }, [modalContent]); // Modal\n\n var modal = h('div', {\n ref: 'modal',\n staticClass: 'modal',\n class: this.modalClasses,\n style: this.modalStyles,\n directives: [{\n name: 'show',\n rawName: 'v-show',\n value: this.isVisible,\n expression: 'isVisible'\n }],\n attrs: {\n id: this.safeId(),\n role: 'dialog',\n tabindex: '-1',\n 'aria-hidden': this.isVisible ? null : 'true',\n 'aria-modal': this.isVisible ? 'true' : null\n },\n on: {\n keydown: this.onEsc,\n click: this.onClickOut\n }\n }, [modalDialog]); // Wrap modal in transition\n // Sadly, we can't use BVTransition here due to the differences in\n // transition durations for .modal and .modal-dialog. Not until\n // issue https://github.com/vuejs/vue/issues/9986 is resolved\n\n modal = h('transition', {\n props: {\n enterClass: '',\n enterToClass: '',\n enterActiveClass: '',\n leaveClass: '',\n leaveActiveClass: '',\n leaveToClass: ''\n },\n on: {\n beforeEnter: this.onBeforeEnter,\n enter: this.onEnter,\n afterEnter: this.onAfterEnter,\n beforeLeave: this.onBeforeLeave,\n leave: this.onLeave,\n afterLeave: this.onAfterLeave\n }\n }, [modal]); // Modal backdrop\n\n var backdrop = h(false);\n\n if (!this.hideBackdrop && this.isVisible) {\n backdrop = h('div', {\n staticClass: 'modal-backdrop',\n attrs: {\n id: this.safeId('__BV_modal_backdrop_')\n }\n }, [this.normalizeSlot('modal-backdrop', {})]);\n }\n\n backdrop = h(BVTransition, {\n props: {\n noFade: this.noFade\n }\n }, [backdrop]); // Tab trap to prevent page from scrolling to next element in\n // tab index during enforce focus tab cycle\n\n var tabTrap = h(false);\n\n if (this.isVisible && this.isTop && !this.noEnforceFocus) {\n tabTrap = h('div', {\n attrs: {\n tabindex: '0'\n }\n });\n } // Assemble modal and backdrop in an outer <div>\n\n\n return h('div', {\n key: \"modal-outer-\".concat(this._uid),\n style: this.modalOuterStyle,\n attrs: {\n id: this.safeId('__BV_modal_outer_')\n }\n }, [modal, tabTrap, backdrop]);\n }\n },\n render: function render(h) {\n if (this.static) {\n return this.lazy && this.isHidden ? h(false) : this.makeModal(h);\n } else {\n return this.isHidden ? h(false) : h(BTransporterSingle, {}, [this.makeModal(h)]);\n }\n }\n});","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\n/**\n * Plugin for adding `$bvModal` property to all Vue instances\n */\nimport BModal, { props as modalProps } from '../modal';\nimport { concat } from '../../../utils/array';\nimport { setConfig, getComponentConfig } from '../../../utils/config';\nimport { isUndefined, isFunction } from '../../../utils/inspect';\nimport { assign, keys, omit, defineProperty, defineProperties, readonlyDescriptor } from '../../../utils/object';\nimport { warn, warnNotClient, warnNoPromiseSupport } from '../../../utils/warn'; // --- Constants ---\n\nvar PROP_NAME = '$bvModal';\nvar PROP_NAME_PRIV = '_bv__modal'; // Base modal props that are allowed\n// Some may be ignored or overridden on some message boxes\n// Prop ID is allowed, but really only should be used for testing\n// We need to add it in explicitly as it comes from the `idMixin`\n\nvar BASE_PROPS = ['id'].concat(_toConsumableArray(keys(omit(modalProps, ['busy', 'lazy', 'noStacking', \"static\", 'visible'])))); // Fallback event resolver (returns undefined)\n\nvar defaultResolver = function defaultResolver(bvModalEvt) {}; // Map prop names to modal slot names\n\n\nvar propsToSlots = {\n msgBoxContent: 'default',\n title: 'modal-title',\n okTitle: 'modal-ok',\n cancelTitle: 'modal-cancel' // --- Utility methods ---\n // Method to filter only recognized props that are not undefined\n\n};\n\nvar filterOptions = function filterOptions(options) {\n return BASE_PROPS.reduce(function (memo, key) {\n if (!isUndefined(options[key])) {\n memo[key] = options[key];\n }\n\n return memo;\n }, {});\n}; // Method to install `$bvModal` VM injection\n\n\nvar install = function install(Vue) {\n var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (install.installed) {\n // Only install once\n\n /* istanbul ignore next */\n return;\n }\n\n install.installed = true;\n setConfig(config); // Create a private sub-component that extends BModal\n // which self-destructs after hidden\n // @vue/component\n\n var BMsgBox = Vue.extend({\n name: 'BMsgBox',\n extends: BModal,\n destroyed: function destroyed() {\n // Make sure we not in document any more\n if (this.$el && this.$el.parentNode) {\n this.$el.parentNode.removeChild(this.$el);\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n // Self destruct handler\n var handleDestroy = function handleDestroy() {\n var self = _this;\n\n _this.$nextTick(function () {\n // In a `setTimeout()` to release control back to application\n setTimeout(function () {\n return self.$destroy();\n }, 0);\n });\n }; // Self destruct if parent destroyed\n\n\n this.$parent.$once('hook:destroyed', handleDestroy); // Self destruct after hidden\n\n this.$once('hidden', handleDestroy); // Self destruct on route change\n\n /* istanbul ignore if */\n\n if (this.$router && this.$route) {\n var unwatch = this.$watch('$router', handleDestroy);\n this.$once('hook:beforeDestroy', unwatch);\n } // Show the `BMsgBox`\n\n\n this.show();\n }\n }); // Method to generate the on-demand modal message box\n // Returns a promise that resolves to a value returned by the resolve\n\n var asyncMsgBox = function asyncMsgBox(props, $parent) {\n var resolver = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultResolver;\n\n if (warnNotClient(PROP_NAME) || warnNoPromiseSupport(PROP_NAME)) {\n /* istanbul ignore next */\n return;\n } // Create an instance of `BMsgBox` component\n\n\n var msgBox = new BMsgBox({\n // We set parent as the local VM so these modals can emit events on\n // the app `$root`, as needed by things like tooltips and popovers\n // And it helps to ensure `BMsgBox` is destroyed when parent is destroyed\n parent: $parent,\n // Preset the prop values\n propsData: _objectSpread({}, filterOptions(getComponentConfig('BModal') || {}), {\n // Defaults that user can override\n hideHeaderClose: true,\n hideHeader: !(props.title || props.titleHtml)\n }, omit(props, ['msgBoxContent']), {\n // Props that can't be overridden\n lazy: false,\n busy: false,\n visible: false,\n noStacking: false,\n noEnforceFocus: false\n })\n }); // Convert certain props to scoped slots\n\n keys(propsToSlots).forEach(function (prop) {\n if (!isUndefined(props[prop])) {\n // Can be a string, or array of VNodes.\n // Alternatively, user can use HTML version of prop to pass an HTML string.\n msgBox.$slots[propsToSlots[prop]] = concat(props[prop]);\n }\n }); // Return a promise that resolves when hidden, or rejects on destroyed\n\n return new Promise(function (resolve, reject) {\n var resolved = false;\n msgBox.$once('hook:destroyed', function () {\n if (!resolved) {\n /* istanbul ignore next */\n reject(new Error('BootstrapVue MsgBox destroyed before resolve'));\n }\n });\n msgBox.$on('hide', function (bvModalEvt) {\n if (!bvModalEvt.defaultPrevented) {\n var result = resolver(bvModalEvt); // If resolver didn't cancel hide, we resolve\n\n if (!bvModalEvt.defaultPrevented) {\n resolved = true;\n resolve(result);\n }\n }\n }); // Create a mount point (a DIV) and mount the msgBo which will trigger it to show\n\n var div = document.createElement('div');\n document.body.appendChild(div);\n msgBox.$mount(div);\n });\n }; // BvModal instance class\n\n\n var BvModal =\n /*#__PURE__*/\n function () {\n function BvModal(vm) {\n _classCallCheck(this, BvModal);\n\n // Assign the new properties to this instance\n assign(this, {\n _vm: vm,\n _root: vm.$root\n }); // Set these properties as read-only and non-enumerable\n\n defineProperties(this, {\n _vm: readonlyDescriptor(),\n _root: readonlyDescriptor()\n });\n } // --- Instance methods ---\n // Show modal with the specified ID args are for future use\n\n\n _createClass(BvModal, [{\n key: \"show\",\n value: function show(id) {\n if (id && this._root) {\n var _this$_root;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n (_this$_root = this._root).$emit.apply(_this$_root, ['bv::show::modal', id].concat(args));\n }\n } // Hide modal with the specified ID args are for future use\n\n }, {\n key: \"hide\",\n value: function hide(id) {\n if (id && this._root) {\n var _this$_root2;\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n (_this$_root2 = this._root).$emit.apply(_this$_root2, ['bv::hide::modal', id].concat(args));\n }\n } // The following methods require Promise support!\n // IE 11 and others do not support Promise natively, so users\n // should have a Polyfill loaded (which they need anyways for IE 11 support)\n // Opens a user defined message box and returns a promise\n // Not yet documented\n\n }, {\n key: \"msgBox\",\n value: function msgBox(content) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var resolver = arguments.length > 2 ? arguments[2] : undefined;\n\n if (!content || warnNoPromiseSupport(PROP_NAME) || warnNotClient(PROP_NAME) || !isFunction(resolver)) {\n /* istanbul ignore next */\n return;\n }\n\n return asyncMsgBox(_objectSpread({}, filterOptions(options), {\n msgBoxContent: content\n }), this._vm, resolver);\n } // Open a message box with OK button only and returns a promise\n\n }, {\n key: \"msgBoxOk\",\n value: function msgBoxOk(message) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // Pick the modal props we support from options\n var props = _objectSpread({}, options, {\n // Add in overrides and our content prop\n okOnly: true,\n okDisabled: false,\n hideFooter: false,\n msgBoxContent: message\n });\n\n return this.msgBox(message, props, function (bvModalEvt) {\n // Always resolve to true for OK\n return true;\n });\n } // Open a message box modal with OK and CANCEL buttons\n // and returns a promise\n\n }, {\n key: \"msgBoxConfirm\",\n value: function msgBoxConfirm(message) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // Set the modal props we support from options\n var props = _objectSpread({}, options, {\n // Add in overrides and our content prop\n okOnly: false,\n okDisabled: false,\n cancelDisabled: false,\n hideFooter: false\n });\n\n return this.msgBox(message, props, function (bvModalEvt) {\n var trigger = bvModalEvt.trigger;\n return trigger === 'ok' ? true : trigger === 'cancel' ? false : null;\n });\n }\n }]);\n\n return BvModal;\n }(); // Add our instance mixin\n\n\n Vue.mixin({\n beforeCreate: function beforeCreate() {\n // Because we need access to `$root` for `$emits`, and VM for parenting,\n // we have to create a fresh instance of `BvModal` for each VM\n this[PROP_NAME_PRIV] = new BvModal(this);\n }\n }); // Define our read-only `$bvModal` instance property\n // Placed in an if just in case in HMR mode\n\n if (!Vue.prototype.hasOwnProperty(PROP_NAME)) {\n defineProperty(Vue.prototype, PROP_NAME, {\n get: function get() {\n /* istanbul ignore next */\n if (!this || !this[PROP_NAME_PRIV]) {\n warn(\"'\".concat(PROP_NAME, \"' must be accessed from a Vue instance 'this' context\"));\n }\n\n return this[PROP_NAME_PRIV];\n }\n });\n }\n};\n\ninstall.installed = false;\nexport default {\n install: install\n};","import Vue from '../../utils/vue';\nimport { PortalTarget, Wormhole } from 'portal-vue';\nimport warn from '../../utils/warn';\nimport { getComponentConfig } from '../../utils/config';\nimport { removeClass, requestAF } from '../../utils/dom'; // --- Constants ---\n\nvar NAME = 'BToaster';\nexport var props = {\n name: {\n type: String,\n required: true\n },\n ariaLive: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'ariaLive');\n }\n },\n ariaAtomic: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'ariaAtomic');\n } // Allowed: 'true' or 'false' or null\n\n },\n role: {\n // Aria role\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'role');\n }\n /*\n transition: {\n type: [Boolean, String, Object],\n default: false\n }\n */\n\n } // @vue/component\n\n};\nexport var DefaultTransition = Vue.extend({\n data: function data() {\n return {\n // Transition classes base name\n name: 'b-toaster'\n };\n },\n methods: {\n onAfterEnter: function onAfterEnter(el) {\n var _this = this;\n\n // Handle bug where enter-to class is not removed.\n // Bug is related to portal-vue and transition-groups.\n requestAF(function () {\n removeClass(el, \"\".concat(_this.name, \"-enter-to\")); // The *-move class is also stuck on elements that moved,\n // but there are no javascript hooks to handle after move.\n });\n }\n },\n render: function render(h) {\n return h('transition-group', {\n props: {\n tag: 'div',\n name: this.name\n },\n on: {\n afterEnter: this.onAfterEnter\n }\n }, this.$slots.default);\n }\n}); // @vue/component\n\nexport default Vue.extend({\n name: NAME,\n props: props,\n data: function data() {\n return {\n // We don't render on SSR or if a an existing target found\n doRender: false,\n dead: false,\n // Toaster names cannot change once created\n staticName: this.name\n };\n },\n beforeMount: function beforeMount() {\n var _this2 = this;\n\n this.staticName = this.name;\n /* istanbul ignore if */\n\n if (Wormhole.hasTarget(this.staticName)) {\n warn(\"b-toaster: A <portal-target> with name '\".concat(this.name, \"' already exists in the document.\"));\n this.dead = true;\n } else {\n this.doRender = true;\n this.$once('hook:beforeDestroy', function () {\n // Let toasts made with `this.$bvToast.toast()` know that this toaster\n // is being destroyed and should should also destroy/hide themselves\n _this2.$root.$emit('bv::toaster::destroyed', _this2.staticName);\n });\n }\n },\n destroyed: function destroyed() {\n // Remove from DOM if needed\n\n /* istanbul ignore next: difficult to test */\n if (this.$el && this.$el.parentNode) {\n this.$el.parentNode.removeChild(this.$el);\n }\n },\n render: function render(h) {\n var $toaster = h('div', {\n class: ['d-none', {\n 'b-dead-toaster': this.dead\n }]\n });\n\n if (this.doRender) {\n var $target = h(PortalTarget, {\n staticClass: 'b-toaster-slot',\n props: {\n name: this.staticName,\n multiple: true,\n tag: 'div',\n slim: false,\n // transition: this.transition || DefaultTransition\n transition: DefaultTransition\n }\n });\n $toaster = h('div', {\n staticClass: 'b-toaster',\n class: [this.staticName],\n attrs: {\n id: this.staticName,\n role: this.role || null,\n // Fallback to null to make sure attribute doesn't exist\n 'aria-live': this.ariaLive,\n 'aria-atomic': this.ariaAtomic\n }\n }, [$target]);\n }\n\n return $toaster;\n }\n});","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport Vue from '../../utils/vue';\nimport { Portal, Wormhole } from 'portal-vue';\nimport BvEvent from '../../utils/bv-event.class';\nimport BVTransition from '../../utils/bv-transition';\nimport { getComponentConfig } from '../../utils/config';\nimport { requestAF, eventOn, eventOff } from '../../utils/dom';\nimport idMixin from '../../mixins/id';\nimport listenOnRootMixin from '../../mixins/listen-on-root';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport BButtonClose from '../button/button-close';\nimport BToaster from './toaster';\nimport BLink from '../link/link'; // --- Constants ---\n\nvar NAME = 'BToast';\nvar MIN_DURATION = 1000;\nvar EVENT_OPTIONS = {\n passive: true,\n capture: false // --- Props ---\n\n};\nexport var props = {\n id: {\n // Even though the ID prop is provided by idMixin, we\n // add it here for $bvToast props filtering\n type: String,\n default: null\n },\n title: {\n type: String,\n default: null\n },\n toaster: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'toaster');\n }\n },\n visible: {\n type: Boolean,\n default: false\n },\n variant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'variant');\n }\n },\n isStatus: {\n // Switches role to 'status' and aria-live to 'polite'\n type: Boolean,\n default: false\n },\n appendToast: {\n type: Boolean,\n default: false\n },\n noAutoHide: {\n type: Boolean,\n default: false\n },\n autoHideDelay: {\n type: [Number, String],\n default: function _default() {\n return getComponentConfig(NAME, 'autoHideDelay');\n }\n },\n noCloseButton: {\n type: Boolean,\n default: false\n },\n noFade: {\n type: Boolean,\n default: false\n },\n noHoverPause: {\n type: Boolean,\n default: false\n },\n solid: {\n type: Boolean,\n default: false\n },\n toastClass: {\n type: [String, Object, Array],\n default: function _default() {\n return getComponentConfig(NAME, 'toastClass');\n }\n },\n headerClass: {\n type: [String, Object, Array],\n default: function _default() {\n return getComponentConfig(NAME, 'headerClass');\n }\n },\n bodyClass: {\n type: [String, Object, Array],\n default: function _default() {\n return getComponentConfig(NAME, 'bodyClass');\n }\n },\n href: {\n type: String,\n default: null\n },\n to: {\n type: [String, Object],\n default: null\n },\n static: {\n // Render the toast in place, rather than in a portal-target\n type: Boolean,\n default: false\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: NAME,\n mixins: [idMixin, listenOnRootMixin, normalizeSlotMixin],\n inheritAttrs: false,\n model: {\n prop: 'visible',\n event: 'change'\n },\n props: props,\n data: function data() {\n return {\n isMounted: false,\n doRender: false,\n localShow: false,\n isTransitioning: false,\n isHiding: false,\n order: 0,\n timer: null,\n dismissStarted: 0,\n resumeDismiss: 0\n };\n },\n computed: {\n bToastClasses: function bToastClasses() {\n return _defineProperty({\n 'b-toast-solid': this.solid,\n 'b-toast-append': this.appendToast,\n 'b-toast-prepend': !this.appendToast\n }, \"b-toast-\".concat(this.variant), this.variant);\n },\n slotScope: function slotScope() {\n return {\n hide: this.hide\n };\n },\n computedDuration: function computedDuration() {\n // Minimum supported duration is 1 second\n return Math.max(parseInt(this.autoHideDelay, 10) || 0, MIN_DURATION);\n },\n computedToaster: function computedToaster() {\n return String(this.toaster);\n },\n transitionHandlers: function transitionHandlers() {\n return {\n beforeEnter: this.onBeforeEnter,\n afterEnter: this.onAfterEnter,\n beforeLeave: this.onBeforeLeave,\n afterLeave: this.onAfterLeave\n };\n }\n },\n watch: {\n visible: function visible(newVal) {\n newVal ? this.show() : this.hide();\n },\n localShow: function localShow(newVal) {\n if (newVal !== this.visible) {\n this.$emit('change', newVal);\n }\n },\n toaster: function toaster(newVal)\n /* istanbul ignore next */\n {\n var _this = this;\n\n // If toaster target changed, make sure toaster exists\n this.$nextTick(function () {\n return _this.ensureToaster;\n });\n },\n static: function _static(newVal)\n /* istanbul ignore next */\n {\n // If static changes to true, and the toast is showing,\n // ensure the toaster target exists\n if (newVal && this.localShow) {\n this.ensureToaster();\n }\n }\n },\n mounted: function mounted() {\n var _this2 = this;\n\n this.isMounted = true;\n this.$nextTick(function () {\n if (_this2.visible) {\n requestAF(function () {\n _this2.show();\n });\n }\n }); // Listen for global $root show events\n\n this.listenOnRoot('bv::show::toast', function (id) {\n if (id === _this2.safeId()) {\n _this2.show();\n }\n }); // Listen for global $root hide events\n\n this.listenOnRoot('bv::hide::toast', function (id) {\n if (!id || id === _this2.safeId()) {\n _this2.hide();\n }\n }); // Make sure we hide when toaster is destroyed\n\n /* istanbul ignore next: difficult to test */\n\n this.listenOnRoot('bv::toaster::destroyed', function (toaster) {\n if (toaster === _this2.computedToaster) {\n _this2.hide();\n }\n });\n },\n beforeDestroy: function beforeDestroy() {\n this.clearDismissTimer();\n },\n methods: {\n show: function show() {\n var _this3 = this;\n\n if (!this.localShow) {\n this.ensureToaster();\n var showEvt = this.buildEvent('show');\n this.emitEvent(showEvt);\n this.dismissStarted = this.resumeDismiss = 0;\n this.order = Date.now() * (this.appendToast ? 1 : -1);\n this.isHiding = false;\n this.doRender = true;\n this.$nextTick(function () {\n // We show the toast after we have rendered the portal and b-toast wrapper\n // so that screen readers will properly announce the toast\n requestAF(function () {\n _this3.localShow = true;\n });\n });\n }\n },\n hide: function hide() {\n var _this4 = this;\n\n if (this.localShow) {\n var hideEvt = this.buildEvent('hide');\n this.emitEvent(hideEvt);\n this.setHoverHandler(false);\n this.dismissStarted = this.resumeDismiss = 0;\n this.clearDismissTimer();\n this.isHiding = true;\n requestAF(function () {\n _this4.localShow = false;\n });\n }\n },\n buildEvent: function buildEvent(type) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new BvEvent(type, _objectSpread({\n cancelable: false,\n target: this.$el || null,\n relatedTarget: null\n }, opts, {\n vueTarget: this,\n componentId: this.safeId()\n }));\n },\n emitEvent: function emitEvent(bvEvt) {\n var type = bvEvt.type;\n this.$root.$emit(\"bv::toast:\".concat(type), bvEvt);\n this.$emit(type, bvEvt);\n },\n ensureToaster: function ensureToaster() {\n if (this.static) {\n return;\n }\n\n if (!Wormhole.hasTarget(this.computedToaster)) {\n var div = document.createElement('div');\n document.body.appendChild(div);\n var toaster = new BToaster({\n parent: this.$root,\n propsData: {\n name: this.computedToaster\n }\n });\n toaster.$mount(div);\n }\n },\n startDismissTimer: function startDismissTimer() {\n this.clearDismissTimer();\n\n if (!this.noAutoHide) {\n this.timer = setTimeout(this.hide, this.resumeDismiss || this.computedDuration);\n this.dismissStarted = Date.now();\n this.resumeDismiss = 0;\n }\n },\n clearDismissTimer: function clearDismissTimer() {\n clearTimeout(this.timer);\n this.timer = null;\n },\n setHoverHandler: function setHoverHandler(on) {\n var method = on ? eventOn : eventOff;\n method(this.$refs.btoast, 'mouseenter', this.onPause, EVENT_OPTIONS);\n method(this.$refs.btoast, 'mouseleave', this.onUnPause, EVENT_OPTIONS);\n },\n onPause: function onPause(evt) {\n // Determine time remaining, and then pause timer\n if (this.noAutoHide || this.noHoverPause || !this.timer || this.resumeDismiss) {\n return;\n }\n\n var passed = Date.now() - this.dismissStarted;\n\n if (passed > 0) {\n this.clearDismissTimer();\n this.resumeDismiss = Math.max(this.computedDuration - passed, MIN_DURATION);\n }\n },\n onUnPause: function onUnPause(evt) {\n // Restart timer with max of time remaining or 1 second\n if (this.noAutoHide || this.noHoverPause || !this.resumeDismiss) {\n this.resumeDismiss = this.dismissStarted = 0;\n return;\n }\n\n this.startDismissTimer();\n },\n onLinkClick: function onLinkClick() {\n var _this5 = this;\n\n // We delay the close to allow time for the\n // browser to process the link click\n this.$nextTick(function () {\n requestAF(function () {\n _this5.hide();\n });\n });\n },\n onBeforeEnter: function onBeforeEnter() {\n this.isTransitioning = true;\n },\n onAfterEnter: function onAfterEnter() {\n this.isTransitioning = false;\n var hiddenEvt = this.buildEvent('shown');\n this.emitEvent(hiddenEvt);\n this.startDismissTimer();\n this.setHoverHandler(true);\n },\n onBeforeLeave: function onBeforeLeave() {\n this.isTransitioning = true;\n },\n onAfterLeave: function onAfterLeave() {\n this.isTransitioning = false;\n this.order = 0;\n this.resumeDismiss = this.dismissStarted = 0;\n var hiddenEvt = this.buildEvent('hidden');\n this.emitEvent(hiddenEvt);\n this.doRender = false;\n },\n makeToast: function makeToast(h) {\n var _this6 = this;\n\n // Render helper for generating the toast\n // Assemble the header content\n var $headerContent = [];\n var $title = this.normalizeSlot('toast-title', this.slotScope);\n\n if ($title) {\n $headerContent.push($title);\n } else if (this.title) {\n $headerContent.push(h('strong', {\n staticClass: 'mr-2'\n }, this.title));\n }\n\n if (!this.noCloseButton) {\n $headerContent.push(h(BButtonClose, {\n staticClass: 'ml-auto mb-1',\n on: {\n click: function click(evt) {\n _this6.hide();\n }\n }\n }));\n } // Assemble the header (if needed)\n\n\n var $header = h(false);\n\n if ($headerContent.length > 0) {\n $header = h('header', {\n staticClass: 'toast-header',\n class: this.headerClass\n }, $headerContent);\n } // Toast body\n\n\n var isLink = this.href || this.to;\n var $body = h(isLink ? BLink : 'div', {\n staticClass: 'toast-body',\n class: this.bodyClass,\n props: isLink ? {\n to: this.to,\n href: this.href\n } : {},\n on: isLink ? {\n click: this.onLinkClick\n } : {}\n }, [this.normalizeSlot('default', this.slotScope) || h(false)]); // Build the toast\n\n var $toast = h('div', {\n key: \"toast-\".concat(this._uid),\n ref: 'toast',\n staticClass: 'toast',\n class: this.toastClass,\n attrs: _objectSpread({}, this.$attrs, {\n tabindex: '0',\n id: this.safeId()\n })\n }, [$header, $body]);\n return $toast;\n }\n },\n render: function render(h) {\n if (!this.doRender || !this.isMounted) {\n return h(false);\n }\n\n var name = \"b-toast-\".concat(this._uid);\n return h(Portal, {\n props: {\n name: name,\n to: this.computedToaster,\n order: this.order,\n slim: true,\n disabled: this.static\n }\n }, [h('div', {\n key: name,\n ref: 'btoast',\n staticClass: 'b-toast',\n class: this.bToastClasses,\n attrs: {\n id: this.safeId('_toast_outer'),\n role: this.isHiding ? null : this.isStatus ? 'status' : 'alert',\n 'aria-live': this.isHiding ? null : this.isStatus ? 'polite' : 'assertive',\n 'aria-atomic': this.isHiding ? null : 'true'\n }\n }, [h(BVTransition, {\n props: {\n noFade: this.noFade\n },\n on: this.transitionHandlers\n }, [this.localShow ? this.makeToast(h) : h(false)])])]);\n }\n});","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\n/**\n * Plugin for adding `$bvToast` property to all Vue instances\n */\nimport { concat } from '../../../utils/array';\nimport { setConfig, getComponentConfig } from '../../../utils/config';\nimport { requestAF } from '../../../utils/dom';\nimport { isUndefined, isString } from '../../../utils/inspect';\nimport { assign, defineProperties, defineProperty, keys, omit, readonlyDescriptor } from '../../../utils/object';\nimport { warn, warnNotClient } from '../../../utils/warn';\nimport BToast, { props as toastProps } from '../toast'; // --- Constants ---\n\nvar PROP_NAME = '$bvToast';\nvar PROP_NAME_PRIV = '_bv__toast'; // Base toast props that are allowed\n// Some may be ignored or overridden on some message boxes\n// Prop ID is allowed, but really only should be used for testing\n// We need to add it in explicitly as it comes from the `idMixin`\n\nvar BASE_PROPS = ['id'].concat(_toConsumableArray(keys(omit(toastProps, ['static', 'visible'])))); // Map prop names to toast slot names\n\nvar propsToSlots = {\n toastContent: 'default',\n title: 'toast-title' // --- Utility methods ---\n // Method to filter only recognized props that are not undefined\n\n};\n\nvar filterOptions = function filterOptions(options) {\n return BASE_PROPS.reduce(function (memo, key) {\n if (!isUndefined(options[key])) {\n memo[key] = options[key];\n }\n\n return memo;\n }, {});\n}; // Method to install `$bvToast` VM injection\n\n\nvar install = function install(Vue) {\n var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (install.installed) {\n // Only install once\n\n /* istanbul ignore next */\n return;\n }\n\n install.installed = true;\n setConfig(config); // Create a private sub-component constructor that\n // extends BToast and self-destructs after hidden\n // @vue/component\n\n var BToastPop = Vue.extend({\n name: 'BToastPop',\n extends: BToast,\n destroyed: function destroyed() {\n // Make sure we not in document any more\n if (this.$el && this.$el.parentNode) {\n this.$el.parentNode.removeChild(this.$el);\n }\n },\n mounted: function mounted() {\n var self = this; // Self destruct handler\n\n var handleDestroy = function handleDestroy() {\n // Ensure the toast has been force hidden\n self.localShow = false;\n self.doRender = false;\n self.$nextTick(function () {\n self.$nextTick(function () {\n // In a `requestAF()` to release control back to application\n // and to allow the portal-target time to remove the content\n requestAF(function () {\n self.$destroy();\n });\n });\n });\n }; // Self destruct if parent destroyed\n\n\n this.$parent.$once('hook:destroyed', handleDestroy); // Self destruct after hidden\n\n this.$once('hidden', handleDestroy); // Self destruct when toaster is destroyed\n\n this.listenOnRoot('bv::toaster::destroyed', function (toaster) {\n /* istanbul ignore next: hard to test */\n if (toaster === self.toaster) {\n handleDestroy();\n }\n });\n }\n }); // Private method to generate the on-demand toast\n\n var makeToast = function makeToast(props, $parent) {\n if (warnNotClient(PROP_NAME)) {\n /* istanbul ignore next */\n return;\n } // Create an instance of `BToastPop` component\n\n\n var toast = new BToastPop({\n // We set parent as the local VM so these toasts can emit events on the\n // app `$root`, and it ensures `BToast` is destroyed when parent is destroyed\n parent: $parent,\n propsData: _objectSpread({}, filterOptions(getComponentConfig('BToast') || {}), omit(props, ['toastContent']), {\n // Props that can't be overridden\n static: false,\n visible: true\n })\n }); // Convert certain props to slots\n\n keys(propsToSlots).forEach(function (prop) {\n var value = props[prop];\n\n if (!isUndefined(value)) {\n // Can be a string, or array of VNodes\n if (prop === 'title' && isString(value)) {\n // Special case for title if it is a string, we wrap in a <strong>\n value = [$parent.$createElement('strong', {\n class: 'mr-2'\n }, value)];\n }\n\n toast.$slots[propsToSlots[prop]] = concat(value);\n }\n }); // Create a mount point (a DIV) and mount it (which triggers the show)\n\n var div = document.createElement('div');\n document.body.appendChild(div);\n toast.$mount(div);\n }; // Declare BvToast instance property class\n\n\n var BvToast =\n /*#__PURE__*/\n function () {\n function BvToast(vm) {\n _classCallCheck(this, BvToast);\n\n // Assign the new properties to this instance\n assign(this, {\n _vm: vm,\n _root: vm.$root\n }); // Set these properties as read-only and non-enumerable\n\n defineProperties(this, {\n _vm: readonlyDescriptor(),\n _root: readonlyDescriptor()\n });\n } // --- Public Instance methods ---\n // Opens a user defined toast and returns immediately\n\n\n _createClass(BvToast, [{\n key: \"toast\",\n value: function toast(content) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!content || warnNotClient(PROP_NAME)) {\n /* istanbul ignore next */\n return;\n }\n\n makeToast(_objectSpread({}, filterOptions(options), {\n toastContent: content\n }), this._vm);\n } // shows a `<b-toast>` component with the specified ID\n\n }, {\n key: \"show\",\n value: function show(id) {\n if (id) {\n this._root.$emit('bv::show::toast', id);\n }\n } // Hide a toast with specified ID, or if not ID all toasts\n\n }, {\n key: \"hide\",\n value: function hide() {\n var id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n this._root.$emit('bv::hide::toast', id);\n }\n }]);\n\n return BvToast;\n }(); // Add our instance mixin\n\n\n Vue.mixin({\n beforeCreate: function beforeCreate() {\n // Because we need access to `$root` for `$emits`, and VM for parenting,\n // we have to create a fresh instance of `BvToast` for each VM\n this[PROP_NAME_PRIV] = new BvToast(this);\n }\n }); // Define our read-only `$bvToast` instance property\n // Placed in an if just in case in HMR mode\n\n if (!Vue.prototype.hasOwnProperty(PROP_NAME)) {\n defineProperty(Vue.prototype, PROP_NAME, {\n get: function get() {\n /* istanbul ignore next */\n if (!this || !this[PROP_NAME_PRIV]) {\n warn(\"'\".concat(PROP_NAME, \"' must be accessed from a Vue instance 'this' context\"));\n }\n\n return this[PROP_NAME_PRIV];\n }\n });\n }\n};\n\ninstall.installed = false; // Default export is the Plugin\n\nexport default {\n install: install\n};","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; }\n\nimport Vue from '../../utils/vue';\nimport { getComponentConfig } from '../../utils/config';\nimport { requestAF } from '../../utils/dom';\nimport { isBoolean } from '../../utils/inspect';\nimport BVTransition from '../../utils/bv-transition';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport BButtonClose from '../button/button-close';\nvar NAME = 'BAlert'; // Convert `show` value to a number\n\nvar parseCountDown = function parseCountDown(show) {\n if (show === '' || isBoolean(show)) {\n return 0;\n }\n\n show = parseInt(show, 10);\n return show > 0 ? show : 0;\n}; // Convert `show` value to a boolean\n\n\nvar parseShow = function parseShow(show) {\n if (show === '' || show === true) {\n return true;\n }\n\n if (parseInt(show, 10) < 1) {\n // Boolean will always return false for the above comparison\n return false;\n }\n\n return Boolean(show);\n}; // Is a value number like (i.e. a number or a number as string)\n\n\nvar isNumericLike = function isNumericLike(value) {\n return !isNaN(parseInt(value, 10));\n}; // @vue/component\n\n\nexport default Vue.extend({\n name: NAME,\n mixins: [normalizeSlotMixin],\n model: {\n prop: 'show',\n event: 'input'\n },\n props: {\n variant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'variant');\n }\n },\n dismissible: {\n type: Boolean,\n default: false\n },\n dismissLabel: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'dismissLabel');\n }\n },\n show: {\n type: [Boolean, Number, String],\n default: false\n },\n fade: {\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n return {\n countDownTimerId: null,\n countDown: 0,\n // If initially shown, we need to set these for SSR\n localShow: parseShow(this.show)\n };\n },\n watch: {\n show: function show(newVal) {\n this.countDown = parseCountDown(newVal);\n this.localShow = parseShow(newVal);\n },\n countDown: function countDown(newVal) {\n var _this = this;\n\n this.clearTimer();\n\n if (isNumericLike(this.show)) {\n // Ignore if this.show transitions to a boolean value.\n this.$emit('dismiss-count-down', newVal);\n\n if (this.show !== newVal) {\n // Update the v-model if needed\n this.$emit('input', newVal);\n }\n\n if (newVal > 0) {\n this.localShow = true;\n this.countDownTimerId = setTimeout(function () {\n _this.countDown--;\n }, 1000);\n } else {\n // Slightly delay the hide to allow any UI updates\n this.$nextTick(function () {\n requestAF(function () {\n _this.localShow = false;\n });\n });\n }\n }\n },\n localShow: function localShow(newVal) {\n if (!newVal && (this.dismissible || isNumericLike(this.show))) {\n // Only emit dismissed events for dismissible or auto dismissing alerts\n this.$emit('dismissed');\n }\n\n if (!isNumericLike(this.show) && this.show !== newVal) {\n // Only emit booleans if we weren't passed a number via `this.show`\n this.$emit('input', newVal);\n }\n }\n },\n created: function created() {\n this.countDown = parseCountDown(this.show);\n this.localShow = parseShow(this.show);\n },\n mounted: function mounted() {\n this.countDown = parseCountDown(this.show);\n this.localShow = parseShow(this.show);\n },\n beforeDestroy: function beforeDestroy() {\n this.clearTimer();\n },\n methods: {\n dismiss: function dismiss() {\n this.clearTimer();\n this.countDown = 0;\n this.localShow = false;\n },\n clearTimer: function clearTimer() {\n if (this.countDownTimerId) {\n clearInterval(this.countDownTimerId);\n this.countDownTimerId = null;\n }\n }\n },\n render: function render(h) {\n var $alert; // undefined\n\n if (this.localShow) {\n var $dismissBtn = h(false);\n\n if (this.dismissible) {\n // Add dismiss button\n $dismissBtn = h(BButtonClose, {\n attrs: {\n 'aria-label': this.dismissLabel\n },\n on: {\n click: this.dismiss\n }\n }, [this.normalizeSlot('dismiss')]);\n }\n\n $alert = h('div', {\n key: this._uid,\n staticClass: 'alert',\n class: _defineProperty({\n 'alert-dismissible': this.dismissible\n }, \"alert-\".concat(this.variant), this.variant),\n attrs: {\n role: 'alert',\n 'aria-live': 'polite',\n 'aria-atomic': true\n }\n }, [$dismissBtn, this.normalizeSlot('default')]);\n $alert = [$alert];\n }\n\n return h(BVTransition, {\n props: {\n noFade: !this.fade\n }\n }, $alert);\n }\n});","import BAlert from './alert';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BAlert: BAlert\n};\nexport { BAlert };\nexport default {\n install: installFactory({\n components: components\n })\n};","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { getComponentConfig } from '../../utils/config';\nimport pluckProps from '../../utils/pluck-props';\nimport Link, { propsFactory as linkPropsFactory } from '../link/link';\nvar NAME = 'BBadge';\nvar linkProps = linkPropsFactory();\ndelete linkProps.href.default;\ndelete linkProps.to.default;\nexport var props = _objectSpread({}, linkProps, {\n tag: {\n type: String,\n default: 'span'\n },\n variant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'variant');\n }\n },\n pill: {\n type: Boolean,\n default: false\n } // @vue/component\n\n});\nexport default Vue.extend({\n name: NAME,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var tag = !props.href && !props.to ? props.tag : Link;\n var componentData = {\n staticClass: 'badge',\n class: [props.variant ? \"badge-\".concat(props.variant) : 'badge-secondary', {\n 'badge-pill': Boolean(props.pill),\n active: props.active,\n disabled: props.disabled\n }],\n props: pluckProps(linkProps, props)\n };\n return h(tag, mergeData(data, componentData), children);\n }\n});","import BBadge from './badge';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BBadge: BBadge\n};\nexport { BBadge };\nexport default {\n install: installFactory({\n components: components\n })\n};","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport pluckProps from '../../utils/pluck-props';\nimport BLink, { propsFactory as linkPropsFactory } from '../link/link';\nimport { htmlOrText } from '../../utils/html';\nexport var props = _objectSpread({}, linkPropsFactory(), {\n text: {\n type: String,\n default: null\n },\n html: {\n type: String,\n default: null\n },\n ariaCurrent: {\n type: String,\n default: 'location'\n } // @vue/component\n\n});\nexport default Vue.extend({\n name: 'BBreadcrumbLink',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var suppliedProps = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var tag = suppliedProps.active ? 'span' : BLink;\n var componentData = {\n props: pluckProps(props, suppliedProps)\n };\n\n if (suppliedProps.active) {\n componentData.attrs = {\n 'aria-current': suppliedProps.ariaCurrent\n };\n }\n\n if (!children) {\n componentData.domProps = htmlOrText(suppliedProps.html, suppliedProps.text);\n }\n\n return h(tag, mergeData(data, componentData), children);\n }\n});","import Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport BBreadcrumbLink, { props } from './breadcrumb-link'; // @vue/component\n\nexport default Vue.extend({\n name: 'BBreadcrumbItem',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h('li', mergeData(data, {\n staticClass: 'breadcrumb-item',\n class: {\n active: props.active\n }\n }), [h(BBreadcrumbLink, {\n props: props\n }, children)]);\n }\n});","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport toString from '../../utils/to-string';\nimport { isArray, isObject } from '../../utils/inspect';\nimport BBreadcrumbItem from './breadcrumb-item';\nexport var props = {\n items: {\n type: Array,\n default: null\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: 'BBreadcrumb',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var childNodes = children; // Build child nodes from items if given.\n\n if (isArray(props.items)) {\n var activeDefined = false;\n childNodes = props.items.map(function (item, idx) {\n if (!isObject(item)) {\n item = {\n text: toString(item)\n };\n } // Copy the value here so we can normalize it.\n\n\n var active = item.active;\n\n if (active) {\n activeDefined = true;\n }\n\n if (!active && !activeDefined) {\n // Auto-detect active by position in list.\n active = idx + 1 === props.items.length;\n }\n\n return h(BBreadcrumbItem, {\n props: _objectSpread({}, item, {\n active: active\n })\n });\n });\n }\n\n return h('ol', mergeData(data, {\n staticClass: 'breadcrumb'\n }), childNodes);\n }\n});","import BBreadcrumb from './breadcrumb';\nimport BBreadcrumbItem from './breadcrumb-item';\nimport BBreadcrumbLink from './breadcrumb-link';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BBreadcrumb: BBreadcrumb,\n BBreadcrumbItem: BBreadcrumbItem,\n BBreadcrumbLink: BBreadcrumbLink\n};\nexport { BBreadcrumb, BBreadcrumbItem, BBreadcrumbLink };\nexport default {\n install: installFactory({\n components: components\n })\n};","import BButton from './button';\nimport BButtonClose from './button-close';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BButton: BButton,\n BBtn: BButton,\n BButtonClose: BButtonClose,\n BBtnClose: BButtonClose\n};\nexport { BButton, BButtonClose };\nexport default {\n install: installFactory({\n components: components\n })\n};","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; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nexport var props = {\n vertical: {\n type: Boolean,\n default: false\n },\n size: {\n type: String,\n default: null\n },\n tag: {\n type: String,\n default: 'div'\n },\n ariaRole: {\n type: String,\n default: 'group'\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: 'BButtonGroup',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, mergeData(data, {\n class: _defineProperty({\n 'btn-group': !props.vertical,\n 'btn-group-vertical': props.vertical\n }, \"btn-group-\".concat(props.size), Boolean(props.size)),\n attrs: {\n role: props.ariaRole\n }\n }), children);\n }\n});","import BButtonGroup from './button-group';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BButtonGroup: BButtonGroup,\n BBtnGroup: BButtonGroup\n};\nexport { BButtonGroup };\nexport default {\n install: installFactory({\n components: components\n })\n};","import Vue from '../../utils/vue';\nimport { isVisible, selectAll } from '../../utils/dom';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport KeyCodes from '../../utils/key-codes';\nvar ITEM_SELECTOR = ['.btn:not(.disabled):not([disabled]):not(.dropdown-item)', '.form-control:not(.disabled):not([disabled])', 'select:not(.disabled):not([disabled])', 'input[type=\"checkbox\"]:not(.disabled)', 'input[type=\"radio\"]:not(.disabled)'].join(','); // @vue/component\n\nexport default Vue.extend({\n name: 'BButtonToolbar',\n mixins: [normalizeSlotMixin],\n props: {\n justify: {\n type: Boolean,\n default: false\n },\n keyNav: {\n type: Boolean,\n default: false\n }\n },\n mounted: function mounted() {\n if (this.keyNav) {\n // Pre-set the tabindexes if the markup does not include tabindex=\"-1\" on the toolbar items\n this.getItems();\n }\n },\n methods: {\n onFocusin: function onFocusin(evt) {\n if (evt.target === this.$el) {\n evt.preventDefault();\n evt.stopPropagation();\n this.focusFirst(evt);\n }\n },\n stop: function stop(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n },\n onKeydown: function onKeydown(evt) {\n if (!this.keyNav) {\n /* istanbul ignore next: should never happen */\n return;\n }\n\n var key = evt.keyCode;\n var shift = evt.shiftKey;\n\n if (key === KeyCodes.UP || key === KeyCodes.LEFT) {\n this.stop(evt);\n shift ? this.focusFirst(evt) : this.focusPrev(evt);\n } else if (key === KeyCodes.DOWN || key === KeyCodes.RIGHT) {\n this.stop(evt);\n shift ? this.focusLast(evt) : this.focusNext(evt);\n }\n },\n setItemFocus: function setItemFocus(item) {\n item && item.focus && item.focus();\n },\n focusFirst: function focusFirst(evt) {\n var items = this.getItems();\n this.setItemFocus(items[0]);\n },\n focusPrev: function focusPrev(evt) {\n var items = this.getItems();\n var index = items.indexOf(evt.target);\n\n if (index > -1) {\n items = items.slice(0, index).reverse();\n this.setItemFocus(items[0]);\n }\n },\n focusNext: function focusNext(evt) {\n var items = this.getItems();\n var index = items.indexOf(evt.target);\n\n if (index > -1) {\n items = items.slice(index + 1);\n this.setItemFocus(items[0]);\n }\n },\n focusLast: function focusLast(evt) {\n var items = this.getItems().reverse();\n this.setItemFocus(items[0]);\n },\n getItems: function getItems() {\n var items = selectAll(ITEM_SELECTOR, this.$el);\n items.forEach(function (item) {\n // Ensure tabfocus is -1 on any new elements\n item.tabIndex = -1;\n });\n return items.filter(function (el) {\n return isVisible(el);\n });\n }\n },\n render: function render(h) {\n return h('div', {\n staticClass: 'btn-toolbar',\n class: {\n 'justify-content-between': this.justify\n },\n attrs: {\n role: 'toolbar',\n tabindex: this.keyNav ? '0' : null\n },\n on: this.keyNav ? {\n focusin: this.onFocusin,\n keydown: this.onKeydown\n } : {}\n }, [this.normalizeSlot('default')]);\n }\n});","import BButtonToolbar from './button-toolbar';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BButtonToolbar: BButtonToolbar,\n BBtnToolbar: BButtonToolbar\n};\nexport { BButtonToolbar };\nexport default {\n install: installFactory({\n components: components\n })\n};","import Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nexport var props = {\n tag: {\n type: String,\n default: 'div'\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: 'BInputGroupText',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, mergeData(data, {\n staticClass: 'input-group-text'\n }), children);\n }\n});","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport InputGroupText from './input-group-text';\nexport var commonProps = {\n id: {\n type: String,\n default: null\n },\n tag: {\n type: String,\n default: 'div'\n },\n isText: {\n type: Boolean,\n default: false\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: 'BInputGroupAddon',\n functional: true,\n props: _objectSpread({}, commonProps, {\n append: {\n type: Boolean,\n default: false\n }\n }),\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, mergeData(data, {\n class: {\n 'input-group-append': props.append,\n 'input-group-prepend': !props.append\n },\n attrs: {\n id: props.id\n }\n }), props.isText ? [h(InputGroupText, children)] : children);\n }\n});","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport InputGroupAddon, { commonProps } from './input-group-addon'; // @vue/component\n\nexport default Vue.extend({\n name: 'BInputGroupPrepend',\n functional: true,\n props: commonProps,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n // pass all our props/attrs down to child, and set`append` to false\n return h(InputGroupAddon, mergeData(data, {\n props: _objectSpread({}, props, {\n append: false\n })\n }), children);\n }\n});","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport InputGroupAddon, { commonProps } from './input-group-addon'; // @vue/component\n\nexport default Vue.extend({\n name: 'BInputGroupAppend',\n functional: true,\n props: commonProps,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n // pass all our props/attrs down to child, and set`append` to true\n return h(InputGroupAddon, mergeData(data, {\n props: _objectSpread({}, props, {\n append: true\n })\n }), children);\n }\n});","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; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport InputGroupPrepend from './input-group-prepend';\nimport InputGroupAppend from './input-group-append';\nimport InputGroupText from './input-group-text';\nimport { htmlOrText } from '../../utils/html';\nimport { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot';\nexport var props = {\n id: {\n type: String\n },\n size: {\n type: String\n },\n prepend: {\n type: String\n },\n prependHTML: {\n type: String\n },\n append: {\n type: String\n },\n appendHTML: {\n type: String\n },\n tag: {\n type: String,\n default: 'div'\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: 'BInputGroup',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n var childNodes = []; // Prepend prop/slot\n\n if (props.prepend || props.prependHTML || hasNormalizedSlot('prepend', $scopedSlots, $slots)) {\n childNodes.push(h(InputGroupPrepend, [// Prop\n props.prepend || props.prependHTML ? h(InputGroupText, {\n domProps: htmlOrText(props.prependHTML, props.prepend)\n }) : h(false), // Slot\n normalizeSlot('prepend', {}, $scopedSlots, $slots) || h(false)]));\n } else {\n childNodes.push(h(false));\n } // Default slot\n\n\n if (hasNormalizedSlot('default', $scopedSlots, $slots)) {\n childNodes.push.apply(childNodes, _toConsumableArray(normalizeSlot('default', {}, $scopedSlots, $slots)));\n } else {\n childNodes.push(h(false));\n } // Append prop\n\n\n if (props.append || props.appendHTML || hasNormalizedSlot('append', $scopedSlots, $slots)) {\n childNodes.push(h(InputGroupAppend, [// prop\n props.append || props.appendHTML ? h(InputGroupText, {\n domProps: htmlOrText(props.appendHTML, props.append)\n }) : h(false), // Slot\n normalizeSlot('append', {}, $scopedSlots, $slots) || h(false)]));\n } else {\n childNodes.push(h(false));\n }\n\n return h(props.tag, mergeData(data, {\n staticClass: 'input-group',\n class: _defineProperty({}, \"input-group-\".concat(props.size), Boolean(props.size)),\n attrs: {\n id: props.id || null,\n role: 'group'\n }\n }), childNodes);\n }\n});","import BInputGroup from './input-group';\nimport BInputGroupAddon from './input-group-addon';\nimport BInputGroupPrepend from './input-group-prepend';\nimport BInputGroupAppend from './input-group-append';\nimport BInputGroupText from './input-group-text';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BInputGroup: BInputGroup,\n BInputGroupAddon: BInputGroupAddon,\n BInputGroupPrepend: BInputGroupPrepend,\n BInputGroupAppend: BInputGroupAppend,\n BInputGroupText: BInputGroupText\n};\nexport { BInputGroup, BInputGroupAddon, BInputGroupPrepend, BInputGroupAppend, BInputGroupText };\nexport default {\n install: installFactory({\n components: components\n })\n};","import { isString } from './inspect';\n/**\n * Transform the first character to uppercase\n * @param {string} str\n */\n\nvar upperFirst = function upperFirst(str) {\n if (!isString(str)) {\n str = String(str);\n }\n\n str = str.trim();\n return str.charAt(0).toUpperCase() + str.slice(1);\n};\n\nexport default upperFirst;","import upperFirst from './upper-first';\n/**\n * @param {string} prefix\n * @param {string} value\n */\n\nvar prefixPropName = function prefixPropName(prefix, value) {\n return prefix + upperFirst(value);\n};\n\nexport default prefixPropName;","/**\n * @param {string} str\n */\nvar lowerFirst = function lowerFirst(str) {\n str = String(str);\n return str.charAt(0).toLowerCase() + str.slice(1);\n};\n\nexport default lowerFirst;","import lowerFirst from './lower-first';\n/**\n * @param {string} prefix\n * @param {string} value\n */\n\nvar unprefixPropName = function unprefixPropName(prefix, value) {\n return lowerFirst(value.replace(prefix, ''));\n};\n\nexport default unprefixPropName;","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport identity from './identity';\nimport { isArray, isObject } from './inspect';\n/**\n * Copies props from one array/object to a new array/object. Prop values\n * are also cloned as new references to prevent possible mutation of original\n * prop object values. Optionally accepts a function to transform the prop name.\n *\n * @param {[]|{}} props\n * @param {Function} transformFn\n */\n\nvar copyProps = function copyProps(props) {\n var transformFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : identity;\n\n if (isArray(props)) {\n return props.map(transformFn);\n } // Props as an object.\n\n\n var copied = {};\n\n for (var prop in props) {\n /* istanbul ignore else */\n if (props.hasOwnProperty(prop)) {\n // If the prop value is an object, do a shallow clone to prevent\n // potential mutations to the original object.\n copied[transformFn(prop)] = isObject(props[prop]) ? _objectSpread({}, props[prop]) : props[prop];\n }\n }\n\n return copied;\n};\n\nexport default copyProps;","// @vue/component\nexport default {\n props: {\n tag: {\n type: String,\n default: 'div'\n },\n bgVariant: {\n type: String,\n default: null\n },\n borderVariant: {\n type: String,\n default: null\n },\n textVariant: {\n type: String,\n default: null\n }\n }\n};","import Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nexport var props = {\n title: {\n type: String,\n default: ''\n },\n titleTag: {\n type: String,\n default: 'h4'\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: 'BCardTitle',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.titleTag, mergeData(data, {\n staticClass: 'card-title'\n }), children || props.title);\n }\n});","import Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { getComponentConfig } from '../../utils/config';\nvar NAME = 'BCardSubTitle';\nexport var props = {\n subTitle: {\n type: String,\n default: ''\n },\n subTitleTag: {\n type: String,\n default: 'h6'\n },\n subTitleTextVariant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'subTitleTextVariant');\n }\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: NAME,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.subTitleTag, mergeData(data, {\n staticClass: 'card-subtitle',\n class: [props.subTitleTextVariant ? \"text-\".concat(props.subTitleTextVariant) : null]\n }), children || props.subTitle);\n }\n});","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport prefixPropName from '../../utils/prefix-prop-name';\nimport copyProps from '../../utils/copy-props';\nimport pluckProps from '../../utils/pluck-props';\nimport cardMixin from '../../mixins/card-mixin';\nimport BCardTitle, { props as titleProps } from './card-title';\nimport BCardSubTitle, { props as subTitleProps } from './card-sub-title';\nexport var props = _objectSpread({}, copyProps(cardMixin.props, prefixPropName.bind(null, 'body')), {\n bodyClass: {\n type: [String, Object, Array],\n default: null\n }\n}, titleProps, subTitleProps, {\n overlay: {\n type: Boolean,\n default: false\n } // @vue/component\n\n});\nexport default Vue.extend({\n name: 'BCardBody',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _ref2;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var cardTitle = h(false);\n var cardSubTitle = h(false);\n var cardContent = children || [h(false)];\n\n if (props.title) {\n cardTitle = h(BCardTitle, {\n props: pluckProps(titleProps, props)\n });\n }\n\n if (props.subTitle) {\n cardSubTitle = h(BCardSubTitle, {\n props: pluckProps(subTitleProps, props),\n class: ['mb-2']\n });\n }\n\n return h(props.bodyTag, mergeData(data, {\n staticClass: 'card-body',\n class: [(_ref2 = {\n 'card-img-overlay': props.overlay\n }, _defineProperty(_ref2, \"bg-\".concat(props.bodyBgVariant), Boolean(props.bodyBgVariant)), _defineProperty(_ref2, \"border-\".concat(props.bodyBorderVariant), Boolean(props.bodyBorderVariant)), _defineProperty(_ref2, \"text-\".concat(props.bodyTextVariant), Boolean(props.bodyTextVariant)), _ref2), props.bodyClass || {}]\n }), [cardTitle, cardSubTitle].concat(_toConsumableArray(cardContent)));\n }\n});","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport prefixPropName from '../../utils/prefix-prop-name';\nimport copyProps from '../../utils/copy-props';\nimport { htmlOrText } from '../../utils/html';\nimport cardMixin from '../../mixins/card-mixin';\nexport var props = _objectSpread({}, copyProps(cardMixin.props, prefixPropName.bind(null, 'header')), {\n header: {\n type: String,\n default: null\n },\n headerHtml: {\n type: String,\n default: null\n },\n headerClass: {\n type: [String, Object, Array],\n default: null\n } // @vue/component\n\n});\nexport default Vue.extend({\n name: 'BCardHeader',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _ref2;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.headerTag, mergeData(data, {\n staticClass: 'card-header',\n class: [props.headerClass, (_ref2 = {}, _defineProperty(_ref2, \"bg-\".concat(props.headerBgVariant), Boolean(props.headerBgVariant)), _defineProperty(_ref2, \"border-\".concat(props.headerBorderVariant), Boolean(props.headerBorderVariant)), _defineProperty(_ref2, \"text-\".concat(props.headerTextVariant), Boolean(props.headerTextVariant)), _ref2)]\n }), children || [h('div', {\n domProps: htmlOrText(props.headerHtml, props.header)\n })]);\n }\n});","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport prefixPropName from '../../utils/prefix-prop-name';\nimport copyProps from '../../utils/copy-props';\nimport { htmlOrText } from '../../utils/html';\nimport cardMixin from '../../mixins/card-mixin';\nexport var props = _objectSpread({}, copyProps(cardMixin.props, prefixPropName.bind(null, 'footer')), {\n footer: {\n type: String,\n default: null\n },\n footerHtml: {\n type: String,\n default: null\n },\n footerClass: {\n type: [String, Object, Array],\n default: null\n } // @vue/component\n\n});\nexport default Vue.extend({\n name: 'BCardFooter',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _ref2;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.footerTag, mergeData(data, {\n staticClass: 'card-footer',\n class: [props.footerClass, (_ref2 = {}, _defineProperty(_ref2, \"bg-\".concat(props.footerBgVariant), Boolean(props.footerBgVariant)), _defineProperty(_ref2, \"border-\".concat(props.footerBorderVariant), Boolean(props.footerBorderVariant)), _defineProperty(_ref2, \"text-\".concat(props.footerTextVariant), Boolean(props.footerTextVariant)), _ref2)]\n }), children || [h('div', {\n domProps: htmlOrText(props.footerHtml, props.footer)\n })]);\n }\n});","import Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nexport var props = {\n src: {\n type: String,\n default: null,\n required: true\n },\n alt: {\n type: String,\n default: null\n },\n top: {\n type: Boolean,\n default: false\n },\n bottom: {\n type: Boolean,\n default: false\n },\n left: {\n type: Boolean,\n default: false\n },\n start: {\n type: Boolean,\n default: false // alias of 'left'\n\n },\n right: {\n type: Boolean,\n default: false\n },\n end: {\n type: Boolean,\n default: false // alias of 'right'\n\n },\n height: {\n type: String,\n default: null\n },\n width: {\n type: String,\n default: null\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: 'BCardImg',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data;\n var baseClass = 'card-img';\n\n if (props.top) {\n baseClass += '-top';\n } else if (props.right || props.end) {\n baseClass += '-right';\n } else if (props.bottom) {\n baseClass += '-bottom';\n } else if (props.left || props.start) {\n baseClass += '-left';\n }\n\n return h('img', mergeData(data, {\n class: [baseClass],\n attrs: {\n src: props.src,\n alt: props.alt,\n height: props.height,\n width: props.width\n }\n }));\n }\n});","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport prefixPropName from '../../utils/prefix-prop-name';\nimport unPrefixPropName from '../../utils/unprefix-prop-name';\nimport copyProps from '../../utils/copy-props';\nimport pluckProps from '../../utils/pluck-props';\nimport { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot';\nimport cardMixin from '../../mixins/card-mixin';\nimport BCardBody, { props as bodyProps } from './card-body';\nimport BCardHeader, { props as headerProps } from './card-header';\nimport BCardFooter, { props as footerProps } from './card-footer';\nimport BCardImg, { props as imgProps } from './card-img';\nvar cardImgProps = copyProps(imgProps, prefixPropName.bind(null, 'img'));\ncardImgProps.imgSrc.required = false;\nexport var props = _objectSpread({}, bodyProps, headerProps, footerProps, cardImgProps, copyProps(cardMixin.props), {\n align: {\n type: String,\n default: null\n },\n noBody: {\n type: Boolean,\n default: false\n } // @vue/component\n\n});\nexport default Vue.extend({\n name: 'BCard',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var $slots = slots(); // Vue < 2.6.x may return undefined for scopedSlots\n\n var $scopedSlots = scopedSlots || {}; // Create placeholder elements for each section\n\n var imgFirst = h(false);\n var header = h(false);\n var content = h(false);\n var footer = h(false);\n var imgLast = h(false);\n\n if (props.imgSrc) {\n var img = h(BCardImg, {\n props: pluckProps(cardImgProps, props, unPrefixPropName.bind(null, 'img'))\n });\n\n if (props.imgBottom) {\n imgLast = img;\n } else {\n imgFirst = img;\n }\n }\n\n if (props.header || hasNormalizedSlot('header', $scopedSlots, $slots)) {\n header = h(BCardHeader, {\n props: pluckProps(headerProps, props)\n }, normalizeSlot('header', {}, $scopedSlots, $slots));\n }\n\n content = normalizeSlot('default', {}, $scopedSlots, $slots) || [];\n\n if (!props.noBody) {\n // Wrap content in card-body\n content = [h(BCardBody, {\n props: pluckProps(bodyProps, props)\n }, _toConsumableArray(content))];\n }\n\n if (props.footer || hasNormalizedSlot('footer', $scopedSlots, $slots)) {\n footer = h(BCardFooter, {\n props: pluckProps(footerProps, props)\n }, normalizeSlot('footer', {}, $scopedSlots, $slots));\n }\n\n return h(props.tag, mergeData(data, {\n staticClass: 'card',\n class: (_class = {\n 'flex-row': props.imgLeft || props.imgStart,\n 'flex-row-reverse': (props.imgRight || props.imgEnd) && !(props.imgLeft || props.imgStart)\n }, _defineProperty(_class, \"text-\".concat(props.align), Boolean(props.align)), _defineProperty(_class, \"bg-\".concat(props.bgVariant), Boolean(props.bgVariant)), _defineProperty(_class, \"border-\".concat(props.borderVariant), Boolean(props.borderVariant)), _defineProperty(_class, \"text-\".concat(props.textVariant), Boolean(props.textVariant)), _class)\n }), [imgFirst, header].concat(_toConsumableArray(content), [footer, imgLast]));\n }\n});","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; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { getComponentConfig } from '../../utils/config';\nimport { isString } from '../../utils/inspect'; // --- Constants --\n\nvar NAME = 'BImg'; // Blank image with fill template\n\nvar BLANK_TEMPLATE = '<svg width=\"%{w}\" height=\"%{h}\" ' + 'xmlns=\"http://www.w3.org/2000/svg\" ' + 'viewBox=\"0 0 %{w} %{h}\" preserveAspectRatio=\"none\">' + '<rect width=\"100%\" height=\"100%\" style=\"fill:%{f};\"></rect>' + '</svg>';\nexport var props = {\n src: {\n type: String,\n default: null\n },\n alt: {\n type: String,\n default: null\n },\n width: {\n type: [Number, String],\n default: null\n },\n height: {\n type: [Number, String],\n default: null\n },\n block: {\n type: Boolean,\n default: false\n },\n fluid: {\n type: Boolean,\n default: false\n },\n fluidGrow: {\n // Gives fluid images class `w-100` to make them grow to fit container\n type: Boolean,\n default: false\n },\n rounded: {\n // rounded can be:\n // false: no rounding of corners\n // true: slightly rounded corners\n // 'top': top corners rounded\n // 'right': right corners rounded\n // 'bottom': bottom corners rounded\n // 'left': left corners rounded\n // 'circle': circle/oval\n // '0': force rounding off\n type: [Boolean, String],\n default: false\n },\n thumbnail: {\n type: Boolean,\n default: false\n },\n left: {\n type: Boolean,\n default: false\n },\n right: {\n type: Boolean,\n default: false\n },\n center: {\n type: Boolean,\n default: false\n },\n blank: {\n type: Boolean,\n default: false\n },\n blankColor: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'blankColor');\n }\n } // --- Helper methods ---\n\n};\n\nfunction makeBlankImgSrc(width, height, color) {\n var src = encodeURIComponent(BLANK_TEMPLATE.replace('%{w}', String(width)).replace('%{h}', String(height)).replace('%{f}', color));\n return \"data:image/svg+xml;charset=UTF-8,\".concat(src);\n} // @vue/component\n\n\nexport default Vue.extend({\n name: 'BImg',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data;\n var src = props.src;\n var width = parseInt(props.width, 10) ? parseInt(props.width, 10) : null;\n var height = parseInt(props.height, 10) ? parseInt(props.height, 10) : null;\n var align = null;\n var block = props.block;\n\n if (props.blank) {\n if (!height && Boolean(width)) {\n height = width;\n } else if (!width && Boolean(height)) {\n width = height;\n }\n\n if (!width && !height) {\n width = 1;\n height = 1;\n } // Make a blank SVG image\n\n\n src = makeBlankImgSrc(width, height, props.blankColor || 'transparent');\n }\n\n if (props.left) {\n align = 'float-left';\n } else if (props.right) {\n align = 'float-right';\n } else if (props.center) {\n align = 'mx-auto';\n block = true;\n }\n\n return h('img', mergeData(data, {\n attrs: {\n src: src,\n alt: props.alt,\n width: width ? String(width) : null,\n height: height ? String(height) : null\n },\n class: (_class = {\n 'img-thumbnail': props.thumbnail,\n 'img-fluid': props.fluid || props.fluidGrow,\n 'w-100': props.fluidGrow,\n rounded: props.rounded === '' || props.rounded === true\n }, _defineProperty(_class, \"rounded-\".concat(props.rounded), isString(props.rounded) && props.rounded !== ''), _defineProperty(_class, align, Boolean(align)), _defineProperty(_class, 'd-block', block), _class)\n }));\n }\n});","import Vue from '../../utils/vue';\nimport BImg from './img';\nimport { getComponentConfig } from '../../utils/config';\nimport { getBCR, eventOn, eventOff } from '../../utils/dom';\nimport { hasIntersectionObserverSupport } from '../../utils/env';\nvar NAME = 'BImgLazy';\nvar THROTTLE = 100;\nvar EVENT_OPTIONS = {\n passive: true,\n capture: false\n};\nexport var props = {\n src: {\n type: String,\n default: null,\n required: true\n },\n alt: {\n type: String,\n default: null\n },\n width: {\n type: [Number, String],\n default: null\n },\n height: {\n type: [Number, String],\n default: null\n },\n blankSrc: {\n // If null, a blank image is generated\n type: String,\n default: null\n },\n blankColor: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'blankColor');\n }\n },\n blankWidth: {\n type: [Number, String],\n default: null\n },\n blankHeight: {\n type: [Number, String],\n default: null\n },\n show: {\n type: Boolean,\n default: false\n },\n fluid: {\n type: Boolean,\n default: false\n },\n fluidGrow: {\n type: Boolean,\n default: false\n },\n block: {\n type: Boolean,\n default: false\n },\n thumbnail: {\n type: Boolean,\n default: false\n },\n rounded: {\n type: [Boolean, String],\n default: false\n },\n left: {\n type: Boolean,\n default: false\n },\n right: {\n type: Boolean,\n default: false\n },\n center: {\n type: Boolean,\n default: false\n },\n offset: {\n type: [Number, String],\n default: 360\n },\n throttle: {\n type: [Number, String],\n default: THROTTLE\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: NAME,\n props: props,\n data: function data() {\n return {\n isShown: false,\n scrollTimeout: null,\n observer: null\n };\n },\n computed: {\n computedSrc: function computedSrc() {\n return !this.blankSrc || this.isShown ? this.src : this.blankSrc;\n },\n computedBlank: function computedBlank() {\n return !(this.isShown || this.blankSrc);\n },\n computedWidth: function computedWidth() {\n return this.isShown ? this.width : this.blankWidth || this.width;\n },\n computedHeight: function computedHeight() {\n return this.isShown ? this.height : this.blankHeight || this.height;\n }\n },\n watch: {\n show: function show(newVal, oldVal) {\n if (newVal !== oldVal) {\n this.isShown = newVal;\n\n if (!newVal) {\n // Make sure listeners are re-enabled if img is force set to blank\n this.setListeners(true);\n }\n }\n },\n isShown: function isShown(newVal, oldVal) {\n if (newVal !== oldVal) {\n // Update synched show prop\n this.$emit('update:show', newVal);\n }\n }\n },\n created: function created() {\n this.isShown = this.show;\n },\n mounted: function mounted() {\n if (this.isShown) {\n this.setListeners(false);\n } else {\n this.setListeners(true);\n }\n },\n activated: function activated()\n /* istanbul ignore next */\n {\n if (!this.isShown) {\n this.setListeners(true);\n }\n },\n deactivated: function deactivated()\n /* istanbul ignore next */\n {\n this.setListeners(false);\n },\n beforeDestroy: function beforeDestroy() {\n this.setListeners(false);\n },\n methods: {\n setListeners: function setListeners(on) {\n var _this = this;\n\n if (this.scrollTimeout) {\n clearTimeout(this.scrollTimeout);\n this.scrollTimeout = null;\n }\n /* istanbul ignore next: JSDOM doen't support IntersectionObserver */\n\n\n if (this.observer) {\n this.observer.unobserve(this.$el);\n this.observer.disconnect();\n this.observer = null;\n }\n\n var winEvts = ['scroll', 'resize', 'orientationchange'];\n winEvts.forEach(function (evt) {\n return eventOff(window, evt, _this.onScroll, EVENT_OPTIONS);\n });\n eventOff(this.$el, 'load', this.checkView, EVENT_OPTIONS);\n eventOff(document, 'transitionend', this.onScroll, EVENT_OPTIONS);\n\n if (on) {\n /* istanbul ignore if: JSDOM doen't support IntersectionObserver */\n if (hasIntersectionObserverSupport) {\n this.observer = new IntersectionObserver(this.doShow, {\n root: null,\n // viewport\n rootMargin: \"\".concat(parseInt(this.offset, 10) || 0, \"px\"),\n threshold: 0 // percent intersection\n\n });\n this.observer.observe(this.$el);\n } else {\n // Fallback to scroll/etc events\n winEvts.forEach(function (evt) {\n return eventOn(window, evt, _this.onScroll, EVENT_OPTIONS);\n });\n eventOn(this.$el, 'load', this.checkView, EVENT_OPTIONS);\n eventOn(document, 'transitionend', this.onScroll, EVENT_OPTIONS);\n }\n }\n },\n doShow: function doShow(entries) {\n if (entries && (entries[0].isIntersecting || entries[0].intersectionRatio > 0.0)) {\n this.isShown = true;\n this.setListeners(false);\n }\n },\n checkView: function checkView() {\n // check bounding box + offset to see if we should show\n\n /* istanbul ignore next: should rarely occur */\n if (this.isShown) {\n this.setListeners(false);\n return;\n }\n\n var offset = parseInt(this.offset, 10) || 0;\n var docElement = document.documentElement;\n var view = {\n l: 0 - offset,\n t: 0 - offset,\n b: docElement.clientHeight + offset,\n r: docElement.clientWidth + offset // JSDOM Doesn't support BCR, but we fake it in the tests\n\n };\n var box = getBCR(this.$el);\n\n if (box.right >= view.l && box.bottom >= view.t && box.left <= view.r && box.top <= view.b) {\n // image is in view (or about to be in view)\n this.doShow([{\n isIntersecting: true\n }]);\n }\n },\n onScroll: function onScroll() {\n /* istanbul ignore if: should rarely occur */\n if (this.isShown) {\n this.setListeners(false);\n } else {\n clearTimeout(this.scrollTimeout);\n this.scrollTimeout = setTimeout(this.checkView, parseInt(this.throttle, 10) || THROTTLE);\n }\n }\n },\n render: function render(h) {\n return h(BImg, {\n props: {\n // Computed value props\n src: this.computedSrc,\n blank: this.computedBlank,\n width: this.computedWidth,\n height: this.computedHeight,\n // Passthough props\n alt: this.alt,\n blankColor: this.blankColor,\n fluid: this.fluid,\n fluidGrow: this.fluidGrow,\n block: this.block,\n thumbnail: this.thumbnail,\n rounded: this.rounded,\n left: this.left,\n right: this.right,\n center: this.center\n }\n });\n }\n});","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport Vue from '../../utils/vue';\nimport BImgLazy, { props as imgLazyProps } from '../image/img-lazy';\nimport { omit } from '../../utils/object';\nimport { mergeData } from 'vue-functional-data-merge'; // Copy of `<b-img-lazy>` props, and remove conflicting/non-applicable props\n// The `omit()` util creates a new object, so we can just pass the original props\n\nvar lazyProps = omit(imgLazyProps, ['left', 'right', 'center', 'block', 'rounded', 'thumbnail', 'fluid', 'fluidGrow']);\nexport var props = _objectSpread({}, lazyProps, {\n top: {\n type: Boolean,\n default: false\n },\n bottom: {\n type: Boolean,\n default: false\n },\n left: {\n type: Boolean,\n default: false\n },\n start: {\n type: Boolean,\n default: false // alias of 'left'\n\n },\n right: {\n type: Boolean,\n default: false\n },\n end: {\n type: Boolean,\n default: false // alias of 'right'\n\n } // @vue/component\n\n});\nexport default Vue.extend({\n name: 'BCardImgLazy',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data;\n var baseClass = 'card-img';\n\n if (props.top) {\n baseClass += '-top';\n } else if (props.right || props.end) {\n baseClass += '-right';\n } else if (props.bottom) {\n baseClass += '-bottom';\n } else if (props.left || props.start) {\n baseClass += '-left';\n } // False out the left/center/right props before passing to b-img-lazy\n\n\n var lazyProps = _objectSpread({}, props, {\n left: false,\n right: false,\n center: false\n });\n\n return h(BImgLazy, mergeData(data, {\n class: [baseClass],\n props: lazyProps\n }));\n }\n});","import Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nexport var props = {\n textTag: {\n type: String,\n default: 'p'\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: 'BCardText',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.textTag, mergeData(data, {\n staticClass: 'card-text'\n }), children);\n }\n});","import Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nexport var props = {\n tag: {\n type: String,\n default: 'div'\n },\n deck: {\n type: Boolean,\n default: false\n },\n columns: {\n type: Boolean,\n default: false\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: 'BCardGroup',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var baseClass = 'card-group';\n\n if (props.deck) {\n baseClass = 'card-deck';\n } else if (props.columns) {\n baseClass = 'card-columns';\n }\n\n return h(props.tag, mergeData(data, {\n class: baseClass\n }), children);\n }\n});","import BCard from './card';\nimport BCardHeader from './card-header';\nimport BCardBody from './card-body';\nimport BCardTitle from './card-title';\nimport BCardSubTitle from './card-sub-title';\nimport BCardFooter from './card-footer';\nimport BCardImg from './card-img';\nimport BCardImgLazy from './card-img-lazy';\nimport BCardText from './card-text';\nimport BCardGroup from './card-group';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BCard: BCard,\n BCardHeader: BCardHeader,\n BCardBody: BCardBody,\n BCardTitle: BCardTitle,\n BCardSubTitle: BCardSubTitle,\n BCardFooter: BCardFooter,\n BCardImg: BCardImg,\n BCardImgLazy: BCardImgLazy,\n BCardText: BCardText,\n BCardGroup: BCardGroup\n};\nexport { BCard, BCardHeader, BCardBody, BCardTitle, BCardSubTitle, BCardFooter, BCardImg, BCardImgLazy, BCardText, BCardGroup };\nexport default {\n install: installFactory({\n components: components\n })\n};","var noop = function noop() {};\n\nexport default noop;","import Vue from '../../utils/vue';\nimport KeyCodes from '../../utils/key-codes';\nimport noop from '../../utils/noop';\nimport observeDom from '../../utils/observe-dom';\nimport { getComponentConfig } from '../../utils/config';\nimport { selectAll, reflow, addClass, removeClass, setAttr, eventOn, eventOff } from '../../utils/dom';\nimport { isBrowser, hasTouchSupport, hasPointerEventSupport } from '../../utils/env';\nimport { isUndefined } from '../../utils/inspect';\nimport idMixin from '../../mixins/id';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nvar NAME = 'BCarousel'; // Slide directional classes\n\nvar DIRECTION = {\n next: {\n dirClass: 'carousel-item-left',\n overlayClass: 'carousel-item-next'\n },\n prev: {\n dirClass: 'carousel-item-right',\n overlayClass: 'carousel-item-prev'\n } // Fallback Transition duration (with a little buffer) in ms\n\n};\nvar TRANS_DURATION = 600 + 50; // Time for mouse compat events to fire after touch\n\nvar TOUCH_EVENT_COMPAT_WAIT = 500; // Number of pixels to consider touch move a swipe\n\nvar SWIPE_THRESHOLD = 40; // PointerEvent pointer types\n\nvar PointerType = {\n TOUCH: 'touch',\n PEN: 'pen' // Transition Event names\n\n};\nvar TransitionEndEvents = {\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'transitionend',\n OTransition: 'otransitionend oTransitionEnd',\n transition: 'transitionend'\n};\nvar EventOptions = {\n passive: true,\n capture: false // Return the browser specific transitionEnd event name\n\n};\n\nfunction getTransitionEndEvent(el) {\n for (var name in TransitionEndEvents) {\n if (!isUndefined(el.style[name])) {\n return TransitionEndEvents[name];\n }\n } // fallback\n\n /* istanbul ignore next */\n\n\n return null;\n} // @vue/component\n\n\nexport default Vue.extend({\n name: 'BCarousel',\n mixins: [idMixin, normalizeSlotMixin],\n provide: function provide() {\n return {\n bvCarousel: this\n };\n },\n model: {\n prop: 'value',\n event: 'input'\n },\n props: {\n labelPrev: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'labelPrev');\n }\n },\n labelNext: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'labelNext');\n }\n },\n labelGotoSlide: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'labelGotoSlide');\n }\n },\n labelIndicators: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'labelIndicators');\n }\n },\n interval: {\n type: Number,\n default: 5000\n },\n indicators: {\n type: Boolean,\n default: false\n },\n controls: {\n type: Boolean,\n default: false\n },\n noAnimation: {\n // Disable slide/fade animation\n type: Boolean,\n default: false\n },\n fade: {\n // Enable cross-fade animation instead of slide animation\n type: Boolean,\n default: false\n },\n noTouch: {\n // Sniffed by carousel-slide\n type: Boolean,\n default: false\n },\n noHoverPause: {\n // Disable pause on hover\n type: Boolean,\n default: false\n },\n imgWidth: {\n // Sniffed by carousel-slide\n type: [Number, String] // default: undefined\n\n },\n imgHeight: {\n // Sniffed by carousel-slide\n type: [Number, String] // default: undefined\n\n },\n background: {\n type: String // default: undefined\n\n },\n value: {\n type: Number,\n default: 0\n }\n },\n data: function data() {\n return {\n index: this.value || 0,\n isSliding: false,\n transitionEndEvent: null,\n slides: [],\n direction: null,\n isPaused: !(parseInt(this.interval, 10) > 0),\n // Touch event handling values\n touchStartX: 0,\n touchDeltaX: 0\n };\n },\n watch: {\n value: function value(newVal, oldVal) {\n if (newVal !== oldVal) {\n this.setSlide(newVal);\n }\n },\n interval: function interval(newVal, oldVal) {\n if (newVal === oldVal) {\n /* istanbul ignore next */\n return;\n }\n\n if (!newVal) {\n // Pausing slide show\n this.pause(false);\n } else {\n // Restarting or Changing interval\n this.pause(true);\n this.start(false);\n }\n },\n isPaused: function isPaused(newVal, oldVal) {\n if (newVal !== oldVal) {\n this.$emit(newVal ? 'paused' : 'unpaused');\n }\n },\n index: function index(to, from) {\n if (to === from || this.isSliding) {\n /* istanbul ignore next */\n return;\n }\n\n this.doSlide(to, from);\n }\n },\n created: function created() {\n // Create private non-reactive props\n this._intervalId = null;\n this._animationTimeout = null;\n this._touchTimeout = null; // Set initial paused state\n\n this.isPaused = !(parseInt(this.interval, 10) > 0);\n },\n mounted: function mounted() {\n // Cache current browser transitionend event name\n this.transitionEndEvent = getTransitionEndEvent(this.$el) || null; // Get all slides\n\n this.updateSlides(); // Observe child changes so we can update slide list\n\n observeDom(this.$refs.inner, this.updateSlides.bind(this), {\n subtree: false,\n childList: true,\n attributes: true,\n attributeFilter: ['id']\n });\n },\n beforeDestroy: function beforeDestroy() {\n clearTimeout(this._animationTimeout);\n clearTimeout(this._touchTimeout);\n clearInterval(this._intervalId);\n this._intervalId = null;\n this._animationTimeout = null;\n this._touchTimeout = null;\n },\n methods: {\n // Set slide\n setSlide: function setSlide(slide) {\n var _this = this;\n\n var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n // Don't animate when page is not visible\n\n /* istanbul ignore if: difficult to test */\n if (isBrowser && document.visibilityState && document.hidden) {\n return;\n }\n\n var len = this.slides.length; // Don't do anything if nothing to slide to\n\n if (len === 0) {\n return;\n } // Don't change slide while transitioning, wait until transition is done\n\n\n if (this.isSliding) {\n // Schedule slide after sliding complete\n this.$once('sliding-end', function () {\n return _this.setSlide(slide, direction);\n });\n return;\n }\n\n this.direction = direction; // Make sure we have an integer (you never know!)\n\n slide = Math.floor(slide); // Set new slide index. Wrap around if necessary\n\n this.index = slide >= len ? 0 : slide >= 0 ? slide : len - 1;\n },\n // Previous slide\n prev: function prev() {\n this.setSlide(this.index - 1, 'prev');\n },\n // Next slide\n next: function next() {\n this.setSlide(this.index + 1, 'next');\n },\n // Pause auto rotation\n pause: function pause(evt) {\n if (!evt) {\n this.isPaused = true;\n }\n\n if (this._intervalId) {\n clearInterval(this._intervalId);\n this._intervalId = null;\n }\n },\n // Start auto rotate slides\n start: function start(evt) {\n if (!evt) {\n this.isPaused = false;\n }\n /* istanbul ignore next: most likely will never happen, but just in case */\n\n\n if (this._intervalId) {\n clearInterval(this._intervalId);\n this._intervalId = null;\n } // Don't start if no interval, or less than 2 slides\n\n\n if (this.interval && this.slides.length > 1) {\n this._intervalId = setInterval(this.next, Math.max(1000, this.interval));\n }\n },\n // Restart auto rotate slides when focus/hover leaves the carousel\n restart: function restart(evt)\n /* istanbul ignore next: difficult to test */\n {\n if (!this.$el.contains(document.activeElement)) {\n this.start();\n }\n },\n doSlide: function doSlide(to, from) {\n var _this2 = this;\n\n var isCycling = Boolean(this.interval); // Determine sliding direction\n\n var direction = this.calcDirection(this.direction, from, to);\n var overlayClass = direction.overlayClass;\n var dirClass = direction.dirClass; // Determine current and next slides\n\n var currentSlide = this.slides[from];\n var nextSlide = this.slides[to]; // Don't do anything if there aren't any slides to slide to\n\n if (!currentSlide || !nextSlide) {\n /* istanbul ignore next */\n return;\n } // Start animating\n\n\n this.isSliding = true;\n\n if (isCycling) {\n this.pause(false);\n }\n\n this.$emit('sliding-start', to); // Update v-model\n\n this.$emit('input', this.index);\n\n if (this.noAnimation) {\n addClass(nextSlide, 'active');\n removeClass(currentSlide, 'active');\n this.isSliding = false; // Notify ourselves that we're done sliding (slid)\n\n this.$nextTick(function () {\n return _this2.$emit('sliding-end', to);\n });\n } else {\n addClass(nextSlide, overlayClass); // Trigger a reflow of next slide\n\n reflow(nextSlide);\n addClass(currentSlide, dirClass);\n addClass(nextSlide, dirClass); // Transition End handler\n\n var called = false;\n /* istanbul ignore next: difficult to test */\n\n var onceTransEnd = function onceTransEnd(evt) {\n if (called) {\n return;\n }\n\n called = true;\n /* istanbul ignore if: transition events cant be tested in JSDOM */\n\n if (_this2.transitionEndEvent) {\n var events = _this2.transitionEndEvent.split(/\\s+/);\n\n events.forEach(function (evt) {\n return eventOff(currentSlide, evt, onceTransEnd, EventOptions);\n });\n }\n\n _this2._animationTimeout = null;\n removeClass(nextSlide, dirClass);\n removeClass(nextSlide, overlayClass);\n addClass(nextSlide, 'active');\n removeClass(currentSlide, 'active');\n removeClass(currentSlide, dirClass);\n removeClass(currentSlide, overlayClass);\n setAttr(currentSlide, 'aria-current', 'false');\n setAttr(nextSlide, 'aria-current', 'true');\n setAttr(currentSlide, 'aria-hidden', 'true');\n setAttr(nextSlide, 'aria-hidden', 'false');\n _this2.isSliding = false;\n _this2.direction = null; // Notify ourselves that we're done sliding (slid)\n\n _this2.$nextTick(function () {\n return _this2.$emit('sliding-end', to);\n });\n }; // Set up transitionend handler\n\n /* istanbul ignore if: transition events cant be tested in JSDOM */\n\n\n if (this.transitionEndEvent) {\n var events = this.transitionEndEvent.split(/\\s+/);\n events.forEach(function (event) {\n return eventOn(currentSlide, event, onceTransEnd, EventOptions);\n });\n } // Fallback to setTimeout()\n\n\n this._animationTimeout = setTimeout(onceTransEnd, TRANS_DURATION);\n }\n\n if (isCycling) {\n this.start(false);\n }\n },\n // Update slide list\n updateSlides: function updateSlides() {\n this.pause(true); // Get all slides as DOM elements\n\n this.slides = selectAll('.carousel-item', this.$refs.inner);\n var numSlides = this.slides.length; // Keep slide number in range\n\n var index = Math.max(0, Math.min(Math.floor(this.index), numSlides - 1));\n this.slides.forEach(function (slide, idx) {\n var n = idx + 1;\n\n if (idx === index) {\n addClass(slide, 'active');\n setAttr(slide, 'aria-current', 'true');\n } else {\n removeClass(slide, 'active');\n setAttr(slide, 'aria-current', 'false');\n }\n\n setAttr(slide, 'aria-posinset', String(n));\n setAttr(slide, 'aria-setsize', String(numSlides));\n }); // Set slide as active\n\n this.setSlide(index);\n this.start(this.isPaused);\n },\n calcDirection: function calcDirection() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var curIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var nextIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n if (!direction) {\n return nextIndex > curIndex ? DIRECTION.next : DIRECTION.prev;\n }\n\n return DIRECTION[direction];\n },\n handleClick: function handleClick(evt, fn) {\n var keyCode = evt.keyCode;\n\n if (evt.type === 'click' || keyCode === KeyCodes.SPACE || keyCode === KeyCodes.ENTER) {\n evt.preventDefault();\n evt.stopPropagation();\n fn();\n }\n },\n handleSwipe: function handleSwipe()\n /* istanbul ignore next: JSDOM doesn't support touch events */\n {\n var absDeltaX = Math.abs(this.touchDeltaX);\n\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return;\n }\n\n var direction = absDeltaX / this.touchDeltaX;\n\n if (direction > 0) {\n // Swipe left\n this.prev();\n } else if (direction < 0) {\n // Swipe right\n this.next();\n }\n },\n touchStart: function touchStart(evt)\n /* istanbul ignore next: JSDOM doesn't support touch events */\n {\n if (hasPointerEventSupport && PointerType[evt.pointerType.toUpperCase()]) {\n this.touchStartX = evt.clientX;\n } else if (!hasPointerEventSupport) {\n this.touchStartX = evt.touches[0].clientX;\n }\n },\n touchMove: function touchMove(evt)\n /* istanbul ignore next: JSDOM doesn't support touch events */\n {\n // Ensure swiping with one touch and not pinching\n if (evt.touches && evt.touches.length > 1) {\n this.touchDeltaX = 0;\n } else {\n this.touchDeltaX = evt.touches[0].clientX - this.touchStartX;\n }\n },\n touchEnd: function touchEnd(evt)\n /* istanbul ignore next: JSDOM doesn't support touch events */\n {\n if (hasPointerEventSupport && PointerType[evt.pointerType.toUpperCase()]) {\n this.touchDeltaX = evt.clientX - this.touchStartX;\n }\n\n this.handleSwipe(); // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause(false);\n\n if (this._touchTimeout) {\n clearTimeout(this._touchTimeout);\n }\n\n this._touchTimeout = setTimeout(this.start, TOUCH_EVENT_COMPAT_WAIT + Math.max(1000, this.interval));\n }\n },\n render: function render(h) {\n var _this3 = this;\n\n // Wrapper for slides\n var inner = h('div', {\n ref: 'inner',\n class: ['carousel-inner'],\n attrs: {\n id: this.safeId('__BV_inner_'),\n role: 'list'\n }\n }, [this.normalizeSlot('default')]); // Prev and next controls\n\n var controls = h(false);\n\n if (this.controls) {\n controls = [h('a', {\n class: ['carousel-control-prev'],\n attrs: {\n href: '#',\n role: 'button',\n 'aria-controls': this.safeId('__BV_inner_')\n },\n on: {\n click: function click(evt) {\n _this3.handleClick(evt, _this3.prev);\n },\n keydown: function keydown(evt) {\n _this3.handleClick(evt, _this3.prev);\n }\n }\n }, [h('span', {\n class: ['carousel-control-prev-icon'],\n attrs: {\n 'aria-hidden': 'true'\n }\n }), h('span', {\n class: ['sr-only']\n }, [this.labelPrev])]), h('a', {\n class: ['carousel-control-next'],\n attrs: {\n href: '#',\n role: 'button',\n 'aria-controls': this.safeId('__BV_inner_')\n },\n on: {\n click: function click(evt) {\n _this3.handleClick(evt, _this3.next);\n },\n keydown: function keydown(evt) {\n _this3.handleClick(evt, _this3.next);\n }\n }\n }, [h('span', {\n class: ['carousel-control-next-icon'],\n attrs: {\n 'aria-hidden': 'true'\n }\n }), h('span', {\n class: ['sr-only']\n }, [this.labelNext])])];\n } // Indicators\n\n\n var indicators = h('ol', {\n class: ['carousel-indicators'],\n directives: [{\n name: 'show',\n rawName: 'v-show',\n value: this.indicators,\n expression: 'indicators'\n }],\n attrs: {\n id: this.safeId('__BV_indicators_'),\n 'aria-hidden': this.indicators ? 'false' : 'true',\n 'aria-label': this.labelIndicators,\n 'aria-owns': this.safeId('__BV_inner_')\n }\n }, this.slides.map(function (slide, n) {\n return h('li', {\n key: \"slide_\".concat(n),\n class: {\n active: n === _this3.index\n },\n attrs: {\n role: 'button',\n id: _this3.safeId(\"__BV_indicator_\".concat(n + 1, \"_\")),\n tabindex: _this3.indicators ? '0' : '-1',\n 'aria-current': n === _this3.index ? 'true' : 'false',\n 'aria-label': \"\".concat(_this3.labelGotoSlide, \" \").concat(n + 1),\n 'aria-describedby': _this3.slides[n].id || null,\n 'aria-controls': _this3.safeId('__BV_inner_')\n },\n on: {\n click: function click(evt) {\n _this3.handleClick(evt, function () {\n _this3.setSlide(n);\n });\n },\n keydown: function keydown(evt) {\n _this3.handleClick(evt, function () {\n _this3.setSlide(n);\n });\n }\n }\n });\n }));\n var on = {\n mouseenter: this.noHoverPause ? noop : this.pause,\n mouseleave: this.noHoverPause ? noop : this.restart,\n focusin: this.pause,\n focusout: this.restart,\n keydown: function keydown(evt) {\n if (/input|textarea/i.test(evt.target.tagName)) {\n /* istanbul ignore next */\n return;\n }\n\n var keyCode = evt.keyCode;\n\n if (keyCode === KeyCodes.LEFT || keyCode === KeyCodes.RIGHT) {\n evt.preventDefault();\n evt.stopPropagation();\n\n _this3[keyCode === KeyCodes.LEFT ? 'prev' : 'next']();\n }\n } // Touch support event handlers for environment\n\n };\n\n if (!this.noTouch && hasTouchSupport) {\n // Attach appropriate listeners (prepend event name with '&' for passive mode)\n\n /* istanbul ignore next: JSDOM doesn't support touch events */\n if (hasPointerEventSupport) {\n on['&pointerdown'] = this.touchStart;\n on['&pointerup'] = this.touchEnd;\n } else {\n on['&touchstart'] = this.touchStart;\n on['&touchmove'] = this.touchMove;\n on['&touchend'] = this.touchEnd;\n }\n } // Return the carousel\n\n\n return h('div', {\n staticClass: 'carousel',\n class: {\n slide: !this.noAnimation,\n 'carousel-fade': !this.noAnimation && this.fade,\n 'pointer-event': !this.noTouch && hasTouchSupport && hasPointerEventSupport\n },\n style: {\n background: this.background\n },\n attrs: {\n role: 'region',\n id: this.safeId(),\n 'aria-busy': this.isSliding ? 'true' : 'false'\n },\n on: on\n }, [inner, controls, indicators]);\n }\n});","import Vue from '../../utils/vue';\nimport BImg from '../image/img';\nimport idMixin from '../../mixins/id';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport { hasTouchSupport } from '../../utils/env';\nimport { htmlOrText } from '../../utils/html';\nexport var props = {\n imgSrc: {\n type: String // default: undefined\n\n },\n imgAlt: {\n type: String // default: undefined\n\n },\n imgWidth: {\n type: [Number, String] // default: undefined\n\n },\n imgHeight: {\n type: [Number, String] // default: undefined\n\n },\n imgBlank: {\n type: Boolean,\n default: false\n },\n imgBlankColor: {\n type: String,\n default: 'transparent'\n },\n contentVisibleUp: {\n type: String\n },\n contentTag: {\n type: String,\n default: 'div'\n },\n caption: {\n type: String\n },\n captionHtml: {\n type: String\n },\n captionTag: {\n type: String,\n default: 'h3'\n },\n text: {\n type: String\n },\n textHtml: {\n type: String\n },\n textTag: {\n type: String,\n default: 'p'\n },\n background: {\n type: String\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: 'BCarouselSlide',\n mixins: [idMixin, normalizeSlotMixin],\n inject: {\n bvCarousel: {\n default: function _default() {\n return {\n // Explicitly disable touch if not a child of carousel\n noTouch: true\n };\n }\n }\n },\n props: props,\n data: function data() {\n return {};\n },\n computed: {\n contentClasses: function contentClasses() {\n return [this.contentVisibleUp ? 'd-none' : '', this.contentVisibleUp ? \"d-\".concat(this.contentVisibleUp, \"-block\") : ''];\n },\n computedWidth: function computedWidth() {\n // Use local width, or try parent width\n return this.imgWidth || this.bvCarousel.imgWidth || null;\n },\n computedHeight: function computedHeight() {\n // Use local height, or try parent height\n return this.imgHeight || this.bvCarousel.imgHeight || null;\n }\n },\n render: function render(h) {\n var noDrag = !this.bvCarousel.noTouch && hasTouchSupport;\n var img = this.normalizeSlot('img');\n\n if (!img && (this.imgSrc || this.imgBlank)) {\n img = h(BImg, {\n props: {\n fluidGrow: true,\n block: true,\n src: this.imgSrc,\n blank: this.imgBlank,\n blankColor: this.imgBlankColor,\n width: this.computedWidth,\n height: this.computedHeight,\n alt: this.imgAlt\n },\n // Touch support event handler\n on: noDrag ? {\n dragstart: function dragstart(e) {\n /* istanbul ignore next: difficult to test in JSDOM */\n e.preventDefault();\n }\n } : {}\n });\n }\n\n if (!img) {\n img = h(false);\n }\n\n var content = h(this.contentTag, {\n staticClass: 'carousel-caption',\n class: this.contentClasses\n }, [this.caption || this.captionHtml ? h(this.captionTag, {\n domProps: htmlOrText(this.captionHtml, this.caption)\n }) : h(false), this.text || this.textHtml ? h(this.textTag, {\n domProps: htmlOrText(this.textHtml, this.text)\n }) : h(false), this.normalizeSlot('default')]);\n return h('div', {\n staticClass: 'carousel-item',\n style: {\n background: this.background || this.bvCarousel.background || null\n },\n attrs: {\n id: this.safeId(),\n role: 'listitem'\n }\n }, [img, content]);\n }\n});","import BCarousel from './carousel';\nimport BCarouselSlide from './carousel-slide';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BCarousel: BCarousel,\n BCarouselSlide: BCarouselSlide\n};\nexport { BCarousel, BCarouselSlide };\nexport default {\n install: installFactory({\n components: components\n })\n};","import Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nexport var props = {\n tag: {\n type: String,\n default: 'div'\n },\n fluid: {\n type: Boolean,\n default: false\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: 'BContainer',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, mergeData(data, {\n class: {\n container: !props.fluid,\n 'container-fluid': props.fluid\n }\n }), children);\n }\n});","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; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { arrayIncludes } from '../../utils/array';\nvar COMMON_ALIGNMENT = ['start', 'end', 'center'];\nexport var props = {\n tag: {\n type: String,\n default: 'div'\n },\n noGutters: {\n type: Boolean,\n default: false\n },\n alignV: {\n type: String,\n default: null,\n validator: function validator(str) {\n return arrayIncludes(COMMON_ALIGNMENT.concat(['baseline', 'stretch']), str);\n }\n },\n alignH: {\n type: String,\n default: null,\n validator: function validator(str) {\n return arrayIncludes(COMMON_ALIGNMENT.concat(['between', 'around']), str);\n }\n },\n alignContent: {\n type: String,\n default: null,\n validator: function validator(str) {\n return arrayIncludes(COMMON_ALIGNMENT.concat(['between', 'around', 'stretch']), str);\n }\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: 'BRow',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, mergeData(data, {\n staticClass: 'row',\n class: (_class = {\n 'no-gutters': props.noGutters\n }, _defineProperty(_class, \"align-items-\".concat(props.alignV), props.alignV), _defineProperty(_class, \"justify-content-\".concat(props.alignH), props.alignH), _defineProperty(_class, \"align-content-\".concat(props.alignContent), props.alignContent), _class)\n }), children);\n }\n});","import upperFirst from './upper-first';\n/**\n * Suffix can be a falsey value so nothing is appended to string.\n * (helps when looping over props & some shouldn't change)\n * Use data last parameters to allow for currying.\n * @param {string} suffix\n * @param {string} str\n */\n\nvar suffixPropName = function suffixPropName(suffix, str) {\n return str + (suffix ? upperFirst(suffix) : '');\n};\n\nexport default suffixPropName;","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport { mergeData } from 'vue-functional-data-merge';\nimport memoize from '../../utils/memoize';\nimport suffixPropName from '../../utils/suffix-prop-name';\nimport { arrayIncludes } from '../../utils/array';\nimport { isUndefined, isNull } from '../../utils/inspect';\nimport { keys, assign, create } from '../../utils/object';\nimport { getBreakpointsUpCached } from '../../utils/config';\n/**\n * Generates a prop object with a type of\n * [Boolean, String, Number]\n */\n\nfunction boolStrNum() {\n return {\n type: [Boolean, String, Number],\n default: false\n };\n}\n/**\n * Generates a prop object with a type of\n * [String, Number]\n */\n\n\nfunction strNum() {\n return {\n type: [String, Number],\n default: null\n };\n} // Memoized function for better performance on generating class names\n\n\nvar computeBkPtClass = memoize(function computeBkPt(type, breakpoint, val) {\n var className = type;\n\n if (isUndefined(val) || isNull(val) || val === false) {\n return undefined;\n }\n\n if (breakpoint) {\n className += \"-\".concat(breakpoint);\n } // Handling the boolean style prop when accepting [Boolean, String, Number]\n // means Vue will not convert <b-col sm></b-col> to sm: true for us.\n // Since the default is false, an empty string indicates the prop's presence.\n\n\n if (type === 'col' && (val === '' || val === true)) {\n // .col-md\n return className.toLowerCase();\n } // .order-md-6\n\n\n className += \"-\".concat(val);\n return className.toLowerCase();\n}); // Cached copy of the breakpoint prop names\n\nvar breakpointPropMap = create(null); // Lazy evaled props factory for BCol\n\nvar generateProps = function generateProps() {\n // Grab the breakpoints from the cached config (exclude the '' (xs) breakpoint)\n var breakpoints = getBreakpointsUpCached().filter(Boolean); // Supports classes like: .col-sm, .col-md-6, .col-lg-auto\n\n var breakpointCol = breakpoints.reduce(function (propMap, breakpoint) {\n if (breakpoint) {\n // We filter out the '' breakpoint (xs), as making a prop name ''\n // would not work. The `cols` prop is used for `xs`\n propMap[breakpoint] = boolStrNum();\n }\n\n return propMap;\n }, create(null)); // Supports classes like: .offset-md-1, .offset-lg-12\n\n var breakpointOffset = breakpoints.reduce(function (propMap, breakpoint) {\n propMap[suffixPropName(breakpoint, 'offset')] = strNum();\n return propMap;\n }, create(null)); // Supports classes like: .order-md-1, .order-lg-12\n\n var breakpointOrder = breakpoints.reduce(function (propMap, breakpoint) {\n propMap[suffixPropName(breakpoint, 'order')] = strNum();\n return propMap;\n }, create(null)); // For loop doesn't need to check hasOwnProperty\n // when using an object created from null\n\n breakpointPropMap = assign(create(null), {\n col: keys(breakpointCol),\n offset: keys(breakpointOffset),\n order: keys(breakpointOrder)\n }); // Return the generated props\n\n return _objectSpread({\n // Generic flexbox .col (xs)\n col: {\n type: Boolean,\n default: false\n },\n // .col-[1-12]|auto (xs)\n cols: strNum()\n }, breakpointCol, {\n offset: strNum()\n }, breakpointOffset, {\n order: strNum()\n }, breakpointOrder, {\n // Flex alignment\n alignSelf: {\n type: String,\n default: null,\n validator: function validator(str) {\n return arrayIncludes(['auto', 'start', 'end', 'center', 'baseline', 'stretch'], str);\n }\n },\n tag: {\n type: String,\n default: 'div'\n }\n });\n}; // We do not use Vue.extend here as that would evaluate the props\n// immediately, which we do not want to happen\n// @vue/component\n\n\nexport default {\n name: 'BCol',\n functional: true,\n\n get props() {\n // Allow props to be lazy evaled on first access and\n // then they become a non-getter afterwards.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get#Smart_self-overwriting_lazy_getters\n delete this.props; // eslint-disable-next-line no-return-assign\n\n return this.props = generateProps();\n },\n\n render: function render(h, _ref) {\n var _classList$push;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var classList = []; // Loop through `col`, `offset`, `order` breakpoint props\n\n for (var type in breakpointPropMap) {\n // Returns colSm, offset, offsetSm, orderMd, etc.\n var _keys = breakpointPropMap[type];\n\n for (var i = 0; i < _keys.length; i++) {\n // computeBkPt(col, colSm => Sm, value=[String, Number, Boolean])\n var c = computeBkPtClass(type, _keys[i].replace(type, ''), props[_keys[i]]); // If a class is returned, push it onto the array.\n\n if (c) {\n classList.push(c);\n }\n }\n }\n\n var hasColClasses = classList.some(function (className) {\n return /^col-/.test(className);\n });\n classList.push((_classList$push = {\n // Default to .col if no other col-{bp}-* classes generated nor `cols` specified.\n col: props.col || !hasColClasses && !props.cols\n }, _defineProperty(_classList$push, \"col-\".concat(props.cols), props.cols), _defineProperty(_classList$push, \"offset-\".concat(props.offset), props.offset), _defineProperty(_classList$push, \"order-\".concat(props.order), props.order), _defineProperty(_classList$push, \"align-self-\".concat(props.alignSelf), props.alignSelf), _classList$push));\n return h(props.tag, mergeData(data, {\n class: classList\n }), children);\n }\n};","import Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nexport var props = {\n tag: {\n type: String,\n default: 'div'\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: 'BFormRow',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, mergeData(data, {\n staticClass: 'form-row'\n }), children);\n }\n});","import BContainer from './container';\nimport BRow from './row';\nimport BCol from './col';\nimport BFormRow from './form-row';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BContainer: BContainer,\n BRow: BRow,\n BCol: BCol,\n BFormRow: BFormRow\n};\nexport { BContainer, BRow, BCol, BFormRow };\nexport default {\n install: installFactory({\n components: components\n })\n};","import Vue from '../../utils/vue';\nimport listenOnRootMixin from '../../mixins/listen-on-root';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport { isBrowser } from '../../utils/env';\nimport { addClass, hasClass, removeClass, closest, matches, reflow, getCS, getBCR, eventOn, eventOff } from '../../utils/dom'; // Events we emit on $root\n\nvar EVENT_STATE = 'bv::collapse::state';\nvar EVENT_ACCORDION = 'bv::collapse::accordion'; // Private event we emit on `$root` to ensure the toggle state is\n// always synced. It gets emitted even if the state has not changed!\n// This event is NOT to be documented as people should not be using it\n\nvar EVENT_STATE_SYNC = 'bv::collapse::sync::state'; // Events we listen to on `$root`\n\nvar EVENT_TOGGLE = 'bv::toggle::collapse';\nvar EVENT_STATE_REQUEST = 'bv::request::collapse::state'; // Event listener options\n\nvar EventOptions = {\n passive: true,\n capture: false // @vue/component\n\n};\nexport default Vue.extend({\n name: 'BCollapse',\n mixins: [listenOnRootMixin, normalizeSlotMixin],\n model: {\n prop: 'visible',\n event: 'input'\n },\n props: {\n id: {\n type: String,\n required: true\n },\n isNav: {\n type: Boolean,\n default: false\n },\n accordion: {\n type: String,\n default: null\n },\n visible: {\n type: Boolean,\n default: false\n },\n tag: {\n type: String,\n default: 'div'\n }\n },\n data: function data() {\n return {\n show: this.visible,\n transitioning: false\n };\n },\n computed: {\n classObject: function classObject() {\n return {\n 'navbar-collapse': this.isNav,\n collapse: !this.transitioning,\n show: this.show && !this.transitioning\n };\n }\n },\n watch: {\n visible: function visible(newVal) {\n if (newVal !== this.show) {\n this.show = newVal;\n }\n },\n show: function show(newVal, oldVal) {\n if (newVal !== oldVal) {\n this.emitState();\n }\n }\n },\n created: function created() {\n this.show = this.visible;\n },\n mounted: function mounted() {\n var _this = this;\n\n this.show = this.visible; // Listen for toggle events to open/close us\n\n this.listenOnRoot(EVENT_TOGGLE, this.handleToggleEvt); // Listen to other collapses for accordion events\n\n this.listenOnRoot(EVENT_ACCORDION, this.handleAccordionEvt);\n\n if (this.isNav) {\n // Set up handlers\n this.setWindowEvents(true);\n this.handleResize();\n }\n\n this.$nextTick(function () {\n _this.emitState();\n }); // Listen for \"Sync state\" requests from `v-b-toggle`\n\n this.$root.$on(EVENT_STATE_REQUEST, function (id) {\n if (id === _this.id) {\n _this.$nextTick(_this.emitSync);\n }\n });\n },\n updated: function updated() {\n // Emit a private event every time this component updates to ensure\n // the toggle button is in sync with the collapse's state\n // It is emitted regardless if the visible state changes\n this.emitSync();\n },\n deactivated: function deactivated()\n /* istanbul ignore next */\n {\n if (this.isNav) {\n this.setWindowEvents(false);\n }\n },\n activated: function activated()\n /* istanbul ignore next */\n {\n if (this.isNav) {\n this.setWindowEvents(true);\n }\n\n this.emitSync();\n },\n beforeDestroy: function beforeDestroy() {\n // Trigger state emit if needed\n this.show = false;\n\n if (this.isNav && isBrowser) {\n this.setWindowEvents(false);\n }\n },\n methods: {\n setWindowEvents: function setWindowEvents(on) {\n var method = on ? eventOn : eventOff;\n method(window, 'resize', this.handleResize, EventOptions);\n method(window, 'orientationchange', this.handleResize, EventOptions);\n },\n toggle: function toggle() {\n this.show = !this.show;\n },\n onEnter: function onEnter(el) {\n el.style.height = 0;\n reflow(el);\n el.style.height = el.scrollHeight + 'px';\n this.transitioning = true; // This should be moved out so we can add cancellable events\n\n this.$emit('show');\n },\n onAfterEnter: function onAfterEnter(el) {\n el.style.height = null;\n this.transitioning = false;\n this.$emit('shown');\n },\n onLeave: function onLeave(el) {\n el.style.height = 'auto';\n el.style.display = 'block';\n el.style.height = getBCR(el).height + 'px';\n reflow(el);\n this.transitioning = true;\n el.style.height = 0; // This should be moved out so we can add cancellable events\n\n this.$emit('hide');\n },\n onAfterLeave: function onAfterLeave(el) {\n el.style.height = null;\n this.transitioning = false;\n this.$emit('hidden');\n },\n emitState: function emitState() {\n this.$emit('input', this.show); // Let v-b-toggle know the state of this collapse\n\n this.$root.$emit(EVENT_STATE, this.id, this.show);\n\n if (this.accordion && this.show) {\n // Tell the other collapses in this accordion to close\n this.$root.$emit(EVENT_ACCORDION, this.id, this.accordion);\n }\n },\n emitSync: function emitSync() {\n // Emit a private event every time this component updates to ensure\n // the toggle button is in sync with the collapse's state\n // It is emitted regardless if the visible state changes\n this.$root.$emit(EVENT_STATE_SYNC, this.id, this.show);\n },\n checkDisplayBlock: function checkDisplayBlock() {\n // Check to see if the collapse has `display: block !important;` set.\n // We can't set `display: none;` directly on this.$el, as it would\n // trigger a new transition to start (or cancel a current one).\n var restore = hasClass(this.$el, 'show');\n removeClass(this.$el, 'show');\n var isBlock = getCS(this.$el).display === 'block';\n restore && addClass(this.$el, 'show');\n return isBlock;\n },\n clickHandler: function clickHandler(evt) {\n // If we are in a nav/navbar, close the collapse when non-disabled link clicked\n var el = evt.target;\n\n if (!this.isNav || !el || getCS(this.$el).display !== 'block') {\n /* istanbul ignore next: can't test getComputedStyle in JSDOM */\n return;\n }\n\n if (matches(el, '.nav-link,.dropdown-item') || closest('.nav-link,.dropdown-item', el)) {\n if (!this.checkDisplayBlock()) {\n // Only close the collapse if it is not forced to be 'display: block !important;'\n this.show = false;\n }\n }\n },\n handleToggleEvt: function handleToggleEvt(target) {\n if (target !== this.id) {\n return;\n }\n\n this.toggle();\n },\n handleAccordionEvt: function handleAccordionEvt(openedId, accordion) {\n if (!this.accordion || accordion !== this.accordion) {\n return;\n }\n\n if (openedId === this.id) {\n // Open this collapse if not shown\n if (!this.show) {\n this.toggle();\n }\n } else {\n // Close this collapse if shown\n if (this.show) {\n this.toggle();\n }\n }\n },\n handleResize: function handleResize() {\n // Handler for orientation/resize to set collapsed state in nav/navbar\n this.show = getCS(this.$el).display === 'block';\n }\n },\n render: function render(h) {\n var content = h(this.tag, {\n class: this.classObject,\n directives: [{\n name: 'show',\n value: this.show\n }],\n attrs: {\n id: this.id || null\n },\n on: {\n click: this.clickHandler\n }\n }, [this.normalizeSlot('default')]);\n return h('transition', {\n props: {\n enterClass: '',\n enterActiveClass: 'collapsing',\n enterToClass: '',\n leaveClass: '',\n leaveActiveClass: 'collapsing',\n leaveToClass: ''\n },\n on: {\n enter: this.onEnter,\n afterEnter: this.onAfterEnter,\n leave: this.onLeave,\n afterLeave: this.onAfterLeave\n }\n }, [content]);\n }\n});","import { keys } from './object';\nimport { isArray, isDate, isObject } from './inspect'; // Assumes both a and b are arrays!\n// Handles when arrays are \"sparse\" (array.every(...) doesn't handle sparse)\n\nvar compareArrays = function compareArrays(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n\n var equal = true;\n\n for (var i = 0; equal && i < a.length; i++) {\n equal = looseEqual(a[i], b[i]);\n }\n\n return equal;\n};\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n * Returns boolean true or false\n */\n\n\nvar looseEqual = function looseEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n var aValidType = isDate(a);\n var bValidType = isDate(b);\n\n if (aValidType || bValidType) {\n return aValidType && bValidType ? a.getTime() === b.getTime() : false;\n }\n\n aValidType = isArray(a);\n bValidType = isArray(b);\n\n if (aValidType || bValidType) {\n return aValidType && bValidType ? compareArrays(a, b) : false;\n }\n\n aValidType = isObject(a);\n bValidType = isObject(b);\n\n if (aValidType || bValidType) {\n /* istanbul ignore if: this if will probably never be called */\n if (!aValidType || !bValidType) {\n return false;\n }\n\n var aKeysCount = keys(a).length;\n var bKeysCount = keys(b).length;\n\n if (aKeysCount !== bKeysCount) {\n return false;\n }\n\n for (var key in a) {\n var aHasKey = a.hasOwnProperty(key);\n var bHasKey = b.hasOwnProperty(key);\n\n if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) {\n return false;\n }\n }\n }\n\n return String(a) === String(b);\n};\n\nexport default looseEqual;","import { keys } from './object';\nimport { eventOn, eventOff } from './dom';\nvar allListenTypes = {\n hover: true,\n click: true,\n focus: true\n};\nvar BVBoundListeners = '__BV_boundEventListeners__';\n\nvar getTargets = function getTargets(binding) {\n var targets = keys(binding.modifiers || {}).filter(function (t) {\n return !allListenTypes[t];\n });\n\n if (binding.value) {\n targets.push(binding.value);\n }\n\n return targets;\n};\n\nvar bindTargets = function bindTargets(vnode, binding, listenTypes, fn) {\n var targets = getTargets(binding);\n\n var listener = function listener() {\n fn({\n targets: targets,\n vnode: vnode\n });\n };\n\n keys(allListenTypes).forEach(function (type) {\n if (listenTypes[type] || binding.modifiers[type]) {\n eventOn(vnode.elm, type, listener);\n var boundListeners = vnode.elm[BVBoundListeners] || {};\n boundListeners[type] = boundListeners[type] || [];\n boundListeners[type].push(listener);\n vnode.elm[BVBoundListeners] = boundListeners;\n }\n }); // Return the list of targets\n\n return targets;\n};\n\nvar unbindTargets = function unbindTargets(vnode, binding, listenTypes) {\n keys(allListenTypes).forEach(function (type) {\n if (listenTypes[type] || binding.modifiers[type]) {\n var boundListeners = vnode.elm[BVBoundListeners] && vnode.elm[BVBoundListeners][type];\n\n if (boundListeners) {\n boundListeners.forEach(function (listener) {\n return eventOff(vnode.elm, type, listener);\n });\n delete vnode.elm[BVBoundListeners][type];\n }\n }\n });\n};\n\nexport { bindTargets, unbindTargets, getTargets };\nexport default bindTargets;","import looseEqual from '../../utils/loose-equal';\nimport { addClass, removeAttr, removeClass, setAttr } from '../../utils/dom';\nimport { isBrowser } from '../../utils/env';\nimport { bindTargets, getTargets, unbindTargets } from '../../utils/target'; // Target listen types\n\nvar listenTypes = {\n click: true // Property key for handler storage\n\n};\nvar BV_TOGGLE = '__BV_toggle__';\nvar BV_TOGGLE_STATE = '__BV_toggle_STATE__';\nvar BV_TOGGLE_CONTROLS = '__BV_toggle_CONTROLS__';\nvar BV_TOGGLE_TARGETS = '__BV_toggle_TARGETS__'; // Emitted control event for collapse (emitted to collapse)\n\nvar EVENT_TOGGLE = 'bv::toggle::collapse'; // Listen to event for toggle state update (emitted by collapse)\n\nvar EVENT_STATE = 'bv::collapse::state'; // Private event emitted on $root to ensure the toggle state is always synced.\n// Gets emitted even if the state of b-collapse has not changed.\n// This event is NOT to be documented as people should not be using it.\n\nvar EVENT_STATE_SYNC = 'bv::collapse::sync::state'; // Private event we send to collapse to request state update sync event\n\nvar EVENT_STATE_REQUEST = 'bv::request::collapse::state'; // Reset and remove a property from the provided element\n\nvar resetProp = function resetProp(el, prop) {\n el[prop] = null;\n delete el[prop];\n}; // Handle targets update\n\n\nvar handleTargets = function handleTargets(_ref) {\n var targets = _ref.targets,\n vnode = _ref.vnode;\n targets.forEach(function (target) {\n vnode.context.$root.$emit(EVENT_TOGGLE, target);\n });\n}; // Handle directive updates\n\n/* istanbul ignore next: not easy to test */\n\n\nvar handleUpdate = function handleUpdate(el, binding, vnode) {\n if (!isBrowser) {\n return;\n }\n\n if (!looseEqual(getTargets(binding), el[BV_TOGGLE_TARGETS])) {\n // Targets have changed, so update accordingly\n unbindTargets(vnode, binding, listenTypes);\n var targets = bindTargets(vnode, binding, listenTypes, handleTargets); // Update targets array to element\n\n el[BV_TOGGLE_TARGETS] = targets; // Add aria attributes to element\n\n el[BV_TOGGLE_CONTROLS] = targets.join(' '); // ensure aria-controls is up to date\n\n setAttr(el, 'aria-controls', el[BV_TOGGLE_CONTROLS]); // Request a state update from targets so that we can ensure\n // expanded state is correct\n\n targets.forEach(function (target) {\n vnode.context.$root.$emit(EVENT_STATE_REQUEST, target);\n });\n } // Ensure the collapse class and aria-* attributes persist\n // after element is updated (either by parent re-rendering\n // or changes to this element or it's contents\n\n\n if (el[BV_TOGGLE_STATE] === true) {\n addClass(el, 'collapsed');\n setAttr(el, 'aria-expanded', 'true');\n } else if (el[BV_TOGGLE_STATE] === false) {\n removeClass(el, 'collapsed');\n setAttr(el, 'aria-expanded', 'false');\n }\n\n setAttr(el, 'aria-controls', el[BV_TOGGLE_CONTROLS]);\n};\n/*\n * Export our directive\n */\n\n\nexport default {\n bind: function bind(el, binding, vnode) {\n var targets = bindTargets(vnode, binding, listenTypes, handleTargets);\n\n if (isBrowser && vnode.context && targets.length > 0) {\n // Add targets array to element\n el[BV_TOGGLE_TARGETS] = targets; // Add aria attributes to element\n\n el[BV_TOGGLE_CONTROLS] = targets.join(' '); // State is initially collapsed until we receive a state event\n\n el[BV_TOGGLE_STATE] = false;\n setAttr(el, 'aria-controls', el[BV_TOGGLE_CONTROLS]);\n setAttr(el, 'aria-expanded', 'false'); // If element is not a button, we add `role=\"button\"` for accessibility\n\n if (el.tagName !== 'BUTTON') {\n setAttr(el, 'role', 'button');\n } // Toggle state handler, stored on element\n\n\n el[BV_TOGGLE] = function toggleDirectiveHandler(id, state) {\n var targets = el[BV_TOGGLE_TARGETS] || [];\n\n if (targets.indexOf(id) !== -1) {\n // Set aria-expanded state\n setAttr(el, 'aria-expanded', state ? 'true' : 'false'); // Set/Clear 'collapsed' class state\n\n el[BV_TOGGLE_STATE] = state;\n\n if (state) {\n removeClass(el, 'collapsed');\n } else {\n addClass(el, 'collapsed');\n }\n }\n }; // Listen for toggle state changes (public)\n\n\n vnode.context.$root.$on(EVENT_STATE, el[BV_TOGGLE]); // Listen for toggle state sync (private)\n\n vnode.context.$root.$on(EVENT_STATE_SYNC, el[BV_TOGGLE]);\n }\n },\n componentUpdated: handleUpdate,\n updated: handleUpdate,\n unbind: function unbind(el, binding, vnode)\n /* istanbul ignore next */\n {\n unbindTargets(vnode, binding, listenTypes); // Remove our $root listener\n\n if (el[BV_TOGGLE]) {\n vnode.context.$root.$off(EVENT_STATE, el[BV_TOGGLE]);\n vnode.context.$root.$off(EVENT_STATE_SYNC, el[BV_TOGGLE]);\n } // Reset custom props\n\n\n resetProp(el, BV_TOGGLE);\n resetProp(el, BV_TOGGLE_STATE);\n resetProp(el, BV_TOGGLE_CONTROLS);\n resetProp(el, BV_TOGGLE_TARGETS); // Reset classes/attrs\n\n removeClass(el, 'collapsed');\n removeAttr(el, 'aria-expanded');\n removeAttr(el, 'aria-controls');\n removeAttr(el, 'role');\n }\n};","import BCollapse from './collapse';\nimport VBToggle from '../../directives/toggle/toggle';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BCollapse: BCollapse\n};\nvar directives = {\n VBToggle: VBToggle\n};\nexport { BCollapse };\nexport default {\n install: installFactory({\n components: components,\n directives: directives\n })\n};","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.1\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n\nvar timeoutDuration = function () {\n var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}();\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\n/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nfunction getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.width;\n var height = sizes.height || element.clientHeight || result.height;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop);\n var marginLeft = parseFloat(styles.marginLeft);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n // flips variation if popper content overflows boundaries\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n\n var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.<br />\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","import { contains, eventOff, eventOn } from '../utils/dom'; // @vue/component\n\nexport default {\n data: function data() {\n return {\n listenForClickOut: false\n };\n },\n watch: {\n listenForClickOut: function listenForClickOut(newValue, oldValue) {\n if (newValue !== oldValue) {\n eventOff(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, false);\n\n if (newValue) {\n eventOn(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, false);\n }\n }\n }\n },\n beforeCreate: function beforeCreate() {\n // Declare non-reactive properties\n this.clickOutElement = null;\n this.clickOutEventName = null;\n },\n mounted: function mounted() {\n if (!this.clickOutElement) {\n this.clickOutElement = document;\n }\n\n if (!this.clickOutEventName) {\n this.clickOutEventName = 'ontouchstart' in document.documentElement ? 'touchstart' : 'click';\n }\n\n if (this.listenForClickOut) {\n eventOn(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, false);\n }\n },\n beforeDestroy: function beforeDestroy()\n /* istanbul ignore next */\n {\n eventOff(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, false);\n },\n methods: {\n isClickOut: function isClickOut(evt) {\n return !contains(this.$el, evt.target);\n },\n _clickOutHandler: function _clickOutHandler(evt) {\n if (this.clickOutHandler && this.isClickOut(evt)) {\n this.clickOutHandler(evt);\n }\n }\n }\n};","import { eventOff, eventOn } from '../utils/dom'; // @vue/component\n\nexport default {\n data: function data() {\n return {\n listenForFocusIn: false\n };\n },\n watch: {\n listenForFocusIn: function listenForFocusIn(newValue, oldValue) {\n if (newValue !== oldValue) {\n eventOff(this.focusInElement, 'focusin', this._focusInHandler, false);\n\n if (newValue) {\n eventOn(this.focusInElement, 'focusin', this._focusInHandler, false);\n }\n }\n }\n },\n beforeCreate: function beforeCreate() {\n // Declare non-reactive properties\n this.focusInElement = null;\n },\n mounted: function mounted() {\n if (!this.focusInElement) {\n this.focusInElement = document;\n }\n\n if (this.listenForFocusIn) {\n eventOn(this.focusInElement, 'focusin', this._focusInHandler, false);\n }\n },\n beforeDestroy: function beforeDestroy()\n /* istanbul ignore next */\n {\n eventOff(this.focusInElement, 'focusin', this._focusInHandler, false);\n },\n methods: {\n _focusInHandler: function _focusInHandler(evt) {\n if (this.focusInHandler) {\n this.focusInHandler(evt);\n }\n }\n }\n};","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport Popper from 'popper.js';\nimport BvEvent from '../utils/bv-event.class';\nimport KeyCodes from '../utils/key-codes';\nimport warn from '../utils/warn';\nimport { closest, contains, isVisible, requestAF, selectAll } from '../utils/dom';\nimport { isNull } from '../utils/inspect';\nimport clickOutMixin from './click-out';\nimport focusInMixin from './focus-in'; // Return an Array of visible items\n\nfunction filterVisibles(els) {\n return (els || []).filter(isVisible);\n} // Dropdown item CSS selectors\n\n\nvar Selector = {\n FORM_CHILD: '.dropdown form',\n ITEM_SELECTOR: ['.dropdown-item', '.b-dropdown-form'].map(function (selector) {\n return \"\".concat(selector, \":not(.disabled):not([disabled])\");\n }).join(', ') // Popper attachment positions\n\n};\nvar AttachmentMap = {\n // Dropup left align\n TOP: 'top-start',\n // Dropup right align\n TOPEND: 'top-end',\n // Dropdown left align\n BOTTOM: 'bottom-start',\n // Dropdown right align\n BOTTOMEND: 'bottom-end',\n // Dropright left align\n RIGHT: 'right-start',\n // Dropright right align\n RIGHTEND: 'right-end',\n // Dropleft left align\n LEFT: 'left-start',\n // Dropleft right align\n LEFTEND: 'left-end' // @vue/component\n\n};\nexport default {\n mixins: [clickOutMixin, focusInMixin],\n provide: function provide() {\n return {\n bvDropdown: this\n };\n },\n props: {\n disabled: {\n type: Boolean,\n default: false\n },\n text: {\n // Button label\n type: String,\n default: ''\n },\n html: {\n // Button label\n type: String\n },\n dropup: {\n // place on top if possible\n type: Boolean,\n default: false\n },\n dropright: {\n // place right if possible\n type: Boolean,\n default: false\n },\n dropleft: {\n // place left if possible\n type: Boolean,\n default: false\n },\n right: {\n // Right align menu (default is left align)\n type: Boolean,\n default: false\n },\n offset: {\n // Number of pixels to offset menu, or a CSS unit value (i.e. 1px, 1rem, etc)\n type: [Number, String],\n default: 0\n },\n noFlip: {\n // Disable auto-flipping of menu from bottom<=>top\n type: Boolean,\n default: false\n },\n popperOpts: {\n // type: Object,\n default: function _default() {}\n }\n },\n data: function data() {\n return {\n visible: false,\n inNavbar: null,\n visibleChangePrevented: false\n };\n },\n computed: {\n toggler: function toggler() {\n var toggle = this.$refs.toggle;\n return toggle ? toggle.$el || toggle : null;\n },\n directionClass: function directionClass() {\n if (this.dropup) {\n return 'dropup';\n } else if (this.dropright) {\n return 'dropright';\n } else if (this.dropleft) {\n return 'dropleft';\n }\n\n return '';\n }\n },\n watch: {\n visible: function visible(newValue, oldValue) {\n if (this.visibleChangePrevented) {\n this.visibleChangePrevented = false;\n return;\n }\n\n if (newValue !== oldValue) {\n var evtName = newValue ? 'show' : 'hide';\n var bvEvt = new BvEvent(evtName, {\n cancelable: true,\n vueTarget: this,\n target: this.$refs.menu,\n relatedTarget: null\n });\n this.emitEvent(bvEvt);\n\n if (bvEvt.defaultPrevented) {\n // Reset value and exit if canceled\n this.visibleChangePrevented = true;\n this.visible = oldValue; // Just in case a child element triggereded this.hide(true)\n\n this.$off('hidden', this.focusToggler);\n return;\n }\n\n if (evtName === 'show') {\n this.showMenu();\n } else {\n this.hideMenu();\n }\n }\n },\n disabled: function disabled(newValue, oldValue) {\n if (newValue !== oldValue && newValue && this.visible) {\n // Hide dropdown if disabled changes to true\n this.visible = false;\n }\n }\n },\n created: function created() {\n // Create non-reactive property\n this._popper = null;\n },\n deactivated: function deactivated()\n /* istanbul ignore next: not easy to test */\n {\n // In case we are inside a `<keep-alive>`\n this.visible = false;\n this.whileOpenListen(false);\n this.removePopper();\n },\n beforeDestroy: function beforeDestroy() {\n this.visible = false;\n this.whileOpenListen(false);\n this.removePopper();\n },\n methods: {\n // Event emitter\n emitEvent: function emitEvent(bvEvt) {\n var type = bvEvt.type;\n this.$emit(type, bvEvt);\n this.$root.$emit(\"bv::dropdown::\".concat(type), bvEvt);\n },\n showMenu: function showMenu() {\n var _this = this;\n\n if (this.disabled) {\n /* istanbul ignore next */\n return;\n } // Ensure other menus are closed\n\n\n this.$root.$emit('bv::dropdown::shown', this); // Are we in a navbar ?\n\n if (isNull(this.inNavbar) && this.isNav) {\n // We should use an injection for this\n\n /* istanbul ignore next */\n this.inNavbar = Boolean(closest('.navbar', this.$el));\n } // Disable totally Popper.js for Dropdown in Navbar\n\n\n if (!this.inNavbar) {\n if (typeof Popper === 'undefined') {\n /* istanbul ignore next */\n warn('b-dropdown: Popper.js not found. Falling back to CSS positioning.');\n } else {\n // for dropup with alignment we use the parent element as popper container\n var element = this.dropup && this.right || this.split ? this.$el : this.$refs.toggle; // Make sure we have a reference to an element, not a component!\n\n element = element.$el || element; // Instantiate popper.js\n\n this.createPopper(element);\n }\n }\n\n this.whileOpenListen(true); // Wrap in nextTick to ensure menu is fully rendered/shown\n\n this.$nextTick(function () {\n // Focus on the menu container on show\n _this.focusMenu(); // Emit the shown event\n\n\n _this.$emit('shown');\n });\n },\n hideMenu: function hideMenu() {\n this.whileOpenListen(false);\n this.$root.$emit('bv::dropdown::hidden', this);\n this.$emit('hidden');\n this.removePopper();\n },\n createPopper: function createPopper(element) {\n this.removePopper();\n this._popper = new Popper(element, this.$refs.menu, this.getPopperConfig());\n },\n removePopper: function removePopper() {\n if (this._popper) {\n // Ensure popper event listeners are removed cleanly\n this._popper.destroy();\n }\n\n this._popper = null;\n },\n getPopperConfig: function getPopperConfig() {\n var placement = AttachmentMap.BOTTOM;\n\n if (this.dropup) {\n placement = this.right ? AttachmentMap.TOPEND : AttachmentMap.TOP;\n } else if (this.dropright) {\n placement = AttachmentMap.RIGHT;\n } else if (this.dropleft) {\n placement = AttachmentMap.LEFT;\n } else if (this.right) {\n placement = AttachmentMap.BOTTOMEND;\n }\n\n var popperConfig = {\n placement: placement,\n modifiers: {\n offset: {\n offset: this.offset || 0\n },\n flip: {\n enabled: !this.noFlip\n }\n }\n };\n\n if (this.boundary) {\n popperConfig.modifiers.preventOverflow = {\n boundariesElement: this.boundary\n };\n }\n\n return _objectSpread({}, popperConfig, this.popperOpts || {});\n },\n whileOpenListen: function whileOpenListen(open) {\n // turn listeners on/off while open\n if (open) {\n // If another dropdown is opened\n this.$root.$on('bv::dropdown::shown', this.rootCloseListener); // Hide the dropdown when clicked outside\n\n this.listenForClickOut = true; // Hide the dropdown when it loses focus\n\n this.listenForFocusIn = true;\n } else {\n this.$root.$off('bv::dropdown::shown', this.rootCloseListener);\n this.listenForClickOut = false;\n this.listenForFocusIn = false;\n }\n },\n rootCloseListener: function rootCloseListener(vm) {\n if (vm !== this) {\n this.visible = false;\n }\n },\n show: function show() {\n var _this2 = this;\n\n // Public method to show dropdown\n if (this.disabled) {\n return;\n } // Wrap in a requestAnimationFrame to allow any previous\n // click handling to occur first\n\n\n requestAF(function () {\n _this2.visible = true;\n });\n },\n hide: function hide() {\n var refocus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n // Public method to hide dropdown\n if (this.disabled) {\n /* istanbul ignore next */\n return;\n }\n\n this.visible = false;\n\n if (refocus) {\n // Child element is closing the dropdown on click\n this.$once('hidden', this.focusToggler);\n }\n },\n toggle: function toggle(evt) {\n // Called only by a button that toggles the menu\n evt = evt || {};\n var type = evt.type;\n var key = evt.keyCode;\n\n if (type !== 'click' && !(type === 'keydown' && (key === KeyCodes.ENTER || key === KeyCodes.SPACE || key === KeyCodes.DOWN))) {\n // We only toggle on Click, Enter, Space, and Arrow Down\n\n /* istanbul ignore next */\n return;\n }\n\n if (this.disabled) {\n /* istanbul ignore next */\n this.visible = false;\n /* istanbul ignore next */\n\n return;\n }\n\n this.$emit('toggle', evt);\n\n if (evt.defaultPrevented) {\n // Exit if canceled\n return;\n }\n\n evt.preventDefault();\n evt.stopPropagation(); // Toggle visibility\n\n this.visible = !this.visible;\n },\n click: function click(evt) {\n // Called only in split button mode, for the split button\n if (this.disabled) {\n /* istanbul ignore next */\n this.visible = false;\n /* istanbul ignore next */\n\n return;\n }\n\n this.$emit('click', evt);\n },\n onKeydown: function onKeydown(evt) {\n // Called from dropdown menu context\n var key = evt.keyCode;\n\n if (key === KeyCodes.ESC) {\n // Close on ESC\n this.onEsc(evt);\n } else if (key === KeyCodes.DOWN) {\n // Down Arrow\n this.focusNext(evt, false);\n } else if (key === KeyCodes.UP) {\n // Up Arrow\n this.focusNext(evt, true);\n }\n },\n onEsc: function onEsc(evt) {\n if (this.visible) {\n this.visible = false;\n evt.preventDefault();\n evt.stopPropagation(); // Return focus to original trigger button\n\n this.$once('hidden', this.focusToggler);\n }\n },\n // Document click out listener\n clickOutHandler: function clickOutHandler() {\n if (this.visible) {\n this.visible = false;\n }\n },\n // Document focusin listener\n focusInHandler: function focusInHandler(evt) {\n // If focus leaves dropdown, hide it\n if (this.visible && !contains(this.$refs.menu, evt.target) && !contains(this.$refs.toggle, evt.target)) {\n this.visible = false;\n }\n },\n // Keyboard nav\n focusNext: function focusNext(evt, up) {\n var _this3 = this;\n\n if (!this.visible || evt && closest(Selector.FORM_CHILD, evt.target)) {\n // Ignore key up/down on form elements\n\n /* istanbul ignore next: should never happen */\n return;\n }\n\n evt.preventDefault();\n evt.stopPropagation();\n this.$nextTick(function () {\n var items = _this3.getItems();\n\n if (items.length < 1) {\n /* istanbul ignore next: should never happen */\n return;\n }\n\n var index = items.indexOf(evt.target);\n\n if (up && index > 0) {\n index--;\n } else if (!up && index < items.length - 1) {\n index++;\n }\n\n if (index < 0) {\n /* istanbul ignore next: should never happen */\n index = 0;\n }\n\n _this3.focusItem(index, items);\n });\n },\n focusItem: function focusItem(idx, items) {\n var el = items.find(function (el, i) {\n return i === idx;\n });\n\n if (el && el.focus) {\n el.focus();\n }\n },\n getItems: function getItems() {\n // Get all items\n return filterVisibles(selectAll(Selector.ITEM_SELECTOR, this.$refs.menu));\n },\n focusMenu: function focusMenu() {\n this.$refs.menu.focus && this.$refs.menu.focus();\n },\n focusToggler: function focusToggler() {\n var toggler = this.toggler;\n\n if (toggler && toggler.focus) {\n toggler.focus();\n }\n }\n }\n};","import Vue from '../../utils/vue';\nimport { stripTags } from '../../utils/html';\nimport { getComponentConfig } from '../../utils/config';\nimport { HTMLElement } from '../../utils/safe-types';\nimport idMixin from '../../mixins/id';\nimport dropdownMixin from '../../mixins/dropdown';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport BButton from '../button/button';\nvar NAME = 'BDropdown';\nexport var props = {\n toggleText: {\n // This really should be toggleLabel\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'toggleText');\n }\n },\n size: {\n type: String,\n default: null\n },\n variant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'variant');\n }\n },\n menuClass: {\n type: [String, Array],\n default: null\n },\n toggleTag: {\n type: String,\n default: 'button'\n },\n toggleClass: {\n type: [String, Array],\n default: null\n },\n noCaret: {\n type: Boolean,\n default: false\n },\n split: {\n type: Boolean,\n default: false\n },\n splitHref: {\n type: String // default: undefined\n\n },\n splitTo: {\n type: [String, Object] // default: undefined\n\n },\n splitVariant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'splitVariant');\n }\n },\n role: {\n type: String,\n default: 'menu'\n },\n boundary: {\n // String: `scrollParent`, `window` or `viewport`\n // HTMLElement: HTML Element reference\n type: [String, HTMLElement],\n default: 'scrollParent'\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: NAME,\n mixins: [idMixin, dropdownMixin, normalizeSlotMixin],\n props: props,\n computed: {\n dropdownClasses: function dropdownClasses() {\n return [this.directionClass, {\n show: this.visible,\n // Position `static` is needed to allow menu to \"breakout\" of the scrollParent boundaries\n // when boundary is anything other than `scrollParent`\n // See https://github.com/twbs/bootstrap/issues/24251#issuecomment-341413786\n 'position-static': this.boundary !== 'scrollParent' || !this.boundary\n }];\n },\n menuClasses: function menuClasses() {\n return [this.menuClass, {\n 'dropdown-menu-right': this.right,\n show: this.visible\n }];\n },\n toggleClasses: function toggleClasses() {\n return [this.toggleClass, {\n 'dropdown-toggle-split': this.split,\n 'dropdown-toggle-no-caret': this.noCaret && !this.split\n }];\n }\n },\n render: function render(h) {\n var split = h(false);\n var buttonContent = this.normalizeSlot('button-content') || this.normalizeSlot('text') || this.html || stripTags(this.text);\n\n if (this.split) {\n var btnProps = {\n disabled: this.disabled,\n variant: this.splitVariant || this.variant,\n size: this.size // We add these as needed due to router-link issues with defined property with undefined/null values\n\n };\n\n if (this.splitTo) {\n btnProps.to = this.splitTo;\n }\n\n if (this.splitHref) {\n btnProps.href = this.splitHref;\n }\n\n split = h(BButton, {\n ref: 'button',\n props: btnProps,\n attrs: {\n id: this.safeId('_BV_button_')\n },\n on: {\n click: this.click\n }\n }, [buttonContent]);\n }\n\n var toggle = h(BButton, {\n ref: 'toggle',\n staticClass: 'dropdown-toggle',\n class: this.toggleClasses,\n props: {\n variant: this.variant,\n size: this.size,\n disabled: this.disabled,\n tag: this.toggleTag\n },\n attrs: {\n id: this.safeId('_BV_toggle_'),\n 'aria-haspopup': 'true',\n 'aria-expanded': this.visible ? 'true' : 'false'\n },\n on: {\n click: this.toggle,\n // click\n keydown: this.toggle // enter, space, down\n\n }\n }, [this.split ? h('span', {\n class: ['sr-only']\n }, [this.toggleText]) : buttonContent]);\n var menu = h('ul', {\n ref: 'menu',\n staticClass: 'dropdown-menu',\n class: this.menuClasses,\n attrs: {\n role: this.role,\n tabindex: '-1',\n 'aria-labelledby': this.safeId(this.split ? '_BV_button_' : '_BV_toggle_')\n },\n on: {\n keydown: this.onKeydown // up, down, esc\n\n }\n }, this.normalizeSlot('default', {\n hide: this.hide\n }));\n return h('div', {\n staticClass: 'dropdown btn-group b-dropdown',\n class: this.dropdownClasses,\n attrs: {\n id: this.safeId()\n }\n }, [split, toggle, menu]);\n }\n});","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport Vue from '../../utils/vue';\nimport BLink, { propsFactory as linkPropsFactory } from '../link/link';\nimport { requestAF } from '../../utils/dom';\nimport nomalizeSlotMixin from '../../mixins/normalize-slot';\nexport var props = linkPropsFactory(); // @vue/component\n\nexport default Vue.extend({\n name: 'BDropdownItem',\n mixins: [nomalizeSlotMixin],\n inheritAttrs: false,\n inject: {\n bvDropdown: {\n default: null\n }\n },\n props: _objectSpread({}, props, {\n variant: {\n type: String,\n default: null\n }\n }),\n methods: {\n closeDropdown: function closeDropdown() {\n var _this = this;\n\n // Close on next animation frame to allow <b-link> time to process\n requestAF(function () {\n if (_this.bvDropdown) {\n _this.bvDropdown.hide(true);\n }\n });\n },\n onClick: function onClick(evt) {\n this.$emit('click', evt);\n this.closeDropdown();\n }\n },\n render: function render(h) {\n return h('li', [h(BLink, {\n props: this.$props,\n staticClass: 'dropdown-item',\n class: _defineProperty({}, \"text-\".concat(this.variant), this.variant && !(this.active || this.disabled)),\n attrs: _objectSpread({}, this.$attrs, {\n role: 'menuitem'\n }),\n on: {\n click: this.onClick\n },\n ref: 'item'\n }, this.normalizeSlot('default'))]);\n }\n});","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport Vue from '../../utils/vue';\nimport nomalizeSlotMixin from '../../mixins/normalize-slot';\nexport var props = {\n active: {\n type: Boolean,\n default: false\n },\n activeClass: {\n type: String,\n default: 'active'\n },\n disabled: {\n type: Boolean,\n default: false\n },\n variant: {\n type: String,\n default: null\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: 'BDropdownItemButton',\n mixins: [nomalizeSlotMixin],\n inheritAttrs: false,\n inject: {\n bvDropdown: {\n default: null\n }\n },\n props: props,\n methods: {\n closeDropdown: function closeDropdown() {\n if (this.bvDropdown) {\n this.bvDropdown.hide(true);\n }\n },\n onClick: function onClick(evt) {\n this.$emit('click', evt);\n this.closeDropdown();\n }\n },\n render: function render(h) {\n var _class;\n\n return h('li', [h('button', {\n staticClass: 'dropdown-item',\n class: (_class = {}, _defineProperty(_class, this.activeClass, this.active), _defineProperty(_class, \"text-\".concat(this.variant), this.variant && !(this.active || this.disabled)), _class),\n attrs: _objectSpread({}, this.$attrs, {\n role: 'menuitem',\n type: 'button',\n disabled: this.disabled\n }),\n on: {\n click: this.onClick\n },\n ref: 'button'\n }, this.normalizeSlot('default'))]);\n }\n});","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; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nexport var props = {\n id: {\n type: String,\n default: null\n },\n tag: {\n type: String,\n default: 'header'\n },\n variant: {\n type: String,\n default: null\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: 'BDropdownHeader',\n functional: true,\n inheritAttrs: false,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h('li', [h(props.tag, mergeData(data, {\n staticClass: 'dropdown-header',\n class: _defineProperty({}, \"text-\".concat(props.variant), props.variant),\n attrs: {\n id: props.id || null,\n role: 'heading'\n },\n ref: 'header'\n }), children)]);\n }\n});","import Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nexport var props = {\n tag: {\n type: String,\n default: 'hr'\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: 'BDropdownDivider',\n functional: true,\n inheritAttrs: false,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data;\n return h('li', [h(props.tag, mergeData(data, {\n staticClass: 'dropdown-divider',\n attrs: {\n role: 'separator',\n 'aria-orientation': 'horizontal'\n },\n ref: 'divider'\n }))]);\n }\n});","import Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nexport var props = {\n id: {\n type: String,\n default: null\n },\n inline: {\n type: Boolean,\n default: false\n },\n novalidate: {\n type: Boolean,\n default: false\n },\n validated: {\n type: Boolean,\n default: false\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: 'BForm',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h('form', mergeData(data, {\n class: {\n 'form-inline': props.inline,\n 'was-validated': props.validated\n },\n attrs: {\n id: props.id,\n novalidate: props.novalidate\n }\n }), children);\n }\n});","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport Vue from '../../utils/vue';\nimport BForm, { props as formProps } from '../form/form';\nimport { mergeData } from 'vue-functional-data-merge';\nexport default Vue.extend({\n name: 'BDropdownForm',\n functional: true,\n inheritAttrs: false,\n props: _objectSpread({}, formProps, {\n disabled: {\n type: Boolean,\n default: false\n }\n }),\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h('li', [h(BForm, mergeData(data, {\n ref: 'form',\n staticClass: 'b-dropdown-form',\n class: {\n disabled: props.disabled\n },\n props: props,\n attrs: {\n disabled: props.disabled,\n // Tab index of -1 for keyboard navigation\n tabindex: props.disabled ? null : '-1'\n }\n }), children)]);\n }\n});","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; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nexport default Vue.extend({\n name: 'BDropdownText',\n functional: true,\n inheritAttrs: false,\n props: {\n tag: {\n type: String,\n default: 'p'\n },\n variant: {\n type: String,\n default: null\n }\n },\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h('li', [h(props.tag, mergeData(data, {\n staticClass: 'b-dropdown-text',\n class: _defineProperty({}, \"text-\".concat(props.variant), props.variant),\n props: props,\n ref: 'text'\n }), children)]);\n }\n});","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; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot';\nexport var props = {\n id: {\n type: String,\n default: null\n },\n header: {\n type: String,\n default: null\n },\n headerTag: {\n type: String,\n default: 'header'\n },\n headerVariant: {\n type: String,\n default: null\n },\n headerClasses: {\n type: [String, Array, Object],\n default: null\n },\n ariaDescribedby: {\n type: String,\n default: null\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: 'BDropdownGroup',\n functional: true,\n inheritAttrs: false,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n var header;\n var headerId = null;\n\n if (hasNormalizedSlot('header', $scopedSlots, $slots) || props.header) {\n headerId = props.id ? \"_bv_\".concat(props.id, \"_group_dd_header\") : null;\n header = h(props.headerTag, {\n staticClass: 'dropdown-header',\n class: [props.headerClasses, _defineProperty({}, \"text-\".concat(props.variant), props.variant)],\n attrs: {\n id: headerId,\n role: 'heading'\n }\n }, normalizeSlot('header', {}, $scopedSlots, $slots) || props.header);\n }\n\n var adb = [headerId, props.ariaDescribedBy].filter(Boolean).join(' ').trim();\n return h('li', [header || h(false), h('ul', mergeData(data, {\n staticClass: 'list-unstyled',\n attrs: {\n id: props.id || null,\n 'aria-describedby': adb || null\n }\n }), normalizeSlot('default', {}, $scopedSlots, $slots))]);\n }\n});","import BDropdown from './dropdown';\nimport BDropdownItem from './dropdown-item';\nimport BDropdownItemButton from './dropdown-item-button';\nimport BDropdownHeader from './dropdown-header';\nimport BDropdownDivider from './dropdown-divider';\nimport BDropdownForm from './dropdown-form';\nimport BDropdownText from './dropdown-text';\nimport BDropdownGroup from './dropdown-group';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BDropdown: BDropdown,\n BDd: BDropdown,\n BDropdownItem: BDropdownItem,\n BDdItem: BDropdownItem,\n BDropdownItemButton: BDropdownItemButton,\n BDropdownItemBtn: BDropdownItemButton,\n BDdItemButton: BDropdownItemButton,\n BDdItemBtn: BDropdownItemButton,\n BDropdownHeader: BDropdownHeader,\n BDdHeader: BDropdownHeader,\n BDropdownDivider: BDropdownDivider,\n BDdDivider: BDropdownDivider,\n BDropdownForm: BDropdownForm,\n BDdForm: BDropdownForm,\n BDropdownText: BDropdownText,\n BDdText: BDropdownText,\n BDropdownGroup: BDropdownGroup,\n BDdGroup: BDropdownGroup\n};\nexport { BDropdown, BDropdownItem, BDropdownItemButton, BDropdownHeader, BDropdownDivider, BDropdownForm, BDropdownText, BDropdownGroup };\nexport default {\n install: installFactory({\n components: components\n })\n};","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; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { arrayIncludes } from '../../utils/array';\nexport var props = {\n type: {\n type: String,\n default: 'iframe',\n validator: function validator(str) {\n return arrayIncludes(['iframe', 'embed', 'video', 'object', 'img', 'b-img', 'b-img-lazy'], str);\n }\n },\n tag: {\n type: String,\n default: 'div'\n },\n aspect: {\n type: String,\n default: '16by9'\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: 'BEmbed',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, {\n ref: data.ref,\n staticClass: 'embed-responsive',\n class: _defineProperty({}, \"embed-responsive-\".concat(props.aspect), Boolean(props.aspect))\n }, [h(props.type, mergeData(data, {\n ref: '',\n staticClass: 'embed-responsive-item'\n }), children)]);\n }\n});","import BEmbed from './embed';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BEmbed: BEmbed\n};\nexport { BEmbed };\nexport default {\n install: installFactory({\n components: components\n })\n};","import { stripTags } from '../utils/html';\nimport { isArray, isPlainObject, isUndefined } from '../utils/inspect';\nimport { keys } from '../utils/object'; // @vue/component\n\nexport default {\n props: {\n options: {\n type: [Array, Object],\n default: function _default() {\n return [];\n }\n },\n valueField: {\n type: String,\n default: 'value'\n },\n textField: {\n type: String,\n default: 'text'\n },\n htmlField: {\n type: String,\n default: 'html'\n },\n disabledField: {\n type: String,\n default: 'disabled'\n }\n },\n computed: {\n formOptions: function formOptions() {\n var options = this.options;\n var valueField = this.valueField;\n var textField = this.textField;\n var htmlField = this.htmlField;\n var disabledField = this.disabledField;\n\n if (isArray(options)) {\n // Normalize flat-ish arrays to Array of Objects\n return options.map(function (option) {\n if (isPlainObject(option)) {\n var value = option[valueField];\n var text = String(option[textField]);\n return {\n value: isUndefined(value) ? text : value,\n text: stripTags(text),\n html: option[htmlField],\n disabled: Boolean(option[disabledField])\n };\n }\n\n return {\n value: option,\n text: stripTags(String(option)),\n disabled: false\n };\n });\n } else {\n // options is Object\n // Normalize Objects to Array of Objects\n return keys(options).map(function (key) {\n var option = options[key] || {};\n\n if (isPlainObject(option)) {\n var value = option[valueField];\n var text = option[textField];\n return {\n value: isUndefined(value) ? key : value,\n text: isUndefined(text) ? stripTags(String(key)) : stripTags(String(text)),\n html: option[htmlField],\n disabled: Boolean(option[disabledField])\n };\n }\n\n return {\n value: key,\n text: stripTags(String(option)),\n disabled: false\n };\n });\n }\n }\n }\n};","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport Vue from '../../utils/vue';\nimport formOptionsMixin from '../../mixins/form-options';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport { htmlOrText } from '../../utils/html'; // @vue/component\n\nexport default Vue.extend({\n name: 'BFormDatalist',\n mixins: [formOptionsMixin, normalizeSlotMixin],\n props: {\n id: {\n type: String,\n default: null,\n required: true\n }\n },\n render: function render(h) {\n var options = this.formOptions.map(function (option, index) {\n return h('option', {\n key: \"option_\".concat(index, \"_opt\"),\n attrs: {\n disabled: option.disabled\n },\n domProps: _objectSpread({}, htmlOrText(option.html, option.text), {\n value: option.value\n })\n });\n });\n return h('datalist', {\n attrs: {\n id: this.id\n }\n }, [options, this.normalizeSlot('default')]);\n }\n});","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; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { getComponentConfig } from '../../utils/config';\nvar NAME = 'BFormText';\nexport var props = {\n id: {\n type: String,\n default: null\n },\n tag: {\n type: String,\n default: 'small'\n },\n textVariant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'textVariant');\n }\n },\n inline: {\n type: Boolean,\n default: false\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: NAME,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, mergeData(data, {\n class: _defineProperty({\n 'form-text': !props.inline\n }, \"text-\".concat(props.textVariant), Boolean(props.textVariant)),\n attrs: {\n id: props.id\n }\n }), children);\n }\n});","import Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nexport var props = {\n id: {\n type: String,\n default: null\n },\n tag: {\n type: String,\n default: 'div'\n },\n tooltip: {\n type: Boolean,\n default: false\n },\n forceShow: {\n type: Boolean,\n default: false\n },\n state: {\n type: [Boolean, String],\n default: null\n },\n ariaLive: {\n type: String,\n default: null\n },\n role: {\n type: String,\n default: null\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: 'BFormInvalidFeedback',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var show = props.forceShow === true || props.state === false || props.state === 'invalid';\n return h(props.tag, mergeData(data, {\n class: {\n 'invalid-feedback': !props.tooltip,\n 'invalid-tooltip': props.tooltip,\n 'd-block': show\n },\n attrs: {\n id: props.id,\n role: props.role,\n 'aria-live': props.ariaLive,\n 'aria-atomic': props.ariaLive ? 'true' : null\n }\n }), children);\n }\n});","import Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nexport var props = {\n id: {\n type: String,\n default: null\n },\n tag: {\n type: String,\n default: 'div'\n },\n tooltip: {\n type: Boolean,\n default: false\n },\n forceShow: {\n type: Boolean,\n default: false\n },\n state: {\n type: [Boolean, String],\n default: null\n },\n ariaLive: {\n type: String,\n default: null\n },\n role: {\n type: String,\n default: null\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: 'BFormValidFeedback',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var show = props.forceShow === true || props.state === true || props.state === 'valid';\n return h(props.tag, mergeData(data, {\n class: {\n 'valid-feedback': !props.tooltip,\n 'valid-tooltip': props.tooltip,\n 'd-block': show\n },\n attrs: {\n id: props.id,\n role: props.role,\n 'aria-live': props.ariaLive,\n 'aria-atomic': props.ariaLive ? 'true' : null\n }\n }), children);\n }\n});","import BForm from './form';\nimport BFormDatalist from './form-datalist';\nimport BFormText from './form-text';\nimport BFormInvalidFeedback from './form-invalid-feedback';\nimport BFormValidFeedback from './form-valid-feedback';\nimport BFormRow from '../layout/form-row';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BForm: BForm,\n BFormDatalist: BFormDatalist,\n BDatalist: BFormDatalist,\n BFormText: BFormText,\n BFormInvalidFeedback: BFormInvalidFeedback,\n BFormFeedback: BFormInvalidFeedback,\n BFormValidFeedback: BFormValidFeedback,\n // Added here for convenience\n BFormRow: BFormRow // BFormRow is not exported here as a named export, as it is exported by Layout\n\n};\nexport { BForm, BFormDatalist, BFormText, BFormInvalidFeedback, BFormValidFeedback };\nexport default {\n install: installFactory({\n components: components\n })\n};","/* Form control contextual state class computation\n *\n * Returned class is either 'is-valid' or 'is-invalid' based on the 'state' prop\n * state can be one of five values:\n * - true or 'valid' for is-valid\n * - false or 'invalid' for is-invalid\n * - null (or empty string) for no contextual state\n */\n// @vue/component\nexport default {\n props: {\n state: {\n // true/'valid', false/'invalid', '',null\n // The order must be String first, then Boolean!\n type: [String, Boolean],\n default: null\n }\n },\n computed: {\n computedState: function computedState() {\n var state = this.state;\n\n if (state === '') {\n return null;\n } else if (state === true || state === 'valid') {\n return true;\n } else if (state === false || state === 'invalid') {\n return false;\n }\n\n return null;\n },\n stateClass: function stateClass() {\n var state = this.computedState;\n\n if (state === true) {\n return 'is-valid';\n } else if (state === false) {\n return 'is-invalid';\n }\n\n return null;\n }\n }\n};","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\n// Utils\nimport memoize from '../../utils/memoize';\nimport upperFirst from '../../utils/upper-first';\nimport warn from '../../utils/warn';\nimport { arrayIncludes } from '../../utils/array';\nimport { getBreakpointsUpCached } from '../../utils/config';\nimport { select, selectAll, isVisible, setAttr, removeAttr, getAttr } from '../../utils/dom';\nimport { isBrowser } from '../../utils/env';\nimport { isBoolean } from '../../utils/inspect';\nimport { keys, create } from '../../utils/object'; // Mixins\n\nimport formStateMixin from '../../mixins/form-state';\nimport idMixin from '../../mixins/id';\nimport normalizeSlotMixin from '../../mixins/normalize-slot'; // Sub components\n\nimport BCol from '../layout/col';\nimport BFormInvalidFeedback from '../form/form-invalid-feedback';\nimport BFormRow from '../layout/form-row';\nimport BFormText from '../form/form-text';\nimport BFormValidFeedback from '../form/form-valid-feedback'; // Component name\n\nvar NAME = 'BFormGroup'; // Selector for finding first input in the form-group\n\nvar SELECTOR = 'input:not([disabled]),textarea:not([disabled]),select:not([disabled])';\nvar DEPRECATED_MSG = 'Props \"horizontal\" and \"breakpoint\" are deprecated. Use \"label-cols(-{breakpoint})\" props instead.'; // Render helper functions (here rather than polluting the instance with more methods)\n\nvar renderInvalidFeedback = function renderInvalidFeedback(h, ctx) {\n var content = ctx.normalizeSlot('invalid-feedback') || ctx.invalidFeedback;\n var invalidFeedback = h(false);\n\n if (content) {\n invalidFeedback = h(BFormInvalidFeedback, {\n props: {\n id: ctx.invalidFeedbackId,\n // If state is explicitly false, always show the feedback\n state: ctx.computedState,\n tooltip: ctx.tooltip,\n ariaLive: ctx.feedbackAriaLive,\n role: ctx.feedbackAriaLive ? 'alert' : null\n },\n attrs: {\n tabindex: content ? '-1' : null\n }\n }, [content]);\n }\n\n return invalidFeedback;\n};\n\nvar renderValidFeedback = function renderValidFeedback(h, ctx) {\n var content = ctx.normalizeSlot('valid-feedback') || ctx.validFeedback;\n var validFeedback = h(false);\n\n if (content) {\n validFeedback = h(BFormValidFeedback, {\n props: {\n id: ctx.validFeedbackId,\n // If state is explicitly true, always show the feedback\n state: ctx.computedState,\n tooltip: ctx.tooltip,\n ariaLive: ctx.feedbackAriaLive,\n role: ctx.feedbackAriaLive ? 'alert' : null\n },\n attrs: {\n tabindex: content ? '-1' : null\n }\n }, [content]);\n }\n\n return validFeedback;\n};\n\nvar renderHelpText = function renderHelpText(h, ctx) {\n // Form help text (description)\n var content = ctx.normalizeSlot('description') || ctx.description;\n var description = h(false);\n\n if (content) {\n description = h(BFormText, {\n attrs: {\n id: ctx.descriptionId,\n tabindex: content ? '-1' : null\n }\n }, [content]);\n }\n\n return description;\n};\n\nvar renderLabel = function renderLabel(h, ctx) {\n // Render label/legend inside b-col if necessary\n var content = ctx.normalizeSlot('label') || ctx.label;\n var labelFor = ctx.labelFor;\n var isLegend = !labelFor;\n var isHorizontal = ctx.isHorizontal;\n var labelTag = isLegend ? 'legend' : 'label';\n\n if (!content && !isHorizontal) {\n return h(false);\n } else if (ctx.labelSrOnly) {\n var label = h(false);\n\n if (content) {\n label = h(labelTag, {\n class: 'sr-only',\n attrs: {\n id: ctx.labelId,\n for: labelFor || null\n }\n }, [content]);\n }\n\n return h(isHorizontal ? BCol : 'div', {\n props: isHorizontal ? ctx.labelColProps : {}\n }, [label]);\n } else {\n return h(isHorizontal ? BCol : labelTag, {\n on: isLegend ? {\n click: ctx.legendClick\n } : {},\n props: isHorizontal ? _objectSpread({\n tag: labelTag\n }, ctx.labelColProps) : {},\n attrs: {\n id: ctx.labelId,\n for: labelFor || null,\n // We add a tab index to legend so that screen readers\n // will properly read the aria-labelledby in IE.\n tabindex: isLegend ? '-1' : null\n },\n class: [// When horizontal or if a legend is rendered, add col-form-label\n // for correct sizing as Bootstrap has inconsistent font styling\n // for legend in non-horizontal form-groups.\n // See: https://github.com/twbs/bootstrap/issues/27805\n isHorizontal || isLegend ? 'col-form-label' : '', // Emulate label padding top of 0 on legend when not horizontal\n !isHorizontal && isLegend ? 'pt-0' : '', // If not horizontal and not a legend, we add d-block to label\n // so that label-align works\n !isHorizontal && !isLegend ? 'd-block' : '', ctx.labelSize ? \"col-form-label-\".concat(ctx.labelSize) : '', ctx.labelAlignClasses, ctx.labelClass]\n }, [content]);\n }\n}; // -- BFormGroup Prop factory -- used for lazy generation of props\n// Memoize this function to return cached values to\n// save time in computed functions\n\n\nvar makePropName = memoize(function () {\n var breakpoint = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var prefix = arguments.length > 1 ? arguments[1] : undefined;\n return \"\".concat(prefix).concat(upperFirst(breakpoint));\n}); // BFormgroup prop generator for lazy generation of props\n\nvar generateProps = function generateProps() {\n var BREAKPOINTS = getBreakpointsUpCached(); // Generate the labelCol breakpoint props\n\n var bpLabelColProps = BREAKPOINTS.reduce(function (props, breakpoint) {\n // i.e. label-cols, label-cols-sm, label-cols-md, ...\n props[makePropName(breakpoint, 'labelCols')] = {\n type: [Number, String, Boolean],\n default: breakpoint ? false : null\n };\n return props;\n }, create(null)); // Generate the labelAlign breakpoint props\n\n var bpLabelAlignProps = BREAKPOINTS.reduce(function (props, breakpoint) {\n // label-align, label-align-sm, label-align-md, ...\n props[makePropName(breakpoint, 'labelAlign')] = {\n type: String,\n // left, right, center\n default: null\n };\n return props;\n }, create(null));\n return _objectSpread({\n label: {\n type: String,\n default: null\n },\n labelFor: {\n type: String,\n default: null\n },\n labelSize: {\n type: String,\n default: null\n },\n labelSrOnly: {\n type: Boolean,\n default: false\n }\n }, bpLabelColProps, bpLabelAlignProps, {\n labelClass: {\n type: [String, Array, Object],\n default: null\n },\n description: {\n type: String,\n default: null\n },\n invalidFeedback: {\n type: String,\n default: null\n },\n validFeedback: {\n type: String,\n default: null\n },\n tooltip: {\n // Enable tooltip style feedback\n type: Boolean,\n default: false\n },\n feedbackAriaLive: {\n type: String,\n default: 'assertive'\n },\n validated: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n },\n horizontal: {\n // Deprecated\n type: Boolean,\n default: false,\n deprecated: DEPRECATED_MSG\n },\n breakpoint: {\n // Deprecated (ignored if horizontal is not true)\n type: String,\n default: null,\n // legacy value 'sm',\n deprecated: DEPRECATED_MSG\n }\n });\n}; // We do not use Vue.extend here as that would evaluate the props\n// immediately, which we do not want to happen\n// @vue/component\n\n\nexport default {\n name: NAME,\n mixins: [idMixin, formStateMixin, normalizeSlotMixin],\n\n get props() {\n // Allow props to be lazy evaled on first access and\n // then they become a non-getter afterwards.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get#Smart_self-overwriting_lazy_getters\n delete this.props; // eslint-disable-next-line no-return-assign\n\n return this.props = generateProps();\n },\n\n computed: {\n labelColProps: function labelColProps() {\n var _this = this;\n\n var props = {};\n /* istanbul ignore next: deprecated */\n\n if (this.horizontal) {\n // Deprecated setting of horizontal/breakpoint props\n\n /* istanbul ignore next */\n warn(\"b-form-group: \".concat(DEPRECATED_MSG)); // Legacy default is breakpoint sm and cols 3\n\n var bp = this.breakpoint || getBreakpointsUpCached()[1]; // 'sm'\n\n var cols = parseInt(this.labelCols, 10) || 3;\n props[bp] = cols > 0 ? cols : 3; // We then return the single breakpoint prop for legacy compatibility\n\n return props;\n }\n\n getBreakpointsUpCached().forEach(function (breakpoint) {\n // Grab the value if the label column breakpoint prop\n var propVal = _this[makePropName(breakpoint, 'labelCols')]; // Handle case where the prop's value is an empty string,\n // which represents true\n\n\n propVal = propVal === '' ? true : propVal || false;\n\n if (!isBoolean(propVal)) {\n // Convert to column size to number\n propVal = parseInt(propVal, 10) || 0; // Ensure column size is greater than 0\n\n propVal = propVal > 0 ? propVal : false;\n }\n\n if (propVal) {\n // Add the prop to the list of props to give to b-col\n // If breakpoint is '' (labelCols=true), then we use the\n // col prop to make equal width at xs\n var bColPropName = breakpoint || (isBoolean(propVal) ? 'col' : 'cols'); // Add it to the props\n\n props[bColPropName] = propVal;\n }\n });\n return props;\n },\n labelAlignClasses: function labelAlignClasses() {\n var _this2 = this;\n\n var classes = [];\n getBreakpointsUpCached().forEach(function (breakpoint) {\n // Assemble the label column breakpoint align classes\n var propVal = _this2[makePropName(breakpoint, 'labelAlign')] || null;\n\n if (propVal) {\n var className = breakpoint ? \"text-\".concat(breakpoint, \"-\").concat(propVal) : \"text-\".concat(propVal);\n classes.push(className);\n }\n });\n return classes;\n },\n isHorizontal: function isHorizontal() {\n // Determine if the resultant form-group will be rendered\n // horizontal (meaning it has label-col breakpoints)\n return keys(this.labelColProps).length > 0;\n },\n labelId: function labelId() {\n return this.$slots['label'] || this.label ? this.safeId('_BV_label_') : null;\n },\n descriptionId: function descriptionId() {\n return this.$slots['description'] || this.description ? this.safeId('_BV_description_') : null;\n },\n hasInvalidFeedback: function hasInvalidFeedback() {\n // Used for computing aria-describedby\n var $slots = this.$slots;\n return this.computedState === false && ($slots['invalid-feedback'] || this.invalidFeedback);\n },\n invalidFeedbackId: function invalidFeedbackId() {\n return this.hasInvalidFeedback ? this.safeId('_BV_feedback_invalid_') : null;\n },\n hasValidFeedback: function hasValidFeedback() {\n // Used for computing aria-describedby\n return this.computedState === true && (this.$slots['valid-feedback'] || this.validFeedback);\n },\n validFeedbackId: function validFeedbackId() {\n return this.hasValidFeedback ? this.safeId('_BV_feedback_valid_') : null;\n },\n describedByIds: function describedByIds() {\n // Screen readers will read out any content linked to by aria-describedby\n // even if the content is hidden with `display: none;`, hence we only include\n // feedback IDs if the form-group's state is explicitly valid or invalid.\n return [this.descriptionId, this.invalidFeedbackId, this.validFeedbackId].filter(Boolean).join(' ') || null;\n }\n },\n watch: {\n describedByIds: function describedByIds(add, remove) {\n if (add !== remove) {\n this.setInputDescribedBy(add, remove);\n }\n }\n },\n mounted: function mounted() {\n var _this3 = this;\n\n this.$nextTick(function () {\n // Set the aria-describedby IDs on the input specified by label-for\n // We do this in a nextTick to ensure the children have finished rendering\n _this3.setInputDescribedBy(_this3.describedByIds);\n });\n },\n methods: {\n legendClick: function legendClick(evt) {\n if (this.labelFor) {\n // Don't do anything if labelFor is set\n\n /* istanbul ignore next: clicking a label will focus the input, so no need to test */\n return;\n }\n\n var tagName = evt.target ? evt.target.tagName : '';\n\n if (/^(input|select|textarea|label|button|a)$/i.test(tagName)) {\n // If clicked an interactive element inside legend,\n // we just let the default happen\n\n /* istanbul ignore next */\n return;\n }\n\n var inputs = selectAll(SELECTOR, this.$refs.content).filter(isVisible);\n\n if (inputs && inputs.length === 1 && inputs[0].focus) {\n // if only a single input, focus it, emulating label behaviour\n inputs[0].focus();\n }\n },\n setInputDescribedBy: function setInputDescribedBy(add, remove) {\n // Sets the `aria-describedby` attribute on the input if label-for is set.\n // Optionally accepts a string of IDs to remove as the second parameter.\n // Preserves any aria-describedby value(s) user may have on input.\n if (this.labelFor && isBrowser) {\n var input = select(\"#\".concat(this.labelFor), this.$refs.content);\n\n if (input) {\n var adb = 'aria-describedby';\n var ids = (getAttr(input, adb) || '').split(/\\s+/);\n add = (add || '').split(/\\s+/);\n remove = (remove || '').split(/\\s+/); // Update ID list, preserving any original IDs\n // and ensuring the ID's are unique\n\n ids = ids.filter(function (id) {\n return !arrayIncludes(remove, id);\n }).concat(add).filter(Boolean);\n ids = keys(ids.reduce(function (memo, id) {\n return _objectSpread({}, memo, _defineProperty({}, id, true));\n }, {})).join(' ').trim();\n\n if (ids) {\n setAttr(input, adb, ids);\n } else {\n // No IDs, so remove the attribute\n removeAttr(input, adb);\n }\n }\n }\n }\n },\n render: function render(h) {\n var isFieldset = !this.labelFor;\n var isHorizontal = this.isHorizontal; // Generate the label\n\n var label = renderLabel(h, this); // Generate the content\n\n var content = h(isHorizontal ? BCol : 'div', {\n ref: 'content',\n attrs: {\n tabindex: isFieldset ? '-1' : null,\n role: isFieldset ? 'group' : null\n }\n }, [this.normalizeSlot('default') || h(false), renderInvalidFeedback(h, this), renderValidFeedback(h, this), renderHelpText(h, this)]); // Create the form-group\n\n var data = {\n staticClass: 'form-group',\n class: [this.validated ? 'was-validated' : null, this.stateClass],\n attrs: {\n id: this.safeId(),\n disabled: isFieldset ? this.disabled : null,\n role: isFieldset ? null : 'group',\n 'aria-invalid': this.computedState === false ? 'true' : null,\n // Only apply aria-labelledby if we are a horizontal fieldset\n // as the legend is no longer a direct child of fieldset\n 'aria-labelledby': isFieldset && isHorizontal ? this.labelId : null,\n // Only apply aria-describedby IDs if we are a fieldset\n // as the input will have the IDs when not a fieldset\n 'aria-describedby': isFieldset ? this.describedByIds : null\n } // Return it wrapped in a form-group\n // Note: Fieldsets do not support adding `row` or `form-row` directly\n // to them due to browser specific render issues, so we move the `form-row`\n // to an inner wrapper div when horizontal and using a fieldset\n\n };\n return h(isFieldset ? 'fieldset' : isHorizontal ? BFormRow : 'div', data, isHorizontal && isFieldset ? [h(BFormRow, {}, [label, content])] : [label, content]);\n }\n};","import BFormGroup from './form-group';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BFormGroup: BFormGroup,\n BFormFieldset: BFormGroup\n};\nexport { BFormGroup };\nexport default {\n install: installFactory({\n components: components\n })\n};","import looseEqual from './loose-equal';\n\nvar looseIndexOf = function looseIndexOf(arr, val) {\n // Assumes that the first argument is an array\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) {\n return i;\n }\n }\n\n return -1;\n};\n\nexport default looseIndexOf;","import { matches, select, isVisible } from '../utils/dom';\nvar SELECTOR = 'input, textarea, select'; // @vue/component\n\nexport default {\n props: {\n name: {\n type: String // default: undefined\n\n },\n id: {\n type: String // default: undefined\n\n },\n disabled: {\n type: Boolean\n },\n required: {\n type: Boolean,\n default: false\n },\n form: {\n type: String,\n default: null\n },\n autofocus: {\n type: Boolean,\n default: false\n }\n },\n mounted: function mounted() {\n this.handleAutofocus();\n },\n activated: function activated()\n /* istanbul ignore next */\n {\n this.handleAutofocus();\n },\n methods: {\n handleAutofocus: function handleAutofocus() {\n var _this = this;\n\n this.$nextTick(function () {\n var el = _this.$el;\n\n if (_this.autofocus && isVisible(el)) {\n if (!matches(el, SELECTOR)) {\n el = select(SELECTOR, el);\n }\n\n el && el.focus && el.focus();\n }\n });\n }\n }\n};","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; }\n\nimport normalizeSlotMixin from './normalize-slot'; // @vue/component\n\nexport default {\n mixins: [normalizeSlotMixin],\n model: {\n prop: 'checked',\n event: 'input'\n },\n props: {\n value: {// Value when checked\n // type: Object,\n // default: undefined\n },\n checked: {// This is the v-model\n // type: Object,\n // default: undefined\n },\n inline: {\n type: Boolean,\n default: false\n },\n plain: {\n type: Boolean,\n default: false\n },\n button: {\n // Only applicable in standalone mode (non group)\n type: Boolean,\n default: false\n },\n buttonVariant: {\n // Only applicable when rendered with button style\n type: String,\n default: null\n },\n ariaLabel: {\n // Placed on the input if present.\n type: String,\n default: null\n },\n ariaLabelledby: {\n // Placed on the input if present.\n type: String,\n default: null\n }\n },\n data: function data() {\n return {\n localChecked: this.isGroup ? this.bvGroup.checked : this.checked,\n hasFocus: false\n };\n },\n computed: {\n computedLocalChecked: {\n get: function get() {\n return this.isGroup ? this.bvGroup.localChecked : this.localChecked;\n },\n set: function set(val) {\n if (this.isGroup) {\n this.bvGroup.localChecked = val;\n } else {\n this.localChecked = val;\n }\n }\n },\n isGroup: function isGroup() {\n // Is this check/radio a child of check-group or radio-group?\n return Boolean(this.bvGroup);\n },\n isBtnMode: function isBtnMode() {\n // Support button style in single input mode\n return this.isGroup ? this.bvGroup.buttons : this.button;\n },\n isPlain: function isPlain() {\n return this.isBtnMode ? false : this.isGroup ? this.bvGroup.plain : this.plain;\n },\n isCustom: function isCustom() {\n return this.isBtnMode ? false : !this.isPlain;\n },\n isSwitch: function isSwitch() {\n // Custom switch styling (checkboxes only)\n return this.isBtnMode || this.isRadio || this.isPlain ? false : this.isGroup ? this.bvGroup.switches : this.switch;\n },\n isInline: function isInline() {\n return this.isGroup ? this.bvGroup.inline : this.inline;\n },\n isDisabled: function isDisabled() {\n // Child can be disabled while parent isn't, but is always disabled if group is\n return this.isGroup ? this.bvGroup.disabled || this.disabled : this.disabled;\n },\n isRequired: function isRequired() {\n // Required only works when a name is provided for the input(s)\n // Child can only be required when parent is\n // Groups will always have a name (either user supplied or auto generated)\n return Boolean(this.getName && (this.isGroup ? this.bvGroup.required : this.required));\n },\n getName: function getName() {\n // Group name preferred over local name\n return (this.isGroup ? this.bvGroup.groupName : this.name) || null;\n },\n getForm: function getForm() {\n return (this.isGroup ? this.bvGroup.form : this.form) || null;\n },\n getSize: function getSize() {\n return (this.isGroup ? this.bvGroup.size : this.size) || '';\n },\n getState: function getState() {\n return this.isGroup ? this.bvGroup.computedState : this.computedState;\n },\n getButtonVariant: function getButtonVariant() {\n // Local variant preferred over group variant\n if (this.buttonVariant) {\n return this.buttonVariant;\n } else if (this.isGroup && this.bvGroup.buttonVariant) {\n return this.bvGroup.buttonVariant;\n } // default variant\n\n\n return 'secondary';\n },\n buttonClasses: function buttonClasses() {\n // Same for radio & check\n return ['btn', \"btn-\".concat(this.getButtonVariant), this.getSize ? \"btn-\".concat(this.getSize) : '', // 'disabled' class makes \"button\" look disabled\n this.isDisabled ? 'disabled' : '', // 'active' class makes \"button\" look pressed\n this.isChecked ? 'active' : '', // Focus class makes button look focused\n this.hasFocus ? 'focus' : ''];\n }\n },\n watch: {\n checked: function checked(newVal, oldVal) {\n this.computedLocalChecked = newVal;\n }\n },\n methods: {\n handleFocus: function handleFocus(evt) {\n // When in buttons mode, we need to add 'focus' class to label when input focused\n // As it is the hidden input which has actual focus\n if (evt.target) {\n if (evt.type === 'focus') {\n this.hasFocus = true;\n } else if (evt.type === 'blur') {\n this.hasFocus = false;\n }\n }\n },\n // Convenience methods for focusing the input\n focus: function focus() {\n if (!this.isDisabled && this.$refs.input && this.$refs.input.focus) {\n this.$refs.input.focus();\n }\n },\n blur: function blur() {\n if (!this.isDisabled && this.$refs.input && this.$refs.input.blur) {\n this.$refs.input.blur();\n }\n }\n },\n render: function render(h) {\n var defaultSlot = this.normalizeSlot('default'); // Generate the input element\n\n var on = {\n change: this.handleChange\n };\n\n if (this.isBtnMode) {\n // Handlers for focus styling when in button mode\n on.focus = on.blur = this.handleFocus;\n }\n\n var input = h('input', {\n ref: 'input',\n key: 'input',\n on: on,\n class: {\n 'form-check-input': this.isPlain,\n 'custom-control-input': this.isCustom,\n 'is-valid': this.getState === true && !this.isBtnMode,\n 'is-invalid': this.getState === false && !this.isBtnMode,\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/2911\n 'position-static': this.isPlain && !defaultSlot\n },\n directives: [{\n name: 'model',\n rawName: 'v-model',\n value: this.computedLocalChecked,\n expression: 'computedLocalChecked'\n }],\n attrs: {\n id: this.safeId(),\n type: this.isRadio ? 'radio' : 'checkbox',\n name: this.getName,\n form: this.getForm,\n disabled: this.isDisabled,\n required: this.isRequired,\n autocomplete: 'off',\n 'aria-required': this.isRequired || null,\n 'aria-label': this.ariaLabel || null,\n 'aria-labelledby': this.ariaLabelledby || null\n },\n domProps: {\n value: this.value,\n checked: this.isChecked\n }\n });\n\n if (this.isBtnMode) {\n // Button mode\n var button = h('label', {\n class: this.buttonClasses\n }, [input, defaultSlot]);\n\n if (!this.isGroup) {\n // Standalone button mode, so wrap in 'btn-group-toggle'\n // and flag it as inline-block to mimic regular buttons\n button = h('div', {\n class: ['btn-group-toggle', 'd-inline-block']\n }, [button]);\n }\n\n return button;\n } else {\n // Not button mode\n var label = h(false); // If no label content in plain mode we dont render the label\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/2911\n\n if (!(this.isPlain && !defaultSlot)) {\n label = h('label', {\n class: {\n 'form-check-label': this.isPlain,\n 'custom-control-label': this.isCustom\n },\n attrs: {\n for: this.safeId()\n }\n }, defaultSlot);\n } // Wrap it in a div\n\n\n return h('div', {\n class: _defineProperty({\n 'form-check': this.isPlain,\n 'form-check-inline': this.isPlain && this.isInline,\n 'custom-control': this.isCustom,\n 'custom-control-inline': this.isCustom && this.isInline,\n 'custom-checkbox': this.isCustom && this.isCheck && !this.isSwitch,\n 'custom-switch': this.isSwitch,\n 'custom-radio': this.isCustom && this.isRadio\n }, \"form-control-\".concat(this.getSize), Boolean(this.getSize && !this.isBtnMode))\n }, [input, label]);\n }\n }\n};","// @vue/component\nexport default {\n props: {\n size: {\n type: String,\n default: null\n }\n },\n computed: {\n sizeFormClass: function sizeFormClass() {\n return [this.size ? \"form-control-\".concat(this.size) : null];\n },\n sizeBtnClass: function sizeBtnClass()\n /* istanbul ignore next: don't think this is used */\n {\n return [this.size ? \"btn-\".concat(this.size) : null];\n }\n }\n};","import Vue from '../../utils/vue';\nimport looseEqual from '../../utils/loose-equal';\nimport looseIndexOf from '../../utils/loose-index-of';\nimport { isArray } from '../../utils/inspect';\nimport formMixin from '../../mixins/form';\nimport formRadioCheckMixin from '../../mixins/form-radio-check';\nimport formSizeMixin from '../../mixins/form-size';\nimport formStateMixin from '../../mixins/form-state';\nimport idMixin from '../../mixins/id'; // @vue/component\n\nexport default Vue.extend({\n name: 'BFormCheckbox',\n mixins: [formRadioCheckMixin, // Includes shared render function\n idMixin, formMixin, formSizeMixin, formStateMixin],\n inject: {\n bvGroup: {\n from: 'bvCheckGroup',\n default: false\n }\n },\n props: {\n value: {\n // type: [Object, Boolean],\n default: true\n },\n uncheckedValue: {\n // type: [Object, Boolean],\n // Not applicable in multi-check mode\n default: false\n },\n indeterminate: {\n // Not applicable in multi-check mode\n type: Boolean,\n default: false\n },\n switch: {\n // Custom switch styling\n type: Boolean,\n default: false\n },\n checked: {\n // v-model\n type: [String, Number, Object, Array, Boolean],\n default: null\n }\n },\n computed: {\n isChecked: function isChecked() {\n var checked = this.computedLocalChecked;\n var value = this.value;\n\n if (isArray(checked)) {\n return looseIndexOf(checked, value) > -1;\n } else {\n return looseEqual(checked, value);\n }\n },\n isRadio: function isRadio() {\n return false;\n },\n isCheck: function isCheck() {\n return true;\n }\n },\n watch: {\n computedLocalChecked: function computedLocalChecked(newVal, oldVal) {\n this.$emit('input', newVal);\n\n if (this.$refs && this.$refs.input) {\n this.$emit('update:indeterminate', this.$refs.input.indeterminate);\n }\n },\n indeterminate: function indeterminate(newVal, oldVal) {\n this.setIndeterminate(newVal);\n }\n },\n mounted: function mounted() {\n // Set initial indeterminate state\n this.setIndeterminate(this.indeterminate);\n },\n methods: {\n handleChange: function handleChange(_ref) {\n var _ref$target = _ref.target,\n checked = _ref$target.checked,\n indeterminate = _ref$target.indeterminate;\n var localChecked = this.computedLocalChecked;\n var value = this.value;\n var isArr = isArray(localChecked);\n var uncheckedValue = isArr ? null : this.uncheckedValue; // Update computedLocalChecked\n\n if (isArr) {\n var idx = looseIndexOf(localChecked, value);\n\n if (checked && idx < 0) {\n // Add value to array\n localChecked = localChecked.concat(value);\n } else if (!checked && idx > -1) {\n // Remove value from array\n localChecked = localChecked.slice(0, idx).concat(localChecked.slice(idx + 1));\n }\n } else {\n localChecked = checked ? value : uncheckedValue;\n }\n\n this.computedLocalChecked = localChecked; // Change is only emitted on user interaction\n\n this.$emit('change', checked ? value : uncheckedValue); // If this is a child of form-checkbox-group, we emit a change event on it as well\n\n if (this.isGroup) {\n this.bvGroup.$emit('change', localChecked);\n }\n\n this.$emit('update:indeterminate', indeterminate);\n },\n setIndeterminate: function setIndeterminate(state) {\n // Indeterminate only supported in single checkbox mode\n if (isArray(this.computedLocalChecked)) {\n state = false;\n }\n\n if (this.$refs && this.$refs.input) {\n this.$refs.input.indeterminate = state; // Emit update event to prop\n\n this.$emit('update:indeterminate', state);\n }\n }\n }\n});","import Vue from '../../utils/vue';\nimport idMixin from '../../mixins/id';\nimport formMixin from '../../mixins/form';\nimport formStateMixin from '../../mixins/form-state';\nimport formSizeMixin from '../../mixins/form-size';\nimport formRadioCheckMixin from '../../mixins/form-radio-check';\nimport looseEqual from '../../utils/loose-equal'; // @vue/component\n\nexport default Vue.extend({\n name: 'BFormRadio',\n mixins: [idMixin, formRadioCheckMixin, // Includes shared render function\n formMixin, formSizeMixin, formStateMixin],\n inject: {\n bvGroup: {\n from: 'bvRadioGroup',\n default: false\n }\n },\n props: {\n checked: {\n // v-model\n type: [String, Object, Number, Boolean],\n default: null\n }\n },\n computed: {\n // Radio Groups can only have a single value, so determining if checked is simple\n isChecked: function isChecked() {\n return looseEqual(this.value, this.computedLocalChecked);\n },\n // Flags for form-radio-check mixin\n isRadio: function isRadio() {\n return true;\n },\n isCheck: function isCheck() {\n return false;\n }\n },\n watch: {\n // Radio Groups can only have a single value, so our watchers are simple\n computedLocalChecked: function computedLocalChecked(newVal, oldVal) {\n this.$emit('input', this.computedLocalChecked);\n }\n },\n methods: {\n handleChange: function handleChange(_ref) {\n var checked = _ref.target.checked;\n var value = this.value;\n this.computedLocalChecked = value; // Change is only emitted on user interaction\n\n this.$emit('change', checked ? value : null); // If this is a child of form-radio-group, we emit a change event on it as well\n\n if (this.isGroup) {\n this.bvGroup.$emit('change', checked ? value : null);\n }\n }\n }\n});","import { htmlOrText } from '../utils/html';\nimport normalizeSlotMixin from './normalize-slot';\nimport BFormCheckbox from '../components/form-checkbox/form-checkbox';\nimport BFormRadio from '../components/form-radio/form-radio'; // @vue/component\n\nexport default {\n mixins: [normalizeSlotMixin],\n model: {\n prop: 'checked',\n event: 'input'\n },\n props: {\n validated: {\n type: Boolean,\n default: false\n },\n ariaInvalid: {\n type: [Boolean, String],\n default: false\n },\n stacked: {\n type: Boolean,\n default: false\n },\n plain: {\n type: Boolean,\n default: false\n },\n buttons: {\n // Render as button style\n type: Boolean,\n default: false\n },\n buttonVariant: {\n // Only applicable when rendered with button style\n type: String,\n default: 'secondary'\n }\n },\n computed: {\n inline: function inline() {\n return !this.stacked;\n },\n groupName: function groupName() {\n // Checks/Radios tied to the same model must have the same name,\n // especially for ARIA accessibility.\n return this.name || this.safeId();\n },\n groupClasses: function groupClasses() {\n if (this.buttons) {\n return ['btn-group-toggle', this.inline ? 'btn-group' : 'btn-group-vertical', this.size ? \"btn-group-\".concat(this.size) : '', this.validated ? \"was-validated\" : ''];\n }\n\n return [this.validated ? \"was-validated\" : ''];\n },\n computedAriaInvalid: function computedAriaInvalid() {\n var ariaInvalid = this.ariaInvalid;\n\n if (ariaInvalid === true || ariaInvalid === 'true' || ariaInvalid === '') {\n return 'true';\n }\n\n return this.computedState === false ? 'true' : null;\n }\n },\n watch: {\n checked: function checked(newVal, oldVal) {\n this.localChecked = newVal;\n },\n localChecked: function localChecked(newVal, oldVal) {\n this.$emit('input', newVal);\n }\n },\n render: function render(h) {\n var _this = this;\n\n var inputs = this.formOptions.map(function (option, idx) {\n var uid = \"_BV_option_\".concat(idx, \"_\");\n return h(_this.isRadioGroup ? BFormRadio : BFormCheckbox, {\n key: uid,\n props: {\n id: _this.safeId(uid),\n value: option.value,\n // Individual radios or checks can be disabled in a group\n disabled: option.disabled || false // We don't need to include these, since the input's will know they are inside here\n // name: this.groupName,\n // form: this.form || null,\n // required: Boolean(this.name && this.required)\n\n }\n }, [h('span', {\n domProps: htmlOrText(option.html, option.text)\n })]);\n });\n return h('div', {\n class: this.groupClasses,\n attrs: {\n id: this.safeId(),\n role: this.isRadioGroup ? 'radiogroup' : 'group',\n // Tabindex to allow group to be focused if needed\n tabindex: '-1',\n 'aria-required': this.required ? 'true' : null,\n 'aria-invalid': this.computedAriaInvalid\n }\n }, [this.normalizeSlot('first'), inputs, this.normalizeSlot('default')]);\n }\n};","import Vue from '../../utils/vue';\nimport idMixin from '../../mixins/id';\nimport formMixin from '../../mixins/form';\nimport formOptionsMixin from '../../mixins/form-options';\nimport formRadioCheckGroupMixin from '../../mixins/form-radio-check-group';\nimport formSizeMixin from '../../mixins/form-size';\nimport formStateMixin from '../../mixins/form-state';\nexport var props = {\n switches: {\n // Custom switch styling\n type: Boolean,\n default: false\n },\n checked: {\n type: [String, Number, Object, Array, Boolean],\n default: null\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: 'BFormCheckboxGroup',\n mixins: [idMixin, formMixin, formRadioCheckGroupMixin, // Includes render function\n formOptionsMixin, formSizeMixin, formStateMixin],\n provide: function provide() {\n return {\n bvCheckGroup: this\n };\n },\n props: props,\n data: function data() {\n return {\n localChecked: this.checked || []\n };\n },\n computed: {\n isRadioGroup: function isRadioGroup() {\n return false;\n }\n }\n});","import BFormCheckbox from './form-checkbox';\nimport BFormCheckboxGroup from './form-checkbox-group';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BFormCheckbox: BFormCheckbox,\n BCheckbox: BFormCheckbox,\n BCheck: BFormCheckbox,\n BFormCheckboxGroup: BFormCheckboxGroup,\n BCheckboxGroup: BFormCheckboxGroup,\n BCheckGroup: BFormCheckboxGroup\n};\nexport { BFormCheckbox, BFormCheckboxGroup };\nexport default {\n install: installFactory({\n components: components\n })\n};","import Vue from '../../utils/vue';\nimport idMixin from '../../mixins/id';\nimport formMixin from '../../mixins/form';\nimport formOptionsMixin from '../../mixins/form-options';\nimport formRadioCheckGroupMixin from '../../mixins/form-radio-check-group';\nimport formSizeMixin from '../../mixins/form-size';\nimport formStateMixin from '../../mixins/form-state';\nexport var props = {\n checked: {\n type: [String, Object, Number, Boolean],\n default: null\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: 'BFormRadioGroup',\n mixins: [idMixin, formMixin, formRadioCheckGroupMixin, // Includes render function\n formOptionsMixin, formSizeMixin, formStateMixin],\n provide: function provide() {\n return {\n bvRadioGroup: this\n };\n },\n props: props,\n data: function data() {\n return {\n localChecked: this.checked\n };\n },\n computed: {\n isRadioGroup: function isRadioGroup() {\n return true;\n }\n }\n});","import BFormRadio from './form-radio';\nimport BFormRadioGroup from './form-radio-group';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BFormRadio: BFormRadio,\n BRadio: BFormRadio,\n BFormRadioGroup: BFormRadioGroup,\n BRadioGroup: BFormRadioGroup\n};\nexport { BFormRadio, BFormRadioGroup };\nexport default {\n install: installFactory({\n components: components\n })\n};","import { isFunction, isNull, isUndefined } from '../utils/inspect'; // @vue/component\n\nexport default {\n model: {\n prop: 'value',\n event: 'update'\n },\n props: {\n value: {\n type: [String, Number],\n default: ''\n },\n ariaInvalid: {\n type: [Boolean, String],\n default: false\n },\n readonly: {\n type: Boolean,\n default: false\n },\n plaintext: {\n type: Boolean,\n default: false\n },\n autocomplete: {\n type: String,\n default: null\n },\n placeholder: {\n type: String,\n default: null\n },\n formatter: {\n type: Function,\n default: null\n },\n trim: {\n type: Boolean,\n default: false\n },\n number: {\n type: Boolean,\n default: false\n },\n lazyFormatter: {\n type: Boolean,\n value: false\n }\n },\n data: function data() {\n return {\n localValue: this.stringifyValue(this.value)\n };\n },\n computed: {\n computedClass: function computedClass() {\n return [{\n // Range input needs class custom-range\n 'custom-range': this.type === 'range',\n // plaintext not supported by type=range or type=color\n 'form-control-plaintext': this.plaintext && this.type !== 'range' && this.type !== 'color',\n // form-control not used by type=range or plaintext. Always used by type=color\n 'form-control': !this.plaintext && this.type !== 'range' || this.type === 'color'\n }, this.sizeFormClass, this.stateClass];\n },\n computedAriaInvalid: function computedAriaInvalid() {\n if (!this.ariaInvalid || this.ariaInvalid === 'false') {\n // this.ariaInvalid is null or false or 'false'\n return this.computedState === false ? 'true' : null;\n }\n\n if (this.ariaInvalid === true) {\n // User wants explicit aria-invalid=true\n return 'true';\n } // Most likely a string value (which could be the string 'true')\n\n\n return this.ariaInvalid;\n }\n },\n watch: {\n value: function value(newVal) {\n if (newVal !== this.localValue) {\n this.localValue = this.stringifyValue(newVal);\n }\n }\n },\n mounted: function mounted() {\n var value = this.stringifyValue(this.value);\n\n if (value !== this.localValue) {\n /* istanbul ignore next */\n this.localValue = value;\n }\n },\n methods: {\n stringifyValue: function stringifyValue(value) {\n return isUndefined(value) || isNull(value) ? '' : String(value);\n },\n getFormatted: function getFormatted(value, evt) {\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n value = this.stringifyValue(value);\n\n if ((!this.lazyFormatter || force) && isFunction(this.formatter)) {\n value = this.formatter(value, evt);\n }\n\n return value;\n },\n updateValue: function updateValue(value) {\n value = this.stringifyValue(value);\n\n if (value !== this.localValue) {\n // Keep the input set to the value before modifiers\n this.localValue = value;\n\n if (this.number) {\n // Emulate `.number` modifier behaviour\n var num = parseFloat(value);\n value = isNaN(num) ? value : num;\n } else if (this.trim) {\n // Emulate `.trim` modifier behaviour\n value = value.trim();\n } // Update the v-model\n\n\n this.$emit('update', value);\n } else if (value !== this.$refs.input.value) {\n // When the `localValue` hasn't changed but the actual input value\n // is out of sync, make sure to change it to the given one\n\n /* istanbul ignore next: hard to test */\n this.$refs.input.value = value;\n }\n },\n onInput: function onInput(evt) {\n // `evt.target.composing` is set by Vue\n // https://github.com/vuejs/vue/blob/dev/src/platforms/web/runtime/directives/model.js\n\n /* istanbul ignore if: hard to test composition events */\n if (evt.target.composing) {\n return;\n }\n\n var formatted = this.getFormatted(evt.target.value, evt); // Exit when the `formatter` function strictly returned `false`\n // or prevented the input event\n\n if (formatted === false || evt.defaultPrevented) {\n /* istanbul ignore next */\n evt.preventDefault();\n return;\n }\n\n this.updateValue(formatted);\n this.$emit('input', formatted);\n },\n onChange: function onChange(evt) {\n // `evt.target.composing` is set by Vue\n // https://github.com/vuejs/vue/blob/dev/src/platforms/web/runtime/directives/model.js\n\n /* istanbul ignore if: hard to test composition events */\n if (evt.target.composing) {\n return;\n }\n\n var formatted = this.getFormatted(evt.target.value, evt); // Exit when the `formatter` function strictly returned `false`\n // or prevented the input event\n\n if (formatted === false || evt.defaultPrevented) {\n /* istanbul ignore next */\n evt.preventDefault();\n return;\n }\n\n this.updateValue(formatted);\n this.$emit('change', formatted);\n },\n onBlur: function onBlur(evt) {\n // Lazy formatter\n if (this.lazyFormatter) {\n var formatted = this.getFormatted(evt.target.value, evt, true); // Exit when the `formatter` function strictly returned `false`\n\n if (formatted === false) {\n return;\n }\n\n this.updateValue(formatted);\n } // Emit native blur event\n\n\n this.$emit('blur', evt);\n },\n focus: function focus() {\n // For external handler that may want a focus method\n if (!this.disabled) {\n this.$el.focus();\n }\n },\n blur: function blur() {\n // For external handler that may want a blur method\n if (!this.disabled) {\n this.$el.blur();\n }\n }\n }\n};","// @vue/component\nexport default {\n computed: {\n selectionStart: {\n // Expose selectionStart for formatters, etc\n cache: false,\n get: function get()\n /* istanbul ignore next */\n {\n return this.$refs.input.selectionStart;\n },\n set: function set(val)\n /* istanbul ignore next */\n {\n this.$refs.input.selectionStart = val;\n }\n },\n selectionEnd: {\n // Expose selectionEnd for formatters, etc\n cache: false,\n get: function get()\n /* istanbul ignore next */\n {\n return this.$refs.input.selectionEnd;\n },\n set: function set(val)\n /* istanbul ignore next */\n {\n this.$refs.input.selectionEnd = val;\n }\n },\n selectionDirection: {\n // Expose selectionDirection for formatters, etc\n cache: false,\n get: function get()\n /* istanbul ignore next */\n {\n return this.$refs.input.selectionDirection;\n },\n set: function set(val)\n /* istanbul ignore next */\n {\n this.$refs.input.selectionDirection = val;\n }\n }\n },\n methods: {\n select: function select()\n /* istanbul ignore next */\n {\n var _this$$refs$input;\n\n // For external handler that may want a select() method\n (_this$$refs$input = this.$refs.input).select.apply(_this$$refs$input, arguments);\n },\n setSelectionRange: function setSelectionRange()\n /* istanbul ignore next */\n {\n var _this$$refs$input2;\n\n // For external handler that may want a setSelectionRange(a,b,c) method\n (_this$$refs$input2 = this.$refs.input).setSelectionRange.apply(_this$$refs$input2, arguments);\n },\n setRangeText: function setRangeText()\n /* istanbul ignore next */\n {\n var _this$$refs$input3;\n\n // For external handler that may want a setRangeText(a,b,c) method\n (_this$$refs$input3 = this.$refs.input).setRangeText.apply(_this$$refs$input3, arguments);\n }\n }\n};","// @vue/component\nexport default {\n computed: {\n validity: {\n // Expose validity property\n cache: false,\n get: function get()\n /* istanbul ignore next */\n {\n return this.$refs.input.validity;\n }\n },\n validationMessage: {\n // Expose validationMessage property\n cache: false,\n get: function get()\n /* istanbul ignore next */\n {\n return this.$refs.input.validationMessage;\n }\n },\n willValidate: {\n // Expose willValidate property\n cache: false,\n get: function get()\n /* istanbul ignore next */\n {\n return this.$refs.input.willValidate;\n }\n }\n },\n methods: {\n setCustomValidity: function setCustomValidity()\n /* istanbul ignore next */\n {\n var _this$$refs$input;\n\n // For external handler that may want a setCustomValidity(...) method\n return (_this$$refs$input = this.$refs.input).setCustomValidity.apply(_this$$refs$input, arguments);\n },\n checkValidity: function checkValidity()\n /* istanbul ignore next */\n {\n var _this$$refs$input2;\n\n // For external handler that may want a checkValidity(...) method\n return (_this$$refs$input2 = this.$refs.input).checkValidity.apply(_this$$refs$input2, arguments);\n },\n reportValidity: function reportValidity()\n /* istanbul ignore next */\n {\n var _this$$refs$input3;\n\n // For external handler that may want a reportValidity(...) method\n return (_this$$refs$input3 = this.$refs.input).reportValidity.apply(_this$$refs$input3, arguments);\n }\n }\n};","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport Vue from '../../utils/vue';\nimport idMixin from '../../mixins/id';\nimport formMixin from '../../mixins/form';\nimport formSizeMixin from '../../mixins/form-size';\nimport formStateMixin from '../../mixins/form-state';\nimport formTextMixin from '../../mixins/form-text';\nimport formSelectionMixin from '../../mixins/form-selection';\nimport formValidityMixin from '../../mixins/form-validity';\nimport { arrayIncludes } from '../../utils/array';\nimport { eventOn, eventOff } from '../../utils/dom'; // Valid supported input types\n\nvar TYPES = ['text', 'password', 'email', 'number', 'url', 'tel', 'search', 'range', 'color', 'date', 'time', 'datetime', 'datetime-local', 'month', 'week']; // @vue/component\n\nexport default Vue.extend({\n name: 'BFormInput',\n mixins: [idMixin, formMixin, formSizeMixin, formStateMixin, formTextMixin, formSelectionMixin, formValidityMixin],\n props: {\n // value prop defined in form-text mixin\n // value: { },\n type: {\n type: String,\n default: 'text',\n validator: function validator(type) {\n return arrayIncludes(TYPES, type);\n }\n },\n noWheel: {\n // Disable mousewheel to prevent wheel from changing values (i.e. number/date).\n type: Boolean,\n default: false\n },\n min: {\n type: [String, Number],\n default: null\n },\n max: {\n type: [String, Number],\n default: null\n },\n step: {\n type: [String, Number],\n default: null\n },\n list: {\n type: String,\n default: null\n }\n },\n computed: {\n localType: function localType() {\n // We only allow certain types\n return arrayIncludes(TYPES, this.type) ? this.type : 'text';\n }\n },\n watch: {\n noWheel: function noWheel(newVal) {\n this.setWheelStopper(newVal);\n }\n },\n mounted: function mounted() {\n this.setWheelStopper(this.noWheel);\n },\n deactivated: function deactivated() {\n // Turn off listeners when keep-alive component deactivated\n\n /* istanbul ignore next */\n this.setWheelStopper(false);\n },\n activated: function activated() {\n // Turn on listeners (if no-wheel) when keep-alive component activated\n\n /* istanbul ignore next */\n this.setWheelStopper(this.noWheel);\n },\n beforeDestroy: function beforeDestroy() {\n /* istanbul ignore next */\n this.setWheelStopper(false);\n },\n methods: {\n setWheelStopper: function setWheelStopper(on) {\n var input = this.$el; // We use native events, so that we don't interfere with propgation\n\n if (on) {\n eventOn(input, 'focus', this.onWheelFocus);\n eventOn(input, 'blur', this.onWheelBlur);\n } else {\n eventOff(input, 'focus', this.onWheelFocus);\n eventOff(input, 'blur', this.onWheelBlur);\n eventOff(document, 'wheel', this.stopWheel);\n }\n },\n onWheelFocus: function onWheelFocus(evt) {\n eventOn(document, 'wheel', this.stopWheel);\n },\n onWheelBlur: function onWheelBlur(evt) {\n eventOff(document, 'wheel', this.stopWheel);\n },\n stopWheel: function stopWheel(evt) {\n evt.preventDefault();\n this.$el.blur();\n }\n },\n render: function render(h) {\n var self = this;\n return h('input', {\n ref: 'input',\n class: self.computedClass,\n directives: [{\n name: 'model',\n rawName: 'v-model',\n value: self.localValue,\n expression: 'localValue'\n }],\n attrs: {\n id: self.safeId(),\n name: self.name,\n form: self.form || null,\n type: self.localType,\n disabled: self.disabled,\n placeholder: self.placeholder,\n required: self.required,\n autocomplete: self.autocomplete || null,\n readonly: self.readonly || self.plaintext,\n min: self.min,\n max: self.max,\n step: self.step,\n list: self.localType !== 'password' ? self.list : null,\n 'aria-required': self.required ? 'true' : null,\n 'aria-invalid': self.computedAriaInvalid\n },\n domProps: {\n value: self.localValue\n },\n on: _objectSpread({}, self.$listeners, {\n input: self.onInput,\n change: self.onChange,\n blur: self.onBlur\n })\n });\n }\n});","import BFormInput from './form-input';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BFormInput: BFormInput,\n BInput: BFormInput\n};\nexport { BFormInput };\nexport default {\n install: installFactory({\n components: components\n })\n};","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport Vue from '../../utils/vue';\nimport idMixin from '../../mixins/id';\nimport formMixin from '../../mixins/form';\nimport formSizeMixin from '../../mixins/form-size';\nimport formStateMixin from '../../mixins/form-state';\nimport formTextMixin from '../../mixins/form-text';\nimport formSelectionMixin from '../../mixins/form-selection';\nimport formValidityMixin from '../../mixins/form-validity';\nimport { getCS, isVisible } from '../../utils/dom';\nimport { isNull } from '../../utils/inspect'; // @vue/component\n\nexport default Vue.extend({\n name: 'BFormTextarea',\n mixins: [idMixin, formMixin, formSizeMixin, formStateMixin, formTextMixin, formSelectionMixin, formValidityMixin],\n props: {\n rows: {\n type: [Number, String],\n default: 2\n },\n maxRows: {\n type: [Number, String],\n default: null\n },\n wrap: {\n // 'soft', 'hard' or 'off'. Browser default is 'soft'\n type: String,\n default: 'soft'\n },\n noResize: {\n // Disable the resize handle of textarea\n type: Boolean,\n default: false\n },\n noAutoShrink: {\n // When in auto resize mode, disable shrinking to content height\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n return {\n dontResize: true,\n heightInPx: null\n };\n },\n computed: {\n computedStyle: function computedStyle() {\n var styles = {\n // Setting `noResize` to true will disable the ability for the user to\n // manually resize the textarea. We also disable when in auto resize mode\n resize: !this.computedRows || this.noResize ? 'none' : null\n };\n\n if (!this.computedRows) {\n // The computed height for auto resize.\n // We avoid setting the style to null, which can override user manual resize.\n styles.height = this.heightInPx; // We always add a vertical scrollbar to the textarea when auto-resize is\n // enabled so that the computed height calcaultion returns a stable value.\n\n styles.overflowY = 'scroll';\n }\n\n return styles;\n },\n computedMinRows: function computedMinRows() {\n // Ensure rows is at least 2 and positive (2 is the native textarea value).\n // A value of 1 can cause issues in some browsers, and most browsers only support\n // 2 as the smallest value.\n return Math.max(parseInt(this.rows, 10) || 2, 2);\n },\n computedMaxRows: function computedMaxRows() {\n return Math.max(this.computedMinRows, parseInt(this.maxRows, 10) || 0);\n },\n computedRows: function computedRows() {\n // This is used to set the attribute 'rows' on the textarea.\n // If auto-resize is enabled, then we return null as we use CSS to control height.\n return this.computedMinRows === this.computedMaxRows ? this.computedMinRows : null;\n }\n },\n watch: {\n dontResize: function dontResize(newVal, oldval) {\n if (!newVal) {\n this.setHeight();\n }\n },\n localValue: function localValue(newVal, oldVal) {\n this.setHeight();\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n // Enable opt-in resizing once mounted\n this.$nextTick(function () {\n _this.dontResize = false;\n });\n },\n activated: function activated() {\n var _this2 = this;\n\n // If we are being re-activated in <keep-alive>, enable opt-in resizing\n this.$nextTick(function () {\n _this2.dontResize = false;\n });\n },\n deactivated: function deactivated() {\n // If we are in a deactivated <keep-alive>, disable opt-in resizing\n this.dontResize = true;\n },\n beforeDestroy: function beforeDestroy() {\n /* istanbul ignore next */\n this.dontResize = true;\n },\n methods: {\n setHeight: function setHeight() {\n var _this3 = this;\n\n this.$nextTick(function () {\n _this3.heightInPx = _this3.computeHeight();\n });\n },\n computeHeight: function computeHeight()\n /* istanbul ignore next: can't test getComputedStyle in JSDOM */\n {\n if (this.$isServer || !isNull(this.computedRows)) {\n return null;\n }\n\n var el = this.$el; // Element must be visible (not hidden) and in document.\n // Must be checked after above checks\n\n if (!isVisible(el)) {\n return null;\n } // Get current computed styles\n\n\n var computedStyle = getCS(el); // Height of one line of text in px\n\n var lineHeight = parseFloat(computedStyle.lineHeight); // Calculate height of border and padding\n\n var border = (parseFloat(computedStyle.borderTopWidth) || 0) + (parseFloat(computedStyle.borderBottomWidth) || 0);\n var padding = (parseFloat(computedStyle.paddingTop) || 0) + (parseFloat(computedStyle.paddingBottom) || 0); // Calculate offset\n\n var offset = border + padding; // Minimum height for min rows (which must be 2 rows or greater for cross-browser support)\n\n var minHeight = lineHeight * this.computedMinRows + offset; // Get the current style height (with `px` units)\n\n var oldHeight = el.style.height || computedStyle.height; // Probe scrollHeight by temporarily changing the height to `auto`\n\n el.style.height = 'auto';\n var scrollHeight = el.scrollHeight; // Place the original old height back on the element, just in case this computedProp\n // returns the same value as before.\n\n el.style.height = oldHeight; // Calculate content height in \"rows\" (scrollHeight includes padding but not border)\n\n var contentRows = Math.max((scrollHeight - padding) / lineHeight, 2); // Calculate number of rows to display (limited within min/max rows)\n\n var rows = Math.min(Math.max(contentRows, this.computedMinRows), this.computedMaxRows); // Calculate the required height of the textarea including border and padding (in pixels)\n\n var height = Math.max(Math.ceil(rows * lineHeight + offset), minHeight); // Computed height remains the larger of oldHeight and new height,\n // when height is in `sticky` mode (prop `no-auto-shrink` is true)\n\n if (this.noAutoShrink && (parseFloat(oldHeight) || 0) > height) {\n return oldHeight;\n } // Return the new computed CSS height in px units\n\n\n return \"\".concat(height, \"px\");\n }\n },\n render: function render(h) {\n // Using self instead of this helps reduce code size during minification\n var self = this;\n return h('textarea', {\n ref: 'input',\n class: self.computedClass,\n style: self.computedStyle,\n directives: [{\n name: 'model',\n rawName: 'v-model',\n value: self.localValue,\n expression: 'localValue'\n }],\n attrs: {\n id: self.safeId(),\n name: self.name,\n form: self.form || null,\n disabled: self.disabled,\n placeholder: self.placeholder,\n required: self.required,\n autocomplete: self.autocomplete || null,\n readonly: self.readonly || self.plaintext,\n rows: self.computedRows,\n wrap: self.wrap || null,\n 'aria-required': self.required ? 'true' : null,\n 'aria-invalid': self.computedAriaInvalid\n },\n domProps: {\n value: self.localValue\n },\n on: _objectSpread({}, self.$listeners, {\n input: self.onInput,\n change: self.onChange,\n blur: self.onBlur\n })\n });\n }\n});","import BFormTextarea from './form-textarea';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BFormTextarea: BFormTextarea,\n BTextarea: BFormTextarea\n};\nexport { BFormTextarea };\nexport default {\n install: installFactory({\n components: components\n })\n};","// @vue/component\nexport default {\n props: {\n plain: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n custom: function custom() {\n return !this.plain;\n }\n }\n};","import Vue from '../../utils/vue';\nimport { from as arrayFrom, isArray, concat } from '../../utils/array';\nimport { getComponentConfig } from '../../utils/config';\nimport { isFunction } from '../../utils/inspect';\nimport formCustomMixin from '../../mixins/form-custom';\nimport formMixin from '../../mixins/form';\nimport formStateMixin from '../../mixins/form-state';\nimport idMixin from '../../mixins/id';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nvar NAME = 'BFormFile'; // @vue/component\n\nexport default Vue.extend({\n name: NAME,\n mixins: [idMixin, formMixin, formStateMixin, formCustomMixin, normalizeSlotMixin],\n model: {\n prop: 'value',\n event: 'input'\n },\n props: {\n value: {\n // type: Object,\n default: null\n },\n accept: {\n type: String,\n default: ''\n },\n // Instruct input to capture from camera\n capture: {\n type: Boolean,\n default: false\n },\n placeholder: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'placeholder');\n }\n },\n browseText: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'browseText');\n }\n },\n dropPlaceholder: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'dropPlaceholder');\n }\n },\n multiple: {\n type: Boolean,\n default: false\n },\n directory: {\n type: Boolean,\n default: false\n },\n noTraverse: {\n type: Boolean,\n default: false\n },\n noDrop: {\n type: Boolean,\n default: false\n },\n fileNameFormatter: {\n type: Function,\n default: null\n }\n },\n data: function data() {\n return {\n selectedFile: null,\n dragging: false,\n hasFocus: false\n };\n },\n computed: {\n selectLabel: function selectLabel() {\n // Draging active\n if (this.dragging && this.dropPlaceholder) {\n return this.dropPlaceholder;\n } // No file chosen\n\n\n if (!this.selectedFile || this.selectedFile.length === 0) {\n return this.placeholder;\n } // Convert selectedFile to an array (if not already one)\n\n\n var files = concat(this.selectedFile).filter(Boolean);\n\n if (this.hasNormalizedSlot('file-name')) {\n // There is a slot for formatting the files/names\n return [this.normalizeSlot('file-name', {\n files: files,\n names: files.map(function (f) {\n return f.name;\n })\n })];\n } else {\n // Use the user supplied formatter, or the built in one.\n return isFunction(this.fileNameFormatter) ? String(this.fileNameFormatter(files)) : files.map(function (file) {\n return file.name;\n }).join(', ');\n }\n }\n },\n watch: {\n selectedFile: function selectedFile(newVal, oldVal) {\n // The following test is needed when the file input is \"reset\" or the\n // exact same file(s) are selected to prevent an infinite loop.\n // When in `multiple` mode we need to check for two empty arrays or\n // two arrays with identical files\n if (newVal === oldVal || isArray(newVal) && isArray(oldVal) && newVal.length === oldVal.length && newVal.every(function (v, i) {\n return v === oldVal[i];\n })) {\n return;\n }\n\n if (!newVal && this.multiple) {\n this.$emit('input', []);\n } else {\n this.$emit('input', newVal);\n }\n },\n value: function value(newVal) {\n if (!newVal || isArray(newVal) && newVal.length === 0) {\n this.reset();\n }\n }\n },\n methods: {\n focusHandler: function focusHandler(evt) {\n // Bootstrap v4 doesn't have focus styling for custom file input\n // Firefox has a '[type=file]:focus ~ sibling' selector issue,\n // so we add a 'focus' class to get around these bugs\n if (this.plain || evt.type === 'focusout') {\n this.hasFocus = false;\n } else {\n // Add focus styling for custom file input\n this.hasFocus = true;\n }\n },\n reset: function reset() {\n try {\n // Wrapped in try in case IE 11 craps out\n this.$refs.input.value = '';\n } catch (e) {} // IE 11 doesn't support setting `input.value` to '' or null\n // So we use this little extra hack to reset the value, just in case.\n // This also appears to work on modern browsers as well.\n\n\n this.$refs.input.type = '';\n this.$refs.input.type = 'file';\n this.selectedFile = this.multiple ? [] : null;\n },\n onFileChange: function onFileChange(evt) {\n var _this = this;\n\n // Always emit original event\n this.$emit('change', evt); // Check if special `items` prop is available on event (drop mode)\n // Can be disabled by setting no-traverse\n\n var items = evt.dataTransfer && evt.dataTransfer.items;\n /* istanbul ignore next: not supported in JSDOM */\n\n if (items && !this.noTraverse) {\n var queue = [];\n\n for (var i = 0; i < items.length; i++) {\n var item = items[i].webkitGetAsEntry();\n\n if (item) {\n queue.push(this.traverseFileTree(item));\n }\n }\n\n Promise.all(queue).then(function (filesArr) {\n _this.setFiles(arrayFrom(filesArr));\n });\n return;\n } // Normal handling\n\n\n this.setFiles(evt.target.files || evt.dataTransfer.files);\n },\n setFiles: function setFiles() {\n var files = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (!files) {\n /* istanbul ignore next: this will probably not happen */\n this.selectedFile = null;\n } else if (this.multiple) {\n // Convert files to array\n var filesArray = [];\n\n for (var i = 0; i < files.length; i++) {\n filesArray.push(files[i]);\n } // Return file(s) as array\n\n\n this.selectedFile = filesArray;\n } else {\n // Return single file object\n this.selectedFile = files[0] || null;\n }\n },\n onReset: function onReset() {\n // Triggered when the parent form (if any) is reset\n this.selectedFile = this.multiple ? [] : null;\n },\n onDragover: function onDragover(evt)\n /* istanbul ignore next: difficult to test in JSDOM */\n {\n evt.preventDefault();\n evt.stopPropagation();\n\n if (this.noDrop || !this.custom) {\n return;\n }\n\n this.dragging = true;\n evt.dataTransfer.dropEffect = 'copy';\n },\n onDragleave: function onDragleave(evt)\n /* istanbul ignore next: difficult to test in JSDOM */\n {\n evt.preventDefault();\n evt.stopPropagation();\n this.dragging = false;\n },\n onDrop: function onDrop(evt)\n /* istanbul ignore next: difficult to test in JSDOM */\n {\n evt.preventDefault();\n evt.stopPropagation();\n\n if (this.noDrop) {\n return;\n }\n\n this.dragging = false;\n\n if (evt.dataTransfer.files && evt.dataTransfer.files.length > 0) {\n this.onFileChange(evt);\n }\n },\n traverseFileTree: function traverseFileTree(item, path)\n /* istanbul ignore next: not supported in JSDOM */\n {\n var _this2 = this;\n\n // Based on http://stackoverflow.com/questions/3590058\n return new Promise(function (resolve) {\n path = path || '';\n\n if (item.isFile) {\n // Get file\n item.file(function (file) {\n file.$path = path; // Inject $path to file obj\n\n resolve(file);\n });\n } else if (item.isDirectory) {\n // Get folder contents\n item.createReader().readEntries(function (entries) {\n var queue = [];\n\n for (var i = 0; i < entries.length; i++) {\n queue.push(_this2.traverseFileTree(entries[i], path + item.name + '/'));\n }\n\n Promise.all(queue).then(function (filesArr) {\n resolve(arrayFrom(filesArr));\n });\n });\n }\n });\n }\n },\n render: function render(h) {\n // Form Input\n var input = h('input', {\n ref: 'input',\n class: [{\n 'form-control-file': this.plain,\n 'custom-file-input': this.custom,\n focus: this.custom && this.hasFocus\n }, this.stateClass],\n attrs: {\n type: 'file',\n id: this.safeId(),\n name: this.name,\n disabled: this.disabled,\n required: this.required,\n form: this.form || null,\n capture: this.capture || null,\n accept: this.accept || null,\n multiple: this.multiple,\n webkitdirectory: this.directory,\n 'aria-required': this.required ? 'true' : null\n },\n on: {\n change: this.onFileChange,\n focusin: this.focusHandler,\n focusout: this.focusHandler,\n reset: this.onReset\n }\n });\n\n if (this.plain) {\n return input;\n } // Overlay Labels\n\n\n var label = h('label', {\n staticClass: 'custom-file-label',\n class: [this.dragging ? 'dragging' : null],\n attrs: {\n for: this.safeId(),\n 'data-browse': this.browseText || null\n }\n }, this.selectLabel); // Return rendered custom file input\n\n return h('div', {\n staticClass: 'custom-file b-form-file',\n class: this.stateClass,\n attrs: {\n id: this.safeId('_BV_file_outer_')\n },\n on: {\n dragover: this.onDragover,\n dragleave: this.onDragleave,\n drop: this.onDrop\n }\n }, [input, label]);\n }\n});","import BFormFile from './form-file';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BFormFile: BFormFile,\n BFile: BFormFile\n};\nexport { BFormFile };\nexport default {\n install: installFactory({\n components: components\n })\n};","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport Vue from '../../utils/vue';\nimport idMixin from '../../mixins/id';\nimport formOptionsMixin from '../../mixins/form-options';\nimport formMixin from '../../mixins/form';\nimport formSizeMixin from '../../mixins/form-size';\nimport formStateMixin from '../../mixins/form-state';\nimport formCustomMixin from '../../mixins/form-custom';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport { from as arrayFrom } from '../../utils/array';\nimport { htmlOrText } from '../../utils/html'; // @vue/component\n\nexport default Vue.extend({\n name: 'BFormSelect',\n mixins: [idMixin, normalizeSlotMixin, formMixin, formSizeMixin, formStateMixin, formCustomMixin, formOptionsMixin],\n model: {\n prop: 'value',\n event: 'input'\n },\n props: {\n value: {// type: [Object, Array, String, Number, Boolean],\n // default: undefined\n },\n multiple: {\n type: Boolean,\n default: false\n },\n selectSize: {\n // Browsers default size to 0, which shows 4 rows in most browsers in multiple mode\n // Size of 1 can bork out Firefox\n type: Number,\n default: 0\n },\n ariaInvalid: {\n type: [Boolean, String],\n default: false\n }\n },\n data: function data() {\n return {\n localValue: this.value\n };\n },\n computed: {\n computedSelectSize: function computedSelectSize() {\n // Custom selects with a size of zero causes the arrows to be hidden,\n // so dont render the size attribute in this case\n return !this.plain && this.selectSize === 0 ? null : this.selectSize;\n },\n inputClass: function inputClass() {\n return [this.plain ? 'form-control' : 'custom-select', this.size && this.plain ? \"form-control-\".concat(this.size) : null, this.size && !this.plain ? \"custom-select-\".concat(this.size) : null, this.stateClass];\n },\n computedAriaInvalid: function computedAriaInvalid() {\n if (this.ariaInvalid === true || this.ariaInvalid === 'true') {\n return 'true';\n }\n\n return this.stateClass === 'is-invalid' ? 'true' : null;\n }\n },\n watch: {\n value: function value(newVal, oldVal) {\n this.localValue = newVal;\n },\n localValue: function localValue(newVal, oldVal) {\n this.$emit('input', this.localValue);\n }\n },\n methods: {\n focus: function focus() {\n this.$refs.input.focus();\n },\n blur: function blur() {\n this.$refs.input.blur();\n }\n },\n render: function render(h) {\n var _this = this;\n\n var options = this.formOptions.map(function (option, index) {\n return h('option', {\n key: \"option_\".concat(index, \"_opt\"),\n attrs: {\n disabled: Boolean(option.disabled)\n },\n domProps: _objectSpread({}, htmlOrText(option.html, option.text), {\n value: option.value\n })\n });\n });\n return h('select', {\n ref: 'input',\n class: this.inputClass,\n directives: [{\n name: 'model',\n rawName: 'v-model',\n value: this.localValue,\n expression: 'localValue'\n }],\n attrs: {\n id: this.safeId(),\n name: this.name,\n form: this.form || null,\n multiple: this.multiple || null,\n size: this.computedSelectSize,\n disabled: this.disabled,\n required: this.required,\n 'aria-required': this.required ? 'true' : null,\n 'aria-invalid': this.computedAriaInvalid\n },\n on: {\n change: function change(evt) {\n var target = evt.target;\n var selectedVal = arrayFrom(target.options).filter(function (o) {\n return o.selected;\n }).map(function (o) {\n return '_value' in o ? o._value : o.value;\n });\n _this.localValue = target.multiple ? selectedVal : selectedVal[0];\n\n _this.$nextTick(function () {\n _this.$emit('change', _this.localValue);\n });\n }\n }\n }, [this.normalizeSlot('first'), options, this.normalizeSlot('default')]);\n }\n});","import BFormSelect from './form-select';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BFormSelect: BFormSelect,\n BSelect: BFormSelect\n};\nexport { BFormSelect };\nexport default {\n install: installFactory({\n components: components\n })\n};","import BImg from './img';\nimport BImgLazy from './img-lazy';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BImg: BImg,\n BImgLazy: BImgLazy\n};\nexport { BImg, BImgLazy };\nexport default {\n install: installFactory({\n components: components\n })\n};","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; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { getComponentConfig } from '../../utils/config';\nimport { stripTags } from '../../utils/html';\nimport { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot';\nimport Container from '../layout/container';\nvar NAME = 'BJumbotron';\nexport var props = {\n fluid: {\n type: Boolean,\n default: false\n },\n containerFluid: {\n type: Boolean,\n default: false\n },\n header: {\n type: String,\n default: null\n },\n headerHtml: {\n type: String,\n default: null\n },\n headerTag: {\n type: String,\n default: 'h1'\n },\n headerLevel: {\n type: [Number, String],\n default: '3'\n },\n lead: {\n type: String,\n default: null\n },\n leadHtml: {\n type: String,\n default: null\n },\n leadTag: {\n type: String,\n default: 'p'\n },\n tag: {\n type: String,\n default: 'div'\n },\n bgVariant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'bgVariant');\n }\n },\n borderVariant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'borderVariant');\n }\n },\n textVariant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'textVariant');\n }\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: NAME,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class2;\n\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n // The order of the conditionals matter.\n // We are building the component markup in order.\n var childNodes = [];\n var $slots = slots();\n var $scopedSlots = scopedSlots || {}; // Header\n\n if (props.header || hasNormalizedSlot('header', $scopedSlots, $slots) || props.headerHtml) {\n childNodes.push(h(props.headerTag, {\n class: _defineProperty({}, \"display-\".concat(props.headerLevel), Boolean(props.headerLevel))\n }, normalizeSlot('header', {}, $scopedSlots, $slots) || props.headerHtml || stripTags(props.header)));\n } // Lead\n\n\n if (props.lead || hasNormalizedSlot('lead', $scopedSlots, $slots) || props.leadHtml) {\n childNodes.push(h(props.leadTag, {\n staticClass: 'lead'\n }, normalizeSlot('lead', {}, $scopedSlots, $slots) || props.leadHtml || stripTags(props.lead)));\n } // Default slot\n\n\n if (hasNormalizedSlot('default', $scopedSlots, $slots)) {\n childNodes.push(normalizeSlot('default', {}, $scopedSlots, $slots));\n } // If fluid, wrap content in a container/container-fluid\n\n\n if (props.fluid) {\n // Children become a child of a container\n childNodes = [h(Container, {\n props: {\n fluid: props.containerFluid\n }\n }, childNodes)];\n } // Return the jumbotron\n\n\n return h(props.tag, mergeData(data, {\n staticClass: 'jumbotron',\n class: (_class2 = {\n 'jumbotron-fluid': props.fluid\n }, _defineProperty(_class2, \"text-\".concat(props.textVariant), Boolean(props.textVariant)), _defineProperty(_class2, \"bg-\".concat(props.bgVariant), Boolean(props.bgVariant)), _defineProperty(_class2, \"border-\".concat(props.borderVariant), Boolean(props.borderVariant)), _defineProperty(_class2, \"border\", Boolean(props.borderVariant)), _class2)\n }), childNodes);\n }\n});","import BJumbotron from './jumbotron';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BJumbotron: BJumbotron\n};\nexport { BJumbotron };\nexport default {\n install: installFactory({\n components: components\n })\n};","import BLink from './link';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BLink: BLink\n};\nexport { BLink };\nexport default {\n install: installFactory({\n components: components\n })\n};","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; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { isString } from '../../utils/inspect';\nexport var props = {\n tag: {\n type: String,\n default: 'div'\n },\n flush: {\n type: Boolean,\n default: false\n },\n horizontal: {\n type: [Boolean, String],\n default: false\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: 'BListGroup',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var horizontal = props.horizontal === '' ? true : props.horizontal;\n horizontal = props.flush ? false : horizontal;\n var componentData = {\n staticClass: 'list-group',\n class: _defineProperty({\n 'list-group-flush': props.flush,\n 'list-group-horizontal': horizontal === true\n }, \"list-group-horizontal-\".concat(horizontal), isString(horizontal))\n };\n return h(props.tag, mergeData(data, componentData), children);\n }\n});","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport pluckProps from '../../utils/pluck-props';\nimport { arrayIncludes } from '../../utils/array';\nimport { getComponentConfig } from '../../utils/config';\nimport Link, { propsFactory as linkPropsFactory } from '../link/link';\nvar NAME = 'BListGroupItem';\nvar actionTags = ['a', 'router-link', 'button', 'b-link'];\nvar linkProps = linkPropsFactory();\ndelete linkProps.href.default;\ndelete linkProps.to.default;\nexport var props = _objectSpread({\n tag: {\n type: String,\n default: 'div'\n },\n action: {\n type: Boolean,\n default: null\n },\n button: {\n type: Boolean,\n default: null\n },\n variant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'variant');\n }\n }\n}, linkProps); // @vue/component\n\nexport default Vue.extend({\n name: NAME,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var tag = props.button ? 'button' : !props.href && !props.to ? props.tag : Link;\n var isAction = Boolean(props.href || props.to || props.action || props.button || arrayIncludes(actionTags, props.tag));\n var attrs = {};\n var itemProps = {};\n\n if (tag === 'button') {\n if (!data.attrs || !data.attrs.type) {\n // Add a type for button is one not provided in passed attributes\n attrs.type = 'button';\n }\n\n if (props.disabled) {\n // Set disabled attribute if button and disabled\n attrs.disabled = true;\n }\n } else {\n itemProps = pluckProps(linkProps, props);\n }\n\n var componentData = {\n attrs: attrs,\n props: itemProps,\n staticClass: 'list-group-item',\n class: (_class = {}, _defineProperty(_class, \"list-group-item-\".concat(props.variant), Boolean(props.variant)), _defineProperty(_class, 'list-group-item-action', isAction), _defineProperty(_class, \"active\", props.active), _defineProperty(_class, \"disabled\", props.disabled), _class)\n };\n return h(tag, mergeData(data, componentData), children);\n }\n});","import BListGroup from './list-group';\nimport BListGroupItem from './list-group-item';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BListGroup: BListGroup,\n BListGroupItem: BListGroupItem\n};\nexport { BListGroup, BListGroupItem };\nexport default {\n install: installFactory({\n components: components\n })\n};","import Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nexport var props = {\n tag: {\n type: String,\n default: 'div'\n }\n};\nexport default Vue.extend({\n name: 'BMediaBody',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, mergeData(data, {\n staticClass: 'media-body'\n }), children);\n }\n});","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; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nexport var props = {\n tag: {\n type: String,\n default: 'div'\n },\n verticalAlign: {\n type: String,\n default: 'top'\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: 'BMediaAside',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, mergeData(data, {\n staticClass: 'd-flex',\n class: _defineProperty({}, \"align-self-\".concat(props.verticalAlign), props.verticalAlign)\n }), children);\n }\n});","import Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport BMediaBody from './media-body';\nimport BMediaAside from './media-aside';\nimport { normalizeSlot } from '../../utils/normalize-slot';\nexport var props = {\n tag: {\n type: String,\n default: 'div'\n },\n rightAlign: {\n type: Boolean,\n default: false\n },\n verticalAlign: {\n type: String,\n default: 'top'\n },\n noBody: {\n type: Boolean,\n default: false\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: 'BMedia',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots,\n children = _ref.children;\n var childNodes = props.noBody ? children : [];\n\n if (!props.noBody) {\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n var $aside = normalizeSlot('aside', {}, $scopedSlots, $slots);\n var $default = normalizeSlot('default', {}, $scopedSlots, $slots);\n\n if ($aside && !props.rightAlign) {\n childNodes.push(h(BMediaAside, {\n staticClass: 'mr-3',\n props: {\n verticalAlign: props.verticalAlign\n }\n }, $aside));\n }\n\n childNodes.push(h(BMediaBody, {}, $default));\n\n if ($aside && props.rightAlign) {\n childNodes.push(h(BMediaAside, {\n staticClass: 'ml-3',\n props: {\n verticalAlign: props.verticalAlign\n }\n }, $aside));\n }\n }\n\n return h(props.tag, mergeData(data, {\n staticClass: 'media'\n }), childNodes);\n }\n});","import BMedia from './media';\nimport BMediaAside from './media-aside';\nimport BMediaBody from './media-body';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BMedia: BMedia,\n BMediaAside: BMediaAside,\n BMediaBody: BMediaBody\n};\nexport { BMedia, BMediaAside, BMediaBody };\nexport default {\n install: installFactory({\n components: components\n })\n};","import { setAttr, removeAttr } from '../../utils/dom';\nimport { bindTargets, unbindTargets } from '../../utils/target'; // Target listen types\n\nvar listenTypes = {\n click: true // Emitted show event for modal\n\n};\nvar EVENT_SHOW = 'bv::show::modal';\n\nvar setRole = function setRole(el, binding, vnode) {\n if (el.tagName !== 'BUTTON') {\n setAttr(el, 'role', 'button');\n }\n};\n/*\n * Export our directive\n */\n\n\nexport default {\n // eslint-disable-next-line no-shadow-restricted-names\n bind: function bind(el, binding, vnode) {\n bindTargets(vnode, binding, listenTypes, function (_ref) {\n var targets = _ref.targets,\n vnode = _ref.vnode;\n targets.forEach(function (target) {\n vnode.context.$root.$emit(EVENT_SHOW, target, vnode.elm);\n });\n }); // If element is not a button, we add `role=\"button\"` for accessibility\n\n setRole(el, binding, vnode);\n },\n updated: setRole,\n componentUpdated: setRole,\n unbind: function unbind(el, binding, vnode) {\n unbindTargets(vnode, binding, listenTypes); // If element is not a button, we add `role=\"button\"` for accessibility\n\n if (el.tagName !== 'BUTTON') {\n removeAttr(el, 'role', 'button');\n }\n }\n};","import BModal from './modal';\nimport BVModalPlugin from './helpers/bv-modal';\nimport VBModal from '../../directives/modal/modal';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BModal: BModal\n};\nvar directives = {\n VBModal: VBModal\n};\nvar plugins = {\n // $bvModal injection\n BVModalPlugin: BVModalPlugin\n};\nexport { BModal };\nexport default {\n install: installFactory({\n components: components,\n directives: directives,\n plugins: plugins\n })\n};","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; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge'; // -- Constants --\n\nvar DEPRECATED_MSG = 'Setting prop \"is-nav-bar\" is deprecated. Use the <b-navbar-nav> component instead.';\nexport var props = {\n tag: {\n type: String,\n default: 'ul'\n },\n fill: {\n type: Boolean,\n default: false\n },\n justified: {\n type: Boolean,\n default: false\n },\n align: {\n type: String,\n default: null\n },\n tabs: {\n type: Boolean,\n default: false\n },\n pills: {\n type: Boolean,\n default: false\n },\n vertical: {\n type: Boolean,\n default: false\n },\n small: {\n type: Boolean,\n default: false\n },\n isNavBar: {\n type: Boolean,\n default: false,\n // `deprecated` -> Don't use this prop\n // `deprecation` -> Refers to a change in prop usage\n deprecated: DEPRECATED_MSG\n } // -- Utils --\n\n};\n\nvar computeJustifyContent = function computeJustifyContent(value) {\n // Normalize value\n value = value === 'left' ? 'start' : value === 'right' ? 'end' : value;\n return \"justify-content-\".concat(value);\n}; // @vue/component\n\n\nexport default Vue.extend({\n name: 'BNav',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, mergeData(data, {\n class: (_class = {\n nav: !props.isNavBar,\n 'navbar-nav': props.isNavBar,\n 'nav-tabs': props.tabs && !props.isNavBar,\n 'nav-pills': props.pills && !props.isNavBar,\n 'flex-column': props.vertical && !props.isNavBar,\n 'nav-fill': !props.vertical && props.fill,\n 'nav-justified': !props.vertical && props.justified\n }, _defineProperty(_class, computeJustifyContent(props.align), !props.vertical && props.align), _defineProperty(_class, \"small\", props.small), _class)\n }), children);\n }\n});","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport BLink, { propsFactory as linkPropsFactory } from '../link/link';\nexport var props = linkPropsFactory(); // @vue/component\n\nexport default Vue.extend({\n name: 'BNavItem',\n functional: true,\n props: _objectSpread({}, props, {\n linkAttrs: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n linkClasses: {\n type: [String, Object, Array],\n default: null\n }\n }),\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n listeners = _ref.listeners,\n children = _ref.children;\n // We transfer the listeners to the link\n delete data.on;\n return h('li', mergeData(data, {\n staticClass: 'nav-item'\n }), [h(BLink, {\n staticClass: 'nav-link',\n class: props.linkClasses,\n attrs: props.linkAttrs,\n props: props,\n on: listeners\n }, children)]);\n }\n});","import Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nexport var props = {\n tag: {\n type: String,\n default: 'span'\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: 'BNavText',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, mergeData(data, {\n staticClass: 'navbar-text'\n }), children);\n }\n});","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport BForm, { props as BFormProps } from '../form/form';\nimport { omit } from '../../utils/object';\nexport var props = omit(BFormProps, ['inline']); // @vue/component\n\nexport default Vue.extend({\n name: 'BNavForm',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(BForm, mergeData(data, {\n props: _objectSpread({}, props, {\n inline: true\n })\n }), children);\n }\n});","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport Vue from '../../utils/vue';\nimport BLink from '../link/link';\nimport { props as BDropdownProps } from '../dropdown/dropdown';\nimport idMixin from '../../mixins/id';\nimport dropdownMixin from '../../mixins/dropdown';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport pluckProps from '../../utils/pluck-props';\nimport { htmlOrText } from '../../utils/html'; // -- Constants --\n\nexport var props = _objectSpread({}, pluckProps(['menuClass', 'toggleClass', 'noCaret', 'role'], BDropdownProps), {\n extraMenuClasses: {\n type: String,\n default: '',\n // `deprecated` -> Don't use this prop\n // `deprecation` -> Refers to a change in prop usage\n deprecated: 'Setting prop \"extra-menu-classes\" is deprecated. Use \"menu-class\" prop instead.'\n },\n extraToggleClasses: {\n type: String,\n default: '',\n // `deprecated` -> Don't use this prop\n // `deprecation` -> Refers to a change in prop usage\n deprecated: 'Setting prop \"extra-toggle-classes\" is deprecated. Use \"toggle-class\" prop instead.'\n } // @vue/component\n\n});\nexport default Vue.extend({\n name: 'BNavItemDropdown',\n mixins: [idMixin, dropdownMixin, normalizeSlotMixin],\n props: props,\n computed: {\n isNav: function isNav() {\n // Signal to dropdown mixin that we are in a navbar\n return true;\n },\n dropdownClasses: function dropdownClasses() {\n return [this.directionClass, {\n show: this.visible\n }];\n },\n menuClasses: function menuClasses() {\n return [this.extraMenuClasses, // Deprecated\n this.menuClass, {\n 'dropdown-menu-right': this.right,\n show: this.visible\n }];\n },\n toggleClasses: function toggleClasses() {\n return [this.extraToggleClasses, // Deprecated\n this.toggleClass, {\n disabled: this.disabled,\n 'dropdown-toggle-no-caret': this.noCaret\n }];\n }\n },\n render: function render(h) {\n var button = h(BLink, {\n ref: 'toggle',\n staticClass: 'nav-link dropdown-toggle',\n class: this.toggleClasses,\n props: {\n href: '#',\n disabled: this.disabled\n },\n attrs: {\n id: this.safeId('_BV_button_'),\n 'aria-haspopup': 'true',\n 'aria-expanded': String(this.visible)\n },\n on: {\n click: this.toggle,\n keydown: this.toggle // space, enter, down\n\n }\n }, [this.$slots['button-content'] || this.$slots.text || h('span', {\n domProps: htmlOrText(this.html, this.text)\n })]);\n var menu = h('ul', {\n staticClass: 'dropdown-menu',\n class: this.menuClasses,\n ref: 'menu',\n attrs: {\n tabindex: '-1',\n 'aria-labelledby': this.safeId('_BV_button_')\n },\n on: {\n keydown: this.onKeydown // up, down, esc\n\n }\n }, [this.normalizeSlot('default', {\n hide: this.hide\n })]);\n return h('li', {\n staticClass: 'nav-item b-nav-dropdown dropdown',\n class: this.dropdownClasses,\n attrs: {\n id: this.safeId()\n }\n }, [button, menu]);\n }\n});","import BNav from './nav';\nimport BNavItem from './nav-item';\nimport BNavText from './nav-text';\nimport BNavForm from './nav-form';\nimport BNavItemDropdown from './nav-item-dropdown';\nimport DropdownPlugin from '../dropdown';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BNav: BNav,\n BNavItem: BNavItem,\n BNavText: BNavText,\n BNavForm: BNavForm,\n BNavItemDropdown: BNavItemDropdown,\n BNavItemDd: BNavItemDropdown,\n BNavDropdown: BNavItemDropdown,\n BNavDd: BNavItemDropdown\n};\nvar plugins = {\n DropdownPlugin: DropdownPlugin\n};\nexport { BNav, BNavItem, BNavText, BNavForm, BNavItemDropdown };\nexport default {\n install: installFactory({\n components: components,\n plugins: plugins\n })\n};","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; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { getComponentConfig, getBreakpoints } from '../../utils/config';\nimport { isString } from '../../utils/inspect';\nvar NAME = 'BNavbar';\nexport var props = {\n tag: {\n type: String,\n default: 'nav'\n },\n type: {\n type: String,\n default: 'light'\n },\n variant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'variant');\n }\n },\n toggleable: {\n type: [Boolean, String],\n default: false\n },\n fixed: {\n type: String\n },\n sticky: {\n type: Boolean,\n default: false\n },\n print: {\n type: Boolean,\n default: false\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: NAME,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var breakpoint = '';\n var xs = getBreakpoints()[0];\n\n if (props.toggleable && isString(props.toggleable) && props.toggleable !== xs) {\n breakpoint = \"navbar-expand-\".concat(props.toggleable);\n } else if (props.toggleable === false) {\n breakpoint = 'navbar-expand';\n }\n\n return h(props.tag, mergeData(data, {\n staticClass: 'navbar',\n class: (_class = {\n 'd-print': props.print,\n 'sticky-top': props.sticky\n }, _defineProperty(_class, \"navbar-\".concat(props.type), Boolean(props.type)), _defineProperty(_class, \"bg-\".concat(props.variant), Boolean(props.variant)), _defineProperty(_class, \"fixed-\".concat(props.fixed), Boolean(props.fixed)), _defineProperty(_class, \"\".concat(breakpoint), Boolean(breakpoint)), _class),\n attrs: {\n role: props.tag === 'nav' ? null : 'navigation'\n }\n }), children);\n }\n});","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; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport pluckProps from '../../utils/pluck-props';\nimport { props as BNavProps } from '../nav/nav'; // -- Constants --\n\nexport var props = pluckProps(['tag', 'fill', 'justified', 'align', 'small'], BNavProps); // -- Utils --\n\nvar computeJustifyContent = function computeJustifyContent(value) {\n // Normalize value\n value = value === 'left' ? 'start' : value === 'right' ? 'end' : value;\n return \"justify-content-\".concat(value);\n}; // @vue/component\n\n\nexport default Vue.extend({\n name: 'BNavbarNav',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, mergeData(data, {\n staticClass: 'navbar-nav',\n class: (_class = {\n 'nav-fill': props.fill,\n 'nav-justified': props.justified\n }, _defineProperty(_class, computeJustifyContent(props.align), props.align), _defineProperty(_class, \"small\", props.small), _class)\n }), children);\n }\n});","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport Vue from '../../utils/vue';\nimport BLink, { propsFactory } from '../link/link';\nimport { mergeData } from 'vue-functional-data-merge';\nimport pluckProps from '../../utils/pluck-props';\nvar linkProps = propsFactory();\nlinkProps.href.default = undefined;\nlinkProps.to.default = undefined;\nexport var props = _objectSpread({}, linkProps, {\n tag: {\n type: String,\n default: 'div'\n } // @vue/component\n\n});\nexport default Vue.extend({\n name: 'BNavbarBrand',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var isLink = Boolean(props.to || props.href);\n var tag = isLink ? BLink : props.tag;\n return h(tag, mergeData(data, {\n staticClass: 'navbar-brand',\n props: isLink ? pluckProps(linkProps, props) : {}\n }), children);\n }\n});","import Vue from '../../utils/vue';\nimport listenOnRootMixin from '../../mixins/listen-on-root';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport { getComponentConfig } from '../../utils/config';\nvar NAME = 'BNavbarToggle'; // Events we emit on $root\n\nvar EVENT_TOGGLE = 'bv::toggle::collapse'; // Events we listen to on $root\n\nvar EVENT_STATE = 'bv::collapse::state'; // This private event is NOT to be documented as people should not be using it.\n\nvar EVENT_STATE_SYNC = 'bv::collapse::sync::state'; // @vue/component\n\nexport default Vue.extend({\n name: NAME,\n mixins: [listenOnRootMixin, normalizeSlotMixin],\n props: {\n label: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'label');\n }\n },\n target: {\n type: String,\n required: true\n }\n },\n data: function data() {\n return {\n toggleState: false\n };\n },\n created: function created() {\n this.listenOnRoot(EVENT_STATE, this.handleStateEvt);\n this.listenOnRoot(EVENT_STATE_SYNC, this.handleStateEvt);\n },\n methods: {\n onClick: function onClick(evt) {\n this.$emit('click', evt);\n\n if (!evt.defaultPrevented) {\n this.$root.$emit(EVENT_TOGGLE, this.target);\n }\n },\n handleStateEvt: function handleStateEvt(id, state) {\n if (id === this.target) {\n this.toggleState = state;\n }\n }\n },\n render: function render(h) {\n return h('button', {\n class: ['navbar-toggler'],\n attrs: {\n type: 'button',\n 'aria-label': this.label,\n 'aria-controls': this.target,\n 'aria-expanded': this.toggleState ? 'true' : 'false'\n },\n on: {\n click: this.onClick\n }\n }, [this.normalizeSlot('default') || h('span', {\n class: ['navbar-toggler-icon']\n })]);\n }\n});","import BNavbar from './navbar';\nimport BNavbarNav from './navbar-nav';\nimport BNavbarBrand from './navbar-brand';\nimport BNavbarToggle from './navbar-toggle';\nimport NavPlugin from '../nav';\nimport CollapsePlugin from '../collapse';\nimport DropdownPlugin from '../dropdown';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BNavbar: BNavbar,\n BNavbarNav: BNavbarNav,\n BNavbarBrand: BNavbarBrand,\n BNavbarToggle: BNavbarToggle,\n BNavToggle: BNavbarToggle\n};\nvar plugins = {\n NavPlugin: NavPlugin,\n CollapsePlugin: CollapsePlugin,\n DropdownPlugin: DropdownPlugin\n};\nexport { BNavbar, BNavbarNav, BNavbarBrand, BNavbarToggle };\nexport default {\n install: installFactory({\n components: components,\n plugins: plugins\n })\n};","/**\n * @param {number} length\n * @return {Array}\n */\nvar range = function range(length) {\n return Array.apply(null, {\n length: length\n });\n};\n\nexport default range;","/*\n * Common props, computed, data, render function, and methods\n * for <b-pagination> and <b-pagination-nav>\n */\nimport KeyCodes from '../utils/key-codes';\nimport range from '../utils/range';\nimport toString from '../utils/to-string';\nimport warn from '../utils/warn';\nimport { isFunction, isNull } from '../utils/inspect';\nimport { isVisible, isDisabled, selectAll, getAttr } from '../utils/dom';\nimport normalizeSlotMixin from '../mixins/normalize-slot';\nimport BLink from '../components/link/link'; // Threshold of limit size when we start/stop showing ellipsis\n\nvar ELLIPSIS_THRESHOLD = 3; // Default # of buttons limit\n\nvar DEFAULT_LIMIT = 5; // Make an array of N to N+X\n\nfunction makePageArray(startNum, numPages) {\n return range(numPages).map(function (value, index) {\n return {\n number: index + startNum,\n classes: null\n };\n });\n} // Sanitize the provided Limit value (converting to a number)\n\n\nfunction sanitizeLimit(value) {\n var limit = parseInt(value, 10) || 1;\n return limit < 1 ? DEFAULT_LIMIT : limit;\n} // Sanitize the provided current page number (converting to a number)\n\n\nfunction sanitizeCurPage(value, numPages) {\n var page = parseInt(value, 10) || 1;\n return page > numPages ? numPages : page < 1 ? 1 : page;\n} // Links don't normally respond to SPACE, so we add that functionality via this handler\n\n\nfunction onSpaceKey(evt) {\n if (evt.keyCode === KeyCodes.SPACE) {\n evt.preventDefault(); // Stop page from scrolling\n\n evt.stopImmediatePropagation();\n evt.stopPropagation(); // Trigger the click event on the link\n\n evt.currentTarget.click();\n return false;\n }\n} // Props object\n\n\nvar props = {\n disabled: {\n type: Boolean,\n default: false\n },\n value: {\n type: [Number, String],\n default: null,\n validator: function validator(value) {\n var num = parseInt(value, 10);\n /* istanbul ignore if */\n\n if (!isNull(value) && (isNaN(num) || num < 1)) {\n warn('pagination: v-model value must be a number greater than 0');\n return false;\n }\n\n return true;\n }\n },\n limit: {\n type: [Number, String],\n default: DEFAULT_LIMIT,\n validator: function validator(value) {\n var num = parseInt(value, 10);\n /* istanbul ignore if */\n\n if (isNaN(num) || num < 1) {\n warn('pagination: prop \"limit\" must be a number greater than 0');\n return false;\n }\n\n return true;\n }\n },\n size: {\n type: String,\n default: 'md'\n },\n align: {\n type: String,\n default: 'left'\n },\n hideGotoEndButtons: {\n type: Boolean,\n default: false\n },\n ariaLabel: {\n type: String,\n default: 'Pagination'\n },\n labelFirstPage: {\n type: String,\n default: 'Go to first page'\n },\n firstText: {\n type: String,\n default: \"\\xAB\" // '«'\n\n },\n labelPrevPage: {\n type: String,\n default: 'Go to previous page'\n },\n prevText: {\n type: String,\n default: \"\\u2039\" // '‹'\n\n },\n labelNextPage: {\n type: String,\n default: 'Go to next page'\n },\n nextText: {\n type: String,\n default: \"\\u203A\" // '›'\n\n },\n labelLastPage: {\n type: String,\n default: 'Go to last page'\n },\n lastText: {\n type: String,\n default: \"\\xBB\" // '»'\n\n },\n labelPage: {\n type: [String, Function],\n default: 'Go to page'\n },\n hideEllipsis: {\n type: Boolean,\n default: false\n },\n ellipsisText: {\n type: String,\n default: \"\\u2026\" // '…'\n\n } // @vue/component\n\n};\nexport default {\n mixins: [normalizeSlotMixin],\n model: {\n prop: 'value',\n event: 'input'\n },\n props: props,\n data: function data() {\n var curr = parseInt(this.value, 10);\n return {\n // -1 signifies no page initially selected\n currentPage: curr > 0 ? curr : -1,\n localNumPages: 1,\n localLimit: DEFAULT_LIMIT\n };\n },\n computed: {\n btnSize: function btnSize() {\n return this.size ? \"pagination-\".concat(this.size) : '';\n },\n alignment: function alignment() {\n var align = this.align;\n\n if (align === 'center') {\n return 'justify-content-center';\n } else if (align === 'end' || align === 'right') {\n return 'justify-content-end';\n } else if (align === 'fill') {\n // The page-items will also have 'flex-fill' added.\n // We ad text centering to make the button appearance better in fill mode.\n return 'text-center';\n }\n\n return '';\n },\n computedCurrentPage: function computedCurrentPage() {\n return sanitizeCurPage(this.currentPage, this.localNumPages);\n },\n paginationParams: function paginationParams() {\n // Determine if we should show the the ellipsis\n var limit = this.limit;\n var numPages = this.localNumPages;\n var curPage = this.computedCurrentPage;\n var hideEllipsis = this.hideEllipsis;\n var showFirstDots = false;\n var showLastDots = false;\n var numLinks = limit;\n var startNum = 1;\n\n if (numPages <= limit) {\n // Special Case: Less pages available than the limit of displayed pages\n numLinks = numPages;\n } else if (curPage < limit - 1 && limit > ELLIPSIS_THRESHOLD) {\n // We are near the beginning of the page list\n if (!hideEllipsis) {\n showLastDots = true;\n numLinks = limit - 1;\n }\n } else if (numPages - curPage + 2 < limit && limit > ELLIPSIS_THRESHOLD) {\n // We are near the end of the list\n if (!hideEllipsis) {\n numLinks = limit - 1;\n showFirstDots = true;\n }\n\n startNum = numPages - numLinks + 1;\n } else {\n // We are somewhere in the middle of the page list\n if (limit > ELLIPSIS_THRESHOLD && !hideEllipsis) {\n numLinks = limit - 2;\n showFirstDots = showLastDots = true;\n }\n\n startNum = curPage - Math.floor(numLinks / 2);\n } // Sanity checks\n\n\n if (startNum < 1) {\n /* istanbul ignore next */\n startNum = 1;\n } else if (startNum > numPages - numLinks) {\n startNum = numPages - numLinks + 1;\n }\n\n return {\n showFirstDots: showFirstDots,\n showLastDots: showLastDots,\n numLinks: numLinks,\n startNum: startNum\n };\n },\n pageList: function pageList() {\n // Generates the pageList array\n var _this$paginationParam = this.paginationParams,\n numLinks = _this$paginationParam.numLinks,\n startNum = _this$paginationParam.startNum;\n var currPage = this.computedCurrentPage; // Generate list of page numbers\n\n var pages = makePageArray(startNum, numLinks); // We limit to a total of 3 page buttons on XS screens\n // So add classes to page links to hide them for XS breakpoint\n // Note: Ellipsis will also be hidden on XS screens\n // TODO: Make this visual limit configurable based on breakpoint(s)\n\n if (pages.length > 3) {\n var idx = currPage - startNum; // THe following is a bootstrap-vue custom utility class\n\n var classes = 'bv-d-xs-down-none';\n\n if (idx === 0) {\n // Keep leftmost 3 buttons visible when current page is first page\n for (var i = 3; i < pages.length; i++) {\n pages[i].classes = classes;\n }\n } else if (idx === pages.length - 1) {\n // Keep rightmost 3 buttons visible when current page is last page\n for (var _i = 0; _i < pages.length - 3; _i++) {\n pages[_i].classes = classes;\n }\n } else {\n // Hide all except current page, current page - 1 and current page + 1\n for (var _i2 = 0; _i2 < idx - 1; _i2++) {\n // hide some left button(s)\n pages[_i2].classes = classes;\n }\n\n for (var _i3 = pages.length - 1; _i3 > idx + 1; _i3--) {\n // hide some right button(s)\n pages[_i3].classes = classes;\n }\n }\n }\n\n return pages;\n }\n },\n watch: {\n value: function value(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.currentPage = sanitizeCurPage(newValue, this.localNumPages);\n }\n },\n currentPage: function currentPage(newValue, oldValue) {\n if (newValue !== oldValue) {\n // Emit null if no page selected\n this.$emit('input', newValue > 0 ? newValue : null);\n }\n },\n limit: function limit(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.localLimit = sanitizeLimit(newValue);\n }\n }\n },\n created: function created() {\n var _this = this;\n\n // Set our default values in data\n this.localLimit = sanitizeLimit(this.limit);\n this.$nextTick(function () {\n // Sanity check\n _this.currentPage = _this.currentPage > _this.localNumPages ? _this.localNumPages : _this.currentPage;\n });\n },\n methods: {\n getButtons: function getButtons() {\n // Return only buttons that are visible\n return selectAll('a.page-link', this.$el).filter(function (btn) {\n return isVisible(btn);\n });\n },\n setBtnFocus: function setBtnFocus(btn) {\n btn.focus();\n },\n focusCurrent: function focusCurrent() {\n var _this2 = this;\n\n // We do this in next tick to ensure buttons have finished rendering\n this.$nextTick(function () {\n var btn = _this2.getButtons().find(function (el) {\n return parseInt(getAttr(el, 'aria-posinset'), 10) === _this2.computedCurrentPage;\n });\n\n if (btn && btn.focus) {\n _this2.setBtnFocus(btn);\n } else {\n // Fallback if current page is not in button list\n _this2.focusFirst();\n }\n });\n },\n focusFirst: function focusFirst() {\n var _this3 = this;\n\n // We do this in next tick to ensure buttons have finished rendering\n this.$nextTick(function () {\n var btn = _this3.getButtons().find(function (el) {\n return !isDisabled(el);\n });\n\n if (btn && btn.focus && btn !== document.activeElement) {\n _this3.setBtnFocus(btn);\n }\n });\n },\n focusLast: function focusLast() {\n var _this4 = this;\n\n // We do this in next tick to ensure buttons have finished rendering\n this.$nextTick(function () {\n var btn = _this4.getButtons().reverse().find(function (el) {\n return !isDisabled(el);\n });\n\n if (btn && btn.focus && btn !== document.activeElement) {\n _this4.setBtnFocus(btn);\n }\n });\n },\n focusPrev: function focusPrev() {\n var _this5 = this;\n\n // We do this in next tick to ensure buttons have finished rendering\n this.$nextTick(function () {\n var buttons = _this5.getButtons();\n\n var idx = buttons.indexOf(document.activeElement);\n\n if (idx > 0 && !isDisabled(buttons[idx - 1]) && buttons[idx - 1].focus) {\n _this5.setBtnFocus(buttons[idx - 1]);\n }\n });\n },\n focusNext: function focusNext() {\n var _this6 = this;\n\n // We do this in next tick to ensure buttons have finished rendering\n this.$nextTick(function () {\n var buttons = _this6.getButtons();\n\n var idx = buttons.indexOf(document.activeElement);\n var cnt = buttons.length - 1;\n\n if (idx < cnt && !isDisabled(buttons[idx + 1]) && buttons[idx + 1].focus) {\n _this6.setBtnFocus(buttons[idx + 1]);\n }\n });\n }\n },\n render: function render(h) {\n var _this7 = this;\n\n var buttons = [];\n var numberOfPages = this.localNumPages;\n var disabled = this.disabled;\n var _this$paginationParam2 = this.paginationParams,\n showFirstDots = _this$paginationParam2.showFirstDots,\n showLastDots = _this$paginationParam2.showLastDots;\n var currPage = this.computedCurrentPage;\n var fill = this.align === 'fill'; // Helper function and flag\n\n var isActivePage = function isActivePage(pageNum) {\n return pageNum === currPage;\n };\n\n var noCurrPage = this.currentPage < 1; // Factory function for prev/next/first/last buttons\n\n var makeEndBtn = function makeEndBtn(linkTo, ariaLabel, btnSlot, btnText, pageTest, key) {\n var isDisabled = disabled || isActivePage(pageTest) || noCurrPage || linkTo < 1 || linkTo > numberOfPages;\n var pageNum = linkTo < 1 ? 1 : linkTo > numberOfPages ? numberOfPages : linkTo;\n var scope = {\n disabled: isDisabled,\n page: pageNum,\n index: pageNum - 1\n };\n var btnContent = _this7.normalizeSlot(btnSlot, scope) || toString(btnText) || h(false);\n var inner = h(isDisabled ? 'span' : BLink, {\n staticClass: 'page-link',\n props: isDisabled ? {} : _this7.linkProps(linkTo),\n attrs: {\n role: 'menuitem',\n tabindex: isDisabled ? null : '-1',\n 'aria-label': ariaLabel,\n 'aria-controls': _this7.ariaControls || null,\n 'aria-disabled': isDisabled ? 'true' : null\n },\n on: isDisabled ? {} : {\n click: function click(evt) {\n _this7.onClick(linkTo, evt);\n },\n keydown: onSpaceKey\n }\n }, [btnContent]);\n return h('li', {\n key: key,\n staticClass: 'page-item',\n class: {\n disabled: isDisabled,\n 'flex-fill': fill\n },\n attrs: {\n role: 'none presentation',\n 'aria-hidden': isDisabled ? 'true' : null\n }\n }, [inner]);\n }; // Ellipsis factory\n\n\n var makeEllipsis = function makeEllipsis(isLast) {\n return h('li', {\n key: \"ellipsis-\".concat(isLast ? 'last' : 'first'),\n staticClass: 'page-item',\n class: ['disabled', 'bv-d-xs-down-none', fill ? 'flex-fill' : ''],\n attrs: {\n role: 'separator'\n }\n }, [h('span', {\n staticClass: 'page-link'\n }, [_this7.normalizeSlot('ellipsis-text', {}) || toString(_this7.ellipsisText) || h(false)])]);\n }; // Goto First Page button bookend\n\n\n buttons.push(this.hideGotoEndButtons ? h(false) : makeEndBtn(1, this.labelFirstPage, 'first-text', this.firstText, 1, 'bookend-goto-first')); // Goto Previous page button bookend\n\n buttons.push(makeEndBtn(currPage - 1, this.labelPrevPage, 'prev-text', this.prevText, 1, 'bookend-goto-prev')); // First Ellipsis Bookend\n\n buttons.push(showFirstDots ? makeEllipsis(false) : h(false)); // Individual Page links\n\n this.pageList.forEach(function (page, idx) {\n var active = isActivePage(page.number) && !noCurrPage; // Active page will have tabindex of 0, or if no current page and first page button\n\n var tabIndex = disabled ? null : active || noCurrPage && idx === 0 ? '0' : '-1';\n var attrs = {\n role: 'menuitemradio',\n 'aria-disabled': disabled ? 'true' : null,\n 'aria-controls': _this7.ariaControls || null,\n 'aria-label': isFunction(_this7.labelPage) ? _this7.labelPage(page.number) : \"\".concat(_this7.labelPage, \" \").concat(page.number),\n 'aria-checked': active ? 'true' : 'false',\n 'aria-posinset': page.number,\n 'aria-setsize': numberOfPages,\n // ARIA \"roving tabindex\" method\n tabindex: tabIndex\n };\n var btnContent = toString(_this7.makePage(page.number));\n var scope = {\n page: page.number,\n index: page.number - 1,\n content: btnContent,\n active: active,\n disabled: disabled\n };\n var inner = h(disabled ? 'span' : BLink, {\n props: disabled ? {} : _this7.linkProps(page.number),\n staticClass: 'page-link',\n attrs: attrs,\n on: disabled ? {} : {\n click: function click(evt) {\n _this7.onClick(page.number, evt);\n },\n keydown: onSpaceKey\n }\n }, [_this7.normalizeSlot('page', scope) || btnContent]);\n buttons.push(h('li', {\n key: \"page-\".concat(page.number),\n staticClass: 'page-item',\n class: [{\n disabled: disabled,\n active: active,\n 'flex-fill': fill\n }, page.classes],\n attrs: {\n role: 'none presentation'\n }\n }, [inner]));\n }); // Last Ellipsis Bookend\n\n buttons.push(showLastDots ? makeEllipsis(true) : h(false)); // Goto Next page button bookend\n\n buttons.push(makeEndBtn(currPage + 1, this.labelNextPage, 'next-text', this.nextText, numberOfPages, 'bookend-goto-next')); // Goto Last Page button bookend\n\n buttons.push(this.hideGotoEndButtons ? h(false) : makeEndBtn(numberOfPages, this.labelLastPage, 'last-text', this.lastText, numberOfPages, 'bookend-goto-last')); // Assemble the pagination buttons\n\n var pagination = h('ul', {\n ref: 'ul',\n staticClass: 'pagination',\n class: ['b-pagination', this.btnSize, this.alignment],\n attrs: {\n role: 'menubar',\n 'aria-disabled': disabled ? 'true' : 'false',\n 'aria-label': this.ariaLabel || null\n },\n on: {\n keydown: function keydown(evt) {\n var keyCode = evt.keyCode;\n var shift = evt.shiftKey;\n\n if (keyCode === KeyCodes.LEFT) {\n evt.preventDefault();\n shift ? _this7.focusFirst() : _this7.focusPrev();\n } else if (keyCode === KeyCodes.RIGHT) {\n evt.preventDefault();\n shift ? _this7.focusLast() : _this7.focusNext();\n }\n }\n }\n }, buttons); // if we are pagination-nav, wrap in '<nav>' wrapper\n\n if (this.isNav) {\n return h('nav', {\n attrs: {\n 'aria-disabled': disabled ? 'true' : null,\n 'aria-hidden': disabled ? 'true' : 'false'\n }\n }, [pagination]);\n } else {\n return pagination;\n }\n }\n};","import Vue from '../../utils/vue';\nimport paginationMixin from '../../mixins/pagination';\nimport { isVisible } from '../../utils/dom';\nvar DEFAULT_PER_PAGE = 20;\nvar DEFAULT_TOTAL_ROWS = 0;\n\nfunction sanitizePerPage(value) {\n var perPage = parseInt(value, 10) || DEFAULT_PER_PAGE;\n return perPage < 1 ? 1 : perPage;\n}\n\nfunction sanitizeTotalRows(value) {\n var totalRows = parseInt(value, 10) || DEFAULT_TOTAL_ROWS;\n return totalRows < 0 ? 0 : totalRows;\n}\n\nvar props = {\n perPage: {\n type: [Number, String],\n default: DEFAULT_PER_PAGE\n },\n totalRows: {\n type: [Number, String],\n default: DEFAULT_TOTAL_ROWS\n },\n ariaControls: {\n type: String,\n default: null\n } // Our render function is brought in from the pagination mixin\n // @vue/component\n\n};\nexport default Vue.extend({\n name: 'BPagination',\n mixins: [paginationMixin],\n props: props,\n computed: {\n numberOfPages: function numberOfPages() {\n var result = Math.ceil(sanitizeTotalRows(this.totalRows) / sanitizePerPage(this.perPage));\n return result < 1 ? 1 : result;\n }\n },\n watch: {\n numberOfPages: function numberOfPages(newVal) {\n if (newVal === this.localNumPages) {\n /* istanbul ignore next */\n return;\n }\n\n this.localNumPages = newVal;\n this.currentPage = 1;\n }\n },\n created: function created() {\n var _this = this;\n\n // Set the initial page count\n this.localNumPages = this.numberOfPages; // Set the initial page value\n\n var curr = parseInt(this.value, 10) || 0;\n\n if (curr > 0) {\n this.currentPage = curr;\n } else {\n this.$nextTick(function () {\n // If this value parses to NaN or a value less than 1\n // Trigger an initial emit of 'null' if no page specified\n _this.currentPage = 0;\n });\n }\n },\n mounted: function mounted() {\n // Set the initial page count\n this.localNumPages = this.numberOfPages;\n },\n methods: {\n // These methods are used by the render function\n onClick: function onClick(num, evt) {\n var _this2 = this;\n\n // Handle edge cases where number of pages has changed (i.e. if perPage changes)\n // This should normally not happen, but just in case.\n if (num > this.numberOfPages) {\n /* istanbul ignore next */\n num = this.numberOfPages;\n } else if (num < 1) {\n /* istanbul ignore next */\n num = 1;\n } // Update the v-model\n\n\n this.currentPage = num; // Emit event triggered by user interaction\n\n this.$emit('change', this.currentPage);\n this.$nextTick(function () {\n // Keep the current button focused if possible\n var target = evt.target;\n\n if (isVisible(target) && _this2.$el.contains(target) && target.focus) {\n target.focus();\n } else {\n _this2.focusCurrent();\n }\n });\n },\n makePage: function makePage(pageNum) {\n return pageNum;\n },\n linkProps: function linkProps(pageNum) {\n // Always '#' for pagination component\n return {\n href: '#'\n };\n }\n }\n});","import BPagination from './pagination';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BPagination: BPagination\n};\nexport { BPagination };\nexport default {\n install: installFactory({\n components: components\n })\n};","import Vue from '../../utils/vue';\nimport looseEqual from '../../utils/loose-equal';\nimport toString from '../../utils/to-string';\nimport warn from '../../utils/warn';\nimport { requestAF } from '../../utils/dom';\nimport { isBrowser } from '../../utils/env';\nimport { isArray, isUndefined, isFunction, isObject } from '../../utils/inspect';\nimport { computeHref, parseQuery } from '../../utils/router';\nimport paginationMixin from '../../mixins/pagination'; // Props object\n\nvar props = {\n // pagination-nav specific props\n numberOfPages: {\n type: [Number, String],\n default: 1,\n validator: function validator(value) {\n var num = parseInt(value, 10);\n /* istanbul ignore if */\n\n if (isNaN(num) || num < 1) {\n warn('b-pagination: prop \"number-of-pages\" must be a number greater than 0');\n return false;\n }\n\n return true;\n }\n },\n baseUrl: {\n type: String,\n default: '/'\n },\n useRouter: {\n type: Boolean,\n default: false\n },\n linkGen: {\n type: Function,\n default: null\n },\n pageGen: {\n type: Function,\n default: null\n },\n pages: {\n // Optional array of page links\n type: Array,\n default: null\n },\n noPageDetect: {\n // Disable auto page number detection if true\n type: Boolean,\n default: false\n },\n // router-link specific props\n activeClass: {\n type: String // default: undefined\n\n },\n exact: {\n type: Boolean,\n default: false\n },\n exactActiveClass: {\n type: String // default: undefined\n\n },\n // nuxt-link specific prop(s)\n noPrefetch: {\n type: Boolean,\n default: false\n } // TODO: move this to an instance method in pagination mixin\n\n};\n\nvar sanitizeNumPages = function sanitizeNumPages(value) {\n var num = parseInt(value, 10) || 1;\n return num < 1 ? 1 : num;\n}; // Our render function is brought in via the pagination mixin\n// @vue/component\n\n\nexport default Vue.extend({\n name: 'BPaginationNav',\n mixins: [paginationMixin],\n props: props,\n computed: {\n // Used by render function to trigger wrapping in '<nav>' element\n isNav: function isNav() {\n return true;\n },\n computedValue: function computedValue() {\n // Returns the value prop as a number or `null` if undefined or < 1\n var val = parseInt(this.value, 10);\n return isNaN(val) || val < 1 ? null : val;\n }\n },\n watch: {\n numberOfPages: function numberOfPages(newVal, oldVal) {\n var _this = this;\n\n this.$nextTick(function () {\n _this.setNumPages();\n });\n },\n pages: function pages(newVal, oldVal) {\n var _this2 = this;\n\n this.$nextTick(function () {\n _this2.setNumPages();\n });\n }\n },\n created: function created() {\n var _this3 = this;\n\n this.setNumPages(); // For SSR, assuming a page URL can be detected\n\n this.$nextTick(function () {\n _this3.guessCurrentPage();\n });\n },\n mounted: function mounted() {\n var _this4 = this;\n\n if (this.$router) {\n // We only add the watcher if vue router is detected\n this.$watch('$route', function (to, from) {\n _this4.$nextTick(function () {\n requestAF(function () {\n _this4.guessCurrentPage();\n });\n });\n });\n }\n },\n methods: {\n setNumPages: function setNumPages() {\n if (isArray(this.pages) && this.pages.length > 0) {\n this.localNumPages = this.pages.length;\n } else {\n this.localNumPages = sanitizeNumPages(this.numberOfPages);\n }\n },\n onClick: function onClick(pageNum, evt) {\n var _this5 = this;\n\n // Dont do anything if clicking the current active page\n if (pageNum === this.currentPage) {\n return;\n }\n\n requestAF(function () {\n // Update the v-model\n // Done in in requestAF() to allow browser to complete the\n // native browser click handling of a link\n _this5.currentPage = pageNum;\n\n _this5.$emit('change', pageNum);\n });\n this.$nextTick(function () {\n // Done in a nextTick() to ensure rendering complete\n try {\n // Emulate native link click page reloading behaviour by blurring the\n // paginator and returning focus to the document\n var target = evt.currentTarget || evt.target;\n target.blur();\n } catch (e) {}\n });\n },\n getPageInfo: function getPageInfo(pageNum) {\n if (!isArray(this.pages) || this.pages.length === 0 || isUndefined(this.pages[pageNum - 1])) {\n var link = \"\".concat(this.baseUrl).concat(pageNum);\n return {\n link: this.useRouter ? {\n path: link\n } : link,\n text: toString(pageNum)\n };\n }\n\n var info = this.pages[pageNum - 1];\n\n if (isObject(info)) {\n var _link = info.link;\n return {\n // Normalize link for router use\n link: isObject(_link) ? _link : this.useRouter ? {\n path: _link\n } : _link,\n // Make sure text has a value\n text: toString(info.text || pageNum)\n };\n } else {\n return {\n link: toString(info),\n text: toString(pageNum)\n };\n }\n },\n makePage: function makePage(pageNum) {\n var info = this.getPageInfo(pageNum);\n\n if (this.pageGen && isFunction(this.pageGen)) {\n return this.pageGen(pageNum, info);\n }\n\n return info.text;\n },\n makeLink: function makeLink(pageNum) {\n var info = this.getPageInfo(pageNum);\n\n if (this.linkGen && isFunction(this.linkGen)) {\n return this.linkGen(pageNum, info);\n }\n\n return info.link;\n },\n linkProps: function linkProps(pageNum) {\n var link = this.makeLink(pageNum);\n var props = {\n target: this.target || null,\n rel: this.rel || null,\n disabled: this.disabled,\n // The following props are only used if BLink detects router\n exact: this.exact,\n activeClass: this.activeClass,\n exactActiveClass: this.exactActiveClass,\n append: this.append,\n replace: this.replace,\n // nuxt-link specific prop\n noPrefetch: this.noPrefetch\n };\n\n if (this.useRouter || isObject(link)) {\n props.to = link;\n } else {\n props.href = link;\n }\n\n return props;\n },\n resolveLink: function resolveLink() {\n var to = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n // Given a to (or href string), convert to normalized route-like structure\n // Works only client side!!\n var link;\n\n try {\n // Convert the `to` to a HREF via a temporary `a` tag\n link = document.createElement('a');\n link.href = computeHref({\n to: to\n }, 'a', '/', '/'); // We need to add the anchor to the document to make sure the\n // `pathname` is correctly detected in any browser (i.e. IE)\n\n document.body.appendChild(link); // Once href is assigned, the link will be normalized to the full URL bits\n\n var _link2 = link,\n pathname = _link2.pathname,\n hash = _link2.hash,\n search = _link2.search; // Remove link from document\n\n document.body.removeChild(link); // Return the location in a route-like object\n\n return {\n path: pathname,\n hash: hash,\n query: parseQuery(search)\n };\n } catch (e) {\n /* istanbul ignore next */\n try {\n link && link.parentNode && link.parentNode.removeChild(link);\n } catch (e) {}\n /* istanbul ignore next */\n\n\n return {};\n }\n },\n resolveRoute: function resolveRoute() {\n var to = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n // Given a to (or href string), convert to normalized route location structure\n // works only when router available!!\n try {\n var route = this.$router.resolve(to, this.$route).route;\n return {\n path: route.path,\n hash: route.hash,\n query: route.query\n };\n } catch (e) {\n /* istanbul ignore next */\n return {};\n }\n },\n guessCurrentPage: function guessCurrentPage() {\n var guess = this.computedValue;\n var $router = this.$router;\n var $route = this.$route; // This section only occurs if we are client side, or server-side with $router\n\n /* istanbul ignore else */\n\n if (!this.noPageDetect && !guess && (isBrowser || !isBrowser && $router)) {\n // Current route (if router available)\n var currRoute = $router && $route ? {\n path: $route.path,\n hash: $route.hash,\n query: $route.query\n } : {}; // Current page full HREF (if client side). Can't be done as a computed prop!\n\n var loc = isBrowser ? window.location || document.location : null;\n var currLink = loc ? {\n path: loc.pathname,\n hash: loc.hash,\n query: parseQuery(loc.search)\n } : {}; // Loop through the possible pages looking for a match until found\n\n for (var page = 1; !guess && page <= this.localNumPages; page++) {\n var to = this.makeLink(page);\n\n if ($router && (isObject(to) || this.useRouter)) {\n // Resolve the page via the $router\n guess = looseEqual(this.resolveRoute(to), currRoute) ? page : null;\n } else if (isBrowser) {\n // If no $router available (or !this.useRouter when `to` is a string)\n // we compare using parsed URIs\n guess = looseEqual(this.resolveLink(to), currLink) ? page : null;\n } else {\n // probably SSR, but no $router so we can't guess, so lets break out of\n // the loop early\n\n /* istanbul ignore next */\n guess = -1;\n }\n }\n } // We set currentPage to 0 to trigger an $emit('input', null)\n // As the default for this.currentPage is -1 when no value is specified\n // And valid page numbers are greater than 0\n\n\n this.currentPage = guess > 0 ? guess : 0;\n }\n }\n});","import BPaginationNav from './pagination-nav';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BPaginationNav: BPaginationNav\n};\nexport { BPaginationNav };\nexport default {\n install: installFactory({\n components: components\n })\n};","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport Popper from 'popper.js';\nimport BvEvent from './bv-event.class';\nimport noop from './noop';\nimport { from as arrayFrom } from './array';\nimport { closest, select, isVisible, isDisabled, getCS, addClass, removeClass, hasClass, setAttr, removeAttr, getAttr, eventOn, eventOff } from './dom';\nimport { isFunction, isNull, isNumber, isObject, isString, isUndefined } from './inspect';\nvar NAME = 'tooltip';\nvar CLASS_PREFIX = 'bs-tooltip';\nvar BS_CLASS_PREFIX_REGEX = new RegExp(\"\\\\b\".concat(CLASS_PREFIX, \"\\\\S+\"), 'g');\nvar TRANSITION_DURATION = 150; // Modal $root hidden event\n\nvar MODAL_CLOSE_EVENT = 'bv::modal::hidden'; // Modal container for appending tooltip/popover\n\nvar MODAL_CLASS = '.modal-content';\nvar AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: 'right',\n BOTTOM: 'bottom',\n LEFT: 'left',\n TOPLEFT: 'top',\n TOPRIGHT: 'top',\n RIGHTTOP: 'right',\n RIGHTBOTTOM: 'right',\n BOTTOMLEFT: 'bottom',\n BOTTOMRIGHT: 'bottom',\n LEFTTOP: 'left',\n LEFTBOTTOM: 'left'\n};\nvar OffsetMap = {\n AUTO: 0,\n TOPLEFT: -1,\n TOP: 0,\n TOPRIGHT: +1,\n RIGHTTOP: -1,\n RIGHT: 0,\n RIGHTBOTTOM: +1,\n BOTTOMLEFT: -1,\n BOTTOM: 0,\n BOTTOMRIGHT: +1,\n LEFTTOP: -1,\n LEFT: 0,\n LEFTBOTTOM: +1\n};\nvar HoverState = {\n SHOW: 'show',\n OUT: 'out'\n};\nvar ClassName = {\n FADE: 'fade',\n SHOW: 'show'\n};\nvar Selector = {\n TOOLTIP: '.tooltip',\n TOOLTIP_INNER: '.tooltip-inner',\n ARROW: '.arrow'\n};\nvar Defaults = {\n animation: true,\n template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<div class=\"tooltip-inner\"></div>' + '</div>',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n placement: 'top',\n offset: 0,\n arrowPadding: 6,\n container: false,\n fallbackPlacement: 'flip',\n callbacks: {},\n boundary: 'scrollParent',\n boundaryPadding: 5 // Transition event names\n\n};\nvar TransitionEndEvents = {\n WebkitTransition: ['webkitTransitionEnd'],\n MozTransition: ['transitionend'],\n OTransition: ['otransitionend', 'oTransitionEnd'],\n transition: ['transitionend'] // Options for Native Event Listeners (since we never call preventDefault)\n\n};\nvar EvtOpts = {\n passive: true,\n capture: false // Client-side tip ID counter for aria-describedby attribute\n // Each tooltip requires a unique client side ID\n\n};\nvar NEXTID = 1;\n/* istanbul ignore next */\n\nvar generateId = function generateId(name) {\n return \"__BV_\".concat(name, \"_\").concat(NEXTID++, \"__\");\n};\n/*\n * ToolTip class definition\n */\n\n\nvar ToolTip =\n/*#__PURE__*/\nfunction () {\n // Main constructor\n function ToolTip(element, config, $root) {\n _classCallCheck(this, ToolTip);\n\n // New tooltip object\n this.$isEnabled = true;\n this.$fadeTimeout = null;\n this.$hoverTimeout = null;\n this.$visibleInterval = null;\n this.$hoverState = '';\n this.$activeTrigger = {};\n this.$popper = null;\n this.$element = element;\n this.$tip = null;\n this.$id = generateId(this.constructor.NAME);\n this.$root = $root || null;\n this.$routeWatcher = null; // We use a bound version of the following handlers for root/modal\n // listeners to maintain the 'this' context\n\n this.$forceHide = this.forceHide.bind(this);\n this.$doHide = this.doHide.bind(this);\n this.$doShow = this.doShow.bind(this);\n this.$doDisable = this.doDisable.bind(this);\n this.$doEnable = this.doEnable.bind(this);\n this._noop = noop.bind(this); // Set the configuration\n\n this.updateConfig(config);\n } // NOTE: Overridden by PopOver class\n\n\n _createClass(ToolTip, [{\n key: \"updateConfig\",\n // Update config\n value: function updateConfig(config) {\n // Merge config into defaults. We use \"this\" here because PopOver overrides Default\n var updatedConfig = _objectSpread({}, this.constructor.Default, config); // Sanitize delay\n\n\n if (config.delay && isNumber(config.delay)) {\n /* istanbul ignore next */\n updatedConfig.delay = {\n show: config.delay,\n hide: config.delay\n };\n } // Title for tooltip and popover\n\n\n if (config.title && isNumber(config.title)) {\n /* istanbul ignore next */\n updatedConfig.title = config.title.toString();\n } // Content only for popover\n\n\n if (config.content && isNumber(config.content)) {\n /* istanbul ignore next */\n updatedConfig.content = config.content.toString();\n } // Hide element original title if needed\n\n\n this.fixTitle(); // Update the config\n\n this.$config = updatedConfig; // Stop/Restart listening\n\n this.unListen();\n this.listen();\n } // Destroy this instance\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n // Stop listening to trigger events\n this.unListen(); // Disable while open listeners/watchers\n\n this.setWhileOpenListeners(false); // Clear any timeouts\n\n clearTimeout(this.$hoverTimeout);\n this.$hoverTimeout = null;\n clearTimeout(this.$fadeTimeout);\n this.$fadeTimeout = null; // Remove popper\n\n if (this.$popper) {\n this.$popper.destroy();\n }\n\n this.$popper = null; // Remove tip from document\n\n if (this.$tip && this.$tip.parentElement) {\n this.$tip.parentElement.removeChild(this.$tip);\n }\n\n this.$tip = null; // Null out other properties\n\n this.$id = null;\n this.$isEnabled = null;\n this.$root = null;\n this.$element = null;\n this.$config = null;\n this.$hoverState = null;\n this.$activeTrigger = null;\n this.$forceHide = null;\n this.$doHide = null;\n this.$doShow = null;\n this.$doDisable = null;\n this.$doEnable = null;\n }\n }, {\n key: \"enable\",\n value: function enable() {\n // Create a non-cancelable BvEvent\n var enabledEvt = new BvEvent('enabled', {\n cancelable: false,\n target: this.$element,\n relatedTarget: null\n });\n this.$isEnabled = true;\n this.emitEvent(enabledEvt);\n }\n }, {\n key: \"disable\",\n value: function disable() {\n // Create a non-cancelable BvEvent\n var disabledEvt = new BvEvent('disabled', {\n cancelable: false,\n target: this.$element,\n relatedTarget: null\n });\n this.$isEnabled = false;\n this.emitEvent(disabledEvt);\n } // Click toggler\n\n }, {\n key: \"toggle\",\n value: function toggle(event) {\n if (!this.$isEnabled) {\n /* istanbul ignore next */\n return;\n }\n /* istanbul ignore else */\n\n\n if (event) {\n this.$activeTrigger.click = !this.$activeTrigger.click;\n\n if (this.isWithActiveTrigger()) {\n this.enter(null);\n } else {\n this.leave(null);\n }\n } else {\n if (hasClass(this.getTipElement(), ClassName.SHOW)) {\n this.leave(null);\n } else {\n this.enter(null);\n }\n }\n } // Show tooltip\n\n }, {\n key: \"show\",\n value: function show() {\n var _this = this;\n\n if (!document.body.contains(this.$element) || !isVisible(this.$element)) {\n // If trigger element isn't in the DOM or is not visible\n return;\n } // Build tooltip element (also sets this.$tip)\n\n\n var tip = this.getTipElement();\n this.fixTitle();\n this.setContent(tip);\n\n if (!this.isWithContent(tip)) {\n // If no content, don't bother showing\n\n /* istanbul ignore next */\n this.$tip = null;\n /* istanbul ignore next */\n\n return;\n } // Set ID on tip and aria-describedby on element\n\n\n setAttr(tip, 'id', this.$id);\n this.addAriaDescribedby(); // Set animation on or off\n\n if (this.$config.animation) {\n addClass(tip, ClassName.FADE);\n } else {\n removeClass(tip, ClassName.FADE);\n }\n\n var placement = this.getPlacement();\n var attachment = this.constructor.getAttachment(placement);\n this.addAttachmentClass(attachment); // Create a cancelable BvEvent\n\n var showEvt = new BvEvent('show', {\n cancelable: true,\n target: this.$element,\n relatedTarget: tip\n });\n this.emitEvent(showEvt);\n\n if (showEvt.defaultPrevented) {\n // Don't show if event cancelled\n this.$tip = null;\n return;\n } // Insert tooltip if needed\n\n\n var container = this.getContainer();\n\n if (!document.body.contains(tip)) {\n container.appendChild(tip);\n } // Refresh popper\n\n\n this.removePopper();\n this.$popper = new Popper(this.$element, tip, this.getPopperConfig(placement, tip)); // Transitionend callback\n\n var complete = function complete() {\n if (_this.$config.animation) {\n _this.fixTransition(tip);\n }\n\n var prevHoverState = _this.$hoverState;\n _this.$hoverState = null;\n\n if (prevHoverState === HoverState.OUT) {\n _this.leave(null);\n } // Create a non-cancelable BvEvent\n\n\n var shownEvt = new BvEvent('shown', {\n cancelable: false,\n target: _this.$element,\n relatedTarget: tip\n });\n\n _this.emitEvent(shownEvt);\n }; // Enable while open listeners/watchers\n\n\n this.setWhileOpenListeners(true); // Show tip\n\n addClass(tip, ClassName.SHOW); // Start the transition/animation\n\n this.transitionOnce(tip, complete);\n } // Handler for periodic visibility check\n\n }, {\n key: \"visibleCheck\",\n value: function visibleCheck(on) {\n var _this2 = this;\n\n clearInterval(this.$visibleInterval);\n this.$visibleInterval = null;\n\n if (on) {\n this.$visibleInterval = setInterval(function () {\n var tip = _this2.$tip;\n\n if (tip && !isVisible(_this2.$element) && hasClass(tip, ClassName.SHOW)) {\n // Element is no longer visible, so force-hide the tooltip\n _this2.forceHide();\n }\n }, 100);\n }\n }\n }, {\n key: \"setWhileOpenListeners\",\n value: function setWhileOpenListeners(on) {\n // Modal close events\n this.setModalListener(on); // Periodic $element visibility check\n // For handling when tip is in <keepalive>, tabs, carousel, etc\n\n this.visibleCheck(on); // Route change events\n\n this.setRouteWatcher(on); // On-touch start listeners\n\n this.setOnTouchStartListener(on);\n\n if (on && /(focus|blur)/.test(this.$config.trigger)) {\n // If focus moves between trigger element and tip container, don't close\n eventOn(this.$tip, 'focusout', this, EvtOpts);\n } else {\n eventOff(this.$tip, 'focusout', this, EvtOpts);\n }\n } // Force hide of tip (internal method)\n\n }, {\n key: \"forceHide\",\n value: function forceHide() {\n if (!this.$tip || !hasClass(this.$tip, ClassName.SHOW)) {\n /* istanbul ignore next */\n return;\n } // Disable while open listeners/watchers\n\n\n this.setWhileOpenListeners(false); // Clear any hover enter/leave event\n\n clearTimeout(this.$hoverTimeout);\n this.$hoverTimeout = null;\n this.$hoverState = ''; // Hide the tip\n\n this.hide(null, true);\n } // Hide tooltip\n\n }, {\n key: \"hide\",\n value: function hide(callback, force) {\n var _this3 = this;\n\n var tip = this.$tip;\n\n if (!tip) {\n /* istanbul ignore next */\n return;\n } // Create a cancelable BvEvent\n\n\n var hideEvt = new BvEvent('hide', {\n // We disable cancelling if force is true\n cancelable: !force,\n target: this.$element,\n relatedTarget: tip\n });\n this.emitEvent(hideEvt);\n\n if (hideEvt.defaultPrevented) {\n // Don't hide if event cancelled\n return;\n } // Transitionend callback\n\n\n var complete = function complete() {\n if (_this3.$hoverState !== HoverState.SHOW && tip.parentNode) {\n // Remove tip from DOM, and force recompile on next show\n tip.parentNode.removeChild(tip);\n\n _this3.removeAriaDescribedby();\n\n _this3.removePopper();\n\n _this3.$tip = null;\n }\n\n if (callback) {\n callback();\n } // Create a non-cancelable BvEvent\n\n\n var hiddenEvt = new BvEvent('hidden', {\n cancelable: false,\n target: _this3.$element,\n relatedTarget: null\n });\n\n _this3.emitEvent(hiddenEvt);\n }; // Disable while open listeners/watchers\n\n\n this.setWhileOpenListeners(false); // If forced close, disable animation\n\n if (force) {\n removeClass(tip, ClassName.FADE);\n } // Hide tip\n\n\n removeClass(tip, ClassName.SHOW);\n this.$activeTrigger.click = false;\n this.$activeTrigger.focus = false;\n this.$activeTrigger.hover = false; // Start the hide transition\n\n this.transitionOnce(tip, complete);\n this.$hoverState = '';\n }\n }, {\n key: \"emitEvent\",\n value: function emitEvent(evt) {\n var evtName = evt.type;\n\n if (this.$root && this.$root.$emit) {\n // Emit an event on $root\n this.$root.$emit(\"bv::\".concat(this.constructor.NAME, \"::\").concat(evtName), evt);\n }\n\n var callbacks = this.$config.callbacks || {};\n\n if (isFunction(callbacks[evtName])) {\n callbacks[evtName](evt);\n }\n }\n }, {\n key: \"getContainer\",\n value: function getContainer() {\n var container = this.$config.container;\n var body = document.body; // If we are in a modal, we append to the modal instead of body,\n // unless a container is specified\n\n return container === false ? closest(MODAL_CLASS, this.$element) || body : select(container, body) || body;\n } // Will be overridden by PopOver if needed\n\n }, {\n key: \"addAriaDescribedby\",\n value: function addAriaDescribedby() {\n // Add aria-describedby on trigger element, without removing any other IDs\n var desc = getAttr(this.$element, 'aria-describedby') || '';\n desc = desc.split(/\\s+/).concat(this.$id).join(' ').trim();\n setAttr(this.$element, 'aria-describedby', desc);\n } // Will be overridden by PopOver if needed\n\n }, {\n key: \"removeAriaDescribedby\",\n value: function removeAriaDescribedby() {\n var _this4 = this;\n\n var desc = getAttr(this.$element, 'aria-describedby') || '';\n desc = desc.split(/\\s+/).filter(function (d) {\n return d !== _this4.$id;\n }).join(' ').trim();\n\n if (desc) {\n /* istanbul ignore next */\n setAttr(this.$element, 'aria-describedby', desc);\n } else {\n removeAttr(this.$element, 'aria-describedby');\n }\n }\n }, {\n key: \"removePopper\",\n value: function removePopper() {\n if (this.$popper) {\n this.$popper.destroy();\n }\n\n this.$popper = null;\n }\n }, {\n key: \"transitionOnce\",\n value: function transitionOnce(tip, complete) {\n var _this5 = this;\n\n var transEvents = this.getTransitionEndEvents();\n var called = false;\n clearTimeout(this.$fadeTimeout);\n this.$fadeTimeout = null;\n\n var fnOnce = function fnOnce() {\n if (called) {\n /* istanbul ignore next */\n return;\n }\n\n called = true;\n clearTimeout(_this5.$fadeTimeout);\n _this5.$fadeTimeout = null;\n transEvents.forEach(function (evtName) {\n eventOff(tip, evtName, fnOnce, EvtOpts);\n }); // Call complete callback\n\n complete();\n };\n\n if (hasClass(tip, ClassName.FADE)) {\n transEvents.forEach(function (evtName) {\n eventOn(tip, evtName, fnOnce, EvtOpts);\n }); // Fallback to setTimeout()\n\n this.$fadeTimeout = setTimeout(fnOnce, TRANSITION_DURATION);\n } else {\n fnOnce();\n }\n } // What transitionend event(s) to use? (returns array of event names)\n\n }, {\n key: \"getTransitionEndEvents\",\n value: function getTransitionEndEvents() {\n for (var name in TransitionEndEvents) {\n if (!isUndefined(this.$element.style[name])) {\n return TransitionEndEvents[name];\n }\n } // Fallback\n\n /* istanbul ignore next */\n\n\n return [];\n }\n /* istanbul ignore next */\n\n }, {\n key: \"update\",\n value: function update() {\n if (!isNull(this.$popper)) {\n this.$popper.scheduleUpdate();\n }\n } // NOTE: Overridden by PopOver class\n\n }, {\n key: \"isWithContent\",\n value: function isWithContent(tip) {\n tip = tip || this.$tip;\n\n if (!tip) {\n /* istanbul ignore next */\n return false;\n }\n\n return Boolean((select(Selector.TOOLTIP_INNER, tip) || {}).innerHTML);\n } // NOTE: Overridden by PopOver class\n\n }, {\n key: \"addAttachmentClass\",\n value: function addAttachmentClass(attachment) {\n addClass(this.getTipElement(), \"\".concat(CLASS_PREFIX, \"-\").concat(attachment));\n }\n }, {\n key: \"getTipElement\",\n value: function getTipElement() {\n if (!this.$tip) {\n // Try and compile user supplied template, or fallback to default template\n this.$tip = this.compileTemplate(this.$config.template) || this.compileTemplate(this.constructor.Default.template);\n } // Add tab index so tip can be focused, and to allow it to be\n // set as relatedTarget in focusin/out events\n\n\n this.$tip.tabIndex = -1;\n return this.$tip;\n }\n }, {\n key: \"compileTemplate\",\n value: function compileTemplate(html) {\n if (!html || !isString(html)) {\n /* istanbul ignore next */\n return null;\n }\n\n var div = document.createElement('div');\n div.innerHTML = html.trim();\n var node = div.firstElementChild ? div.removeChild(div.firstElementChild) : null;\n div = null;\n return node;\n } // NOTE: Overridden by PopOver class\n\n }, {\n key: \"setContent\",\n value: function setContent(tip) {\n this.setElementContent(select(Selector.TOOLTIP_INNER, tip), this.getTitle());\n removeClass(tip, ClassName.FADE);\n removeClass(tip, ClassName.SHOW);\n }\n }, {\n key: \"setElementContent\",\n value: function setElementContent(container, content) {\n if (!container) {\n // If container element doesn't exist, just return\n\n /* istanbul ignore next */\n return;\n }\n\n var allowHtml = this.$config.html;\n\n if (isObject(content) && content.nodeType) {\n // Content is a DOM node\n if (allowHtml) {\n if (content.parentElement !== container) {\n container.innerHTML = '';\n container.appendChild(content);\n }\n } else {\n /* istanbul ignore next */\n container.innerText = content.innerText;\n }\n } else {\n // We have a plain HTML string or Text\n container[allowHtml ? 'innerHTML' : 'innerText'] = content;\n }\n } // NOTE: Overridden by PopOver class\n\n }, {\n key: \"getTitle\",\n value: function getTitle() {\n var title = this.$config.title || '';\n\n if (isFunction(title)) {\n // Call the function to get the title value\n\n /* istanbul ignore next */\n title = title(this.$element);\n }\n\n if (isObject(title) && title.nodeType && !title.innerHTML.trim()) {\n // We have a DOM node, but without inner content,\n // so just return empty string\n\n /* istanbul ignore next */\n title = '';\n }\n\n if (isString(title)) {\n title = title.trim();\n }\n\n if (!title) {\n // If an explicit title is not given, try element's title attributes\n title = getAttr(this.$element, 'title') || getAttr(this.$element, 'data-original-title') || '';\n title = title.trim();\n }\n\n return title;\n }\n }, {\n key: \"listen\",\n value: function listen() {\n var _this6 = this;\n\n var triggers = this.$config.trigger.trim().split(/\\s+/);\n var el = this.$element; // Listen for global show/hide events\n\n this.setRootListener(true); // Using 'this' as the handler will get automatically directed to\n // this.handleEvent and maintain our binding to 'this'\n\n triggers.forEach(function (trigger) {\n if (trigger === 'click') {\n eventOn(el, 'click', _this6, EvtOpts);\n } else if (trigger === 'focus') {\n eventOn(el, 'focusin', _this6, EvtOpts);\n eventOn(el, 'focusout', _this6, EvtOpts);\n } else if (trigger === 'blur') {\n // Used to close $tip when element looses focus\n eventOn(el, 'focusout', _this6, EvtOpts);\n } else if (trigger === 'hover') {\n eventOn(el, 'mouseenter', _this6, EvtOpts);\n eventOn(el, 'mouseleave', _this6, EvtOpts);\n }\n }, this);\n }\n }, {\n key: \"unListen\",\n value: function unListen() {\n var _this7 = this;\n\n var events = ['click', 'focusin', 'focusout', 'mouseenter', 'mouseleave']; // Using \"this\" as the handler will get automatically directed to this.handleEvent\n\n events.forEach(function (evt) {\n eventOff(_this7.$element, evt, _this7, EvtOpts);\n }, this); // Stop listening for global show/hide/enable/disable events\n\n this.setRootListener(false);\n }\n }, {\n key: \"handleEvent\",\n value: function handleEvent(e) {\n // This special method allows us to use \"this\" as the event handlers\n if (isDisabled(this.$element)) {\n // If disabled, don't do anything. Note: If tip is shown before element gets\n // disabled, then tip not close until no longer disabled or forcefully closed.\n\n /* istanbul ignore next */\n return;\n }\n\n if (!this.$isEnabled) {\n // If not enable\n return;\n }\n\n var type = e.type;\n var target = e.target;\n var relatedTarget = e.relatedTarget;\n var $element = this.$element;\n var $tip = this.$tip;\n\n if (type === 'click') {\n this.toggle(e);\n } else if (type === 'focusin' || type === 'mouseenter') {\n this.enter(e);\n } else if (type === 'focusout') {\n // target is the element which is loosing focus\n // and relatedTarget is the element gaining focus\n if ($tip && $element && $element.contains(target) && $tip.contains(relatedTarget)) {\n // If focus moves from $element to $tip, don't trigger a leave\n\n /* istanbul ignore next */\n return;\n }\n\n if ($tip && $element && $tip.contains(target) && $element.contains(relatedTarget)) {\n // If focus moves from $tip to $element, don't trigger a leave\n\n /* istanbul ignore next */\n return;\n }\n /* istanbul ignore next: difficult to test */\n\n\n if ($tip && $tip.contains(target) && $tip.contains(relatedTarget)) {\n // If focus moves within $tip, don't trigger a leave\n return;\n }\n /* istanbul ignore next: difficult to test */\n\n\n if ($element && $element.contains(target) && $element.contains(relatedTarget)) {\n // If focus moves within $element, don't trigger a leave\n return;\n } // Otherwise trigger a leave\n\n\n this.leave(e);\n } else if (type === 'mouseleave') {\n this.leave(e);\n }\n }\n /* istanbul ignore next */\n\n }, {\n key: \"setRouteWatcher\",\n value: function setRouteWatcher(on) {\n var _this8 = this;\n\n if (on) {\n this.setRouteWatcher(false);\n\n if (this.$root && Boolean(this.$root.$route)) {\n this.$routeWatcher = this.$root.$watch('$route', function (newVal, oldVal) {\n if (newVal === oldVal) {\n return;\n } // If route has changed, we force hide the tooltip/popover\n\n\n _this8.forceHide();\n });\n }\n } else {\n if (this.$routeWatcher) {\n // Cancel the route watcher by calling the stored reference\n this.$routeWatcher();\n this.$routeWatcher = null;\n }\n }\n }\n /* istanbul ignore next */\n\n }, {\n key: \"setModalListener\",\n value: function setModalListener(on) {\n var modal = closest(MODAL_CLASS, this.$element);\n\n if (!modal) {\n // If we are not in a modal, don't worry. be happy\n return;\n } // We can listen for modal hidden events on $root\n\n\n if (this.$root) {\n this.$root[on ? '$on' : '$off'](MODAL_CLOSE_EVENT, this.$forceHide);\n }\n }\n }, {\n key: \"setRootListener\",\n value: function setRootListener(on) {\n // Listen for global 'bv::{hide|show}::{tooltip|popover}' hide request event\n if (this.$root) {\n this.$root[on ? '$on' : '$off'](\"bv::hide::\".concat(this.constructor.NAME), this.$doHide);\n this.$root[on ? '$on' : '$off'](\"bv::show::\".concat(this.constructor.NAME), this.$doShow);\n this.$root[on ? '$on' : '$off'](\"bv::disable::\".concat(this.constructor.NAME), this.$doDisable);\n this.$root[on ? '$on' : '$off'](\"bv::enable::\".concat(this.constructor.NAME), this.$doEnable);\n }\n }\n }, {\n key: \"doHide\",\n value: function doHide(id) {\n // Programmatically hide tooltip or popover\n if (!id) {\n // Close all tooltips or popovers\n this.forceHide();\n } else if (this.$element && this.$element.id && this.$element.id === id) {\n // Close this specific tooltip or popover\n this.hide();\n }\n }\n }, {\n key: \"doShow\",\n value: function doShow(id) {\n // Programmatically show tooltip or popover\n if (!id) {\n // Open all tooltips or popovers\n this.show();\n } else if (id && this.$element && this.$element.id && this.$element.id === id) {\n // Show this specific tooltip or popover\n this.show();\n }\n }\n }, {\n key: \"doDisable\",\n value: function doDisable(id) {\n // Programmatically disable tooltip or popover\n if (!id) {\n // Disable all tooltips or popovers\n this.disable();\n } else if (this.$element && this.$element.id && this.$element.id === id) {\n // Disable this specific tooltip or popover\n this.disable();\n }\n }\n }, {\n key: \"doEnable\",\n value: function doEnable(id) {\n // Programmatically enable tooltip or popover\n if (!id) {\n // Enable all tooltips or popovers\n this.enable();\n } else if (this.$element && this.$element.id && this.$element.id === id) {\n // Enable this specific tooltip or popover\n this.enable();\n }\n }\n }, {\n key: \"setOnTouchStartListener\",\n value: function setOnTouchStartListener(on) {\n var _this9 = this;\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children\n // Only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n /* istanbul ignore next: JSDOM does not support 'ontouchstart' event */\n arrayFrom(document.body.children).forEach(function (el) {\n if (on) {\n eventOn(el, 'mouseover', _this9._noop);\n } else {\n eventOff(el, 'mouseover', _this9._noop);\n }\n });\n }\n }\n }, {\n key: \"fixTitle\",\n value: function fixTitle() {\n var el = this.$element;\n\n if (getAttr(el, 'title') || !isString(getAttr(el, 'data-original-title'))) {\n setAttr(el, 'data-original-title', getAttr(el, 'title') || '');\n setAttr(el, 'title', '');\n }\n } // Enter handler\n\n }, {\n key: \"enter\",\n value: function enter(e) {\n var _this10 = this;\n\n if (e) {\n this.$activeTrigger[e.type === 'focusin' ? 'focus' : 'hover'] = true;\n }\n\n if (hasClass(this.getTipElement(), ClassName.SHOW) || this.$hoverState === HoverState.SHOW) {\n this.$hoverState = HoverState.SHOW;\n return;\n }\n\n clearTimeout(this.$hoverTimeout);\n this.$hoverState = HoverState.SHOW;\n\n if (!this.$config.delay || !this.$config.delay.show) {\n this.show();\n return;\n }\n\n this.$hoverTimeout = setTimeout(function () {\n if (_this10.$hoverState === HoverState.SHOW) {\n _this10.show();\n }\n }, this.$config.delay.show);\n } // Leave handler\n\n }, {\n key: \"leave\",\n value: function leave(e) {\n var _this11 = this;\n\n if (e) {\n this.$activeTrigger[e.type === 'focusout' ? 'focus' : 'hover'] = false;\n\n if (e.type === 'focusout' && /blur/.test(this.$config.trigger)) {\n // Special case for `blur`: we clear out the other triggers\n this.$activeTrigger.click = false;\n this.$activeTrigger.hover = false;\n }\n }\n\n if (this.isWithActiveTrigger()) {\n return;\n }\n\n clearTimeout(this.$hoverTimeout);\n this.$hoverState = HoverState.OUT;\n\n if (!this.$config.delay || !this.$config.delay.hide) {\n this.hide();\n return;\n }\n\n this.$hoverTimeout = setTimeout(function () {\n if (_this11.$hoverState === HoverState.OUT) {\n _this11.hide();\n }\n }, this.$config.delay.hide);\n }\n }, {\n key: \"getPopperConfig\",\n value: function getPopperConfig(placement, tip) {\n var _this12 = this;\n\n return {\n placement: this.constructor.getAttachment(placement),\n modifiers: {\n offset: {\n offset: this.getOffset(placement, tip)\n },\n flip: {\n behavior: this.$config.fallbackPlacement\n },\n arrow: {\n element: '.arrow'\n },\n preventOverflow: {\n padding: this.$config.boundaryPadding,\n boundariesElement: this.$config.boundary\n }\n },\n onCreate: function onCreate(data) {\n // Handle flipping arrow classes\n\n /* istanbul ignore next */\n if (data.originalPlacement !== data.placement) {\n _this12.handlePopperPlacementChange(data);\n }\n },\n onUpdate: function onUpdate(data) {\n // Handle flipping arrow classes\n\n /* istanbul ignore next */\n _this12.handlePopperPlacementChange(data);\n }\n };\n }\n /* istanbul ignore next */\n\n }, {\n key: \"getOffset\",\n value: function getOffset(placement, tip) {\n if (!this.$config.offset) {\n var arrow = select(Selector.ARROW, tip);\n var arrowOffset = parseFloat(getCS(arrow).width) + parseFloat(this.$config.arrowPadding);\n\n switch (OffsetMap[placement.toUpperCase()]) {\n case +1:\n return \"+50%p - \".concat(arrowOffset, \"px\");\n\n case -1:\n return \"-50%p + \".concat(arrowOffset, \"px\");\n\n default:\n return 0;\n }\n }\n\n return this.$config.offset;\n }\n }, {\n key: \"getPlacement\",\n value: function getPlacement() {\n var placement = this.$config.placement;\n\n if (isFunction(placement)) {\n /* istanbul ignore next */\n return placement.call(this, this.$tip, this.$element);\n }\n\n return placement;\n }\n }, {\n key: \"isWithActiveTrigger\",\n value: function isWithActiveTrigger() {\n for (var trigger in this.$activeTrigger) {\n if (this.$activeTrigger[trigger]) {\n return true;\n }\n }\n\n return false;\n } // NOTE: Overridden by PopOver class\n\n /* istanbul ignore next */\n\n }, {\n key: \"cleanTipClass\",\n value: function cleanTipClass() {\n var tip = this.getTipElement();\n var tabClass = tip.className.match(BS_CLASS_PREFIX_REGEX);\n\n if (!isNull(tabClass) && tabClass.length > 0) {\n tabClass.forEach(function (cls) {\n removeClass(tip, cls);\n });\n }\n }\n /* istanbul ignore next */\n\n }, {\n key: \"handlePopperPlacementChange\",\n value: function handlePopperPlacementChange(data) {\n this.cleanTipClass();\n this.addAttachmentClass(this.constructor.getAttachment(data.placement));\n }\n /* istanbul ignore next */\n\n }, {\n key: \"fixTransition\",\n value: function fixTransition(tip) {\n var initConfigAnimation = this.$config.animation || false;\n\n if (!isNull(getAttr(tip, 'x-placement'))) {\n return;\n }\n\n removeClass(tip, ClassName.FADE);\n this.$config.animation = false;\n this.hide();\n this.show();\n this.$config.animation = initConfigAnimation;\n }\n }], [{\n key: \"getAttachment\",\n value: function getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()];\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Defaults;\n } // NOTE: Overridden by PopOver class\n\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME;\n }\n }]);\n\n return ToolTip;\n}();\n\nexport default ToolTip;","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport ToolTip from './tooltip.class';\nimport { select, addClass, removeClass, getAttr } from './dom';\nimport { isFunction, isNull, isObject, isString } from './inspect';\nvar NAME = 'popover';\nvar CLASS_PREFIX = 'bs-popover';\nvar BS_CLASS_PREFIX_REGEX = new RegExp(\"\\\\b\".concat(CLASS_PREFIX, \"\\\\S+\"), 'g');\n\nvar Defaults = _objectSpread({}, ToolTip.Default, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div></div>'\n});\n\nvar ClassName = {\n FADE: 'fade',\n SHOW: 'show'\n};\nvar Selector = {\n TITLE: '.popover-header',\n CONTENT: '.popover-body'\n};\n\nvar PopOver =\n/*#__PURE__*/\nfunction (_ToolTip) {\n _inherits(PopOver, _ToolTip);\n\n function PopOver() {\n _classCallCheck(this, PopOver);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(PopOver).apply(this, arguments));\n }\n\n _createClass(PopOver, [{\n key: \"isWithContent\",\n // --- Method overrides ---\n value: function isWithContent(tip) {\n tip = tip || this.$tip;\n\n if (!tip) {\n /* istanbul ignore next */\n return false;\n }\n\n var hasTitle = Boolean((select(Selector.TITLE, tip) || {}).innerHTML);\n var hasContent = Boolean((select(Selector.CONTENT, tip) || {}).innerHTML);\n return hasTitle || hasContent;\n }\n }, {\n key: \"addAttachmentClass\",\n value: function addAttachmentClass(attachment)\n /* istanbul ignore next */\n {\n addClass(this.getTipElement(), \"\".concat(CLASS_PREFIX, \"-\").concat(attachment));\n }\n }, {\n key: \"setContent\",\n value: function setContent(tip) {\n // we use append for html objects to maintain js events/components\n this.setElementContent(select(Selector.TITLE, tip), this.getTitle());\n this.setElementContent(select(Selector.CONTENT, tip), this.getContent());\n removeClass(tip, ClassName.FADE);\n removeClass(tip, ClassName.SHOW);\n } // This method may look identical to ToolTip version, but it uses a different RegEx defined above\n\n }, {\n key: \"cleanTipClass\",\n value: function cleanTipClass()\n /* istanbul ignore next */\n {\n var tip = this.getTipElement();\n var tabClass = tip.className.match(BS_CLASS_PREFIX_REGEX);\n\n if (!isNull(tabClass) && tabClass.length > 0) {\n tabClass.forEach(function (cls) {\n removeClass(tip, cls);\n });\n }\n }\n }, {\n key: \"getTitle\",\n value: function getTitle() {\n var title = this.$config.title || '';\n /* istanbul ignore next */\n\n if (isFunction(title)) {\n title = title(this.$element);\n }\n /* istanbul ignore next */\n\n\n if (isObject(title) && title.nodeType && !title.innerHTML.trim()) {\n // We have a dom node, but without inner content, so just return an empty string\n title = '';\n }\n\n if (isString(title)) {\n title = title.trim();\n }\n\n if (!title) {\n // Try and grab element's title attribute\n title = getAttr(this.$element, 'title') || getAttr(this.$element, 'data-original-title') || '';\n title = title.trim();\n }\n\n return title;\n } // New methods\n\n }, {\n key: \"getContent\",\n value: function getContent() {\n var content = this.$config.content || '';\n /* istanbul ignore next */\n\n if (isFunction(content)) {\n content = content(this.$element);\n }\n /* istanbul ignore next */\n\n\n if (isObject(content) && content.nodeType && !content.innerHTML.trim()) {\n // We have a dom node, but without inner content, so just return an empty string\n content = '';\n }\n\n if (isString(content)) {\n content = content.trim();\n }\n\n return content;\n }\n }], [{\n key: \"Default\",\n // --- Getter overrides ---\n get: function get() {\n return Defaults;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME;\n }\n }]);\n\n return PopOver;\n}(ToolTip);\n\nexport default PopOver;","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\n/*\n * Tooltip/Popover component mixin\n * Common props\n */\nimport observeDom from '../utils/observe-dom';\nimport { isElement, getById } from '../utils/dom';\nimport { isArray, isFunction, isObject, isString } from '../utils/inspect';\nimport { HTMLElement } from '../utils/safe-types'; // --- Constants ---\n\nvar PLACEMENTS = {\n top: 'top',\n topleft: 'topleft',\n topright: 'topright',\n right: 'right',\n righttop: 'righttop',\n rightbottom: 'rightbottom',\n bottom: 'bottom',\n bottomleft: 'bottomleft',\n bottomright: 'bottomright',\n left: 'left',\n lefttop: 'lefttop',\n leftbottom: 'leftbottom',\n auto: 'auto'\n};\nvar OBSERVER_CONFIG = {\n subtree: true,\n childList: true,\n characterData: true,\n attributes: true,\n attributeFilter: ['class', 'style'] // @vue/component\n\n};\nexport default {\n props: {\n target: {\n // String ID of element, or element/component reference\n type: [String, Object, HTMLElement, Function] // default: undefined\n\n },\n delay: {\n type: [Number, Object, String],\n default: 0\n },\n offset: {\n type: [Number, String],\n default: 0\n },\n noFade: {\n type: Boolean,\n default: false\n },\n container: {\n // String ID of container, if null body is used (default)\n type: String,\n default: null\n },\n show: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n return {\n // semaphore for preventing multiple show events\n localShow: false\n };\n },\n computed: {\n baseConfig: function baseConfig() {\n var cont = this.container;\n var delay = isObject(this.delay) ? this.delay : parseInt(this.delay, 10) || 0;\n return {\n // Title prop\n title: (this.title || '').trim() || '',\n // Content prop (if popover)\n content: (this.content || '').trim() || '',\n // Tooltip/Popover placement\n placement: PLACEMENTS[this.placement] || 'auto',\n // Tooltip/popover fallback placemenet\n fallbackPlacement: this.fallbackPlacement || 'flip',\n // Container currently needs to be an ID with '#' prepended, if null then body is used\n container: cont ? /^#/.test(cont) ? cont : \"#\".concat(cont) : false,\n // boundariesElement passed to popper\n boundary: this.boundary,\n // boundariesElement padding passed to popper\n boundaryPadding: this.boundaryPadding,\n // Show/Hide delay\n delay: delay || 0,\n // Offset can be css distance. if no units, pixels are assumed\n offset: this.offset || 0,\n // Disable fade Animation?\n animation: !this.noFade,\n // Open/Close Trigger(s)\n trigger: isArray(this.triggers) ? this.triggers.join(' ') : this.triggers,\n // Callbacks so we can trigger events on component\n callbacks: {\n show: this.onShow,\n shown: this.onShown,\n hide: this.onHide,\n hidden: this.onHidden,\n enabled: this.onEnabled,\n disabled: this.onDisabled\n }\n };\n }\n },\n watch: {\n show: function show(_show, old) {\n if (_show !== old) {\n _show ? this.onOpen() : this.onClose();\n }\n },\n disabled: function disabled(_disabled, old) {\n if (_disabled !== old) {\n _disabled ? this.onDisable() : this.onEnable();\n }\n },\n localShow: function localShow(show, old) {\n if (show !== this.show) {\n this.$emit('update:show', show);\n }\n }\n },\n created: function created() {\n // Create non-reactive property\n this._toolpop = null;\n this._obs_title = null;\n this._obs_content = null;\n },\n mounted: function mounted() {\n var _this = this;\n\n // We do this in a next tick to ensure DOM has rendered first\n this.$nextTick(function () {\n // Instantiate ToolTip/PopOver on target\n // The createToolpop method must exist in main component\n if (_this.createToolpop()) {\n if (_this.disabled) {\n // Initially disabled\n _this.onDisable();\n } // Listen to open signals from others\n\n\n _this.$on('open', _this.onOpen); // Listen to close signals from others\n\n\n _this.$on('close', _this.onClose); // Listen to disable signals from others\n\n\n _this.$on('disable', _this.onDisable); // Listen to enable signals from others\n\n\n _this.$on('enable', _this.onEnable); // Observe content Child changes so we can notify popper of possible size change\n\n\n _this.setObservers(true); // Set initially open state\n\n\n if (_this.show) {\n _this.onOpen();\n }\n }\n });\n },\n updated: function updated() {\n // If content/props changes, etc\n if (this._toolpop) {\n this._toolpop.updateConfig(this.getConfig());\n }\n },\n activated: function activated()\n /* istanbul ignore next: can't easily test in JSDOM */\n {\n // Called when component is inside a <keep-alive> and component brought offline\n this.setObservers(true);\n },\n deactivated: function deactivated()\n /* istanbul ignore next: can't easily test in JSDOM */\n {\n // Called when component is inside a <keep-alive> and component taken offline\n if (this._toolpop) {\n this.setObservers(false);\n\n this._toolpop.hide();\n }\n },\n beforeDestroy: function beforeDestroy() {\n // Shutdown our local event listeners\n this.$off('open', this.onOpen);\n this.$off('close', this.onClose);\n this.$off('disable', this.onDisable);\n this.$off('enable', this.onEnable);\n this.setObservers(false); // bring our content back if needed\n\n this.bringItBack();\n\n if (this._toolpop) {\n this._toolpop.destroy();\n\n this._toolpop = null;\n }\n },\n methods: {\n getConfig: function getConfig() {\n var cfg = _objectSpread({}, this.baseConfig);\n\n if (this.$refs.title && this.$refs.title.innerHTML.trim()) {\n // If slot has content, it overrides 'title' prop\n // We use the DOM node as content to allow components!\n cfg.title = this.$refs.title;\n cfg.html = true;\n }\n\n if (this.$refs.content && this.$refs.content.innerHTML.trim()) {\n // If slot has content, it overrides 'content' prop\n // We use the DOM node as content to allow components!\n cfg.content = this.$refs.content;\n cfg.html = true;\n }\n\n return cfg;\n },\n onOpen: function onOpen() {\n if (this._toolpop && !this.localShow) {\n this.localShow = true;\n\n this._toolpop.show();\n }\n },\n onClose: function onClose(callback) {\n // What is callback for ? it is not documented\n\n /* istanbul ignore else */\n if (this._toolpop && this.localShow) {\n this._toolpop.hide(callback);\n } else if (isFunction(callback)) {\n // Is this even used?\n callback();\n }\n },\n onDisable: function onDisable() {\n if (this._toolpop) {\n this._toolpop.disable();\n }\n },\n onEnable: function onEnable() {\n if (this._toolpop) {\n this._toolpop.enable();\n }\n },\n updatePosition: function updatePosition() {\n /* istanbul ignore next: can't test in JSDOM until mutation observer is implemented */\n if (this._toolpop) {\n // Instruct popper to reposition popover if necessary\n this._toolpop.update();\n }\n },\n getTarget: function getTarget() {\n var target = this.target;\n\n if (isFunction(target)) {\n /* istanbul ignore next */\n target = target();\n }\n /* istanbul ignore else */\n\n\n if (isString(target)) {\n // Assume ID of element\n return getById(target);\n } else if (isObject(target) && isElement(target.$el)) {\n // Component reference\n\n /* istanbul ignore next */\n return target.$el;\n } else if (isObject(target) && isElement(target)) {\n // Element reference\n\n /* istanbul ignore next */\n return target;\n }\n /* istanbul ignore next */\n\n\n return null;\n },\n // Callbacks called by Tooltip/Popover class instance\n onShow: function onShow(evt) {\n this.$emit('show', evt);\n this.localShow = !(evt && evt.defaultPrevented);\n },\n onShown: function onShown(evt) {\n this.setObservers(true);\n this.$emit('shown', evt);\n this.localShow = true;\n },\n onHide: function onHide(evt) {\n this.$emit('hide', evt);\n this.localShow = !!(evt && evt.defaultPrevented);\n },\n onHidden: function onHidden(evt) {\n this.setObservers(false); // bring our content back if needed to keep Vue happy\n // Tooltip class will move it back to tip when shown again\n\n this.bringItBack();\n this.$emit('hidden', evt);\n this.localShow = false;\n },\n onEnabled: function onEnabled(evt) {\n /* istanbul ignore next */\n if (!evt || evt.type !== 'enabled') {\n // Prevent possible endless loop if user mistakenly fires enabled instead of enable\n return;\n }\n\n this.$emit('update:disabled', false);\n this.$emit('disabled');\n },\n onDisabled: function onDisabled(evt) {\n /* istanbul ignore next */\n if (!evt || evt.type !== 'disabled') {\n // Prevent possible endless loop if user mistakenly fires disabled instead of disable\n return;\n }\n\n this.$emit('update:disabled', true);\n this.$emit('enabled');\n },\n bringItBack: function bringItBack() {\n // bring our content back if needed to keep Vue happy\n if (this.$el && this.$refs.title) {\n this.$el.appendChild(this.$refs.title);\n }\n\n if (this.$el && this.$refs.content) {\n this.$el.appendChild(this.$refs.content);\n }\n },\n setObservers: function setObservers(on) {\n if (on) {\n if (this.$refs.title) {\n this._obs_title = observeDom(this.$refs.title, this.updatePosition.bind(this), OBSERVER_CONFIG);\n }\n\n if (this.$refs.content) {\n this._obs_content = observeDom(this.$refs.content, this.updatePosition.bind(this), OBSERVER_CONFIG);\n }\n } else {\n if (this._obs_title) {\n this._obs_title.disconnect();\n\n this._obs_title = null;\n }\n\n if (this._obs_content) {\n this._obs_content.disconnect();\n\n this._obs_content = null;\n }\n }\n }\n }\n};","import Vue from '../../utils/vue';\nimport PopOver from '../../utils/popover.class';\nimport warn from '../../utils/warn';\nimport { isArray, arrayIncludes } from '../../utils/array';\nimport { getComponentConfig } from '../../utils/config';\nimport { HTMLElement } from '../../utils/safe-types';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport toolpopMixin from '../../mixins/toolpop';\nvar NAME = 'BPopover';\nexport var props = {\n title: {\n type: String,\n default: ''\n },\n content: {\n type: String,\n default: ''\n },\n triggers: {\n type: [String, Array],\n default: 'click'\n },\n placement: {\n type: String,\n default: 'right'\n },\n fallbackPlacement: {\n type: [String, Array],\n default: 'flip',\n validator: function validator(value) {\n return isArray(value) || arrayIncludes(['flip', 'clockwise', 'counterclockwise'], value);\n }\n },\n boundary: {\n // String: scrollParent, window, or viewport\n // Element: element reference\n type: [String, HTMLElement],\n default: function _default() {\n return getComponentConfig(NAME, 'boundary');\n }\n },\n boundaryPadding: {\n type: Number,\n default: function _default() {\n return getComponentConfig(NAME, 'boundaryPadding');\n }\n } // @vue/component\n\n};\nexport default Vue.extend({\n name: NAME,\n mixins: [toolpopMixin, normalizeSlotMixin],\n props: props,\n data: function data() {\n return {};\n },\n methods: {\n createToolpop: function createToolpop() {\n // getTarget is in toolpop mixin\n var target = this.getTarget();\n /* istanbul ignore else */\n\n if (target) {\n this._toolpop = new PopOver(target, this.getConfig(), this.$root);\n } else {\n this._toolpop = null;\n warn(\"b-popover: 'target' element not found!\");\n }\n\n return this._toolpop;\n }\n },\n render: function render(h) {\n return h('div', {\n class: ['d-none'],\n style: {\n display: 'none'\n },\n attrs: {\n 'aria-hidden': true\n }\n }, [h('div', {\n ref: 'title'\n }, this.normalizeSlot('title')), h('div', {\n ref: 'content'\n }, this.normalizeSlot('default'))]);\n }\n});","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport Popper from 'popper.js';\nimport PopOver from '../../utils/popover.class';\nimport warn from '../../utils/warn';\nimport { getComponentConfig } from '../../utils/config';\nimport { isBrowser } from '../../utils/env';\nimport { isFunction, isObject, isString } from '../../utils/inspect';\nimport { keys } from '../../utils/object'; // Key which we use to store tooltip object on element\n\nvar BV_POPOVER = '__BV_PopOver__'; // Valid event triggers\n\nvar validTriggers = {\n focus: true,\n hover: true,\n click: true,\n blur: true // Build a PopOver config based on bindings (if any)\n // Arguments and modifiers take precedence over passed value config object\n\n /* istanbul ignore next: not easy to test */\n\n};\n\nvar parseBindings = function parseBindings(bindings)\n/* istanbul ignore next: not easy to test */\n{\n // We start out with a basic config\n var config = {\n boundary: String(getComponentConfig('BPopover', 'boundary')),\n boundaryPadding: parseInt(getComponentConfig('BPopover', 'boundaryPadding'), 10) || 0 // Process bindings.value\n\n };\n\n if (isString(bindings.value)) {\n // Value is popover content (html optionally supported)\n config.content = bindings.value;\n } else if (isFunction(bindings.value)) {\n // Content generator function\n config.content = bindings.value;\n } else if (isObject(bindings.value)) {\n // Value is config object, so merge\n config = _objectSpread({}, config, bindings.value);\n } // If argument, assume element ID of container element\n\n\n if (bindings.arg) {\n // Element ID specified as arg\n // We must prepend '#' to become a CSS selector\n config.container = \"#\".concat(bindings.arg);\n } // Process modifiers\n\n\n keys(bindings.modifiers).forEach(function (mod) {\n if (/^html$/.test(mod)) {\n // Title allows HTML\n config.html = true;\n } else if (/^nofade$/.test(mod)) {\n // no animation\n config.animation = false;\n } else if (/^(auto|top(left|right)?|bottom(left|right)?|left(top|bottom)?|right(top|bottom)?)$/.test(mod)) {\n // placement of popover\n config.placement = mod;\n } else if (/^(window|viewport|scrollParent)$/.test(mod)) {\n // Boundary of popover\n config.boundary = mod;\n } else if (/^d\\d+$/.test(mod)) {\n // Delay value\n var delay = parseInt(mod.slice(1), 10) || 0;\n\n if (delay) {\n config.delay = delay;\n }\n } else if (/^o-?\\d+$/.test(mod)) {\n // Offset value (negative allowed)\n var offset = parseInt(mod.slice(1), 10) || 0;\n\n if (offset) {\n config.offset = offset;\n }\n }\n }); // Special handling of event trigger modifiers trigger is\n // a space separated list\n\n var selectedTriggers = {}; // Parse current config object trigger\n\n var triggers = isString(config.trigger) ? config.trigger.trim().split(/\\s+/) : [];\n triggers.forEach(function (trigger) {\n if (validTriggers[trigger]) {\n selectedTriggers[trigger] = true;\n }\n }); // Parse modifiers for triggers\n\n keys(validTriggers).forEach(function (trigger) {\n if (bindings.modifiers[trigger]) {\n selectedTriggers[trigger] = true;\n }\n }); // Sanitize triggers\n\n config.trigger = keys(selectedTriggers).join(' ');\n\n if (config.trigger === 'blur') {\n // Blur by itself is useless, so convert it to focus\n config.trigger = 'focus';\n }\n\n if (!config.trigger) {\n // Remove trigger config\n delete config.trigger;\n }\n\n return config;\n}; // Add or update PopOver on our element\n\n\nvar applyPopover = function applyPopover(el, bindings, vnode) {\n if (!isBrowser) {\n /* istanbul ignore next */\n return;\n } // Popper is required for PopOvers to work\n\n\n if (!Popper) {\n /* istanbul ignore next */\n warn('v-b-popover: Popper.js is required for PopOvers to work');\n /* istanbul ignore next */\n\n return;\n }\n\n var config = parseBindings(bindings);\n\n if (el[BV_POPOVER]) {\n el[BV_POPOVER].updateConfig(config);\n } else {\n el[BV_POPOVER] = new PopOver(el, config, vnode.context.$root);\n }\n}; // Remove PopOver on our element\n\n\nvar removePopover = function removePopover(el) {\n if (el[BV_POPOVER]) {\n el[BV_POPOVER].destroy();\n el[BV_POPOVER] = null;\n delete el[BV_POPOVER];\n }\n};\n/*\n * Export our directive\n */\n\n\nexport default {\n bind: function bind(el, bindings, vnode) {\n applyPopover(el, bindings, vnode);\n },\n inserted: function inserted(el, bindings, vnode) {\n applyPopover(el, bindings, vnode);\n },\n update: function update(el, bindings, vnode)\n /* istanbul ignore next: not easy to test */\n {\n if (bindings.value !== bindings.oldValue) {\n applyPopover(el, bindings, vnode);\n }\n },\n componentUpdated: function componentUpdated(el, bindings, vnode)\n /* istanbul ignore next: not easy to test */\n {\n if (bindings.value !== bindings.oldValue) {\n applyPopover(el, bindings, vnode);\n }\n },\n unbind: function unbind(el) {\n removePopover(el);\n }\n};","import BPopover from './popover';\nimport VBPopover from '../../directives/popover/popover';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BPopover: BPopover\n};\nvar directives = {\n VBPopover: VBPopover\n};\nexport { BPopover };\nexport default {\n install: installFactory({\n components: components,\n directives: directives\n })\n};","import Vue from '../../utils/vue';\nimport { getComponentConfig } from '../../utils/config';\nimport { htmlOrText } from '../../utils/html';\nimport { isBoolean, isNumber } from '../../utils/inspect';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nvar NAME = 'BProgressBar'; // @vue/component\n\nexport default Vue.extend({\n name: NAME,\n mixins: [normalizeSlotMixin],\n inject: {\n bvProgress: {\n default: function _default()\n /* istanbul ignore next */\n {\n return {};\n }\n }\n },\n props: {\n value: {\n type: Number,\n default: 0\n },\n label: {\n type: String,\n default: null\n },\n labelHtml: {\n type: String\n },\n // $parent (this.bvProgress) prop values may take precedence over the following props\n // Which is why they are defaulted to null\n max: {\n type: Number,\n default: null\n },\n precision: {\n type: Number,\n default: null\n },\n variant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'variant');\n }\n },\n striped: {\n type: Boolean,\n default: null\n },\n animated: {\n type: Boolean,\n default: null\n },\n showProgress: {\n type: Boolean,\n default: null\n },\n showValue: {\n type: Boolean,\n default: null\n }\n },\n computed: {\n progressBarClasses: function progressBarClasses() {\n return [this.computedVariant ? \"bg-\".concat(this.computedVariant) : '', this.computedStriped || this.computedAnimated ? 'progress-bar-striped' : '', this.computedAnimated ? 'progress-bar-animated' : ''];\n },\n progressBarStyles: function progressBarStyles() {\n return {\n width: 100 * (this.value / this.computedMax) + '%'\n };\n },\n computedProgress: function computedProgress() {\n var p = Math.pow(10, this.computedPrecision);\n return Math.round(100 * p * this.value / this.computedMax) / p;\n },\n computedMax: function computedMax() {\n // Prefer our max over parent setting\n return isNumber(this.max) ? this.max : this.bvProgress.max || 100;\n },\n computedVariant: function computedVariant() {\n // Prefer our variant over parent setting\n return this.variant || this.bvProgress.variant;\n },\n computedPrecision: function computedPrecision() {\n // Prefer our precision over parent setting\n return isNumber(this.precision) ? this.precision : this.bvProgress.precision || 0;\n },\n computedStriped: function computedStriped() {\n // Prefer our striped over parent setting\n return isBoolean(this.striped) ? this.striped : this.bvProgress.striped || false;\n },\n computedAnimated: function computedAnimated() {\n // Prefer our animated over parent setting\n return isBoolean(this.animated) ? this.animated : this.bvProgress.animated || false;\n },\n computedShowProgress: function computedShowProgress() {\n // Prefer our showProgress over parent setting\n return isBoolean(this.showProgress) ? this.showProgress : this.bvProgress.showProgress || false;\n },\n computedShowValue: function computedShowValue() {\n // Prefer our showValue over parent setting\n return isBoolean(this.showValue) ? this.showValue : this.bvProgress.showValue || false;\n }\n },\n render: function render(h) {\n var childNodes = h(false);\n\n if (this.hasNormalizedSlot('default')) {\n childNodes = this.normalizeSlot('default');\n } else if (this.label || this.labelHtml) {\n childNodes = h('span', {\n domProps: htmlOrText(this.labelHtml, this.label)\n });\n } else if (this.computedShowProgress) {\n childNodes = this.computedProgress.toFixed(this.computedPrecision);\n } else if (this.computedShowValue) {\n childNodes = this.value.toFixed(this.computedPrecision);\n }\n\n return h('div', {\n staticClass: 'progress-bar',\n class: this.progressBarClasses,\n style: this.progressBarStyles,\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': '0',\n 'aria-valuemax': this.computedMax.toString(),\n 'aria-valuenow': this.value.toFixed(this.computedPrecision)\n }\n }, [childNodes]);\n }\n});","import Vue from '../../utils/vue';\nimport { getComponentConfig } from '../../utils/config';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport BProgressBar from './progress-bar';\nvar NAME = 'BProgress'; // @vue/component\n\nexport default Vue.extend({\n name: NAME,\n mixins: [normalizeSlotMixin],\n provide: function provide() {\n return {\n bvProgress: this\n };\n },\n props: {\n // These props can be inherited via the child b-progress-bar(s)\n variant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'variant');\n }\n },\n striped: {\n type: Boolean,\n default: false\n },\n animated: {\n type: Boolean,\n default: false\n },\n height: {\n type: String,\n default: null\n },\n precision: {\n type: Number,\n default: 0\n },\n showProgress: {\n type: Boolean,\n default: false\n },\n showValue: {\n type: Boolean,\n default: false\n },\n max: {\n type: Number,\n default: 100\n },\n // This prop is not inherited by child b-progress-bar(s)\n value: {\n type: Number,\n default: 0\n }\n },\n computed: {\n progressHeight: function progressHeight() {\n return {\n height: this.height || null\n };\n }\n },\n render: function render(h) {\n var childNodes = this.normalizeSlot('default');\n\n if (!childNodes) {\n childNodes = h(BProgressBar, {\n props: {\n value: this.value,\n max: this.max,\n precision: this.precision,\n variant: this.variant,\n animated: this.animated,\n striped: this.striped,\n showProgress: this.showProgress,\n showValue: this.showValue\n }\n });\n }\n\n return h('div', {\n class: ['progress'],\n style: this.progressHeight\n }, [childNodes]);\n }\n});","import BProgress from './progress';\nimport BProgressBar from './progress-bar';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BProgress: BProgress,\n BProgressBar: BProgressBar\n};\nexport { BProgress, BProgressBar };\nexport default {\n install: installFactory({\n components: components\n })\n};","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; }\n\nimport Vue from '../../utils/vue';\nimport { mergeData } from 'vue-functional-data-merge';\nimport { getComponentConfig } from '../../utils/config';\nimport { normalizeSlot } from '../../utils/normalize-slot';\nvar NAME = 'BSpinner'; // @vue/component\n\nexport default Vue.extend({\n name: NAME,\n functional: true,\n props: {\n type: {\n type: String,\n default: 'border' // SCSS currently supports 'border' or 'grow'\n\n },\n label: {\n type: String,\n default: null\n },\n variant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'variant');\n }\n },\n small: {\n type: Boolean,\n default: false\n },\n role: {\n type: String,\n default: 'status'\n },\n tag: {\n type: String,\n default: 'span'\n }\n },\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n var label = normalizeSlot('label', {}, $scopedSlots, $slots) || props.label;\n\n if (label) {\n label = h('span', {\n staticClass: 'sr-only'\n }, label);\n }\n\n return h(props.tag, mergeData(data, {\n attrs: {\n role: label ? props.role || 'status' : null,\n 'aria-hidden': label ? null : 'true'\n },\n class: (_class = {}, _defineProperty(_class, \"spinner-\".concat(props.type), Boolean(props.type)), _defineProperty(_class, \"spinner-\".concat(props.type, \"-sm\"), props.small), _defineProperty(_class, \"text-\".concat(props.variant), Boolean(props.variant)), _class)\n }), [label || h(false)]);\n }\n});","import BSpinner from './spinner';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BSpinner: BSpinner\n};\nexport { BSpinner };\nexport default {\n install: installFactory({\n components: components\n })\n};","/**\n * Converts a string, including strings in camelCase or snake_case, into Start Case (a variant\n * of Title Case where all words start with a capital letter), it keeps original single quote\n * and hyphen in the word.\n *\n * Copyright (c) 2017 Compass (MIT)\n * https://github.com/UrbanCompass/to-start-case\n * @author Zhuoyuan Zhang <https://github.com/drawyan>\n * @author Wei Wang <https://github.com/onlywei>\n *\n *\n * 'management_companies' to 'Management Companies'\n * 'managementCompanies' to 'Management Companies'\n * `hell's kitchen` to `Hell's Kitchen`\n * `co-op` to `Co-op`\n *\n * @param {String} str\n * @returns {String}\n */\nvar startCase = function startCase(str) {\n return str.replace(/_/g, ' ').replace(/([a-z])([A-Z])/g, function (str, $1, $2) {\n return $1 + ' ' + $2;\n }).replace(/(\\s|^)(\\w)/g, function (str, $1, $2) {\n return $1 + $2.toUpperCase();\n });\n};\n\nexport default startCase;","// Constants used by table helpers\n// Object of item keys that should be ignored for headers and stringification and filter events\nexport var IGNORED_FIELD_KEYS = {\n _rowVariant: true,\n _cellVariants: true,\n _showDetails: true // Filter CSS Selector for click/dblclick/etc events\n // If any of these selectors match the clicked element, we ignore the event\n\n};\nexport var EVENT_FILTER = ['a', 'a *', // include content inside links\n'button', 'button *', // include content inside buttons\n'input:not(.disabled):not([disabled])', 'select:not(.disabled):not([disabled])', 'textarea:not(.disabled):not([disabled])', '[role=\"link\"]', '[role=\"link\"] *', '[role=\"button\"]', '[role=\"button\"] *', '[tabindex]:not(.disabled):not([disabled])'].join(',');","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport startCase from '../../../utils/startcase';\nimport { isArray, isFunction, isObject, isString } from '../../../utils/inspect';\nimport { keys } from '../../../utils/object';\nimport { IGNORED_FIELD_KEYS } from './constants'; // Private function to massage field entry into common object format\n\nvar processField = function processField(key, value) {\n var field = null;\n\n if (isString(value)) {\n // Label shortcut\n field = {\n key: key,\n label: value\n };\n } else if (isFunction(value)) {\n // Formatter shortcut\n field = {\n key: key,\n formatter: value\n };\n } else if (isObject(value)) {\n field = _objectSpread({}, value);\n field.key = field.key || key;\n } else if (value !== false) {\n // Fallback to just key\n\n /* istanbul ignore next */\n field = {\n key: key\n };\n }\n\n return field;\n}; // We normalize fields into an array of objects\n// [ { key:..., label:..., ...}, {...}, ..., {..}]\n\n\nvar normalizeFields = function normalizeFields(origFields, items) {\n var fields = [];\n\n if (isArray(origFields)) {\n // Normalize array Form\n origFields.filter(function (f) {\n return f;\n }).forEach(function (f) {\n if (isString(f)) {\n fields.push({\n key: f,\n label: startCase(f)\n });\n } else if (isObject(f) && f.key && isString(f.key)) {\n // Full object definition. We use assign so that we don't mutate the original\n fields.push(_objectSpread({}, f));\n } else if (isObject(f) && keys(f).length === 1) {\n // Shortcut object (i.e. { 'foo_bar': 'This is Foo Bar' }\n var key = keys(f)[0];\n var field = processField(key, f[key]);\n\n if (field) {\n fields.push(field);\n }\n }\n });\n } else if (origFields && isObject(origFields) && keys(origFields).length > 0) {\n // Normalize object Form (deprecated)\n keys(origFields).forEach(function (key) {\n var field = processField(key, origFields[key]);\n\n if (field) {\n fields.push(field);\n }\n });\n } // If no field provided, take a sample from first record (if exits)\n\n\n if (fields.length === 0 && isArray(items) && items.length > 0) {\n var sample = items[0];\n keys(sample).forEach(function (k) {\n if (!IGNORED_FIELD_KEYS[k]) {\n fields.push({\n key: k,\n label: startCase(k)\n });\n }\n });\n } // Ensure we have a unique array of fields and that they have String labels\n\n\n var memo = {};\n return fields.filter(function (f) {\n if (!memo[f.key]) {\n memo[f.key] = true;\n f.label = isString(f.label) ? f.label : startCase(f.key);\n return true;\n }\n\n return false;\n });\n};\n\nexport default normalizeFields;","import { isArray, isNull, isUndefined } from '../../../utils/inspect';\nimport normalizeFields from './normalize-fields';\nexport default {\n props: {\n items: {\n type: [Array, Function],\n default: function _default()\n /* istanbul ignore next */\n {\n return [];\n }\n },\n fields: {\n // Object format is deprecated and should be avoided\n type: [Array, Object],\n default: null\n },\n primaryKey: {\n // Primary key for record.\n // If provided the value in each row must be unique!!!\n type: String,\n default: null\n }\n },\n data: function data() {\n return {\n // Our local copy of the items. Must be an array\n localItems: isArray(this.items) ? this.items.slice() : []\n };\n },\n computed: {\n computedFields: function computedFields() {\n // We normalize fields into an array of objects\n // [ { key:..., label:..., ...}, {...}, ..., {..}]\n return normalizeFields(this.fields, this.localItems);\n },\n computedFieldsObj: function computedFieldsObj()\n /* istanbul ignore next: not using at the moment */\n {\n // Fields as a simple lookup hash object\n // Mainly for scopedSlots for convenience\n return this.computedFields.reduce(function (f, obj) {\n obj[f.key] = f;\n return obj;\n }, {});\n }\n },\n watch: {\n items: function items(newItems) {\n /* istanbul ignore else */\n if (isArray(newItems)) {\n // Set localItems/filteredItems to a copy of the provided array\n this.localItems = newItems.slice();\n } else if (isUndefined(newItems) || isNull(newItems)) {\n /* istanbul ignore next */\n this.localItems = [];\n }\n }\n }\n};","import { keys } from '../../../utils/object';\nimport { IGNORED_FIELD_KEYS } from './constants'; // Return a copy of a row after all reserved fields have been filtered out\n// TODO: add option to specify which fields to include\n\nexport default function sanitizeRow(row) {\n return keys(row).reduce(function (obj, key) {\n // Ignore special fields that start with _\n if (!IGNORED_FIELD_KEYS[key]) {\n obj[key] = row[key];\n }\n\n return obj;\n }, {});\n}","import { keys } from '../../../utils/object';\nimport { isNull, isUndefined } from '../../../utils/inspect'; // Recursively stringifies the values of an object, space separated, in an\n// SSR safe deterministic way (keys are sorted before stringification)\n//\n// ex:\n// { b: 3, c: { z: 'zzz', d: null, e: 2 }, d: [10, 12, 11], a: 'one' }\n// becomes\n// 'one 3 2 zzz 10 12 11'\n//\n// Primitives (numbers/strings) are returned as-is\n// Null and undefined values are filtered out\n// Dates are converted to their native string format\n//\n\nexport default function stringifyObjectValues(val) {\n if (isUndefined(val) || isNull(val)) {\n /* istanbul ignore next */\n return '';\n }\n\n if (val instanceof Object && !(val instanceof Date)) {\n // Arrays are also object, and keys just returns the array indexes\n // Date objects we convert to strings\n return keys(val).sort()\n /* sort to prevent SSR issues on pre-rendered sorted tables */\n .filter(function (v) {\n return !isUndefined(v) && !isNull(v);\n })\n /* ignore undefined/null values */\n .map(function (k) {\n return stringifyObjectValues(val[k]);\n }).join(' ');\n }\n\n return String(val);\n}","import sanitizeRow from './sanitize-row';\nimport stringifyObjectValues from './stringify-object-values'; // Stringifies the values of a record, ignoring any special top level field keys\n// TODO: add option to strigify formatted/scopedSlot items, and only specific fields\n\nexport default function stringifyRecordValues(row) {\n /* istanbul ignore else */\n if (row instanceof Object) {\n return stringifyObjectValues(sanitizeRow(row));\n } else {\n /* istanbul ignore next */\n return '';\n }\n}","import looseEqual from '../../../utils/loose-equal';\nimport warn from '../../../utils/warn';\nimport { isFunction, isString, isRegExp } from '../../../utils/inspect';\nimport stringifyRecordValues from './stringify-record-values';\nvar DEPRECATION_MSG = 'Supplying a function to prop \"filter\" is deprecated. Use \"filter-function\" instead.';\nexport default {\n props: {\n filter: {\n // Passing a function to filter is deprecated and should be avoided\n type: [String, RegExp, Object, Array, Function],\n default: null,\n // `deprecated` -> Don't use this prop\n // `deprecation` -> Refers to a change in prop usage\n deprecation: DEPRECATION_MSG\n },\n filterFunction: {\n type: Function,\n default: null\n }\n },\n data: function data() {\n return {\n // Flag for displaying which empty slot to show, and for some event triggering.\n isFiltered: false\n };\n },\n computed: {\n localFiltering: function localFiltering() {\n return this.hasProvider ? !!this.noProviderFiltering : true;\n },\n filteredCheck: function filteredCheck() {\n // For watching changes to filteredItems vs localItems\n return {\n filteredItems: this.filteredItems,\n localItems: this.localItems,\n localFilter: this.localFilter\n };\n },\n localFilter: function localFilter() {\n // Returns a sanitized/normalized version of filter prop\n if (isFunction(this.filter)) {\n // this.localFilterFn will contain the correct function ref.\n // Deprecate setting prop filter to a function\n\n /* istanbul ignore next */\n return '';\n } else if (!isFunction(this.filterFunction) && !(isString(this.filter) || isRegExp(this.filter))) {\n // Using internal filter function, which only accepts string or regexp at the moment\n return '';\n } else {\n // Could be a string, object or array, as needed by external filter function\n return this.filter;\n }\n },\n localFilterFn: function localFilterFn() {\n var filter = this.filter;\n var filterFn = this.filterFunction; // Sanitized/normalize filter-function prop\n\n if (isFunction(filterFn)) {\n return filterFn;\n } else if (isFunction(filter)) {\n // Deprecate setting prop filter to a function\n\n /* istanbul ignore next */\n warn(\"b-table: \".concat(DEPRECATION_MSG));\n /* istanbul ignore next */\n\n return filter;\n } else {\n // no filterFunction, so signal to use internal filter function\n return null;\n }\n },\n filteredItems: function filteredItems() {\n // Returns the records in localItems that match the filter criteria.\n // Returns the original localItems array if not sorting\n var items = this.localItems || [];\n var criteria = this.localFilter;\n var filterFn = this.filterFnFactory(this.localFilterFn, criteria) || this.defaultFilterFnFactory(criteria); // We only do local filtering if requested, and if the are records to filter and\n // if a filter criteria was specified\n\n if (this.localFiltering && filterFn && items.length > 0) {\n items = items.filter(filterFn);\n }\n\n return items;\n }\n },\n watch: {\n // Watch for changes to the filter criteria and filtered items vs localItems).\n // And set visual state and emit events as required\n filteredCheck: function filteredCheck(_ref) {\n var filteredItems = _ref.filteredItems,\n localItems = _ref.localItems,\n localFilter = _ref.localFilter;\n // Determine if the dataset is filtered or not\n var isFiltered;\n\n if (!localFilter) {\n // If filter criteria is falsey\n isFiltered = false;\n } else if (looseEqual(localFilter, []) || looseEqual(localFilter, {})) {\n // If filter criteria is an empty array or object\n isFiltered = false;\n } else if (localFilter) {\n // if Filter criteria is truthy\n isFiltered = true;\n } else {\n /* istanbul ignore next: rare chance of reaching this else */\n isFiltered = false;\n }\n\n if (isFiltered) {\n this.$emit('filtered', filteredItems, filteredItems.length);\n }\n\n this.isFiltered = isFiltered;\n },\n isFiltered: function isFiltered(newVal, oldVal) {\n if (newVal === false && oldVal === true) {\n // We need to emit a filtered event if isFiltered transitions from true to\n // false so that users can update their pagination controls.\n this.$emit('filtered', this.localItems, this.localItems.length);\n }\n }\n },\n created: function created() {\n var _this = this;\n\n // Set the initial filtered state.\n // In a nextTick so that we trigger a filtered event if needed\n this.$nextTick(function () {\n _this.isFiltered = Boolean(_this.localFilter);\n });\n },\n methods: {\n // Filter Function factories\n filterFnFactory: function filterFnFactory(filterFn, criteria) {\n // Wrapper factory for external filter functions.\n // Wrap the provided filter-function and return a new function.\n // Returns null if no filter-function defined or if criteria is falsey.\n // Rather than directly grabbing this.computedLocalFilterFn or this.filterFunction\n // we have it passed, so that the caller computed prop will be reactive to changes\n // in the original filter-function (as this routine is a method)\n if (!filterFn || !isFunction(filterFn) || !criteria || looseEqual(criteria, []) || looseEqual(criteria, {})) {\n return null;\n } // Build the wrapped filter test function, passing the criteria to the provided function\n\n\n var fn = function fn(item) {\n // Generated function returns true if the criteria matches part\n // of the serialized data, otherwise false\n return filterFn(item, criteria);\n }; // Return the wrapped function\n\n\n return fn;\n },\n defaultFilterFnFactory: function defaultFilterFnFactory(criteria) {\n // Generates the default filter function, using the given filter criteria\n if (!criteria || !(isString(criteria) || isRegExp(criteria))) {\n // Built in filter can only support strings or RegExp criteria (at the moment)\n return null;\n } // Build the regexp needed for filtering\n\n\n var regexp = criteria;\n\n if (isString(regexp)) {\n // Escape special RegExp characters in the string and convert contiguous\n // whitespace to \\s+ matches\n var pattern = criteria.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&').replace(/[\\s\\uFEFF\\xA0]+/g, '\\\\s+'); // Build the RegExp (no need for global flag, as we only need\n // to find the value once in the string)\n\n regexp = new RegExp(\".*\".concat(pattern, \".*\"), 'i');\n } // Generate the wrapped filter test function to use\n\n\n var fn = function fn(item) {\n // This searches all row values (and sub property values) in the entire (excluding\n // special _ prefixed keys), because we convert the record to a space-separated\n // string containing all the value properties (recursively), even ones that are\n // not visible (not specified in this.fields).\n //\n // TODO: Enable searching on formatted fields and scoped slots\n // TODO: Should we filter only on visible fields (i.e. ones in this.fields) by default?\n // TODO: Allow for searching on specific fields/key, this could be combined with the previous TODO\n // TODO: Give stringifyRecordValues extra options for filtering (i.e. passing the\n // fields definition and a reference to $scopedSlots)\n //\n // Generated function returns true if the criteria matches part of\n // the serialized data, otherwise false\n // We set lastIndex = 0 on regex in case someone uses the /g global flag\n regexp.lastIndex = 0;\n return regexp.test(stringifyRecordValues(item));\n }; // Return the generated function\n\n\n return fn;\n }\n }\n};","/*\n * Consistent and stable sort function across JavaScript platforms\n *\n * Inconsistent sorts can cause SSR problems between client and server\n * such as in <b-table> if sortBy is applied to the data on server side render.\n * Chrome and V8 native sorts are inconsistent/unstable\n *\n * This function uses native sort with fallback to index compare when the a and b\n * compare returns 0\n *\n * Algorithm based on:\n * https://stackoverflow.com/questions/1427608/fast-stable-sorting-algorithm-implementation-in-javascript/45422645#45422645\n *\n * @param {array} array to sort\n * @param {function} sort compare function\n * @return {array}\n */\nvar stableSort = function stableSort(array, compareFn) {\n // Using `.bind(compareFn)` on the wrapped anonymous function improves\n // performance by avoiding the function call setup. We don't use an arrow\n // function here as it binds `this` to the `stableSort` context rather than\n // the `compareFn` context, which wouldn't give us the performance increase.\n return array.map(function (a, index) {\n return [index, a];\n }).sort(function (a, b) {\n return this(a[1], b[1]) || a[0] - b[0];\n }.bind(compareFn)).map(function (e) {\n return e[1];\n });\n};\n\nexport default stableSort;","import get from '../../../utils/get';\nimport { isDate, isNumber } from '../../../utils/inspect';\nimport stringifyObjectValues from './stringify-object-values'; // Default sort compare routine\n//\n// TODO: add option to sort by multiple columns (tri-state per column, plus order of columns in sort)\n// where sortBy could be an array of objects [ {key: 'foo', sortDir: 'asc'}, {key:'bar', sortDir: 'desc'} ...]\n// or an array of arrays [ ['foo','asc'], ['bar','desc'] ]\n\nexport default function defaultSortCompare(a, b, sortBy) {\n a = get(a, sortBy, '');\n b = get(b, sortBy, '');\n\n if (isDate(a) && isDate(b) || isNumber(a) && isNumber(b)) {\n // Special case for comparing Dates and Numbers\n // Internally dates are compared via their epoch number values\n if (a < b) {\n return -1;\n } else if (a > b) {\n return 1;\n } else {\n return 0;\n }\n } else {\n // Do localized string comparison\n return stringifyObjectValues(a).localeCompare(stringifyObjectValues(b), undefined, {\n numeric: true\n });\n }\n}","import stableSort from '../../../utils/stable-sort';\nimport startCase from '../../../utils/startcase';\nimport { arrayIncludes } from '../../../utils/array';\nimport { isFunction, isNull, isUndefined } from '../../../utils/inspect';\nimport defaultSortCompare from './default-sort-compare';\nexport default {\n props: {\n sortBy: {\n type: String,\n default: null\n },\n sortDesc: {\n // To Do: Make this tri-state: true, false, null\n type: Boolean,\n default: false\n },\n sortDirection: {\n // This prop is named incorrectly.\n // It should be initialSortDirection\n // As it is a bit misleading (not to mention screws up\n // the Aria Label on the headers)\n type: String,\n default: 'asc',\n validator: function validator(direction) {\n return arrayIncludes(['asc', 'desc', 'last'], direction);\n }\n },\n sortCompare: {\n type: Function,\n default: null\n },\n noSortReset: {\n // Another prop that should have had a better name.\n // It should be noSortClear (on non-sortable headers).\n // We will need to make sure the documentation is clear on what\n // this prop does (as well as in the code for future reference)\n type: Boolean,\n default: false\n },\n labelSortAsc: {\n type: String,\n default: 'Click to sort Ascending'\n },\n labelSortDesc: {\n type: String,\n default: 'Click to sort Descending'\n },\n labelSortClear: {\n type: String,\n default: 'Click to clear sorting'\n },\n noLocalSorting: {\n type: Boolean,\n default: false\n },\n noFooterSorting: {\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n return {\n localSortBy: this.sortBy || '',\n localSortDesc: this.sortDesc || false\n };\n },\n computed: {\n localSorting: function localSorting() {\n return this.hasProvider ? !!this.noProviderSorting : !this.noLocalSorting;\n },\n isSortable: function isSortable() {\n return this.computedFields.some(function (f) {\n return f.sortable;\n });\n },\n sortedItems: function sortedItems() {\n // Sorts the filtered items and returns a new array of the sorted items\n // or the original items array if not sorted.\n var items = (this.filteredItems || []).slice();\n var sortBy = this.localSortBy;\n var sortDesc = this.localSortDesc;\n var sortCompare = this.sortCompare;\n var localSorting = this.localSorting;\n\n if (sortBy && localSorting) {\n // stableSort returns a new array, and leaves the original array intact\n return stableSort(items, function (a, b) {\n var result = null;\n\n if (isFunction(sortCompare)) {\n // Call user provided sortCompare routine\n result = sortCompare(a, b, sortBy, sortDesc);\n }\n\n if (isUndefined(result) || isNull(result) || result === false) {\n // Fallback to built-in defaultSortCompare if sortCompare\n // is not defined or returns null/false\n result = defaultSortCompare(a, b, sortBy);\n } // Negate result if sorting in descending order\n\n\n return (result || 0) * (sortDesc ? -1 : 1);\n });\n }\n\n return items;\n }\n },\n watch: {\n isSortable: function isSortable(newVal, oldVal)\n /* istanbul ignore next: pain in the butt to test */\n {\n if (newVal) {\n if (this.isSortable) {\n this.$on('head-clicked', this.handleSort);\n }\n } else {\n this.$off('head-clicked', this.handleSort);\n }\n },\n sortDesc: function sortDesc(newVal, oldVal) {\n if (newVal === this.localSortDesc) {\n /* istanbul ignore next */\n return;\n }\n\n this.localSortDesc = newVal || false;\n },\n sortBy: function sortBy(newVal, oldVal) {\n if (newVal === this.localSortBy) {\n /* istanbul ignore next */\n return;\n }\n\n this.localSortBy = newVal || null;\n },\n // Update .sync props\n localSortDesc: function localSortDesc(newVal, oldVal) {\n // Emit update to sort-desc.sync\n if (newVal !== oldVal) {\n this.$emit('update:sortDesc', newVal);\n }\n },\n localSortBy: function localSortBy(newVal, oldVal) {\n if (newVal !== oldVal) {\n this.$emit('update:sortBy', newVal);\n }\n }\n },\n created: function created() {\n if (this.isSortable) {\n this.$on('head-clicked', this.handleSort);\n }\n },\n methods: {\n // Handlers\n // Need to move from thead-mixin\n handleSort: function handleSort(key, field, evt, isFoot) {\n var _this = this;\n\n if (!this.isSortable) {\n /* istanbul ignore next */\n return;\n }\n\n if (isFoot && this.noFooterSorting) {\n return;\n } // TODO: make this tri-state sorting\n // cycle desc => asc => none => desc => ...\n\n\n var sortChanged = false;\n\n var toggleLocalSortDesc = function toggleLocalSortDesc() {\n var sortDirection = field.sortDirection || _this.sortDirection;\n\n if (sortDirection === 'asc') {\n _this.localSortDesc = false;\n } else if (sortDirection === 'desc') {\n _this.localSortDesc = true;\n } else {// sortDirection === 'last'\n // Leave at last sort direction from previous column\n }\n };\n\n if (field.sortable) {\n if (key === this.localSortBy) {\n // Change sorting direction on current column\n this.localSortDesc = !this.localSortDesc;\n } else {\n // Start sorting this column ascending\n this.localSortBy = key; // this.localSortDesc = false\n\n toggleLocalSortDesc();\n }\n\n sortChanged = true;\n } else if (this.localSortBy && !this.noSortReset) {\n this.localSortBy = null;\n toggleLocalSortDesc();\n sortChanged = true;\n }\n\n if (sortChanged) {\n // Sorting parameters changed\n this.$emit('sort-changed', this.context);\n }\n },\n // methods to compute classes and attrs for thead>th cells\n sortTheadThClasses: function sortTheadThClasses(key, field, isFoot) {\n return {// No Classes for sorting currently...\n // All styles targeted using aria-* attrs\n };\n },\n sortTheadThAttrs: function sortTheadThAttrs(key, field, isFoot) {\n if (!this.isSortable || isFoot && this.noFooterSorting) {\n // No attributes if not a sortable table\n return {};\n }\n\n var sortable = field.sortable;\n var ariaLabel = '';\n\n if ((!field.label || !field.label.trim()) && !field.headerTitle) {\n // In case field's label and title are empty/blank, we need to\n // add a hint about what the column is about for non-sighted users.\n // This is duplicated code from tbody-row mixin, but we need it\n // here as well, since we overwrite the original aria-label.\n\n /* istanbul ignore next */\n ariaLabel = startCase(key);\n } // The correctness of these labels is very important for screen-reader users.\n\n\n var ariaLabelSorting = '';\n\n if (sortable) {\n if (this.localSortBy === key) {\n // currently sorted sortable column.\n ariaLabelSorting = this.localSortDesc ? this.labelSortAsc : this.labelSortDesc;\n } else {\n // Not currently sorted sortable column.\n // Not using nested ternary's here for clarity/readability\n // Default for ariaLabel\n ariaLabelSorting = this.localSortDesc ? this.labelSortDesc : this.labelSortAsc; // Handle sortDirection setting\n\n var sortDirection = this.sortDirection || field.sortDirection;\n\n if (sortDirection === 'asc') {\n ariaLabelSorting = this.labelSortAsc;\n } else if (sortDirection === 'desc') {\n ariaLabelSorting = this.labelSortDesc;\n }\n }\n } else if (!this.noSortReset) {\n // Non sortable column\n ariaLabelSorting = this.localSortBy ? this.labelSortClear : '';\n } // Assemble the aria-label attribute value\n\n\n ariaLabel = [ariaLabel.trim(), ariaLabelSorting.trim()].filter(Boolean).join(': '); // Assemble the aria-sort attribute value\n\n var ariaSort = sortable && this.localSortBy === key ? this.localSortDesc ? 'descending' : 'ascending' : sortable ? 'none' : null; // Return the attributes\n // (All the above just to get these two values)\n\n return {\n 'aria-label': ariaLabel || null,\n 'aria-sort': ariaSort\n };\n }\n }\n};","export default {\n props: {\n perPage: {\n type: [Number, String],\n default: 0\n },\n currentPage: {\n type: [Number, String],\n default: 1\n }\n },\n computed: {\n localPaging: function localPaging() {\n return this.hasProvider ? !!this.noProviderPaging : true;\n },\n paginatedItems: function paginatedItems() {\n var items = this.sortedItems || [];\n var currentPage = Math.max(parseInt(this.currentPage, 10) || 1, 1);\n var perPage = Math.max(parseInt(this.perPage, 10) || 0, 0); // Apply local pagination\n\n if (this.localPaging && !!perPage) {\n // Grab the current page of data (which may be past filtered items limit)\n items = items.slice((currentPage - 1) * perPage, currentPage * perPage);\n } // Return the items to display in the table\n\n\n return items;\n }\n }\n};","import { htmlOrText } from '../../../utils/html';\nexport default {\n props: {\n caption: {\n type: String,\n default: null\n },\n captionHtml: {\n type: String\n },\n captionTop: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n captionClasses: function captionClasses() {\n return {\n 'b-table-caption-top': this.captionTop\n };\n },\n captionId: function captionId() {\n // Even though this.safeId looks like a method, it is a computed prop\n // that returns a new function if the underlying ID changes\n return this.isStacked ? this.safeId('_caption_') : null;\n }\n },\n methods: {\n renderCaption: function renderCaption() {\n var h = this.$createElement; // Build the caption\n\n var $captionSlot = this.normalizeSlot('table-caption', {});\n var $caption = h(false);\n\n if ($captionSlot || this.caption || this.captionHtml) {\n var data = {\n key: 'caption',\n class: this.captionClasses,\n attrs: {\n id: this.captionId\n }\n };\n\n if (!$captionSlot) {\n data.domProps = htmlOrText(this.captionHtml, this.caption);\n }\n\n $caption = h('caption', data, [$captionSlot]);\n }\n\n return $caption;\n }\n }\n};","export default {\n methods: {\n renderColgroup: function renderColgroup() {\n var h = this.$createElement;\n var fields = this.computedFields;\n var $colgroup = h(false);\n\n if (this.hasNormalizedSlot('table-colgroup')) {\n $colgroup = h('colgroup', {\n key: 'colgroup'\n }, [this.normalizeSlot('table-colgroup', {\n columns: fields.length,\n fields: fields\n })]);\n }\n\n return $colgroup;\n }\n }\n};","import { closest, matches } from '../../../utils/dom';\nimport { EVENT_FILTER } from './constants'; // Returns true of we should ignore the click/dbclick/keypress event\n// Avoids having the user need to use @click.stop on the form control\n\nexport default function filterEvent(evt) {\n if (!evt || !evt.target) {\n /* istanbul ignore next */\n return;\n }\n\n var el = evt.target;\n\n if (el.tagName === 'TD' || el.tagName === 'TH' || el.tagName === 'TR' || el.disabled) {\n // Shortut all the following tests for efficiency\n return false;\n }\n\n if (closest('.dropdown-menu', el)) {\n // Click was in a dropdown menu, so ignore\n return true;\n }\n\n var label = el.tagName === 'LABEL' ? el : closest('label', el);\n\n if (label && label.control && !label.control.disabled) {\n // If the label's form control is not disabled then we don't propagate evt\n return true;\n } // Else check to see if the event target matches one of the selectors in the event filter\n // i.e. anchors, non disabled inputs, etc. Return true if we should ignore the event.\n\n\n return matches(el, EVENT_FILTER);\n}","// Helper to determine if a there is an active text selection on the document page.\n// Used to filter out click events caused by the mouse up at end of selection\n//\n// Accepts an element as only argument to test to see if selection overlaps or is\n// contained within the element\nimport { isElement } from '../../../utils/dom';\nexport default function textSelectionActive() {\n var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n var win = window;\n /* istanbul ignore if: JSDOM doesn't support getSelection */\n\n if (win && win.getSelection && win.getSelection().toString() !== '' && isElement(el)) {\n /* istanbul ignore next: JSDOM doesn't support getSelection */\n var sel = win.getSelection();\n /* istanbul ignore next: JSDOM doesn't support getSelection */\n\n return sel.containsNode ? sel.containsNode(el, true) : false;\n } else {\n return false;\n }\n}","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport KeyCodes from '../../../utils/key-codes';\nimport startCase from '../../../utils/startcase';\nimport { getComponentConfig } from '../../../utils/config';\nimport { htmlOrText } from '../../../utils/html';\nimport filterEvent from './filter-event';\nimport textSelectionActive from './text-selection-active';\nexport default {\n props: {\n headVariant: {\n type: String,\n default: function _default() {\n return getComponentConfig('BTable', 'headVariant');\n }\n },\n theadClass: {\n type: [String, Array, Object],\n default: null\n },\n theadTrClass: {\n type: [String, Array, Object],\n default: null\n }\n },\n computed: {\n headClasses: function headClasses() {\n return [this.headVariant ? 'thead-' + this.headVariant : '', this.theadClass];\n }\n },\n methods: {\n fieldClasses: function fieldClasses(field) {\n // header field (th) classes\n return [field.variant ? 'table-' + field.variant : '', field.class ? field.class : '', field.thClass ? field.thClass : ''];\n },\n headClicked: function headClicked(evt, field, isFoot) {\n if (this.stopIfBusy(evt)) {\n // If table is busy (via provider) then don't propagate\n return;\n } else if (filterEvent(evt)) {\n // clicked on a non-disabled control so ignore\n return;\n } else if (textSelectionActive(this.$el)) {\n // User is selecting text, so ignore\n\n /* istanbul ignore next: JSDOM doesn't support getSelection() */\n return;\n }\n\n evt.stopPropagation();\n evt.preventDefault();\n this.$emit('head-clicked', field.key, field, evt, isFoot);\n },\n renderThead: function renderThead() {\n var _this = this;\n\n var isFoot = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var h = this.$createElement;\n\n if (this.isStacked === true) {\n // In always stacked mode, we don't bother rendering the head/foot\n return h(false);\n }\n\n var fields = this.computedFields || []; // Helper function to generate a field TH cell\n\n var makeCell = function makeCell(field, colIndex) {\n var ariaLabel = null;\n\n if (!field.label.trim() && !field.headerTitle) {\n // In case field's label and title are empty/blank\n // We need to add a hint about what the column is about for non-sighted users\n\n /* istanbul ignore next */\n ariaLabel = startCase(field.key);\n }\n\n var hasHeadClickListener = _this.$listeners['head-clicked'] || _this.isSortable;\n var handlers = {};\n\n if (hasHeadClickListener) {\n handlers.click = function (evt) {\n _this.headClicked(evt, field, isFoot);\n };\n\n handlers.keydown = function (evt) {\n var keyCode = evt.keyCode;\n\n if (keyCode === KeyCodes.ENTER || keyCode === KeyCodes.SPACE) {\n _this.headClicked(evt, field, isFoot);\n }\n };\n }\n\n var data = {\n key: field.key,\n class: [_this.fieldClasses(field), _this.sortTheadThClasses(field.key, field, isFoot)],\n style: field.thStyle || {},\n attrs: _objectSpread({\n // We only add a tabindex of 0 if there is a head-clicked listener\n tabindex: hasHeadClickListener ? '0' : null,\n abbr: field.headerAbbr || null,\n title: field.headerTitle || null,\n role: 'columnheader',\n scope: 'col',\n 'aria-colindex': String(colIndex + 1),\n 'aria-label': ariaLabel\n }, _this.sortTheadThAttrs(field.key, field, isFoot)),\n on: handlers\n };\n var fieldScope = {\n label: field.label,\n column: field.key,\n field: field\n };\n var slot = isFoot && _this.hasNormalizedSlot(\"FOOT_\".concat(field.key)) ? _this.normalizeSlot(\"FOOT_\".concat(field.key), fieldScope) : _this.normalizeSlot(\"HEAD_\".concat(field.key), fieldScope);\n\n if (!slot) {\n data.domProps = htmlOrText(field.labelHtml);\n }\n\n return h('th', data, slot || field.label);\n }; // Generate the array of TH cells\n\n\n var $cells = fields.map(makeCell).filter(function (th) {\n return th;\n }); // Genrate the row(s)\n\n var $trs = [];\n\n if (isFoot) {\n $trs.push(h('tr', {\n class: this.tfootTrClass,\n attrs: {\n role: 'row'\n }\n }, $cells));\n } else {\n var scope = {\n columns: fields.length,\n fields: fields\n };\n $trs.push(this.normalizeSlot('thead-top', scope) || h(false));\n $trs.push(h('tr', {\n class: this.theadTrClass,\n attrs: {\n role: 'row'\n }\n }, $cells));\n }\n\n return h(isFoot ? 'tfoot' : 'thead', {\n key: isFoot ? 'tfoot' : 'thead',\n class: isFoot ? this.footClasses : this.headClasses,\n attrs: {\n role: 'rowgroup'\n }\n }, $trs);\n }\n }\n};","import { getComponentConfig } from '../../../utils/config';\nexport default {\n props: {\n footClone: {\n type: Boolean,\n default: false\n },\n footVariant: {\n type: String,\n default: function _default() {\n return getComponentConfig('BTable', 'footVariant');\n }\n },\n tfootClass: {\n type: [String, Array, Object],\n default: null\n },\n tfootTrClass: {\n type: [String, Array, Object],\n default: null\n }\n },\n computed: {\n footClasses: function footClasses() {\n var variant = this.footVariant || this.headVariant || null;\n return [variant ? \"thead-\".concat(variant) : '', this.tfootClass];\n }\n },\n methods: {\n renderTfoot: function renderTfoot() {\n var h = this.$createElement; // Passing true to renderThead will make it render a tfoot\n\n return this.footClone ? this.renderThead(true) : h(false);\n }\n }\n};","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport KeyCodes from '../../../utils/key-codes';\nimport get from '../../../utils/get';\nimport toString from '../../../utils/to-string';\nimport { arrayIncludes } from '../../../utils/array';\nimport { isFunction, isNull, isString, isUndefined } from '../../../utils/inspect';\nimport filterEvent from './filter-event';\nimport textSelectionActive from './text-selection-active';\nexport default {\n props: {\n tbodyTrClass: {\n type: [String, Array, Function],\n default: null\n }\n },\n methods: {\n // Methods for computing classes, attributes and styles for table cells\n tdClasses: function tdClasses(field, item) {\n var cellVariant = '';\n\n if (item._cellVariants && item._cellVariants[field.key]) {\n cellVariant = \"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(item._cellVariants[field.key]);\n }\n\n return [field.variant && !cellVariant ? \"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(field.variant) : '', cellVariant, field.class ? field.class : '', this.getTdValues(item, field.key, field.tdClass, '')];\n },\n tdAttrs: function tdAttrs(field, item, colIndex) {\n var attrs = {\n role: 'cell',\n 'aria-colindex': String(colIndex + 1)\n };\n\n if (field.isRowHeader) {\n attrs.scope = 'row';\n attrs.role = 'rowheader';\n }\n\n if (this.isStacked) {\n // Generate the \"header cell\" label content in stacked mode\n attrs['data-label'] = field.label;\n }\n\n return _objectSpread({}, attrs, this.getTdValues(item, field.key, field.tdAttr, {}));\n },\n rowClasses: function rowClasses(item) {\n return [item._rowVariant ? \"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(item._rowVariant) : '', isFunction(this.tbodyTrClass) ? this.tbodyTrClass(item, 'row') : this.tbodyTrClass];\n },\n getTdValues: function getTdValues(item, key, tdValue, defValue) {\n var parent = this.$parent;\n\n if (tdValue) {\n var value = get(item, key, '');\n\n if (isFunction(tdValue)) {\n return tdValue(value, key, item);\n } else if (isString(tdValue) && isFunction(parent[tdValue])) {\n return parent[tdValue](value, key, item);\n }\n\n return tdValue;\n }\n\n return defValue;\n },\n // Method to get the value for a field\n getFormattedValue: function getFormattedValue(item, field) {\n var key = field.key;\n var formatter = field.formatter;\n var parent = this.$parent;\n var value = get(item, key, null);\n\n if (formatter) {\n if (isFunction(formatter)) {\n value = formatter(value, key, item);\n } else if (isString(formatter) && isFunction(parent[formatter])) {\n value = parent[formatter](value, key, item);\n }\n }\n\n return isUndefined(value) || isNull(value) ? '' : value;\n },\n tbodyRowKeydown: function tbodyRowKeydown(evt, item, rowIndex) {\n var keyCode = evt.keyCode;\n var target = evt.target;\n var trs = this.$refs.itemRows;\n\n if (this.stopIfBusy(evt)) {\n // If table is busy (via provider) then don't propagate\n return;\n } else if (!(target && target.tagName === 'TR' && target === document.activeElement)) {\n // Ignore if not the active tr element\n return;\n } else if (target.tabIndex !== 0) {\n // Ignore if not focusable\n\n /* istanbul ignore next */\n return;\n } else if (trs && trs.length === 0) {\n /* istanbul ignore next */\n return;\n }\n\n var index = trs.indexOf(target);\n\n if (keyCode === KeyCodes.ENTER || keyCode === KeyCodes.SPACE) {\n evt.stopPropagation();\n evt.preventDefault(); // We also allow enter/space to trigger a click (when row is focused)\n // We translate to a row-clicked event\n\n this.rowClicked(evt, item, rowIndex);\n } else if (arrayIncludes([KeyCodes.UP, KeyCodes.DOWN, KeyCodes.HOME, KeyCodes.END], keyCode)) {\n evt.stopPropagation();\n evt.preventDefault();\n var shift = evt.shiftKey;\n\n if (keyCode === KeyCodes.HOME || shift && keyCode === KeyCodes.UP) {\n // Focus first row\n trs[0].focus();\n } else if (keyCode === KeyCodes.END || shift && keyCode === KeyCodes.DOWN) {\n // Focus last row\n trs[trs.length - 1].focus();\n } else if (keyCode === KeyCodes.UP && index > 0) {\n // Focus previous row\n trs[index - 1].focus();\n } else if (keyCode === KeyCodes.DOWN && index < trs.length - 1) {\n // Focus next row\n trs[index + 1].focus();\n }\n }\n },\n // Row event handlers\n rowClicked: function rowClicked(e, item, index) {\n if (this.stopIfBusy(e)) {\n // If table is busy (via provider) then don't propagate\n return;\n } else if (filterEvent(e)) {\n // clicked on a non-disabled control so ignore\n return;\n } else if (textSelectionActive(this.$el)) {\n // User is selecting text, so ignore\n\n /* istanbul ignore next: JSDOM doesn't support getSelection() */\n return;\n }\n\n this.$emit('row-clicked', item, index, e);\n },\n middleMouseRowClicked: function middleMouseRowClicked(e, item, index) {\n if (this.stopIfBusy(e)) {\n // If table is busy (via provider) then don't propagate\n return;\n }\n\n this.$emit('row-middle-clicked', item, index, e);\n },\n rowDblClicked: function rowDblClicked(e, item, index) {\n if (this.stopIfBusy(e)) {\n // If table is busy (via provider) then don't propagate\n return;\n } else if (filterEvent(e)) {\n // clicked on a non-disabled control so ignore\n\n /* istanbul ignore next: event filtering already tested via click handler */\n return;\n }\n\n this.$emit('row-dblclicked', item, index, e);\n },\n rowHovered: function rowHovered(e, item, index) {\n if (this.stopIfBusy(e)) {\n // If table is busy (via provider) then don't propagate\n return;\n }\n\n this.$emit('row-hovered', item, index, e);\n },\n rowUnhovered: function rowUnhovered(e, item, index) {\n if (this.stopIfBusy(e)) {\n // If table is busy (via provider) then don't propagate\n return;\n }\n\n this.$emit('row-unhovered', item, index, e);\n },\n rowContextmenu: function rowContextmenu(e, item, index) {\n if (this.stopIfBusy(e)) {\n // If table is busy (via provider) then don't propagate\n return;\n }\n\n this.$emit('row-contextmenu', item, index, e);\n },\n // Render helpers\n renderTbodyRowCell: function renderTbodyRowCell(field, colIndex, item, rowIndex) {\n var _this = this;\n\n var h = this.$createElement; // Renders a TD or TH for a row's field\n\n var $scoped = this.$scopedSlots;\n var detailsSlot = $scoped['row-details'];\n var rowSelected = this.selectedRows[rowIndex];\n var formatted = this.getFormattedValue(item, field);\n var data = {\n // For the Vue key, we concatenate the column index and\n // field key (as field keys can be duplicated)\n key: \"row-\".concat(rowIndex, \"-cell-\").concat(colIndex, \"-\").concat(field.key),\n class: this.tdClasses(field, item),\n attrs: this.tdAttrs(field, item, colIndex)\n };\n\n var toggleDetailsFn = function toggleDetailsFn() {\n if (detailsSlot) {\n _this.$set(item, '_showDetails', !item._showDetails);\n }\n };\n\n var slotScope = {\n item: item,\n index: rowIndex,\n field: field,\n unformatted: get(item, field.key, ''),\n value: formatted,\n toggleDetails: toggleDetailsFn,\n detailsShowing: Boolean(item._showDetails),\n rowSelected: Boolean(rowSelected)\n };\n var $childNodes = $scoped[field.key] ? $scoped[field.key](slotScope) : toString(formatted);\n\n if (this.isStacked) {\n // We wrap in a DIV to ensure rendered as a single cell when visually stacked!\n $childNodes = [h('div', {}, [$childNodes])];\n } // Render either a td or th cell\n\n\n return h(field.isRowHeader ? 'th' : 'td', data, [$childNodes]);\n },\n renderTbodyRow: function renderTbodyRow(item, rowIndex) {\n var _this2 = this;\n\n // Renders an item's row (or rows if details supported)\n var h = this.$createElement;\n var $scoped = this.$scopedSlots;\n var fields = this.computedFields;\n var tableStriped = this.striped;\n var hasRowClickHandler = this.$listeners['row-clicked'] || this.selectable;\n var $detailsSlot = $scoped['row-details'];\n var rowShowDetails = Boolean(item._showDetails && $detailsSlot); // We can return more than one TR if rowDetails enabled\n\n var $rows = []; // Details ID needed for aria-describedby when details showing\n\n var detailsId = rowShowDetails ? this.safeId(\"_details_\".concat(rowIndex, \"_\")) : null;\n\n var toggleDetailsFn = function toggleDetailsFn() {\n if ($detailsSlot) {\n _this2.$set(item, '_showDetails', !item._showDetails);\n }\n }; // For each item data field in row\n\n\n var $tds = fields.map(function (field, colIndex) {\n return _this2.renderTbodyRowCell(field, colIndex, item, rowIndex);\n }); // Calculate the row number in the dataset (indexed from 1)\n\n var ariaRowIndex = null;\n\n if (this.currentPage && this.perPage && this.perPage > 0) {\n ariaRowIndex = String((this.currentPage - 1) * this.perPage + rowIndex + 1);\n } // Create a unique :key to help ensure that sub components are re-rendered rather than\n // re-used, which can cause issues. If a primary key is not provided we use the rendered\n // rows index within the tbody.\n // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/2410\n\n\n var primaryKey = this.primaryKey;\n var rowKey = primaryKey && !isUndefined(item[primaryKey]) && !isNull(item[primaryKey]) ? toString(item[primaryKey]) : String(rowIndex); // If primary key is provided, use it to generate a unique ID on each tbody > tr\n // In the format of '{tableId}__row_{primaryKeyValue}'\n\n var rowId = primaryKey && !isUndefined(item[primaryKey]) && !isNull(item[primaryKey]) ? this.safeId(\"_row_\".concat(item[primaryKey])) : null;\n var handlers = {};\n\n if (hasRowClickHandler) {\n handlers['click'] = function (evt) {\n _this2.rowClicked(evt, item, rowIndex);\n };\n\n handlers['keydown'] = function (evt) {\n _this2.tbodyRowKeydown(evt, item, rowIndex);\n };\n } // Add the item row\n\n\n $rows.push(h('tr', {\n key: \"__b-table-row-\".concat(rowKey, \"__\"),\n ref: 'itemRows',\n refInFor: true,\n class: [this.rowClasses(item), this.selectableRowClasses(rowIndex), {\n 'b-table-has-details': rowShowDetails\n }],\n attrs: _objectSpread({\n id: rowId,\n tabindex: hasRowClickHandler ? '0' : null,\n 'data-pk': rowId ? String(item[primaryKey]) : null,\n 'aria-describedby': detailsId,\n 'aria-owns': detailsId,\n 'aria-rowindex': ariaRowIndex,\n role: 'row'\n }, this.selectableRowAttrs(rowIndex)),\n on: _objectSpread({}, handlers, {\n // TODO: Instantiate the following handlers only if we have registered\n // listeners i.e. this.$listeners['row-middle-clicked'], etc.\n auxclick: function auxclick(evt) {\n if (evt.which === 2) {\n _this2.middleMouseRowClicked(evt, item, rowIndex);\n }\n },\n contextmenu: function contextmenu(evt) {\n _this2.rowContextmenu(evt, item, rowIndex);\n },\n // Note: these events are not accessibility friendly!\n dblclick: function dblclick(evt) {\n _this2.rowDblClicked(evt, item, rowIndex);\n },\n mouseenter: function mouseenter(evt) {\n _this2.rowHovered(evt, item, rowIndex);\n },\n mouseleave: function mouseleave(evt) {\n _this2.rowUnhovered(evt, item, rowIndex);\n }\n })\n }, $tds)); // Row Details slot\n\n if (rowShowDetails) {\n var tdAttrs = {\n colspan: String(fields.length),\n role: 'cell'\n };\n var trAttrs = {\n id: detailsId,\n role: 'row' // Render the details slot\n\n };\n var $details = h('td', {\n attrs: tdAttrs\n }, [$detailsSlot({\n item: item,\n index: rowIndex,\n fields: fields,\n toggleDetails: toggleDetailsFn\n })]); // Add a hidden row to keep table row striping consistent when details showing\n\n if (tableStriped) {\n $rows.push(h('tr', {\n key: \"__b-table-details-\".concat(rowIndex, \"-stripe__\"),\n staticClass: 'd-none',\n attrs: {\n 'aria-hidden': 'true',\n role: 'presentation'\n }\n }));\n } // Add the actual details row\n\n\n $rows.push(h('tr', {\n key: \"__b-table-details-\".concat(rowIndex, \"__\"),\n staticClass: 'b-table-details',\n class: [isFunction(this.tbodyTrClass) ? this.tbodyTrClass(item, 'row-details') : this.tbodyTrClass],\n attrs: trAttrs\n }, [$details]));\n } else if ($detailsSlot) {\n // Only add the placeholder if a the table has a row-details slot defined (but not shown)\n $rows.push(h(false));\n\n if (tableStriped) {\n // add extra placeholder if table is striped\n $rows.push(h(false));\n }\n } // Return the row(s)\n\n\n return $rows;\n }\n }\n};","import { htmlOrText } from '../../../utils/html';\nimport { isFunction } from '../../../utils/inspect';\nexport default {\n props: {\n showEmpty: {\n type: Boolean,\n default: false\n },\n emptyText: {\n type: String,\n default: 'There are no records to show'\n },\n emptyHtml: {\n type: String\n },\n emptyFilteredText: {\n type: String,\n default: 'There are no records matching your request'\n },\n emptyFilteredHtml: {\n type: String\n }\n },\n methods: {\n renderEmpty: function renderEmpty() {\n var h = this.$createElement;\n var items = this.computedItems;\n var $empty;\n\n if (this.showEmpty && (!items || items.length === 0) && !(this.computedBusy && this.hasNormalizedSlot('table-busy'))) {\n $empty = this.normalizeSlot(this.isFiltered ? 'emptyfiltered' : 'empty', {\n emptyFilteredHtml: this.emptyFilteredHtml,\n emptyFilteredText: this.emptyFilteredText,\n emptyHtml: this.emptyHtml,\n emptyText: this.emptyText,\n fields: this.computedFields,\n // Not sure why this is included, as it will always be an empty array\n items: this.computedItems\n });\n\n if (!$empty) {\n $empty = h('div', {\n class: ['text-center', 'my-2'],\n domProps: this.isFiltered ? htmlOrText(this.emptyFilteredHtml, this.emptyFilteredText) : htmlOrText(this.emptyHtml, this.emptyText)\n });\n }\n\n $empty = h('td', {\n attrs: {\n colspan: String(this.computedFields.length),\n role: 'cell'\n }\n }, [h('div', {\n attrs: {\n role: 'alert',\n 'aria-live': 'polite'\n }\n }, [$empty])]);\n $empty = h('tr', {\n key: this.isFiltered ? '_b-table-empty-filtered-row_' : '_b-table-empty-row_',\n staticClass: 'b-table-empty-row',\n class: [isFunction(this.tbodyTrClass) ? this.tbodyTrClass(null, 'row-empty') : this.tbodyTrClass],\n attrs: {\n role: 'row'\n }\n }, [$empty]);\n }\n\n return $empty || h(false);\n }\n }\n};","import { isFunction } from '../../../utils/inspect';\nexport default {\n methods: {\n renderTopRow: function renderTopRow() {\n var h = this.$createElement; // Add static Top Row slot (hidden in visibly stacked mode as we can't control the data-label)\n // If in always stacked mode, we don't bother rendering the row\n\n if (!this.hasNormalizedSlot('top-row') || this.isStacked === true) {\n return h(false);\n }\n\n var fields = this.computedFields;\n return h('tr', {\n key: 'top-row',\n staticClass: 'b-table-top-row',\n class: [isFunction(this.tbodyTrClass) ? this.tbodyTrClass(null, 'row-top') : this.tbodyTrClass],\n attrs: {\n role: 'row'\n }\n }, [this.normalizeSlot('top-row', {\n columns: fields.length,\n fields: fields\n })]);\n }\n }\n};","import { isFunction } from '../../../utils/inspect';\nexport default {\n methods: {\n renderBottomRow: function renderBottomRow() {\n var h = this.$createElement; // Static bottom row slot (hidden in visibly stacked mode as we can't control the data-label)\n // If in always stacked mode, we don't bother rendering the row\n\n if (!this.hasNormalizedSlot('bottom-row') || this.isStacked === true) {\n return h(false);\n }\n\n var fields = this.computedFields;\n return h('tr', {\n key: '__b-table-bottom-row__',\n staticClass: 'b-table-bottom-row',\n class: [isFunction(this.tbodyTrClass) ? this.tbodyTrClass(null, 'row-bottom') : this.tbodyTrClass],\n attrs: {\n role: 'row'\n }\n }, this.normalizeSlot('bottom-row', {\n columns: fields.length,\n fields: fields\n }));\n }\n }\n};","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport tbodyRowMixin from './mixin-tbody-row';\nimport emptyMixin from './mixin-empty';\nimport topRowMixin from './mixin-top-row';\nimport bottomRowMixin from './mixin-bottom-row'; // busy mixin is imported in main table.js as it is used by multiple mixins\n\nexport default {\n mixins: [tbodyRowMixin, emptyMixin, topRowMixin, bottomRowMixin],\n props: {\n tbodyClass: {\n type: [String, Array],\n default: null\n },\n tbodyTransitionProps: {\n type: Object // default: undefined\n\n },\n tbodyTransitionHandlers: {\n type: Object // default: undefined\n\n }\n },\n methods: {\n renderTbody: function renderTbody() {\n var _this = this;\n\n // Render the tbody element and children\n var h = this.$createElement;\n var items = this.computedItems; // Prepare the tbody rows\n\n var $rows = []; // Add the item data rows or the busy slot\n\n var $busy = this.renderBusy();\n\n if ($busy) {\n // If table is busy and a busy slot, then return only the busy \"row\" indicator\n $rows.push($busy);\n } else {\n // Table isn't bsuy, or we don't have a busy slot\n // Add static Top Row slot (hidden in visibly stacked mode as we can't control the data-label)\n $rows.push(this.renderTopRow()); // render the rows\n\n items.forEach(function (item, rowIndex) {\n // Render the individual item row (rows if details slot)\n $rows.push(_this.renderTbodyRow(item, rowIndex));\n }); // Empty Items / Empty Filtered Row slot (only shows if items.length < -\n\n $rows.push(this.renderEmpty()); // Static bottom row slot (hidden in visibly stacked mode as we can't control the data-label)\n\n $rows.push(this.renderBottomRow());\n } // If tbody transition enabled\n\n\n var isTransGroup = this.tbodyTransitionProps || this.tbodyTransitionHandlers;\n var tbodyProps = {};\n var tbodyOn = {};\n\n if (isTransGroup) {\n tbodyOn = this.tbodyTransitionHandlers || {};\n tbodyProps = _objectSpread({}, this.tbodyTransitionProps || {}, {\n tag: 'tbody'\n });\n } // Assemble rows into the tbody\n\n\n var $tbody = h(isTransGroup ? 'transition-group' : 'tbody', {\n props: tbodyProps,\n on: tbodyOn,\n class: [this.tbodyClass],\n attrs: {\n role: 'rowgroup'\n }\n }, $rows); // Return the assembled tbody\n\n return $tbody;\n }\n }\n};","import { isFunction } from '../../../utils/inspect';\nexport default {\n props: {\n busy: {\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n return {\n localBusy: false\n };\n },\n computed: {\n computedBusy: function computedBusy() {\n return this.busy || this.localBusy;\n }\n },\n watch: {\n localBusy: function localBusy(newVal, oldVal) {\n if (newVal !== oldVal) {\n this.$emit('update:busy', newVal);\n }\n }\n },\n methods: {\n // Event handler helper\n stopIfBusy: function stopIfBusy(evt) {\n if (this.computedBusy) {\n // If table is busy (via provider) then don't propagate\n evt.preventDefault();\n evt.stopPropagation();\n return true;\n }\n\n return false;\n },\n // Renter the busy indicator or return null if not busy\n renderBusy: function renderBusy() {\n var h = this.$createElement; // Return a busy indicator row, or null if not busy\n\n if (this.computedBusy && this.hasNormalizedSlot('table-busy')) {\n // Show the busy slot\n var trAttrs = {\n role: this.isStacked ? 'row' : null\n };\n var tdAttrs = {\n colspan: String(this.computedFields.length),\n role: this.isStacked ? 'cell' : null\n };\n return h('tr', {\n key: 'table-busy-slot',\n staticClass: 'b-table-busy-slot',\n class: [isFunction(this.tbodyTrClass) ? this.tbodyTrClass(null, 'table-busy') : this.tbodyTrClass],\n attrs: trAttrs\n }, [h('td', {\n attrs: tdAttrs\n }, [this.normalizeSlot('table-busy', {})])]);\n } else {\n // We return null here so that we can determine if we need to\n // render the table items rows or not.\n return null;\n }\n }\n }\n};","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; }\n\nimport looseEqual from '../../../utils/loose-equal';\nimport { isArray, arrayIncludes } from '../../../utils/array';\nimport { getComponentConfig } from '../../../utils/config';\nimport sanitizeRow from './sanitize-row';\nexport default {\n props: {\n selectable: {\n type: Boolean,\n default: false\n },\n selectMode: {\n type: String,\n default: 'multi'\n },\n selectedVariant: {\n type: String,\n default: function _default() {\n return getComponentConfig('BTable', 'selectedVariant');\n }\n }\n },\n data: function data() {\n return {\n selectedRows: [],\n selectedLastRow: -1\n };\n },\n computed: {\n selectableTableClasses: function selectableTableClasses() {\n var _ref;\n\n var selectable = this.selectable;\n var isSelecting = selectable && this.selectedRows && this.selectedRows.some(Boolean);\n return _ref = {\n 'b-table-selectable': selectable\n }, _defineProperty(_ref, \"b-table-select-\".concat(this.selectMode), selectable), _defineProperty(_ref, 'b-table-selecting', isSelecting), _ref;\n },\n selectableTableAttrs: function selectableTableAttrs() {\n return {\n 'aria-multiselectable': this.selectableIsMultiSelect\n };\n },\n selectableIsMultiSelect: function selectableIsMultiSelect() {\n if (this.selectable) {\n return arrayIncludes(['range', 'multi'], this.selectMode) ? 'true' : 'false';\n } else {\n return null;\n }\n }\n },\n watch: {\n computedItems: function computedItems(newVal, oldVal) {\n // Reset for selectable\n // TODO: Should selectedLastClicked be reset here?\n // As changes to _showDetails would trigger it to reset\n this.selectedLastRow = -1;\n var equal = false;\n\n if (this.selectable && this.selectedRows.length > 0) {\n // Quick check against array length\n equal = isArray(newVal) && isArray(oldVal) && newVal.length === oldVal.length;\n\n for (var i = 0; equal && i < newVal.length; i++) {\n // Look for the first non-loosely equal row, after ignoring reserved fields\n equal = looseEqual(sanitizeRow(newVal[i]), sanitizeRow(oldVal[i]));\n }\n }\n\n if (!equal) {\n this.clearSelected();\n }\n },\n selectable: function selectable(newVal, oldVal) {\n this.clearSelected();\n this.setSelectionHandlers(newVal);\n },\n selectMode: function selectMode(newVal, oldVal) {\n this.clearSelected();\n },\n selectedRows: function selectedRows(_selectedRows, oldVal) {\n var _this = this;\n\n if (this.selectable && !looseEqual(_selectedRows, oldVal)) {\n var items = []; // forEach skips over non-existant indicies (on sparse arrays)\n\n _selectedRows.forEach(function (v, idx) {\n if (v) {\n items.push(_this.computedItems[idx]);\n }\n });\n\n this.$emit('row-selected', items);\n }\n }\n },\n beforeMount: function beforeMount() {\n // Set up handlers\n if (this.selectable) {\n this.setSelectionHandlers(true);\n }\n },\n methods: {\n isRowSelected: function isRowSelected(idx) {\n return Boolean(this.selectedRows[idx]);\n },\n selectableRowClasses: function selectableRowClasses(idx) {\n var rowSelected = this.isRowSelected(idx);\n var base = this.dark ? 'bg' : 'table';\n var variant = this.selectedVariant;\n return _defineProperty({\n 'b-table-row-selected': this.selectable && rowSelected\n }, \"\".concat(base, \"-\").concat(variant), this.selectable && rowSelected && variant);\n },\n selectableRowAttrs: function selectableRowAttrs(idx) {\n return {\n 'aria-selected': !this.selectable ? null : this.isRowSelected(idx) ? 'true' : 'false'\n };\n },\n clearSelected: function clearSelected() {\n var hasSelection = this.selectedRows.reduce(function (prev, v) {\n return prev || v;\n }, false);\n\n if (hasSelection) {\n this.selectedLastClicked = -1;\n this.selectedRows = [];\n }\n },\n setSelectionHandlers: function setSelectionHandlers(on) {\n var method = on ? '$on' : '$off'; // Handle row-clicked event\n\n this[method]('row-clicked', this.selectionHandler); // Clear selection on filter, pagination, and sort changes\n\n this[method]('filtered', this.clearSelected);\n this[method]('context-changed', this.clearSelected);\n },\n selectionHandler: function selectionHandler(item, index, evt) {\n /* istanbul ignore if: should never happen */\n if (!this.selectable) {\n // Don't do anything if table is not in selectable mode\n\n /* istanbul ignore next: should never happen */\n this.clearSelected();\n /* istanbul ignore next: should never happen */\n\n return;\n }\n\n var selectedRows = this.selectedRows.slice();\n var selected = !selectedRows[index];\n var mode = this.selectMode; // Note 'multi' mode needs no special handling\n\n if (mode === 'single') {\n selectedRows = [];\n } else if (mode === 'range') {\n if (this.selectedLastRow > -1 && evt.shiftKey) {\n // range\n for (var idx = Math.min(this.selectedLastRow, index); idx <= Math.max(this.selectedLastRow, index); idx++) {\n selectedRows[idx] = true;\n }\n\n selected = true;\n } else {\n if (!(evt.ctrlKey || evt.metaKey)) {\n // clear range selection if any\n selectedRows = [];\n selected = true;\n }\n\n this.selectedLastRow = selected ? index : -1;\n }\n }\n\n selectedRows[index] = selected;\n this.selectedRows = selectedRows;\n }\n }\n};","import looseEqual from '../../../utils/loose-equal';\nimport warn from '../../../utils/warn';\nimport { isArray, isFunction } from '../../../utils/inspect';\nimport listenOnRootMixin from '../../../mixins/listen-on-root';\nexport default {\n mixins: [listenOnRootMixin],\n props: {\n noProviderPaging: {\n type: Boolean,\n default: false\n },\n noProviderSorting: {\n type: Boolean,\n default: false\n },\n noProviderFiltering: {\n type: Boolean,\n default: false\n },\n apiUrl: {\n // Passthrough prop. Passed to the context object. Not used by b-table directly\n type: String,\n default: ''\n }\n },\n computed: {\n hasProvider: function hasProvider() {\n return this.items instanceof Function;\n },\n providerTriggerContext: function providerTriggerContext() {\n // Used to trigger the provider function via a watcher. Only the fields that\n // are needed for triggering a provider update are included. Note that the\n // regular this.context is sent to the provider during fetches though, as they\n // may need all the prop info.\n var ctx = {\n apiUrl: this.apiUrl\n };\n\n if (!this.noProviderFiltering) {\n // Either a string, or could be an object or array.\n ctx.filter = this.localFilter;\n }\n\n if (!this.noProviderSorting) {\n ctx.sortBy = this.localSortBy;\n ctx.sortDesc = this.localSortDesc;\n }\n\n if (!this.noProviderPaging) {\n ctx.perPage = this.perPage;\n ctx.currentPage = this.currentPage;\n }\n\n return ctx;\n }\n },\n watch: {\n // Provider update triggering\n items: function items(newVal, oldVal) {\n // If a new provider has been specified, trigger an update\n if (this.hasProvider || newVal instanceof Function) {\n this.$nextTick(this._providerUpdate);\n }\n },\n providerTriggerContext: function providerTriggerContext(newVal, oldVal) {\n // Trigger the provider to update as the relevant context values have changed.\n if (!looseEqual(newVal, oldVal)) {\n this.$nextTick(this._providerUpdate);\n }\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n // Call the items provider if necessary\n if (this.hasProvider && (!this.localItems || this.localItems.length === 0)) {\n // Fetch on mount if localItems is empty\n this._providerUpdate();\n } // Listen for global messages to tell us to force refresh the table\n\n\n this.listenOnRoot('bv::refresh::table', function (id) {\n if (id === _this.id || id === _this) {\n _this.refresh();\n }\n });\n },\n methods: {\n refresh: function refresh() {\n // Public Method: Force a refresh of the provider function\n this.$off('refreshed', this.refresh);\n\n if (this.computedBusy) {\n // Can't force an update when forced busy by user (busy prop === true)\n if (this.localBusy && this.hasProvider) {\n // But if provider running (localBusy), re-schedule refresh once `refreshed` emitted\n this.$on('refreshed', this.refresh);\n }\n } else {\n this.clearSelected();\n\n if (this.hasProvider) {\n this.$nextTick(this._providerUpdate);\n } else {\n /* istanbul ignore next */\n this.localItems = isArray(this.items) ? this.items.slice() : [];\n }\n }\n },\n // Provider related methods\n _providerSetLocal: function _providerSetLocal(items) {\n this.localItems = isArray(items) ? items.slice() : [];\n this.localBusy = false;\n this.$emit('refreshed'); // New root emit\n\n if (this.id) {\n this.emitOnRoot('bv::table::refreshed', this.id);\n }\n },\n _providerUpdate: function _providerUpdate() {\n // Refresh the provider function items.\n if (!this.hasProvider) {\n // Do nothing if no provider\n return;\n } // If table is busy, wait until refreshed before calling again\n\n\n if (this.computedBusy) {\n // Schedule a new refresh once `refreshed` is emitted\n this.$nextTick(this.refresh);\n return;\n } // Set internal busy state\n\n\n this.localBusy = true; // Call provider function with context and optional callback after DOM is fully updated\n\n this.$nextTick(function () {\n var _this2 = this;\n\n try {\n // Call provider function passing it the context and optional callback\n var data = this.items(this.context, this._providerSetLocal);\n\n if (data && data.then && isFunction(data.then)) {\n // Provider returned Promise\n data.then(function (items) {\n // Provider resolved with items\n _this2._providerSetLocal(items);\n });\n } else if (isArray(data)) {\n // Provider returned Array data\n this._providerSetLocal(data);\n } else if (this.items.length !== 2) {\n // Check number of arguments provider function requested\n // Provider not using callback (didn't request second argument), so we clear\n // busy state as most likely there was an error in the provider function\n\n /* istanbul ignore next */\n warn(\"b-table provider function didn't request callback and did not return a promise or data\");\n /* istanbul ignore next */\n\n this.localBusy = false;\n }\n } catch (e)\n /* istanbul ignore next */\n {\n // Provider function borked on us, so we spew out a warning\n // and clear the busy state\n warn(\"b-table provider function error [\".concat(e.name, \"] \").concat(e.message));\n this.localBusy = false;\n this.$off('refreshed', this.refresh);\n }\n });\n }\n }\n};","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport Vue from '../../utils/vue'; // Utilities\n\nimport looseEqual from '../../utils/loose-equal'; // Mixins\n\nimport idMixin from '../../mixins/id';\nimport normalizeSlotMixin from '../../mixins/normalize-slot'; // Table helper Mixins\n\nimport itemsMixin from './helpers/mixin-items';\nimport filteringMixin from './helpers/mixin-filtering';\nimport sortingMixin from './helpers/mixin-sorting';\nimport paginationMixin from './helpers/mixin-pagination';\nimport captionMixin from './helpers/mixin-caption';\nimport colgroupMixin from './helpers/mixin-colgroup';\nimport theadMixin from './helpers/mixin-thead';\nimport tfootMixin from './helpers/mixin-tfoot';\nimport tbodyMixin from './helpers/mixin-tbody';\nimport busyMixin from './helpers/mixin-busy';\nimport selectableMixin from './helpers/mixin-selectable';\nimport providerMixin from './helpers/mixin-provider'; // b-table component definition\n// @vue/component\n\nexport default Vue.extend({\n name: 'BTable',\n // Order of mixins is important.\n // They are merged from left to fight, followed by this component.\n mixins: [idMixin, normalizeSlotMixin, itemsMixin, filteringMixin, sortingMixin, paginationMixin, busyMixin, captionMixin, colgroupMixin, theadMixin, tfootMixin, tbodyMixin, selectableMixin, providerMixin],\n // Don't place ATTRS on root element automatically, as table could be wrapped in responsive div\n inheritAttrs: false,\n props: {\n striped: {\n type: Boolean,\n default: false\n },\n bordered: {\n type: Boolean,\n default: false\n },\n borderless: {\n type: Boolean,\n default: false\n },\n outlined: {\n type: Boolean,\n default: false\n },\n dark: {\n type: Boolean,\n default: false\n },\n hover: {\n type: Boolean,\n default: false\n },\n small: {\n type: Boolean,\n default: false\n },\n fixed: {\n type: Boolean,\n default: false\n },\n responsive: {\n type: [Boolean, String],\n default: false\n },\n stacked: {\n type: [Boolean, String],\n default: false\n },\n tableClass: {\n type: [String, Array, Object],\n default: null\n },\n value: {\n // v-model for retrieving the current displayed rows\n type: Array,\n default: function _default() {\n return [];\n }\n }\n },\n data: function data() {\n // Mixins add to data\n return {};\n },\n computed: {\n // Layout related computed props\n isStacked: function isStacked() {\n return this.stacked === '' ? true : this.stacked;\n },\n isResponsive: function isResponsive() {\n var responsive = this.responsive === '' ? true : this.responsive;\n return this.isStacked ? false : responsive;\n },\n responsiveClass: function responsiveClass() {\n return this.isResponsive === true ? 'table-responsive' : this.isResponsive ? \"table-responsive-\".concat(this.responsive) : '';\n },\n tableClasses: function tableClasses() {\n return [// User supplied classes\n this.tableClass, // Styling classes\n _defineProperty({\n 'table-striped': this.striped,\n 'table-hover': this.hover && this.computedItems.length > 0 && !this.computedBusy,\n 'table-dark': this.dark,\n 'table-bordered': this.bordered,\n 'table-borderless': this.borderless,\n 'table-sm': this.small,\n border: this.outlined,\n // The following are b-table custom styles\n 'b-table-fixed': this.fixed,\n 'b-table-stacked': this.stacked === true || this.stacked === ''\n }, \"b-table-stacked-\".concat(this.stacked), this.stacked !== true && this.stacked), // Selectable classes\n this.selectableTableClasses];\n },\n tableAttrs: function tableAttrs() {\n // Preserve user supplied aria-describedby, if provided in $attrs\n var adb = [(this.$attrs || {})['aria-describedby'], this.captionId].filter(Boolean).join(' ') || null;\n var items = this.computedItems;\n var fields = this.computedFields;\n return _objectSpread({\n // We set aria-rowcount before merging in $attrs, in case user has supplied their own\n 'aria-rowcount': this.filteredItems.length > items.length ? String(this.filteredItems.length) : null\n }, this.$attrs, {\n // Now we can override any $attrs here\n id: this.safeId(),\n role: this.isStacked ? 'table' : null,\n 'aria-busy': this.computedBusy ? 'true' : 'false',\n 'aria-colcount': String(fields.length),\n 'aria-describedby': adb\n }, this.selectableTableAttrs);\n },\n context: function context() {\n // Current state of sorting, filtering and pagination props/values\n return {\n filter: this.localFilter,\n sortBy: this.localSortBy,\n sortDesc: this.localSortDesc,\n perPage: parseInt(this.perPage, 10) || 0,\n currentPage: parseInt(this.currentPage, 10) || 1,\n apiUrl: this.apiUrl\n };\n },\n computedItems: function computedItems() {\n return this.paginatedItems || [];\n }\n },\n watch: {\n // Watch for changes on computedItems and update the v-model\n computedItems: function computedItems(newVal, oldVal) {\n this.$emit('input', newVal);\n },\n context: function context(newVal, oldVal) {\n // Emit context info for external paging/filtering/sorting handling\n if (!looseEqual(newVal, oldVal)) {\n this.$emit('context-changed', newVal);\n }\n }\n },\n mounted: function mounted() {\n // Initially update the v-model of displayed items\n this.$emit('input', this.computedItems);\n },\n render: function render(h) {\n // Build the caption (from caption mixin)\n var $caption = this.renderCaption(); // Build the colgroup\n\n var $colgroup = this.renderColgroup(); // Build the thead\n\n var $thead = this.renderThead(); // Build the tfoot\n\n var $tfoot = this.renderTfoot(); // Build the tbody\n\n var $tbody = this.renderTbody(); // Assemble table\n\n var $table = h('table', {\n key: 'b-table',\n staticClass: 'table b-table',\n class: this.tableClasses,\n attrs: this.tableAttrs\n }, [$caption, $colgroup, $thead, $tfoot, $tbody]); // Add responsive wrapper if needed and return table\n\n return this.isResponsive ? h('div', {\n key: 'b-table-responsive',\n class: this.responsiveClass\n }, [$table]) : $table;\n }\n});","import BTable from './table';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BTable: BTable\n};\nexport { BTable };\nexport default {\n install: installFactory({\n components: components\n })\n};","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport Vue from '../../utils/vue';\nimport BLink from '../link/link';\nimport BNav, { props as BNavProps } from '../nav/nav';\nimport { requestAF, selectAll } from '../../utils/dom';\nimport KeyCodes from '../../utils/key-codes';\nimport observeDom from '../../utils/observe-dom';\nimport { omit } from '../../utils/object';\nimport idMixin from '../../mixins/id';\nimport normalizeSlotMixin from '../../mixins/normalize-slot'; // -- Constants --\n\nvar navProps = omit(BNavProps, ['tabs', 'isNavBar']); // -- Utils --\n// Filter function to filter out disabled tabs\n\nvar notDisabled = function notDisabled(tab) {\n return !tab.disabled;\n}; // --- Helper components ---\n// @vue/component\n\n\nvar BTabButtonHelper = Vue.extend({\n name: 'BTabButtonHelper',\n inject: {\n bvTabs: {\n default: function _default()\n /* istanbul ignore next */\n {\n return {};\n }\n }\n },\n props: {\n // Reference to the child <b-tab> instance\n tab: {\n default: null\n },\n tabs: {\n type: Array,\n default: function _default()\n /* istanbul ignore next */\n {\n return [];\n }\n },\n id: {\n type: String,\n default: null\n },\n controls: {\n type: String,\n default: null\n },\n tabIndex: {\n type: Number,\n default: null\n },\n posInSet: {\n type: Number,\n default: null\n },\n setSize: {\n type: Number,\n default: null\n },\n noKeyNav: {\n type: Boolean,\n default: false\n }\n },\n methods: {\n focus: function focus() {\n if (this.$refs && this.$refs.link && this.$refs.link.focus) {\n this.$refs.link.focus();\n }\n },\n handleEvt: function handleEvt(evt) {\n function stop() {\n evt.preventDefault();\n evt.stopPropagation();\n }\n\n if (this.tab.disabled) {\n /* istanbul ignore next */\n return;\n }\n\n var type = evt.type;\n var key = evt.keyCode;\n var shift = evt.shiftKey;\n\n if (type === 'click') {\n stop();\n this.$emit('click', evt);\n } else if (type === 'keydown' && !this.noKeyNav && key === KeyCodes.SPACE) {\n // In keynav mode, SPACE press will also trigger a click/select\n stop();\n this.$emit('click', evt);\n } else if (type === 'keydown' && !this.noKeyNav) {\n // For keyboard navigation\n if (key === KeyCodes.UP || key === KeyCodes.LEFT || key === KeyCodes.HOME) {\n stop();\n\n if (shift || key === KeyCodes.HOME) {\n this.$emit('first', evt);\n } else {\n this.$emit('prev', evt);\n }\n } else if (key === KeyCodes.DOWN || key === KeyCodes.RIGHT || key === KeyCodes.END) {\n stop();\n\n if (shift || key === KeyCodes.END) {\n this.$emit('last', evt);\n } else {\n this.$emit('next', evt);\n }\n }\n }\n }\n },\n render: function render(h) {\n var link = h(BLink, {\n ref: 'link',\n staticClass: 'nav-link',\n class: [{\n active: this.tab.localActive && !this.tab.disabled,\n disabled: this.tab.disabled\n }, this.tab.titleLinkClass, // Apply <b-tabs> `activeNavItemClass` styles when the tab is active\n this.tab.localActive ? this.bvTabs.activeNavItemClass : null],\n props: {\n href: this.tab.href,\n // To be deprecated to always be '#'\n disabled: this.tab.disabled\n },\n attrs: {\n role: 'tab',\n id: this.id,\n // Roving tab index when keynav enabled\n tabindex: this.tabIndex,\n 'aria-selected': this.tab.localActive && !this.tab.disabled ? 'true' : 'false',\n 'aria-setsize': this.setSize,\n 'aria-posinset': this.posInSet,\n 'aria-controls': this.controls\n },\n on: {\n click: this.handleEvt,\n keydown: this.handleEvt\n }\n }, [this.tab.normalizeSlot('title') || this.tab.title]);\n return h('li', {\n staticClass: 'nav-item',\n class: [this.tab.titleItemClass],\n attrs: {\n role: 'presentation'\n }\n }, [link]);\n }\n}); // @vue/component\n\nexport default Vue.extend({\n name: 'BTabs',\n mixins: [idMixin, normalizeSlotMixin],\n provide: function provide() {\n return {\n bvTabs: this\n };\n },\n model: {\n prop: 'value',\n event: 'input'\n },\n props: _objectSpread({}, navProps, {\n tag: {\n type: String,\n default: 'div'\n },\n card: {\n type: Boolean,\n default: false\n },\n bottom: {\n type: Boolean,\n default: false\n },\n end: {\n // Synonym for 'bottom'\n type: Boolean,\n default: false\n },\n noFade: {\n type: Boolean,\n default: false\n },\n noNavStyle: {\n type: Boolean,\n default: false\n },\n noKeyNav: {\n type: Boolean,\n default: false\n },\n lazy: {\n // This prop is sniffed by the <b-tab> child\n type: Boolean,\n default: false\n },\n contentClass: {\n type: [String, Array, Object],\n default: null\n },\n navClass: {\n type: [String, Array, Object],\n default: null\n },\n navWrapperClass: {\n type: [String, Array, Object],\n default: null\n },\n activeNavItemClass: {\n // Only applied to the currently active <b-nav-item>\n type: [String, Array, Object],\n default: null\n },\n activeTabClass: {\n // Only applied to the currently active <b-tab>\n // This prop is sniffed by the <b-tab> child\n type: [String, Array, Object],\n default: null\n },\n value: {\n // v-model\n type: Number,\n default: null\n }\n }),\n data: function data() {\n var tabIdx = parseInt(this.value, 10);\n tabIdx = isNaN(tabIdx) ? -1 : tabIdx;\n return {\n // Index of current tab\n currentTab: tabIdx,\n // Array of direct child <b-tab> instances\n tabs: [],\n // Flag to know if we are mounted or not\n isMounted: false\n };\n },\n computed: {\n fade: function fade() {\n // This computed prop is sniffed by the tab child\n return !this.noFade;\n },\n navStyle: function navStyle() {\n return this.pills ? 'pills' : 'tabs';\n },\n localNavClass: function localNavClass() {\n var classes = [];\n\n if (this.card) {\n if (this.vertical) {\n classes.push('card-header', 'h-100', 'border-bottom-0', 'rounded-0');\n } else {\n classes.push(\"card-header-\".concat(this.navStyle));\n }\n }\n\n return [].concat(classes, [this.navClass]);\n }\n },\n watch: {\n currentTab: function currentTab(val, old) {\n var index = -1; // Ensure only one tab is active at most\n\n this.tabs.forEach(function (tab, idx) {\n if (val === idx && !tab.disabled) {\n tab.localActive = true;\n index = idx;\n } else {\n tab.localActive = false;\n }\n }); // Update the v-model\n\n this.$emit('input', index);\n },\n value: function value(val, old) {\n if (val !== old) {\n val = parseInt(val, 10);\n val = isNaN(val) ? -1 : val;\n old = parseInt(old, 10) || 0;\n var tabs = this.tabs;\n\n if (tabs[val] && !tabs[val].disabled) {\n this.currentTab = val;\n } else {\n // Try next or prev tabs\n if (val < old) {\n this.previousTab();\n } else {\n this.nextTab();\n }\n }\n }\n },\n isMounted: function isMounted(newVal, oldVal) {\n var _this = this;\n\n if (newVal) {\n requestAF(function () {\n _this.updateTabs();\n });\n }\n }\n },\n created: function created() {\n var _this2 = this;\n\n var tabIdx = parseInt(this.value, 10);\n this.currentTab = isNaN(tabIdx) ? -1 : tabIdx; // Create private non-reactive prop\n\n this._bvObserver = null; // For SSR and to make sure only a single tab is shown on mount\n // We wrap this in a `$nextTick()` to ensure the child tabs have been created\n\n this.$nextTick(function () {\n _this2.updateTabs();\n });\n },\n mounted: function mounted() {\n var _this3 = this;\n\n this.$nextTick(function () {\n // Call `updateTabs()` just in case...\n _this3.updateTabs(); // Observe child changes so we can update list of tabs\n\n\n _this3.setObserver(true); // Flag we are now mounted and to switch to DOM for tab probing\n\n\n _this3.isMounted = true;\n });\n },\n deactivated: function deactivated()\n /* istanbul ignore next */\n {\n this.setObserver(false);\n this.isMounted = false;\n },\n activated: function activated()\n /* istanbul ignore next */\n {\n var _this4 = this;\n\n var tabIdx = parseInt(this.value, 10);\n this.currentTab = isNaN(tabIdx) ? -1 : tabIdx;\n this.$nextTick(function () {\n _this4.updateTabs();\n\n _this4.setObserver(true);\n\n _this4.isMounted = true;\n });\n },\n beforeDestroy: function beforeDestroy()\n /* istanbul ignore next */\n {\n this.setObserver(false);\n },\n methods: {\n setObserver: function setObserver(on) {\n if (on) {\n // Make sure no existing observer running\n this.setObserver(false); // Watch for changes to <b-tab> sub components\n\n this._bvObserver = observeDom(this.$refs.tabsContainer, this.updateTabs.bind(this), {\n childList: true,\n subtree: false,\n attributes: true,\n attributeFilter: ['style', 'class']\n });\n } else {\n if (this._bvObserver && this._bvObserver.disconnect) {\n this._bvObserver.disconnect();\n }\n\n this._bvObserver = null;\n }\n },\n getTabs: function getTabs() {\n var tabs = [];\n\n if (!this.isMounted) {\n tabs = (this.normalizeSlot('default') || []).map(function (vnode) {\n return vnode.componentInstance;\n });\n } else {\n // We rely on the DOM when mounted to get the list of tabs\n // Fix for https://github.com/bootstrap-vue/bootstrap-vue/issues/3361\n tabs = selectAll(\"#\".concat(this.safeId('_BV_tab_container_'), \" > .tab-pane\"), this.$el).map(function (el) {\n return el.__vue__;\n }).filter(Boolean) // The VM attached to the element is `transition` so we need the $parent to get tab\n .map(function (vm) {\n return vm.$parent;\n });\n }\n\n return tabs.filter(function (tab) {\n return tab && tab._isTab;\n });\n },\n // Update list of <b-tab> children\n updateTabs: function updateTabs() {\n // Probe tabs\n var tabs = this.getTabs(); // Find *last* active non-disabled tab in current tabs\n // We trust tab state over currentTab, in case tabs were added/removed/re-ordered\n\n var tabIndex = tabs.indexOf(tabs.slice().reverse().find(function (tab) {\n return tab.localActive && !tab.disabled;\n })); // Else try setting to currentTab\n\n if (tabIndex < 0) {\n var currentTab = this.currentTab;\n\n if (currentTab >= tabs.length) {\n // Handle last tab being removed, so find the last non-disabled tab\n tabIndex = tabs.indexOf(tabs.slice().reverse().find(notDisabled));\n } else if (tabs[currentTab] && !tabs[currentTab].disabled) {\n // Current tab is not disabled\n tabIndex = currentTab;\n }\n } // Else find *first* non-disabled tab in current tabs\n\n\n if (tabIndex < 0) {\n tabIndex = tabs.indexOf(tabs.find(notDisabled));\n } // Set the current tab state to active\n\n\n tabs.forEach(function (tab, idx) {\n // tab.localActive = idx === tabIndex && !tab.disabled\n tab.localActive = false;\n });\n\n if (tabs[tabIndex]) {\n tabs[tabIndex].localActive = true;\n } // Update the array of tab children\n\n\n this.tabs = tabs; // Set the currentTab index (can be -1 if no non-disabled tabs)\n\n this.currentTab = tabIndex;\n },\n // Find a button that controls a tab, given the tab reference\n // Returns the button vm instance\n getButtonForTab: function getButtonForTab(tab) {\n return (this.$refs.buttons || []).find(function (btn) {\n return btn.tab === tab;\n });\n },\n // Force a button to re-render it's content, given a <b-tab> instance\n // Called by <b-tab> on `update()`\n updateButton: function updateButton(tab) {\n var button = this.getButtonForTab(tab);\n\n if (button && button.$forceUpdate) {\n button.$forceUpdate();\n }\n },\n // Activate a tab given a <b-tab> instance\n // Also accessed by <b-tab>\n activateTab: function activateTab(tab) {\n var result = false;\n\n if (tab) {\n var index = this.tabs.indexOf(tab);\n\n if (!tab.disabled && index > -1) {\n result = true;\n this.currentTab = index;\n }\n }\n\n if (!result) {\n // Couldn't set tab, so ensure v-model is set to `this.currentTab`\n\n /* istanbul ignore next: should rarely happen */\n this.$emit('input', this.currentTab);\n }\n\n return result;\n },\n // Deactivate a tab given a <b-tab> instance\n // Accessed by <b-tab>\n deactivateTab: function deactivateTab(tab) {\n if (tab) {\n // Find first non-disabled tab that isn't the one being deactivated\n // If no tabs are available, then don't deactivate current tab\n return this.activateTab(this.tabs.filter(function (t) {\n return t !== tab;\n }).find(notDisabled));\n } else {\n // No tab specified\n\n /* istanbul ignore next: should never happen */\n return false;\n }\n },\n // Focus a tab button given it's <b-tab> instance\n focusButton: function focusButton(tab) {\n var _this5 = this;\n\n // Wrap in `$nextTick()` to ensure DOM has completed rendering/updating before focusing\n this.$nextTick(function () {\n var button = _this5.getButtonForTab(tab);\n\n if (button && button.focus) {\n button.focus();\n }\n });\n },\n // Emit a click event on a specified <b-tab> component instance\n emitTabClick: function emitTabClick(tab, evt) {\n if (evt && evt instanceof Event && tab && tab.$emit && !tab.disabled) {\n tab.$emit('click', evt);\n }\n },\n // Click handler\n clickTab: function clickTab(tab, evt) {\n this.activateTab(tab);\n this.emitTabClick(tab, evt);\n },\n // Move to first non-disabled tab\n firstTab: function firstTab(focus) {\n var tab = this.tabs.find(notDisabled);\n\n if (this.activateTab(tab) && focus) {\n this.focusButton(tab);\n this.emitTabClick(tab, focus);\n }\n },\n // Move to previous non-disabled tab\n previousTab: function previousTab(focus) {\n var currentIndex = Math.max(this.currentTab, 0);\n var tab = this.tabs.slice(0, currentIndex).reverse().find(notDisabled);\n\n if (this.activateTab(tab) && focus) {\n this.focusButton(tab);\n this.emitTabClick(tab, focus);\n }\n },\n // Move to next non-disabled tab\n nextTab: function nextTab(focus) {\n var currentIndex = Math.max(this.currentTab, -1);\n var tab = this.tabs.slice(currentIndex + 1).find(notDisabled);\n\n if (this.activateTab(tab) && focus) {\n this.focusButton(tab);\n this.emitTabClick(tab, focus);\n }\n },\n // Move to last non-disabled tab\n lastTab: function lastTab(focus) {\n var tab = this.tabs.slice().reverse().find(notDisabled);\n\n if (this.activateTab(tab) && focus) {\n this.focusButton(tab);\n this.emitTabClick(tab, focus);\n }\n }\n },\n render: function render(h) {\n var _this6 = this;\n\n var tabs = this.tabs; // Currently active tab\n\n var activeTab = tabs.find(function (tab) {\n return tab.localActive && !tab.disabled;\n }); // Tab button to allow focusing when no active tab found (keynav only)\n\n var fallbackTab = tabs.find(function (tab) {\n return !tab.disabled;\n }); // For each <b-tab> found create the tab buttons\n\n var buttons = tabs.map(function (tab, index) {\n var tabIndex = null; // Ensure at least one tab button is focusable when keynav enabled (if possible)\n\n if (!_this6.noKeyNav) {\n // Buttons are not in tab index unless active, or a fallback tab\n tabIndex = -1;\n\n if (activeTab === tab || !activeTab && fallbackTab === tab) {\n // Place tab button in tab sequence\n tabIndex = null;\n }\n }\n\n return h(BTabButtonHelper, {\n key: tab._uid || index,\n ref: 'buttons',\n // Needed to make `this.$refs.buttons` an array\n refInFor: true,\n props: {\n tab: tab,\n tabs: tabs,\n id: tab.controlledBy || (_this6.tab && _this6.tab.safeId ? _this6.tab.safeId(\"_BV_tab_button_\") : null),\n controls: _this6.tab && _this6.tab.safeId ? _this6.tab.safeId() : null,\n tabIndex: tabIndex,\n setSize: tabs.length,\n posInSet: index + 1,\n noKeyNav: _this6.noKeyNav\n },\n on: {\n click: function click(evt) {\n _this6.clickTab(tab, evt);\n },\n first: _this6.firstTab,\n prev: _this6.previousTab,\n next: _this6.nextTab,\n last: _this6.lastTab\n }\n });\n }); // Nav\n\n var nav = h(BNav, {\n ref: 'nav',\n class: this.localNavClass,\n attrs: {\n role: 'tablist',\n id: this.safeId('_BV_tab_controls_')\n },\n props: {\n fill: this.fill,\n justified: this.justified,\n align: this.align,\n tabs: !this.noNavStyle && !this.pills,\n pills: !this.noNavStyle && this.pills,\n vertical: this.vertical,\n small: this.small\n }\n }, [buttons, this.normalizeSlot('tabs')]);\n nav = h('div', {\n key: 'bv-tabs-nav',\n class: [{\n 'card-header': this.card && !this.vertical && !(this.end || this.bottom),\n 'card-footer': this.card && !this.vertical && (this.end || this.bottom),\n 'col-auto': this.vertical\n }, this.navWrapperClass]\n }, [nav]);\n var empty = h(false);\n\n if (!tabs || tabs.length === 0) {\n empty = h('div', {\n key: 'empty-tab',\n class: ['tab-pane', 'active', {\n 'card-body': this.card\n }]\n }, this.normalizeSlot('empty'));\n } // Main content section\n // TODO: This container should be a helper component\n\n\n var content = h('div', {\n ref: 'tabsContainer',\n key: 'bv-tabs-container',\n staticClass: 'tab-content',\n class: [{\n col: this.vertical\n }, this.contentClass],\n attrs: {\n id: this.safeId('_BV_tab_container_')\n }\n }, [this.normalizeSlot('default'), empty]); // Render final output\n\n return h(this.tag, {\n staticClass: 'tabs',\n class: {\n row: this.vertical,\n 'no-gutters': this.vertical && this.card\n },\n attrs: {\n id: this.safeId()\n }\n }, [this.end || this.bottom ? content : h(false), [nav], this.end || this.bottom ? h(false) : content]);\n }\n});","import Vue from '../../utils/vue';\nimport idMixin from '../../mixins/id';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport BVTransition from '../../utils/bv-transition';\nimport warn from '../../utils/warn';\nvar DEPRECATED_MSG = 'Setting prop \"href\" is deprecated. Use the <b-nav> component instead.'; // @vue/component\n\nexport default Vue.extend({\n name: 'BTab',\n mixins: [idMixin, normalizeSlotMixin],\n inject: {\n bvTabs: {\n default: function _default() {\n return {\n // Don't set a tab index if not rendered inside <b-tabs>\n noKeyNav: true\n };\n }\n }\n },\n props: {\n active: {\n type: Boolean,\n default: false\n },\n tag: {\n type: String,\n default: 'div'\n },\n buttonId: {\n type: String,\n default: ''\n },\n title: {\n type: String,\n default: ''\n },\n titleItemClass: {\n // Sniffed by tabs.js and added to nav 'li.nav-item'\n type: [String, Array, Object],\n default: null\n },\n titleLinkClass: {\n // Sniffed by tabs.js and added to nav 'a.nav-link'\n type: [String, Array, Object],\n default: null\n },\n headHtml: {\n // Is this actually ever used?\n type: String,\n default: null\n },\n disabled: {\n type: Boolean,\n default: false\n },\n noBody: {\n type: Boolean,\n default: false\n },\n href: {\n // This should be deprecated, as tabs are not navigation (URL) based\n // <b-nav> + <b-card> + <router-view>/<nuxt-child> should be used instead\n // We don't support router-links here\n type: String,\n default: '#',\n // `deprecated` -> Don't use this prop\n // `deprecation` -> Refers to a change in prop usage\n deprecated: DEPRECATED_MSG\n },\n lazy: {\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n return {\n localActive: this.active && !this.disabled,\n show: false\n };\n },\n computed: {\n tabClasses: function tabClasses() {\n return [{\n active: this.localActive,\n disabled: this.disabled,\n 'card-body': this.bvTabs.card && !this.noBody\n }, // Apply <b-tabs> `activeTabClass` styles when this tab is active\n this.localActive ? this.bvTabs.activeTabClass : null];\n },\n controlledBy: function controlledBy() {\n return this.buttonId || this.safeId('__BV_tab_button__');\n },\n computedNoFade: function computedNoFade() {\n return !(this.bvTabs.fade || false);\n },\n computedLazy: function computedLazy() {\n return this.bvTabs.lazy || this.lazy;\n },\n _isTab: function _isTab() {\n // For parent sniffing of child\n return true;\n }\n },\n watch: {\n localActive: function localActive(newVal, oldVal) {\n // Make 'active' prop work with `.sync` modifier\n this.$emit('update:active', newVal);\n },\n active: function active(newVal, oldVal) {\n if (newVal !== oldVal) {\n if (newVal) {\n // If activated post mount\n this.activate();\n } else {\n if (!this.deactivate()) {\n // Tab couldn't be deactivated, so we reset the synced active prop\n // Deactivation will fail if no other tabs to activate\n this.$emit('update:active', this.localActive);\n }\n }\n }\n },\n disabled: function disabled(newVal, oldVal) {\n if (newVal !== oldVal) {\n if (newVal && this.localActive && this.bvTabs.firstTab) {\n this.localActive = false;\n this.bvTabs.firstTab();\n }\n }\n }\n },\n mounted: function mounted() {\n // Initially show on mount if active and not disabled\n this.show = this.localActive; // Deprecate use of `href` prop\n\n if (this.href && this.href !== '#') {\n /* istanbul ignore next */\n warn(\"b-tab: \".concat(DEPRECATED_MSG));\n }\n },\n updated: function updated() {\n // Force the tab button content to update (since slots are not reactive)\n // Only done if we have a title slot, as the title prop is reactive\n if (this.hasNormalizedSlot('title') && this.bvTabs.updateButton) {\n this.bvTabs.updateButton(this);\n }\n },\n methods: {\n // Public methods\n activate: function activate() {\n if (this.bvTabs.activateTab && !this.disabled) {\n return this.bvTabs.activateTab(this);\n } else {\n // Not inside a <b-tabs> component or tab is disabled\n return false;\n }\n },\n deactivate: function deactivate() {\n if (this.bvTabs.deactivateTab && this.localActive) {\n return this.bvTabs.deactivateTab(this);\n } else {\n // Not inside a <b-tabs> component or not active to begin with\n return false;\n }\n }\n },\n render: function render(h) {\n var content = h(this.tag, {\n ref: 'panel',\n staticClass: 'tab-pane',\n class: this.tabClasses,\n directives: [{\n name: 'show',\n rawName: 'v-show',\n value: this.localActive,\n expression: 'localActive'\n }],\n attrs: {\n role: 'tabpanel',\n id: this.safeId(),\n tabindex: this.localActive && !this.bvTabs.noKeyNav ? '-1' : null,\n 'aria-hidden': this.localActive ? 'false' : 'true',\n 'aria-labelledby': this.controlledBy || null\n }\n }, // Render content lazily if requested\n [this.localActive || !this.computedLazy ? this.normalizeSlot('default') : h(false)]);\n return h(BVTransition, {\n props: {\n mode: 'out-in',\n noFade: this.computedNoFade\n }\n }, [content]);\n }\n});","import BTabs from './tabs';\nimport BTab from './tab';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BTabs: BTabs,\n BTab: BTab\n};\nexport { BTabs, BTab };\nexport default {\n install: installFactory({\n components: components\n })\n};","import BToast from './toast';\nimport BToaster from './toaster';\nimport BVToastPlugin from './helpers/bv-toast';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BToast: BToast,\n BToaster: BToaster\n};\nvar plugins = {\n // $bvToast injection\n BVToastPlugin: BVToastPlugin\n};\nexport { BToast, BToaster };\nexport default {\n install: installFactory({\n components: components,\n plugins: plugins\n })\n};","import Vue from '../../utils/vue';\nimport ToolTip from '../../utils/tooltip.class';\nimport warn from '../../utils/warn';\nimport { isArray, arrayIncludes } from '../../utils/array';\nimport { getComponentConfig } from '../../utils/config';\nimport { HTMLElement } from '../../utils/safe-types';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport toolpopMixin from '../../mixins/toolpop';\nvar NAME = 'BTooltip'; // @vue/component\n\nexport default Vue.extend({\n name: NAME,\n mixins: [toolpopMixin, normalizeSlotMixin],\n props: {\n title: {\n type: String,\n default: ''\n },\n triggers: {\n type: [String, Array],\n default: 'hover focus'\n },\n placement: {\n type: String,\n default: 'top'\n },\n fallbackPlacement: {\n type: [String, Array],\n default: 'flip',\n validator: function validator(value) {\n return isArray(value) || arrayIncludes(['flip', 'clockwise', 'counterclockwise'], value);\n }\n },\n boundary: {\n // String: scrollParent, window, or viewport\n // Element: element reference\n type: [String, HTMLElement],\n default: function _default() {\n return getComponentConfig(NAME, 'boundary');\n }\n },\n boundaryPadding: {\n type: Number,\n default: function _default() {\n return getComponentConfig(NAME, 'boundaryPadding');\n }\n }\n },\n data: function data() {\n return {};\n },\n methods: {\n createToolpop: function createToolpop() {\n // getTarget is in toolpop mixin\n var target = this.getTarget();\n /* istanbul ignore else */\n\n if (target) {\n this._toolpop = new ToolTip(target, this.getConfig(), this.$root);\n } else {\n this._toolpop = null;\n warn(\"b-tooltip: 'target' element not found!\");\n }\n\n return this._toolpop;\n }\n },\n render: function render(h) {\n return h('div', {\n class: ['d-none'],\n style: {\n display: 'none'\n },\n attrs: {\n 'aria-hidden': true\n }\n }, [h('div', {\n ref: 'title'\n }, this.normalizeSlot('default'))]);\n }\n});","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport Popper from 'popper.js';\nimport ToolTip from '../../utils/tooltip.class';\nimport warn from '../../utils/warn';\nimport { getComponentConfig } from '../../utils/config';\nimport { isBrowser } from '../../utils/env';\nimport { isFunction, isObject, isString } from '../../utils/inspect';\nimport { keys } from '../../utils/object'; // Key which we use to store tooltip object on element\n\nvar BV_TOOLTIP = '__BV_ToolTip__'; // Valid event triggers\n\nvar validTriggers = {\n focus: true,\n hover: true,\n click: true,\n blur: true // Build a ToolTip config based on bindings (if any)\n // Arguments and modifiers take precedence over passed value config object\n\n /* istanbul ignore next: not easy to test */\n\n};\n\nvar parseBindings = function parseBindings(bindings)\n/* istanbul ignore next: not easy to test */\n{\n // We start out with a basic config\n var config = {\n boundary: String(getComponentConfig('BTooltip', 'boundary')),\n boundaryPadding: parseInt(getComponentConfig('BTooltip', 'boundaryPadding'), 10) || 0 // Process bindings.value\n\n };\n\n if (isString(bindings.value)) {\n // Value is tooltip content (html optionally supported)\n config.title = bindings.value;\n } else if (isFunction(bindings.value)) {\n // Title generator function\n config.title = bindings.value;\n } else if (isObject(bindings.value)) {\n // Value is config object, so merge\n config = _objectSpread({}, config, bindings.value);\n } // If argument, assume element ID of container element\n\n\n if (bindings.arg) {\n // Element ID specified as arg\n // We must prepend '#' to become a CSS selector\n config.container = \"#\".concat(bindings.arg);\n } // Process modifiers\n\n\n keys(bindings.modifiers).forEach(function (mod) {\n if (/^html$/.test(mod)) {\n // Title allows HTML\n config.html = true;\n } else if (/^nofade$/.test(mod)) {\n // No animation\n config.animation = false;\n } else if (/^(auto|top(left|right)?|bottom(left|right)?|left(top|bottom)?|right(top|bottom)?)$/.test(mod)) {\n // Placement of tooltip\n config.placement = mod;\n } else if (/^(window|viewport|scrollParent)$/.test(mod)) {\n // Boundary of tooltip\n config.boundary = mod;\n } else if (/^d\\d+$/.test(mod)) {\n // Delay value\n var delay = parseInt(mod.slice(1), 10) || 0;\n\n if (delay) {\n config.delay = delay;\n }\n } else if (/^o-?\\d+$/.test(mod)) {\n // Offset value, negative allowed\n var offset = parseInt(mod.slice(1), 10) || 0;\n\n if (offset) {\n config.offset = offset;\n }\n }\n }); // Special handling of event trigger modifiers trigger is\n // a space separated list\n\n var selectedTriggers = {}; // Parse current config object trigger\n\n var triggers = isString(config.trigger) ? config.trigger.trim().split(/\\s+/) : [];\n triggers.forEach(function (trigger) {\n if (validTriggers[trigger]) {\n selectedTriggers[trigger] = true;\n }\n }); // Parse modifiers for triggers\n\n keys(validTriggers).forEach(function (trigger) {\n if (bindings.modifiers[trigger]) {\n selectedTriggers[trigger] = true;\n }\n }); // Sanitize triggers\n\n config.trigger = keys(selectedTriggers).join(' ');\n\n if (config.trigger === 'blur') {\n // Blur by itself is useless, so convert it to 'focus'\n config.trigger = 'focus';\n }\n\n if (!config.trigger) {\n // Remove trigger config\n delete config.trigger;\n }\n\n return config;\n}; // Add or update ToolTip on our element\n\n\nvar applyTooltip = function applyTooltip(el, bindings, vnode) {\n if (!isBrowser) {\n /* istanbul ignore next */\n return;\n }\n\n if (!Popper) {\n // Popper is required for ToolTips to work\n\n /* istanbul ignore next */\n warn('v-b-tooltip: Popper.js is required for ToolTips to work');\n /* istanbul ignore next */\n\n return;\n }\n\n var config = parseBindings(bindings);\n\n if (el[BV_TOOLTIP]) {\n el[BV_TOOLTIP].updateConfig(config);\n } else {\n el[BV_TOOLTIP] = new ToolTip(el, config, vnode.context.$root);\n }\n}; // Remove ToolTip on our element\n\n\nvar removeTooltip = function removeTooltip(el) {\n if (el[BV_TOOLTIP]) {\n el[BV_TOOLTIP].destroy();\n el[BV_TOOLTIP] = null;\n delete el[BV_TOOLTIP];\n }\n};\n/*\n * Export our directive\n */\n\n\nexport default {\n bind: function bind(el, bindings, vnode) {\n applyTooltip(el, bindings, vnode);\n },\n inserted: function inserted(el, bindings, vnode) {\n applyTooltip(el, bindings, vnode);\n },\n update: function update(el, bindings, vnode)\n /* istanbul ignore next: not easy to test */\n {\n if (bindings.value !== bindings.oldValue) {\n applyTooltip(el, bindings, vnode);\n }\n },\n componentUpdated: function componentUpdated(el, bindings, vnode)\n /* istanbul ignore next: not easy to test */\n {\n if (bindings.value !== bindings.oldValue) {\n applyTooltip(el, bindings, vnode);\n }\n },\n unbind: function unbind(el) {\n removeTooltip(el);\n }\n};","import BTooltip from './tooltip';\nimport VBTooltip from '../../directives/tooltip/tooltip';\nimport { installFactory } from '../../utils/plugins';\nvar components = {\n BTooltip: BTooltip\n};\nvar directives = {\n VBTooltip: VBTooltip\n};\nexport { BTooltip };\nexport default {\n install: installFactory({\n components: components,\n directives: directives\n })\n};","import { installFactory } from '../utils/plugins';\nimport * as componentPlugins from './plugins'; // Export all component group plugins as named exports\n\nexport * from './plugins'; // Export all legacy name component group plugins as named exports\n\nexport * from './plugins-legacy'; // Export all individual components as named exports\n\nexport * from './alert';\nexport * from './badge';\nexport * from './breadcrumb';\nexport * from './button';\nexport * from './button-group';\nexport * from './button-toolbar';\nexport * from './input-group';\nexport * from './card';\nexport * from './carousel';\nexport * from './layout';\nexport * from './collapse';\nexport * from './dropdown';\nexport * from './embed';\nexport * from './form';\nexport * from './form-group';\nexport * from './form-checkbox';\nexport * from './form-radio';\nexport * from './form-input';\nexport * from './form-textarea';\nexport * from './form-file';\nexport * from './form-select';\nexport * from './image';\nexport * from './jumbotron';\nexport * from './link';\nexport * from './list-group';\nexport * from './media';\nexport * from './modal';\nexport * from './nav';\nexport * from './navbar';\nexport * from './pagination';\nexport * from './pagination-nav';\nexport * from './popover';\nexport * from './progress';\nexport * from './spinner';\nexport * from './table';\nexport * from './tabs';\nexport * from './toast';\nexport * from './tooltip'; // Export default as a plugin that installs all the component group plugins\n\nexport default {\n install: installFactory({\n plugins: componentPlugins\n })\n};","import VBToggle from './toggle';\nimport { installFactory } from '../../utils/plugins';\nvar directives = {\n VBToggle: VBToggle\n};\nexport { VBToggle };\nexport default {\n install: installFactory({\n directives: directives\n })\n};","import VBModal from './modal';\nimport { installFactory } from '../../utils/plugins';\nvar directives = {\n VBModal: VBModal\n};\nexport { VBModal };\nexport default {\n install: installFactory({\n directives: directives\n })\n};","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/*\n * ScrollSpy class definition\n */\nimport observeDom from '../../utils/observe-dom';\nimport warn from '../../utils/warn';\nimport { isElement, isVisible, closest, matches, getBCR, offset, position, selectAll, select, hasClass, addClass, removeClass, getAttr, eventOn, eventOff } from '../../utils/dom';\nimport { isString, isUndefined } from '../../utils/inspect';\n/*\n * Constants / Defaults\n */\n\nvar NAME = 'v-b-scrollspy';\nvar ACTIVATE_EVENT = 'bv::scrollspy::activate';\nvar Default = {\n element: 'body',\n offset: 10,\n method: 'auto',\n throttle: 75\n};\nvar DefaultType = {\n element: '(string|element|component)',\n offset: 'number',\n method: 'string',\n throttle: 'number'\n};\nvar ClassName = {\n DROPDOWN_ITEM: 'dropdown-item',\n ACTIVE: 'active'\n};\nvar Selector = {\n ACTIVE: '.active',\n NAV_LIST_GROUP: '.nav, .list-group',\n NAV_LINKS: '.nav-link',\n NAV_ITEMS: '.nav-item',\n LIST_ITEMS: '.list-group-item',\n DROPDOWN: '.dropdown, .dropup',\n DROPDOWN_ITEMS: '.dropdown-item',\n DROPDOWN_TOGGLE: '.dropdown-toggle'\n};\nvar OffsetMethod = {\n OFFSET: 'offset',\n POSITION: 'position' // HREFs must end with a hash followed by at least one non-hash character.\n // HREFs in the links are assumed to point to non-external links.\n // Comparison to the current page base URL is not performed!\n\n};\nvar HREF_REGEX = /^.*(#[^#]+)$/; // Transition Events\n\nvar TransitionEndEvents = ['webkitTransitionEnd', 'transitionend', 'otransitionend', 'oTransitionEnd']; // Options for events\n\nvar EventOptions = {\n passive: true,\n capture: false\n /*\n * Utility Methods\n */\n // Better var type detection\n\n};\n\nfunction toType(obj)\n/* istanbul ignore next: not easy to test */\n{\n return {}.toString.call(obj).match(/\\s([a-zA-Z]+)/)[1].toLowerCase();\n} // Check config properties for expected types\n\n\nfunction typeCheckConfig(componentName, config, configTypes)\n/* istanbul ignore next: not easy to test */\n{\n for (var property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n var expectedTypes = configTypes[property];\n var value = config[property];\n var valueType = value && isElement(value) ? 'element' : toType(value); // handle Vue instances\n\n valueType = value && value._isVue ? 'component' : valueType;\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n /* istanbul ignore next */\n warn(\"\".concat(componentName, \": Option \\\"\").concat(property, \"\\\" provided type \\\"\").concat(valueType, \"\\\" but expected type \\\"\").concat(expectedTypes, \"\\\"\"));\n }\n }\n }\n}\n/*\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n/* istanbul ignore next: not easy to test */\n\n\nvar ScrollSpy\n/* istanbul ignore next: not easy to test */\n=\n/*#__PURE__*/\nfunction () {\n function ScrollSpy(element, config, $root) {\n _classCallCheck(this, ScrollSpy);\n\n // The element we activate links in\n this.$el = element;\n this.$scroller = null;\n this.$selector = [Selector.NAV_LINKS, Selector.LIST_ITEMS, Selector.DROPDOWN_ITEMS].join(',');\n this.$offsets = [];\n this.$targets = [];\n this.$activeTarget = null;\n this.$scrollHeight = 0;\n this.$resizeTimeout = null;\n this.$obs_scroller = null;\n this.$obs_targets = null;\n this.$root = $root || null;\n this.$config = null;\n this.updateConfig(config);\n }\n\n _createClass(ScrollSpy, [{\n key: \"updateConfig\",\n value: function updateConfig(config, $root) {\n if (this.$scroller) {\n // Just in case out scroll element has changed\n this.unlisten();\n this.$scroller = null;\n }\n\n var cfg = _objectSpread({}, this.constructor.Default, config);\n\n if ($root) {\n this.$root = $root;\n }\n\n typeCheckConfig(this.constructor.Name, cfg, this.constructor.DefaultType);\n this.$config = cfg;\n\n if (this.$root) {\n var self = this;\n this.$root.$nextTick(function () {\n self.listen();\n });\n } else {\n this.listen();\n }\n }\n }, {\n key: \"dispose\",\n value: function dispose() {\n this.unlisten();\n clearTimeout(this.$resizeTimeout);\n this.$resizeTimeout = null;\n this.$el = null;\n this.$config = null;\n this.$scroller = null;\n this.$selector = null;\n this.$offsets = null;\n this.$targets = null;\n this.$activeTarget = null;\n this.$scrollHeight = null;\n }\n }, {\n key: \"listen\",\n value: function listen() {\n var _this = this;\n\n var scroller = this.getScroller();\n\n if (scroller && scroller.tagName !== 'BODY') {\n eventOn(scroller, 'scroll', this, EventOptions);\n }\n\n eventOn(window, 'scroll', this, EventOptions);\n eventOn(window, 'resize', this, EventOptions);\n eventOn(window, 'orientationchange', this, EventOptions);\n TransitionEndEvents.forEach(function (evtName) {\n eventOn(window, evtName, _this, EventOptions);\n });\n this.setObservers(true); // Schedule a refresh\n\n this.handleEvent('refresh');\n }\n }, {\n key: \"unlisten\",\n value: function unlisten() {\n var _this2 = this;\n\n var scroller = this.getScroller();\n this.setObservers(false);\n\n if (scroller && scroller.tagName !== 'BODY') {\n eventOff(scroller, 'scroll', this, EventOptions);\n }\n\n eventOff(window, 'scroll', this, EventOptions);\n eventOff(window, 'resize', this, EventOptions);\n eventOff(window, 'orientationchange', this, EventOptions);\n TransitionEndEvents.forEach(function (evtName) {\n eventOff(window, evtName, _this2, EventOptions);\n });\n }\n }, {\n key: \"setObservers\",\n value: function setObservers(on) {\n var _this3 = this;\n\n // We observe both the scroller for content changes, and the target links\n if (this.$obs_scroller) {\n this.$obs_scroller.disconnect();\n this.$obs_scroller = null;\n }\n\n if (this.$obs_targets) {\n this.$obs_targets.disconnect();\n this.$obs_targets = null;\n }\n\n if (on) {\n this.$obs_targets = observeDom(this.$el, function () {\n _this3.handleEvent('mutation');\n }, {\n subtree: true,\n childList: true,\n attributes: true,\n attributeFilter: ['href']\n });\n this.$obs_scroller = observeDom(this.getScroller(), function () {\n _this3.handleEvent('mutation');\n }, {\n subtree: true,\n childList: true,\n characterData: true,\n attributes: true,\n attributeFilter: ['id', 'style', 'class']\n });\n }\n } // general event handler\n\n }, {\n key: \"handleEvent\",\n value: function handleEvent(evt) {\n var type = isString(evt) ? evt : evt.type;\n var self = this;\n\n function resizeThrottle() {\n if (!self.$resizeTimeout) {\n self.$resizeTimeout = setTimeout(function () {\n self.refresh();\n self.process();\n self.$resizeTimeout = null;\n }, self.$config.throttle);\n }\n }\n\n if (type === 'scroll') {\n if (!this.$obs_scroller) {\n // Just in case we are added to the DOM before the scroll target is\n // We re-instantiate our listeners, just in case\n this.listen();\n }\n\n this.process();\n } else if (/(resize|orientationchange|mutation|refresh)/.test(type)) {\n // Postpone these events by throttle time\n resizeThrottle();\n }\n } // Refresh the list of target links on the element we are applied to\n\n }, {\n key: \"refresh\",\n value: function refresh() {\n var _this4 = this;\n\n var scroller = this.getScroller();\n\n if (!scroller) {\n return;\n }\n\n var autoMethod = scroller !== scroller.window ? OffsetMethod.POSITION : OffsetMethod.OFFSET;\n var method = this.$config.method === 'auto' ? autoMethod : this.$config.method;\n var methodFn = method === OffsetMethod.POSITION ? position : offset;\n var offsetBase = method === OffsetMethod.POSITION ? this.getScrollTop() : 0;\n this.$offsets = [];\n this.$targets = [];\n this.$scrollHeight = this.getScrollHeight(); // Find all the unique link HREFs that we will control\n\n selectAll(this.$selector, this.$el) // Get HREF value\n .map(function (link) {\n return getAttr(link, 'href');\n }) // Filter out HREFs that do not match our RegExp\n .filter(function (href) {\n return href && HREF_REGEX.test(href || '');\n }) // Find all elements with ID that match HREF hash\n .map(function (href) {\n // Convert HREF into an ID (including # at beginning)\n var id = href.replace(HREF_REGEX, '$1').trim();\n\n if (!id) {\n return null;\n } // Find the element with the ID specified by id\n\n\n var el = select(id, scroller);\n\n if (el && isVisible(el)) {\n return {\n offset: parseInt(methodFn(el).top, 10) + offsetBase,\n target: id\n };\n }\n\n return null;\n }).filter(Boolean) // Sort them by their offsets (smallest first)\n .sort(function (a, b) {\n return a.offset - b.offset;\n }) // record only unique targets/offsets\n .reduce(function (memo, item) {\n if (!memo[item.target]) {\n _this4.$offsets.push(item.offset);\n\n _this4.$targets.push(item.target);\n\n memo[item.target] = true;\n }\n\n return memo;\n }, {}); // Return this for easy chaining\n\n return this;\n } // Handle activating/clearing\n\n }, {\n key: \"process\",\n value: function process() {\n var scrollTop = this.getScrollTop() + this.$config.offset;\n var scrollHeight = this.getScrollHeight();\n var maxScroll = this.$config.offset + scrollHeight - this.getOffsetHeight();\n\n if (this.$scrollHeight !== scrollHeight) {\n this.refresh();\n }\n\n if (scrollTop >= maxScroll) {\n var target = this.$targets[this.$targets.length - 1];\n\n if (this.$activeTarget !== target) {\n this.activate(target);\n }\n\n return;\n }\n\n if (this.$activeTarget && scrollTop < this.$offsets[0] && this.$offsets[0] > 0) {\n this.$activeTarget = null;\n this.clear();\n return;\n }\n\n for (var i = this.$offsets.length; i--;) {\n var isActiveTarget = this.$activeTarget !== this.$targets[i] && scrollTop >= this.$offsets[i] && (isUndefined(this.$offsets[i + 1]) || scrollTop < this.$offsets[i + 1]);\n\n if (isActiveTarget) {\n this.activate(this.$targets[i]);\n }\n }\n }\n }, {\n key: \"getScroller\",\n value: function getScroller() {\n if (this.$scroller) {\n return this.$scroller;\n }\n\n var scroller = this.$config.element;\n\n if (!scroller) {\n return null;\n } else if (isElement(scroller.$el)) {\n scroller = scroller.$el;\n } else if (isString(scroller)) {\n scroller = select(scroller);\n }\n\n if (!scroller) {\n return null;\n }\n\n this.$scroller = scroller.tagName === 'BODY' ? window : scroller;\n return this.$scroller;\n }\n }, {\n key: \"getScrollTop\",\n value: function getScrollTop() {\n var scroller = this.getScroller();\n return scroller === window ? scroller.pageYOffset : scroller.scrollTop;\n }\n }, {\n key: \"getScrollHeight\",\n value: function getScrollHeight() {\n return this.getScroller().scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n }\n }, {\n key: \"getOffsetHeight\",\n value: function getOffsetHeight() {\n var scroller = this.getScroller();\n return scroller === window ? window.innerHeight : getBCR(scroller).height;\n }\n }, {\n key: \"activate\",\n value: function activate(target) {\n var _this5 = this;\n\n this.$activeTarget = target;\n this.clear(); // Grab the list of target links (<a href=\"{$target}\">)\n\n var links = selectAll(this.$selector // Split out the base selectors\n .split(',') // Map to a selector that matches links with HREF ending in the ID (including '#')\n .map(function (selector) {\n return \"\".concat(selector, \"[href$=\\\"\").concat(target, \"\\\"]\");\n }) // Join back into a single selector string\n .join(','), this.$el);\n links.forEach(function (link) {\n if (hasClass(link, ClassName.DROPDOWN_ITEM)) {\n // This is a dropdown item, so find the .dropdown-toggle and set it's state\n var dropdown = closest(Selector.DROPDOWN, link);\n\n if (dropdown) {\n _this5.setActiveState(select(Selector.DROPDOWN_TOGGLE, dropdown), true);\n } // Also set this link's state\n\n\n _this5.setActiveState(link, true);\n } else {\n // Set triggered link as active\n _this5.setActiveState(link, true);\n\n if (matches(link.parentElement, Selector.NAV_ITEMS)) {\n // Handle nav-link inside nav-item, and set nav-item active\n _this5.setActiveState(link.parentElement, true);\n } // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n\n\n var el = link;\n\n while (el) {\n el = closest(Selector.NAV_LIST_GROUP, el);\n var sibling = el ? el.previousElementSibling : null;\n\n if (sibling && matches(sibling, \"\".concat(Selector.NAV_LINKS, \", \").concat(Selector.LIST_ITEMS))) {\n _this5.setActiveState(sibling, true);\n } // Handle special case where nav-link is inside a nav-item\n\n\n if (sibling && matches(sibling, Selector.NAV_ITEMS)) {\n _this5.setActiveState(select(Selector.NAV_LINKS, sibling), true); // Add active state to nav-item as well\n\n\n _this5.setActiveState(sibling, true);\n }\n }\n }\n }); // Signal event to via $root, passing ID of activated target and reference to array of links\n\n if (links && links.length > 0 && this.$root) {\n this.$root.$emit(ACTIVATE_EVENT, target, links);\n }\n }\n }, {\n key: \"clear\",\n value: function clear() {\n var _this6 = this;\n\n selectAll(\"\".concat(this.$selector, \", \").concat(Selector.NAV_ITEMS), this.$el).filter(function (el) {\n return hasClass(el, ClassName.ACTIVE);\n }).forEach(function (el) {\n return _this6.setActiveState(el, false);\n });\n }\n }, {\n key: \"setActiveState\",\n value: function setActiveState(el, active) {\n if (!el) {\n return;\n }\n\n if (active) {\n addClass(el, ClassName.ACTIVE);\n } else {\n removeClass(el, ClassName.ACTIVE);\n }\n }\n }], [{\n key: \"Name\",\n get: function get() {\n return NAME;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType;\n }\n }]);\n\n return ScrollSpy;\n}();\n\nexport default ScrollSpy;","import ScrollSpy from './scrollspy.class';\nimport { isBrowser } from '../../utils/env';\nimport { keys } from '../../utils/object';\nimport { isNumber, isObject, isString } from '../../utils/inspect'; // Key we use to store our instance\n\nvar BV_SCROLLSPY = '__BV_ScrollSpy__'; // Build a ScrollSpy config based on bindings (if any)\n// Arguments and modifiers take precedence over passed value config object\n\n/* istanbul ignore next: not easy to test */\n\nvar parseBindings = function parseBindings(bindings)\n/* istanbul ignore next: not easy to test */\n{\n var config = {}; // If argument, assume element ID\n\n if (bindings.arg) {\n // Element ID specified as arg\n // We must prepend '#' to become a CSS selector\n config.element = \"#\".concat(bindings.arg);\n } // Process modifiers\n\n\n keys(bindings.modifiers).forEach(function (mod) {\n if (/^\\d+$/.test(mod)) {\n // Offset value\n config.offset = parseInt(mod, 10);\n } else if (/^(auto|position|offset)$/.test(mod)) {\n // Offset method\n config.method = mod;\n }\n }); // Process value\n\n if (isString(bindings.value)) {\n // Value is a CSS ID or selector\n config.element = bindings.value;\n } else if (isNumber(bindings.value)) {\n // Value is offset\n config.offset = Math.round(bindings.value);\n } else if (isObject(bindings.value)) {\n // Value is config object\n // Filter the object based on our supported config options\n keys(bindings.value).filter(function (k) {\n return Boolean(ScrollSpy.DefaultType[k]);\n }).forEach(function (k) {\n config[k] = bindings.value[k];\n });\n }\n\n return config;\n}; // Add or update ScrollSpy on our element\n\n\nvar applyScrollspy = function applyScrollspy(el, bindings, vnode)\n/* istanbul ignore next: not easy to test */\n{\n if (!isBrowser) {\n /* istanbul ignore next */\n return;\n }\n\n var config = parseBindings(bindings);\n\n if (el[BV_SCROLLSPY]) {\n el[BV_SCROLLSPY].updateConfig(config, vnode.context.$root);\n } else {\n el[BV_SCROLLSPY] = new ScrollSpy(el, config, vnode.context.$root);\n }\n}; // Remove ScrollSpy on our element\n\n/* istanbul ignore next: not easy to test */\n\n\nvar removeScrollspy = function removeScrollspy(el)\n/* istanbul ignore next: not easy to test */\n{\n if (el[BV_SCROLLSPY]) {\n el[BV_SCROLLSPY].dispose();\n el[BV_SCROLLSPY] = null;\n delete el[BV_SCROLLSPY];\n }\n};\n/*\n * Export our directive\n */\n\n\nexport default {\n bind: function bind(el, bindings, vnode)\n /* istanbul ignore next: not easy to test */\n {\n applyScrollspy(el, bindings, vnode);\n },\n inserted: function inserted(el, bindings, vnode)\n /* istanbul ignore next: not easy to test */\n {\n applyScrollspy(el, bindings, vnode);\n },\n update: function update(el, bindings, vnode)\n /* istanbul ignore next: not easy to test */\n {\n if (bindings.value !== bindings.oldValue) {\n applyScrollspy(el, bindings, vnode);\n }\n },\n componentUpdated: function componentUpdated(el, bindings, vnode)\n /* istanbul ignore next: not easy to test */\n {\n if (bindings.value !== bindings.oldValue) {\n applyScrollspy(el, bindings, vnode);\n }\n },\n unbind: function unbind(el)\n /* istanbul ignore next: not easy to test */\n {\n removeScrollspy(el);\n }\n};","import VBScrollspy from './scrollspy';\nimport { installFactory } from '../../utils/plugins';\nvar directives = {\n VBScrollspy: VBScrollspy\n};\nexport { VBScrollspy };\nexport default {\n install: installFactory({\n directives: directives\n })\n};","import VBTooltip from './tooltip';\nimport { installFactory } from '../../utils/plugins';\nvar directives = {\n VBTooltip: VBTooltip\n};\nexport { VBTooltip };\nexport default {\n install: installFactory({\n directives: directives\n })\n};","import VBPopover from './popover';\nimport { installFactory } from '../../utils/plugins';\nvar directives = {\n VBPopover: VBPopover\n};\nexport { VBPopover };\nexport default {\n install: installFactory({\n directives: directives\n })\n};","import { installFactory } from '../utils/plugins';\nimport * as directivePlugins from './plugins'; // Export all directive group plugins as named exports\n\nexport * from './plugins'; // Export all legacy named directive group plugins as named exports\n\nexport * from './plugins-legacy'; // Named exports of all directives\n\nexport * from './toggle';\nexport * from './modal';\nexport * from './scrollspy';\nexport * from './tooltip';\nexport * from './popover'; // Default export is a plugin that installs all plugins\n\nexport default {\n install: installFactory({\n plugins: directivePlugins\n })\n};","/*!\n * BoostrapVue 2.0.0-rc.21\n *\n * @link https://bootstrap-vue.js.org\n * @source https://github.com/bootstrap-vue/bootstrap-vue\n * @copyright (c) 2016-2019 BootstrapVue\n * @license MIT\n * https://github.com/bootstrap-vue/bootstrap-vue/blob/master/LICENSE\n */\nimport componentsPlugin from './components';\nimport directivesPlugin from './directives';\nimport { installFactory, vueUse } from './utils/plugins';\nimport { setConfig } from './utils/config';\nvar BootstrapVue = {\n install: installFactory({\n plugins: {\n componentsPlugin: componentsPlugin,\n directivesPlugin: directivesPlugin\n }\n }),\n setConfig: setConfig // Auto installation only occurs if window.Vue exists\n\n};\nvueUse(BootstrapVue);\nexport default BootstrapVue;","require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n","require('../../modules/es6.array.is-array');\nmodule.exports = require('../../modules/_core').Array.isArray;\n","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","require('../../modules/es6.object.is');\nmodule.exports = require('../../modules/_core').Object.is;\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","module.exports = {};\n","module.exports = true;\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","exports.f = Object.getOwnPropertySymbols;\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","exports.f = {}.propertyIsEnumerable;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","module.exports = require('./_hide');\n","// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = require('./_export');\n\n$export($export.S, 'Array', { isArray: require('./_is-array') });\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","// 19.1.3.10 Object.is(value1, value2)\nvar $export = require('./_export');\n$export($export.S, 'Object', { is: require('./_same-value') });\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","var isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a function');\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n defineProperty(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","var isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw $TypeError($String(argument) + ' is not an object');\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar uncurryThis = NATIVE_BIND && bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? function (fn) {\n return fn && uncurryThis(fn);\n} : function (fn) {\n return fn && function () {\n return call.apply(fn, arguments);\n };\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return func == null ? undefined : aCallable(func);\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es-x/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es-x/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","module.exports = {};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = uncurryThis(store.get);\n var wmhas = uncurryThis(store.has);\n var wmset = uncurryThis(store.set);\n set = function (it, metadata) {\n if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget(store, it) || {};\n };\n has = function (it) {\n return wmhas(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n return typeof argument == 'function';\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","module.exports = false;\n","var getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (String(name).slice(0, 7) === 'Symbol(') {\n name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es-x/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","/* eslint-disable es-x/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es-x/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es-x/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es-x/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es-x/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","var call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw $TypeError(\"Can't convert object to primitive value\");\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","var $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.23.3',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.23.3/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","var call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","/* eslint-disable es-x/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else if (USE_SYMBOL_AS_UID && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar fails = require('../internals/fails');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// FF99+ bug\nvar BROKEN_ON_SPARSE = fails(function () {\n return !Array(1).includes();\n});\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","function deepFreeze(obj) {\n if (obj instanceof Map) {\n obj.clear = obj.delete = obj.set = function () {\n throw new Error('map is read-only');\n };\n } else if (obj instanceof Set) {\n obj.add = obj.clear = obj.delete = function () {\n throw new Error('set is read-only');\n };\n }\n\n // Freeze self\n Object.freeze(obj);\n\n Object.getOwnPropertyNames(obj).forEach(function (name) {\n var prop = obj[name];\n\n // Freeze prop if it is an object\n if (typeof prop == 'object' && !Object.isFrozen(prop)) {\n deepFreeze(prop);\n }\n });\n\n return obj;\n}\n\nvar deepFreezeEs6 = deepFreeze;\nvar _default = deepFreeze;\ndeepFreezeEs6.default = _default;\n\n/** @implements CallbackResponse */\nclass Response {\n /**\n * @param {CompiledMode} mode\n */\n constructor(mode) {\n // eslint-disable-next-line no-undefined\n if (mode.data === undefined) mode.data = {};\n\n this.data = mode.data;\n this.isMatchIgnored = false;\n }\n\n ignoreMatch() {\n this.isMatchIgnored = true;\n }\n}\n\n/**\n * @param {string} value\n * @returns {string}\n */\nfunction escapeHTML(value) {\n return value\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\n/**\n * performs a shallow merge of multiple objects into one\n *\n * @template T\n * @param {T} original\n * @param {Record<string,any>[]} objects\n * @returns {T} a single new object\n */\nfunction inherit(original, ...objects) {\n /** @type Record<string,any> */\n const result = Object.create(null);\n\n for (const key in original) {\n result[key] = original[key];\n }\n objects.forEach(function(obj) {\n for (const key in obj) {\n result[key] = obj[key];\n }\n });\n return /** @type {T} */ (result);\n}\n\n/**\n * @typedef {object} Renderer\n * @property {(text: string) => void} addText\n * @property {(node: Node) => void} openNode\n * @property {(node: Node) => void} closeNode\n * @property {() => string} value\n */\n\n/** @typedef {{kind?: string, sublanguage?: boolean}} Node */\n/** @typedef {{walk: (r: Renderer) => void}} Tree */\n/** */\n\nconst SPAN_CLOSE = '</span>';\n\n/**\n * Determines if a node needs to be wrapped in <span>\n *\n * @param {Node} node */\nconst emitsWrappingTags = (node) => {\n return !!node.kind;\n};\n\n/** @type {Renderer} */\nclass HTMLRenderer {\n /**\n * Creates a new HTMLRenderer\n *\n * @param {Tree} parseTree - the parse tree (must support `walk` API)\n * @param {{classPrefix: string}} options\n */\n constructor(parseTree, options) {\n this.buffer = \"\";\n this.classPrefix = options.classPrefix;\n parseTree.walk(this);\n }\n\n /**\n * Adds texts to the output stream\n *\n * @param {string} text */\n addText(text) {\n this.buffer += escapeHTML(text);\n }\n\n /**\n * Adds a node open to the output stream (if needed)\n *\n * @param {Node} node */\n openNode(node) {\n if (!emitsWrappingTags(node)) return;\n\n let className = node.kind;\n if (!node.sublanguage) {\n className = `${this.classPrefix}${className}`;\n }\n this.span(className);\n }\n\n /**\n * Adds a node close to the output stream (if needed)\n *\n * @param {Node} node */\n closeNode(node) {\n if (!emitsWrappingTags(node)) return;\n\n this.buffer += SPAN_CLOSE;\n }\n\n /**\n * returns the accumulated buffer\n */\n value() {\n return this.buffer;\n }\n\n // helpers\n\n /**\n * Builds a span element\n *\n * @param {string} className */\n span(className) {\n this.buffer += `<span class=\"${className}\">`;\n }\n}\n\n/** @typedef {{kind?: string, sublanguage?: boolean, children: Node[]} | string} Node */\n/** @typedef {{kind?: string, sublanguage?: boolean, children: Node[]} } DataNode */\n/** */\n\nclass TokenTree {\n constructor() {\n /** @type DataNode */\n this.rootNode = { children: [] };\n this.stack = [this.rootNode];\n }\n\n get top() {\n return this.stack[this.stack.length - 1];\n }\n\n get root() { return this.rootNode; }\n\n /** @param {Node} node */\n add(node) {\n this.top.children.push(node);\n }\n\n /** @param {string} kind */\n openNode(kind) {\n /** @type Node */\n const node = { kind, children: [] };\n this.add(node);\n this.stack.push(node);\n }\n\n closeNode() {\n if (this.stack.length > 1) {\n return this.stack.pop();\n }\n // eslint-disable-next-line no-undefined\n return undefined;\n }\n\n closeAllNodes() {\n while (this.closeNode());\n }\n\n toJSON() {\n return JSON.stringify(this.rootNode, null, 4);\n }\n\n /**\n * @typedef { import(\"./html_renderer\").Renderer } Renderer\n * @param {Renderer} builder\n */\n walk(builder) {\n // this does not\n return this.constructor._walk(builder, this.rootNode);\n // this works\n // return TokenTree._walk(builder, this.rootNode);\n }\n\n /**\n * @param {Renderer} builder\n * @param {Node} node\n */\n static _walk(builder, node) {\n if (typeof node === \"string\") {\n builder.addText(node);\n } else if (node.children) {\n builder.openNode(node);\n node.children.forEach((child) => this._walk(builder, child));\n builder.closeNode(node);\n }\n return builder;\n }\n\n /**\n * @param {Node} node\n */\n static _collapse(node) {\n if (typeof node === \"string\") return;\n if (!node.children) return;\n\n if (node.children.every(el => typeof el === \"string\")) {\n // node.text = node.children.join(\"\");\n // delete node.children;\n node.children = [node.children.join(\"\")];\n } else {\n node.children.forEach((child) => {\n TokenTree._collapse(child);\n });\n }\n }\n}\n\n/**\n Currently this is all private API, but this is the minimal API necessary\n that an Emitter must implement to fully support the parser.\n\n Minimal interface:\n\n - addKeyword(text, kind)\n - addText(text)\n - addSublanguage(emitter, subLanguageName)\n - finalize()\n - openNode(kind)\n - closeNode()\n - closeAllNodes()\n - toHTML()\n\n*/\n\n/**\n * @implements {Emitter}\n */\nclass TokenTreeEmitter extends TokenTree {\n /**\n * @param {*} options\n */\n constructor(options) {\n super();\n this.options = options;\n }\n\n /**\n * @param {string} text\n * @param {string} kind\n */\n addKeyword(text, kind) {\n if (text === \"\") { return; }\n\n this.openNode(kind);\n this.addText(text);\n this.closeNode();\n }\n\n /**\n * @param {string} text\n */\n addText(text) {\n if (text === \"\") { return; }\n\n this.add(text);\n }\n\n /**\n * @param {Emitter & {root: DataNode}} emitter\n * @param {string} name\n */\n addSublanguage(emitter, name) {\n /** @type DataNode */\n const node = emitter.root;\n node.kind = name;\n node.sublanguage = true;\n this.add(node);\n }\n\n toHTML() {\n const renderer = new HTMLRenderer(this, this.options);\n return renderer.value();\n }\n\n finalize() {\n return true;\n }\n}\n\n/**\n * @param {string} value\n * @returns {RegExp}\n * */\nfunction escape(value) {\n return new RegExp(value.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), 'm');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] } args\n * @returns {string}\n */\nfunction either(...args) {\n const joined = '(' + args.map((x) => source(x)).join(\"|\") + \")\";\n return joined;\n}\n\n/**\n * @param {RegExp} re\n * @returns {number}\n */\nfunction countMatchGroups(re) {\n return (new RegExp(re.toString() + '|')).exec('').length - 1;\n}\n\n/**\n * Does lexeme start with a regular expression match at the beginning\n * @param {RegExp} re\n * @param {string} lexeme\n */\nfunction startsWith(re, lexeme) {\n const match = re && re.exec(lexeme);\n return match && match.index === 0;\n}\n\n// BACKREF_RE matches an open parenthesis or backreference. To avoid\n// an incorrect parse, it additionally matches the following:\n// - [...] elements, where the meaning of parentheses and escapes change\n// - other escape sequences, so we do not misparse escape sequences as\n// interesting elements\n// - non-matching or lookahead parentheses, which do not capture. These\n// follow the '(' with a '?'.\nconst BACKREF_RE = /\\[(?:[^\\\\\\]]|\\\\.)*\\]|\\(\\??|\\\\([1-9][0-9]*)|\\\\./;\n\n// join logically computes regexps.join(separator), but fixes the\n// backreferences so they continue to match.\n// it also places each individual regular expression into it's own\n// match group, keeping track of the sequencing of those match groups\n// is currently an exercise for the caller. :-)\n/**\n * @param {(string | RegExp)[]} regexps\n * @param {string} separator\n * @returns {string}\n */\nfunction join(regexps, separator = \"|\") {\n let numCaptures = 0;\n\n return regexps.map((regex) => {\n numCaptures += 1;\n const offset = numCaptures;\n let re = source(regex);\n let out = '';\n\n while (re.length > 0) {\n const match = BACKREF_RE.exec(re);\n if (!match) {\n out += re;\n break;\n }\n out += re.substring(0, match.index);\n re = re.substring(match.index + match[0].length);\n if (match[0][0] === '\\\\' && match[1]) {\n // Adjust the backreference.\n out += '\\\\' + String(Number(match[1]) + offset);\n } else {\n out += match[0];\n if (match[0] === '(') {\n numCaptures++;\n }\n }\n }\n return out;\n }).map(re => `(${re})`).join(separator);\n}\n\n// Common regexps\nconst MATCH_NOTHING_RE = /\\b\\B/;\nconst IDENT_RE = '[a-zA-Z]\\\\w*';\nconst UNDERSCORE_IDENT_RE = '[a-zA-Z_]\\\\w*';\nconst NUMBER_RE = '\\\\b\\\\d+(\\\\.\\\\d+)?';\nconst C_NUMBER_RE = '(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)'; // 0x..., 0..., decimal, float\nconst BINARY_NUMBER_RE = '\\\\b(0b[01]+)'; // 0b...\nconst RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~';\n\n/**\n* @param { Partial<Mode> & {binary?: string | RegExp} } opts\n*/\nconst SHEBANG = (opts = {}) => {\n const beginShebang = /^#![ ]*\\//;\n if (opts.binary) {\n opts.begin = concat(\n beginShebang,\n /.*\\b/,\n opts.binary,\n /\\b.*/);\n }\n return inherit({\n className: 'meta',\n begin: beginShebang,\n end: /$/,\n relevance: 0,\n /** @type {ModeCallback} */\n \"on:begin\": (m, resp) => {\n if (m.index !== 0) resp.ignoreMatch();\n }\n }, opts);\n};\n\n// Common modes\nconst BACKSLASH_ESCAPE = {\n begin: '\\\\\\\\[\\\\s\\\\S]', relevance: 0\n};\nconst APOS_STRING_MODE = {\n className: 'string',\n begin: '\\'',\n end: '\\'',\n illegal: '\\\\n',\n contains: [BACKSLASH_ESCAPE]\n};\nconst QUOTE_STRING_MODE = {\n className: 'string',\n begin: '\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [BACKSLASH_ESCAPE]\n};\nconst PHRASAL_WORDS_MODE = {\n begin: /\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b/\n};\n/**\n * Creates a comment mode\n *\n * @param {string | RegExp} begin\n * @param {string | RegExp} end\n * @param {Mode | {}} [modeOptions]\n * @returns {Partial<Mode>}\n */\nconst COMMENT = function(begin, end, modeOptions = {}) {\n const mode = inherit(\n {\n className: 'comment',\n begin,\n end,\n contains: []\n },\n modeOptions\n );\n mode.contains.push(PHRASAL_WORDS_MODE);\n mode.contains.push({\n className: 'doctag',\n begin: '(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):',\n relevance: 0\n });\n return mode;\n};\nconst C_LINE_COMMENT_MODE = COMMENT('//', '$');\nconst C_BLOCK_COMMENT_MODE = COMMENT('/\\\\*', '\\\\*/');\nconst HASH_COMMENT_MODE = COMMENT('#', '$');\nconst NUMBER_MODE = {\n className: 'number',\n begin: NUMBER_RE,\n relevance: 0\n};\nconst C_NUMBER_MODE = {\n className: 'number',\n begin: C_NUMBER_RE,\n relevance: 0\n};\nconst BINARY_NUMBER_MODE = {\n className: 'number',\n begin: BINARY_NUMBER_RE,\n relevance: 0\n};\nconst CSS_NUMBER_MODE = {\n className: 'number',\n begin: NUMBER_RE + '(' +\n '%|em|ex|ch|rem' +\n '|vw|vh|vmin|vmax' +\n '|cm|mm|in|pt|pc|px' +\n '|deg|grad|rad|turn' +\n '|s|ms' +\n '|Hz|kHz' +\n '|dpi|dpcm|dppx' +\n ')?',\n relevance: 0\n};\nconst REGEXP_MODE = {\n // this outer rule makes sure we actually have a WHOLE regex and not simply\n // an expression such as:\n //\n // 3 / something\n //\n // (which will then blow up when regex's `illegal` sees the newline)\n begin: /(?=\\/[^/\\n]*\\/)/,\n contains: [{\n className: 'regexp',\n begin: /\\//,\n end: /\\/[gimuy]*/,\n illegal: /\\n/,\n contains: [\n BACKSLASH_ESCAPE,\n {\n begin: /\\[/,\n end: /\\]/,\n relevance: 0,\n contains: [BACKSLASH_ESCAPE]\n }\n ]\n }]\n};\nconst TITLE_MODE = {\n className: 'title',\n begin: IDENT_RE,\n relevance: 0\n};\nconst UNDERSCORE_TITLE_MODE = {\n className: 'title',\n begin: UNDERSCORE_IDENT_RE,\n relevance: 0\n};\nconst METHOD_GUARD = {\n // excludes method names from keyword processing\n begin: '\\\\.\\\\s*' + UNDERSCORE_IDENT_RE,\n relevance: 0\n};\n\n/**\n * Adds end same as begin mechanics to a mode\n *\n * Your mode must include at least a single () match group as that first match\n * group is what is used for comparison\n * @param {Partial<Mode>} mode\n */\nconst END_SAME_AS_BEGIN = function(mode) {\n return Object.assign(mode,\n {\n /** @type {ModeCallback} */\n 'on:begin': (m, resp) => { resp.data._beginMatch = m[1]; },\n /** @type {ModeCallback} */\n 'on:end': (m, resp) => { if (resp.data._beginMatch !== m[1]) resp.ignoreMatch(); }\n });\n};\n\nvar MODES = /*#__PURE__*/Object.freeze({\n __proto__: null,\n MATCH_NOTHING_RE: MATCH_NOTHING_RE,\n IDENT_RE: IDENT_RE,\n UNDERSCORE_IDENT_RE: UNDERSCORE_IDENT_RE,\n NUMBER_RE: NUMBER_RE,\n C_NUMBER_RE: C_NUMBER_RE,\n BINARY_NUMBER_RE: BINARY_NUMBER_RE,\n RE_STARTERS_RE: RE_STARTERS_RE,\n SHEBANG: SHEBANG,\n BACKSLASH_ESCAPE: BACKSLASH_ESCAPE,\n APOS_STRING_MODE: APOS_STRING_MODE,\n QUOTE_STRING_MODE: QUOTE_STRING_MODE,\n PHRASAL_WORDS_MODE: PHRASAL_WORDS_MODE,\n COMMENT: COMMENT,\n C_LINE_COMMENT_MODE: C_LINE_COMMENT_MODE,\n C_BLOCK_COMMENT_MODE: C_BLOCK_COMMENT_MODE,\n HASH_COMMENT_MODE: HASH_COMMENT_MODE,\n NUMBER_MODE: NUMBER_MODE,\n C_NUMBER_MODE: C_NUMBER_MODE,\n BINARY_NUMBER_MODE: BINARY_NUMBER_MODE,\n CSS_NUMBER_MODE: CSS_NUMBER_MODE,\n REGEXP_MODE: REGEXP_MODE,\n TITLE_MODE: TITLE_MODE,\n UNDERSCORE_TITLE_MODE: UNDERSCORE_TITLE_MODE,\n METHOD_GUARD: METHOD_GUARD,\n END_SAME_AS_BEGIN: END_SAME_AS_BEGIN\n});\n\n// Grammar extensions / plugins\n// See: https://github.com/highlightjs/highlight.js/issues/2833\n\n// Grammar extensions allow \"syntactic sugar\" to be added to the grammar modes\n// without requiring any underlying changes to the compiler internals.\n\n// `compileMatch` being the perfect small example of now allowing a grammar\n// author to write `match` when they desire to match a single expression rather\n// than being forced to use `begin`. The extension then just moves `match` into\n// `begin` when it runs. Ie, no features have been added, but we've just made\n// the experience of writing (and reading grammars) a little bit nicer.\n\n// ------\n\n// TODO: We need negative look-behind support to do this properly\n/**\n * Skip a match if it has a preceding dot\n *\n * This is used for `beginKeywords` to prevent matching expressions such as\n * `bob.keyword.do()`. The mode compiler automatically wires this up as a\n * special _internal_ 'on:begin' callback for modes with `beginKeywords`\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\nfunction skipIfhasPrecedingDot(match, response) {\n const before = match.input[match.index - 1];\n if (before === \".\") {\n response.ignoreMatch();\n }\n}\n\n\n/**\n * `beginKeywords` syntactic sugar\n * @type {CompilerExt}\n */\nfunction beginKeywords(mode, parent) {\n if (!parent) return;\n if (!mode.beginKeywords) return;\n\n // for languages with keywords that include non-word characters checking for\n // a word boundary is not sufficient, so instead we check for a word boundary\n // or whitespace - this does no harm in any case since our keyword engine\n // doesn't allow spaces in keywords anyways and we still check for the boundary\n // first\n mode.begin = '\\\\b(' + mode.beginKeywords.split(' ').join('|') + ')(?!\\\\.)(?=\\\\b|\\\\s)';\n mode.__beforeBegin = skipIfhasPrecedingDot;\n mode.keywords = mode.keywords || mode.beginKeywords;\n delete mode.beginKeywords;\n\n // prevents double relevance, the keywords themselves provide\n // relevance, the mode doesn't need to double it\n // eslint-disable-next-line no-undefined\n if (mode.relevance === undefined) mode.relevance = 0;\n}\n\n/**\n * Allow `illegal` to contain an array of illegal values\n * @type {CompilerExt}\n */\nfunction compileIllegal(mode, _parent) {\n if (!Array.isArray(mode.illegal)) return;\n\n mode.illegal = either(...mode.illegal);\n}\n\n/**\n * `match` to match a single expression for readability\n * @type {CompilerExt}\n */\nfunction compileMatch(mode, _parent) {\n if (!mode.match) return;\n if (mode.begin || mode.end) throw new Error(\"begin & end are not supported with match\");\n\n mode.begin = mode.match;\n delete mode.match;\n}\n\n/**\n * provides the default 1 relevance to all modes\n * @type {CompilerExt}\n */\nfunction compileRelevance(mode, _parent) {\n // eslint-disable-next-line no-undefined\n if (mode.relevance === undefined) mode.relevance = 1;\n}\n\n// keywords that should have no default relevance value\nconst COMMON_KEYWORDS = [\n 'of',\n 'and',\n 'for',\n 'in',\n 'not',\n 'or',\n 'if',\n 'then',\n 'parent', // common variable name\n 'list', // common variable name\n 'value' // common variable name\n];\n\nconst DEFAULT_KEYWORD_CLASSNAME = \"keyword\";\n\n/**\n * Given raw keywords from a language definition, compile them.\n *\n * @param {string | Record<string,string|string[]> | Array<string>} rawKeywords\n * @param {boolean} caseInsensitive\n */\nfunction compileKeywords(rawKeywords, caseInsensitive, className = DEFAULT_KEYWORD_CLASSNAME) {\n /** @type KeywordDict */\n const compiledKeywords = {};\n\n // input can be a string of keywords, an array of keywords, or a object with\n // named keys representing className (which can then point to a string or array)\n if (typeof rawKeywords === 'string') {\n compileList(className, rawKeywords.split(\" \"));\n } else if (Array.isArray(rawKeywords)) {\n compileList(className, rawKeywords);\n } else {\n Object.keys(rawKeywords).forEach(function(className) {\n // collapse all our objects back into the parent object\n Object.assign(\n compiledKeywords,\n compileKeywords(rawKeywords[className], caseInsensitive, className)\n );\n });\n }\n return compiledKeywords;\n\n // ---\n\n /**\n * Compiles an individual list of keywords\n *\n * Ex: \"for if when while|5\"\n *\n * @param {string} className\n * @param {Array<string>} keywordList\n */\n function compileList(className, keywordList) {\n if (caseInsensitive) {\n keywordList = keywordList.map(x => x.toLowerCase());\n }\n keywordList.forEach(function(keyword) {\n const pair = keyword.split('|');\n compiledKeywords[pair[0]] = [className, scoreForKeyword(pair[0], pair[1])];\n });\n }\n}\n\n/**\n * Returns the proper score for a given keyword\n *\n * Also takes into account comment keywords, which will be scored 0 UNLESS\n * another score has been manually assigned.\n * @param {string} keyword\n * @param {string} [providedScore]\n */\nfunction scoreForKeyword(keyword, providedScore) {\n // manual scores always win over common keywords\n // so you can force a score of 1 if you really insist\n if (providedScore) {\n return Number(providedScore);\n }\n\n return commonKeyword(keyword) ? 0 : 1;\n}\n\n/**\n * Determines if a given keyword is common or not\n *\n * @param {string} keyword */\nfunction commonKeyword(keyword) {\n return COMMON_KEYWORDS.includes(keyword.toLowerCase());\n}\n\n// compilation\n\n/**\n * Compiles a language definition result\n *\n * Given the raw result of a language definition (Language), compiles this so\n * that it is ready for highlighting code.\n * @param {Language} language\n * @param {{plugins: HLJSPlugin[]}} opts\n * @returns {CompiledLanguage}\n */\nfunction compileLanguage(language, { plugins }) {\n /**\n * Builds a regex with the case sensativility of the current language\n *\n * @param {RegExp | string} value\n * @param {boolean} [global]\n */\n function langRe(value, global) {\n return new RegExp(\n source(value),\n 'm' + (language.case_insensitive ? 'i' : '') + (global ? 'g' : '')\n );\n }\n\n /**\n Stores multiple regular expressions and allows you to quickly search for\n them all in a string simultaneously - returning the first match. It does\n this by creating a huge (a|b|c) regex - each individual item wrapped with ()\n and joined by `|` - using match groups to track position. When a match is\n found checking which position in the array has content allows us to figure\n out which of the original regexes / match groups triggered the match.\n\n The match object itself (the result of `Regex.exec`) is returned but also\n enhanced by merging in any meta-data that was registered with the regex.\n This is how we keep track of which mode matched, and what type of rule\n (`illegal`, `begin`, end, etc).\n */\n class MultiRegex {\n constructor() {\n this.matchIndexes = {};\n // @ts-ignore\n this.regexes = [];\n this.matchAt = 1;\n this.position = 0;\n }\n\n // @ts-ignore\n addRule(re, opts) {\n opts.position = this.position++;\n // @ts-ignore\n this.matchIndexes[this.matchAt] = opts;\n this.regexes.push([opts, re]);\n this.matchAt += countMatchGroups(re) + 1;\n }\n\n compile() {\n if (this.regexes.length === 0) {\n // avoids the need to check length every time exec is called\n // @ts-ignore\n this.exec = () => null;\n }\n const terminators = this.regexes.map(el => el[1]);\n this.matcherRe = langRe(join(terminators), true);\n this.lastIndex = 0;\n }\n\n /** @param {string} s */\n exec(s) {\n this.matcherRe.lastIndex = this.lastIndex;\n const match = this.matcherRe.exec(s);\n if (!match) { return null; }\n\n // eslint-disable-next-line no-undefined\n const i = match.findIndex((el, i) => i > 0 && el !== undefined);\n // @ts-ignore\n const matchData = this.matchIndexes[i];\n // trim off any earlier non-relevant match groups (ie, the other regex\n // match groups that make up the multi-matcher)\n match.splice(0, i);\n\n return Object.assign(match, matchData);\n }\n }\n\n /*\n Created to solve the key deficiently with MultiRegex - there is no way to\n test for multiple matches at a single location. Why would we need to do\n that? In the future a more dynamic engine will allow certain matches to be\n ignored. An example: if we matched say the 3rd regex in a large group but\n decided to ignore it - we'd need to started testing again at the 4th\n regex... but MultiRegex itself gives us no real way to do that.\n\n So what this class creates MultiRegexs on the fly for whatever search\n position they are needed.\n\n NOTE: These additional MultiRegex objects are created dynamically. For most\n grammars most of the time we will never actually need anything more than the\n first MultiRegex - so this shouldn't have too much overhead.\n\n Say this is our search group, and we match regex3, but wish to ignore it.\n\n regex1 | regex2 | regex3 | regex4 | regex5 ' ie, startAt = 0\n\n What we need is a new MultiRegex that only includes the remaining\n possibilities:\n\n regex4 | regex5 ' ie, startAt = 3\n\n This class wraps all that complexity up in a simple API... `startAt` decides\n where in the array of expressions to start doing the matching. It\n auto-increments, so if a match is found at position 2, then startAt will be\n set to 3. If the end is reached startAt will return to 0.\n\n MOST of the time the parser will be setting startAt manually to 0.\n */\n class ResumableMultiRegex {\n constructor() {\n // @ts-ignore\n this.rules = [];\n // @ts-ignore\n this.multiRegexes = [];\n this.count = 0;\n\n this.lastIndex = 0;\n this.regexIndex = 0;\n }\n\n // @ts-ignore\n getMatcher(index) {\n if (this.multiRegexes[index]) return this.multiRegexes[index];\n\n const matcher = new MultiRegex();\n this.rules.slice(index).forEach(([re, opts]) => matcher.addRule(re, opts));\n matcher.compile();\n this.multiRegexes[index] = matcher;\n return matcher;\n }\n\n resumingScanAtSamePosition() {\n return this.regexIndex !== 0;\n }\n\n considerAll() {\n this.regexIndex = 0;\n }\n\n // @ts-ignore\n addRule(re, opts) {\n this.rules.push([re, opts]);\n if (opts.type === \"begin\") this.count++;\n }\n\n /** @param {string} s */\n exec(s) {\n const m = this.getMatcher(this.regexIndex);\n m.lastIndex = this.lastIndex;\n let result = m.exec(s);\n\n // The following is because we have no easy way to say \"resume scanning at the\n // existing position but also skip the current rule ONLY\". What happens is\n // all prior rules are also skipped which can result in matching the wrong\n // thing. Example of matching \"booger\":\n\n // our matcher is [string, \"booger\", number]\n //\n // ....booger....\n\n // if \"booger\" is ignored then we'd really need a regex to scan from the\n // SAME position for only: [string, number] but ignoring \"booger\" (if it\n // was the first match), a simple resume would scan ahead who knows how\n // far looking only for \"number\", ignoring potential string matches (or\n // future \"booger\" matches that might be valid.)\n\n // So what we do: We execute two matchers, one resuming at the same\n // position, but the second full matcher starting at the position after:\n\n // /--- resume first regex match here (for [number])\n // |/---- full match here for [string, \"booger\", number]\n // vv\n // ....booger....\n\n // Which ever results in a match first is then used. So this 3-4 step\n // process essentially allows us to say \"match at this position, excluding\n // a prior rule that was ignored\".\n //\n // 1. Match \"booger\" first, ignore. Also proves that [string] does non match.\n // 2. Resume matching for [number]\n // 3. Match at index + 1 for [string, \"booger\", number]\n // 4. If #2 and #3 result in matches, which came first?\n if (this.resumingScanAtSamePosition()) {\n if (result && result.index === this.lastIndex) ; else { // use the second matcher result\n const m2 = this.getMatcher(0);\n m2.lastIndex = this.lastIndex + 1;\n result = m2.exec(s);\n }\n }\n\n if (result) {\n this.regexIndex += result.position + 1;\n if (this.regexIndex === this.count) {\n // wrap-around to considering all matches again\n this.considerAll();\n }\n }\n\n return result;\n }\n }\n\n /**\n * Given a mode, builds a huge ResumableMultiRegex that can be used to walk\n * the content and find matches.\n *\n * @param {CompiledMode} mode\n * @returns {ResumableMultiRegex}\n */\n function buildModeRegex(mode) {\n const mm = new ResumableMultiRegex();\n\n mode.contains.forEach(term => mm.addRule(term.begin, { rule: term, type: \"begin\" }));\n\n if (mode.terminatorEnd) {\n mm.addRule(mode.terminatorEnd, { type: \"end\" });\n }\n if (mode.illegal) {\n mm.addRule(mode.illegal, { type: \"illegal\" });\n }\n\n return mm;\n }\n\n /** skip vs abort vs ignore\n *\n * @skip - The mode is still entered and exited normally (and contains rules apply),\n * but all content is held and added to the parent buffer rather than being\n * output when the mode ends. Mostly used with `sublanguage` to build up\n * a single large buffer than can be parsed by sublanguage.\n *\n * - The mode begin ands ends normally.\n * - Content matched is added to the parent mode buffer.\n * - The parser cursor is moved forward normally.\n *\n * @abort - A hack placeholder until we have ignore. Aborts the mode (as if it\n * never matched) but DOES NOT continue to match subsequent `contains`\n * modes. Abort is bad/suboptimal because it can result in modes\n * farther down not getting applied because an earlier rule eats the\n * content but then aborts.\n *\n * - The mode does not begin.\n * - Content matched by `begin` is added to the mode buffer.\n * - The parser cursor is moved forward accordingly.\n *\n * @ignore - Ignores the mode (as if it never matched) and continues to match any\n * subsequent `contains` modes. Ignore isn't technically possible with\n * the current parser implementation.\n *\n * - The mode does not begin.\n * - Content matched by `begin` is ignored.\n * - The parser cursor is not moved forward.\n */\n\n /**\n * Compiles an individual mode\n *\n * This can raise an error if the mode contains certain detectable known logic\n * issues.\n * @param {Mode} mode\n * @param {CompiledMode | null} [parent]\n * @returns {CompiledMode | never}\n */\n function compileMode(mode, parent) {\n const cmode = /** @type CompiledMode */ (mode);\n if (mode.isCompiled) return cmode;\n\n [\n // do this early so compiler extensions generally don't have to worry about\n // the distinction between match/begin\n compileMatch\n ].forEach(ext => ext(mode, parent));\n\n language.compilerExtensions.forEach(ext => ext(mode, parent));\n\n // __beforeBegin is considered private API, internal use only\n mode.__beforeBegin = null;\n\n [\n beginKeywords,\n // do this later so compiler extensions that come earlier have access to the\n // raw array if they wanted to perhaps manipulate it, etc.\n compileIllegal,\n // default to 1 relevance if not specified\n compileRelevance\n ].forEach(ext => ext(mode, parent));\n\n mode.isCompiled = true;\n\n let keywordPattern = null;\n if (typeof mode.keywords === \"object\") {\n keywordPattern = mode.keywords.$pattern;\n delete mode.keywords.$pattern;\n }\n\n if (mode.keywords) {\n mode.keywords = compileKeywords(mode.keywords, language.case_insensitive);\n }\n\n // both are not allowed\n if (mode.lexemes && keywordPattern) {\n throw new Error(\"ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) \");\n }\n\n // `mode.lexemes` was the old standard before we added and now recommend\n // using `keywords.$pattern` to pass the keyword pattern\n keywordPattern = keywordPattern || mode.lexemes || /\\w+/;\n cmode.keywordPatternRe = langRe(keywordPattern, true);\n\n if (parent) {\n if (!mode.begin) mode.begin = /\\B|\\b/;\n cmode.beginRe = langRe(mode.begin);\n if (mode.endSameAsBegin) mode.end = mode.begin;\n if (!mode.end && !mode.endsWithParent) mode.end = /\\B|\\b/;\n if (mode.end) cmode.endRe = langRe(mode.end);\n cmode.terminatorEnd = source(mode.end) || '';\n if (mode.endsWithParent && parent.terminatorEnd) {\n cmode.terminatorEnd += (mode.end ? '|' : '') + parent.terminatorEnd;\n }\n }\n if (mode.illegal) cmode.illegalRe = langRe(/** @type {RegExp | string} */ (mode.illegal));\n if (!mode.contains) mode.contains = [];\n\n mode.contains = [].concat(...mode.contains.map(function(c) {\n return expandOrCloneMode(c === 'self' ? mode : c);\n }));\n mode.contains.forEach(function(c) { compileMode(/** @type Mode */ (c), cmode); });\n\n if (mode.starts) {\n compileMode(mode.starts, parent);\n }\n\n cmode.matcher = buildModeRegex(cmode);\n return cmode;\n }\n\n if (!language.compilerExtensions) language.compilerExtensions = [];\n\n // self is not valid at the top-level\n if (language.contains && language.contains.includes('self')) {\n throw new Error(\"ERR: contains `self` is not supported at the top-level of a language. See documentation.\");\n }\n\n // we need a null object, which inherit will guarantee\n language.classNameAliases = inherit(language.classNameAliases || {});\n\n return compileMode(/** @type Mode */ (language));\n}\n\n/**\n * Determines if a mode has a dependency on it's parent or not\n *\n * If a mode does have a parent dependency then often we need to clone it if\n * it's used in multiple places so that each copy points to the correct parent,\n * where-as modes without a parent can often safely be re-used at the bottom of\n * a mode chain.\n *\n * @param {Mode | null} mode\n * @returns {boolean} - is there a dependency on the parent?\n * */\nfunction dependencyOnParent(mode) {\n if (!mode) return false;\n\n return mode.endsWithParent || dependencyOnParent(mode.starts);\n}\n\n/**\n * Expands a mode or clones it if necessary\n *\n * This is necessary for modes with parental dependenceis (see notes on\n * `dependencyOnParent`) and for nodes that have `variants` - which must then be\n * exploded into their own individual modes at compile time.\n *\n * @param {Mode} mode\n * @returns {Mode | Mode[]}\n * */\nfunction expandOrCloneMode(mode) {\n if (mode.variants && !mode.cachedVariants) {\n mode.cachedVariants = mode.variants.map(function(variant) {\n return inherit(mode, { variants: null }, variant);\n });\n }\n\n // EXPAND\n // if we have variants then essentially \"replace\" the mode with the variants\n // this happens in compileMode, where this function is called from\n if (mode.cachedVariants) {\n return mode.cachedVariants;\n }\n\n // CLONE\n // if we have dependencies on parents then we need a unique\n // instance of ourselves, so we can be reused with many\n // different parents without issue\n if (dependencyOnParent(mode)) {\n return inherit(mode, { starts: mode.starts ? inherit(mode.starts) : null });\n }\n\n if (Object.isFrozen(mode)) {\n return inherit(mode);\n }\n\n // no special dependency issues, just return ourselves\n return mode;\n}\n\nvar version = \"10.7.3\";\n\n// @ts-nocheck\n\nfunction hasValueOrEmptyAttribute(value) {\n return Boolean(value || value === \"\");\n}\n\nfunction BuildVuePlugin(hljs) {\n const Component = {\n props: [\"language\", \"code\", \"autodetect\"],\n data: function() {\n return {\n detectedLanguage: \"\",\n unknownLanguage: false\n };\n },\n computed: {\n className() {\n if (this.unknownLanguage) return \"\";\n\n return \"hljs \" + this.detectedLanguage;\n },\n highlighted() {\n // no idea what language to use, return raw code\n if (!this.autoDetect && !hljs.getLanguage(this.language)) {\n console.warn(`The language \"${this.language}\" you specified could not be found.`);\n this.unknownLanguage = true;\n return escapeHTML(this.code);\n }\n\n let result = {};\n if (this.autoDetect) {\n result = hljs.highlightAuto(this.code);\n this.detectedLanguage = result.language;\n } else {\n result = hljs.highlight(this.language, this.code, this.ignoreIllegals);\n this.detectedLanguage = this.language;\n }\n return result.value;\n },\n autoDetect() {\n return !this.language || hasValueOrEmptyAttribute(this.autodetect);\n },\n ignoreIllegals() {\n return true;\n }\n },\n // this avoids needing to use a whole Vue compilation pipeline just\n // to build Highlight.js\n render(createElement) {\n return createElement(\"pre\", {}, [\n createElement(\"code\", {\n class: this.className,\n domProps: { innerHTML: this.highlighted }\n })\n ]);\n }\n // template: `<pre><code :class=\"className\" v-html=\"highlighted\"></code></pre>`\n };\n\n const VuePlugin = {\n install(Vue) {\n Vue.component('highlightjs', Component);\n }\n };\n\n return { Component, VuePlugin };\n}\n\n/* plugin itself */\n\n/** @type {HLJSPlugin} */\nconst mergeHTMLPlugin = {\n \"after:highlightElement\": ({ el, result, text }) => {\n const originalStream = nodeStream(el);\n if (!originalStream.length) return;\n\n const resultNode = document.createElement('div');\n resultNode.innerHTML = result.value;\n result.value = mergeStreams(originalStream, nodeStream(resultNode), text);\n }\n};\n\n/* Stream merging support functions */\n\n/**\n * @typedef Event\n * @property {'start'|'stop'} event\n * @property {number} offset\n * @property {Node} node\n */\n\n/**\n * @param {Node} node\n */\nfunction tag(node) {\n return node.nodeName.toLowerCase();\n}\n\n/**\n * @param {Node} node\n */\nfunction nodeStream(node) {\n /** @type Event[] */\n const result = [];\n (function _nodeStream(node, offset) {\n for (let child = node.firstChild; child; child = child.nextSibling) {\n if (child.nodeType === 3) {\n offset += child.nodeValue.length;\n } else if (child.nodeType === 1) {\n result.push({\n event: 'start',\n offset: offset,\n node: child\n });\n offset = _nodeStream(child, offset);\n // Prevent void elements from having an end tag that would actually\n // double them in the output. There are more void elements in HTML\n // but we list only those realistically expected in code display.\n if (!tag(child).match(/br|hr|img|input/)) {\n result.push({\n event: 'stop',\n offset: offset,\n node: child\n });\n }\n }\n }\n return offset;\n })(node, 0);\n return result;\n}\n\n/**\n * @param {any} original - the original stream\n * @param {any} highlighted - stream of the highlighted source\n * @param {string} value - the original source itself\n */\nfunction mergeStreams(original, highlighted, value) {\n let processed = 0;\n let result = '';\n const nodeStack = [];\n\n function selectStream() {\n if (!original.length || !highlighted.length) {\n return original.length ? original : highlighted;\n }\n if (original[0].offset !== highlighted[0].offset) {\n return (original[0].offset < highlighted[0].offset) ? original : highlighted;\n }\n\n /*\n To avoid starting the stream just before it should stop the order is\n ensured that original always starts first and closes last:\n\n if (event1 == 'start' && event2 == 'start')\n return original;\n if (event1 == 'start' && event2 == 'stop')\n return highlighted;\n if (event1 == 'stop' && event2 == 'start')\n return original;\n if (event1 == 'stop' && event2 == 'stop')\n return highlighted;\n\n ... which is collapsed to:\n */\n return highlighted[0].event === 'start' ? original : highlighted;\n }\n\n /**\n * @param {Node} node\n */\n function open(node) {\n /** @param {Attr} attr */\n function attributeString(attr) {\n return ' ' + attr.nodeName + '=\"' + escapeHTML(attr.value) + '\"';\n }\n // @ts-ignore\n result += '<' + tag(node) + [].map.call(node.attributes, attributeString).join('') + '>';\n }\n\n /**\n * @param {Node} node\n */\n function close(node) {\n result += '</' + tag(node) + '>';\n }\n\n /**\n * @param {Event} event\n */\n function render(event) {\n (event.event === 'start' ? open : close)(event.node);\n }\n\n while (original.length || highlighted.length) {\n let stream = selectStream();\n result += escapeHTML(value.substring(processed, stream[0].offset));\n processed = stream[0].offset;\n if (stream === original) {\n /*\n On any opening or closing tag of the original markup we first close\n the entire highlighted node stack, then render the original tag along\n with all the following original tags at the same offset and then\n reopen all the tags on the highlighted stack.\n */\n nodeStack.reverse().forEach(close);\n do {\n render(stream.splice(0, 1)[0]);\n stream = selectStream();\n } while (stream === original && stream.length && stream[0].offset === processed);\n nodeStack.reverse().forEach(open);\n } else {\n if (stream[0].event === 'start') {\n nodeStack.push(stream[0].node);\n } else {\n nodeStack.pop();\n }\n render(stream.splice(0, 1)[0]);\n }\n }\n return result + escapeHTML(value.substr(processed));\n}\n\n/*\n\nFor the reasoning behind this please see:\nhttps://github.com/highlightjs/highlight.js/issues/2880#issuecomment-747275419\n\n*/\n\n/**\n * @type {Record<string, boolean>}\n */\nconst seenDeprecations = {};\n\n/**\n * @param {string} message\n */\nconst error = (message) => {\n console.error(message);\n};\n\n/**\n * @param {string} message\n * @param {any} args\n */\nconst warn = (message, ...args) => {\n console.log(`WARN: ${message}`, ...args);\n};\n\n/**\n * @param {string} version\n * @param {string} message\n */\nconst deprecated = (version, message) => {\n if (seenDeprecations[`${version}/${message}`]) return;\n\n console.log(`Deprecated as of ${version}. ${message}`);\n seenDeprecations[`${version}/${message}`] = true;\n};\n\n/*\nSyntax highlighting with language autodetection.\nhttps://highlightjs.org/\n*/\n\nconst escape$1 = escapeHTML;\nconst inherit$1 = inherit;\nconst NO_MATCH = Symbol(\"nomatch\");\n\n/**\n * @param {any} hljs - object that is extended (legacy)\n * @returns {HLJSApi}\n */\nconst HLJS = function(hljs) {\n // Global internal variables used within the highlight.js library.\n /** @type {Record<string, Language>} */\n const languages = Object.create(null);\n /** @type {Record<string, string>} */\n const aliases = Object.create(null);\n /** @type {HLJSPlugin[]} */\n const plugins = [];\n\n // safe/production mode - swallows more errors, tries to keep running\n // even if a single syntax or parse hits a fatal error\n let SAFE_MODE = true;\n const fixMarkupRe = /(^(<[^>]+>|\\t|)+|\\n)/gm;\n const LANGUAGE_NOT_FOUND = \"Could not find the language '{}', did you forget to load/include a language module?\";\n /** @type {Language} */\n const PLAINTEXT_LANGUAGE = { disableAutodetect: true, name: 'Plain text', contains: [] };\n\n // Global options used when within external APIs. This is modified when\n // calling the `hljs.configure` function.\n /** @type HLJSOptions */\n let options = {\n noHighlightRe: /^(no-?highlight)$/i,\n languageDetectRe: /\\blang(?:uage)?-([\\w-]+)\\b/i,\n classPrefix: 'hljs-',\n tabReplace: null,\n useBR: false,\n languages: null,\n // beta configuration options, subject to change, welcome to discuss\n // https://github.com/highlightjs/highlight.js/issues/1086\n __emitter: TokenTreeEmitter\n };\n\n /* Utility functions */\n\n /**\n * Tests a language name to see if highlighting should be skipped\n * @param {string} languageName\n */\n function shouldNotHighlight(languageName) {\n return options.noHighlightRe.test(languageName);\n }\n\n /**\n * @param {HighlightedHTMLElement} block - the HTML element to determine language for\n */\n function blockLanguage(block) {\n let classes = block.className + ' ';\n\n classes += block.parentNode ? block.parentNode.className : '';\n\n // language-* takes precedence over non-prefixed class names.\n const match = options.languageDetectRe.exec(classes);\n if (match) {\n const language = getLanguage(match[1]);\n if (!language) {\n warn(LANGUAGE_NOT_FOUND.replace(\"{}\", match[1]));\n warn(\"Falling back to no-highlight mode for this block.\", block);\n }\n return language ? match[1] : 'no-highlight';\n }\n\n return classes\n .split(/\\s+/)\n .find((_class) => shouldNotHighlight(_class) || getLanguage(_class));\n }\n\n /**\n * Core highlighting function.\n *\n * OLD API\n * highlight(lang, code, ignoreIllegals, continuation)\n *\n * NEW API\n * highlight(code, {lang, ignoreIllegals})\n *\n * @param {string} codeOrlanguageName - the language to use for highlighting\n * @param {string | HighlightOptions} optionsOrCode - the code to highlight\n * @param {boolean} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n * @param {CompiledMode} [continuation] - current continuation mode, if any\n *\n * @returns {HighlightResult} Result - an object that represents the result\n * @property {string} language - the language name\n * @property {number} relevance - the relevance score\n * @property {string} value - the highlighted HTML code\n * @property {string} code - the original raw code\n * @property {CompiledMode} top - top of the current mode stack\n * @property {boolean} illegal - indicates whether any illegal matches were found\n */\n function highlight(codeOrlanguageName, optionsOrCode, ignoreIllegals, continuation) {\n let code = \"\";\n let languageName = \"\";\n if (typeof optionsOrCode === \"object\") {\n code = codeOrlanguageName;\n ignoreIllegals = optionsOrCode.ignoreIllegals;\n languageName = optionsOrCode.language;\n // continuation not supported at all via the new API\n // eslint-disable-next-line no-undefined\n continuation = undefined;\n } else {\n // old API\n deprecated(\"10.7.0\", \"highlight(lang, code, ...args) has been deprecated.\");\n deprecated(\"10.7.0\", \"Please use highlight(code, options) instead.\\nhttps://github.com/highlightjs/highlight.js/issues/2277\");\n languageName = codeOrlanguageName;\n code = optionsOrCode;\n }\n\n /** @type {BeforeHighlightContext} */\n const context = {\n code,\n language: languageName\n };\n // the plugin can change the desired language or the code to be highlighted\n // just be changing the object it was passed\n fire(\"before:highlight\", context);\n\n // a before plugin can usurp the result completely by providing it's own\n // in which case we don't even need to call highlight\n const result = context.result\n ? context.result\n : _highlight(context.language, context.code, ignoreIllegals, continuation);\n\n result.code = context.code;\n // the plugin can change anything in result to suite it\n fire(\"after:highlight\", result);\n\n return result;\n }\n\n /**\n * private highlight that's used internally and does not fire callbacks\n *\n * @param {string} languageName - the language to use for highlighting\n * @param {string} codeToHighlight - the code to highlight\n * @param {boolean?} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n * @param {CompiledMode?} [continuation] - current continuation mode, if any\n * @returns {HighlightResult} - result of the highlight operation\n */\n function _highlight(languageName, codeToHighlight, ignoreIllegals, continuation) {\n /**\n * Return keyword data if a match is a keyword\n * @param {CompiledMode} mode - current mode\n * @param {RegExpMatchArray} match - regexp match data\n * @returns {KeywordData | false}\n */\n function keywordData(mode, match) {\n const matchText = language.case_insensitive ? match[0].toLowerCase() : match[0];\n return Object.prototype.hasOwnProperty.call(mode.keywords, matchText) && mode.keywords[matchText];\n }\n\n function processKeywords() {\n if (!top.keywords) {\n emitter.addText(modeBuffer);\n return;\n }\n\n let lastIndex = 0;\n top.keywordPatternRe.lastIndex = 0;\n let match = top.keywordPatternRe.exec(modeBuffer);\n let buf = \"\";\n\n while (match) {\n buf += modeBuffer.substring(lastIndex, match.index);\n const data = keywordData(top, match);\n if (data) {\n const [kind, keywordRelevance] = data;\n emitter.addText(buf);\n buf = \"\";\n\n relevance += keywordRelevance;\n if (kind.startsWith(\"_\")) {\n // _ implied for relevance only, do not highlight\n // by applying a class name\n buf += match[0];\n } else {\n const cssClass = language.classNameAliases[kind] || kind;\n emitter.addKeyword(match[0], cssClass);\n }\n } else {\n buf += match[0];\n }\n lastIndex = top.keywordPatternRe.lastIndex;\n match = top.keywordPatternRe.exec(modeBuffer);\n }\n buf += modeBuffer.substr(lastIndex);\n emitter.addText(buf);\n }\n\n function processSubLanguage() {\n if (modeBuffer === \"\") return;\n /** @type HighlightResult */\n let result = null;\n\n if (typeof top.subLanguage === 'string') {\n if (!languages[top.subLanguage]) {\n emitter.addText(modeBuffer);\n return;\n }\n result = _highlight(top.subLanguage, modeBuffer, true, continuations[top.subLanguage]);\n continuations[top.subLanguage] = /** @type {CompiledMode} */ (result.top);\n } else {\n result = highlightAuto(modeBuffer, top.subLanguage.length ? top.subLanguage : null);\n }\n\n // Counting embedded language score towards the host language may be disabled\n // with zeroing the containing mode relevance. Use case in point is Markdown that\n // allows XML everywhere and makes every XML snippet to have a much larger Markdown\n // score.\n if (top.relevance > 0) {\n relevance += result.relevance;\n }\n emitter.addSublanguage(result.emitter, result.language);\n }\n\n function processBuffer() {\n if (top.subLanguage != null) {\n processSubLanguage();\n } else {\n processKeywords();\n }\n modeBuffer = '';\n }\n\n /**\n * @param {Mode} mode - new mode to start\n */\n function startNewMode(mode) {\n if (mode.className) {\n emitter.openNode(language.classNameAliases[mode.className] || mode.className);\n }\n top = Object.create(mode, { parent: { value: top } });\n return top;\n }\n\n /**\n * @param {CompiledMode } mode - the mode to potentially end\n * @param {RegExpMatchArray} match - the latest match\n * @param {string} matchPlusRemainder - match plus remainder of content\n * @returns {CompiledMode | void} - the next mode, or if void continue on in current mode\n */\n function endOfMode(mode, match, matchPlusRemainder) {\n let matched = startsWith(mode.endRe, matchPlusRemainder);\n\n if (matched) {\n if (mode[\"on:end\"]) {\n const resp = new Response(mode);\n mode[\"on:end\"](match, resp);\n if (resp.isMatchIgnored) matched = false;\n }\n\n if (matched) {\n while (mode.endsParent && mode.parent) {\n mode = mode.parent;\n }\n return mode;\n }\n }\n // even if on:end fires an `ignore` it's still possible\n // that we might trigger the end node because of a parent mode\n if (mode.endsWithParent) {\n return endOfMode(mode.parent, match, matchPlusRemainder);\n }\n }\n\n /**\n * Handle matching but then ignoring a sequence of text\n *\n * @param {string} lexeme - string containing full match text\n */\n function doIgnore(lexeme) {\n if (top.matcher.regexIndex === 0) {\n // no more regexs to potentially match here, so we move the cursor forward one\n // space\n modeBuffer += lexeme[0];\n return 1;\n } else {\n // no need to move the cursor, we still have additional regexes to try and\n // match at this very spot\n resumeScanAtSamePosition = true;\n return 0;\n }\n }\n\n /**\n * Handle the start of a new potential mode match\n *\n * @param {EnhancedMatch} match - the current match\n * @returns {number} how far to advance the parse cursor\n */\n function doBeginMatch(match) {\n const lexeme = match[0];\n const newMode = match.rule;\n\n const resp = new Response(newMode);\n // first internal before callbacks, then the public ones\n const beforeCallbacks = [newMode.__beforeBegin, newMode[\"on:begin\"]];\n for (const cb of beforeCallbacks) {\n if (!cb) continue;\n cb(match, resp);\n if (resp.isMatchIgnored) return doIgnore(lexeme);\n }\n\n if (newMode && newMode.endSameAsBegin) {\n newMode.endRe = escape(lexeme);\n }\n\n if (newMode.skip) {\n modeBuffer += lexeme;\n } else {\n if (newMode.excludeBegin) {\n modeBuffer += lexeme;\n }\n processBuffer();\n if (!newMode.returnBegin && !newMode.excludeBegin) {\n modeBuffer = lexeme;\n }\n }\n startNewMode(newMode);\n // if (mode[\"after:begin\"]) {\n // let resp = new Response(mode);\n // mode[\"after:begin\"](match, resp);\n // }\n return newMode.returnBegin ? 0 : lexeme.length;\n }\n\n /**\n * Handle the potential end of mode\n *\n * @param {RegExpMatchArray} match - the current match\n */\n function doEndMatch(match) {\n const lexeme = match[0];\n const matchPlusRemainder = codeToHighlight.substr(match.index);\n\n const endMode = endOfMode(top, match, matchPlusRemainder);\n if (!endMode) { return NO_MATCH; }\n\n const origin = top;\n if (origin.skip) {\n modeBuffer += lexeme;\n } else {\n if (!(origin.returnEnd || origin.excludeEnd)) {\n modeBuffer += lexeme;\n }\n processBuffer();\n if (origin.excludeEnd) {\n modeBuffer = lexeme;\n }\n }\n do {\n if (top.className) {\n emitter.closeNode();\n }\n if (!top.skip && !top.subLanguage) {\n relevance += top.relevance;\n }\n top = top.parent;\n } while (top !== endMode.parent);\n if (endMode.starts) {\n if (endMode.endSameAsBegin) {\n endMode.starts.endRe = endMode.endRe;\n }\n startNewMode(endMode.starts);\n }\n return origin.returnEnd ? 0 : lexeme.length;\n }\n\n function processContinuations() {\n const list = [];\n for (let current = top; current !== language; current = current.parent) {\n if (current.className) {\n list.unshift(current.className);\n }\n }\n list.forEach(item => emitter.openNode(item));\n }\n\n /** @type {{type?: MatchType, index?: number, rule?: Mode}}} */\n let lastMatch = {};\n\n /**\n * Process an individual match\n *\n * @param {string} textBeforeMatch - text preceeding the match (since the last match)\n * @param {EnhancedMatch} [match] - the match itself\n */\n function processLexeme(textBeforeMatch, match) {\n const lexeme = match && match[0];\n\n // add non-matched text to the current mode buffer\n modeBuffer += textBeforeMatch;\n\n if (lexeme == null) {\n processBuffer();\n return 0;\n }\n\n // we've found a 0 width match and we're stuck, so we need to advance\n // this happens when we have badly behaved rules that have optional matchers to the degree that\n // sometimes they can end up matching nothing at all\n // Ref: https://github.com/highlightjs/highlight.js/issues/2140\n if (lastMatch.type === \"begin\" && match.type === \"end\" && lastMatch.index === match.index && lexeme === \"\") {\n // spit the \"skipped\" character that our regex choked on back into the output sequence\n modeBuffer += codeToHighlight.slice(match.index, match.index + 1);\n if (!SAFE_MODE) {\n /** @type {AnnotatedError} */\n const err = new Error('0 width match regex');\n err.languageName = languageName;\n err.badRule = lastMatch.rule;\n throw err;\n }\n return 1;\n }\n lastMatch = match;\n\n if (match.type === \"begin\") {\n return doBeginMatch(match);\n } else if (match.type === \"illegal\" && !ignoreIllegals) {\n // illegal match, we do not continue processing\n /** @type {AnnotatedError} */\n const err = new Error('Illegal lexeme \"' + lexeme + '\" for mode \"' + (top.className || '<unnamed>') + '\"');\n err.mode = top;\n throw err;\n } else if (match.type === \"end\") {\n const processed = doEndMatch(match);\n if (processed !== NO_MATCH) {\n return processed;\n }\n }\n\n // edge case for when illegal matches $ (end of line) which is technically\n // a 0 width match but not a begin/end match so it's not caught by the\n // first handler (when ignoreIllegals is true)\n if (match.type === \"illegal\" && lexeme === \"\") {\n // advance so we aren't stuck in an infinite loop\n return 1;\n }\n\n // infinite loops are BAD, this is a last ditch catch all. if we have a\n // decent number of iterations yet our index (cursor position in our\n // parsing) still 3x behind our index then something is very wrong\n // so we bail\n if (iterations > 100000 && iterations > match.index * 3) {\n const err = new Error('potential infinite loop, way more iterations than matches');\n throw err;\n }\n\n /*\n Why might be find ourselves here? Only one occasion now. An end match that was\n triggered but could not be completed. When might this happen? When an `endSameasBegin`\n rule sets the end rule to a specific match. Since the overall mode termination rule that's\n being used to scan the text isn't recompiled that means that any match that LOOKS like\n the end (but is not, because it is not an exact match to the beginning) will\n end up here. A definite end match, but when `doEndMatch` tries to \"reapply\"\n the end rule and fails to match, we wind up here, and just silently ignore the end.\n\n This causes no real harm other than stopping a few times too many.\n */\n\n modeBuffer += lexeme;\n return lexeme.length;\n }\n\n const language = getLanguage(languageName);\n if (!language) {\n error(LANGUAGE_NOT_FOUND.replace(\"{}\", languageName));\n throw new Error('Unknown language: \"' + languageName + '\"');\n }\n\n const md = compileLanguage(language, { plugins });\n let result = '';\n /** @type {CompiledMode} */\n let top = continuation || md;\n /** @type Record<string,CompiledMode> */\n const continuations = {}; // keep continuations for sub-languages\n const emitter = new options.__emitter(options);\n processContinuations();\n let modeBuffer = '';\n let relevance = 0;\n let index = 0;\n let iterations = 0;\n let resumeScanAtSamePosition = false;\n\n try {\n top.matcher.considerAll();\n\n for (;;) {\n iterations++;\n if (resumeScanAtSamePosition) {\n // only regexes not matched previously will now be\n // considered for a potential match\n resumeScanAtSamePosition = false;\n } else {\n top.matcher.considerAll();\n }\n top.matcher.lastIndex = index;\n\n const match = top.matcher.exec(codeToHighlight);\n // console.log(\"match\", match[0], match.rule && match.rule.begin)\n\n if (!match) break;\n\n const beforeMatch = codeToHighlight.substring(index, match.index);\n const processedCount = processLexeme(beforeMatch, match);\n index = match.index + processedCount;\n }\n processLexeme(codeToHighlight.substr(index));\n emitter.closeAllNodes();\n emitter.finalize();\n result = emitter.toHTML();\n\n return {\n // avoid possible breakage with v10 clients expecting\n // this to always be an integer\n relevance: Math.floor(relevance),\n value: result,\n language: languageName,\n illegal: false,\n emitter: emitter,\n top: top\n };\n } catch (err) {\n if (err.message && err.message.includes('Illegal')) {\n return {\n illegal: true,\n illegalBy: {\n msg: err.message,\n context: codeToHighlight.slice(index - 100, index + 100),\n mode: err.mode\n },\n sofar: result,\n relevance: 0,\n value: escape$1(codeToHighlight),\n emitter: emitter\n };\n } else if (SAFE_MODE) {\n return {\n illegal: false,\n relevance: 0,\n value: escape$1(codeToHighlight),\n emitter: emitter,\n language: languageName,\n top: top,\n errorRaised: err\n };\n } else {\n throw err;\n }\n }\n }\n\n /**\n * returns a valid highlight result, without actually doing any actual work,\n * auto highlight starts with this and it's possible for small snippets that\n * auto-detection may not find a better match\n * @param {string} code\n * @returns {HighlightResult}\n */\n function justTextHighlightResult(code) {\n const result = {\n relevance: 0,\n emitter: new options.__emitter(options),\n value: escape$1(code),\n illegal: false,\n top: PLAINTEXT_LANGUAGE\n };\n result.emitter.addText(code);\n return result;\n }\n\n /**\n Highlighting with language detection. Accepts a string with the code to\n highlight. Returns an object with the following properties:\n\n - language (detected language)\n - relevance (int)\n - value (an HTML string with highlighting markup)\n - second_best (object with the same structure for second-best heuristically\n detected language, may be absent)\n\n @param {string} code\n @param {Array<string>} [languageSubset]\n @returns {AutoHighlightResult}\n */\n function highlightAuto(code, languageSubset) {\n languageSubset = languageSubset || options.languages || Object.keys(languages);\n const plaintext = justTextHighlightResult(code);\n\n const results = languageSubset.filter(getLanguage).filter(autoDetection).map(name =>\n _highlight(name, code, false)\n );\n results.unshift(plaintext); // plaintext is always an option\n\n const sorted = results.sort((a, b) => {\n // sort base on relevance\n if (a.relevance !== b.relevance) return b.relevance - a.relevance;\n\n // always award the tie to the base language\n // ie if C++ and Arduino are tied, it's more likely to be C++\n if (a.language && b.language) {\n if (getLanguage(a.language).supersetOf === b.language) {\n return 1;\n } else if (getLanguage(b.language).supersetOf === a.language) {\n return -1;\n }\n }\n\n // otherwise say they are equal, which has the effect of sorting on\n // relevance while preserving the original ordering - which is how ties\n // have historically been settled, ie the language that comes first always\n // wins in the case of a tie\n return 0;\n });\n\n const [best, secondBest] = sorted;\n\n /** @type {AutoHighlightResult} */\n const result = best;\n result.second_best = secondBest;\n\n return result;\n }\n\n /**\n Post-processing of the highlighted markup:\n\n - replace TABs with something more useful\n - replace real line-breaks with '<br>' for non-pre containers\n\n @param {string} html\n @returns {string}\n */\n function fixMarkup(html) {\n if (!(options.tabReplace || options.useBR)) {\n return html;\n }\n\n return html.replace(fixMarkupRe, match => {\n if (match === '\\n') {\n return options.useBR ? '<br>' : match;\n } else if (options.tabReplace) {\n return match.replace(/\\t/g, options.tabReplace);\n }\n return match;\n });\n }\n\n /**\n * Builds new class name for block given the language name\n *\n * @param {HTMLElement} element\n * @param {string} [currentLang]\n * @param {string} [resultLang]\n */\n function updateClassName(element, currentLang, resultLang) {\n const language = currentLang ? aliases[currentLang] : resultLang;\n\n element.classList.add(\"hljs\");\n if (language) element.classList.add(language);\n }\n\n /** @type {HLJSPlugin} */\n const brPlugin = {\n \"before:highlightElement\": ({ el }) => {\n if (options.useBR) {\n el.innerHTML = el.innerHTML.replace(/\\n/g, '').replace(/<br[ /]*>/g, '\\n');\n }\n },\n \"after:highlightElement\": ({ result }) => {\n if (options.useBR) {\n result.value = result.value.replace(/\\n/g, \"<br>\");\n }\n }\n };\n\n const TAB_REPLACE_RE = /^(<[^>]+>|\\t)+/gm;\n /** @type {HLJSPlugin} */\n const tabReplacePlugin = {\n \"after:highlightElement\": ({ result }) => {\n if (options.tabReplace) {\n result.value = result.value.replace(TAB_REPLACE_RE, (m) =>\n m.replace(/\\t/g, options.tabReplace)\n );\n }\n }\n };\n\n /**\n * Applies highlighting to a DOM node containing code. Accepts a DOM node and\n * two optional parameters for fixMarkup.\n *\n * @param {HighlightedHTMLElement} element - the HTML element to highlight\n */\n function highlightElement(element) {\n /** @type HTMLElement */\n let node = null;\n const language = blockLanguage(element);\n\n if (shouldNotHighlight(language)) return;\n\n // support for v10 API\n fire(\"before:highlightElement\",\n { el: element, language: language });\n\n node = element;\n const text = node.textContent;\n const result = language ? highlight(text, { language, ignoreIllegals: true }) : highlightAuto(text);\n\n // support for v10 API\n fire(\"after:highlightElement\", { el: element, result, text });\n\n element.innerHTML = result.value;\n updateClassName(element, language, result.language);\n element.result = {\n language: result.language,\n // TODO: remove with version 11.0\n re: result.relevance,\n relavance: result.relevance\n };\n if (result.second_best) {\n element.second_best = {\n language: result.second_best.language,\n // TODO: remove with version 11.0\n re: result.second_best.relevance,\n relavance: result.second_best.relevance\n };\n }\n }\n\n /**\n * Updates highlight.js global options with the passed options\n *\n * @param {Partial<HLJSOptions>} userOptions\n */\n function configure(userOptions) {\n if (userOptions.useBR) {\n deprecated(\"10.3.0\", \"'useBR' will be removed entirely in v11.0\");\n deprecated(\"10.3.0\", \"Please see https://github.com/highlightjs/highlight.js/issues/2559\");\n }\n options = inherit$1(options, userOptions);\n }\n\n /**\n * Highlights to all <pre><code> blocks on a page\n *\n * @type {Function & {called?: boolean}}\n */\n // TODO: remove v12, deprecated\n const initHighlighting = () => {\n if (initHighlighting.called) return;\n initHighlighting.called = true;\n\n deprecated(\"10.6.0\", \"initHighlighting() is deprecated. Use highlightAll() instead.\");\n\n const blocks = document.querySelectorAll('pre code');\n blocks.forEach(highlightElement);\n };\n\n // Higlights all when DOMContentLoaded fires\n // TODO: remove v12, deprecated\n function initHighlightingOnLoad() {\n deprecated(\"10.6.0\", \"initHighlightingOnLoad() is deprecated. Use highlightAll() instead.\");\n wantsHighlight = true;\n }\n\n let wantsHighlight = false;\n\n /**\n * auto-highlights all pre>code elements on the page\n */\n function highlightAll() {\n // if we are called too early in the loading process\n if (document.readyState === \"loading\") {\n wantsHighlight = true;\n return;\n }\n\n const blocks = document.querySelectorAll('pre code');\n blocks.forEach(highlightElement);\n }\n\n function boot() {\n // if a highlight was requested before DOM was loaded, do now\n if (wantsHighlight) highlightAll();\n }\n\n // make sure we are in the browser environment\n if (typeof window !== 'undefined' && window.addEventListener) {\n window.addEventListener('DOMContentLoaded', boot, false);\n }\n\n /**\n * Register a language grammar module\n *\n * @param {string} languageName\n * @param {LanguageFn} languageDefinition\n */\n function registerLanguage(languageName, languageDefinition) {\n let lang = null;\n try {\n lang = languageDefinition(hljs);\n } catch (error$1) {\n error(\"Language definition for '{}' could not be registered.\".replace(\"{}\", languageName));\n // hard or soft error\n if (!SAFE_MODE) { throw error$1; } else { error(error$1); }\n // languages that have serious errors are replaced with essentially a\n // \"plaintext\" stand-in so that the code blocks will still get normal\n // css classes applied to them - and one bad language won't break the\n // entire highlighter\n lang = PLAINTEXT_LANGUAGE;\n }\n // give it a temporary name if it doesn't have one in the meta-data\n if (!lang.name) lang.name = languageName;\n languages[languageName] = lang;\n lang.rawDefinition = languageDefinition.bind(null, hljs);\n\n if (lang.aliases) {\n registerAliases(lang.aliases, { languageName });\n }\n }\n\n /**\n * Remove a language grammar module\n *\n * @param {string} languageName\n */\n function unregisterLanguage(languageName) {\n delete languages[languageName];\n for (const alias of Object.keys(aliases)) {\n if (aliases[alias] === languageName) {\n delete aliases[alias];\n }\n }\n }\n\n /**\n * @returns {string[]} List of language internal names\n */\n function listLanguages() {\n return Object.keys(languages);\n }\n\n /**\n intended usage: When one language truly requires another\n\n Unlike `getLanguage`, this will throw when the requested language\n is not available.\n\n @param {string} name - name of the language to fetch/require\n @returns {Language | never}\n */\n function requireLanguage(name) {\n deprecated(\"10.4.0\", \"requireLanguage will be removed entirely in v11.\");\n deprecated(\"10.4.0\", \"Please see https://github.com/highlightjs/highlight.js/pull/2844\");\n\n const lang = getLanguage(name);\n if (lang) { return lang; }\n\n const err = new Error('The \\'{}\\' language is required, but not loaded.'.replace('{}', name));\n throw err;\n }\n\n /**\n * @param {string} name - name of the language to retrieve\n * @returns {Language | undefined}\n */\n function getLanguage(name) {\n name = (name || '').toLowerCase();\n return languages[name] || languages[aliases[name]];\n }\n\n /**\n *\n * @param {string|string[]} aliasList - single alias or list of aliases\n * @param {{languageName: string}} opts\n */\n function registerAliases(aliasList, { languageName }) {\n if (typeof aliasList === 'string') {\n aliasList = [aliasList];\n }\n aliasList.forEach(alias => { aliases[alias.toLowerCase()] = languageName; });\n }\n\n /**\n * Determines if a given language has auto-detection enabled\n * @param {string} name - name of the language\n */\n function autoDetection(name) {\n const lang = getLanguage(name);\n return lang && !lang.disableAutodetect;\n }\n\n /**\n * Upgrades the old highlightBlock plugins to the new\n * highlightElement API\n * @param {HLJSPlugin} plugin\n */\n function upgradePluginAPI(plugin) {\n // TODO: remove with v12\n if (plugin[\"before:highlightBlock\"] && !plugin[\"before:highlightElement\"]) {\n plugin[\"before:highlightElement\"] = (data) => {\n plugin[\"before:highlightBlock\"](\n Object.assign({ block: data.el }, data)\n );\n };\n }\n if (plugin[\"after:highlightBlock\"] && !plugin[\"after:highlightElement\"]) {\n plugin[\"after:highlightElement\"] = (data) => {\n plugin[\"after:highlightBlock\"](\n Object.assign({ block: data.el }, data)\n );\n };\n }\n }\n\n /**\n * @param {HLJSPlugin} plugin\n */\n function addPlugin(plugin) {\n upgradePluginAPI(plugin);\n plugins.push(plugin);\n }\n\n /**\n *\n * @param {PluginEvent} event\n * @param {any} args\n */\n function fire(event, args) {\n const cb = event;\n plugins.forEach(function(plugin) {\n if (plugin[cb]) {\n plugin[cb](args);\n }\n });\n }\n\n /**\n Note: fixMarkup is deprecated and will be removed entirely in v11\n\n @param {string} arg\n @returns {string}\n */\n function deprecateFixMarkup(arg) {\n deprecated(\"10.2.0\", \"fixMarkup will be removed entirely in v11.0\");\n deprecated(\"10.2.0\", \"Please see https://github.com/highlightjs/highlight.js/issues/2534\");\n\n return fixMarkup(arg);\n }\n\n /**\n *\n * @param {HighlightedHTMLElement} el\n */\n function deprecateHighlightBlock(el) {\n deprecated(\"10.7.0\", \"highlightBlock will be removed entirely in v12.0\");\n deprecated(\"10.7.0\", \"Please use highlightElement now.\");\n\n return highlightElement(el);\n }\n\n /* Interface definition */\n Object.assign(hljs, {\n highlight,\n highlightAuto,\n highlightAll,\n fixMarkup: deprecateFixMarkup,\n highlightElement,\n // TODO: Remove with v12 API\n highlightBlock: deprecateHighlightBlock,\n configure,\n initHighlighting,\n initHighlightingOnLoad,\n registerLanguage,\n unregisterLanguage,\n listLanguages,\n getLanguage,\n registerAliases,\n requireLanguage,\n autoDetection,\n inherit: inherit$1,\n addPlugin,\n // plugins for frameworks\n vuePlugin: BuildVuePlugin(hljs).VuePlugin\n });\n\n hljs.debugMode = function() { SAFE_MODE = false; };\n hljs.safeMode = function() { SAFE_MODE = true; };\n hljs.versionString = version;\n\n for (const key in MODES) {\n // @ts-ignore\n if (typeof MODES[key] === \"object\") {\n // @ts-ignore\n deepFreezeEs6(MODES[key]);\n }\n }\n\n // merge all the modes/regexs into our main object\n Object.assign(hljs, MODES);\n\n // built-in plugins, likely to be moved out of core in the future\n hljs.addPlugin(brPlugin); // slated to be removed in v11\n hljs.addPlugin(mergeHTMLPlugin);\n hljs.addPlugin(tabReplacePlugin);\n return hljs;\n};\n\n// export an \"instance\" of the highlighter\nvar highlight = HLJS({});\n\nmodule.exports = highlight;\n","var hljs = require('./core');\n\nhljs.registerLanguage('1c', require('./languages/1c'));\nhljs.registerLanguage('abnf', require('./languages/abnf'));\nhljs.registerLanguage('accesslog', require('./languages/accesslog'));\nhljs.registerLanguage('actionscript', require('./languages/actionscript'));\nhljs.registerLanguage('ada', require('./languages/ada'));\nhljs.registerLanguage('angelscript', require('./languages/angelscript'));\nhljs.registerLanguage('apache', require('./languages/apache'));\nhljs.registerLanguage('applescript', require('./languages/applescript'));\nhljs.registerLanguage('arcade', require('./languages/arcade'));\nhljs.registerLanguage('arduino', require('./languages/arduino'));\nhljs.registerLanguage('armasm', require('./languages/armasm'));\nhljs.registerLanguage('xml', require('./languages/xml'));\nhljs.registerLanguage('asciidoc', require('./languages/asciidoc'));\nhljs.registerLanguage('aspectj', require('./languages/aspectj'));\nhljs.registerLanguage('autohotkey', require('./languages/autohotkey'));\nhljs.registerLanguage('autoit', require('./languages/autoit'));\nhljs.registerLanguage('avrasm', require('./languages/avrasm'));\nhljs.registerLanguage('awk', require('./languages/awk'));\nhljs.registerLanguage('axapta', require('./languages/axapta'));\nhljs.registerLanguage('bash', require('./languages/bash'));\nhljs.registerLanguage('basic', require('./languages/basic'));\nhljs.registerLanguage('bnf', require('./languages/bnf'));\nhljs.registerLanguage('brainfuck', require('./languages/brainfuck'));\nhljs.registerLanguage('c-like', require('./languages/c-like'));\nhljs.registerLanguage('c', require('./languages/c'));\nhljs.registerLanguage('cal', require('./languages/cal'));\nhljs.registerLanguage('capnproto', require('./languages/capnproto'));\nhljs.registerLanguage('ceylon', require('./languages/ceylon'));\nhljs.registerLanguage('clean', require('./languages/clean'));\nhljs.registerLanguage('clojure', require('./languages/clojure'));\nhljs.registerLanguage('clojure-repl', require('./languages/clojure-repl'));\nhljs.registerLanguage('cmake', require('./languages/cmake'));\nhljs.registerLanguage('coffeescript', require('./languages/coffeescript'));\nhljs.registerLanguage('coq', require('./languages/coq'));\nhljs.registerLanguage('cos', require('./languages/cos'));\nhljs.registerLanguage('cpp', require('./languages/cpp'));\nhljs.registerLanguage('crmsh', require('./languages/crmsh'));\nhljs.registerLanguage('crystal', require('./languages/crystal'));\nhljs.registerLanguage('csharp', require('./languages/csharp'));\nhljs.registerLanguage('csp', require('./languages/csp'));\nhljs.registerLanguage('css', require('./languages/css'));\nhljs.registerLanguage('d', require('./languages/d'));\nhljs.registerLanguage('markdown', require('./languages/markdown'));\nhljs.registerLanguage('dart', require('./languages/dart'));\nhljs.registerLanguage('delphi', require('./languages/delphi'));\nhljs.registerLanguage('diff', require('./languages/diff'));\nhljs.registerLanguage('django', require('./languages/django'));\nhljs.registerLanguage('dns', require('./languages/dns'));\nhljs.registerLanguage('dockerfile', require('./languages/dockerfile'));\nhljs.registerLanguage('dos', require('./languages/dos'));\nhljs.registerLanguage('dsconfig', require('./languages/dsconfig'));\nhljs.registerLanguage('dts', require('./languages/dts'));\nhljs.registerLanguage('dust', require('./languages/dust'));\nhljs.registerLanguage('ebnf', require('./languages/ebnf'));\nhljs.registerLanguage('elixir', require('./languages/elixir'));\nhljs.registerLanguage('elm', require('./languages/elm'));\nhljs.registerLanguage('ruby', require('./languages/ruby'));\nhljs.registerLanguage('erb', require('./languages/erb'));\nhljs.registerLanguage('erlang-repl', require('./languages/erlang-repl'));\nhljs.registerLanguage('erlang', require('./languages/erlang'));\nhljs.registerLanguage('excel', require('./languages/excel'));\nhljs.registerLanguage('fix', require('./languages/fix'));\nhljs.registerLanguage('flix', require('./languages/flix'));\nhljs.registerLanguage('fortran', require('./languages/fortran'));\nhljs.registerLanguage('fsharp', require('./languages/fsharp'));\nhljs.registerLanguage('gams', require('./languages/gams'));\nhljs.registerLanguage('gauss', require('./languages/gauss'));\nhljs.registerLanguage('gcode', require('./languages/gcode'));\nhljs.registerLanguage('gherkin', require('./languages/gherkin'));\nhljs.registerLanguage('glsl', require('./languages/glsl'));\nhljs.registerLanguage('gml', require('./languages/gml'));\nhljs.registerLanguage('go', require('./languages/go'));\nhljs.registerLanguage('golo', require('./languages/golo'));\nhljs.registerLanguage('gradle', require('./languages/gradle'));\nhljs.registerLanguage('groovy', require('./languages/groovy'));\nhljs.registerLanguage('haml', require('./languages/haml'));\nhljs.registerLanguage('handlebars', require('./languages/handlebars'));\nhljs.registerLanguage('haskell', require('./languages/haskell'));\nhljs.registerLanguage('haxe', require('./languages/haxe'));\nhljs.registerLanguage('hsp', require('./languages/hsp'));\nhljs.registerLanguage('htmlbars', require('./languages/htmlbars'));\nhljs.registerLanguage('http', require('./languages/http'));\nhljs.registerLanguage('hy', require('./languages/hy'));\nhljs.registerLanguage('inform7', require('./languages/inform7'));\nhljs.registerLanguage('ini', require('./languages/ini'));\nhljs.registerLanguage('irpf90', require('./languages/irpf90'));\nhljs.registerLanguage('isbl', require('./languages/isbl'));\nhljs.registerLanguage('java', require('./languages/java'));\nhljs.registerLanguage('javascript', require('./languages/javascript'));\nhljs.registerLanguage('jboss-cli', require('./languages/jboss-cli'));\nhljs.registerLanguage('json', require('./languages/json'));\nhljs.registerLanguage('julia', require('./languages/julia'));\nhljs.registerLanguage('julia-repl', require('./languages/julia-repl'));\nhljs.registerLanguage('kotlin', require('./languages/kotlin'));\nhljs.registerLanguage('lasso', require('./languages/lasso'));\nhljs.registerLanguage('latex', require('./languages/latex'));\nhljs.registerLanguage('ldif', require('./languages/ldif'));\nhljs.registerLanguage('leaf', require('./languages/leaf'));\nhljs.registerLanguage('less', require('./languages/less'));\nhljs.registerLanguage('lisp', require('./languages/lisp'));\nhljs.registerLanguage('livecodeserver', require('./languages/livecodeserver'));\nhljs.registerLanguage('livescript', require('./languages/livescript'));\nhljs.registerLanguage('llvm', require('./languages/llvm'));\nhljs.registerLanguage('lsl', require('./languages/lsl'));\nhljs.registerLanguage('lua', require('./languages/lua'));\nhljs.registerLanguage('makefile', require('./languages/makefile'));\nhljs.registerLanguage('mathematica', require('./languages/mathematica'));\nhljs.registerLanguage('matlab', require('./languages/matlab'));\nhljs.registerLanguage('maxima', require('./languages/maxima'));\nhljs.registerLanguage('mel', require('./languages/mel'));\nhljs.registerLanguage('mercury', require('./languages/mercury'));\nhljs.registerLanguage('mipsasm', require('./languages/mipsasm'));\nhljs.registerLanguage('mizar', require('./languages/mizar'));\nhljs.registerLanguage('perl', require('./languages/perl'));\nhljs.registerLanguage('mojolicious', require('./languages/mojolicious'));\nhljs.registerLanguage('monkey', require('./languages/monkey'));\nhljs.registerLanguage('moonscript', require('./languages/moonscript'));\nhljs.registerLanguage('n1ql', require('./languages/n1ql'));\nhljs.registerLanguage('nginx', require('./languages/nginx'));\nhljs.registerLanguage('nim', require('./languages/nim'));\nhljs.registerLanguage('nix', require('./languages/nix'));\nhljs.registerLanguage('node-repl', require('./languages/node-repl'));\nhljs.registerLanguage('nsis', require('./languages/nsis'));\nhljs.registerLanguage('objectivec', require('./languages/objectivec'));\nhljs.registerLanguage('ocaml', require('./languages/ocaml'));\nhljs.registerLanguage('openscad', require('./languages/openscad'));\nhljs.registerLanguage('oxygene', require('./languages/oxygene'));\nhljs.registerLanguage('parser3', require('./languages/parser3'));\nhljs.registerLanguage('pf', require('./languages/pf'));\nhljs.registerLanguage('pgsql', require('./languages/pgsql'));\nhljs.registerLanguage('php', require('./languages/php'));\nhljs.registerLanguage('php-template', require('./languages/php-template'));\nhljs.registerLanguage('plaintext', require('./languages/plaintext'));\nhljs.registerLanguage('pony', require('./languages/pony'));\nhljs.registerLanguage('powershell', require('./languages/powershell'));\nhljs.registerLanguage('processing', require('./languages/processing'));\nhljs.registerLanguage('profile', require('./languages/profile'));\nhljs.registerLanguage('prolog', require('./languages/prolog'));\nhljs.registerLanguage('properties', require('./languages/properties'));\nhljs.registerLanguage('protobuf', require('./languages/protobuf'));\nhljs.registerLanguage('puppet', require('./languages/puppet'));\nhljs.registerLanguage('purebasic', require('./languages/purebasic'));\nhljs.registerLanguage('python', require('./languages/python'));\nhljs.registerLanguage('python-repl', require('./languages/python-repl'));\nhljs.registerLanguage('q', require('./languages/q'));\nhljs.registerLanguage('qml', require('./languages/qml'));\nhljs.registerLanguage('r', require('./languages/r'));\nhljs.registerLanguage('reasonml', require('./languages/reasonml'));\nhljs.registerLanguage('rib', require('./languages/rib'));\nhljs.registerLanguage('roboconf', require('./languages/roboconf'));\nhljs.registerLanguage('routeros', require('./languages/routeros'));\nhljs.registerLanguage('rsl', require('./languages/rsl'));\nhljs.registerLanguage('ruleslanguage', require('./languages/ruleslanguage'));\nhljs.registerLanguage('rust', require('./languages/rust'));\nhljs.registerLanguage('sas', require('./languages/sas'));\nhljs.registerLanguage('scala', require('./languages/scala'));\nhljs.registerLanguage('scheme', require('./languages/scheme'));\nhljs.registerLanguage('scilab', require('./languages/scilab'));\nhljs.registerLanguage('scss', require('./languages/scss'));\nhljs.registerLanguage('shell', require('./languages/shell'));\nhljs.registerLanguage('smali', require('./languages/smali'));\nhljs.registerLanguage('smalltalk', require('./languages/smalltalk'));\nhljs.registerLanguage('sml', require('./languages/sml'));\nhljs.registerLanguage('sqf', require('./languages/sqf'));\nhljs.registerLanguage('sql_more', require('./languages/sql_more'));\nhljs.registerLanguage('sql', require('./languages/sql'));\nhljs.registerLanguage('stan', require('./languages/stan'));\nhljs.registerLanguage('stata', require('./languages/stata'));\nhljs.registerLanguage('step21', require('./languages/step21'));\nhljs.registerLanguage('stylus', require('./languages/stylus'));\nhljs.registerLanguage('subunit', require('./languages/subunit'));\nhljs.registerLanguage('swift', require('./languages/swift'));\nhljs.registerLanguage('taggerscript', require('./languages/taggerscript'));\nhljs.registerLanguage('yaml', require('./languages/yaml'));\nhljs.registerLanguage('tap', require('./languages/tap'));\nhljs.registerLanguage('tcl', require('./languages/tcl'));\nhljs.registerLanguage('thrift', require('./languages/thrift'));\nhljs.registerLanguage('tp', require('./languages/tp'));\nhljs.registerLanguage('twig', require('./languages/twig'));\nhljs.registerLanguage('typescript', require('./languages/typescript'));\nhljs.registerLanguage('vala', require('./languages/vala'));\nhljs.registerLanguage('vbnet', require('./languages/vbnet'));\nhljs.registerLanguage('vbscript', require('./languages/vbscript'));\nhljs.registerLanguage('vbscript-html', require('./languages/vbscript-html'));\nhljs.registerLanguage('verilog', require('./languages/verilog'));\nhljs.registerLanguage('vhdl', require('./languages/vhdl'));\nhljs.registerLanguage('vim', require('./languages/vim'));\nhljs.registerLanguage('x86asm', require('./languages/x86asm'));\nhljs.registerLanguage('xl', require('./languages/xl'));\nhljs.registerLanguage('xquery', require('./languages/xquery'));\nhljs.registerLanguage('zephir', require('./languages/zephir'));\n\nmodule.exports = hljs;","/*\nLanguage: 1C:Enterprise\nAuthor: Stanislav Belov <stbelov@gmail.com>\nDescription: built-in language 1C:Enterprise (v7, v8)\nCategory: enterprise\n*/\n\nfunction _1c(hljs) {\n\n // общий паттерн для определения идентификаторов\n var UNDERSCORE_IDENT_RE = '[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]+';\n\n // v7 уникальные ключевые слова, отсутствующие в v8 ==> keyword\n var v7_keywords =\n 'далее ';\n\n // v8 ключевые слова ==> keyword\n var v8_keywords =\n 'возврат вызватьисключение выполнить для если и из или иначе иначеесли исключение каждого конецесли ' +\n 'конецпопытки конеццикла не новый перейти перем по пока попытка прервать продолжить тогда цикл экспорт ';\n\n // keyword : ключевые слова\n var KEYWORD = v7_keywords + v8_keywords;\n\n // v7 уникальные директивы, отсутствующие в v8 ==> meta-keyword\n var v7_meta_keywords =\n 'загрузитьизфайла ';\n\n // v8 ключевые слова в инструкциях препроцессора, директивах компиляции, аннотациях ==> meta-keyword\n var v8_meta_keywords =\n 'вебклиент вместо внешнеесоединение клиент конецобласти мобильноеприложениеклиент мобильноеприложениесервер ' +\n 'наклиенте наклиентенасервере наклиентенасерверебезконтекста насервере насерверебезконтекста область перед ' +\n 'после сервер толстыйклиентобычноеприложение толстыйклиентуправляемоеприложение тонкийклиент ';\n\n // meta-keyword : ключевые слова в инструкциях препроцессора, директивах компиляции, аннотациях\n var METAKEYWORD = v7_meta_keywords + v8_meta_keywords;\n\n // v7 системные константы ==> built_in\n var v7_system_constants =\n 'разделительстраниц разделительстрок символтабуляции ';\n\n // v7 уникальные методы глобального контекста, отсутствующие в v8 ==> built_in\n var v7_global_context_methods =\n 'ansitooem oemtoansi ввестивидсубконто ввестиперечисление ввестипериод ввестиплансчетов выбранныйплансчетов ' +\n 'датагод датамесяц датачисло заголовоксистемы значениевстроку значениеизстроки каталогиб каталогпользователя ' +\n 'кодсимв конгода конецпериодаби конецрассчитанногопериодаби конецстандартногоинтервала конквартала конмесяца ' +\n 'коннедели лог лог10 максимальноеколичествосубконто названиеинтерфейса названиенабораправ назначитьвид ' +\n 'назначитьсчет найтиссылки началопериодаби началостандартногоинтервала начгода начквартала начмесяца ' +\n 'начнедели номерднягода номерднянедели номернеделигода обработкаожидания основнойжурналрасчетов ' +\n 'основнойплансчетов основнойязык очиститьокносообщений периодстр получитьвремята получитьдатута ' +\n 'получитьдокументта получитьзначенияотбора получитьпозициюта получитьпустоезначение получитьта ' +\n 'префиксавтонумерации пропись пустоезначение разм разобратьпозициюдокумента рассчитатьрегистрына ' +\n 'рассчитатьрегистрыпо симв создатьобъект статусвозврата стрколичествострок сформироватьпозициюдокумента ' +\n 'счетпокоду текущеевремя типзначения типзначениястр установитьтана установитьтапо фиксшаблон шаблон ';\n\n // v8 методы глобального контекста ==> built_in\n var v8_global_context_methods =\n 'acos asin atan base64значение base64строка cos exp log log10 pow sin sqrt tan xmlзначение xmlстрока ' +\n 'xmlтип xmlтипзнч активноеокно безопасныйрежим безопасныйрежимразделенияданных булево ввестидату ввестизначение ' +\n 'ввестистроку ввестичисло возможностьчтенияxml вопрос восстановитьзначение врег выгрузитьжурналрегистрации ' +\n 'выполнитьобработкуоповещения выполнитьпроверкуправдоступа вычислить год данныеформывзначение дата день деньгода ' +\n 'деньнедели добавитьмесяц заблокироватьданныедляредактирования заблокироватьработупользователя завершитьработусистемы ' +\n 'загрузитьвнешнююкомпоненту закрытьсправку записатьjson записатьxml записатьдатуjson записьжурналарегистрации ' +\n 'заполнитьзначениясвойств запроситьразрешениепользователя запуститьприложение запуститьсистему зафиксироватьтранзакцию ' +\n 'значениевданныеформы значениевстрокувнутр значениевфайл значениезаполнено значениеизстрокивнутр значениеизфайла ' +\n 'изxmlтипа импортмоделиxdto имякомпьютера имяпользователя инициализироватьпредопределенныеданные информацияобошибке ' +\n 'каталогбиблиотекимобильногоустройства каталогвременныхфайлов каталогдокументов каталогпрограммы кодироватьстроку ' +\n 'кодлокализацииинформационнойбазы кодсимвола командасистемы конецгода конецдня конецквартала конецмесяца конецминуты ' +\n 'конецнедели конецчаса конфигурациябазыданныхизмененадинамически конфигурацияизменена копироватьданныеформы ' +\n 'копироватьфайл краткоепредставлениеошибки лев макс местноевремя месяц мин минута монопольныйрежим найти ' +\n 'найтинедопустимыесимволыxml найтиокнопонавигационнойссылке найтипомеченныенаудаление найтипоссылкам найтифайлы ' +\n 'началогода началодня началоквартала началомесяца началоминуты началонедели началочаса начатьзапросразрешенияпользователя ' +\n 'начатьзапускприложения начатькопированиефайла начатьперемещениефайла начатьподключениевнешнейкомпоненты ' +\n 'начатьподключениерасширенияработыскриптографией начатьподключениерасширенияработысфайлами начатьпоискфайлов ' +\n 'начатьполучениекаталогавременныхфайлов начатьполучениекаталогадокументов начатьполучениерабочегокаталогаданныхпользователя ' +\n 'начатьполучениефайлов начатьпомещениефайла начатьпомещениефайлов начатьсозданиедвоичныхданныхизфайла начатьсозданиекаталога ' +\n 'начатьтранзакцию начатьудалениефайлов начатьустановкувнешнейкомпоненты начатьустановкурасширенияработыскриптографией ' +\n 'начатьустановкурасширенияработысфайлами неделягода необходимостьзавершениясоединения номерсеансаинформационнойбазы ' +\n 'номерсоединенияинформационнойбазы нрег нстр обновитьинтерфейс обновитьнумерациюобъектов обновитьповторноиспользуемыезначения ' +\n 'обработкапрерыванияпользователя объединитьфайлы окр описаниеошибки оповестить оповеститьобизменении ' +\n 'отключитьобработчикзапросанастроекклиенталицензирования отключитьобработчикожидания отключитьобработчикоповещения ' +\n 'открытьзначение открытьиндекссправки открытьсодержаниесправки открытьсправку открытьформу открытьформумодально ' +\n 'отменитьтранзакцию очиститьжурналрегистрации очиститьнастройкипользователя очиститьсообщения параметрыдоступа ' +\n 'перейтипонавигационнойссылке переместитьфайл подключитьвнешнююкомпоненту ' +\n 'подключитьобработчикзапросанастроекклиенталицензирования подключитьобработчикожидания подключитьобработчикоповещения ' +\n 'подключитьрасширениеработыскриптографией подключитьрасширениеработысфайлами подробноепредставлениеошибки ' +\n 'показатьвводдаты показатьвводзначения показатьвводстроки показатьвводчисла показатьвопрос показатьзначение ' +\n 'показатьинформациюобошибке показатьнакарте показатьоповещениепользователя показатьпредупреждение полноеимяпользователя ' +\n 'получитьcomобъект получитьxmlтип получитьадреспоместоположению получитьблокировкусеансов получитьвремязавершенияспящегосеанса ' +\n 'получитьвремязасыпанияпассивногосеанса получитьвремяожиданияблокировкиданных получитьданныевыбора ' +\n 'получитьдополнительныйпараметрклиенталицензирования получитьдопустимыекодылокализации получитьдопустимыечасовыепояса ' +\n 'получитьзаголовокклиентскогоприложения получитьзаголовоксистемы получитьзначенияотборажурналарегистрации ' +\n 'получитьидентификаторконфигурации получитьизвременногохранилища получитьимявременногофайла ' +\n 'получитьимяклиенталицензирования получитьинформациюэкрановклиента получитьиспользованиежурналарегистрации ' +\n 'получитьиспользованиесобытияжурналарегистрации получитькраткийзаголовокприложения получитьмакетоформления ' +\n 'получитьмаскувсефайлы получитьмаскувсефайлыклиента получитьмаскувсефайлысервера получитьместоположениепоадресу ' +\n 'получитьминимальнуюдлинупаролейпользователей получитьнавигационнуюссылку получитьнавигационнуюссылкуинформационнойбазы ' +\n 'получитьобновлениеконфигурациибазыданных получитьобновлениепредопределенныхданныхинформационнойбазы получитьобщиймакет ' +\n 'получитьобщуюформу получитьокна получитьоперативнуюотметкувремени получитьотключениебезопасногорежима ' +\n 'получитьпараметрыфункциональныхопцийинтерфейса получитьполноеимяпредопределенногозначения ' +\n 'получитьпредставлениянавигационныхссылок получитьпроверкусложностипаролейпользователей получитьразделительпути ' +\n 'получитьразделительпутиклиента получитьразделительпутисервера получитьсеансыинформационнойбазы ' +\n 'получитьскоростьклиентскогосоединения получитьсоединенияинформационнойбазы получитьсообщенияпользователю ' +\n 'получитьсоответствиеобъектаиформы получитьсоставстандартногоинтерфейсаodata получитьструктурухранениябазыданных ' +\n 'получитьтекущийсеансинформационнойбазы получитьфайл получитьфайлы получитьформу получитьфункциональнуюопцию ' +\n 'получитьфункциональнуюопциюинтерфейса получитьчасовойпоясинформационнойбазы пользователиос поместитьвовременноехранилище ' +\n 'поместитьфайл поместитьфайлы прав праводоступа предопределенноезначение представлениекодалокализации представлениепериода ' +\n 'представлениеправа представлениеприложения представлениесобытияжурналарегистрации представлениечасовогопояса предупреждение ' +\n 'прекратитьработусистемы привилегированныйрежим продолжитьвызов прочитатьjson прочитатьxml прочитатьдатуjson пустаястрока ' +\n 'рабочийкаталогданныхпользователя разблокироватьданныедляредактирования разделитьфайл разорватьсоединениесвнешнимисточникомданных ' +\n 'раскодироватьстроку рольдоступна секунда сигнал символ скопироватьжурналрегистрации смещениелетнеговремени ' +\n 'смещениестандартноговремени соединитьбуферыдвоичныхданных создатькаталог создатьфабрикуxdto сокрл сокрлп сокрп сообщить ' +\n 'состояние сохранитьзначение сохранитьнастройкипользователя сред стрдлина стрзаканчиваетсяна стрзаменить стрнайти стрначинаетсяс ' +\n 'строка строкасоединенияинформационнойбазы стрполучитьстроку стрразделить стрсоединить стрсравнить стрчисловхождений '+\n 'стрчислострок стршаблон текущаядата текущаядатасеанса текущаяуниверсальнаядата текущаяуниверсальнаядатавмиллисекундах ' +\n 'текущийвариантинтерфейсаклиентскогоприложения текущийвариантосновногошрифтаклиентскогоприложения текущийкодлокализации ' +\n 'текущийрежимзапуска текущийязык текущийязыксистемы тип типзнч транзакцияактивна трег удалитьданныеинформационнойбазы ' +\n 'удалитьизвременногохранилища удалитьобъекты удалитьфайлы универсальноевремя установитьбезопасныйрежим ' +\n 'установитьбезопасныйрежимразделенияданных установитьблокировкусеансов установитьвнешнююкомпоненту ' +\n 'установитьвремязавершенияспящегосеанса установитьвремязасыпанияпассивногосеанса установитьвремяожиданияблокировкиданных ' +\n 'установитьзаголовокклиентскогоприложения установитьзаголовоксистемы установитьиспользованиежурналарегистрации ' +\n 'установитьиспользованиесобытияжурналарегистрации установитькраткийзаголовокприложения ' +\n 'установитьминимальнуюдлинупаролейпользователей установитьмонопольныйрежим установитьнастройкиклиенталицензирования ' +\n 'установитьобновлениепредопределенныхданныхинформационнойбазы установитьотключениебезопасногорежима ' +\n 'установитьпараметрыфункциональныхопцийинтерфейса установитьпривилегированныйрежим ' +\n 'установитьпроверкусложностипаролейпользователей установитьрасширениеработыскриптографией ' +\n 'установитьрасширениеработысфайлами установитьсоединениесвнешнимисточникомданных установитьсоответствиеобъектаиформы ' +\n 'установитьсоставстандартногоинтерфейсаodata установитьчасовойпоясинформационнойбазы установитьчасовойпояссеанса ' +\n 'формат цел час часовойпояс часовойпояссеанса число числопрописью этоадресвременногохранилища ';\n\n // v8 свойства глобального контекста ==> built_in\n var v8_global_context_property =\n 'wsссылки библиотекакартинок библиотекамакетовоформлениякомпоновкиданных библиотекастилей бизнеспроцессы ' +\n 'внешниеисточникиданных внешниеобработки внешниеотчеты встроенныепокупки главныйинтерфейс главныйстиль ' +\n 'документы доставляемыеуведомления журналыдокументов задачи информацияобинтернетсоединении использованиерабочейдаты ' +\n 'историяработыпользователя константы критерииотбора метаданные обработки отображениерекламы отправкадоставляемыхуведомлений ' +\n 'отчеты панельзадачос параметрзапуска параметрысеанса перечисления планывидоврасчета планывидовхарактеристик ' +\n 'планыобмена планысчетов полнотекстовыйпоиск пользователиинформационнойбазы последовательности проверкавстроенныхпокупок ' +\n 'рабочаядата расширенияконфигурации регистрыбухгалтерии регистрынакопления регистрырасчета регистрысведений ' +\n 'регламентныезадания сериализаторxdto справочники средствагеопозиционирования средствакриптографии средствамультимедиа ' +\n 'средстваотображениярекламы средствапочты средствателефонии фабрикаxdto файловыепотоки фоновыезадания хранилищанастроек ' +\n 'хранилищевариантовотчетов хранилищенастроекданныхформ хранилищеобщихнастроек хранилищепользовательскихнастроекдинамическихсписков ' +\n 'хранилищепользовательскихнастроекотчетов хранилищесистемныхнастроек ';\n\n // built_in : встроенные или библиотечные объекты (константы, классы, функции)\n var BUILTIN =\n v7_system_constants +\n v7_global_context_methods + v8_global_context_methods +\n v8_global_context_property;\n\n // v8 системные наборы значений ==> class\n var v8_system_sets_of_values =\n 'webцвета windowsцвета windowsшрифты библиотекакартинок рамкистиля символы цветастиля шрифтыстиля ';\n\n // v8 системные перечисления - интерфейсные ==> class\n var v8_system_enums_interface =\n 'автоматическоесохранениеданныхформывнастройках автонумерациявформе автораздвижениесерий ' +\n 'анимациядиаграммы вариантвыравниванияэлементовизаголовков вариантуправлениявысотойтаблицы ' +\n 'вертикальнаяпрокруткаформы вертикальноеположение вертикальноеположениеэлемента видгруппыформы ' +\n 'виддекорацииформы виддополненияэлементаформы видизмененияданных видкнопкиформы видпереключателя ' +\n 'видподписейкдиаграмме видполяформы видфлажка влияниеразмеранапузырекдиаграммы горизонтальноеположение ' +\n 'горизонтальноеположениеэлемента группировкаколонок группировкаподчиненныхэлементовформы ' +\n 'группыиэлементы действиеперетаскивания дополнительныйрежимотображения допустимыедействияперетаскивания ' +\n 'интервалмеждуэлементамиформы использованиевывода использованиеполосыпрокрутки ' +\n 'используемоезначениеточкибиржевойдиаграммы историявыборапривводе источникзначенийоситочекдиаграммы ' +\n 'источникзначенияразмерапузырькадиаграммы категориягруппыкоманд максимумсерий начальноеотображениедерева ' +\n 'начальноеотображениесписка обновлениетекстаредактирования ориентациядендрограммы ориентациядиаграммы ' +\n 'ориентацияметокдиаграммы ориентацияметоксводнойдиаграммы ориентацияэлементаформы отображениевдиаграмме ' +\n 'отображениевлегендедиаграммы отображениегруппыкнопок отображениезаголовкашкалыдиаграммы ' +\n 'отображениезначенийсводнойдиаграммы отображениезначенияизмерительнойдиаграммы ' +\n 'отображениеинтерваладиаграммыганта отображениекнопки отображениекнопкивыбора отображениеобсужденийформы ' +\n 'отображениеобычнойгруппы отображениеотрицательныхзначенийпузырьковойдиаграммы отображениепанелипоиска ' +\n 'отображениеподсказки отображениепредупрежденияприредактировании отображениеразметкиполосырегулирования ' +\n 'отображениестраницформы отображениетаблицы отображениетекстазначениядиаграммыганта ' +\n 'отображениеуправленияобычнойгруппы отображениефигурыкнопки палитрацветовдиаграммы поведениеобычнойгруппы ' +\n 'поддержкамасштабадендрограммы поддержкамасштабадиаграммыганта поддержкамасштабасводнойдиаграммы ' +\n 'поисквтаблицепривводе положениезаголовкаэлементаформы положениекартинкикнопкиформы ' +\n 'положениекартинкиэлементаграфическойсхемы положениекоманднойпанелиформы положениекоманднойпанелиэлементаформы ' +\n 'положениеопорнойточкиотрисовки положениеподписейкдиаграмме положениеподписейшкалызначенийизмерительнойдиаграммы ' +\n 'положениесостоянияпросмотра положениестрокипоиска положениетекстасоединительнойлинии положениеуправленияпоиском ' +\n 'положениешкалывремени порядокотображенияточекгоризонтальнойгистограммы порядоксерийвлегендедиаграммы ' +\n 'размеркартинки расположениезаголовкашкалыдиаграммы растягиваниеповертикалидиаграммыганта ' +\n 'режимавтоотображениясостояния режимвводастроктаблицы режимвыборанезаполненного режимвыделениядаты ' +\n 'режимвыделениястрокитаблицы режимвыделениятаблицы режимизмененияразмера режимизменениясвязанногозначения ' +\n 'режимиспользованиядиалогапечати режимиспользованияпараметракоманды режиммасштабированияпросмотра ' +\n 'режимосновногоокнаклиентскогоприложения режимоткрытияокнаформы режимотображениявыделения ' +\n 'режимотображениягеографическойсхемы режимотображениязначенийсерии режимотрисовкисеткиграфическойсхемы ' +\n 'режимполупрозрачностидиаграммы режимпробеловдиаграммы режимразмещениянастранице режимредактированияколонки ' +\n 'режимсглаживаниядиаграммы режимсглаживанияиндикатора режимсписказадач сквозноевыравнивание ' +\n 'сохранениеданныхформывнастройках способзаполнениятекстазаголовкашкалыдиаграммы ' +\n 'способопределенияограничивающегозначениядиаграммы стандартнаягруппакоманд стандартноеоформление ' +\n 'статусоповещенияпользователя стильстрелки типаппроксимациилиниитрендадиаграммы типдиаграммы ' +\n 'типединицышкалывремени типимпортасерийслоягеографическойсхемы типлиниигеографическойсхемы типлиниидиаграммы ' +\n 'типмаркерагеографическойсхемы типмаркерадиаграммы типобластиоформления ' +\n 'типорганизацииисточникаданныхгеографическойсхемы типотображениясериислоягеографическойсхемы ' +\n 'типотображенияточечногообъектагеографическойсхемы типотображенияшкалыэлементалегендыгеографическойсхемы ' +\n 'типпоискаобъектовгеографическойсхемы типпроекциигеографическойсхемы типразмещенияизмерений ' +\n 'типразмещенияреквизитовизмерений типрамкиэлементауправления типсводнойдиаграммы ' +\n 'типсвязидиаграммыганта типсоединениязначенийпосериямдиаграммы типсоединенияточекдиаграммы ' +\n 'типсоединительнойлинии типстороныэлементаграфическойсхемы типформыотчета типшкалырадарнойдиаграммы ' +\n 'факторлиниитрендадиаграммы фигуракнопки фигурыграфическойсхемы фиксациявтаблице форматдняшкалывремени ' +\n 'форматкартинки ширинаподчиненныхэлементовформы ';\n\n // v8 системные перечисления - свойства прикладных объектов ==> class\n var v8_system_enums_objects_properties =\n 'виддвижениябухгалтерии виддвижениянакопления видпериодарегистрарасчета видсчета видточкимаршрутабизнеспроцесса ' +\n 'использованиеагрегатарегистранакопления использованиегруппиэлементов использованиережимапроведения ' +\n 'использованиесреза периодичностьагрегатарегистранакопления режимавтовремя режимзаписидокумента режимпроведениядокумента ';\n\n // v8 системные перечисления - планы обмена ==> class\n var v8_system_enums_exchange_plans =\n 'авторегистрацияизменений допустимыйномерсообщения отправкаэлементаданных получениеэлементаданных ';\n\n // v8 системные перечисления - табличный документ ==> class\n var v8_system_enums_tabular_document =\n 'использованиерасшифровкитабличногодокумента ориентациястраницы положениеитоговколоноксводнойтаблицы ' +\n 'положениеитоговстроксводнойтаблицы положениетекстаотносительнокартинки расположениезаголовкагруппировкитабличногодокумента ' +\n 'способчтениязначенийтабличногодокумента типдвустороннейпечати типзаполненияобластитабличногодокумента ' +\n 'типкурсоровтабличногодокумента типлиниирисункатабличногодокумента типлинииячейкитабличногодокумента ' +\n 'типнаправленияпереходатабличногодокумента типотображениявыделениятабличногодокумента типотображениялинийсводнойтаблицы ' +\n 'типразмещениятекстатабличногодокумента типрисункатабличногодокумента типсмещениятабличногодокумента ' +\n 'типузоратабличногодокумента типфайлатабличногодокумента точностьпечати чередованиерасположениястраниц ';\n\n // v8 системные перечисления - планировщик ==> class\n var v8_system_enums_sheduler =\n 'отображениевремениэлементовпланировщика ';\n\n // v8 системные перечисления - форматированный документ ==> class\n var v8_system_enums_formatted_document =\n 'типфайлаформатированногодокумента ';\n\n // v8 системные перечисления - запрос ==> class\n var v8_system_enums_query =\n 'обходрезультатазапроса типзаписизапроса ';\n\n // v8 системные перечисления - построитель отчета ==> class\n var v8_system_enums_report_builder =\n 'видзаполнениярасшифровкипостроителяотчета типдобавленияпредставлений типизмеренияпостроителяотчета типразмещенияитогов ';\n\n // v8 системные перечисления - работа с файлами ==> class\n var v8_system_enums_files =\n 'доступкфайлу режимдиалогавыборафайла режимоткрытияфайла ';\n\n // v8 системные перечисления - построитель запроса ==> class\n var v8_system_enums_query_builder =\n 'типизмеренияпостроителязапроса ';\n\n // v8 системные перечисления - анализ данных ==> class\n var v8_system_enums_data_analysis =\n 'видданныханализа методкластеризации типединицыинтервалавременианализаданных типзаполнениятаблицырезультатаанализаданных ' +\n 'типиспользованиячисловыхзначенийанализаданных типисточникаданныхпоискаассоциаций типколонкианализаданныхдереворешений ' +\n 'типколонкианализаданныхкластеризация типколонкианализаданныхобщаястатистика типколонкианализаданныхпоискассоциаций ' +\n 'типколонкианализаданныхпоискпоследовательностей типколонкимоделипрогноза типмерырасстоянияанализаданных ' +\n 'типотсеченияправилассоциации типполяанализаданных типстандартизациианализаданных типупорядочиванияправилассоциациианализаданных ' +\n 'типупорядочиванияшаблоновпоследовательностейанализаданных типупрощениядереварешений ';\n\n // v8 системные перечисления - xml, json, xs, dom, xdto, web-сервисы ==> class\n var v8_system_enums_xml_json_xs_dom_xdto_ws =\n 'wsнаправлениепараметра вариантxpathxs вариантзаписидатыjson вариантпростоготипаxs видгруппымоделиxs видфасетаxdto ' +\n 'действиепостроителяdom завершенностьпростоготипаxs завершенностьсоставноготипаxs завершенностьсхемыxs запрещенныеподстановкиxs ' +\n 'исключениягруппподстановкиxs категорияиспользованияатрибутаxs категорияограниченияидентичностиxs категорияограниченияпространствименxs ' +\n 'методнаследованияxs модельсодержимогоxs назначениетипаxml недопустимыеподстановкиxs обработкапробельныхсимволовxs обработкасодержимогоxs ' +\n 'ограничениезначенияxs параметрыотбораузловdom переносстрокjson позициявдокументеdom пробельныесимволыxml типатрибутаxml типзначенияjson ' +\n 'типканоническогоxml типкомпонентыxs типпроверкиxml типрезультатаdomxpath типузлаdom типузлаxml формаxml формапредставленияxs ' +\n 'форматдатыjson экранированиесимволовjson ';\n\n // v8 системные перечисления - система компоновки данных ==> class\n var v8_system_enums_data_composition_system =\n 'видсравнениякомпоновкиданных действиеобработкирасшифровкикомпоновкиданных направлениесортировкикомпоновкиданных ' +\n 'расположениевложенныхэлементоврезультатакомпоновкиданных расположениеитоговкомпоновкиданных расположениегруппировкикомпоновкиданных ' +\n 'расположениеполейгруппировкикомпоновкиданных расположениеполякомпоновкиданных расположениереквизитовкомпоновкиданных ' +\n 'расположениересурсовкомпоновкиданных типбухгалтерскогоостаткакомпоновкиданных типвыводатекстакомпоновкиданных ' +\n 'типгруппировкикомпоновкиданных типгруппыэлементовотборакомпоновкиданных типдополненияпериодакомпоновкиданных ' +\n 'типзаголовкаполейкомпоновкиданных типмакетагруппировкикомпоновкиданных типмакетаобластикомпоновкиданных типостаткакомпоновкиданных ' +\n 'типпериодакомпоновкиданных типразмещениятекстакомпоновкиданных типсвязинаборовданныхкомпоновкиданных типэлементарезультатакомпоновкиданных ' +\n 'расположениелегендыдиаграммыкомпоновкиданных типпримененияотборакомпоновкиданных режимотображенияэлементанастройкикомпоновкиданных ' +\n 'режимотображениянастроеккомпоновкиданных состояниеэлементанастройкикомпоновкиданных способвосстановлениянастроеккомпоновкиданных ' +\n 'режимкомпоновкирезультата использованиепараметракомпоновкиданных автопозицияресурсовкомпоновкиданных '+\n 'вариантиспользованиягруппировкикомпоновкиданных расположениересурсоввдиаграммекомпоновкиданных фиксациякомпоновкиданных ' +\n 'использованиеусловногооформлениякомпоновкиданных ';\n\n // v8 системные перечисления - почта ==> class\n var v8_system_enums_email =\n 'важностьинтернетпочтовогосообщения обработкатекстаинтернетпочтовогосообщения способкодированияинтернетпочтовоговложения ' +\n 'способкодированиянеasciiсимволовинтернетпочтовогосообщения типтекстапочтовогосообщения протоколинтернетпочты ' +\n 'статусразборапочтовогосообщения ';\n\n // v8 системные перечисления - журнал регистрации ==> class\n var v8_system_enums_logbook =\n 'режимтранзакциизаписижурналарегистрации статустранзакциизаписижурналарегистрации уровеньжурналарегистрации ';\n\n // v8 системные перечисления - криптография ==> class\n var v8_system_enums_cryptography =\n 'расположениехранилищасертификатовкриптографии режимвключениясертификатовкриптографии режимпроверкисертификатакриптографии ' +\n 'типхранилищасертификатовкриптографии ';\n\n // v8 системные перечисления - ZIP ==> class\n var v8_system_enums_zip =\n 'кодировкаименфайловвzipфайле методсжатияzip методшифрованияzip режимвосстановленияпутейфайловzip режимобработкиподкаталоговzip ' +\n 'режимсохраненияпутейzip уровеньсжатияzip ';\n\n // v8 системные перечисления -\n // Блокировка данных, Фоновые задания, Автоматизированное тестирование,\n // Доставляемые уведомления, Встроенные покупки, Интернет, Работа с двоичными данными ==> class\n var v8_system_enums_other =\n 'звуковоеоповещение направлениепереходакстроке позициявпотоке порядокбайтов режимблокировкиданных режимуправленияблокировкойданных ' +\n 'сервисвстроенныхпокупок состояниефоновогозадания типподписчикадоставляемыхуведомлений уровеньиспользованиязащищенногосоединенияftp ';\n\n // v8 системные перечисления - схема запроса ==> class\n var v8_system_enums_request_schema =\n 'направлениепорядкасхемызапроса типдополненияпериодамисхемызапроса типконтрольнойточкисхемызапроса типобъединениясхемызапроса ' +\n 'типпараметрадоступнойтаблицысхемызапроса типсоединениясхемызапроса ';\n\n // v8 системные перечисления - свойства объектов метаданных ==> class\n var v8_system_enums_properties_of_metadata_objects =\n 'httpметод автоиспользованиеобщегореквизита автопрефиксномеразадачи вариантвстроенногоязыка видиерархии видрегистранакопления ' +\n 'видтаблицывнешнегоисточникаданных записьдвиженийприпроведении заполнениепоследовательностей индексирование ' +\n 'использованиебазыпланавидоврасчета использованиебыстроговыбора использованиеобщегореквизита использованиеподчинения ' +\n 'использованиеполнотекстовогопоиска использованиеразделяемыхданныхобщегореквизита использованиереквизита ' +\n 'назначениеиспользованияприложения назначениерасширенияконфигурации направлениепередачи обновлениепредопределенныхданных ' +\n 'оперативноепроведение основноепредставлениевидарасчета основноепредставлениевидахарактеристики основноепредставлениезадачи ' +\n 'основноепредставлениепланаобмена основноепредставлениесправочника основноепредставлениесчета перемещениеграницыприпроведении ' +\n 'периодичностьномерабизнеспроцесса периодичностьномерадокумента периодичностьрегистрарасчета периодичностьрегистрасведений ' +\n 'повторноеиспользованиевозвращаемыхзначений полнотекстовыйпоискпривводепостроке принадлежностьобъекта проведение ' +\n 'разделениеаутентификацииобщегореквизита разделениеданныхобщегореквизита разделениерасширенийконфигурацииобщегореквизита '+\n 'режимавтонумерацииобъектов режимзаписирегистра режимиспользованиямодальности ' +\n 'режимиспользованиясинхронныхвызововрасширенийплатформыивнешнихкомпонент режимповторногоиспользованиясеансов ' +\n 'режимполученияданныхвыборапривводепостроке режимсовместимости режимсовместимостиинтерфейса ' +\n 'режимуправленияблокировкойданныхпоумолчанию сериикодовпланавидовхарактеристик сериикодовпланасчетов ' +\n 'сериикодовсправочника созданиепривводе способвыбора способпоискастрокипривводепостроке способредактирования ' +\n 'типданныхтаблицывнешнегоисточникаданных типкодапланавидоврасчета типкодасправочника типмакета типномерабизнеспроцесса ' +\n 'типномерадокумента типномеразадачи типформы удалениедвижений ';\n\n // v8 системные перечисления - разные ==> class\n var v8_system_enums_differents =\n 'важностьпроблемыприменениярасширенияконфигурации вариантинтерфейсаклиентскогоприложения вариантмасштабаформклиентскогоприложения ' +\n 'вариантосновногошрифтаклиентскогоприложения вариантстандартногопериода вариантстандартнойдатыначала видграницы видкартинки ' +\n 'видотображенияполнотекстовогопоиска видрамки видсравнения видцвета видчисловогозначения видшрифта допустимаядлина допустимыйзнак ' +\n 'использованиеbyteordermark использованиеметаданныхполнотекстовогопоиска источникрасширенийконфигурации клавиша кодвозвратадиалога ' +\n 'кодировкаxbase кодировкатекста направлениепоиска направлениесортировки обновлениепредопределенныхданных обновлениеприизмененииданных ' +\n 'отображениепанелиразделов проверказаполнения режимдиалогавопрос режимзапускаклиентскогоприложения режимокругления режимоткрытияформприложения ' +\n 'режимполнотекстовогопоиска скоростьклиентскогосоединения состояниевнешнегоисточникаданных состояниеобновленияконфигурациибазыданных ' +\n 'способвыборасертификатаwindows способкодированиястроки статуссообщения типвнешнейкомпоненты типплатформы типповеденияклавишиenter ' +\n 'типэлементаинформацииовыполненииобновленияконфигурациибазыданных уровеньизоляциитранзакций хешфункция частидаты';\n\n // class: встроенные наборы значений, системные перечисления (содержат дочерние значения, обращения к которым через разыменование)\n var CLASS =\n v8_system_sets_of_values +\n v8_system_enums_interface +\n v8_system_enums_objects_properties +\n v8_system_enums_exchange_plans +\n v8_system_enums_tabular_document +\n v8_system_enums_sheduler +\n v8_system_enums_formatted_document +\n v8_system_enums_query +\n v8_system_enums_report_builder +\n v8_system_enums_files +\n v8_system_enums_query_builder +\n v8_system_enums_data_analysis +\n v8_system_enums_xml_json_xs_dom_xdto_ws +\n v8_system_enums_data_composition_system +\n v8_system_enums_email +\n v8_system_enums_logbook +\n v8_system_enums_cryptography +\n v8_system_enums_zip +\n v8_system_enums_other +\n v8_system_enums_request_schema +\n v8_system_enums_properties_of_metadata_objects +\n v8_system_enums_differents;\n\n // v8 общие объекты (у объектов есть конструктор, экземпляры создаются методом НОВЫЙ) ==> type\n var v8_shared_object =\n 'comобъект ftpсоединение httpзапрос httpсервисответ httpсоединение wsопределения wsпрокси xbase анализданных аннотацияxs ' +\n 'блокировкаданных буфердвоичныхданных включениеxs выражениекомпоновкиданных генераторслучайныхчисел географическаясхема ' +\n 'географическиекоординаты графическаясхема группамоделиxs данныерасшифровкикомпоновкиданных двоичныеданные дендрограмма ' +\n 'диаграмма диаграммаганта диалогвыборафайла диалогвыборацвета диалогвыборашрифта диалограсписаниярегламентногозадания ' +\n 'диалогредактированиястандартногопериода диапазон документdom документhtml документацияxs доставляемоеуведомление ' +\n 'записьdom записьfastinfoset записьhtml записьjson записьxml записьzipфайла записьданных записьтекста записьузловdom ' +\n 'запрос защищенноесоединениеopenssl значенияполейрасшифровкикомпоновкиданных извлечениетекста импортxs интернетпочта ' +\n 'интернетпочтовоесообщение интернетпочтовыйпрофиль интернетпрокси интернетсоединение информациядляприложенияxs ' +\n 'использованиеатрибутаxs использованиесобытияжурналарегистрации источникдоступныхнастроеккомпоновкиданных ' +\n 'итераторузловdom картинка квалификаторыдаты квалификаторыдвоичныхданных квалификаторыстроки квалификаторычисла ' +\n 'компоновщикмакетакомпоновкиданных компоновщикнастроеккомпоновкиданных конструктормакетаоформлениякомпоновкиданных ' +\n 'конструкторнастроеккомпоновкиданных конструкторформатнойстроки линия макеткомпоновкиданных макетобластикомпоновкиданных ' +\n 'макетоформлениякомпоновкиданных маскаxs менеджеркриптографии наборсхемxml настройкикомпоновкиданных настройкисериализацииjson ' +\n 'обработкакартинок обработкарасшифровкикомпоновкиданных обходдереваdom объявлениеатрибутаxs объявлениенотацииxs ' +\n 'объявлениеэлементаxs описаниеиспользованиясобытиядоступжурналарегистрации ' +\n 'описаниеиспользованиясобытияотказвдоступежурналарегистрации описаниеобработкирасшифровкикомпоновкиданных ' +\n 'описаниепередаваемогофайла описаниетипов определениегруппыатрибутовxs определениегруппымоделиxs ' +\n 'определениеограниченияидентичностиxs определениепростоготипаxs определениесоставноготипаxs определениетипадокументаdom ' +\n 'определенияxpathxs отборкомпоновкиданных пакетотображаемыхдокументов параметрвыбора параметркомпоновкиданных ' +\n 'параметрызаписиjson параметрызаписиxml параметрычтенияxml переопределениеxs планировщик полеанализаданных ' +\n 'полекомпоновкиданных построительdom построительзапроса построительотчета построительотчетаанализаданных ' +\n 'построительсхемxml поток потоквпамяти почта почтовоесообщение преобразованиеxsl преобразованиекканоническомуxml ' +\n 'процессорвыводарезультатакомпоновкиданныхвколлекциюзначений процессорвыводарезультатакомпоновкиданныхвтабличныйдокумент ' +\n 'процессоркомпоновкиданных разыменовательпространствименdom рамка расписаниерегламентногозадания расширенноеимяxml ' +\n 'результатчтенияданных своднаядиаграмма связьпараметравыбора связьпотипу связьпотипукомпоновкиданных сериализаторxdto ' +\n 'сертификатклиентаwindows сертификатклиентафайл сертификаткриптографии сертификатыудостоверяющихцентровwindows ' +\n 'сертификатыудостоверяющихцентровфайл сжатиеданных системнаяинформация сообщениепользователю сочетаниеклавиш ' +\n 'сравнениезначений стандартнаядатаначала стандартныйпериод схемаxml схемакомпоновкиданных табличныйдокумент ' +\n 'текстовыйдокумент тестируемоеприложение типданныхxml уникальныйидентификатор фабрикаxdto файл файловыйпоток ' +\n 'фасетдлиныxs фасетколичестваразрядовдробнойчастиxs фасетмаксимальноговключающегозначенияxs ' +\n 'фасетмаксимальногоисключающегозначенияxs фасетмаксимальнойдлиныxs фасетминимальноговключающегозначенияxs ' +\n 'фасетминимальногоисключающегозначенияxs фасетминимальнойдлиныxs фасетобразцаxs фасетобщегоколичестваразрядовxs ' +\n 'фасетперечисленияxs фасетпробельныхсимволовxs фильтрузловdom форматированнаястрока форматированныйдокумент ' +\n 'фрагментxs хешированиеданных хранилищезначения цвет чтениеfastinfoset чтениеhtml чтениеjson чтениеxml чтениеzipфайла ' +\n 'чтениеданных чтениетекста чтениеузловdom шрифт элементрезультатакомпоновкиданных ';\n\n // v8 универсальные коллекции значений ==> type\n var v8_universal_collection =\n 'comsafearray деревозначений массив соответствие списокзначений структура таблицазначений фиксированнаяструктура ' +\n 'фиксированноесоответствие фиксированныймассив ';\n\n // type : встроенные типы\n var TYPE =\n v8_shared_object +\n v8_universal_collection;\n\n // literal : примитивные типы\n var LITERAL = 'null истина ложь неопределено';\n\n // number : числа\n var NUMBERS = hljs.inherit(hljs.NUMBER_MODE);\n\n // string : строки\n var STRINGS = {\n className: 'string',\n begin: '\"|\\\\|', end: '\"|$',\n contains: [{begin: '\"\"'}]\n };\n\n // number : даты\n var DATE = {\n begin: \"'\", end: \"'\", excludeBegin: true, excludeEnd: true,\n contains: [\n {\n className: 'number',\n begin: '\\\\d{4}([\\\\.\\\\\\\\/:-]?\\\\d{2}){0,5}'\n }\n ]\n };\n\n // comment : комментарии\n var COMMENTS = hljs.inherit(hljs.C_LINE_COMMENT_MODE);\n\n // meta : инструкции препроцессора, директивы компиляции\n var META = {\n className: 'meta',\n\n begin: '#|&', end: '$',\n keywords: {\n $pattern: UNDERSCORE_IDENT_RE,\n 'meta-keyword': KEYWORD + METAKEYWORD\n },\n contains: [\n COMMENTS\n ]\n };\n\n // symbol : метка goto\n var SYMBOL = {\n className: 'symbol',\n begin: '~', end: ';|:', excludeEnd: true\n };\n\n // function : объявление процедур и функций\n var FUNCTION = {\n className: 'function',\n variants: [\n {begin: 'процедура|функция', end: '\\\\)', keywords: 'процедура функция'},\n {begin: 'конецпроцедуры|конецфункции', keywords: 'конецпроцедуры конецфункции'}\n ],\n contains: [\n {\n begin: '\\\\(', end: '\\\\)', endsParent : true,\n contains: [\n {\n className: 'params',\n begin: UNDERSCORE_IDENT_RE, end: ',', excludeEnd: true, endsWithParent: true,\n keywords: {\n $pattern: UNDERSCORE_IDENT_RE,\n keyword: 'знач',\n literal: LITERAL\n },\n contains: [\n NUMBERS,\n STRINGS,\n DATE\n ]\n },\n COMMENTS\n ]\n },\n hljs.inherit(hljs.TITLE_MODE, {begin: UNDERSCORE_IDENT_RE})\n ]\n };\n\n return {\n name: '1C:Enterprise',\n case_insensitive: true,\n keywords: {\n $pattern: UNDERSCORE_IDENT_RE,\n keyword: KEYWORD,\n built_in: BUILTIN,\n class: CLASS,\n type: TYPE,\n literal: LITERAL\n },\n contains: [\n META,\n FUNCTION,\n COMMENTS,\n SYMBOL,\n NUMBERS,\n STRINGS,\n DATE\n ]\n };\n}\n\nmodule.exports = _1c;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/*\nLanguage: Augmented Backus-Naur Form\nAuthor: Alex McKibben <alex@nullscope.net>\nWebsite: https://tools.ietf.org/html/rfc5234\nAudit: 2020\n*/\n\n/** @type LanguageFn */\nfunction abnf(hljs) {\n const regexes = {\n ruleDeclaration: /^[a-zA-Z][a-zA-Z0-9-]*/,\n unexpectedChars: /[!@#$^&',?+~`|:]/\n };\n\n const keywords = [\n \"ALPHA\",\n \"BIT\",\n \"CHAR\",\n \"CR\",\n \"CRLF\",\n \"CTL\",\n \"DIGIT\",\n \"DQUOTE\",\n \"HEXDIG\",\n \"HTAB\",\n \"LF\",\n \"LWSP\",\n \"OCTET\",\n \"SP\",\n \"VCHAR\",\n \"WSP\"\n ];\n\n const commentMode = hljs.COMMENT(/;/, /$/);\n\n const terminalBinaryMode = {\n className: \"symbol\",\n begin: /%b[0-1]+(-[0-1]+|(\\.[0-1]+)+){0,1}/\n };\n\n const terminalDecimalMode = {\n className: \"symbol\",\n begin: /%d[0-9]+(-[0-9]+|(\\.[0-9]+)+){0,1}/\n };\n\n const terminalHexadecimalMode = {\n className: \"symbol\",\n begin: /%x[0-9A-F]+(-[0-9A-F]+|(\\.[0-9A-F]+)+){0,1}/\n };\n\n const caseSensitivityIndicatorMode = {\n className: \"symbol\",\n begin: /%[si]/\n };\n\n const ruleDeclarationMode = {\n className: \"attribute\",\n begin: concat(regexes.ruleDeclaration, /(?=\\s*=)/)\n };\n\n return {\n name: 'Augmented Backus-Naur Form',\n illegal: regexes.unexpectedChars,\n keywords: keywords,\n contains: [\n ruleDeclarationMode,\n commentMode,\n terminalBinaryMode,\n terminalDecimalMode,\n terminalHexadecimalMode,\n caseSensitivityIndicatorMode,\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE\n ]\n };\n}\n\nmodule.exports = abnf;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] } args\n * @returns {string}\n */\nfunction either(...args) {\n const joined = '(' + args.map((x) => source(x)).join(\"|\") + \")\";\n return joined;\n}\n\n/*\n Language: Apache Access Log\n Author: Oleg Efimov <efimovov@gmail.com>\n Description: Apache/Nginx Access Logs\n Website: https://httpd.apache.org/docs/2.4/logs.html#accesslog\n Audit: 2020\n */\n\n/** @type LanguageFn */\nfunction accesslog(_hljs) {\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods\n const HTTP_VERBS = [\n \"GET\",\n \"POST\",\n \"HEAD\",\n \"PUT\",\n \"DELETE\",\n \"CONNECT\",\n \"OPTIONS\",\n \"PATCH\",\n \"TRACE\"\n ];\n return {\n name: 'Apache Access Log',\n contains: [\n // IP\n {\n className: 'number',\n begin: /^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b/,\n relevance: 5\n },\n // Other numbers\n {\n className: 'number',\n begin: /\\b\\d+\\b/,\n relevance: 0\n },\n // Requests\n {\n className: 'string',\n begin: concat(/\"/, either(...HTTP_VERBS)),\n end: /\"/,\n keywords: HTTP_VERBS,\n illegal: /\\n/,\n relevance: 5,\n contains: [\n {\n begin: /HTTP\\/[12]\\.\\d'/,\n relevance: 5\n }\n ]\n },\n // Dates\n {\n className: 'string',\n // dates must have a certain length, this prevents matching\n // simple array accesses a[123] and [] and other common patterns\n // found in other languages\n begin: /\\[\\d[^\\]\\n]{8,}\\]/,\n illegal: /\\n/,\n relevance: 1\n },\n {\n className: 'string',\n begin: /\\[/,\n end: /\\]/,\n illegal: /\\n/,\n relevance: 0\n },\n // User agent / relevance boost\n {\n className: 'string',\n begin: /\"Mozilla\\/\\d\\.\\d \\(/,\n end: /\"/,\n illegal: /\\n/,\n relevance: 3\n },\n // Strings\n {\n className: 'string',\n begin: /\"/,\n end: /\"/,\n illegal: /\\n/,\n relevance: 0\n }\n ]\n };\n}\n\nmodule.exports = accesslog;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/*\nLanguage: ActionScript\nAuthor: Alexander Myadzel <myadzel@gmail.com>\nCategory: scripting\nAudit: 2020\n*/\n\n/** @type LanguageFn */\nfunction actionscript(hljs) {\n const IDENT_RE = /[a-zA-Z_$][a-zA-Z0-9_$]*/;\n const IDENT_FUNC_RETURN_TYPE_RE = /([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/;\n\n const AS3_REST_ARG_MODE = {\n className: 'rest_arg',\n begin: /[.]{3}/,\n end: IDENT_RE,\n relevance: 10\n };\n\n return {\n name: 'ActionScript',\n aliases: [ 'as' ],\n keywords: {\n keyword: 'as break case catch class const continue default delete do dynamic each ' +\n 'else extends final finally for function get if implements import in include ' +\n 'instanceof interface internal is namespace native new override package private ' +\n 'protected public return set static super switch this throw try typeof use var void ' +\n 'while with',\n literal: 'true false null undefined'\n },\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'class',\n beginKeywords: 'package',\n end: /\\{/,\n contains: [ hljs.TITLE_MODE ]\n },\n {\n className: 'class',\n beginKeywords: 'class interface',\n end: /\\{/,\n excludeEnd: true,\n contains: [\n { beginKeywords: 'extends implements' },\n hljs.TITLE_MODE\n ]\n },\n {\n className: 'meta',\n beginKeywords: 'import include',\n end: /;/,\n keywords: { 'meta-keyword': 'import include' }\n },\n {\n className: 'function',\n beginKeywords: 'function',\n end: /[{;]/,\n excludeEnd: true,\n illegal: /\\S/,\n contains: [\n hljs.TITLE_MODE,\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n AS3_REST_ARG_MODE\n ]\n },\n { begin: concat(/:\\s*/, IDENT_FUNC_RETURN_TYPE_RE) }\n ]\n },\n hljs.METHOD_GUARD\n ],\n illegal: /#/\n };\n}\n\nmodule.exports = actionscript;\n","/*\nLanguage: Ada\nAuthor: Lars Schulna <kartoffelbrei.mit.muskatnuss@gmail.org>\nDescription: Ada is a general-purpose programming language that has great support for saftey critical and real-time applications.\n It has been developed by the DoD and thus has been used in military and safety-critical applications (like civil aviation).\n The first version appeared in the 80s, but it's still actively developed today with\n the newest standard being Ada2012.\n*/\n\n// We try to support full Ada2012\n//\n// We highlight all appearances of types, keywords, literals (string, char, number, bool)\n// and titles (user defined function/procedure/package)\n// CSS classes are set accordingly\n//\n// Languages causing problems for language detection:\n// xml (broken by Foo : Bar type), elm (broken by Foo : Bar type), vbscript-html (broken by body keyword)\n// sql (ada default.txt has a lot of sql keywords)\n\n/** @type LanguageFn */\nfunction ada(hljs) {\n // Regular expression for Ada numeric literals.\n // stolen form the VHDL highlighter\n\n // Decimal literal:\n const INTEGER_RE = '\\\\d(_|\\\\d)*';\n const EXPONENT_RE = '[eE][-+]?' + INTEGER_RE;\n const DECIMAL_LITERAL_RE = INTEGER_RE + '(\\\\.' + INTEGER_RE + ')?' + '(' + EXPONENT_RE + ')?';\n\n // Based literal:\n const BASED_INTEGER_RE = '\\\\w+';\n const BASED_LITERAL_RE = INTEGER_RE + '#' + BASED_INTEGER_RE + '(\\\\.' + BASED_INTEGER_RE + ')?' + '#' + '(' + EXPONENT_RE + ')?';\n\n const NUMBER_RE = '\\\\b(' + BASED_LITERAL_RE + '|' + DECIMAL_LITERAL_RE + ')';\n\n // Identifier regex\n const ID_REGEX = '[A-Za-z](_?[A-Za-z0-9.])*';\n\n // bad chars, only allowed in literals\n const BAD_CHARS = `[]\\\\{\\\\}%#'\"`;\n\n // Ada doesn't have block comments, only line comments\n const COMMENTS = hljs.COMMENT('--', '$');\n\n // variable declarations of the form\n // Foo : Bar := Baz;\n // where only Bar will be highlighted\n const VAR_DECLS = {\n // TODO: These spaces are not required by the Ada syntax\n // however, I have yet to see handwritten Ada code where\n // someone does not put spaces around :\n begin: '\\\\s+:\\\\s+',\n end: '\\\\s*(:=|;|\\\\)|=>|$)',\n // endsWithParent: true,\n // returnBegin: true,\n illegal: BAD_CHARS,\n contains: [\n {\n // workaround to avoid highlighting\n // named loops and declare blocks\n beginKeywords: 'loop for declare others',\n endsParent: true\n },\n {\n // properly highlight all modifiers\n className: 'keyword',\n beginKeywords: 'not null constant access function procedure in out aliased exception'\n },\n {\n className: 'type',\n begin: ID_REGEX,\n endsParent: true,\n relevance: 0\n }\n ]\n };\n\n return {\n name: 'Ada',\n case_insensitive: true,\n keywords: {\n keyword:\n 'abort else new return abs elsif not reverse abstract end ' +\n 'accept entry select access exception of separate aliased exit or some ' +\n 'all others subtype and for out synchronized array function overriding ' +\n 'at tagged generic package task begin goto pragma terminate ' +\n 'body private then if procedure type case in protected constant interface ' +\n 'is raise use declare range delay limited record when delta loop rem while ' +\n 'digits renames with do mod requeue xor',\n literal:\n 'True False'\n },\n contains: [\n COMMENTS,\n // strings \"foobar\"\n {\n className: 'string',\n begin: /\"/,\n end: /\"/,\n contains: [{\n begin: /\"\"/,\n relevance: 0\n }]\n },\n // characters ''\n {\n // character literals always contain one char\n className: 'string',\n begin: /'.'/\n },\n {\n // number literals\n className: 'number',\n begin: NUMBER_RE,\n relevance: 0\n },\n {\n // Attributes\n className: 'symbol',\n begin: \"'\" + ID_REGEX\n },\n {\n // package definition, maybe inside generic\n className: 'title',\n begin: '(\\\\bwith\\\\s+)?(\\\\bprivate\\\\s+)?\\\\bpackage\\\\s+(\\\\bbody\\\\s+)?',\n end: '(is|$)',\n keywords: 'package body',\n excludeBegin: true,\n excludeEnd: true,\n illegal: BAD_CHARS\n },\n {\n // function/procedure declaration/definition\n // maybe inside generic\n begin: '(\\\\b(with|overriding)\\\\s+)?\\\\b(function|procedure)\\\\s+',\n end: '(\\\\bis|\\\\bwith|\\\\brenames|\\\\)\\\\s*;)',\n keywords: 'overriding function procedure with is renames return',\n // we need to re-match the 'function' keyword, so that\n // the title mode below matches only exactly once\n returnBegin: true,\n contains:\n [\n COMMENTS,\n {\n // name of the function/procedure\n className: 'title',\n begin: '(\\\\bwith\\\\s+)?\\\\b(function|procedure)\\\\s+',\n end: '(\\\\(|\\\\s+|$)',\n excludeBegin: true,\n excludeEnd: true,\n illegal: BAD_CHARS\n },\n // 'self'\n // // parameter types\n VAR_DECLS,\n {\n // return type\n className: 'type',\n begin: '\\\\breturn\\\\s+',\n end: '(\\\\s+|;|$)',\n keywords: 'return',\n excludeBegin: true,\n excludeEnd: true,\n // we are done with functions\n endsParent: true,\n illegal: BAD_CHARS\n\n }\n ]\n },\n {\n // new type declarations\n // maybe inside generic\n className: 'type',\n begin: '\\\\b(sub)?type\\\\s+',\n end: '\\\\s+',\n keywords: 'type',\n excludeBegin: true,\n illegal: BAD_CHARS\n },\n\n // see comment above the definition\n VAR_DECLS\n\n // no markup\n // relevance boosters for small snippets\n // {begin: '\\\\s*=>\\\\s*'},\n // {begin: '\\\\s*:=\\\\s*'},\n // {begin: '\\\\s+:=\\\\s+'},\n ]\n };\n}\n\nmodule.exports = ada;\n","/*\nLanguage: AngelScript\nAuthor: Melissa Geels <melissa@nimble.tools>\nCategory: scripting\nWebsite: https://www.angelcode.com/angelscript/\n*/\n\n/** @type LanguageFn */\nfunction angelscript(hljs) {\n var builtInTypeMode = {\n className: 'built_in',\n begin: '\\\\b(void|bool|int|int8|int16|int32|int64|uint|uint8|uint16|uint32|uint64|string|ref|array|double|float|auto|dictionary)'\n };\n\n var objectHandleMode = {\n className: 'symbol',\n begin: '[a-zA-Z0-9_]+@'\n };\n\n var genericMode = {\n className: 'keyword',\n begin: '<', end: '>',\n contains: [ builtInTypeMode, objectHandleMode ]\n };\n\n builtInTypeMode.contains = [ genericMode ];\n objectHandleMode.contains = [ genericMode ];\n\n return {\n name: 'AngelScript',\n aliases: ['asc'],\n\n keywords:\n 'for in|0 break continue while do|0 return if else case switch namespace is cast ' +\n 'or and xor not get|0 in inout|10 out override set|0 private public const default|0 ' +\n 'final shared external mixin|10 enum typedef funcdef this super import from interface ' +\n 'abstract|0 try catch protected explicit property',\n\n // avoid close detection with C# and JS\n illegal: '(^using\\\\s+[A-Za-z0-9_\\\\.]+;$|\\\\bfunction\\\\s*[^\\\\(])',\n\n contains: [\n { // 'strings'\n className: 'string',\n begin: '\\'', end: '\\'',\n illegal: '\\\\n',\n contains: [ hljs.BACKSLASH_ESCAPE ],\n relevance: 0\n },\n\n // \"\"\"heredoc strings\"\"\"\n {\n className: 'string',\n begin: '\"\"\"', end: '\"\"\"'\n },\n\n { // \"strings\"\n className: 'string',\n begin: '\"', end: '\"',\n illegal: '\\\\n',\n contains: [ hljs.BACKSLASH_ESCAPE ],\n relevance: 0\n },\n\n hljs.C_LINE_COMMENT_MODE, // single-line comments\n hljs.C_BLOCK_COMMENT_MODE, // comment blocks\n\n { // metadata\n className: 'string',\n begin: '^\\\\s*\\\\[', end: '\\\\]',\n },\n\n { // interface or namespace declaration\n beginKeywords: 'interface namespace', end: /\\{/,\n illegal: '[;.\\\\-]',\n contains: [\n { // interface or namespace name\n className: 'symbol',\n begin: '[a-zA-Z0-9_]+'\n }\n ]\n },\n\n { // class declaration\n beginKeywords: 'class', end: /\\{/,\n illegal: '[;.\\\\-]',\n contains: [\n { // class name\n className: 'symbol',\n begin: '[a-zA-Z0-9_]+',\n contains: [\n {\n begin: '[:,]\\\\s*',\n contains: [\n {\n className: 'symbol',\n begin: '[a-zA-Z0-9_]+'\n }\n ]\n }\n ]\n }\n ]\n },\n\n builtInTypeMode, // built-in types\n objectHandleMode, // object handles\n\n { // literals\n className: 'literal',\n begin: '\\\\b(null|true|false)'\n },\n\n { // numbers\n className: 'number',\n relevance: 0,\n begin: '(-?)(\\\\b0[xXbBoOdD][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?f?|\\\\.\\\\d+f?)([eE][-+]?\\\\d+f?)?)'\n }\n ]\n };\n}\n\nmodule.exports = angelscript;\n","/*\nLanguage: Apache config\nAuthor: Ruslan Keba <rukeba@gmail.com>\nContributors: Ivan Sagalaev <maniac@softwaremaniacs.org>\nWebsite: https://httpd.apache.org\nDescription: language definition for Apache configuration files (httpd.conf & .htaccess)\nCategory: common, config\nAudit: 2020\n*/\n\n/** @type LanguageFn */\nfunction apache(hljs) {\n const NUMBER_REF = {\n className: 'number',\n begin: /[$%]\\d+/\n };\n const NUMBER = {\n className: 'number',\n begin: /\\d+/\n };\n const IP_ADDRESS = {\n className: \"number\",\n begin: /\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?/\n };\n const PORT_NUMBER = {\n className: \"number\",\n begin: /:\\d{1,5}/\n };\n return {\n name: 'Apache config',\n aliases: [ 'apacheconf' ],\n case_insensitive: true,\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n className: 'section',\n begin: /<\\/?/,\n end: />/,\n contains: [\n IP_ADDRESS,\n PORT_NUMBER,\n // low relevance prevents us from claming XML/HTML where this rule would\n // match strings inside of XML tags\n hljs.inherit(hljs.QUOTE_STRING_MODE, { relevance: 0 })\n ]\n },\n {\n className: 'attribute',\n begin: /\\w+/,\n relevance: 0,\n // keywords aren’t needed for highlighting per se, they only boost relevance\n // for a very generally defined mode (starts with a word, ends with line-end\n keywords: {\n nomarkup:\n 'order deny allow setenv rewriterule rewriteengine rewritecond documentroot ' +\n 'sethandler errordocument loadmodule options header listen serverroot ' +\n 'servername'\n },\n starts: {\n end: /$/,\n relevance: 0,\n keywords: { literal: 'on off all deny allow' },\n contains: [\n {\n className: 'meta',\n begin: /\\s\\[/,\n end: /\\]$/\n },\n {\n className: 'variable',\n begin: /[\\$%]\\{/,\n end: /\\}/,\n contains: [\n 'self',\n NUMBER_REF\n ]\n },\n IP_ADDRESS,\n NUMBER,\n hljs.QUOTE_STRING_MODE\n ]\n }\n }\n ],\n illegal: /\\S/\n };\n}\n\nmodule.exports = apache;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] } args\n * @returns {string}\n */\nfunction either(...args) {\n const joined = '(' + args.map((x) => source(x)).join(\"|\") + \")\";\n return joined;\n}\n\n/*\nLanguage: AppleScript\nAuthors: Nathan Grigg <nathan@nathanamy.org>, Dr. Drang <drdrang@gmail.com>\nCategory: scripting\nWebsite: https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html\nAudit: 2020\n*/\n\n/** @type LanguageFn */\nfunction applescript(hljs) {\n const STRING = hljs.inherit(\n hljs.QUOTE_STRING_MODE, {\n illegal: null\n });\n const PARAMS = {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n contains: [\n 'self',\n hljs.C_NUMBER_MODE,\n STRING\n ]\n };\n const COMMENT_MODE_1 = hljs.COMMENT(/--/, /$/);\n const COMMENT_MODE_2 = hljs.COMMENT(\n /\\(\\*/,\n /\\*\\)/,\n {\n contains: [\n 'self', // allow nesting\n COMMENT_MODE_1\n ]\n }\n );\n const COMMENTS = [\n COMMENT_MODE_1,\n COMMENT_MODE_2,\n hljs.HASH_COMMENT_MODE\n ];\n\n const KEYWORD_PATTERNS = [\n /apart from/,\n /aside from/,\n /instead of/,\n /out of/,\n /greater than/,\n /isn't|(doesn't|does not) (equal|come before|come after|contain)/,\n /(greater|less) than( or equal)?/,\n /(starts?|ends|begins?) with/,\n /contained by/,\n /comes (before|after)/,\n /a (ref|reference)/,\n /POSIX (file|path)/,\n /(date|time) string/,\n /quoted form/\n ];\n\n const BUILT_IN_PATTERNS = [\n /clipboard info/,\n /the clipboard/,\n /info for/,\n /list (disks|folder)/,\n /mount volume/,\n /path to/,\n /(close|open for) access/,\n /(get|set) eof/,\n /current date/,\n /do shell script/,\n /get volume settings/,\n /random number/,\n /set volume/,\n /system attribute/,\n /system info/,\n /time to GMT/,\n /(load|run|store) script/,\n /scripting components/,\n /ASCII (character|number)/,\n /localized string/,\n /choose (application|color|file|file name|folder|from list|remote application|URL)/,\n /display (alert|dialog)/\n ];\n\n return {\n name: 'AppleScript',\n aliases: [ 'osascript' ],\n keywords: {\n keyword:\n 'about above after against and around as at back before beginning ' +\n 'behind below beneath beside between but by considering ' +\n 'contain contains continue copy div does eighth else end equal ' +\n 'equals error every exit fifth first for fourth from front ' +\n 'get given global if ignoring in into is it its last local me ' +\n 'middle mod my ninth not of on onto or over prop property put ref ' +\n 'reference repeat returning script second set seventh since ' +\n 'sixth some tell tenth that the|0 then third through thru ' +\n 'timeout times to transaction try until where while whose with ' +\n 'without',\n literal:\n 'AppleScript false linefeed return pi quote result space tab true',\n built_in:\n 'alias application boolean class constant date file integer list ' +\n 'number real record string text ' +\n 'activate beep count delay launch log offset read round ' +\n 'run say summarize write ' +\n 'character characters contents day frontmost id item length ' +\n 'month name paragraph paragraphs rest reverse running time version ' +\n 'weekday word words year'\n },\n contains: [\n STRING,\n hljs.C_NUMBER_MODE,\n {\n className: 'built_in',\n begin: concat(\n /\\b/,\n either(...BUILT_IN_PATTERNS),\n /\\b/\n )\n },\n {\n className: 'built_in',\n begin: /^\\s*return\\b/\n },\n {\n className: 'literal',\n begin:\n /\\b(text item delimiters|current application|missing value)\\b/\n },\n {\n className: 'keyword',\n begin: concat(\n /\\b/,\n either(...KEYWORD_PATTERNS),\n /\\b/\n )\n },\n {\n beginKeywords: 'on',\n illegal: /[${=;\\n]/,\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n PARAMS\n ]\n },\n ...COMMENTS\n ],\n illegal: /\\/\\/|->|=>|\\[\\[/\n };\n}\n\nmodule.exports = applescript;\n","/*\n Language: ArcGIS Arcade\n Category: scripting\n Author: John Foster <jfoster@esri.com>\n Website: https://developers.arcgis.com/arcade/\n Description: ArcGIS Arcade is an expression language used in many Esri ArcGIS products such as Pro, Online, Server, Runtime, JavaScript, and Python\n*/\n\n/** @type LanguageFn */\nfunction arcade(hljs) {\n const IDENT_RE = '[A-Za-z_][0-9A-Za-z_]*';\n const KEYWORDS = {\n keyword:\n 'if for while var new function do return void else break',\n literal:\n 'BackSlash DoubleQuote false ForwardSlash Infinity NaN NewLine null PI SingleQuote Tab TextFormatting true undefined',\n built_in:\n 'Abs Acos Angle Attachments Area AreaGeodetic Asin Atan Atan2 Average Bearing Boolean Buffer BufferGeodetic ' +\n 'Ceil Centroid Clip Console Constrain Contains Cos Count Crosses Cut Date DateAdd ' +\n 'DateDiff Day Decode DefaultValue Dictionary Difference Disjoint Distance DistanceGeodetic Distinct ' +\n 'DomainCode DomainName Equals Exp Extent Feature FeatureSet FeatureSetByAssociation FeatureSetById FeatureSetByPortalItem ' +\n 'FeatureSetByRelationshipName FeatureSetByTitle FeatureSetByUrl Filter First Floor Geometry GroupBy Guid HasKey Hour IIf IndexOf ' +\n 'Intersection Intersects IsEmpty IsNan IsSelfIntersecting Length LengthGeodetic Log Max Mean Millisecond Min Minute Month ' +\n 'MultiPartToSinglePart Multipoint NextSequenceValue Now Number OrderBy Overlaps Point Polygon ' +\n 'Polyline Portal Pow Random Relate Reverse RingIsClockWise Round Second SetGeometry Sin Sort Sqrt Stdev Sum ' +\n 'SymmetricDifference Tan Text Timestamp Today ToLocal Top Touches ToUTC TrackCurrentTime ' +\n 'TrackGeometryWindow TrackIndex TrackStartTime TrackWindow TypeOf Union UrlEncode Variance ' +\n 'Weekday When Within Year '\n };\n const SYMBOL = {\n className: 'symbol',\n begin: '\\\\$[datastore|feature|layer|map|measure|sourcefeature|sourcelayer|targetfeature|targetlayer|value|view]+'\n };\n const NUMBER = {\n className: 'number',\n variants: [\n {\n begin: '\\\\b(0[bB][01]+)'\n },\n {\n begin: '\\\\b(0[oO][0-7]+)'\n },\n {\n begin: hljs.C_NUMBER_RE\n }\n ],\n relevance: 0\n };\n const SUBST = {\n className: 'subst',\n begin: '\\\\$\\\\{',\n end: '\\\\}',\n keywords: KEYWORDS,\n contains: [] // defined later\n };\n const TEMPLATE_STRING = {\n className: 'string',\n begin: '`',\n end: '`',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n };\n SUBST.contains = [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n TEMPLATE_STRING,\n NUMBER,\n hljs.REGEXP_MODE\n ];\n const PARAMS_CONTAINS = SUBST.contains.concat([\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE\n ]);\n\n return {\n name: 'ArcGIS Arcade',\n keywords: KEYWORDS,\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n TEMPLATE_STRING,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n SYMBOL,\n NUMBER,\n { // object attr container\n begin: /[{,]\\s*/,\n relevance: 0,\n contains: [{\n begin: IDENT_RE + '\\\\s*:',\n returnBegin: true,\n relevance: 0,\n contains: [{\n className: 'attr',\n begin: IDENT_RE,\n relevance: 0\n }]\n }]\n },\n { // \"value\" container\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(return)\\\\b)\\\\s*',\n keywords: 'return',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.REGEXP_MODE,\n {\n className: 'function',\n begin: '(\\\\(.*?\\\\)|' + IDENT_RE + ')\\\\s*=>',\n returnBegin: true,\n end: '\\\\s*=>',\n contains: [{\n className: 'params',\n variants: [\n {\n begin: IDENT_RE\n },\n {\n begin: /\\(\\s*\\)/\n },\n {\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: PARAMS_CONTAINS\n }\n ]\n }]\n }\n ],\n relevance: 0\n },\n {\n className: 'function',\n beginKeywords: 'function',\n end: /\\{/,\n excludeEnd: true,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n begin: IDENT_RE\n }),\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n contains: PARAMS_CONTAINS\n }\n ],\n illegal: /\\[|%/\n },\n {\n begin: /\\$[(.]/\n }\n ],\n illegal: /#(?!!)/\n };\n}\n\nmodule.exports = arcade;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n return concat('(?=', re, ')');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction optional(re) {\n return concat('(', re, ')?');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/*\nLanguage: C++\nCategory: common, system\nWebsite: https://isocpp.org\n*/\n\n/** @type LanguageFn */\nfunction cPlusPlus(hljs) {\n // added for historic reasons because `hljs.C_LINE_COMMENT_MODE` does\n // not include such support nor can we be sure all the grammars depending\n // on it would desire this behavior\n const C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$', {\n contains: [\n {\n begin: /\\\\\\n/\n }\n ]\n });\n const DECLTYPE_AUTO_RE = 'decltype\\\\(auto\\\\)';\n const NAMESPACE_RE = '[a-zA-Z_]\\\\w*::';\n const TEMPLATE_ARGUMENT_RE = '<[^<>]+>';\n const FUNCTION_TYPE_RE = '(' +\n DECLTYPE_AUTO_RE + '|' +\n optional(NAMESPACE_RE) +\n '[a-zA-Z_]\\\\w*' + optional(TEMPLATE_ARGUMENT_RE) +\n ')';\n const CPP_PRIMITIVE_TYPES = {\n className: 'keyword',\n begin: '\\\\b[a-z\\\\d_]*_t\\\\b'\n };\n\n // https://en.cppreference.com/w/cpp/language/escape\n // \\\\ \\x \\xFF \\u2837 \\u00323747 \\374\n const CHARACTER_ESCAPES = '\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\\\S)';\n const STRINGS = {\n className: 'string',\n variants: [\n {\n begin: '(u8?|U|L)?\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: '(u8?|U|L)?\\'(' + CHARACTER_ESCAPES + \"|.)\",\n end: '\\'',\n illegal: '.'\n },\n hljs.END_SAME_AS_BEGIN({\n begin: /(?:u8?|U|L)?R\"([^()\\\\ ]{0,16})\\(/,\n end: /\\)([^()\\\\ ]{0,16})\"/\n })\n ]\n };\n\n const NUMBERS = {\n className: 'number',\n variants: [\n {\n begin: '\\\\b(0b[01\\']+)'\n },\n {\n begin: '(-?)\\\\b([\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)'\n },\n {\n begin: '(-?)(\\\\b0[xX][a-fA-F0-9\\']+|(\\\\b[\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)([eE][-+]?[\\\\d\\']+)?)'\n }\n ],\n relevance: 0\n };\n\n const PREPROCESSOR = {\n className: 'meta',\n begin: /#\\s*[a-z]+\\b/,\n end: /$/,\n keywords: {\n 'meta-keyword':\n 'if else elif endif define undef warning error line ' +\n 'pragma _Pragma ifdef ifndef include'\n },\n contains: [\n {\n begin: /\\\\\\n/,\n relevance: 0\n },\n hljs.inherit(STRINGS, {\n className: 'meta-string'\n }),\n {\n className: 'meta-string',\n begin: /<.*?>/\n },\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n\n const TITLE_MODE = {\n className: 'title',\n begin: optional(NAMESPACE_RE) + hljs.IDENT_RE,\n relevance: 0\n };\n\n const FUNCTION_TITLE = optional(NAMESPACE_RE) + hljs.IDENT_RE + '\\\\s*\\\\(';\n\n const COMMON_CPP_HINTS = [\n 'asin',\n 'atan2',\n 'atan',\n 'calloc',\n 'ceil',\n 'cosh',\n 'cos',\n 'exit',\n 'exp',\n 'fabs',\n 'floor',\n 'fmod',\n 'fprintf',\n 'fputs',\n 'free',\n 'frexp',\n 'auto_ptr',\n 'deque',\n 'list',\n 'queue',\n 'stack',\n 'vector',\n 'map',\n 'set',\n 'pair',\n 'bitset',\n 'multiset',\n 'multimap',\n 'unordered_set',\n 'fscanf',\n 'future',\n 'isalnum',\n 'isalpha',\n 'iscntrl',\n 'isdigit',\n 'isgraph',\n 'islower',\n 'isprint',\n 'ispunct',\n 'isspace',\n 'isupper',\n 'isxdigit',\n 'tolower',\n 'toupper',\n 'labs',\n 'ldexp',\n 'log10',\n 'log',\n 'malloc',\n 'realloc',\n 'memchr',\n 'memcmp',\n 'memcpy',\n 'memset',\n 'modf',\n 'pow',\n 'printf',\n 'putchar',\n 'puts',\n 'scanf',\n 'sinh',\n 'sin',\n 'snprintf',\n 'sprintf',\n 'sqrt',\n 'sscanf',\n 'strcat',\n 'strchr',\n 'strcmp',\n 'strcpy',\n 'strcspn',\n 'strlen',\n 'strncat',\n 'strncmp',\n 'strncpy',\n 'strpbrk',\n 'strrchr',\n 'strspn',\n 'strstr',\n 'tanh',\n 'tan',\n 'unordered_map',\n 'unordered_multiset',\n 'unordered_multimap',\n 'priority_queue',\n 'make_pair',\n 'array',\n 'shared_ptr',\n 'abort',\n 'terminate',\n 'abs',\n 'acos',\n 'vfprintf',\n 'vprintf',\n 'vsprintf',\n 'endl',\n 'initializer_list',\n 'unique_ptr',\n 'complex',\n 'imaginary',\n 'std',\n 'string',\n 'wstring',\n 'cin',\n 'cout',\n 'cerr',\n 'clog',\n 'stdin',\n 'stdout',\n 'stderr',\n 'stringstream',\n 'istringstream',\n 'ostringstream'\n ];\n\n const CPP_KEYWORDS = {\n keyword: 'int float while private char char8_t char16_t char32_t catch import module export virtual operator sizeof ' +\n 'dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace ' +\n 'unsigned long volatile static protected bool template mutable if public friend ' +\n 'do goto auto void enum else break extern using asm case typeid wchar_t ' +\n 'short reinterpret_cast|10 default double register explicit signed typename try this ' +\n 'switch continue inline delete alignas alignof constexpr consteval constinit decltype ' +\n 'concept co_await co_return co_yield requires ' +\n 'noexcept static_assert thread_local restrict final override ' +\n 'atomic_bool atomic_char atomic_schar ' +\n 'atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong ' +\n 'atomic_ullong new throw return ' +\n 'and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq',\n built_in: '_Bool _Complex _Imaginary',\n _relevance_hints: COMMON_CPP_HINTS,\n literal: 'true false nullptr NULL'\n };\n\n const FUNCTION_DISPATCH = {\n className: \"function.dispatch\",\n relevance: 0,\n keywords: CPP_KEYWORDS,\n begin: concat(\n /\\b/,\n /(?!decltype)/,\n /(?!if)/,\n /(?!for)/,\n /(?!while)/,\n hljs.IDENT_RE,\n lookahead(/\\s*\\(/))\n };\n\n const EXPRESSION_CONTAINS = [\n FUNCTION_DISPATCH,\n PREPROCESSOR,\n CPP_PRIMITIVE_TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n STRINGS\n ];\n\n\n const EXPRESSION_CONTEXT = {\n // This mode covers expression context where we can't expect a function\n // definition and shouldn't highlight anything that looks like one:\n // `return some()`, `else if()`, `(x*sum(1, 2))`\n variants: [\n {\n begin: /=/,\n end: /;/\n },\n {\n begin: /\\(/,\n end: /\\)/\n },\n {\n beginKeywords: 'new throw return else',\n end: /;/\n }\n ],\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([ 'self' ]),\n relevance: 0\n }\n ]),\n relevance: 0\n };\n\n const FUNCTION_DECLARATION = {\n className: 'function',\n begin: '(' + FUNCTION_TYPE_RE + '[\\\\*&\\\\s]+)+' + FUNCTION_TITLE,\n returnBegin: true,\n end: /[{;=]/,\n excludeEnd: true,\n keywords: CPP_KEYWORDS,\n illegal: /[^\\w\\s\\*&:<>.]/,\n contains: [\n { // to prevent it from being confused as the function title\n begin: DECLTYPE_AUTO_RE,\n keywords: CPP_KEYWORDS,\n relevance: 0\n },\n {\n begin: FUNCTION_TITLE,\n returnBegin: true,\n contains: [ TITLE_MODE ],\n relevance: 0\n },\n // needed because we do not have look-behind on the below rule\n // to prevent it from grabbing the final : in a :: pair\n {\n begin: /::/,\n relevance: 0\n },\n // initializers\n {\n begin: /:/,\n endsWithParent: true,\n contains: [\n STRINGS,\n NUMBERS\n ]\n },\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n relevance: 0,\n contains: [\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n CPP_PRIMITIVE_TYPES,\n // Count matching parentheses.\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n relevance: 0,\n contains: [\n 'self',\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n CPP_PRIMITIVE_TYPES\n ]\n }\n ]\n },\n CPP_PRIMITIVE_TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n PREPROCESSOR\n ]\n };\n\n return {\n name: 'C++',\n aliases: [\n 'cc',\n 'c++',\n 'h++',\n 'hpp',\n 'hh',\n 'hxx',\n 'cxx'\n ],\n keywords: CPP_KEYWORDS,\n illegal: '</',\n classNameAliases: {\n \"function.dispatch\": \"built_in\"\n },\n contains: [].concat(\n EXPRESSION_CONTEXT,\n FUNCTION_DECLARATION,\n FUNCTION_DISPATCH,\n EXPRESSION_CONTAINS,\n [\n PREPROCESSOR,\n { // containers: ie, `vector <int> rooms (9);`\n begin: '\\\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\\\s*<',\n end: '>',\n keywords: CPP_KEYWORDS,\n contains: [\n 'self',\n CPP_PRIMITIVE_TYPES\n ]\n },\n {\n begin: hljs.IDENT_RE + '::',\n keywords: CPP_KEYWORDS\n },\n {\n className: 'class',\n beginKeywords: 'enum class struct union',\n end: /[{;:<>=]/,\n contains: [\n {\n beginKeywords: \"final class struct\"\n },\n hljs.TITLE_MODE\n ]\n }\n ]),\n exports: {\n preprocessor: PREPROCESSOR,\n strings: STRINGS,\n keywords: CPP_KEYWORDS\n }\n };\n}\n\n/*\nLanguage: Arduino\nAuthor: Stefania Mellai <s.mellai@arduino.cc>\nDescription: The Arduino® Language is a superset of C++. This rules are designed to highlight the Arduino® source code. For info about language see http://www.arduino.cc.\nWebsite: https://www.arduino.cc\n*/\n\n/** @type LanguageFn */\nfunction arduino(hljs) {\n const ARDUINO_KW = {\n keyword:\n 'boolean byte word String',\n built_in:\n 'KeyboardController MouseController SoftwareSerial ' +\n 'EthernetServer EthernetClient LiquidCrystal ' +\n 'RobotControl GSMVoiceCall EthernetUDP EsploraTFT ' +\n 'HttpClient RobotMotor WiFiClient GSMScanner ' +\n 'FileSystem Scheduler GSMServer YunClient YunServer ' +\n 'IPAddress GSMClient GSMModem Keyboard Ethernet ' +\n 'Console GSMBand Esplora Stepper Process ' +\n 'WiFiUDP GSM_SMS Mailbox USBHost Firmata PImage ' +\n 'Client Server GSMPIN FileIO Bridge Serial ' +\n 'EEPROM Stream Mouse Audio Servo File Task ' +\n 'GPRS WiFi Wire TFT GSM SPI SD ',\n _:\n 'setup loop ' +\n 'runShellCommandAsynchronously analogWriteResolution ' +\n 'retrieveCallingNumber printFirmwareVersion ' +\n 'analogReadResolution sendDigitalPortPair ' +\n 'noListenOnLocalhost readJoystickButton setFirmwareVersion ' +\n 'readJoystickSwitch scrollDisplayRight getVoiceCallStatus ' +\n 'scrollDisplayLeft writeMicroseconds delayMicroseconds ' +\n 'beginTransmission getSignalStrength runAsynchronously ' +\n 'getAsynchronously listenOnLocalhost getCurrentCarrier ' +\n 'readAccelerometer messageAvailable sendDigitalPorts ' +\n 'lineFollowConfig countryNameWrite runShellCommand ' +\n 'readStringUntil rewindDirectory readTemperature ' +\n 'setClockDivider readLightSensor endTransmission ' +\n 'analogReference detachInterrupt countryNameRead ' +\n 'attachInterrupt encryptionType readBytesUntil ' +\n 'robotNameWrite readMicrophone robotNameRead cityNameWrite ' +\n 'userNameWrite readJoystickY readJoystickX mouseReleased ' +\n 'openNextFile scanNetworks noInterrupts digitalWrite ' +\n 'beginSpeaker mousePressed isActionDone mouseDragged ' +\n 'displayLogos noAutoscroll addParameter remoteNumber ' +\n 'getModifiers keyboardRead userNameRead waitContinue ' +\n 'processInput parseCommand printVersion readNetworks ' +\n 'writeMessage blinkVersion cityNameRead readMessage ' +\n 'setDataMode parsePacket isListening setBitOrder ' +\n 'beginPacket isDirectory motorsWrite drawCompass ' +\n 'digitalRead clearScreen serialEvent rightToLeft ' +\n 'setTextSize leftToRight requestFrom keyReleased ' +\n 'compassRead analogWrite interrupts WiFiServer ' +\n 'disconnect playMelody parseFloat autoscroll ' +\n 'getPINUsed setPINUsed setTimeout sendAnalog ' +\n 'readSlider analogRead beginWrite createChar ' +\n 'motorsStop keyPressed tempoWrite readButton ' +\n 'subnetMask debugPrint macAddress writeGreen ' +\n 'randomSeed attachGPRS readString sendString ' +\n 'remotePort releaseAll mouseMoved background ' +\n 'getXChange getYChange answerCall getResult ' +\n 'voiceCall endPacket constrain getSocket writeJSON ' +\n 'getButton available connected findUntil readBytes ' +\n 'exitValue readGreen writeBlue startLoop IPAddress ' +\n 'isPressed sendSysex pauseMode gatewayIP setCursor ' +\n 'getOemKey tuneWrite noDisplay loadImage switchPIN ' +\n 'onRequest onReceive changePIN playFile noBuffer ' +\n 'parseInt overflow checkPIN knobRead beginTFT ' +\n 'bitClear updateIR bitWrite position writeRGB ' +\n 'highByte writeRed setSpeed readBlue noStroke ' +\n 'remoteIP transfer shutdown hangCall beginSMS ' +\n 'endWrite attached maintain noCursor checkReg ' +\n 'checkPUK shiftOut isValid shiftIn pulseIn ' +\n 'connect println localIP pinMode getIMEI ' +\n 'display noBlink process getBand running beginSD ' +\n 'drawBMP lowByte setBand release bitRead prepare ' +\n 'pointTo readRed setMode noFill remove listen ' +\n 'stroke detach attach noTone exists buffer ' +\n 'height bitSet circle config cursor random ' +\n 'IRread setDNS endSMS getKey micros ' +\n 'millis begin print write ready flush width ' +\n 'isPIN blink clear press mkdir rmdir close ' +\n 'point yield image BSSID click delay ' +\n 'read text move peek beep rect line open ' +\n 'seek fill size turn stop home find ' +\n 'step tone sqrt RSSI SSID ' +\n 'end bit tan cos sin pow map abs max ' +\n 'min get run put',\n literal:\n 'DIGITAL_MESSAGE FIRMATA_STRING ANALOG_MESSAGE ' +\n 'REPORT_DIGITAL REPORT_ANALOG INPUT_PULLUP ' +\n 'SET_PIN_MODE INTERNAL2V56 SYSTEM_RESET LED_BUILTIN ' +\n 'INTERNAL1V1 SYSEX_START INTERNAL EXTERNAL ' +\n 'DEFAULT OUTPUT INPUT HIGH LOW'\n };\n\n const ARDUINO = cPlusPlus(hljs);\n\n const kws = /** @type {Record<string,any>} */ (ARDUINO.keywords);\n\n kws.keyword += ' ' + ARDUINO_KW.keyword;\n kws.literal += ' ' + ARDUINO_KW.literal;\n kws.built_in += ' ' + ARDUINO_KW.built_in;\n kws._ += ' ' + ARDUINO_KW._;\n\n ARDUINO.name = 'Arduino';\n ARDUINO.aliases = ['ino'];\n ARDUINO.supersetOf = \"cpp\";\n\n return ARDUINO;\n}\n\nmodule.exports = arduino;\n","/*\nLanguage: ARM Assembly\nAuthor: Dan Panzarella <alsoelp@gmail.com>\nDescription: ARM Assembly including Thumb and Thumb2 instructions\nCategory: assembler\n*/\n\n/** @type LanguageFn */\nfunction armasm(hljs) {\n // local labels: %?[FB]?[AT]?\\d{1,2}\\w+\n\n const COMMENT = {\n variants: [\n hljs.COMMENT('^[ \\\\t]*(?=#)', '$', {\n relevance: 0,\n excludeBegin: true\n }),\n hljs.COMMENT('[;@]', '$', {\n relevance: 0\n }),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n\n return {\n name: 'ARM Assembly',\n case_insensitive: true,\n aliases: ['arm'],\n keywords: {\n $pattern: '\\\\.?' + hljs.IDENT_RE,\n meta:\n // GNU preprocs\n '.2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .arm .thumb .code16 .code32 .force_thumb .thumb_func .ltorg ' +\n // ARM directives\n 'ALIAS ALIGN ARM AREA ASSERT ATTR CN CODE CODE16 CODE32 COMMON CP DATA DCB DCD DCDU DCDO DCFD DCFDU DCI DCQ DCQU DCW DCWU DN ELIF ELSE END ENDFUNC ENDIF ENDP ENTRY EQU EXPORT EXPORTAS EXTERN FIELD FILL FUNCTION GBLA GBLL GBLS GET GLOBAL IF IMPORT INCBIN INCLUDE INFO KEEP LCLA LCLL LCLS LTORG MACRO MAP MEND MEXIT NOFP OPT PRESERVE8 PROC QN READONLY RELOC REQUIRE REQUIRE8 RLIST FN ROUT SETA SETL SETS SN SPACE SUBT THUMB THUMBX TTL WHILE WEND ',\n built_in:\n 'r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 ' + // standard registers\n 'pc lr sp ip sl sb fp ' + // typical regs plus backward compatibility\n 'a1 a2 a3 a4 v1 v2 v3 v4 v5 v6 v7 v8 f0 f1 f2 f3 f4 f5 f6 f7 ' + // more regs and fp\n 'p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 ' + // coprocessor regs\n 'c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 ' + // more coproc\n 'q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 ' + // advanced SIMD NEON regs\n\n // program status registers\n 'cpsr_c cpsr_x cpsr_s cpsr_f cpsr_cx cpsr_cxs cpsr_xs cpsr_xsf cpsr_sf cpsr_cxsf ' +\n 'spsr_c spsr_x spsr_s spsr_f spsr_cx spsr_cxs spsr_xs spsr_xsf spsr_sf spsr_cxsf ' +\n\n // NEON and VFP registers\n 's0 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 ' +\n 's16 s17 s18 s19 s20 s21 s22 s23 s24 s25 s26 s27 s28 s29 s30 s31 ' +\n 'd0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 ' +\n 'd16 d17 d18 d19 d20 d21 d22 d23 d24 d25 d26 d27 d28 d29 d30 d31 ' +\n\n '{PC} {VAR} {TRUE} {FALSE} {OPT} {CONFIG} {ENDIAN} {CODESIZE} {CPU} {FPU} {ARCHITECTURE} {PCSTOREOFFSET} {ARMASM_VERSION} {INTER} {ROPI} {RWPI} {SWST} {NOSWST} . @'\n },\n contains: [\n {\n className: 'keyword',\n begin: '\\\\b(' + // mnemonics\n 'adc|' +\n '(qd?|sh?|u[qh]?)?add(8|16)?|usada?8|(q|sh?|u[qh]?)?(as|sa)x|' +\n 'and|adrl?|sbc|rs[bc]|asr|b[lx]?|blx|bxj|cbn?z|tb[bh]|bic|' +\n 'bfc|bfi|[su]bfx|bkpt|cdp2?|clz|clrex|cmp|cmn|cpsi[ed]|cps|' +\n 'setend|dbg|dmb|dsb|eor|isb|it[te]{0,3}|lsl|lsr|ror|rrx|' +\n 'ldm(([id][ab])|f[ds])?|ldr((s|ex)?[bhd])?|movt?|mvn|mra|mar|' +\n 'mul|[us]mull|smul[bwt][bt]|smu[as]d|smmul|smmla|' +\n 'mla|umlaal|smlal?([wbt][bt]|d)|mls|smlsl?[ds]|smc|svc|sev|' +\n 'mia([bt]{2}|ph)?|mrr?c2?|mcrr2?|mrs|msr|orr|orn|pkh(tb|bt)|rbit|' +\n 'rev(16|sh)?|sel|[su]sat(16)?|nop|pop|push|rfe([id][ab])?|' +\n 'stm([id][ab])?|str(ex)?[bhd]?|(qd?)?sub|(sh?|q|u[qh]?)?sub(8|16)|' +\n '[su]xt(a?h|a?b(16)?)|srs([id][ab])?|swpb?|swi|smi|tst|teq|' +\n 'wfe|wfi|yield' +\n ')' +\n '(eq|ne|cs|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|hs|lo)?' + // condition codes\n '[sptrx]?' + // legal postfixes\n '(?=\\\\s)' // followed by space\n },\n COMMENT,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: '\\'',\n end: '[^\\\\\\\\]\\'',\n relevance: 0\n },\n {\n className: 'title',\n begin: '\\\\|',\n end: '\\\\|',\n illegal: '\\\\n',\n relevance: 0\n },\n {\n className: 'number',\n variants: [\n { // hex\n begin: '[#$=]?0x[0-9a-f]+'\n },\n { // bin\n begin: '[#$=]?0b[01]+'\n },\n { // literal\n begin: '[#$=]\\\\d+'\n },\n { // bare number\n begin: '\\\\b\\\\d+'\n }\n ],\n relevance: 0\n },\n {\n className: 'symbol',\n variants: [\n { // GNU ARM syntax\n begin: '^[ \\\\t]*[a-z_\\\\.\\\\$][a-z0-9_\\\\.\\\\$]+:'\n },\n { // ARM syntax\n begin: '^[a-z_\\\\.\\\\$][a-z0-9_\\\\.\\\\$]+'\n },\n { // label reference\n begin: '[=#]\\\\w+'\n }\n ],\n relevance: 0\n }\n ]\n };\n}\n\nmodule.exports = armasm;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/*\nLanguage: AsciiDoc\nRequires: xml.js\nAuthor: Dan Allen <dan.j.allen@gmail.com>\nWebsite: http://asciidoc.org\nDescription: A semantic, text-based document format that can be exported to HTML, DocBook and other backends.\nCategory: markup\n*/\n\n/** @type LanguageFn */\nfunction asciidoc(hljs) {\n const HORIZONTAL_RULE = {\n begin: '^\\'{3,}[ \\\\t]*$',\n relevance: 10\n };\n const ESCAPED_FORMATTING = [\n // escaped constrained formatting marks (i.e., \\* \\_ or \\`)\n {\n begin: /\\\\[*_`]/\n },\n // escaped unconstrained formatting marks (i.e., \\\\** \\\\__ or \\\\``)\n // must ignore until the next formatting marks\n // this rule might not be 100% compliant with Asciidoctor 2.0 but we are entering undefined behavior territory...\n {\n begin: /\\\\\\\\\\*{2}[^\\n]*?\\*{2}/\n },\n {\n begin: /\\\\\\\\_{2}[^\\n]*_{2}/\n },\n {\n begin: /\\\\\\\\`{2}[^\\n]*`{2}/\n },\n // guard: constrained formatting mark may not be preceded by \":\", \";\" or\n // \"}\". match these so the constrained rule doesn't see them\n {\n begin: /[:;}][*_`](?![*_`])/\n }\n ];\n const STRONG = [\n // inline unconstrained strong (single line)\n {\n className: 'strong',\n begin: /\\*{2}([^\\n]+?)\\*{2}/\n },\n // inline unconstrained strong (multi-line)\n {\n className: 'strong',\n begin: concat(\n /\\*\\*/,\n /((\\*(?!\\*)|\\\\[^\\n]|[^*\\n\\\\])+\\n)+/,\n /(\\*(?!\\*)|\\\\[^\\n]|[^*\\n\\\\])*/,\n /\\*\\*/\n ),\n relevance: 0\n },\n // inline constrained strong (single line)\n {\n className: 'strong',\n // must not precede or follow a word character\n begin: /\\B\\*(\\S|\\S[^\\n]*?\\S)\\*(?!\\w)/\n },\n // inline constrained strong (multi-line)\n {\n className: 'strong',\n // must not precede or follow a word character\n begin: /\\*[^\\s]([^\\n]+\\n)+([^\\n]+)\\*/\n }\n ];\n const EMPHASIS = [\n // inline unconstrained emphasis (single line)\n {\n className: 'emphasis',\n begin: /_{2}([^\\n]+?)_{2}/\n },\n // inline unconstrained emphasis (multi-line)\n {\n className: 'emphasis',\n begin: concat(\n /__/,\n /((_(?!_)|\\\\[^\\n]|[^_\\n\\\\])+\\n)+/,\n /(_(?!_)|\\\\[^\\n]|[^_\\n\\\\])*/,\n /__/\n ),\n relevance: 0\n },\n // inline constrained emphasis (single line)\n {\n className: 'emphasis',\n // must not precede or follow a word character\n begin: /\\b_(\\S|\\S[^\\n]*?\\S)_(?!\\w)/\n },\n // inline constrained emphasis (multi-line)\n {\n className: 'emphasis',\n // must not precede or follow a word character\n begin: /_[^\\s]([^\\n]+\\n)+([^\\n]+)_/\n },\n // inline constrained emphasis using single quote (legacy)\n {\n className: 'emphasis',\n // must not follow a word character or be followed by a single quote or space\n begin: '\\\\B\\'(?![\\'\\\\s])',\n end: '(\\\\n{2}|\\')',\n // allow escaped single quote followed by word char\n contains: [{\n begin: '\\\\\\\\\\'\\\\w',\n relevance: 0\n }],\n relevance: 0\n }\n ];\n const ADMONITION = {\n className: 'symbol',\n begin: '^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\\\s+',\n relevance: 10\n };\n const BULLET_LIST = {\n className: 'bullet',\n begin: '^(\\\\*+|-+|\\\\.+|[^\\\\n]+?::)\\\\s+'\n };\n\n return {\n name: 'AsciiDoc',\n aliases: ['adoc'],\n contains: [\n // block comment\n hljs.COMMENT(\n '^/{4,}\\\\n',\n '\\\\n/{4,}$',\n // can also be done as...\n // '^/{4,}$',\n // '^/{4,}$',\n {\n relevance: 10\n }\n ),\n // line comment\n hljs.COMMENT(\n '^//',\n '$',\n {\n relevance: 0\n }\n ),\n // title\n {\n className: 'title',\n begin: '^\\\\.\\\\w.*$'\n },\n // example, admonition & sidebar blocks\n {\n begin: '^[=\\\\*]{4,}\\\\n',\n end: '\\\\n^[=\\\\*]{4,}$',\n relevance: 10\n },\n // headings\n {\n className: 'section',\n relevance: 10,\n variants: [\n {\n begin: '^(={1,6})[ \\t].+?([ \\t]\\\\1)?$'\n },\n {\n begin: '^[^\\\\[\\\\]\\\\n]+?\\\\n[=\\\\-~\\\\^\\\\+]{2,}$'\n }\n ]\n },\n // document attributes\n {\n className: 'meta',\n begin: '^:.+?:',\n end: '\\\\s',\n excludeEnd: true,\n relevance: 10\n },\n // block attributes\n {\n className: 'meta',\n begin: '^\\\\[.+?\\\\]$',\n relevance: 0\n },\n // quoteblocks\n {\n className: 'quote',\n begin: '^_{4,}\\\\n',\n end: '\\\\n_{4,}$',\n relevance: 10\n },\n // listing and literal blocks\n {\n className: 'code',\n begin: '^[\\\\-\\\\.]{4,}\\\\n',\n end: '\\\\n[\\\\-\\\\.]{4,}$',\n relevance: 10\n },\n // passthrough blocks\n {\n begin: '^\\\\+{4,}\\\\n',\n end: '\\\\n\\\\+{4,}$',\n contains: [{\n begin: '<',\n end: '>',\n subLanguage: 'xml',\n relevance: 0\n }],\n relevance: 10\n },\n\n BULLET_LIST,\n ADMONITION,\n ...ESCAPED_FORMATTING,\n ...STRONG,\n ...EMPHASIS,\n\n // inline smart quotes\n {\n className: 'string',\n variants: [\n {\n begin: \"``.+?''\"\n },\n {\n begin: \"`.+?'\"\n }\n ]\n },\n // inline unconstrained emphasis\n {\n className: 'code',\n begin: /`{2}/,\n end: /(\\n{2}|`{2})/\n },\n // inline code snippets (TODO should get same treatment as strong and emphasis)\n {\n className: 'code',\n begin: '(`.+?`|\\\\+.+?\\\\+)',\n relevance: 0\n },\n // indented literal block\n {\n className: 'code',\n begin: '^[ \\\\t]',\n end: '$',\n relevance: 0\n },\n HORIZONTAL_RULE,\n // images and links\n {\n begin: '(link:)?(http|https|ftp|file|irc|image:?):\\\\S+?\\\\[[^[]*?\\\\]',\n returnBegin: true,\n contains: [\n {\n begin: '(link|image:?):',\n relevance: 0\n },\n {\n className: 'link',\n begin: '\\\\w',\n end: '[^\\\\[]+',\n relevance: 0\n },\n {\n className: 'string',\n begin: '\\\\[',\n end: '\\\\]',\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0\n }\n ],\n relevance: 10\n }\n ]\n };\n}\n\nmodule.exports = asciidoc;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/*\nLanguage: AspectJ\nAuthor: Hakan Ozler <ozler.hakan@gmail.com>\nWebsite: https://www.eclipse.org/aspectj/\nDescription: Syntax Highlighting for the AspectJ Language which is a general-purpose aspect-oriented extension to the Java programming language.\nAudit: 2020\n*/\n\n/** @type LanguageFn */\nfunction aspectj(hljs) {\n const KEYWORDS =\n 'false synchronized int abstract float private char boolean static null if const ' +\n 'for true while long throw strictfp finally protected import native final return void ' +\n 'enum else extends implements break transient new catch instanceof byte super volatile case ' +\n 'assert short package default double public try this switch continue throws privileged ' +\n 'aspectOf adviceexecution proceed cflowbelow cflow initialization preinitialization ' +\n 'staticinitialization withincode target within execution getWithinTypeName handler ' +\n 'thisJoinPoint thisJoinPointStaticPart thisEnclosingJoinPointStaticPart declare parents ' +\n 'warning error soft precedence thisAspectInstance';\n const SHORTKEYS = 'get set args call';\n\n return {\n name: 'AspectJ',\n keywords: KEYWORDS,\n illegal: /<\\/|#/,\n contains: [\n hljs.COMMENT(\n /\\/\\*\\*/,\n /\\*\\//,\n {\n relevance: 0,\n contains: [\n {\n // eat up @'s in emails to prevent them to be recognized as doctags\n begin: /\\w+@/,\n relevance: 0\n },\n {\n className: 'doctag',\n begin: /@[A-Za-z]+/\n }\n ]\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'class',\n beginKeywords: 'aspect',\n end: /[{;=]/,\n excludeEnd: true,\n illegal: /[:;\"\\[\\]]/,\n contains: [\n {\n beginKeywords: 'extends implements pertypewithin perthis pertarget percflowbelow percflow issingleton'\n },\n hljs.UNDERSCORE_TITLE_MODE,\n {\n begin: /\\([^\\)]*/,\n end: /[)]+/,\n keywords: KEYWORDS + ' ' + SHORTKEYS,\n excludeEnd: false\n }\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class interface',\n end: /[{;=]/,\n excludeEnd: true,\n relevance: 0,\n keywords: 'class interface',\n illegal: /[:\"\\[\\]]/,\n contains: [\n {\n beginKeywords: 'extends implements'\n },\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n // AspectJ Constructs\n beginKeywords: 'pointcut after before around throwing returning',\n end: /[)]/,\n excludeEnd: false,\n illegal: /[\"\\[\\]]/,\n contains: [\n {\n begin: concat(hljs.UNDERSCORE_IDENT_RE, /\\s*\\(/),\n returnBegin: true,\n contains: [ hljs.UNDERSCORE_TITLE_MODE ]\n }\n ]\n },\n {\n begin: /[:]/,\n returnBegin: true,\n end: /[{;]/,\n relevance: 0,\n excludeEnd: false,\n keywords: KEYWORDS,\n illegal: /[\"\\[\\]]/,\n contains: [\n {\n begin: concat(hljs.UNDERSCORE_IDENT_RE, /\\s*\\(/),\n keywords: KEYWORDS + ' ' + SHORTKEYS,\n relevance: 0\n },\n hljs.QUOTE_STRING_MODE\n ]\n },\n {\n // this prevents 'new Name(...), or throw ...' from being recognized as a function definition\n beginKeywords: 'new throw',\n relevance: 0\n },\n {\n // the function class is a bit different for AspectJ compared to the Java language\n className: 'function',\n begin: /\\w+ +\\w+(\\.\\w+)?\\s*\\([^\\)]*\\)\\s*((throws)[\\w\\s,]+)?[\\{;]/,\n returnBegin: true,\n end: /[{;=]/,\n keywords: KEYWORDS,\n excludeEnd: true,\n contains: [\n {\n begin: concat(hljs.UNDERSCORE_IDENT_RE, /\\s*\\(/),\n returnBegin: true,\n relevance: 0,\n contains: [ hljs.UNDERSCORE_TITLE_MODE ]\n },\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n relevance: 0,\n keywords: KEYWORDS,\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n hljs.C_NUMBER_MODE,\n {\n // annotation is also used in this language\n className: 'meta',\n begin: /@[A-Za-z]+/\n }\n ]\n };\n}\n\nmodule.exports = aspectj;\n","/*\nLanguage: AutoHotkey\nAuthor: Seongwon Lee <dlimpid@gmail.com>\nDescription: AutoHotkey language definition\nCategory: scripting\n*/\n\n/** @type LanguageFn */\nfunction autohotkey(hljs) {\n const BACKTICK_ESCAPE = {\n begin: '`[\\\\s\\\\S]'\n };\n\n return {\n name: 'AutoHotkey',\n case_insensitive: true,\n aliases: ['ahk'],\n keywords: {\n keyword: 'Break Continue Critical Exit ExitApp Gosub Goto New OnExit Pause return SetBatchLines SetTimer Suspend Thread Throw Until ahk_id ahk_class ahk_pid ahk_exe ahk_group',\n literal: 'true false NOT AND OR',\n built_in: 'ComSpec Clipboard ClipboardAll ErrorLevel'\n },\n contains: [\n BACKTICK_ESCAPE,\n hljs.inherit(hljs.QUOTE_STRING_MODE, {\n contains: [BACKTICK_ESCAPE]\n }),\n hljs.COMMENT(';', '$', {\n relevance: 0\n }),\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'number',\n begin: hljs.NUMBER_RE,\n relevance: 0\n },\n {\n // subst would be the most accurate however fails the point of\n // highlighting. variable is comparably the most accurate that actually\n // has some effect\n className: 'variable',\n begin: '%[a-zA-Z0-9#_$@]+%'\n },\n {\n className: 'built_in',\n begin: '^\\\\s*\\\\w+\\\\s*(,|%)'\n // I don't really know if this is totally relevant\n },\n {\n // symbol would be most accurate however is highlighted just like\n // built_in and that makes up a lot of AutoHotkey code meaning that it\n // would fail to highlight anything\n className: 'title',\n variants: [\n {\n begin: '^[^\\\\n\";]+::(?!=)'\n },\n {\n begin: '^[^\\\\n\";]+:(?!=)',\n // zero relevance as it catches a lot of things\n // followed by a single ':' in many languages\n relevance: 0\n }\n ]\n },\n {\n className: 'meta',\n begin: '^\\\\s*#\\\\w+',\n end: '$',\n relevance: 0\n },\n {\n className: 'built_in',\n begin: 'A_[a-zA-Z0-9]+'\n },\n {\n // consecutive commas, not for highlighting but just for relevance\n begin: ',\\\\s*,'\n }\n ]\n };\n}\n\nmodule.exports = autohotkey;\n","/*\nLanguage: AutoIt\nAuthor: Manh Tuan <junookyo@gmail.com>\nDescription: AutoIt language definition\nCategory: scripting\n*/\n\n/** @type LanguageFn */\nfunction autoit(hljs) {\n const KEYWORDS = 'ByRef Case Const ContinueCase ContinueLoop ' +\n 'Dim Do Else ElseIf EndFunc EndIf EndSelect ' +\n 'EndSwitch EndWith Enum Exit ExitLoop For Func ' +\n 'Global If In Local Next ReDim Return Select Static ' +\n 'Step Switch Then To Until Volatile WEnd While With';\n\n const DIRECTIVES = [\n \"EndRegion\",\n \"forcedef\",\n \"forceref\",\n \"ignorefunc\",\n \"include\",\n \"include-once\",\n \"NoTrayIcon\",\n \"OnAutoItStartRegister\",\n \"pragma\",\n \"Region\",\n \"RequireAdmin\",\n \"Tidy_Off\",\n \"Tidy_On\",\n \"Tidy_Parameters\"\n ];\n \n const LITERAL = 'True False And Null Not Or Default';\n\n const BUILT_IN\n = 'Abs ACos AdlibRegister AdlibUnRegister Asc AscW ASin Assign ATan AutoItSetOption AutoItWinGetTitle AutoItWinSetTitle Beep Binary BinaryLen BinaryMid BinaryToString BitAND BitNOT BitOR BitRotate BitShift BitXOR BlockInput Break Call CDTray Ceiling Chr ChrW ClipGet ClipPut ConsoleRead ConsoleWrite ConsoleWriteError ControlClick ControlCommand ControlDisable ControlEnable ControlFocus ControlGetFocus ControlGetHandle ControlGetPos ControlGetText ControlHide ControlListView ControlMove ControlSend ControlSetText ControlShow ControlTreeView Cos Dec DirCopy DirCreate DirGetSize DirMove DirRemove DllCall DllCallAddress DllCallbackFree DllCallbackGetPtr DllCallbackRegister DllClose DllOpen DllStructCreate DllStructGetData DllStructGetPtr DllStructGetSize DllStructSetData DriveGetDrive DriveGetFileSystem DriveGetLabel DriveGetSerial DriveGetType DriveMapAdd DriveMapDel DriveMapGet DriveSetLabel DriveSpaceFree DriveSpaceTotal DriveStatus EnvGet EnvSet EnvUpdate Eval Execute Exp FileChangeDir FileClose FileCopy FileCreateNTFSLink FileCreateShortcut FileDelete FileExists FileFindFirstFile FileFindNextFile FileFlush FileGetAttrib FileGetEncoding FileGetLongName FileGetPos FileGetShortcut FileGetShortName FileGetSize FileGetTime FileGetVersion FileInstall FileMove FileOpen FileOpenDialog FileRead FileReadLine FileReadToArray FileRecycle FileRecycleEmpty FileSaveDialog FileSelectFolder FileSetAttrib FileSetEnd FileSetPos FileSetTime FileWrite FileWriteLine Floor FtpSetProxy FuncName GUICreate GUICtrlCreateAvi GUICtrlCreateButton GUICtrlCreateCheckbox GUICtrlCreateCombo GUICtrlCreateContextMenu GUICtrlCreateDate GUICtrlCreateDummy GUICtrlCreateEdit GUICtrlCreateGraphic GUICtrlCreateGroup GUICtrlCreateIcon GUICtrlCreateInput GUICtrlCreateLabel GUICtrlCreateList GUICtrlCreateListView GUICtrlCreateListViewItem GUICtrlCreateMenu GUICtrlCreateMenuItem GUICtrlCreateMonthCal GUICtrlCreateObj GUICtrlCreatePic GUICtrlCreateProgress GUICtrlCreateRadio GUICtrlCreateSlider GUICtrlCreateTab GUICtrlCreateTabItem GUICtrlCreateTreeView GUICtrlCreateTreeViewItem GUICtrlCreateUpdown GUICtrlDelete GUICtrlGetHandle GUICtrlGetState GUICtrlRead GUICtrlRecvMsg GUICtrlRegisterListViewSort GUICtrlSendMsg GUICtrlSendToDummy GUICtrlSetBkColor GUICtrlSetColor GUICtrlSetCursor GUICtrlSetData GUICtrlSetDefBkColor GUICtrlSetDefColor GUICtrlSetFont GUICtrlSetGraphic GUICtrlSetImage GUICtrlSetLimit GUICtrlSetOnEvent GUICtrlSetPos GUICtrlSetResizing GUICtrlSetState GUICtrlSetStyle GUICtrlSetTip GUIDelete GUIGetCursorInfo GUIGetMsg GUIGetStyle GUIRegisterMsg GUISetAccelerators GUISetBkColor GUISetCoord GUISetCursor GUISetFont GUISetHelp GUISetIcon GUISetOnEvent GUISetState GUISetStyle GUIStartGroup GUISwitch Hex HotKeySet HttpSetProxy HttpSetUserAgent HWnd InetClose InetGet InetGetInfo InetGetSize InetRead IniDelete IniRead IniReadSection IniReadSectionNames IniRenameSection IniWrite IniWriteSection InputBox Int IsAdmin IsArray IsBinary IsBool IsDeclared IsDllStruct IsFloat IsFunc IsHWnd IsInt IsKeyword IsNumber IsObj IsPtr IsString Log MemGetStats Mod MouseClick MouseClickDrag MouseDown MouseGetCursor MouseGetPos MouseMove MouseUp MouseWheel MsgBox Number ObjCreate ObjCreateInterface ObjEvent ObjGet ObjName OnAutoItExitRegister OnAutoItExitUnRegister Ping PixelChecksum PixelGetColor PixelSearch ProcessClose ProcessExists ProcessGetStats ProcessList ProcessSetPriority ProcessWait ProcessWaitClose ProgressOff ProgressOn ProgressSet Ptr Random RegDelete RegEnumKey RegEnumVal RegRead RegWrite Round Run RunAs RunAsWait RunWait Send SendKeepActive SetError SetExtended ShellExecute ShellExecuteWait Shutdown Sin Sleep SoundPlay SoundSetWaveVolume SplashImageOn SplashOff SplashTextOn Sqrt SRandom StatusbarGetText StderrRead StdinWrite StdioClose StdoutRead String StringAddCR StringCompare StringFormat StringFromASCIIArray StringInStr StringIsAlNum StringIsAlpha StringIsASCII StringIsDigit StringIsFloat StringIsInt StringIsLower StringIsSpace StringIsUpper StringIsXDigit StringLeft StringLen StringLower StringMid StringRegExp StringRegExpReplace StringReplace StringReverse StringRight StringSplit StringStripCR StringStripWS StringToASCIIArray StringToBinary StringTrimLeft StringTrimRight StringUpper Tan TCPAccept TCPCloseSocket TCPConnect TCPListen TCPNameToIP TCPRecv TCPSend TCPShutdown, UDPShutdown TCPStartup, UDPStartup TimerDiff TimerInit ToolTip TrayCreateItem TrayCreateMenu TrayGetMsg TrayItemDelete TrayItemGetHandle TrayItemGetState TrayItemGetText TrayItemSetOnEvent TrayItemSetState TrayItemSetText TraySetClick TraySetIcon TraySetOnEvent TraySetPauseIcon TraySetState TraySetToolTip TrayTip UBound UDPBind UDPCloseSocket UDPOpen UDPRecv UDPSend VarGetType WinActivate WinActive WinClose WinExists WinFlash WinGetCaretPos WinGetClassList WinGetClientSize WinGetHandle WinGetPos WinGetProcess WinGetState WinGetText WinGetTitle WinKill WinList WinMenuSelectItem WinMinimizeAll WinMinimizeAllUndo WinMove WinSetOnTop WinSetState WinSetTitle WinSetTrans WinWait WinWaitActive WinWaitClose WinWaitNotActive';\n\n const COMMENT = {\n variants: [\n hljs.COMMENT(';', '$', {\n relevance: 0\n }),\n hljs.COMMENT('#cs', '#ce'),\n hljs.COMMENT('#comments-start', '#comments-end')\n ]\n };\n\n const VARIABLE = {\n begin: '\\\\$[A-z0-9_]+'\n };\n\n const STRING = {\n className: 'string',\n variants: [\n {\n begin: /\"/,\n end: /\"/,\n contains: [{\n begin: /\"\"/,\n relevance: 0\n }]\n },\n {\n begin: /'/,\n end: /'/,\n contains: [{\n begin: /''/,\n relevance: 0\n }]\n }\n ]\n };\n\n const NUMBER = {\n variants: [\n hljs.BINARY_NUMBER_MODE,\n hljs.C_NUMBER_MODE\n ]\n };\n\n const PREPROCESSOR = {\n className: 'meta',\n begin: '#',\n end: '$',\n keywords: {\n 'meta-keyword': DIRECTIVES\n },\n contains: [\n {\n begin: /\\\\\\n/,\n relevance: 0\n },\n {\n beginKeywords: 'include',\n keywords: {\n 'meta-keyword': 'include'\n },\n end: '$',\n contains: [\n STRING,\n {\n className: 'meta-string',\n variants: [\n {\n begin: '<',\n end: '>'\n },\n {\n begin: /\"/,\n end: /\"/,\n contains: [{\n begin: /\"\"/,\n relevance: 0\n }]\n },\n {\n begin: /'/,\n end: /'/,\n contains: [{\n begin: /''/,\n relevance: 0\n }]\n }\n ]\n }\n ]\n },\n STRING,\n COMMENT\n ]\n };\n\n const CONSTANT = {\n className: 'symbol',\n // begin: '@',\n // end: '$',\n // keywords: 'AppDataCommonDir AppDataDir AutoItExe AutoItPID AutoItVersion AutoItX64 COM_EventObj CommonFilesDir Compiled ComputerName ComSpec CPUArch CR CRLF DesktopCommonDir DesktopDepth DesktopDir DesktopHeight DesktopRefresh DesktopWidth DocumentsCommonDir error exitCode exitMethod extended FavoritesCommonDir FavoritesDir GUI_CtrlHandle GUI_CtrlId GUI_DragFile GUI_DragId GUI_DropId GUI_WinHandle HomeDrive HomePath HomeShare HotKeyPressed HOUR IPAddress1 IPAddress2 IPAddress3 IPAddress4 KBLayout LF LocalAppDataDir LogonDNSDomain LogonDomain LogonServer MDAY MIN MON MSEC MUILang MyDocumentsDir NumParams OSArch OSBuild OSLang OSServicePack OSType OSVersion ProgramFilesDir ProgramsCommonDir ProgramsDir ScriptDir ScriptFullPath ScriptLineNumber ScriptName SEC StartMenuCommonDir StartMenuDir StartupCommonDir StartupDir SW_DISABLE SW_ENABLE SW_HIDE SW_LOCK SW_MAXIMIZE SW_MINIMIZE SW_RESTORE SW_SHOW SW_SHOWDEFAULT SW_SHOWMAXIMIZED SW_SHOWMINIMIZED SW_SHOWMINNOACTIVE SW_SHOWNA SW_SHOWNOACTIVATE SW_SHOWNORMAL SW_UNLOCK SystemDir TAB TempDir TRAY_ID TrayIconFlashing TrayIconVisible UserName UserProfileDir WDAY WindowsDir WorkingDir YDAY YEAR',\n // relevance: 5\n begin: '@[A-z0-9_]+'\n };\n\n const FUNCTION = {\n className: 'function',\n beginKeywords: 'Func',\n end: '$',\n illegal: '\\\\$|\\\\[|%',\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n {\n className: 'params',\n begin: '\\\\(',\n end: '\\\\)',\n contains: [\n VARIABLE,\n STRING,\n NUMBER\n ]\n }\n ]\n };\n\n return {\n name: 'AutoIt',\n case_insensitive: true,\n illegal: /\\/\\*/,\n keywords: {\n keyword: KEYWORDS,\n built_in: BUILT_IN,\n literal: LITERAL\n },\n contains: [\n COMMENT,\n VARIABLE,\n STRING,\n NUMBER,\n PREPROCESSOR,\n CONSTANT,\n FUNCTION\n ]\n };\n}\n\nmodule.exports = autoit;\n","/*\nLanguage: AVR Assembly\nAuthor: Vladimir Ermakov <vooon341@gmail.com>\nCategory: assembler\nWebsite: https://www.microchip.com/webdoc/avrassembler/avrassembler.wb_instruction_list.html\n*/\n\n/** @type LanguageFn */\nfunction avrasm(hljs) {\n return {\n name: 'AVR Assembly',\n case_insensitive: true,\n keywords: {\n $pattern: '\\\\.?' + hljs.IDENT_RE,\n keyword:\n /* mnemonic */\n 'adc add adiw and andi asr bclr bld brbc brbs brcc brcs break breq brge brhc brhs ' +\n 'brid brie brlo brlt brmi brne brpl brsh brtc brts brvc brvs bset bst call cbi cbr ' +\n 'clc clh cli cln clr cls clt clv clz com cp cpc cpi cpse dec eicall eijmp elpm eor ' +\n 'fmul fmuls fmulsu icall ijmp in inc jmp ld ldd ldi lds lpm lsl lsr mov movw mul ' +\n 'muls mulsu neg nop or ori out pop push rcall ret reti rjmp rol ror sbc sbr sbrc sbrs ' +\n 'sec seh sbi sbci sbic sbis sbiw sei sen ser ses set sev sez sleep spm st std sts sub ' +\n 'subi swap tst wdr',\n built_in:\n /* general purpose registers */\n 'r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16 r17 r18 r19 r20 r21 r22 ' +\n 'r23 r24 r25 r26 r27 r28 r29 r30 r31 x|0 xh xl y|0 yh yl z|0 zh zl ' +\n /* IO Registers (ATMega128) */\n 'ucsr1c udr1 ucsr1a ucsr1b ubrr1l ubrr1h ucsr0c ubrr0h tccr3c tccr3a tccr3b tcnt3h ' +\n 'tcnt3l ocr3ah ocr3al ocr3bh ocr3bl ocr3ch ocr3cl icr3h icr3l etimsk etifr tccr1c ' +\n 'ocr1ch ocr1cl twcr twdr twar twsr twbr osccal xmcra xmcrb eicra spmcsr spmcr portg ' +\n 'ddrg ping portf ddrf sreg sph spl xdiv rampz eicrb eimsk gimsk gicr eifr gifr timsk ' +\n 'tifr mcucr mcucsr tccr0 tcnt0 ocr0 assr tccr1a tccr1b tcnt1h tcnt1l ocr1ah ocr1al ' +\n 'ocr1bh ocr1bl icr1h icr1l tccr2 tcnt2 ocr2 ocdr wdtcr sfior eearh eearl eedr eecr ' +\n 'porta ddra pina portb ddrb pinb portc ddrc pinc portd ddrd pind spdr spsr spcr udr0 ' +\n 'ucsr0a ucsr0b ubrr0l acsr admux adcsr adch adcl porte ddre pine pinf',\n meta:\n '.byte .cseg .db .def .device .dseg .dw .endmacro .equ .eseg .exit .include .list ' +\n '.listmac .macro .nolist .org .set'\n },\n contains: [\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.COMMENT(\n ';',\n '$',\n {\n relevance: 0\n }\n ),\n hljs.C_NUMBER_MODE, // 0x..., decimal, float\n hljs.BINARY_NUMBER_MODE, // 0b...\n {\n className: 'number',\n begin: '\\\\b(\\\\$[a-zA-Z0-9]+|0o[0-7]+)' // $..., 0o...\n },\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: '\\'',\n end: '[^\\\\\\\\]\\'',\n illegal: '[^\\\\\\\\][^\\']'\n },\n {\n className: 'symbol',\n begin: '^[A-Za-z0-9_.$]+:'\n },\n {\n className: 'meta',\n begin: '#',\n end: '$'\n },\n { // substitution within a macro\n className: 'subst',\n begin: '@[0-9]+'\n }\n ]\n };\n}\n\nmodule.exports = avrasm;\n","/*\nLanguage: Awk\nAuthor: Matthew Daly <matthewbdaly@gmail.com>\nWebsite: https://www.gnu.org/software/gawk/manual/gawk.html\nDescription: language definition for Awk scripts\n*/\n\n/** @type LanguageFn */\nfunction awk(hljs) {\n const VARIABLE = {\n className: 'variable',\n variants: [\n {\n begin: /\\$[\\w\\d#@][\\w\\d_]*/\n },\n {\n begin: /\\$\\{(.*?)\\}/\n }\n ]\n };\n const KEYWORDS = 'BEGIN END if else while do for in break continue delete next nextfile function func exit|10';\n const STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE],\n variants: [\n {\n begin: /(u|b)?r?'''/,\n end: /'''/,\n relevance: 10\n },\n {\n begin: /(u|b)?r?\"\"\"/,\n end: /\"\"\"/,\n relevance: 10\n },\n {\n begin: /(u|r|ur)'/,\n end: /'/,\n relevance: 10\n },\n {\n begin: /(u|r|ur)\"/,\n end: /\"/,\n relevance: 10\n },\n {\n begin: /(b|br)'/,\n end: /'/\n },\n {\n begin: /(b|br)\"/,\n end: /\"/\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n };\n return {\n name: 'Awk',\n keywords: {\n keyword: KEYWORDS\n },\n contains: [\n VARIABLE,\n STRING,\n hljs.REGEXP_MODE,\n hljs.HASH_COMMENT_MODE,\n hljs.NUMBER_MODE\n ]\n };\n}\n\nmodule.exports = awk;\n","/*\nLanguage: Microsoft X++\nDescription: X++ is a language used in Microsoft Dynamics 365, Dynamics AX, and Axapta.\nAuthor: Dmitri Roudakov <dmitri@roudakov.ru>\nWebsite: https://dynamics.microsoft.com/en-us/ax-overview/\nCategory: enterprise\n*/\n\n/** @type LanguageFn */\nfunction axapta(hljs) {\n const BUILT_IN_KEYWORDS = [\n 'anytype',\n 'boolean',\n 'byte',\n 'char',\n 'container',\n 'date',\n 'double',\n 'enum',\n 'guid',\n 'int',\n 'int64',\n 'long',\n 'real',\n 'short',\n 'str',\n 'utcdatetime',\n 'var'\n ];\n\n const LITERAL_KEYWORDS = [\n 'default',\n 'false',\n 'null',\n 'true'\n ];\n\n const NORMAL_KEYWORDS = [\n 'abstract',\n 'as',\n 'asc',\n 'avg',\n 'break',\n 'breakpoint',\n 'by',\n 'byref',\n 'case',\n 'catch',\n 'changecompany',\n 'class',\n 'client',\n 'client',\n 'common',\n 'const',\n 'continue',\n 'count',\n 'crosscompany',\n 'delegate',\n 'delete_from',\n 'desc',\n 'display',\n 'div',\n 'do',\n 'edit',\n 'else',\n 'eventhandler',\n 'exists',\n 'extends',\n 'final',\n 'finally',\n 'firstfast',\n 'firstonly',\n 'firstonly1',\n 'firstonly10',\n 'firstonly100',\n 'firstonly1000',\n 'flush',\n 'for',\n 'forceliterals',\n 'forcenestedloop',\n 'forceplaceholders',\n 'forceselectorder',\n 'forupdate',\n 'from',\n 'generateonly',\n 'group',\n 'hint',\n 'if',\n 'implements',\n 'in',\n 'index',\n 'insert_recordset',\n 'interface',\n 'internal',\n 'is',\n 'join',\n 'like',\n 'maxof',\n 'minof',\n 'mod',\n 'namespace',\n 'new',\n 'next',\n 'nofetch',\n 'notexists',\n 'optimisticlock',\n 'order',\n 'outer',\n 'pessimisticlock',\n 'print',\n 'private',\n 'protected',\n 'public',\n 'readonly',\n 'repeatableread',\n 'retry',\n 'return',\n 'reverse',\n 'select',\n 'server',\n 'setting',\n 'static',\n 'sum',\n 'super',\n 'switch',\n 'this',\n 'throw',\n 'try',\n 'ttsabort',\n 'ttsbegin',\n 'ttscommit',\n 'unchecked',\n 'update_recordset',\n 'using',\n 'validtimestate',\n 'void',\n 'where',\n 'while'\n ];\n\n const KEYWORDS = {\n keyword: NORMAL_KEYWORDS,\n built_in: BUILT_IN_KEYWORDS,\n literal: LITERAL_KEYWORDS\n };\n\n return {\n name: 'X++',\n aliases: ['x++'],\n keywords: KEYWORDS,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'meta',\n begin: '#',\n end: '$'\n },\n {\n className: 'class',\n beginKeywords: 'class interface',\n end: /\\{/,\n excludeEnd: true,\n illegal: ':',\n contains: [\n {\n beginKeywords: 'extends implements'\n },\n hljs.UNDERSCORE_TITLE_MODE\n ]\n }\n ]\n };\n}\n\nmodule.exports = axapta;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/*\nLanguage: Bash\nAuthor: vah <vahtenberg@gmail.com>\nContributrors: Benjamin Pannell <contact@sierrasoftworks.com>\nWebsite: https://www.gnu.org/software/bash/\nCategory: common\n*/\n\n/** @type LanguageFn */\nfunction bash(hljs) {\n const VAR = {};\n const BRACED_VAR = {\n begin: /\\$\\{/,\n end:/\\}/,\n contains: [\n \"self\",\n {\n begin: /:-/,\n contains: [ VAR ]\n } // default values\n ]\n };\n Object.assign(VAR,{\n className: 'variable',\n variants: [\n {begin: concat(/\\$[\\w\\d#@][\\w\\d_]*/,\n // negative look-ahead tries to avoid matching patterns that are not\n // Perl at all like $ident$, @ident@, etc.\n `(?![\\\\w\\\\d])(?![$])`) },\n BRACED_VAR\n ]\n });\n\n const SUBST = {\n className: 'subst',\n begin: /\\$\\(/, end: /\\)/,\n contains: [hljs.BACKSLASH_ESCAPE]\n };\n const HERE_DOC = {\n begin: /<<-?\\s*(?=\\w+)/,\n starts: {\n contains: [\n hljs.END_SAME_AS_BEGIN({\n begin: /(\\w+)/,\n end: /(\\w+)/,\n className: 'string'\n })\n ]\n }\n };\n const QUOTE_STRING = {\n className: 'string',\n begin: /\"/, end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VAR,\n SUBST\n ]\n };\n SUBST.contains.push(QUOTE_STRING);\n const ESCAPED_QUOTE = {\n className: '',\n begin: /\\\\\"/\n\n };\n const APOS_STRING = {\n className: 'string',\n begin: /'/, end: /'/\n };\n const ARITHMETIC = {\n begin: /\\$\\(\\(/,\n end: /\\)\\)/,\n contains: [\n { begin: /\\d+#[0-9a-f]+/, className: \"number\" },\n hljs.NUMBER_MODE,\n VAR\n ]\n };\n const SH_LIKE_SHELLS = [\n \"fish\",\n \"bash\",\n \"zsh\",\n \"sh\",\n \"csh\",\n \"ksh\",\n \"tcsh\",\n \"dash\",\n \"scsh\",\n ];\n const KNOWN_SHEBANG = hljs.SHEBANG({\n binary: `(${SH_LIKE_SHELLS.join(\"|\")})`,\n relevance: 10\n });\n const FUNCTION = {\n className: 'function',\n begin: /\\w[\\w\\d_]*\\s*\\(\\s*\\)\\s*\\{/,\n returnBegin: true,\n contains: [hljs.inherit(hljs.TITLE_MODE, {begin: /\\w[\\w\\d_]*/})],\n relevance: 0\n };\n\n return {\n name: 'Bash',\n aliases: ['sh', 'zsh'],\n keywords: {\n $pattern: /\\b[a-z._-]+\\b/,\n keyword:\n 'if then else elif fi for while in do done case esac function',\n literal:\n 'true false',\n built_in:\n // Shell built-ins\n // http://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n 'break cd continue eval exec exit export getopts hash pwd readonly return shift test times ' +\n 'trap umask unset ' +\n // Bash built-ins\n 'alias bind builtin caller command declare echo enable help let local logout mapfile printf ' +\n 'read readarray source type typeset ulimit unalias ' +\n // Shell modifiers\n 'set shopt ' +\n // Zsh built-ins\n 'autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles ' +\n 'compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate ' +\n 'fc fg float functions getcap getln history integer jobs kill limit log noglob popd print ' +\n 'pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit ' +\n 'unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof ' +\n 'zpty zregexparse zsocket zstyle ztcp'\n },\n contains: [\n KNOWN_SHEBANG, // to catch known shells and boost relevancy\n hljs.SHEBANG(), // to catch unknown shells but still highlight the shebang\n FUNCTION,\n ARITHMETIC,\n hljs.HASH_COMMENT_MODE,\n HERE_DOC,\n QUOTE_STRING,\n ESCAPED_QUOTE,\n APOS_STRING,\n VAR\n ]\n };\n}\n\nmodule.exports = bash;\n","/*\nLanguage: BASIC\nAuthor: Raphaël Assénat <raph@raphnet.net>\nDescription: Based on the BASIC reference from the Tandy 1000 guide\nWebsite: https://en.wikipedia.org/wiki/Tandy_1000\n*/\n\n/** @type LanguageFn */\nfunction basic(hljs) {\n return {\n name: 'BASIC',\n case_insensitive: true,\n illegal: '^\\.',\n // Support explicitly typed variables that end with $%! or #.\n keywords: {\n $pattern: '[a-zA-Z][a-zA-Z0-9_$%!#]*',\n keyword:\n 'ABS ASC AND ATN AUTO|0 BEEP BLOAD|10 BSAVE|10 CALL CALLS CDBL CHAIN CHDIR CHR$|10 CINT CIRCLE ' +\n 'CLEAR CLOSE CLS COLOR COM COMMON CONT COS CSNG CSRLIN CVD CVI CVS DATA DATE$ ' +\n 'DEFDBL DEFINT DEFSNG DEFSTR DEF|0 SEG USR DELETE DIM DRAW EDIT END ENVIRON ENVIRON$ ' +\n 'EOF EQV ERASE ERDEV ERDEV$ ERL ERR ERROR EXP FIELD FILES FIX FOR|0 FRE GET GOSUB|10 GOTO ' +\n 'HEX$ IF THEN ELSE|0 INKEY$ INP INPUT INPUT# INPUT$ INSTR IMP INT IOCTL IOCTL$ KEY ON ' +\n 'OFF LIST KILL LEFT$ LEN LET LINE LLIST LOAD LOC LOCATE LOF LOG LPRINT USING LSET ' +\n 'MERGE MID$ MKDIR MKD$ MKI$ MKS$ MOD NAME NEW NEXT NOISE NOT OCT$ ON OR PEN PLAY STRIG OPEN OPTION ' +\n 'BASE OUT PAINT PALETTE PCOPY PEEK PMAP POINT POKE POS PRINT PRINT] PSET PRESET ' +\n 'PUT RANDOMIZE READ REM RENUM RESET|0 RESTORE RESUME RETURN|0 RIGHT$ RMDIR RND RSET ' +\n 'RUN SAVE SCREEN SGN SHELL SIN SOUND SPACE$ SPC SQR STEP STICK STOP STR$ STRING$ SWAP ' +\n 'SYSTEM TAB TAN TIME$ TIMER TROFF TRON TO USR VAL VARPTR VARPTR$ VIEW WAIT WHILE ' +\n 'WEND WIDTH WINDOW WRITE XOR'\n },\n contains: [\n hljs.QUOTE_STRING_MODE,\n hljs.COMMENT('REM', '$', {\n relevance: 10\n }),\n hljs.COMMENT('\\'', '$', {\n relevance: 0\n }),\n {\n // Match line numbers\n className: 'symbol',\n begin: '^[0-9]+ ',\n relevance: 10\n },\n {\n // Match typed numeric constants (1000, 12.34!, 1.2e5, 1.5#, 1.2D2)\n className: 'number',\n begin: '\\\\b\\\\d+(\\\\.\\\\d+)?([edED]\\\\d+)?[#\\!]?',\n relevance: 0\n },\n {\n // Match hexadecimal numbers (&Hxxxx)\n className: 'number',\n begin: '(&[hH][0-9a-fA-F]{1,4})'\n },\n {\n // Match octal numbers (&Oxxxxxx)\n className: 'number',\n begin: '(&[oO][0-7]{1,6})'\n }\n ]\n };\n}\n\nmodule.exports = basic;\n","/*\nLanguage: Backus–Naur Form\nWebsite: https://en.wikipedia.org/wiki/Backus–Naur_form\nAuthor: Oleg Efimov <efimovov@gmail.com>\n*/\n\n/** @type LanguageFn */\nfunction bnf(hljs) {\n return {\n name: 'Backus–Naur Form',\n contains: [\n // Attribute\n {\n className: 'attribute',\n begin: /</,\n end: />/\n },\n // Specific\n {\n begin: /::=/,\n end: /$/,\n contains: [\n {\n begin: /</,\n end: />/\n },\n // Common\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n }\n ]\n };\n}\n\nmodule.exports = bnf;\n","/*\nLanguage: Brainfuck\nAuthor: Evgeny Stepanischev <imbolk@gmail.com>\nWebsite: https://esolangs.org/wiki/Brainfuck\n*/\n\n/** @type LanguageFn */\nfunction brainfuck(hljs) {\n const LITERAL = {\n className: 'literal',\n begin: /[+-]/,\n relevance: 0\n };\n return {\n name: 'Brainfuck',\n aliases: ['bf'],\n contains: [\n hljs.COMMENT(\n '[^\\\\[\\\\]\\\\.,\\\\+\\\\-<> \\r\\n]',\n '[\\\\[\\\\]\\\\.,\\\\+\\\\-<> \\r\\n]',\n {\n returnEnd: true,\n relevance: 0\n }\n ),\n {\n className: 'title',\n begin: '[\\\\[\\\\]]',\n relevance: 0\n },\n {\n className: 'string',\n begin: '[\\\\.,]',\n relevance: 0\n },\n {\n // this mode works as the only relevance counter\n begin: /(?:\\+\\+|--)/,\n contains: [LITERAL]\n },\n LITERAL\n ]\n };\n}\n\nmodule.exports = brainfuck;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n return concat('(?=', re, ')');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction optional(re) {\n return concat('(', re, ')?');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/*\nLanguage: C++\nCategory: common, system\nWebsite: https://isocpp.org\n*/\n\n/** @type LanguageFn */\nfunction cPlusPlus(hljs) {\n // added for historic reasons because `hljs.C_LINE_COMMENT_MODE` does\n // not include such support nor can we be sure all the grammars depending\n // on it would desire this behavior\n const C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$', {\n contains: [\n {\n begin: /\\\\\\n/\n }\n ]\n });\n const DECLTYPE_AUTO_RE = 'decltype\\\\(auto\\\\)';\n const NAMESPACE_RE = '[a-zA-Z_]\\\\w*::';\n const TEMPLATE_ARGUMENT_RE = '<[^<>]+>';\n const FUNCTION_TYPE_RE = '(' +\n DECLTYPE_AUTO_RE + '|' +\n optional(NAMESPACE_RE) +\n '[a-zA-Z_]\\\\w*' + optional(TEMPLATE_ARGUMENT_RE) +\n ')';\n const CPP_PRIMITIVE_TYPES = {\n className: 'keyword',\n begin: '\\\\b[a-z\\\\d_]*_t\\\\b'\n };\n\n // https://en.cppreference.com/w/cpp/language/escape\n // \\\\ \\x \\xFF \\u2837 \\u00323747 \\374\n const CHARACTER_ESCAPES = '\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\\\S)';\n const STRINGS = {\n className: 'string',\n variants: [\n {\n begin: '(u8?|U|L)?\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: '(u8?|U|L)?\\'(' + CHARACTER_ESCAPES + \"|.)\",\n end: '\\'',\n illegal: '.'\n },\n hljs.END_SAME_AS_BEGIN({\n begin: /(?:u8?|U|L)?R\"([^()\\\\ ]{0,16})\\(/,\n end: /\\)([^()\\\\ ]{0,16})\"/\n })\n ]\n };\n\n const NUMBERS = {\n className: 'number',\n variants: [\n {\n begin: '\\\\b(0b[01\\']+)'\n },\n {\n begin: '(-?)\\\\b([\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)'\n },\n {\n begin: '(-?)(\\\\b0[xX][a-fA-F0-9\\']+|(\\\\b[\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)([eE][-+]?[\\\\d\\']+)?)'\n }\n ],\n relevance: 0\n };\n\n const PREPROCESSOR = {\n className: 'meta',\n begin: /#\\s*[a-z]+\\b/,\n end: /$/,\n keywords: {\n 'meta-keyword':\n 'if else elif endif define undef warning error line ' +\n 'pragma _Pragma ifdef ifndef include'\n },\n contains: [\n {\n begin: /\\\\\\n/,\n relevance: 0\n },\n hljs.inherit(STRINGS, {\n className: 'meta-string'\n }),\n {\n className: 'meta-string',\n begin: /<.*?>/\n },\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n\n const TITLE_MODE = {\n className: 'title',\n begin: optional(NAMESPACE_RE) + hljs.IDENT_RE,\n relevance: 0\n };\n\n const FUNCTION_TITLE = optional(NAMESPACE_RE) + hljs.IDENT_RE + '\\\\s*\\\\(';\n\n const COMMON_CPP_HINTS = [\n 'asin',\n 'atan2',\n 'atan',\n 'calloc',\n 'ceil',\n 'cosh',\n 'cos',\n 'exit',\n 'exp',\n 'fabs',\n 'floor',\n 'fmod',\n 'fprintf',\n 'fputs',\n 'free',\n 'frexp',\n 'auto_ptr',\n 'deque',\n 'list',\n 'queue',\n 'stack',\n 'vector',\n 'map',\n 'set',\n 'pair',\n 'bitset',\n 'multiset',\n 'multimap',\n 'unordered_set',\n 'fscanf',\n 'future',\n 'isalnum',\n 'isalpha',\n 'iscntrl',\n 'isdigit',\n 'isgraph',\n 'islower',\n 'isprint',\n 'ispunct',\n 'isspace',\n 'isupper',\n 'isxdigit',\n 'tolower',\n 'toupper',\n 'labs',\n 'ldexp',\n 'log10',\n 'log',\n 'malloc',\n 'realloc',\n 'memchr',\n 'memcmp',\n 'memcpy',\n 'memset',\n 'modf',\n 'pow',\n 'printf',\n 'putchar',\n 'puts',\n 'scanf',\n 'sinh',\n 'sin',\n 'snprintf',\n 'sprintf',\n 'sqrt',\n 'sscanf',\n 'strcat',\n 'strchr',\n 'strcmp',\n 'strcpy',\n 'strcspn',\n 'strlen',\n 'strncat',\n 'strncmp',\n 'strncpy',\n 'strpbrk',\n 'strrchr',\n 'strspn',\n 'strstr',\n 'tanh',\n 'tan',\n 'unordered_map',\n 'unordered_multiset',\n 'unordered_multimap',\n 'priority_queue',\n 'make_pair',\n 'array',\n 'shared_ptr',\n 'abort',\n 'terminate',\n 'abs',\n 'acos',\n 'vfprintf',\n 'vprintf',\n 'vsprintf',\n 'endl',\n 'initializer_list',\n 'unique_ptr',\n 'complex',\n 'imaginary',\n 'std',\n 'string',\n 'wstring',\n 'cin',\n 'cout',\n 'cerr',\n 'clog',\n 'stdin',\n 'stdout',\n 'stderr',\n 'stringstream',\n 'istringstream',\n 'ostringstream'\n ];\n\n const CPP_KEYWORDS = {\n keyword: 'int float while private char char8_t char16_t char32_t catch import module export virtual operator sizeof ' +\n 'dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace ' +\n 'unsigned long volatile static protected bool template mutable if public friend ' +\n 'do goto auto void enum else break extern using asm case typeid wchar_t ' +\n 'short reinterpret_cast|10 default double register explicit signed typename try this ' +\n 'switch continue inline delete alignas alignof constexpr consteval constinit decltype ' +\n 'concept co_await co_return co_yield requires ' +\n 'noexcept static_assert thread_local restrict final override ' +\n 'atomic_bool atomic_char atomic_schar ' +\n 'atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong ' +\n 'atomic_ullong new throw return ' +\n 'and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq',\n built_in: '_Bool _Complex _Imaginary',\n _relevance_hints: COMMON_CPP_HINTS,\n literal: 'true false nullptr NULL'\n };\n\n const FUNCTION_DISPATCH = {\n className: \"function.dispatch\",\n relevance: 0,\n keywords: CPP_KEYWORDS,\n begin: concat(\n /\\b/,\n /(?!decltype)/,\n /(?!if)/,\n /(?!for)/,\n /(?!while)/,\n hljs.IDENT_RE,\n lookahead(/\\s*\\(/))\n };\n\n const EXPRESSION_CONTAINS = [\n FUNCTION_DISPATCH,\n PREPROCESSOR,\n CPP_PRIMITIVE_TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n STRINGS\n ];\n\n\n const EXPRESSION_CONTEXT = {\n // This mode covers expression context where we can't expect a function\n // definition and shouldn't highlight anything that looks like one:\n // `return some()`, `else if()`, `(x*sum(1, 2))`\n variants: [\n {\n begin: /=/,\n end: /;/\n },\n {\n begin: /\\(/,\n end: /\\)/\n },\n {\n beginKeywords: 'new throw return else',\n end: /;/\n }\n ],\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([ 'self' ]),\n relevance: 0\n }\n ]),\n relevance: 0\n };\n\n const FUNCTION_DECLARATION = {\n className: 'function',\n begin: '(' + FUNCTION_TYPE_RE + '[\\\\*&\\\\s]+)+' + FUNCTION_TITLE,\n returnBegin: true,\n end: /[{;=]/,\n excludeEnd: true,\n keywords: CPP_KEYWORDS,\n illegal: /[^\\w\\s\\*&:<>.]/,\n contains: [\n { // to prevent it from being confused as the function title\n begin: DECLTYPE_AUTO_RE,\n keywords: CPP_KEYWORDS,\n relevance: 0\n },\n {\n begin: FUNCTION_TITLE,\n returnBegin: true,\n contains: [ TITLE_MODE ],\n relevance: 0\n },\n // needed because we do not have look-behind on the below rule\n // to prevent it from grabbing the final : in a :: pair\n {\n begin: /::/,\n relevance: 0\n },\n // initializers\n {\n begin: /:/,\n endsWithParent: true,\n contains: [\n STRINGS,\n NUMBERS\n ]\n },\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n relevance: 0,\n contains: [\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n CPP_PRIMITIVE_TYPES,\n // Count matching parentheses.\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n relevance: 0,\n contains: [\n 'self',\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n CPP_PRIMITIVE_TYPES\n ]\n }\n ]\n },\n CPP_PRIMITIVE_TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n PREPROCESSOR\n ]\n };\n\n return {\n name: 'C++',\n aliases: [\n 'cc',\n 'c++',\n 'h++',\n 'hpp',\n 'hh',\n 'hxx',\n 'cxx'\n ],\n keywords: CPP_KEYWORDS,\n illegal: '</',\n classNameAliases: {\n \"function.dispatch\": \"built_in\"\n },\n contains: [].concat(\n EXPRESSION_CONTEXT,\n FUNCTION_DECLARATION,\n FUNCTION_DISPATCH,\n EXPRESSION_CONTAINS,\n [\n PREPROCESSOR,\n { // containers: ie, `vector <int> rooms (9);`\n begin: '\\\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\\\s*<',\n end: '>',\n keywords: CPP_KEYWORDS,\n contains: [\n 'self',\n CPP_PRIMITIVE_TYPES\n ]\n },\n {\n begin: hljs.IDENT_RE + '::',\n keywords: CPP_KEYWORDS\n },\n {\n className: 'class',\n beginKeywords: 'enum class struct union',\n end: /[{;:<>=]/,\n contains: [\n {\n beginKeywords: \"final class struct\"\n },\n hljs.TITLE_MODE\n ]\n }\n ]),\n exports: {\n preprocessor: PREPROCESSOR,\n strings: STRINGS,\n keywords: CPP_KEYWORDS\n }\n };\n}\n\n/*\nLanguage: C-like (deprecated, use C and C++ instead)\nAuthor: Ivan Sagalaev <maniac@softwaremaniacs.org>\nContributors: Evgeny Stepanischev <imbolk@gmail.com>, Zaven Muradyan <megalivoithos@gmail.com>, Roel Deckers <admin@codingcat.nl>, Sam Wu <samsam2310@gmail.com>, Jordi Petit <jordi.petit@gmail.com>, Pieter Vantorre <pietervantorre@gmail.com>, Google Inc. (David Benjamin) <davidben@google.com>\n*/\n\n/** @type LanguageFn */\nfunction cLike(hljs) {\n const lang = cPlusPlus(hljs);\n\n const C_ALIASES = [\n \"c\",\n \"h\"\n ];\n\n const CPP_ALIASES = [\n 'cc',\n 'c++',\n 'h++',\n 'hpp',\n 'hh',\n 'hxx',\n 'cxx'\n ];\n\n lang.disableAutodetect = true;\n lang.aliases = [];\n // support users only loading c-like (legacy)\n if (!hljs.getLanguage(\"c\")) lang.aliases.push(...C_ALIASES);\n if (!hljs.getLanguage(\"cpp\")) lang.aliases.push(...CPP_ALIASES);\n\n // if c and cpp are loaded after then they will reclaim these\n // aliases for themselves\n\n return lang;\n}\n\nmodule.exports = cLike;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction optional(re) {\n return concat('(', re, ')?');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/*\nLanguage: C\nCategory: common, system\nWebsite: https://en.wikipedia.org/wiki/C_(programming_language)\n*/\n\n/** @type LanguageFn */\nfunction c(hljs) {\n // added for historic reasons because `hljs.C_LINE_COMMENT_MODE` does\n // not include such support nor can we be sure all the grammars depending\n // on it would desire this behavior\n const C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$', {\n contains: [\n {\n begin: /\\\\\\n/\n }\n ]\n });\n const DECLTYPE_AUTO_RE = 'decltype\\\\(auto\\\\)';\n const NAMESPACE_RE = '[a-zA-Z_]\\\\w*::';\n const TEMPLATE_ARGUMENT_RE = '<[^<>]+>';\n const FUNCTION_TYPE_RE = '(' +\n DECLTYPE_AUTO_RE + '|' +\n optional(NAMESPACE_RE) +\n '[a-zA-Z_]\\\\w*' + optional(TEMPLATE_ARGUMENT_RE) +\n ')';\n const CPP_PRIMITIVE_TYPES = {\n className: 'keyword',\n begin: '\\\\b[a-z\\\\d_]*_t\\\\b'\n };\n\n // https://en.cppreference.com/w/cpp/language/escape\n // \\\\ \\x \\xFF \\u2837 \\u00323747 \\374\n const CHARACTER_ESCAPES = '\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\\\S)';\n const STRINGS = {\n className: 'string',\n variants: [\n {\n begin: '(u8?|U|L)?\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: '(u8?|U|L)?\\'(' + CHARACTER_ESCAPES + \"|.)\",\n end: '\\'',\n illegal: '.'\n },\n hljs.END_SAME_AS_BEGIN({\n begin: /(?:u8?|U|L)?R\"([^()\\\\ ]{0,16})\\(/,\n end: /\\)([^()\\\\ ]{0,16})\"/\n })\n ]\n };\n\n const NUMBERS = {\n className: 'number',\n variants: [\n {\n begin: '\\\\b(0b[01\\']+)'\n },\n {\n begin: '(-?)\\\\b([\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)'\n },\n {\n begin: '(-?)(\\\\b0[xX][a-fA-F0-9\\']+|(\\\\b[\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)([eE][-+]?[\\\\d\\']+)?)'\n }\n ],\n relevance: 0\n };\n\n const PREPROCESSOR = {\n className: 'meta',\n begin: /#\\s*[a-z]+\\b/,\n end: /$/,\n keywords: {\n 'meta-keyword':\n 'if else elif endif define undef warning error line ' +\n 'pragma _Pragma ifdef ifndef include'\n },\n contains: [\n {\n begin: /\\\\\\n/,\n relevance: 0\n },\n hljs.inherit(STRINGS, {\n className: 'meta-string'\n }),\n {\n className: 'meta-string',\n begin: /<.*?>/\n },\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n\n const TITLE_MODE = {\n className: 'title',\n begin: optional(NAMESPACE_RE) + hljs.IDENT_RE,\n relevance: 0\n };\n\n const FUNCTION_TITLE = optional(NAMESPACE_RE) + hljs.IDENT_RE + '\\\\s*\\\\(';\n\n const CPP_KEYWORDS = {\n keyword: 'int float while private char char8_t char16_t char32_t catch import module export virtual operator sizeof ' +\n 'dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace ' +\n 'unsigned long volatile static protected bool template mutable if public friend ' +\n 'do goto auto void enum else break extern using asm case typeid wchar_t ' +\n 'short reinterpret_cast|10 default double register explicit signed typename try this ' +\n 'switch continue inline delete alignas alignof constexpr consteval constinit decltype ' +\n 'concept co_await co_return co_yield requires ' +\n 'noexcept static_assert thread_local restrict final override ' +\n 'atomic_bool atomic_char atomic_schar ' +\n 'atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong ' +\n 'atomic_ullong new throw return ' +\n 'and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq',\n built_in: 'std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream ' +\n 'auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set ' +\n 'unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos ' +\n 'asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp ' +\n 'fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper ' +\n 'isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow ' +\n 'printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp ' +\n 'strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan ' +\n 'vfprintf vprintf vsprintf endl initializer_list unique_ptr _Bool complex _Complex imaginary _Imaginary',\n literal: 'true false nullptr NULL'\n };\n\n const EXPRESSION_CONTAINS = [\n PREPROCESSOR,\n CPP_PRIMITIVE_TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n STRINGS\n ];\n\n const EXPRESSION_CONTEXT = {\n // This mode covers expression context where we can't expect a function\n // definition and shouldn't highlight anything that looks like one:\n // `return some()`, `else if()`, `(x*sum(1, 2))`\n variants: [\n {\n begin: /=/,\n end: /;/\n },\n {\n begin: /\\(/,\n end: /\\)/\n },\n {\n beginKeywords: 'new throw return else',\n end: /;/\n }\n ],\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([ 'self' ]),\n relevance: 0\n }\n ]),\n relevance: 0\n };\n\n const FUNCTION_DECLARATION = {\n className: 'function',\n begin: '(' + FUNCTION_TYPE_RE + '[\\\\*&\\\\s]+)+' + FUNCTION_TITLE,\n returnBegin: true,\n end: /[{;=]/,\n excludeEnd: true,\n keywords: CPP_KEYWORDS,\n illegal: /[^\\w\\s\\*&:<>.]/,\n contains: [\n { // to prevent it from being confused as the function title\n begin: DECLTYPE_AUTO_RE,\n keywords: CPP_KEYWORDS,\n relevance: 0\n },\n {\n begin: FUNCTION_TITLE,\n returnBegin: true,\n contains: [ TITLE_MODE ],\n relevance: 0\n },\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n relevance: 0,\n contains: [\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n CPP_PRIMITIVE_TYPES,\n // Count matching parentheses.\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n relevance: 0,\n contains: [\n 'self',\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n CPP_PRIMITIVE_TYPES\n ]\n }\n ]\n },\n CPP_PRIMITIVE_TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n PREPROCESSOR\n ]\n };\n\n return {\n name: \"C\",\n aliases: [\n 'h'\n ],\n keywords: CPP_KEYWORDS,\n // Until differentiations are added between `c` and `cpp`, `c` will\n // not be auto-detected to avoid auto-detect conflicts between C and C++\n disableAutodetect: true,\n illegal: '</',\n contains: [].concat(\n EXPRESSION_CONTEXT,\n FUNCTION_DECLARATION,\n EXPRESSION_CONTAINS,\n [\n PREPROCESSOR,\n { // containers: ie, `vector <int> rooms (9);`\n begin: '\\\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\\\s*<',\n end: '>',\n keywords: CPP_KEYWORDS,\n contains: [\n 'self',\n CPP_PRIMITIVE_TYPES\n ]\n },\n {\n begin: hljs.IDENT_RE + '::',\n keywords: CPP_KEYWORDS\n },\n {\n className: 'class',\n beginKeywords: 'enum class struct union',\n end: /[{;:<>=]/,\n contains: [\n {\n beginKeywords: \"final class struct\"\n },\n hljs.TITLE_MODE\n ]\n }\n ]),\n exports: {\n preprocessor: PREPROCESSOR,\n strings: STRINGS,\n keywords: CPP_KEYWORDS\n }\n };\n}\n\nmodule.exports = c;\n","/*\nLanguage: C/AL\nAuthor: Kenneth Fuglsang Christensen <kfuglsang@gmail.com>\nDescription: Provides highlighting of Microsoft Dynamics NAV C/AL code files\nWebsite: https://docs.microsoft.com/en-us/dynamics-nav/programming-in-c-al\n*/\n\n/** @type LanguageFn */\nfunction cal(hljs) {\n const KEYWORDS =\n 'div mod in and or not xor asserterror begin case do downto else end exit for if of repeat then to ' +\n 'until while with var';\n const LITERALS = 'false true';\n const COMMENT_MODES = [\n hljs.C_LINE_COMMENT_MODE,\n hljs.COMMENT(\n /\\{/,\n /\\}/,\n {\n relevance: 0\n }\n ),\n hljs.COMMENT(\n /\\(\\*/,\n /\\*\\)/,\n {\n relevance: 10\n }\n )\n ];\n const STRING = {\n className: 'string',\n begin: /'/,\n end: /'/,\n contains: [{\n begin: /''/\n }]\n };\n const CHAR_STRING = {\n className: 'string',\n begin: /(#\\d+)+/\n };\n const DATE = {\n className: 'number',\n begin: '\\\\b\\\\d+(\\\\.\\\\d+)?(DT|D|T)',\n relevance: 0\n };\n const DBL_QUOTED_VARIABLE = {\n className: 'string', // not a string technically but makes sense to be highlighted in the same style\n begin: '\"',\n end: '\"'\n };\n\n const PROCEDURE = {\n className: 'function',\n beginKeywords: 'procedure',\n end: /[:;]/,\n keywords: 'procedure|10',\n contains: [\n hljs.TITLE_MODE,\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n contains: [\n STRING,\n CHAR_STRING\n ]\n }\n ].concat(COMMENT_MODES)\n };\n\n const OBJECT = {\n className: 'class',\n begin: 'OBJECT (Table|Form|Report|Dataport|Codeunit|XMLport|MenuSuite|Page|Query) (\\\\d+) ([^\\\\r\\\\n]+)',\n returnBegin: true,\n contains: [\n hljs.TITLE_MODE,\n PROCEDURE\n ]\n };\n\n return {\n name: 'C/AL',\n case_insensitive: true,\n keywords: {\n keyword: KEYWORDS,\n literal: LITERALS\n },\n illegal: /\\/\\*/,\n contains: [\n STRING,\n CHAR_STRING,\n DATE,\n DBL_QUOTED_VARIABLE,\n hljs.NUMBER_MODE,\n OBJECT,\n PROCEDURE\n ]\n };\n}\n\nmodule.exports = cal;\n","/*\nLanguage: Cap’n Proto\nAuthor: Oleg Efimov <efimovov@gmail.com>\nDescription: Cap’n Proto message definition format\nWebsite: https://capnproto.org/capnp-tool.html\nCategory: protocols\n*/\n\n/** @type LanguageFn */\nfunction capnproto(hljs) {\n return {\n name: 'Cap’n Proto',\n aliases: ['capnp'],\n keywords: {\n keyword:\n 'struct enum interface union group import using const annotation extends in of on as with from fixed',\n built_in:\n 'Void Bool Int8 Int16 Int32 Int64 UInt8 UInt16 UInt32 UInt64 Float32 Float64 ' +\n 'Text Data AnyPointer AnyStruct Capability List',\n literal:\n 'true false'\n },\n contains: [\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE,\n hljs.HASH_COMMENT_MODE,\n {\n className: 'meta',\n begin: /@0x[\\w\\d]{16};/,\n illegal: /\\n/\n },\n {\n className: 'symbol',\n begin: /@\\d+\\b/\n },\n {\n className: 'class',\n beginKeywords: 'struct enum',\n end: /\\{/,\n illegal: /\\n/,\n contains: [hljs.inherit(hljs.TITLE_MODE, {\n starts: {\n endsWithParent: true,\n excludeEnd: true\n } // hack: eating everything after the first title\n })]\n },\n {\n className: 'class',\n beginKeywords: 'interface',\n end: /\\{/,\n illegal: /\\n/,\n contains: [hljs.inherit(hljs.TITLE_MODE, {\n starts: {\n endsWithParent: true,\n excludeEnd: true\n } // hack: eating everything after the first title\n })]\n }\n ]\n };\n}\n\nmodule.exports = capnproto;\n","/*\nLanguage: Ceylon\nAuthor: Lucas Werkmeister <mail@lucaswerkmeister.de>\nWebsite: https://ceylon-lang.org\n*/\n\n/** @type LanguageFn */\nfunction ceylon(hljs) {\n // 2.3. Identifiers and keywords\n const KEYWORDS =\n 'assembly module package import alias class interface object given value ' +\n 'assign void function new of extends satisfies abstracts in out return ' +\n 'break continue throw assert dynamic if else switch case for while try ' +\n 'catch finally then let this outer super is exists nonempty';\n // 7.4.1 Declaration Modifiers\n const DECLARATION_MODIFIERS =\n 'shared abstract formal default actual variable late native deprecated ' +\n 'final sealed annotation suppressWarnings small';\n // 7.4.2 Documentation\n const DOCUMENTATION =\n 'doc by license see throws tagged';\n const SUBST = {\n className: 'subst',\n excludeBegin: true,\n excludeEnd: true,\n begin: /``/,\n end: /``/,\n keywords: KEYWORDS,\n relevance: 10\n };\n const EXPRESSIONS = [\n {\n // verbatim string\n className: 'string',\n begin: '\"\"\"',\n end: '\"\"\"',\n relevance: 10\n },\n {\n // string literal or template\n className: 'string',\n begin: '\"',\n end: '\"',\n contains: [SUBST]\n },\n {\n // character literal\n className: 'string',\n begin: \"'\",\n end: \"'\"\n },\n {\n // numeric literal\n className: 'number',\n begin: '#[0-9a-fA-F_]+|\\\\$[01_]+|[0-9_]+(?:\\\\.[0-9_](?:[eE][+-]?\\\\d+)?)?[kMGTPmunpf]?',\n relevance: 0\n }\n ];\n SUBST.contains = EXPRESSIONS;\n\n return {\n name: 'Ceylon',\n keywords: {\n keyword: KEYWORDS + ' ' + DECLARATION_MODIFIERS,\n meta: DOCUMENTATION\n },\n illegal: '\\\\$[^01]|#[^0-9a-fA-F]',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.COMMENT('/\\\\*', '\\\\*/', {\n contains: ['self']\n }),\n {\n // compiler annotation\n className: 'meta',\n begin: '@[a-z]\\\\w*(?::\"[^\"]*\")?'\n }\n ].concat(EXPRESSIONS)\n };\n}\n\nmodule.exports = ceylon;\n","/*\nLanguage: Clean\nAuthor: Camil Staps <info@camilstaps.nl>\nCategory: functional\nWebsite: http://clean.cs.ru.nl\n*/\n\n/** @type LanguageFn */\nfunction clean(hljs) {\n return {\n name: 'Clean',\n aliases: [\n 'icl',\n 'dcl'\n ],\n keywords: {\n keyword:\n 'if let in with where case of class instance otherwise ' +\n 'implementation definition system module from import qualified as ' +\n 'special code inline foreign export ccall stdcall generic derive ' +\n 'infix infixl infixr',\n built_in:\n 'Int Real Char Bool',\n literal:\n 'True False'\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n { // relevance booster\n begin: '->|<-[|:]?|#!?|>>=|\\\\{\\\\||\\\\|\\\\}|:==|=:|<>'\n }\n ]\n };\n}\n\nmodule.exports = clean;\n","/*\nLanguage: Clojure REPL\nDescription: Clojure REPL sessions\nAuthor: Ivan Sagalaev <maniac@softwaremaniacs.org>\nRequires: clojure.js\nWebsite: https://clojure.org\nCategory: lisp\n*/\n\n/** @type LanguageFn */\nfunction clojureRepl(hljs) {\n return {\n name: 'Clojure REPL',\n contains: [\n {\n className: 'meta',\n begin: /^([\\w.-]+|\\s*#_)?=>/,\n starts: {\n end: /$/,\n subLanguage: 'clojure'\n }\n }\n ]\n };\n}\n\nmodule.exports = clojureRepl;\n","/*\nLanguage: Clojure\nDescription: Clojure syntax (based on lisp.js)\nAuthor: mfornos\nWebsite: https://clojure.org\nCategory: lisp\n*/\n\n/** @type LanguageFn */\nfunction clojure(hljs) {\n const SYMBOLSTART = 'a-zA-Z_\\\\-!.?+*=<>&#\\'';\n const SYMBOL_RE = '[' + SYMBOLSTART + '][' + SYMBOLSTART + '0-9/;:]*';\n const globals = 'def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord';\n const keywords = {\n $pattern: SYMBOL_RE,\n 'builtin-name':\n // Clojure keywords\n globals + ' ' +\n 'cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem ' +\n 'quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? ' +\n 'set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? ' +\n 'class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? ' +\n 'string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . ' +\n 'inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last ' +\n 'drop-while while intern condp case reduced cycle split-at split-with repeat replicate ' +\n 'iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext ' +\n 'nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends ' +\n 'add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler ' +\n 'set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter ' +\n 'monitor-exit macroexpand macroexpand-1 for dosync and or ' +\n 'when when-not when-let comp juxt partial sequence memoize constantly complement identity assert ' +\n 'peek pop doto proxy first rest cons cast coll last butlast ' +\n 'sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import ' +\n 'refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! ' +\n 'assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger ' +\n 'bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline ' +\n 'flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking ' +\n 'assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! ' +\n 'reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! ' +\n 'new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty ' +\n 'hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list ' +\n 'disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer ' +\n 'chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate ' +\n 'unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta ' +\n 'lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize'\n };\n\n const SIMPLE_NUMBER_RE = '[-+]?\\\\d+(\\\\.\\\\d+)?';\n\n const SYMBOL = {\n begin: SYMBOL_RE,\n relevance: 0\n };\n const NUMBER = {\n className: 'number',\n begin: SIMPLE_NUMBER_RE,\n relevance: 0\n };\n const STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {\n illegal: null\n });\n const COMMENT = hljs.COMMENT(\n ';',\n '$',\n {\n relevance: 0\n }\n );\n const LITERAL = {\n className: 'literal',\n begin: /\\b(true|false|nil)\\b/\n };\n const COLLECTION = {\n begin: '[\\\\[\\\\{]',\n end: '[\\\\]\\\\}]'\n };\n const HINT = {\n className: 'comment',\n begin: '\\\\^' + SYMBOL_RE\n };\n const HINT_COL = hljs.COMMENT('\\\\^\\\\{', '\\\\}');\n const KEY = {\n className: 'symbol',\n begin: '[:]{1,2}' + SYMBOL_RE\n };\n const LIST = {\n begin: '\\\\(',\n end: '\\\\)'\n };\n const BODY = {\n endsWithParent: true,\n relevance: 0\n };\n const NAME = {\n keywords: keywords,\n className: 'name',\n begin: SYMBOL_RE,\n relevance: 0,\n starts: BODY\n };\n const DEFAULT_CONTAINS = [\n LIST,\n STRING,\n HINT,\n HINT_COL,\n COMMENT,\n KEY,\n COLLECTION,\n NUMBER,\n LITERAL,\n SYMBOL\n ];\n\n const GLOBAL = {\n beginKeywords: globals,\n lexemes: SYMBOL_RE,\n end: '(\\\\[|#|\\\\d|\"|:|\\\\{|\\\\)|\\\\(|$)',\n contains: [\n {\n className: 'title',\n begin: SYMBOL_RE,\n relevance: 0,\n excludeEnd: true,\n // we can only have a single title\n endsParent: true\n }\n ].concat(DEFAULT_CONTAINS)\n };\n\n LIST.contains = [\n hljs.COMMENT('comment', ''),\n GLOBAL,\n NAME,\n BODY\n ];\n BODY.contains = DEFAULT_CONTAINS;\n COLLECTION.contains = DEFAULT_CONTAINS;\n HINT_COL.contains = [ COLLECTION ];\n\n return {\n name: 'Clojure',\n aliases: [ 'clj' ],\n illegal: /\\S/,\n contains: [\n LIST,\n STRING,\n HINT,\n HINT_COL,\n COMMENT,\n KEY,\n COLLECTION,\n NUMBER,\n LITERAL\n ]\n };\n}\n\nmodule.exports = clojure;\n","/*\nLanguage: CMake\nDescription: CMake is an open-source cross-platform system for build automation.\nAuthor: Igor Kalnitsky <igor@kalnitsky.org>\nWebsite: https://cmake.org\n*/\n\n/** @type LanguageFn */\nfunction cmake(hljs) {\n return {\n name: 'CMake',\n aliases: ['cmake.in'],\n case_insensitive: true,\n keywords: {\n keyword:\n // scripting commands\n 'break cmake_host_system_information cmake_minimum_required cmake_parse_arguments ' +\n 'cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro ' +\n 'endwhile execute_process file find_file find_library find_package find_path ' +\n 'find_program foreach function get_cmake_property get_directory_property ' +\n 'get_filename_component get_property if include include_guard list macro ' +\n 'mark_as_advanced math message option return separate_arguments ' +\n 'set_directory_properties set_property set site_name string unset variable_watch while ' +\n // project commands\n 'add_compile_definitions add_compile_options add_custom_command add_custom_target ' +\n 'add_definitions add_dependencies add_executable add_library add_link_options ' +\n 'add_subdirectory add_test aux_source_directory build_command create_test_sourcelist ' +\n 'define_property enable_language enable_testing export fltk_wrap_ui ' +\n 'get_source_file_property get_target_property get_test_property include_directories ' +\n 'include_external_msproject include_regular_expression install link_directories ' +\n 'link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions ' +\n 'set_source_files_properties set_target_properties set_tests_properties source_group ' +\n 'target_compile_definitions target_compile_features target_compile_options ' +\n 'target_include_directories target_link_directories target_link_libraries ' +\n 'target_link_options target_sources try_compile try_run ' +\n // CTest commands\n 'ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ' +\n 'ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ' +\n 'ctest_test ctest_update ctest_upload ' +\n // deprecated commands\n 'build_name exec_program export_library_dependencies install_files install_programs ' +\n 'install_targets load_command make_directory output_required_files remove ' +\n 'subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file ' +\n 'qt5_use_modules qt5_use_package qt5_wrap_cpp ' +\n // core keywords\n 'on off true false and or not command policy target test exists is_newer_than ' +\n 'is_directory is_symlink is_absolute matches less greater equal less_equal ' +\n 'greater_equal strless strgreater strequal strless_equal strgreater_equal version_less ' +\n 'version_greater version_equal version_less_equal version_greater_equal in_list defined'\n },\n contains: [\n {\n className: 'variable',\n begin: /\\$\\{/,\n end: /\\}/\n },\n hljs.HASH_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE\n ]\n };\n}\n\nmodule.exports = cmake;\n","const KEYWORDS = [\n \"as\", // for exports\n \"in\",\n \"of\",\n \"if\",\n \"for\",\n \"while\",\n \"finally\",\n \"var\",\n \"new\",\n \"function\",\n \"do\",\n \"return\",\n \"void\",\n \"else\",\n \"break\",\n \"catch\",\n \"instanceof\",\n \"with\",\n \"throw\",\n \"case\",\n \"default\",\n \"try\",\n \"switch\",\n \"continue\",\n \"typeof\",\n \"delete\",\n \"let\",\n \"yield\",\n \"const\",\n \"class\",\n // JS handles these with a special rule\n // \"get\",\n // \"set\",\n \"debugger\",\n \"async\",\n \"await\",\n \"static\",\n \"import\",\n \"from\",\n \"export\",\n \"extends\"\n];\nconst LITERALS = [\n \"true\",\n \"false\",\n \"null\",\n \"undefined\",\n \"NaN\",\n \"Infinity\"\n];\n\nconst TYPES = [\n \"Intl\",\n \"DataView\",\n \"Number\",\n \"Math\",\n \"Date\",\n \"String\",\n \"RegExp\",\n \"Object\",\n \"Function\",\n \"Boolean\",\n \"Error\",\n \"Symbol\",\n \"Set\",\n \"Map\",\n \"WeakSet\",\n \"WeakMap\",\n \"Proxy\",\n \"Reflect\",\n \"JSON\",\n \"Promise\",\n \"Float64Array\",\n \"Int16Array\",\n \"Int32Array\",\n \"Int8Array\",\n \"Uint16Array\",\n \"Uint32Array\",\n \"Float32Array\",\n \"Array\",\n \"Uint8Array\",\n \"Uint8ClampedArray\",\n \"ArrayBuffer\",\n \"BigInt64Array\",\n \"BigUint64Array\",\n \"BigInt\"\n];\n\nconst ERROR_TYPES = [\n \"EvalError\",\n \"InternalError\",\n \"RangeError\",\n \"ReferenceError\",\n \"SyntaxError\",\n \"TypeError\",\n \"URIError\"\n];\n\nconst BUILT_IN_GLOBALS = [\n \"setInterval\",\n \"setTimeout\",\n \"clearInterval\",\n \"clearTimeout\",\n\n \"require\",\n \"exports\",\n\n \"eval\",\n \"isFinite\",\n \"isNaN\",\n \"parseFloat\",\n \"parseInt\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"escape\",\n \"unescape\"\n];\n\nconst BUILT_IN_VARIABLES = [\n \"arguments\",\n \"this\",\n \"super\",\n \"console\",\n \"window\",\n \"document\",\n \"localStorage\",\n \"module\",\n \"global\" // Node.js\n];\n\nconst BUILT_INS = [].concat(\n BUILT_IN_GLOBALS,\n BUILT_IN_VARIABLES,\n TYPES,\n ERROR_TYPES\n);\n\n/*\nLanguage: CoffeeScript\nAuthor: Dmytrii Nagirniak <dnagir@gmail.com>\nContributors: Oleg Efimov <efimovov@gmail.com>, Cédric Néhémie <cedric.nehemie@gmail.com>\nDescription: CoffeeScript is a programming language that transcompiles to JavaScript. For info about language see http://coffeescript.org/\nCategory: common, scripting\nWebsite: https://coffeescript.org\n*/\n\n/** @type LanguageFn */\nfunction coffeescript(hljs) {\n const COFFEE_BUILT_INS = [\n 'npm',\n 'print'\n ];\n const COFFEE_LITERALS = [\n 'yes',\n 'no',\n 'on',\n 'off'\n ];\n const COFFEE_KEYWORDS = [\n 'then',\n 'unless',\n 'until',\n 'loop',\n 'by',\n 'when',\n 'and',\n 'or',\n 'is',\n 'isnt',\n 'not'\n ];\n const NOT_VALID_KEYWORDS = [\n \"var\",\n \"const\",\n \"let\",\n \"function\",\n \"static\"\n ];\n const excluding = (list) =>\n (kw) => !list.includes(kw);\n const KEYWORDS$1 = {\n keyword: KEYWORDS.concat(COFFEE_KEYWORDS).filter(excluding(NOT_VALID_KEYWORDS)),\n literal: LITERALS.concat(COFFEE_LITERALS),\n built_in: BUILT_INS.concat(COFFEE_BUILT_INS)\n };\n const JS_IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\n const SUBST = {\n className: 'subst',\n begin: /#\\{/,\n end: /\\}/,\n keywords: KEYWORDS$1\n };\n const EXPRESSIONS = [\n hljs.BINARY_NUMBER_MODE,\n hljs.inherit(hljs.C_NUMBER_MODE, {\n starts: {\n end: '(\\\\s*/)?',\n relevance: 0\n }\n }), // a number tries to eat the following slash to prevent treating it as a regexp\n {\n className: 'string',\n variants: [\n {\n begin: /'''/,\n end: /'''/,\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: /'/,\n end: /'/,\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: /\"\"\"/,\n end: /\"\"\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n },\n {\n begin: /\"/,\n end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n }\n ]\n },\n {\n className: 'regexp',\n variants: [\n {\n begin: '///',\n end: '///',\n contains: [\n SUBST,\n hljs.HASH_COMMENT_MODE\n ]\n },\n {\n begin: '//[gim]{0,3}(?=\\\\W)',\n relevance: 0\n },\n {\n // regex can't start with space to parse x / 2 / 3 as two divisions\n // regex can't start with *, and it supports an \"illegal\" in the main mode\n begin: /\\/(?![ *]).*?(?![\\\\]).\\/[gim]{0,3}(?=\\W)/\n }\n ]\n },\n {\n begin: '@' + JS_IDENT_RE // relevance booster\n },\n {\n subLanguage: 'javascript',\n excludeBegin: true,\n excludeEnd: true,\n variants: [\n {\n begin: '```',\n end: '```'\n },\n {\n begin: '`',\n end: '`'\n }\n ]\n }\n ];\n SUBST.contains = EXPRESSIONS;\n\n const TITLE = hljs.inherit(hljs.TITLE_MODE, {\n begin: JS_IDENT_RE\n });\n const POSSIBLE_PARAMS_RE = '(\\\\(.*\\\\)\\\\s*)?\\\\B[-=]>';\n const PARAMS = {\n className: 'params',\n begin: '\\\\([^\\\\(]',\n returnBegin: true,\n /* We need another contained nameless mode to not have every nested\n pair of parens to be called \"params\" */\n contains: [{\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS$1,\n contains: ['self'].concat(EXPRESSIONS)\n }]\n };\n\n return {\n name: 'CoffeeScript',\n aliases: [\n 'coffee',\n 'cson',\n 'iced'\n ],\n keywords: KEYWORDS$1,\n illegal: /\\/\\*/,\n contains: EXPRESSIONS.concat([\n hljs.COMMENT('###', '###'),\n hljs.HASH_COMMENT_MODE,\n {\n className: 'function',\n begin: '^\\\\s*' + JS_IDENT_RE + '\\\\s*=\\\\s*' + POSSIBLE_PARAMS_RE,\n end: '[-=]>',\n returnBegin: true,\n contains: [\n TITLE,\n PARAMS\n ]\n },\n {\n // anonymous function start\n begin: /[:\\(,=]\\s*/,\n relevance: 0,\n contains: [{\n className: 'function',\n begin: POSSIBLE_PARAMS_RE,\n end: '[-=]>',\n returnBegin: true,\n contains: [PARAMS]\n }]\n },\n {\n className: 'class',\n beginKeywords: 'class',\n end: '$',\n illegal: /[:=\"\\[\\]]/,\n contains: [\n {\n beginKeywords: 'extends',\n endsWithParent: true,\n illegal: /[:=\"\\[\\]]/,\n contains: [TITLE]\n },\n TITLE\n ]\n },\n {\n begin: JS_IDENT_RE + ':',\n end: ':',\n returnBegin: true,\n returnEnd: true,\n relevance: 0\n }\n ])\n };\n}\n\nmodule.exports = coffeescript;\n","/*\nLanguage: Coq\nAuthor: Stephan Boyer <stephan@stephanboyer.com>\nCategory: functional\nWebsite: https://coq.inria.fr\n*/\n\n/** @type LanguageFn */\nfunction coq(hljs) {\n return {\n name: 'Coq',\n keywords: {\n keyword:\n '_|0 as at cofix else end exists exists2 fix for forall fun if IF in let ' +\n 'match mod Prop return Set then Type using where with ' +\n 'Abort About Add Admit Admitted All Arguments Assumptions Axiom Back BackTo ' +\n 'Backtrack Bind Blacklist Canonical Cd Check Class Classes Close Coercion ' +\n 'Coercions CoFixpoint CoInductive Collection Combined Compute Conjecture ' +\n 'Conjectures Constant constr Constraint Constructors Context Corollary ' +\n 'CreateHintDb Cut Declare Defined Definition Delimit Dependencies Dependent ' +\n 'Derive Drop eauto End Equality Eval Example Existential Existentials ' +\n 'Existing Export exporting Extern Extract Extraction Fact Field Fields File ' +\n 'Fixpoint Focus for From Function Functional Generalizable Global Goal Grab ' +\n 'Grammar Graph Guarded Heap Hint HintDb Hints Hypotheses Hypothesis ident ' +\n 'Identity If Immediate Implicit Import Include Inductive Infix Info Initial ' +\n 'Inline Inspect Instance Instances Intro Intros Inversion Inversion_clear ' +\n 'Language Left Lemma Let Libraries Library Load LoadPath Local Locate Ltac ML ' +\n 'Mode Module Modules Monomorphic Morphism Next NoInline Notation Obligation ' +\n 'Obligations Opaque Open Optimize Options Parameter Parameters Parametric ' +\n 'Path Paths pattern Polymorphic Preterm Print Printing Program Projections ' +\n 'Proof Proposition Pwd Qed Quit Rec Record Recursive Redirect Relation Remark ' +\n 'Remove Require Reserved Reset Resolve Restart Rewrite Right Ring Rings Save ' +\n 'Scheme Scope Scopes Script Search SearchAbout SearchHead SearchPattern ' +\n 'SearchRewrite Section Separate Set Setoid Show Solve Sorted Step Strategies ' +\n 'Strategy Structure SubClass Table Tables Tactic Term Test Theorem Time ' +\n 'Timeout Transparent Type Typeclasses Types Undelimit Undo Unfocus Unfocused ' +\n 'Unfold Universe Universes Unset Unshelve using Variable Variables Variant ' +\n 'Verbose Visibility where with',\n built_in:\n 'abstract absurd admit after apply as assert assumption at auto autorewrite ' +\n 'autounfold before bottom btauto by case case_eq cbn cbv change ' +\n 'classical_left classical_right clear clearbody cofix compare compute ' +\n 'congruence constr_eq constructor contradict contradiction cut cutrewrite ' +\n 'cycle decide decompose dependent destruct destruction dintuition ' +\n 'discriminate discrR do double dtauto eapply eassumption eauto ecase ' +\n 'econstructor edestruct ediscriminate eelim eexact eexists einduction ' +\n 'einjection eleft elim elimtype enough equality erewrite eright ' +\n 'esimplify_eq esplit evar exact exactly_once exfalso exists f_equal fail ' +\n 'field field_simplify field_simplify_eq first firstorder fix fold fourier ' +\n 'functional generalize generalizing gfail give_up has_evar hnf idtac in ' +\n 'induction injection instantiate intro intro_pattern intros intuition ' +\n 'inversion inversion_clear is_evar is_var lapply lazy left lia lra move ' +\n 'native_compute nia nsatz omega once pattern pose progress proof psatz quote ' +\n 'record red refine reflexivity remember rename repeat replace revert ' +\n 'revgoals rewrite rewrite_strat right ring ring_simplify rtauto set ' +\n 'setoid_reflexivity setoid_replace setoid_rewrite setoid_symmetry ' +\n 'setoid_transitivity shelve shelve_unifiable simpl simple simplify_eq solve ' +\n 'specialize split split_Rabs split_Rmult stepl stepr subst sum swap ' +\n 'symmetry tactic tauto time timeout top transitivity trivial try tryif ' +\n 'unfold unify until using vm_compute with'\n },\n contains: [\n hljs.QUOTE_STRING_MODE,\n hljs.COMMENT('\\\\(\\\\*', '\\\\*\\\\)'),\n hljs.C_NUMBER_MODE,\n {\n className: 'type',\n excludeBegin: true,\n begin: '\\\\|\\\\s*',\n end: '\\\\w+'\n },\n { // relevance booster\n begin: /[-=]>/\n }\n ]\n };\n}\n\nmodule.exports = coq;\n","/*\nLanguage: Caché Object Script\nAuthor: Nikita Savchenko <zitros.lab@gmail.com>\nCategory: enterprise, scripting\nWebsite: https://cedocs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls\n*/\n\n/** @type LanguageFn */\nfunction cos(hljs) {\n const STRINGS = {\n className: 'string',\n variants: [{\n begin: '\"',\n end: '\"',\n contains: [{ // escaped\n begin: \"\\\"\\\"\",\n relevance: 0\n }]\n }]\n };\n\n const NUMBERS = {\n className: \"number\",\n begin: \"\\\\b(\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)\",\n relevance: 0\n };\n\n const COS_KEYWORDS =\n 'property parameter class classmethod clientmethod extends as break ' +\n 'catch close continue do d|0 else elseif for goto halt hang h|0 if job ' +\n 'j|0 kill k|0 lock l|0 merge new open quit q|0 read r|0 return set s|0 ' +\n 'tcommit throw trollback try tstart use view while write w|0 xecute x|0 ' +\n 'zkill znspace zn ztrap zwrite zw zzdump zzwrite print zbreak zinsert ' +\n 'zload zprint zremove zsave zzprint mv mvcall mvcrt mvdim mvprint zquit ' +\n 'zsync ascii';\n\n // registered function - no need in them due to all functions are highlighted,\n // but I'll just leave this here.\n\n // \"$bit\", \"$bitcount\",\n // \"$bitfind\", \"$bitlogic\", \"$case\", \"$char\", \"$classmethod\", \"$classname\",\n // \"$compile\", \"$data\", \"$decimal\", \"$double\", \"$extract\", \"$factor\",\n // \"$find\", \"$fnumber\", \"$get\", \"$increment\", \"$inumber\", \"$isobject\",\n // \"$isvaliddouble\", \"$isvalidnum\", \"$justify\", \"$length\", \"$list\",\n // \"$listbuild\", \"$listdata\", \"$listfind\", \"$listfromstring\", \"$listget\",\n // \"$listlength\", \"$listnext\", \"$listsame\", \"$listtostring\", \"$listvalid\",\n // \"$locate\", \"$match\", \"$method\", \"$name\", \"$nconvert\", \"$next\",\n // \"$normalize\", \"$now\", \"$number\", \"$order\", \"$parameter\", \"$piece\",\n // \"$prefetchoff\", \"$prefetchon\", \"$property\", \"$qlength\", \"$qsubscript\",\n // \"$query\", \"$random\", \"$replace\", \"$reverse\", \"$sconvert\", \"$select\",\n // \"$sortbegin\", \"$sortend\", \"$stack\", \"$text\", \"$translate\", \"$view\",\n // \"$wascii\", \"$wchar\", \"$wextract\", \"$wfind\", \"$wiswide\", \"$wlength\",\n // \"$wreverse\", \"$xecute\", \"$zabs\", \"$zarccos\", \"$zarcsin\", \"$zarctan\",\n // \"$zcos\", \"$zcot\", \"$zcsc\", \"$zdate\", \"$zdateh\", \"$zdatetime\",\n // \"$zdatetimeh\", \"$zexp\", \"$zhex\", \"$zln\", \"$zlog\", \"$zpower\", \"$zsec\",\n // \"$zsin\", \"$zsqr\", \"$ztan\", \"$ztime\", \"$ztimeh\", \"$zboolean\",\n // \"$zconvert\", \"$zcrc\", \"$zcyc\", \"$zdascii\", \"$zdchar\", \"$zf\",\n // \"$ziswide\", \"$zlascii\", \"$zlchar\", \"$zname\", \"$zposition\", \"$zqascii\",\n // \"$zqchar\", \"$zsearch\", \"$zseek\", \"$zstrip\", \"$zwascii\", \"$zwchar\",\n // \"$zwidth\", \"$zwpack\", \"$zwbpack\", \"$zwunpack\", \"$zwbunpack\", \"$zzenkaku\",\n // \"$change\", \"$mv\", \"$mvat\", \"$mvfmt\", \"$mvfmts\", \"$mviconv\",\n // \"$mviconvs\", \"$mvinmat\", \"$mvlover\", \"$mvoconv\", \"$mvoconvs\", \"$mvraise\",\n // \"$mvtrans\", \"$mvv\", \"$mvname\", \"$zbitand\", \"$zbitcount\", \"$zbitfind\",\n // \"$zbitget\", \"$zbitlen\", \"$zbitnot\", \"$zbitor\", \"$zbitset\", \"$zbitstr\",\n // \"$zbitxor\", \"$zincrement\", \"$znext\", \"$zorder\", \"$zprevious\", \"$zsort\",\n // \"device\", \"$ecode\", \"$estack\", \"$etrap\", \"$halt\", \"$horolog\",\n // \"$io\", \"$job\", \"$key\", \"$namespace\", \"$principal\", \"$quit\", \"$roles\",\n // \"$storage\", \"$system\", \"$test\", \"$this\", \"$tlevel\", \"$username\",\n // \"$x\", \"$y\", \"$za\", \"$zb\", \"$zchild\", \"$zeof\", \"$zeos\", \"$zerror\",\n // \"$zhorolog\", \"$zio\", \"$zjob\", \"$zmode\", \"$znspace\", \"$zparent\", \"$zpi\",\n // \"$zpos\", \"$zreference\", \"$zstorage\", \"$ztimestamp\", \"$ztimezone\",\n // \"$ztrap\", \"$zversion\"\n\n return {\n name: 'Caché Object Script',\n case_insensitive: true,\n aliases: [\n \"cls\"\n ],\n keywords: COS_KEYWORDS,\n contains: [\n NUMBERS,\n STRINGS,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: \"comment\",\n begin: /;/,\n end: \"$\",\n relevance: 0\n },\n { // Functions and user-defined functions: write $ztime(60*60*3), $$myFunc(10), $$^Val(1)\n className: \"built_in\",\n begin: /(?:\\$\\$?|\\.\\.)\\^?[a-zA-Z]+/\n },\n { // Macro command: quit $$$OK\n className: \"built_in\",\n begin: /\\$\\$\\$[a-zA-Z]+/\n },\n { // Special (global) variables: write %request.Content; Built-in classes: %Library.Integer\n className: \"built_in\",\n begin: /%[a-z]+(?:\\.[a-z]+)*/\n },\n { // Global variable: set ^globalName = 12 write ^globalName\n className: \"symbol\",\n begin: /\\^%?[a-zA-Z][\\w]*/\n },\n { // Some control constructions: do ##class(Package.ClassName).Method(), ##super()\n className: \"keyword\",\n begin: /##class|##super|#define|#dim/\n },\n // sub-languages: are not fully supported by hljs by 11/15/2015\n // left for the future implementation.\n {\n begin: /&sql\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n subLanguage: \"sql\"\n },\n {\n begin: /&(js|jscript|javascript)</,\n end: />/,\n excludeBegin: true,\n excludeEnd: true,\n subLanguage: \"javascript\"\n },\n {\n // this brakes first and last tag, but this is the only way to embed a valid html\n begin: /&html<\\s*</,\n end: />\\s*>/,\n subLanguage: \"xml\"\n }\n ]\n };\n}\n\nmodule.exports = cos;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n return concat('(?=', re, ')');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction optional(re) {\n return concat('(', re, ')?');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/*\nLanguage: C++\nCategory: common, system\nWebsite: https://isocpp.org\n*/\n\n/** @type LanguageFn */\nfunction cpp(hljs) {\n // added for historic reasons because `hljs.C_LINE_COMMENT_MODE` does\n // not include such support nor can we be sure all the grammars depending\n // on it would desire this behavior\n const C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$', {\n contains: [\n {\n begin: /\\\\\\n/\n }\n ]\n });\n const DECLTYPE_AUTO_RE = 'decltype\\\\(auto\\\\)';\n const NAMESPACE_RE = '[a-zA-Z_]\\\\w*::';\n const TEMPLATE_ARGUMENT_RE = '<[^<>]+>';\n const FUNCTION_TYPE_RE = '(' +\n DECLTYPE_AUTO_RE + '|' +\n optional(NAMESPACE_RE) +\n '[a-zA-Z_]\\\\w*' + optional(TEMPLATE_ARGUMENT_RE) +\n ')';\n const CPP_PRIMITIVE_TYPES = {\n className: 'keyword',\n begin: '\\\\b[a-z\\\\d_]*_t\\\\b'\n };\n\n // https://en.cppreference.com/w/cpp/language/escape\n // \\\\ \\x \\xFF \\u2837 \\u00323747 \\374\n const CHARACTER_ESCAPES = '\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\\\S)';\n const STRINGS = {\n className: 'string',\n variants: [\n {\n begin: '(u8?|U|L)?\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: '(u8?|U|L)?\\'(' + CHARACTER_ESCAPES + \"|.)\",\n end: '\\'',\n illegal: '.'\n },\n hljs.END_SAME_AS_BEGIN({\n begin: /(?:u8?|U|L)?R\"([^()\\\\ ]{0,16})\\(/,\n end: /\\)([^()\\\\ ]{0,16})\"/\n })\n ]\n };\n\n const NUMBERS = {\n className: 'number',\n variants: [\n {\n begin: '\\\\b(0b[01\\']+)'\n },\n {\n begin: '(-?)\\\\b([\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)'\n },\n {\n begin: '(-?)(\\\\b0[xX][a-fA-F0-9\\']+|(\\\\b[\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)([eE][-+]?[\\\\d\\']+)?)'\n }\n ],\n relevance: 0\n };\n\n const PREPROCESSOR = {\n className: 'meta',\n begin: /#\\s*[a-z]+\\b/,\n end: /$/,\n keywords: {\n 'meta-keyword':\n 'if else elif endif define undef warning error line ' +\n 'pragma _Pragma ifdef ifndef include'\n },\n contains: [\n {\n begin: /\\\\\\n/,\n relevance: 0\n },\n hljs.inherit(STRINGS, {\n className: 'meta-string'\n }),\n {\n className: 'meta-string',\n begin: /<.*?>/\n },\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n\n const TITLE_MODE = {\n className: 'title',\n begin: optional(NAMESPACE_RE) + hljs.IDENT_RE,\n relevance: 0\n };\n\n const FUNCTION_TITLE = optional(NAMESPACE_RE) + hljs.IDENT_RE + '\\\\s*\\\\(';\n\n const COMMON_CPP_HINTS = [\n 'asin',\n 'atan2',\n 'atan',\n 'calloc',\n 'ceil',\n 'cosh',\n 'cos',\n 'exit',\n 'exp',\n 'fabs',\n 'floor',\n 'fmod',\n 'fprintf',\n 'fputs',\n 'free',\n 'frexp',\n 'auto_ptr',\n 'deque',\n 'list',\n 'queue',\n 'stack',\n 'vector',\n 'map',\n 'set',\n 'pair',\n 'bitset',\n 'multiset',\n 'multimap',\n 'unordered_set',\n 'fscanf',\n 'future',\n 'isalnum',\n 'isalpha',\n 'iscntrl',\n 'isdigit',\n 'isgraph',\n 'islower',\n 'isprint',\n 'ispunct',\n 'isspace',\n 'isupper',\n 'isxdigit',\n 'tolower',\n 'toupper',\n 'labs',\n 'ldexp',\n 'log10',\n 'log',\n 'malloc',\n 'realloc',\n 'memchr',\n 'memcmp',\n 'memcpy',\n 'memset',\n 'modf',\n 'pow',\n 'printf',\n 'putchar',\n 'puts',\n 'scanf',\n 'sinh',\n 'sin',\n 'snprintf',\n 'sprintf',\n 'sqrt',\n 'sscanf',\n 'strcat',\n 'strchr',\n 'strcmp',\n 'strcpy',\n 'strcspn',\n 'strlen',\n 'strncat',\n 'strncmp',\n 'strncpy',\n 'strpbrk',\n 'strrchr',\n 'strspn',\n 'strstr',\n 'tanh',\n 'tan',\n 'unordered_map',\n 'unordered_multiset',\n 'unordered_multimap',\n 'priority_queue',\n 'make_pair',\n 'array',\n 'shared_ptr',\n 'abort',\n 'terminate',\n 'abs',\n 'acos',\n 'vfprintf',\n 'vprintf',\n 'vsprintf',\n 'endl',\n 'initializer_list',\n 'unique_ptr',\n 'complex',\n 'imaginary',\n 'std',\n 'string',\n 'wstring',\n 'cin',\n 'cout',\n 'cerr',\n 'clog',\n 'stdin',\n 'stdout',\n 'stderr',\n 'stringstream',\n 'istringstream',\n 'ostringstream'\n ];\n\n const CPP_KEYWORDS = {\n keyword: 'int float while private char char8_t char16_t char32_t catch import module export virtual operator sizeof ' +\n 'dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace ' +\n 'unsigned long volatile static protected bool template mutable if public friend ' +\n 'do goto auto void enum else break extern using asm case typeid wchar_t ' +\n 'short reinterpret_cast|10 default double register explicit signed typename try this ' +\n 'switch continue inline delete alignas alignof constexpr consteval constinit decltype ' +\n 'concept co_await co_return co_yield requires ' +\n 'noexcept static_assert thread_local restrict final override ' +\n 'atomic_bool atomic_char atomic_schar ' +\n 'atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong ' +\n 'atomic_ullong new throw return ' +\n 'and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq',\n built_in: '_Bool _Complex _Imaginary',\n _relevance_hints: COMMON_CPP_HINTS,\n literal: 'true false nullptr NULL'\n };\n\n const FUNCTION_DISPATCH = {\n className: \"function.dispatch\",\n relevance: 0,\n keywords: CPP_KEYWORDS,\n begin: concat(\n /\\b/,\n /(?!decltype)/,\n /(?!if)/,\n /(?!for)/,\n /(?!while)/,\n hljs.IDENT_RE,\n lookahead(/\\s*\\(/))\n };\n\n const EXPRESSION_CONTAINS = [\n FUNCTION_DISPATCH,\n PREPROCESSOR,\n CPP_PRIMITIVE_TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n STRINGS\n ];\n\n\n const EXPRESSION_CONTEXT = {\n // This mode covers expression context where we can't expect a function\n // definition and shouldn't highlight anything that looks like one:\n // `return some()`, `else if()`, `(x*sum(1, 2))`\n variants: [\n {\n begin: /=/,\n end: /;/\n },\n {\n begin: /\\(/,\n end: /\\)/\n },\n {\n beginKeywords: 'new throw return else',\n end: /;/\n }\n ],\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([ 'self' ]),\n relevance: 0\n }\n ]),\n relevance: 0\n };\n\n const FUNCTION_DECLARATION = {\n className: 'function',\n begin: '(' + FUNCTION_TYPE_RE + '[\\\\*&\\\\s]+)+' + FUNCTION_TITLE,\n returnBegin: true,\n end: /[{;=]/,\n excludeEnd: true,\n keywords: CPP_KEYWORDS,\n illegal: /[^\\w\\s\\*&:<>.]/,\n contains: [\n { // to prevent it from being confused as the function title\n begin: DECLTYPE_AUTO_RE,\n keywords: CPP_KEYWORDS,\n relevance: 0\n },\n {\n begin: FUNCTION_TITLE,\n returnBegin: true,\n contains: [ TITLE_MODE ],\n relevance: 0\n },\n // needed because we do not have look-behind on the below rule\n // to prevent it from grabbing the final : in a :: pair\n {\n begin: /::/,\n relevance: 0\n },\n // initializers\n {\n begin: /:/,\n endsWithParent: true,\n contains: [\n STRINGS,\n NUMBERS\n ]\n },\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n relevance: 0,\n contains: [\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n CPP_PRIMITIVE_TYPES,\n // Count matching parentheses.\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n relevance: 0,\n contains: [\n 'self',\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n CPP_PRIMITIVE_TYPES\n ]\n }\n ]\n },\n CPP_PRIMITIVE_TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n PREPROCESSOR\n ]\n };\n\n return {\n name: 'C++',\n aliases: [\n 'cc',\n 'c++',\n 'h++',\n 'hpp',\n 'hh',\n 'hxx',\n 'cxx'\n ],\n keywords: CPP_KEYWORDS,\n illegal: '</',\n classNameAliases: {\n \"function.dispatch\": \"built_in\"\n },\n contains: [].concat(\n EXPRESSION_CONTEXT,\n FUNCTION_DECLARATION,\n FUNCTION_DISPATCH,\n EXPRESSION_CONTAINS,\n [\n PREPROCESSOR,\n { // containers: ie, `vector <int> rooms (9);`\n begin: '\\\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\\\s*<',\n end: '>',\n keywords: CPP_KEYWORDS,\n contains: [\n 'self',\n CPP_PRIMITIVE_TYPES\n ]\n },\n {\n begin: hljs.IDENT_RE + '::',\n keywords: CPP_KEYWORDS\n },\n {\n className: 'class',\n beginKeywords: 'enum class struct union',\n end: /[{;:<>=]/,\n contains: [\n {\n beginKeywords: \"final class struct\"\n },\n hljs.TITLE_MODE\n ]\n }\n ]),\n exports: {\n preprocessor: PREPROCESSOR,\n strings: STRINGS,\n keywords: CPP_KEYWORDS\n }\n };\n}\n\nmodule.exports = cpp;\n","/*\nLanguage: crmsh\nAuthor: Kristoffer Gronlund <kgronlund@suse.com>\nWebsite: http://crmsh.github.io\nDescription: Syntax Highlighting for the crmsh DSL\nCategory: config\n*/\n\n/** @type LanguageFn */\nfunction crmsh(hljs) {\n const RESOURCES = 'primitive rsc_template';\n const COMMANDS = 'group clone ms master location colocation order fencing_topology ' +\n 'rsc_ticket acl_target acl_group user role ' +\n 'tag xml';\n const PROPERTY_SETS = 'property rsc_defaults op_defaults';\n const KEYWORDS = 'params meta operations op rule attributes utilization';\n const OPERATORS = 'read write deny defined not_defined in_range date spec in ' +\n 'ref reference attribute type xpath version and or lt gt tag ' +\n 'lte gte eq ne \\\\';\n const TYPES = 'number string';\n const LITERALS = 'Master Started Slave Stopped start promote demote stop monitor true false';\n\n return {\n name: 'crmsh',\n aliases: [\n 'crm',\n 'pcmk'\n ],\n case_insensitive: true,\n keywords: {\n keyword: KEYWORDS + ' ' + OPERATORS + ' ' + TYPES,\n literal: LITERALS\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n beginKeywords: 'node',\n starts: {\n end: '\\\\s*([\\\\w_-]+:)?',\n starts: {\n className: 'title',\n end: '\\\\s*[\\\\$\\\\w_][\\\\w_-]*'\n }\n }\n },\n {\n beginKeywords: RESOURCES,\n starts: {\n className: 'title',\n end: '\\\\s*[\\\\$\\\\w_][\\\\w_-]*',\n starts: {\n end: '\\\\s*@?[\\\\w_][\\\\w_\\\\.:-]*'\n }\n }\n },\n {\n begin: '\\\\b(' + COMMANDS.split(' ').join('|') + ')\\\\s+',\n keywords: COMMANDS,\n starts: {\n className: 'title',\n end: '[\\\\$\\\\w_][\\\\w_-]*'\n }\n },\n {\n beginKeywords: PROPERTY_SETS,\n starts: {\n className: 'title',\n end: '\\\\s*([\\\\w_-]+:)?'\n }\n },\n hljs.QUOTE_STRING_MODE,\n {\n className: 'meta',\n begin: '(ocf|systemd|service|lsb):[\\\\w_:-]+',\n relevance: 0\n },\n {\n className: 'number',\n begin: '\\\\b\\\\d+(\\\\.\\\\d+)?(ms|s|h|m)?',\n relevance: 0\n },\n {\n className: 'literal',\n begin: '[-]?(infinity|inf)',\n relevance: 0\n },\n {\n className: 'attr',\n begin: /([A-Za-z$_#][\\w_-]+)=/,\n relevance: 0\n },\n {\n className: 'tag',\n begin: '</?',\n end: '/?>',\n relevance: 0\n }\n ]\n };\n}\n\nmodule.exports = crmsh;\n","/*\nLanguage: Crystal\nAuthor: TSUYUSATO Kitsune <make.just.on@gmail.com>\nWebsite: https://crystal-lang.org\n*/\n\n/** @type LanguageFn */\nfunction crystal(hljs) {\n const INT_SUFFIX = '(_?[ui](8|16|32|64|128))?';\n const FLOAT_SUFFIX = '(_?f(32|64))?';\n const CRYSTAL_IDENT_RE = '[a-zA-Z_]\\\\w*[!?=]?';\n const CRYSTAL_METHOD_RE = '[a-zA-Z_]\\\\w*[!?=]?|[-+~]@|<<|>>|[=!]~|===?|<=>|[<>]=?|\\\\*\\\\*|[-/+%^&*~|]|//|//=|&[-+*]=?|&\\\\*\\\\*|\\\\[\\\\][=?]?';\n const CRYSTAL_PATH_RE = '[A-Za-z_]\\\\w*(::\\\\w+)*(\\\\?|!)?';\n const CRYSTAL_KEYWORDS = {\n $pattern: CRYSTAL_IDENT_RE,\n keyword:\n 'abstract alias annotation as as? asm begin break case class def do else elsif end ensure enum extend for fun if ' +\n 'include instance_sizeof is_a? lib macro module next nil? of out pointerof private protected rescue responds_to? ' +\n 'return require select self sizeof struct super then type typeof union uninitialized unless until verbatim when while with yield ' +\n '__DIR__ __END_LINE__ __FILE__ __LINE__',\n literal: 'false nil true'\n };\n const SUBST = {\n className: 'subst',\n begin: /#\\{/,\n end: /\\}/,\n keywords: CRYSTAL_KEYWORDS\n };\n const EXPANSION = {\n className: 'template-variable',\n variants: [\n {\n begin: '\\\\{\\\\{',\n end: '\\\\}\\\\}'\n },\n {\n begin: '\\\\{%',\n end: '%\\\\}'\n }\n ],\n keywords: CRYSTAL_KEYWORDS\n };\n\n function recursiveParen(begin, end) {\n const\n contains = [\n {\n begin: begin,\n end: end\n }\n ];\n contains[0].contains = contains;\n return contains;\n }\n const STRING = {\n className: 'string',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n variants: [\n {\n begin: /'/,\n end: /'/\n },\n {\n begin: /\"/,\n end: /\"/\n },\n {\n begin: /`/,\n end: /`/\n },\n {\n begin: '%[Qwi]?\\\\(',\n end: '\\\\)',\n contains: recursiveParen('\\\\(', '\\\\)')\n },\n {\n begin: '%[Qwi]?\\\\[',\n end: '\\\\]',\n contains: recursiveParen('\\\\[', '\\\\]')\n },\n {\n begin: '%[Qwi]?\\\\{',\n end: /\\}/,\n contains: recursiveParen(/\\{/, /\\}/)\n },\n {\n begin: '%[Qwi]?<',\n end: '>',\n contains: recursiveParen('<', '>')\n },\n {\n begin: '%[Qwi]?\\\\|',\n end: '\\\\|'\n },\n {\n begin: /<<-\\w+$/,\n end: /^\\s*\\w+$/\n }\n ],\n relevance: 0\n };\n const Q_STRING = {\n className: 'string',\n variants: [\n {\n begin: '%q\\\\(',\n end: '\\\\)',\n contains: recursiveParen('\\\\(', '\\\\)')\n },\n {\n begin: '%q\\\\[',\n end: '\\\\]',\n contains: recursiveParen('\\\\[', '\\\\]')\n },\n {\n begin: '%q\\\\{',\n end: /\\}/,\n contains: recursiveParen(/\\{/, /\\}/)\n },\n {\n begin: '%q<',\n end: '>',\n contains: recursiveParen('<', '>')\n },\n {\n begin: '%q\\\\|',\n end: '\\\\|'\n },\n {\n begin: /<<-'\\w+'$/,\n end: /^\\s*\\w+$/\n }\n ],\n relevance: 0\n };\n const REGEXP = {\n begin: '(?!%\\\\})(' + hljs.RE_STARTERS_RE + '|\\\\n|\\\\b(case|if|select|unless|until|when|while)\\\\b)\\\\s*',\n keywords: 'case if select unless until when while',\n contains: [\n {\n className: 'regexp',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n variants: [\n {\n begin: '//[a-z]*',\n relevance: 0\n },\n {\n begin: '/(?!\\\\/)',\n end: '/[a-z]*'\n }\n ]\n }\n ],\n relevance: 0\n };\n const REGEXP2 = {\n className: 'regexp',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n variants: [\n {\n begin: '%r\\\\(',\n end: '\\\\)',\n contains: recursiveParen('\\\\(', '\\\\)')\n },\n {\n begin: '%r\\\\[',\n end: '\\\\]',\n contains: recursiveParen('\\\\[', '\\\\]')\n },\n {\n begin: '%r\\\\{',\n end: /\\}/,\n contains: recursiveParen(/\\{/, /\\}/)\n },\n {\n begin: '%r<',\n end: '>',\n contains: recursiveParen('<', '>')\n },\n {\n begin: '%r\\\\|',\n end: '\\\\|'\n }\n ],\n relevance: 0\n };\n const ATTRIBUTE = {\n className: 'meta',\n begin: '@\\\\[',\n end: '\\\\]',\n contains: [\n hljs.inherit(hljs.QUOTE_STRING_MODE, {\n className: 'meta-string'\n })\n ]\n };\n const CRYSTAL_DEFAULT_CONTAINS = [\n EXPANSION,\n STRING,\n Q_STRING,\n REGEXP2,\n REGEXP,\n ATTRIBUTE,\n hljs.HASH_COMMENT_MODE,\n {\n className: 'class',\n beginKeywords: 'class module struct',\n end: '$|;',\n illegal: /=/,\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.inherit(hljs.TITLE_MODE, {\n begin: CRYSTAL_PATH_RE\n }),\n { // relevance booster for inheritance\n begin: '<'\n }\n ]\n },\n {\n className: 'class',\n beginKeywords: 'lib enum union',\n end: '$|;',\n illegal: /=/,\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.inherit(hljs.TITLE_MODE, {\n begin: CRYSTAL_PATH_RE\n })\n ]\n },\n {\n beginKeywords: 'annotation',\n end: '$|;',\n illegal: /=/,\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.inherit(hljs.TITLE_MODE, {\n begin: CRYSTAL_PATH_RE\n })\n ],\n relevance: 2\n },\n {\n className: 'function',\n beginKeywords: 'def',\n end: /\\B\\b/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n begin: CRYSTAL_METHOD_RE,\n endsParent: true\n })\n ]\n },\n {\n className: 'function',\n beginKeywords: 'fun macro',\n end: /\\B\\b/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n begin: CRYSTAL_METHOD_RE,\n endsParent: true\n })\n ],\n relevance: 2\n },\n {\n className: 'symbol',\n begin: hljs.UNDERSCORE_IDENT_RE + '(!|\\\\?)?:',\n relevance: 0\n },\n {\n className: 'symbol',\n begin: ':',\n contains: [\n STRING,\n {\n begin: CRYSTAL_METHOD_RE\n }\n ],\n relevance: 0\n },\n {\n className: 'number',\n variants: [\n {\n begin: '\\\\b0b([01_]+)' + INT_SUFFIX\n },\n {\n begin: '\\\\b0o([0-7_]+)' + INT_SUFFIX\n },\n {\n begin: '\\\\b0x([A-Fa-f0-9_]+)' + INT_SUFFIX\n },\n {\n begin: '\\\\b([1-9][0-9_]*[0-9]|[0-9])(\\\\.[0-9][0-9_]*)?([eE]_?[-+]?[0-9_]*)?' + FLOAT_SUFFIX + '(?!_)'\n },\n {\n begin: '\\\\b([1-9][0-9_]*|0)' + INT_SUFFIX\n }\n ],\n relevance: 0\n }\n ];\n SUBST.contains = CRYSTAL_DEFAULT_CONTAINS;\n EXPANSION.contains = CRYSTAL_DEFAULT_CONTAINS.slice(1); // without EXPANSION\n\n return {\n name: 'Crystal',\n aliases: [ 'cr' ],\n keywords: CRYSTAL_KEYWORDS,\n contains: CRYSTAL_DEFAULT_CONTAINS\n };\n}\n\nmodule.exports = crystal;\n","/*\nLanguage: C#\nAuthor: Jason Diamond <jason@diamond.name>\nContributor: Nicolas LLOBERA <nllobera@gmail.com>, Pieter Vantorre <pietervantorre@gmail.com>, David Pine <david.pine@microsoft.com>\nWebsite: https://docs.microsoft.com/en-us/dotnet/csharp/\nCategory: common\n*/\n\n/** @type LanguageFn */\nfunction csharp(hljs) {\n const BUILT_IN_KEYWORDS = [\n 'bool',\n 'byte',\n 'char',\n 'decimal',\n 'delegate',\n 'double',\n 'dynamic',\n 'enum',\n 'float',\n 'int',\n 'long',\n 'nint',\n 'nuint',\n 'object',\n 'sbyte',\n 'short',\n 'string',\n 'ulong',\n 'uint',\n 'ushort'\n ];\n const FUNCTION_MODIFIERS = [\n 'public',\n 'private',\n 'protected',\n 'static',\n 'internal',\n 'protected',\n 'abstract',\n 'async',\n 'extern',\n 'override',\n 'unsafe',\n 'virtual',\n 'new',\n 'sealed',\n 'partial'\n ];\n const LITERAL_KEYWORDS = [\n 'default',\n 'false',\n 'null',\n 'true'\n ];\n const NORMAL_KEYWORDS = [\n 'abstract',\n 'as',\n 'base',\n 'break',\n 'case',\n 'class',\n 'const',\n 'continue',\n 'do',\n 'else',\n 'event',\n 'explicit',\n 'extern',\n 'finally',\n 'fixed',\n 'for',\n 'foreach',\n 'goto',\n 'if',\n 'implicit',\n 'in',\n 'interface',\n 'internal',\n 'is',\n 'lock',\n 'namespace',\n 'new',\n 'operator',\n 'out',\n 'override',\n 'params',\n 'private',\n 'protected',\n 'public',\n 'readonly',\n 'record',\n 'ref',\n 'return',\n 'sealed',\n 'sizeof',\n 'stackalloc',\n 'static',\n 'struct',\n 'switch',\n 'this',\n 'throw',\n 'try',\n 'typeof',\n 'unchecked',\n 'unsafe',\n 'using',\n 'virtual',\n 'void',\n 'volatile',\n 'while'\n ];\n const CONTEXTUAL_KEYWORDS = [\n 'add',\n 'alias',\n 'and',\n 'ascending',\n 'async',\n 'await',\n 'by',\n 'descending',\n 'equals',\n 'from',\n 'get',\n 'global',\n 'group',\n 'init',\n 'into',\n 'join',\n 'let',\n 'nameof',\n 'not',\n 'notnull',\n 'on',\n 'or',\n 'orderby',\n 'partial',\n 'remove',\n 'select',\n 'set',\n 'unmanaged',\n 'value|0',\n 'var',\n 'when',\n 'where',\n 'with',\n 'yield'\n ];\n\n const KEYWORDS = {\n keyword: NORMAL_KEYWORDS.concat(CONTEXTUAL_KEYWORDS),\n built_in: BUILT_IN_KEYWORDS,\n literal: LITERAL_KEYWORDS\n };\n const TITLE_MODE = hljs.inherit(hljs.TITLE_MODE, {\n begin: '[a-zA-Z](\\\\.?\\\\w)*'\n });\n const NUMBERS = {\n className: 'number',\n variants: [\n {\n begin: '\\\\b(0b[01\\']+)'\n },\n {\n begin: '(-?)\\\\b([\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)(u|U|l|L|ul|UL|f|F|b|B)'\n },\n {\n begin: '(-?)(\\\\b0[xX][a-fA-F0-9\\']+|(\\\\b[\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)([eE][-+]?[\\\\d\\']+)?)'\n }\n ],\n relevance: 0\n };\n const VERBATIM_STRING = {\n className: 'string',\n begin: '@\"',\n end: '\"',\n contains: [\n {\n begin: '\"\"'\n }\n ]\n };\n const VERBATIM_STRING_NO_LF = hljs.inherit(VERBATIM_STRING, {\n illegal: /\\n/\n });\n const SUBST = {\n className: 'subst',\n begin: /\\{/,\n end: /\\}/,\n keywords: KEYWORDS\n };\n const SUBST_NO_LF = hljs.inherit(SUBST, {\n illegal: /\\n/\n });\n const INTERPOLATED_STRING = {\n className: 'string',\n begin: /\\$\"/,\n end: '\"',\n illegal: /\\n/,\n contains: [\n {\n begin: /\\{\\{/\n },\n {\n begin: /\\}\\}/\n },\n hljs.BACKSLASH_ESCAPE,\n SUBST_NO_LF\n ]\n };\n const INTERPOLATED_VERBATIM_STRING = {\n className: 'string',\n begin: /\\$@\"/,\n end: '\"',\n contains: [\n {\n begin: /\\{\\{/\n },\n {\n begin: /\\}\\}/\n },\n {\n begin: '\"\"'\n },\n SUBST\n ]\n };\n const INTERPOLATED_VERBATIM_STRING_NO_LF = hljs.inherit(INTERPOLATED_VERBATIM_STRING, {\n illegal: /\\n/,\n contains: [\n {\n begin: /\\{\\{/\n },\n {\n begin: /\\}\\}/\n },\n {\n begin: '\"\"'\n },\n SUBST_NO_LF\n ]\n });\n SUBST.contains = [\n INTERPOLATED_VERBATIM_STRING,\n INTERPOLATED_STRING,\n VERBATIM_STRING,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n NUMBERS,\n hljs.C_BLOCK_COMMENT_MODE\n ];\n SUBST_NO_LF.contains = [\n INTERPOLATED_VERBATIM_STRING_NO_LF,\n INTERPOLATED_STRING,\n VERBATIM_STRING_NO_LF,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n NUMBERS,\n hljs.inherit(hljs.C_BLOCK_COMMENT_MODE, {\n illegal: /\\n/\n })\n ];\n const STRING = {\n variants: [\n INTERPOLATED_VERBATIM_STRING,\n INTERPOLATED_STRING,\n VERBATIM_STRING,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n };\n\n const GENERIC_MODIFIER = {\n begin: \"<\",\n end: \">\",\n contains: [\n {\n beginKeywords: \"in out\"\n },\n TITLE_MODE\n ]\n };\n const TYPE_IDENT_RE = hljs.IDENT_RE + '(<' + hljs.IDENT_RE + '(\\\\s*,\\\\s*' + hljs.IDENT_RE + ')*>)?(\\\\[\\\\])?';\n const AT_IDENTIFIER = {\n // prevents expressions like `@class` from incorrect flagging\n // `class` as a keyword\n begin: \"@\" + hljs.IDENT_RE,\n relevance: 0\n };\n\n return {\n name: 'C#',\n aliases: [\n 'cs',\n 'c#'\n ],\n keywords: KEYWORDS,\n illegal: /::/,\n contains: [\n hljs.COMMENT(\n '///',\n '$',\n {\n returnBegin: true,\n contains: [\n {\n className: 'doctag',\n variants: [\n {\n begin: '///',\n relevance: 0\n },\n {\n begin: '<!--|-->'\n },\n {\n begin: '</?',\n end: '>'\n }\n ]\n }\n ]\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'meta',\n begin: '#',\n end: '$',\n keywords: {\n 'meta-keyword': 'if else elif endif define undef warning error line region endregion pragma checksum'\n }\n },\n STRING,\n NUMBERS,\n {\n beginKeywords: 'class interface',\n relevance: 0,\n end: /[{;=]/,\n illegal: /[^\\s:,]/,\n contains: [\n {\n beginKeywords: \"where class\"\n },\n TITLE_MODE,\n GENERIC_MODIFIER,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n beginKeywords: 'namespace',\n relevance: 0,\n end: /[{;=]/,\n illegal: /[^\\s:]/,\n contains: [\n TITLE_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n beginKeywords: 'record',\n relevance: 0,\n end: /[{;=]/,\n illegal: /[^\\s:]/,\n contains: [\n TITLE_MODE,\n GENERIC_MODIFIER,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n // [Attributes(\"\")]\n className: 'meta',\n begin: '^\\\\s*\\\\[',\n excludeBegin: true,\n end: '\\\\]',\n excludeEnd: true,\n contains: [\n {\n className: 'meta-string',\n begin: /\"/,\n end: /\"/\n }\n ]\n },\n {\n // Expression keywords prevent 'keyword Name(...)' from being\n // recognized as a function definition\n beginKeywords: 'new return throw await else',\n relevance: 0\n },\n {\n className: 'function',\n begin: '(' + TYPE_IDENT_RE + '\\\\s+)+' + hljs.IDENT_RE + '\\\\s*(<.+>\\\\s*)?\\\\(',\n returnBegin: true,\n end: /\\s*[{;=]/,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n // prevents these from being highlighted `title`\n {\n beginKeywords: FUNCTION_MODIFIERS.join(\" \"),\n relevance: 0\n },\n {\n begin: hljs.IDENT_RE + '\\\\s*(<.+>\\\\s*)?\\\\(',\n returnBegin: true,\n contains: [\n hljs.TITLE_MODE,\n GENERIC_MODIFIER\n ],\n relevance: 0\n },\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n STRING,\n NUMBERS,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n AT_IDENTIFIER\n ]\n };\n}\n\nmodule.exports = csharp;\n","/*\nLanguage: CSP\nDescription: Content Security Policy definition highlighting\nAuthor: Taras <oxdef@oxdef.info>\nWebsite: https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP\n\nvim: ts=2 sw=2 st=2\n*/\n\n/** @type LanguageFn */\nfunction csp(hljs) {\n return {\n name: 'CSP',\n case_insensitive: false,\n keywords: {\n $pattern: '[a-zA-Z][a-zA-Z0-9_-]*',\n keyword: 'base-uri child-src connect-src default-src font-src form-action ' +\n 'frame-ancestors frame-src img-src media-src object-src plugin-types ' +\n 'report-uri sandbox script-src style-src'\n },\n contains: [\n {\n className: 'string',\n begin: \"'\",\n end: \"'\"\n },\n {\n className: 'attribute',\n begin: '^Content',\n end: ':',\n excludeEnd: true\n }\n ]\n };\n}\n\nmodule.exports = csp;\n","const MODES = (hljs) => {\n return {\n IMPORTANT: {\n className: 'meta',\n begin: '!important'\n },\n HEXCOLOR: {\n className: 'number',\n begin: '#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})'\n },\n ATTRIBUTE_SELECTOR_MODE: {\n className: 'selector-attr',\n begin: /\\[/,\n end: /\\]/,\n illegal: '$',\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n }\n };\n};\n\nconst TAGS = [\n 'a',\n 'abbr',\n 'address',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'blockquote',\n 'body',\n 'button',\n 'canvas',\n 'caption',\n 'cite',\n 'code',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'header',\n 'hgroup',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'mark',\n 'menu',\n 'nav',\n 'object',\n 'ol',\n 'p',\n 'q',\n 'quote',\n 'samp',\n 'section',\n 'span',\n 'strong',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'ul',\n 'var',\n 'video'\n];\n\nconst MEDIA_FEATURES = [\n 'any-hover',\n 'any-pointer',\n 'aspect-ratio',\n 'color',\n 'color-gamut',\n 'color-index',\n 'device-aspect-ratio',\n 'device-height',\n 'device-width',\n 'display-mode',\n 'forced-colors',\n 'grid',\n 'height',\n 'hover',\n 'inverted-colors',\n 'monochrome',\n 'orientation',\n 'overflow-block',\n 'overflow-inline',\n 'pointer',\n 'prefers-color-scheme',\n 'prefers-contrast',\n 'prefers-reduced-motion',\n 'prefers-reduced-transparency',\n 'resolution',\n 'scan',\n 'scripting',\n 'update',\n 'width',\n // TODO: find a better solution?\n 'min-width',\n 'max-width',\n 'min-height',\n 'max-height'\n];\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes\nconst PSEUDO_CLASSES = [\n 'active',\n 'any-link',\n 'blank',\n 'checked',\n 'current',\n 'default',\n 'defined',\n 'dir', // dir()\n 'disabled',\n 'drop',\n 'empty',\n 'enabled',\n 'first',\n 'first-child',\n 'first-of-type',\n 'fullscreen',\n 'future',\n 'focus',\n 'focus-visible',\n 'focus-within',\n 'has', // has()\n 'host', // host or host()\n 'host-context', // host-context()\n 'hover',\n 'indeterminate',\n 'in-range',\n 'invalid',\n 'is', // is()\n 'lang', // lang()\n 'last-child',\n 'last-of-type',\n 'left',\n 'link',\n 'local-link',\n 'not', // not()\n 'nth-child', // nth-child()\n 'nth-col', // nth-col()\n 'nth-last-child', // nth-last-child()\n 'nth-last-col', // nth-last-col()\n 'nth-last-of-type', //nth-last-of-type()\n 'nth-of-type', //nth-of-type()\n 'only-child',\n 'only-of-type',\n 'optional',\n 'out-of-range',\n 'past',\n 'placeholder-shown',\n 'read-only',\n 'read-write',\n 'required',\n 'right',\n 'root',\n 'scope',\n 'target',\n 'target-within',\n 'user-invalid',\n 'valid',\n 'visited',\n 'where' // where()\n];\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements\nconst PSEUDO_ELEMENTS = [\n 'after',\n 'backdrop',\n 'before',\n 'cue',\n 'cue-region',\n 'first-letter',\n 'first-line',\n 'grammar-error',\n 'marker',\n 'part',\n 'placeholder',\n 'selection',\n 'slotted',\n 'spelling-error'\n];\n\nconst ATTRIBUTES = [\n 'align-content',\n 'align-items',\n 'align-self',\n 'animation',\n 'animation-delay',\n 'animation-direction',\n 'animation-duration',\n 'animation-fill-mode',\n 'animation-iteration-count',\n 'animation-name',\n 'animation-play-state',\n 'animation-timing-function',\n 'auto',\n 'backface-visibility',\n 'background',\n 'background-attachment',\n 'background-clip',\n 'background-color',\n 'background-image',\n 'background-origin',\n 'background-position',\n 'background-repeat',\n 'background-size',\n 'border',\n 'border-bottom',\n 'border-bottom-color',\n 'border-bottom-left-radius',\n 'border-bottom-right-radius',\n 'border-bottom-style',\n 'border-bottom-width',\n 'border-collapse',\n 'border-color',\n 'border-image',\n 'border-image-outset',\n 'border-image-repeat',\n 'border-image-slice',\n 'border-image-source',\n 'border-image-width',\n 'border-left',\n 'border-left-color',\n 'border-left-style',\n 'border-left-width',\n 'border-radius',\n 'border-right',\n 'border-right-color',\n 'border-right-style',\n 'border-right-width',\n 'border-spacing',\n 'border-style',\n 'border-top',\n 'border-top-color',\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-top-style',\n 'border-top-width',\n 'border-width',\n 'bottom',\n 'box-decoration-break',\n 'box-shadow',\n 'box-sizing',\n 'break-after',\n 'break-before',\n 'break-inside',\n 'caption-side',\n 'clear',\n 'clip',\n 'clip-path',\n 'color',\n 'column-count',\n 'column-fill',\n 'column-gap',\n 'column-rule',\n 'column-rule-color',\n 'column-rule-style',\n 'column-rule-width',\n 'column-span',\n 'column-width',\n 'columns',\n 'content',\n 'counter-increment',\n 'counter-reset',\n 'cursor',\n 'direction',\n 'display',\n 'empty-cells',\n 'filter',\n 'flex',\n 'flex-basis',\n 'flex-direction',\n 'flex-flow',\n 'flex-grow',\n 'flex-shrink',\n 'flex-wrap',\n 'float',\n 'font',\n 'font-display',\n 'font-family',\n 'font-feature-settings',\n 'font-kerning',\n 'font-language-override',\n 'font-size',\n 'font-size-adjust',\n 'font-smoothing',\n 'font-stretch',\n 'font-style',\n 'font-variant',\n 'font-variant-ligatures',\n 'font-variation-settings',\n 'font-weight',\n 'height',\n 'hyphens',\n 'icon',\n 'image-orientation',\n 'image-rendering',\n 'image-resolution',\n 'ime-mode',\n 'inherit',\n 'initial',\n 'justify-content',\n 'left',\n 'letter-spacing',\n 'line-height',\n 'list-style',\n 'list-style-image',\n 'list-style-position',\n 'list-style-type',\n 'margin',\n 'margin-bottom',\n 'margin-left',\n 'margin-right',\n 'margin-top',\n 'marks',\n 'mask',\n 'max-height',\n 'max-width',\n 'min-height',\n 'min-width',\n 'nav-down',\n 'nav-index',\n 'nav-left',\n 'nav-right',\n 'nav-up',\n 'none',\n 'normal',\n 'object-fit',\n 'object-position',\n 'opacity',\n 'order',\n 'orphans',\n 'outline',\n 'outline-color',\n 'outline-offset',\n 'outline-style',\n 'outline-width',\n 'overflow',\n 'overflow-wrap',\n 'overflow-x',\n 'overflow-y',\n 'padding',\n 'padding-bottom',\n 'padding-left',\n 'padding-right',\n 'padding-top',\n 'page-break-after',\n 'page-break-before',\n 'page-break-inside',\n 'perspective',\n 'perspective-origin',\n 'pointer-events',\n 'position',\n 'quotes',\n 'resize',\n 'right',\n 'src', // @font-face\n 'tab-size',\n 'table-layout',\n 'text-align',\n 'text-align-last',\n 'text-decoration',\n 'text-decoration-color',\n 'text-decoration-line',\n 'text-decoration-style',\n 'text-indent',\n 'text-overflow',\n 'text-rendering',\n 'text-shadow',\n 'text-transform',\n 'text-underline-position',\n 'top',\n 'transform',\n 'transform-origin',\n 'transform-style',\n 'transition',\n 'transition-delay',\n 'transition-duration',\n 'transition-property',\n 'transition-timing-function',\n 'unicode-bidi',\n 'vertical-align',\n 'visibility',\n 'white-space',\n 'widows',\n 'width',\n 'word-break',\n 'word-spacing',\n 'word-wrap',\n 'z-index'\n // reverse makes sure longer attributes `font-weight` are matched fully\n // instead of getting false positives on say `font`\n].reverse();\n\n/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n return concat('(?=', re, ')');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/*\nLanguage: CSS\nCategory: common, css\nWebsite: https://developer.mozilla.org/en-US/docs/Web/CSS\n*/\n\n/** @type LanguageFn */\nfunction css(hljs) {\n const modes = MODES(hljs);\n const FUNCTION_DISPATCH = {\n className: \"built_in\",\n begin: /[\\w-]+(?=\\()/\n };\n const VENDOR_PREFIX = {\n begin: /-(webkit|moz|ms|o)-(?=[a-z])/\n };\n const AT_MODIFIERS = \"and or not only\";\n const AT_PROPERTY_RE = /@-?\\w[\\w]*(-\\w+)*/; // @-webkit-keyframes\n const IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*';\n const STRINGS = [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ];\n\n return {\n name: 'CSS',\n case_insensitive: true,\n illegal: /[=|'\\$]/,\n keywords: {\n keyframePosition: \"from to\"\n },\n classNameAliases: {\n // for visual continuity with `tag {}` and because we\n // don't have a great class for this?\n keyframePosition: \"selector-tag\"\n },\n contains: [\n hljs.C_BLOCK_COMMENT_MODE,\n VENDOR_PREFIX,\n // to recognize keyframe 40% etc which are outside the scope of our\n // attribute value mode\n hljs.CSS_NUMBER_MODE,\n {\n className: 'selector-id',\n begin: /#[A-Za-z0-9_-]+/,\n relevance: 0\n },\n {\n className: 'selector-class',\n begin: '\\\\.' + IDENT_RE,\n relevance: 0\n },\n modes.ATTRIBUTE_SELECTOR_MODE,\n {\n className: 'selector-pseudo',\n variants: [\n {\n begin: ':(' + PSEUDO_CLASSES.join('|') + ')'\n },\n {\n begin: '::(' + PSEUDO_ELEMENTS.join('|') + ')'\n }\n ]\n },\n // we may actually need this (12/2020)\n // { // pseudo-selector params\n // begin: /\\(/,\n // end: /\\)/,\n // contains: [ hljs.CSS_NUMBER_MODE ]\n // },\n {\n className: 'attribute',\n begin: '\\\\b(' + ATTRIBUTES.join('|') + ')\\\\b'\n },\n // attribute values\n {\n begin: ':',\n end: '[;}]',\n contains: [\n modes.HEXCOLOR,\n modes.IMPORTANT,\n hljs.CSS_NUMBER_MODE,\n ...STRINGS,\n // needed to highlight these as strings and to avoid issues with\n // illegal characters that might be inside urls that would tigger the\n // languages illegal stack\n {\n begin: /(url|data-uri)\\(/,\n end: /\\)/,\n relevance: 0, // from keywords\n keywords: {\n built_in: \"url data-uri\"\n },\n contains: [\n {\n className: \"string\",\n // any character other than `)` as in `url()` will be the start\n // of a string, which ends with `)` (from the parent mode)\n begin: /[^)]/,\n endsWithParent: true,\n excludeEnd: true\n }\n ]\n },\n FUNCTION_DISPATCH\n ]\n },\n {\n begin: lookahead(/@/),\n end: '[{;]',\n relevance: 0,\n illegal: /:/, // break on Less variables @var: ...\n contains: [\n {\n className: 'keyword',\n begin: AT_PROPERTY_RE\n },\n {\n begin: /\\s/,\n endsWithParent: true,\n excludeEnd: true,\n relevance: 0,\n keywords: {\n $pattern: /[a-z-]+/,\n keyword: AT_MODIFIERS,\n attribute: MEDIA_FEATURES.join(\" \")\n },\n contains: [\n {\n begin: /[a-z-]+(?=:)/,\n className: \"attribute\"\n },\n ...STRINGS,\n hljs.CSS_NUMBER_MODE\n ]\n }\n ]\n },\n {\n className: 'selector-tag',\n begin: '\\\\b(' + TAGS.join('|') + ')\\\\b'\n }\n ]\n };\n}\n\nmodule.exports = css;\n","/*\nLanguage: D\nAuthor: Aleksandar Ruzicic <aleksandar@ruzicic.info>\nDescription: D is a language with C-like syntax and static typing. It pragmatically combines efficiency, control, and modeling power, with safety and programmer productivity.\nVersion: 1.0a\nWebsite: https://dlang.org\nDate: 2012-04-08\n*/\n\n/**\n * Known issues:\n *\n * - invalid hex string literals will be recognized as a double quoted strings\n * but 'x' at the beginning of string will not be matched\n *\n * - delimited string literals are not checked for matching end delimiter\n * (not possible to do with js regexp)\n *\n * - content of token string is colored as a string (i.e. no keyword coloring inside a token string)\n * also, content of token string is not validated to contain only valid D tokens\n *\n * - special token sequence rule is not strictly following D grammar (anything following #line\n * up to the end of line is matched as special token sequence)\n */\n\n/** @type LanguageFn */\nfunction d(hljs) {\n /**\n * Language keywords\n *\n * @type {Object}\n */\n const D_KEYWORDS = {\n $pattern: hljs.UNDERSCORE_IDENT_RE,\n keyword:\n 'abstract alias align asm assert auto body break byte case cast catch class ' +\n 'const continue debug default delete deprecated do else enum export extern final ' +\n 'finally for foreach foreach_reverse|10 goto if immutable import in inout int ' +\n 'interface invariant is lazy macro mixin module new nothrow out override package ' +\n 'pragma private protected public pure ref return scope shared static struct ' +\n 'super switch synchronized template this throw try typedef typeid typeof union ' +\n 'unittest version void volatile while with __FILE__ __LINE__ __gshared|10 ' +\n '__thread __traits __DATE__ __EOF__ __TIME__ __TIMESTAMP__ __VENDOR__ __VERSION__',\n built_in:\n 'bool cdouble cent cfloat char creal dchar delegate double dstring float function ' +\n 'idouble ifloat ireal long real short string ubyte ucent uint ulong ushort wchar ' +\n 'wstring',\n literal:\n 'false null true'\n };\n\n /**\n * Number literal regexps\n *\n * @type {String}\n */\n const decimal_integer_re = '(0|[1-9][\\\\d_]*)';\n const decimal_integer_nosus_re = '(0|[1-9][\\\\d_]*|\\\\d[\\\\d_]*|[\\\\d_]+?\\\\d)';\n const binary_integer_re = '0[bB][01_]+';\n const hexadecimal_digits_re = '([\\\\da-fA-F][\\\\da-fA-F_]*|_[\\\\da-fA-F][\\\\da-fA-F_]*)';\n const hexadecimal_integer_re = '0[xX]' + hexadecimal_digits_re;\n\n const decimal_exponent_re = '([eE][+-]?' + decimal_integer_nosus_re + ')';\n const decimal_float_re = '(' + decimal_integer_nosus_re + '(\\\\.\\\\d*|' + decimal_exponent_re + ')|' +\n '\\\\d+\\\\.' + decimal_integer_nosus_re + '|' +\n '\\\\.' + decimal_integer_re + decimal_exponent_re + '?' +\n ')';\n const hexadecimal_float_re = '(0[xX](' +\n hexadecimal_digits_re + '\\\\.' + hexadecimal_digits_re + '|' +\n '\\\\.?' + hexadecimal_digits_re +\n ')[pP][+-]?' + decimal_integer_nosus_re + ')';\n\n const integer_re = '(' +\n decimal_integer_re + '|' +\n binary_integer_re + '|' +\n hexadecimal_integer_re +\n ')';\n\n const float_re = '(' +\n hexadecimal_float_re + '|' +\n decimal_float_re +\n ')';\n\n /**\n * Escape sequence supported in D string and character literals\n *\n * @type {String}\n */\n const escape_sequence_re = '\\\\\\\\(' +\n '[\\'\"\\\\?\\\\\\\\abfnrtv]|' + // common escapes\n 'u[\\\\dA-Fa-f]{4}|' + // four hex digit unicode codepoint\n '[0-7]{1,3}|' + // one to three octal digit ascii char code\n 'x[\\\\dA-Fa-f]{2}|' + // two hex digit ascii char code\n 'U[\\\\dA-Fa-f]{8}' + // eight hex digit unicode codepoint\n ')|' +\n '&[a-zA-Z\\\\d]{2,};'; // named character entity\n\n /**\n * D integer number literals\n *\n * @type {Object}\n */\n const D_INTEGER_MODE = {\n className: 'number',\n begin: '\\\\b' + integer_re + '(L|u|U|Lu|LU|uL|UL)?',\n relevance: 0\n };\n\n /**\n * [D_FLOAT_MODE description]\n * @type {Object}\n */\n const D_FLOAT_MODE = {\n className: 'number',\n begin: '\\\\b(' +\n float_re + '([fF]|L|i|[fF]i|Li)?|' +\n integer_re + '(i|[fF]i|Li)' +\n ')',\n relevance: 0\n };\n\n /**\n * D character literal\n *\n * @type {Object}\n */\n const D_CHARACTER_MODE = {\n className: 'string',\n begin: '\\'(' + escape_sequence_re + '|.)',\n end: '\\'',\n illegal: '.'\n };\n\n /**\n * D string escape sequence\n *\n * @type {Object}\n */\n const D_ESCAPE_SEQUENCE = {\n begin: escape_sequence_re,\n relevance: 0\n };\n\n /**\n * D double quoted string literal\n *\n * @type {Object}\n */\n const D_STRING_MODE = {\n className: 'string',\n begin: '\"',\n contains: [D_ESCAPE_SEQUENCE],\n end: '\"[cwd]?'\n };\n\n /**\n * D wysiwyg and delimited string literals\n *\n * @type {Object}\n */\n const D_WYSIWYG_DELIMITED_STRING_MODE = {\n className: 'string',\n begin: '[rq]\"',\n end: '\"[cwd]?',\n relevance: 5\n };\n\n /**\n * D alternate wysiwyg string literal\n *\n * @type {Object}\n */\n const D_ALTERNATE_WYSIWYG_STRING_MODE = {\n className: 'string',\n begin: '`',\n end: '`[cwd]?'\n };\n\n /**\n * D hexadecimal string literal\n *\n * @type {Object}\n */\n const D_HEX_STRING_MODE = {\n className: 'string',\n begin: 'x\"[\\\\da-fA-F\\\\s\\\\n\\\\r]*\"[cwd]?',\n relevance: 10\n };\n\n /**\n * D delimited string literal\n *\n * @type {Object}\n */\n const D_TOKEN_STRING_MODE = {\n className: 'string',\n begin: 'q\"\\\\{',\n end: '\\\\}\"'\n };\n\n /**\n * Hashbang support\n *\n * @type {Object}\n */\n const D_HASHBANG_MODE = {\n className: 'meta',\n begin: '^#!',\n end: '$',\n relevance: 5\n };\n\n /**\n * D special token sequence\n *\n * @type {Object}\n */\n const D_SPECIAL_TOKEN_SEQUENCE_MODE = {\n className: 'meta',\n begin: '#(line)',\n end: '$',\n relevance: 5\n };\n\n /**\n * D attributes\n *\n * @type {Object}\n */\n const D_ATTRIBUTE_MODE = {\n className: 'keyword',\n begin: '@[a-zA-Z_][a-zA-Z_\\\\d]*'\n };\n\n /**\n * D nesting comment\n *\n * @type {Object}\n */\n const D_NESTING_COMMENT_MODE = hljs.COMMENT(\n '\\\\/\\\\+',\n '\\\\+\\\\/',\n {\n contains: ['self'],\n relevance: 10\n }\n );\n\n return {\n name: 'D',\n keywords: D_KEYWORDS,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n D_NESTING_COMMENT_MODE,\n D_HEX_STRING_MODE,\n D_STRING_MODE,\n D_WYSIWYG_DELIMITED_STRING_MODE,\n D_ALTERNATE_WYSIWYG_STRING_MODE,\n D_TOKEN_STRING_MODE,\n D_FLOAT_MODE,\n D_INTEGER_MODE,\n D_CHARACTER_MODE,\n D_HASHBANG_MODE,\n D_SPECIAL_TOKEN_SEQUENCE_MODE,\n D_ATTRIBUTE_MODE\n ]\n };\n}\n\nmodule.exports = d;\n","/*\nLanguage: Dart\nRequires: markdown.js\nAuthor: Maxim Dikun <dikmax@gmail.com>\nDescription: Dart a modern, object-oriented language developed by Google. For more information see https://www.dartlang.org/\nWebsite: https://dart.dev\nCategory: scripting\n*/\n\n/** @type LanguageFn */\nfunction dart(hljs) {\n const SUBST = {\n className: 'subst',\n variants: [{\n begin: '\\\\$[A-Za-z0-9_]+'\n }]\n };\n\n const BRACED_SUBST = {\n className: 'subst',\n variants: [{\n begin: /\\$\\{/,\n end: /\\}/\n }],\n keywords: 'true false null this is new super'\n };\n\n const STRING = {\n className: 'string',\n variants: [\n {\n begin: 'r\\'\\'\\'',\n end: '\\'\\'\\''\n },\n {\n begin: 'r\"\"\"',\n end: '\"\"\"'\n },\n {\n begin: 'r\\'',\n end: '\\'',\n illegal: '\\\\n'\n },\n {\n begin: 'r\"',\n end: '\"',\n illegal: '\\\\n'\n },\n {\n begin: '\\'\\'\\'',\n end: '\\'\\'\\'',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST,\n BRACED_SUBST\n ]\n },\n {\n begin: '\"\"\"',\n end: '\"\"\"',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST,\n BRACED_SUBST\n ]\n },\n {\n begin: '\\'',\n end: '\\'',\n illegal: '\\\\n',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST,\n BRACED_SUBST\n ]\n },\n {\n begin: '\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST,\n BRACED_SUBST\n ]\n }\n ]\n };\n BRACED_SUBST.contains = [\n hljs.C_NUMBER_MODE,\n STRING\n ];\n\n const BUILT_IN_TYPES = [\n // dart:core\n 'Comparable',\n 'DateTime',\n 'Duration',\n 'Function',\n 'Iterable',\n 'Iterator',\n 'List',\n 'Map',\n 'Match',\n 'Object',\n 'Pattern',\n 'RegExp',\n 'Set',\n 'Stopwatch',\n 'String',\n 'StringBuffer',\n 'StringSink',\n 'Symbol',\n 'Type',\n 'Uri',\n 'bool',\n 'double',\n 'int',\n 'num',\n // dart:html\n 'Element',\n 'ElementList'\n ];\n const NULLABLE_BUILT_IN_TYPES = BUILT_IN_TYPES.map((e) => `${e}?`);\n\n const KEYWORDS = {\n keyword: 'abstract as assert async await break case catch class const continue covariant default deferred do ' +\n 'dynamic else enum export extends extension external factory false final finally for Function get hide if ' +\n 'implements import in inferface is late library mixin new null on operator part required rethrow return set ' +\n 'show static super switch sync this throw true try typedef var void while with yield',\n built_in:\n BUILT_IN_TYPES\n .concat(NULLABLE_BUILT_IN_TYPES)\n .concat([\n // dart:core\n 'Never',\n 'Null',\n 'dynamic',\n 'print',\n // dart:html\n 'document',\n 'querySelector',\n 'querySelectorAll',\n 'window'\n ]),\n $pattern: /[A-Za-z][A-Za-z0-9_]*\\??/\n };\n\n return {\n name: 'Dart',\n keywords: KEYWORDS,\n contains: [\n STRING,\n hljs.COMMENT(\n /\\/\\*\\*(?!\\/)/,\n /\\*\\//,\n {\n subLanguage: 'markdown',\n relevance: 0\n }\n ),\n hljs.COMMENT(\n /\\/{3,} ?/,\n /$/, {\n contains: [{\n subLanguage: 'markdown',\n begin: '.',\n end: '$',\n relevance: 0\n }]\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'class',\n beginKeywords: 'class interface',\n end: /\\{/,\n excludeEnd: true,\n contains: [\n {\n beginKeywords: 'extends implements'\n },\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n hljs.C_NUMBER_MODE,\n {\n className: 'meta',\n begin: '@[A-Za-z]+'\n },\n {\n begin: '=>' // No markup, just a relevance booster\n }\n ]\n };\n}\n\nmodule.exports = dart;\n","/*\nLanguage: Delphi\nWebsite: https://www.embarcadero.com/products/delphi\n*/\n\n/** @type LanguageFn */\nfunction delphi(hljs) {\n const KEYWORDS =\n 'exports register file shl array record property for mod while set ally label uses raise not ' +\n 'stored class safecall var interface or private static exit index inherited to else stdcall ' +\n 'override shr asm far resourcestring finalization packed virtual out and protected library do ' +\n 'xorwrite goto near function end div overload object unit begin string on inline repeat until ' +\n 'destructor write message program with read initialization except default nil if case cdecl in ' +\n 'downto threadvar of try pascal const external constructor type public then implementation ' +\n 'finally published procedure absolute reintroduce operator as is abstract alias assembler ' +\n 'bitpacked break continue cppdecl cvar enumerator experimental platform deprecated ' +\n 'unimplemented dynamic export far16 forward generic helper implements interrupt iochecks ' +\n 'local name nodefault noreturn nostackframe oldfpccall otherwise saveregisters softfloat ' +\n 'specialize strict unaligned varargs ';\n const COMMENT_MODES = [\n hljs.C_LINE_COMMENT_MODE,\n hljs.COMMENT(/\\{/, /\\}/, {\n relevance: 0\n }),\n hljs.COMMENT(/\\(\\*/, /\\*\\)/, {\n relevance: 10\n })\n ];\n const DIRECTIVE = {\n className: 'meta',\n variants: [\n {\n begin: /\\{\\$/,\n end: /\\}/\n },\n {\n begin: /\\(\\*\\$/,\n end: /\\*\\)/\n }\n ]\n };\n const STRING = {\n className: 'string',\n begin: /'/,\n end: /'/,\n contains: [{\n begin: /''/\n }]\n };\n const NUMBER = {\n className: 'number',\n relevance: 0,\n // Source: https://www.freepascal.org/docs-html/ref/refse6.html\n variants: [\n {\n // Hexadecimal notation, e.g., $7F.\n begin: '\\\\$[0-9A-Fa-f]+'\n },\n {\n // Octal notation, e.g., &42.\n begin: '&[0-7]+'\n },\n {\n // Binary notation, e.g., %1010.\n begin: '%[01]+'\n }\n ]\n };\n const CHAR_STRING = {\n className: 'string',\n begin: /(#\\d+)+/\n };\n const CLASS = {\n begin: hljs.IDENT_RE + '\\\\s*=\\\\s*class\\\\s*\\\\(',\n returnBegin: true,\n contains: [hljs.TITLE_MODE]\n };\n const FUNCTION = {\n className: 'function',\n beginKeywords: 'function constructor destructor procedure',\n end: /[:;]/,\n keywords: 'function constructor|10 destructor|10 procedure|10',\n contains: [\n hljs.TITLE_MODE,\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n contains: [\n STRING,\n CHAR_STRING,\n DIRECTIVE\n ].concat(COMMENT_MODES)\n },\n DIRECTIVE\n ].concat(COMMENT_MODES)\n };\n return {\n name: 'Delphi',\n aliases: [\n 'dpr',\n 'dfm',\n 'pas',\n 'pascal',\n 'freepascal',\n 'lazarus',\n 'lpr',\n 'lfm'\n ],\n case_insensitive: true,\n keywords: KEYWORDS,\n illegal: /\"|\\$[G-Zg-z]|\\/\\*|<\\/|\\|/,\n contains: [\n STRING,\n CHAR_STRING,\n hljs.NUMBER_MODE,\n NUMBER,\n CLASS,\n FUNCTION,\n DIRECTIVE\n ].concat(COMMENT_MODES)\n };\n}\n\nmodule.exports = delphi;\n","/*\nLanguage: Diff\nDescription: Unified and context diff\nAuthor: Vasily Polovnyov <vast@whiteants.net>\nWebsite: https://www.gnu.org/software/diffutils/\nCategory: common\n*/\n\n/** @type LanguageFn */\nfunction diff(hljs) {\n return {\n name: 'Diff',\n aliases: ['patch'],\n contains: [\n {\n className: 'meta',\n relevance: 10,\n variants: [\n {\n begin: /^@@ +-\\d+,\\d+ +\\+\\d+,\\d+ +@@/\n },\n {\n begin: /^\\*\\*\\* +\\d+,\\d+ +\\*\\*\\*\\*$/\n },\n {\n begin: /^--- +\\d+,\\d+ +----$/\n }\n ]\n },\n {\n className: 'comment',\n variants: [\n {\n begin: /Index: /,\n end: /$/\n },\n {\n begin: /^index/,\n end: /$/\n },\n {\n begin: /={3,}/,\n end: /$/\n },\n {\n begin: /^-{3}/,\n end: /$/\n },\n {\n begin: /^\\*{3} /,\n end: /$/\n },\n {\n begin: /^\\+{3}/,\n end: /$/\n },\n {\n begin: /^\\*{15}$/\n },\n {\n begin: /^diff --git/,\n end: /$/\n }\n ]\n },\n {\n className: 'addition',\n begin: /^\\+/,\n end: /$/\n },\n {\n className: 'deletion',\n begin: /^-/,\n end: /$/\n },\n {\n className: 'addition',\n begin: /^!/,\n end: /$/\n }\n ]\n };\n}\n\nmodule.exports = diff;\n","/*\nLanguage: Django\nDescription: Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.\nRequires: xml.js\nAuthor: Ivan Sagalaev <maniac@softwaremaniacs.org>\nContributors: Ilya Baryshev <baryshev@gmail.com>\nWebsite: https://www.djangoproject.com\nCategory: template\n*/\n\n/** @type LanguageFn */\nfunction django(hljs) {\n const FILTER = {\n begin: /\\|[A-Za-z]+:?/,\n keywords: {\n name:\n 'truncatewords removetags linebreaksbr yesno get_digit timesince random striptags ' +\n 'filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands ' +\n 'title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode ' +\n 'timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort ' +\n 'dictsortreversed default_if_none pluralize lower join center default ' +\n 'truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first ' +\n 'escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize ' +\n 'localtime utc timezone'\n },\n contains: [\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE\n ]\n };\n\n return {\n name: 'Django',\n aliases: ['jinja'],\n case_insensitive: true,\n subLanguage: 'xml',\n contains: [\n hljs.COMMENT(/\\{%\\s*comment\\s*%\\}/, /\\{%\\s*endcomment\\s*%\\}/),\n hljs.COMMENT(/\\{#/, /#\\}/),\n {\n className: 'template-tag',\n begin: /\\{%/,\n end: /%\\}/,\n contains: [{\n className: 'name',\n begin: /\\w+/,\n keywords: {\n name:\n 'comment endcomment load templatetag ifchanged endifchanged if endif firstof for ' +\n 'endfor ifnotequal endifnotequal widthratio extends include spaceless ' +\n 'endspaceless regroup ifequal endifequal ssi now with cycle url filter ' +\n 'endfilter debug block endblock else autoescape endautoescape csrf_token empty elif ' +\n 'endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix ' +\n 'plural get_current_language language get_available_languages ' +\n 'get_current_language_bidi get_language_info get_language_info_list localize ' +\n 'endlocalize localtime endlocaltime timezone endtimezone get_current_timezone ' +\n 'verbatim'\n },\n starts: {\n endsWithParent: true,\n keywords: 'in by as',\n contains: [FILTER],\n relevance: 0\n }\n }]\n },\n {\n className: 'template-variable',\n begin: /\\{\\{/,\n end: /\\}\\}/,\n contains: [FILTER]\n }\n ]\n };\n}\n\nmodule.exports = django;\n","/*\nLanguage: DNS Zone\nAuthor: Tim Schumacher <tim@datenknoten.me>\nCategory: config\nWebsite: https://en.wikipedia.org/wiki/Zone_file\n*/\n\n/** @type LanguageFn */\nfunction dns(hljs) {\n return {\n name: 'DNS Zone',\n aliases: [\n 'bind',\n 'zone'\n ],\n keywords: {\n keyword:\n 'IN A AAAA AFSDB APL CAA CDNSKEY CDS CERT CNAME DHCID DLV DNAME DNSKEY DS HIP IPSECKEY KEY KX ' +\n 'LOC MX NAPTR NS NSEC NSEC3 NSEC3PARAM PTR RRSIG RP SIG SOA SRV SSHFP TA TKEY TLSA TSIG TXT'\n },\n contains: [\n hljs.COMMENT(';', '$', {\n relevance: 0\n }),\n {\n className: 'meta',\n begin: /^\\$(TTL|GENERATE|INCLUDE|ORIGIN)\\b/\n },\n // IPv6\n {\n className: 'number',\n begin: '((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:)))\\\\b'\n },\n // IPv4\n {\n className: 'number',\n begin: '((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\\\b'\n },\n hljs.inherit(hljs.NUMBER_MODE, {\n begin: /\\b\\d+[dhwm]?/\n })\n ]\n };\n}\n\nmodule.exports = dns;\n","/*\nLanguage: Dockerfile\nRequires: bash.js\nAuthor: Alexis Hénaut <alexis@henaut.net>\nDescription: language definition for Dockerfile files\nWebsite: https://docs.docker.com/engine/reference/builder/\nCategory: config\n*/\n\n/** @type LanguageFn */\nfunction dockerfile(hljs) {\n return {\n name: 'Dockerfile',\n aliases: ['docker'],\n case_insensitive: true,\n keywords: 'from maintainer expose env arg user onbuild stopsignal',\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE,\n {\n beginKeywords: 'run cmd entrypoint volume add copy workdir label healthcheck shell',\n starts: {\n end: /[^\\\\]$/,\n subLanguage: 'bash'\n }\n }\n ],\n illegal: '</'\n };\n}\n\nmodule.exports = dockerfile;\n","/*\nLanguage: Batch file (DOS)\nAuthor: Alexander Makarov <sam@rmcreative.ru>\nContributors: Anton Kochkov <anton.kochkov@gmail.com>\nWebsite: https://en.wikipedia.org/wiki/Batch_file\n*/\n\n/** @type LanguageFn */\nfunction dos(hljs) {\n const COMMENT = hljs.COMMENT(\n /^\\s*@?rem\\b/, /$/,\n {\n relevance: 10\n }\n );\n const LABEL = {\n className: 'symbol',\n begin: '^\\\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\\\s+label)',\n relevance: 0\n };\n return {\n name: 'Batch file (DOS)',\n aliases: [\n 'bat',\n 'cmd'\n ],\n case_insensitive: true,\n illegal: /\\/\\*/,\n keywords: {\n keyword:\n 'if else goto for in do call exit not exist errorlevel defined ' +\n 'equ neq lss leq gtr geq',\n built_in:\n 'prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux ' +\n 'shift cd dir echo setlocal endlocal set pause copy ' +\n 'append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color ' +\n 'comp compact convert date dir diskcomp diskcopy doskey erase fs ' +\n 'find findstr format ftype graftabl help keyb label md mkdir mode more move path ' +\n 'pause print popd pushd promt rd recover rem rename replace restore rmdir shift ' +\n 'sort start subst time title tree type ver verify vol ' +\n // winutils\n 'ping net ipconfig taskkill xcopy ren del'\n },\n contains: [\n {\n className: 'variable',\n begin: /%%[^ ]|%[^ ]+?%|![^ ]+?!/\n },\n {\n className: 'function',\n begin: LABEL.begin,\n end: 'goto:eof',\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n begin: '([_a-zA-Z]\\\\w*\\\\.)*([_a-zA-Z]\\\\w*:)?[_a-zA-Z]\\\\w*'\n }),\n COMMENT\n ]\n },\n {\n className: 'number',\n begin: '\\\\b\\\\d+',\n relevance: 0\n },\n COMMENT\n ]\n };\n}\n\nmodule.exports = dos;\n","/*\n Language: dsconfig\n Description: dsconfig batch configuration language for LDAP directory servers\n Contributors: Jacob Childress <jacobc@gmail.com>\n Category: enterprise, config\n */\n\n /** @type LanguageFn */\nfunction dsconfig(hljs) {\n const QUOTED_PROPERTY = {\n className: 'string',\n begin: /\"/,\n end: /\"/\n };\n const APOS_PROPERTY = {\n className: 'string',\n begin: /'/,\n end: /'/\n };\n const UNQUOTED_PROPERTY = {\n className: 'string',\n begin: /[\\w\\-?]+:\\w+/,\n end: /\\W/,\n relevance: 0\n };\n const VALUELESS_PROPERTY = {\n className: 'string',\n begin: /\\w+(\\-\\w+)*/,\n end: /(?=\\W)/,\n relevance: 0\n };\n\n return {\n keywords: 'dsconfig',\n contains: [\n {\n className: 'keyword',\n begin: '^dsconfig',\n end: /\\s/,\n excludeEnd: true,\n relevance: 10\n },\n {\n className: 'built_in',\n begin: /(list|create|get|set|delete)-(\\w+)/,\n end: /\\s/,\n excludeEnd: true,\n illegal: '!@#$%^&*()',\n relevance: 10\n },\n {\n className: 'built_in',\n begin: /--(\\w+)/,\n end: /\\s/,\n excludeEnd: true\n },\n QUOTED_PROPERTY,\n APOS_PROPERTY,\n UNQUOTED_PROPERTY,\n VALUELESS_PROPERTY,\n hljs.HASH_COMMENT_MODE\n ]\n };\n}\n\nmodule.exports = dsconfig;\n","/*\nLanguage: Device Tree\nDescription: *.dts files used in the Linux kernel\nAuthor: Martin Braun <martin.braun@ettus.com>, Moritz Fischer <moritz.fischer@ettus.com>\nWebsite: https://elinux.org/Device_Tree_Reference\nCategory: config\n*/\n\n/** @type LanguageFn */\nfunction dts(hljs) {\n const STRINGS = {\n className: 'string',\n variants: [\n hljs.inherit(hljs.QUOTE_STRING_MODE, {\n begin: '((u8?|U)|L)?\"'\n }),\n {\n begin: '(u8?|U)?R\"',\n end: '\"',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: '\\'\\\\\\\\?.',\n end: '\\'',\n illegal: '.'\n }\n ]\n };\n\n const NUMBERS = {\n className: 'number',\n variants: [\n {\n begin: '\\\\b(\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)(u|U|l|L|ul|UL|f|F)'\n },\n {\n begin: hljs.C_NUMBER_RE\n }\n ],\n relevance: 0\n };\n\n const PREPROCESSOR = {\n className: 'meta',\n begin: '#',\n end: '$',\n keywords: {\n 'meta-keyword': 'if else elif endif define undef ifdef ifndef'\n },\n contains: [\n {\n begin: /\\\\\\n/,\n relevance: 0\n },\n {\n beginKeywords: 'include',\n end: '$',\n keywords: {\n 'meta-keyword': 'include'\n },\n contains: [\n hljs.inherit(STRINGS, {\n className: 'meta-string'\n }),\n {\n className: 'meta-string',\n begin: '<',\n end: '>',\n illegal: '\\\\n'\n }\n ]\n },\n STRINGS,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n\n const DTS_REFERENCE = {\n className: 'variable',\n begin: /&[a-z\\d_]*\\b/\n };\n\n const DTS_KEYWORD = {\n className: 'meta-keyword',\n begin: '/[a-z][a-z\\\\d-]*/'\n };\n\n const DTS_LABEL = {\n className: 'symbol',\n begin: '^\\\\s*[a-zA-Z_][a-zA-Z\\\\d_]*:'\n };\n\n const DTS_CELL_PROPERTY = {\n className: 'params',\n begin: '<',\n end: '>',\n contains: [\n NUMBERS,\n DTS_REFERENCE\n ]\n };\n\n const DTS_NODE = {\n className: 'class',\n begin: /[a-zA-Z_][a-zA-Z\\d_@]*\\s\\{/,\n end: /[{;=]/,\n returnBegin: true,\n excludeEnd: true\n };\n\n const DTS_ROOT_NODE = {\n className: 'class',\n begin: '/\\\\s*\\\\{',\n end: /\\};/,\n relevance: 10,\n contains: [\n DTS_REFERENCE,\n DTS_KEYWORD,\n DTS_LABEL,\n DTS_NODE,\n DTS_CELL_PROPERTY,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n STRINGS\n ]\n };\n\n return {\n name: 'Device Tree',\n keywords: \"\",\n contains: [\n DTS_ROOT_NODE,\n DTS_REFERENCE,\n DTS_KEYWORD,\n DTS_LABEL,\n DTS_NODE,\n DTS_CELL_PROPERTY,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n STRINGS,\n PREPROCESSOR,\n {\n begin: hljs.IDENT_RE + '::',\n keywords: \"\"\n }\n ]\n };\n}\n\nmodule.exports = dts;\n","/*\nLanguage: Dust\nRequires: xml.js\nAuthor: Michael Allen <michael.allen@benefitfocus.com>\nDescription: Matcher for dust.js templates.\nWebsite: https://www.dustjs.com\nCategory: template\n*/\n\n/** @type LanguageFn */\nfunction dust(hljs) {\n const EXPRESSION_KEYWORDS = 'if eq ne lt lte gt gte select default math sep';\n return {\n name: 'Dust',\n aliases: ['dst'],\n case_insensitive: true,\n subLanguage: 'xml',\n contains: [\n {\n className: 'template-tag',\n begin: /\\{[#\\/]/,\n end: /\\}/,\n illegal: /;/,\n contains: [{\n className: 'name',\n begin: /[a-zA-Z\\.-]+/,\n starts: {\n endsWithParent: true,\n relevance: 0,\n contains: [hljs.QUOTE_STRING_MODE]\n }\n }]\n },\n {\n className: 'template-variable',\n begin: /\\{/,\n end: /\\}/,\n illegal: /;/,\n keywords: EXPRESSION_KEYWORDS\n }\n ]\n };\n}\n\nmodule.exports = dust;\n","/*\nLanguage: Extended Backus-Naur Form\nAuthor: Alex McKibben <alex@nullscope.net>\nWebsite: https://en.wikipedia.org/wiki/Extended_Backus–Naur_form\n*/\n\n/** @type LanguageFn */\nfunction ebnf(hljs) {\n const commentMode = hljs.COMMENT(/\\(\\*/, /\\*\\)/);\n\n const nonTerminalMode = {\n className: \"attribute\",\n begin: /^[ ]*[a-zA-Z]+([\\s_-]+[a-zA-Z]+)*/\n };\n\n const specialSequenceMode = {\n className: \"meta\",\n begin: /\\?.*\\?/\n };\n\n const ruleBodyMode = {\n begin: /=/,\n end: /[.;]/,\n contains: [\n commentMode,\n specialSequenceMode,\n {\n // terminals\n className: 'string',\n variants: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n begin: '`',\n end: '`'\n }\n ]\n }\n ]\n };\n\n return {\n name: 'Extended Backus-Naur Form',\n illegal: /\\S/,\n contains: [\n commentMode,\n nonTerminalMode,\n ruleBodyMode\n ]\n };\n}\n\nmodule.exports = ebnf;\n","/*\nLanguage: Elixir\nAuthor: Josh Adams <josh@isotope11.com>\nDescription: language definition for Elixir source code files (.ex and .exs). Based on ruby language support.\nCategory: functional\nWebsite: https://elixir-lang.org\n*/\n\n/** @type LanguageFn */\nfunction elixir(hljs) {\n const ELIXIR_IDENT_RE = '[a-zA-Z_][a-zA-Z0-9_.]*(!|\\\\?)?';\n const ELIXIR_METHOD_RE = '[a-zA-Z_]\\\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-/+%^&*~`|]|\\\\[\\\\]=?';\n const ELIXIR_KEYWORDS = {\n $pattern: ELIXIR_IDENT_RE,\n keyword: 'and false then defined module in return redo retry end for true self when ' +\n 'next until do begin unless nil break not case cond alias while ensure or ' +\n 'include use alias fn quote require import with|0'\n };\n const SUBST = {\n className: 'subst',\n begin: /#\\{/,\n end: /\\}/,\n keywords: ELIXIR_KEYWORDS\n };\n const NUMBER = {\n className: 'number',\n begin: '(\\\\b0o[0-7_]+)|(\\\\b0b[01_]+)|(\\\\b0x[0-9a-fA-F_]+)|(-?\\\\b[1-9][0-9_]*(\\\\.[0-9_]+([eE][-+]?[0-9]+)?)?)',\n relevance: 0\n };\n const SIGIL_DELIMITERS = '[/|([{<\"\\']';\n const LOWERCASE_SIGIL = {\n className: 'string',\n begin: '~[a-z]' + '(?=' + SIGIL_DELIMITERS + ')',\n contains: [\n {\n endsParent: true,\n contains: [\n {\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n variants: [\n {\n begin: /\"/,\n end: /\"/\n },\n {\n begin: /'/,\n end: /'/\n },\n {\n begin: /\\//,\n end: /\\//\n },\n {\n begin: /\\|/,\n end: /\\|/\n },\n {\n begin: /\\(/,\n end: /\\)/\n },\n {\n begin: /\\[/,\n end: /\\]/\n },\n {\n begin: /\\{/,\n end: /\\}/\n },\n {\n begin: /</,\n end: />/\n }\n ]\n }\n ]\n }\n ]\n };\n\n const UPCASE_SIGIL = {\n className: 'string',\n begin: '~[A-Z]' + '(?=' + SIGIL_DELIMITERS + ')',\n contains: [\n {\n begin: /\"/,\n end: /\"/\n },\n {\n begin: /'/,\n end: /'/\n },\n {\n begin: /\\//,\n end: /\\//\n },\n {\n begin: /\\|/,\n end: /\\|/\n },\n {\n begin: /\\(/,\n end: /\\)/\n },\n {\n begin: /\\[/,\n end: /\\]/\n },\n {\n begin: /\\{/,\n end: /\\}/\n },\n {\n begin: /</,\n end: />/\n }\n ]\n };\n\n const STRING = {\n className: 'string',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n variants: [\n {\n begin: /\"\"\"/,\n end: /\"\"\"/\n },\n {\n begin: /'''/,\n end: /'''/\n },\n {\n begin: /~S\"\"\"/,\n end: /\"\"\"/,\n contains: [] // override default\n },\n {\n begin: /~S\"/,\n end: /\"/,\n contains: [] // override default\n },\n {\n begin: /~S'''/,\n end: /'''/,\n contains: [] // override default\n },\n {\n begin: /~S'/,\n end: /'/,\n contains: [] // override default\n },\n {\n begin: /'/,\n end: /'/\n },\n {\n begin: /\"/,\n end: /\"/\n }\n ]\n };\n const FUNCTION = {\n className: 'function',\n beginKeywords: 'def defp defmacro',\n end: /\\B\\b/, // the mode is ended by the title\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n begin: ELIXIR_IDENT_RE,\n endsParent: true\n })\n ]\n };\n const CLASS = hljs.inherit(FUNCTION, {\n className: 'class',\n beginKeywords: 'defimpl defmodule defprotocol defrecord',\n end: /\\bdo\\b|$|;/\n });\n const ELIXIR_DEFAULT_CONTAINS = [\n STRING,\n UPCASE_SIGIL,\n LOWERCASE_SIGIL,\n hljs.HASH_COMMENT_MODE,\n CLASS,\n FUNCTION,\n {\n begin: '::'\n },\n {\n className: 'symbol',\n begin: ':(?![\\\\s:])',\n contains: [\n STRING,\n {\n begin: ELIXIR_METHOD_RE\n }\n ],\n relevance: 0\n },\n {\n className: 'symbol',\n begin: ELIXIR_IDENT_RE + ':(?!:)',\n relevance: 0\n },\n NUMBER,\n {\n className: 'variable',\n begin: '(\\\\$\\\\W)|((\\\\$|@@?)(\\\\w+))'\n },\n {\n begin: '->'\n },\n { // regexp container\n begin: '(' + hljs.RE_STARTERS_RE + ')\\\\s*',\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n // to prevent false regex triggers for the division function:\n // /:\n begin: /\\/: (?=\\d+\\s*[,\\]])/,\n relevance: 0,\n contains: [NUMBER]\n },\n {\n className: 'regexp',\n illegal: '\\\\n',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n variants: [\n {\n begin: '/',\n end: '/[a-z]*'\n },\n {\n begin: '%r\\\\[',\n end: '\\\\][a-z]*'\n }\n ]\n }\n ],\n relevance: 0\n }\n ];\n SUBST.contains = ELIXIR_DEFAULT_CONTAINS;\n\n return {\n name: 'Elixir',\n keywords: ELIXIR_KEYWORDS,\n contains: ELIXIR_DEFAULT_CONTAINS\n };\n}\n\nmodule.exports = elixir;\n","/*\nLanguage: Elm\nAuthor: Janis Voigtlaender <janis.voigtlaender@gmail.com>\nWebsite: https://elm-lang.org\nCategory: functional\n*/\n\n/** @type LanguageFn */\nfunction elm(hljs) {\n const COMMENT = {\n variants: [\n hljs.COMMENT('--', '$'),\n hljs.COMMENT(\n /\\{-/,\n /-\\}/,\n {\n contains: ['self']\n }\n )\n ]\n };\n\n const CONSTRUCTOR = {\n className: 'type',\n begin: '\\\\b[A-Z][\\\\w\\']*', // TODO: other constructors (built-in, infix).\n relevance: 0\n };\n\n const LIST = {\n begin: '\\\\(',\n end: '\\\\)',\n illegal: '\"',\n contains: [\n {\n className: 'type',\n begin: '\\\\b[A-Z][\\\\w]*(\\\\((\\\\.\\\\.|,|\\\\w+)\\\\))?'\n },\n COMMENT\n ]\n };\n\n const RECORD = {\n begin: /\\{/,\n end: /\\}/,\n contains: LIST.contains\n };\n\n const CHARACTER = {\n className: 'string',\n begin: '\\'\\\\\\\\?.',\n end: '\\'',\n illegal: '.'\n };\n\n return {\n name: 'Elm',\n keywords:\n 'let in if then else case of where module import exposing ' +\n 'type alias as infix infixl infixr port effect command subscription',\n contains: [\n\n // Top-level constructions.\n\n {\n beginKeywords: 'port effect module',\n end: 'exposing',\n keywords: 'port effect module where command subscription exposing',\n contains: [\n LIST,\n COMMENT\n ],\n illegal: '\\\\W\\\\.|;'\n },\n {\n begin: 'import',\n end: '$',\n keywords: 'import as exposing',\n contains: [\n LIST,\n COMMENT\n ],\n illegal: '\\\\W\\\\.|;'\n },\n {\n begin: 'type',\n end: '$',\n keywords: 'type alias',\n contains: [\n CONSTRUCTOR,\n LIST,\n RECORD,\n COMMENT\n ]\n },\n {\n beginKeywords: 'infix infixl infixr',\n end: '$',\n contains: [\n hljs.C_NUMBER_MODE,\n COMMENT\n ]\n },\n {\n begin: 'port',\n end: '$',\n keywords: 'port',\n contains: [COMMENT]\n },\n\n // Literals and names.\n\n CHARACTER,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n CONSTRUCTOR,\n hljs.inherit(hljs.TITLE_MODE, {\n begin: '^[_a-z][\\\\w\\']*'\n }),\n COMMENT,\n\n {\n begin: '->|<-'\n } // No markup, relevance booster\n ],\n illegal: /;/\n };\n}\n\nmodule.exports = elm;\n","/*\nLanguage: ERB (Embedded Ruby)\nRequires: xml.js, ruby.js\nAuthor: Lucas Mazza <lucastmazza@gmail.com>\nContributors: Kassio Borges <kassioborgesm@gmail.com>\nDescription: \"Bridge\" language defining fragments of Ruby in HTML within <% .. %>\nWebsite: https://ruby-doc.org/stdlib-2.6.5/libdoc/erb/rdoc/ERB.html\nCategory: template\n*/\n\n/** @type LanguageFn */\nfunction erb(hljs) {\n return {\n name: 'ERB',\n subLanguage: 'xml',\n contains: [\n hljs.COMMENT('<%#', '%>'),\n {\n begin: '<%[%=-]?',\n end: '[%-]?%>',\n subLanguage: 'ruby',\n excludeBegin: true,\n excludeEnd: true\n }\n ]\n };\n}\n\nmodule.exports = erb;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/*\nLanguage: Erlang REPL\nAuthor: Sergey Ignatov <sergey@ignatov.spb.su>\nWebsite: https://www.erlang.org\nCategory: functional\n*/\n\n/** @type LanguageFn */\nfunction erlangRepl(hljs) {\n return {\n name: 'Erlang REPL',\n keywords: {\n built_in:\n 'spawn spawn_link self',\n keyword:\n 'after and andalso|10 band begin bnot bor bsl bsr bxor case catch cond div end fun if ' +\n 'let not of or orelse|10 query receive rem try when xor'\n },\n contains: [\n {\n className: 'meta',\n begin: '^[0-9]+> ',\n relevance: 10\n },\n hljs.COMMENT('%', '$'),\n {\n className: 'number',\n begin: '\\\\b(\\\\d+(_\\\\d+)*#[a-fA-F0-9]+(_[a-fA-F0-9]+)*|\\\\d+(_\\\\d+)*(\\\\.\\\\d+(_\\\\d+)*)?([eE][-+]?\\\\d+)?)',\n relevance: 0\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n begin: concat(\n /\\?(::)?/,\n /([A-Z]\\w*)/, // at least one identifier\n /((::)[A-Z]\\w*)*/ // perhaps more\n )\n },\n {\n begin: '->'\n },\n {\n begin: 'ok'\n },\n {\n begin: '!'\n },\n {\n begin: '(\\\\b[a-z\\'][a-zA-Z0-9_\\']*:[a-z\\'][a-zA-Z0-9_\\']*)|(\\\\b[a-z\\'][a-zA-Z0-9_\\']*)',\n relevance: 0\n },\n {\n begin: '[A-Z][a-zA-Z0-9_\\']*',\n relevance: 0\n }\n ]\n };\n}\n\nmodule.exports = erlangRepl;\n","/*\nLanguage: Erlang\nDescription: Erlang is a general-purpose functional language, with strict evaluation, single assignment, and dynamic typing.\nAuthor: Nikolay Zakharov <nikolay.desh@gmail.com>, Dmitry Kovega <arhibot@gmail.com>\nWebsite: https://www.erlang.org\nCategory: functional\n*/\n\n/** @type LanguageFn */\nfunction erlang(hljs) {\n const BASIC_ATOM_RE = '[a-z\\'][a-zA-Z0-9_\\']*';\n const FUNCTION_NAME_RE = '(' + BASIC_ATOM_RE + ':' + BASIC_ATOM_RE + '|' + BASIC_ATOM_RE + ')';\n const ERLANG_RESERVED = {\n keyword:\n 'after and andalso|10 band begin bnot bor bsl bzr bxor case catch cond div end fun if ' +\n 'let not of orelse|10 query receive rem try when xor',\n literal:\n 'false true'\n };\n\n const COMMENT = hljs.COMMENT('%', '$');\n const NUMBER = {\n className: 'number',\n begin: '\\\\b(\\\\d+(_\\\\d+)*#[a-fA-F0-9]+(_[a-fA-F0-9]+)*|\\\\d+(_\\\\d+)*(\\\\.\\\\d+(_\\\\d+)*)?([eE][-+]?\\\\d+)?)',\n relevance: 0\n };\n const NAMED_FUN = {\n begin: 'fun\\\\s+' + BASIC_ATOM_RE + '/\\\\d+'\n };\n const FUNCTION_CALL = {\n begin: FUNCTION_NAME_RE + '\\\\(',\n end: '\\\\)',\n returnBegin: true,\n relevance: 0,\n contains: [\n {\n begin: FUNCTION_NAME_RE,\n relevance: 0\n },\n {\n begin: '\\\\(',\n end: '\\\\)',\n endsWithParent: true,\n returnEnd: true,\n relevance: 0\n // \"contains\" defined later\n }\n ]\n };\n const TUPLE = {\n begin: /\\{/,\n end: /\\}/,\n relevance: 0\n // \"contains\" defined later\n };\n const VAR1 = {\n begin: '\\\\b_([A-Z][A-Za-z0-9_]*)?',\n relevance: 0\n };\n const VAR2 = {\n begin: '[A-Z][a-zA-Z0-9_]*',\n relevance: 0\n };\n const RECORD_ACCESS = {\n begin: '#' + hljs.UNDERSCORE_IDENT_RE,\n relevance: 0,\n returnBegin: true,\n contains: [\n {\n begin: '#' + hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n },\n {\n begin: /\\{/,\n end: /\\}/,\n relevance: 0\n // \"contains\" defined later\n }\n ]\n };\n\n const BLOCK_STATEMENTS = {\n beginKeywords: 'fun receive if try case',\n end: 'end',\n keywords: ERLANG_RESERVED\n };\n BLOCK_STATEMENTS.contains = [\n COMMENT,\n NAMED_FUN,\n hljs.inherit(hljs.APOS_STRING_MODE, {\n className: ''\n }),\n BLOCK_STATEMENTS,\n FUNCTION_CALL,\n hljs.QUOTE_STRING_MODE,\n NUMBER,\n TUPLE,\n VAR1,\n VAR2,\n RECORD_ACCESS\n ];\n\n const BASIC_MODES = [\n COMMENT,\n NAMED_FUN,\n BLOCK_STATEMENTS,\n FUNCTION_CALL,\n hljs.QUOTE_STRING_MODE,\n NUMBER,\n TUPLE,\n VAR1,\n VAR2,\n RECORD_ACCESS\n ];\n FUNCTION_CALL.contains[1].contains = BASIC_MODES;\n TUPLE.contains = BASIC_MODES;\n RECORD_ACCESS.contains[1].contains = BASIC_MODES;\n\n const DIRECTIVES = [\n \"-module\",\n \"-record\",\n \"-undef\",\n \"-export\",\n \"-ifdef\",\n \"-ifndef\",\n \"-author\",\n \"-copyright\",\n \"-doc\",\n \"-vsn\",\n \"-import\",\n \"-include\",\n \"-include_lib\",\n \"-compile\",\n \"-define\",\n \"-else\",\n \"-endif\",\n \"-file\",\n \"-behaviour\",\n \"-behavior\",\n \"-spec\"\n ];\n\n const PARAMS = {\n className: 'params',\n begin: '\\\\(',\n end: '\\\\)',\n contains: BASIC_MODES\n };\n return {\n name: 'Erlang',\n aliases: ['erl'],\n keywords: ERLANG_RESERVED,\n illegal: '(</|\\\\*=|\\\\+=|-=|/\\\\*|\\\\*/|\\\\(\\\\*|\\\\*\\\\))',\n contains: [\n {\n className: 'function',\n begin: '^' + BASIC_ATOM_RE + '\\\\s*\\\\(',\n end: '->',\n returnBegin: true,\n illegal: '\\\\(|#|//|/\\\\*|\\\\\\\\|:|;',\n contains: [\n PARAMS,\n hljs.inherit(hljs.TITLE_MODE, {\n begin: BASIC_ATOM_RE\n })\n ],\n starts: {\n end: ';|\\\\.',\n keywords: ERLANG_RESERVED,\n contains: BASIC_MODES\n }\n },\n COMMENT,\n {\n begin: '^-',\n end: '\\\\.',\n relevance: 0,\n excludeEnd: true,\n returnBegin: true,\n keywords: {\n $pattern: '-' + hljs.IDENT_RE,\n keyword: DIRECTIVES.map(x => `${x}|1.5`).join(\" \")\n },\n contains: [PARAMS]\n },\n NUMBER,\n hljs.QUOTE_STRING_MODE,\n RECORD_ACCESS,\n VAR1,\n VAR2,\n TUPLE,\n {\n begin: /\\.$/\n } // relevance booster\n ]\n };\n}\n\nmodule.exports = erlang;\n","/*\nLanguage: Excel formulae\nAuthor: Victor Zhou <OiCMudkips@users.noreply.github.com>\nDescription: Excel formulae\nWebsite: https://products.office.com/en-us/excel/\n*/\n\n/** @type LanguageFn */\nfunction excel(hljs) {\n return {\n name: 'Excel formulae',\n aliases: [\n 'xlsx',\n 'xls'\n ],\n case_insensitive: true,\n // built-in functions imported from https://web.archive.org/web/20160513042710/https://support.office.com/en-us/article/Excel-functions-alphabetical-b3944572-255d-4efb-bb96-c6d90033e188\n keywords: {\n $pattern: /[a-zA-Z][\\w\\.]*/,\n built_in: 'ABS ACCRINT ACCRINTM ACOS ACOSH ACOT ACOTH AGGREGATE ADDRESS AMORDEGRC AMORLINC AND ARABIC AREAS ASC ASIN ASINH ATAN ATAN2 ATANH AVEDEV AVERAGE AVERAGEA AVERAGEIF AVERAGEIFS BAHTTEXT BASE BESSELI BESSELJ BESSELK BESSELY BETADIST BETA.DIST BETAINV BETA.INV BIN2DEC BIN2HEX BIN2OCT BINOMDIST BINOM.DIST BINOM.DIST.RANGE BINOM.INV BITAND BITLSHIFT BITOR BITRSHIFT BITXOR CALL CEILING CEILING.MATH CEILING.PRECISE CELL CHAR CHIDIST CHIINV CHITEST CHISQ.DIST CHISQ.DIST.RT CHISQ.INV CHISQ.INV.RT CHISQ.TEST CHOOSE CLEAN CODE COLUMN COLUMNS COMBIN COMBINA COMPLEX CONCAT CONCATENATE CONFIDENCE CONFIDENCE.NORM CONFIDENCE.T CONVERT CORREL COS COSH COT COTH COUNT COUNTA COUNTBLANK COUNTIF COUNTIFS COUPDAYBS COUPDAYS COUPDAYSNC COUPNCD COUPNUM COUPPCD COVAR COVARIANCE.P COVARIANCE.S CRITBINOM CSC CSCH CUBEKPIMEMBER CUBEMEMBER CUBEMEMBERPROPERTY CUBERANKEDMEMBER CUBESET CUBESETCOUNT CUBEVALUE CUMIPMT CUMPRINC DATE DATEDIF DATEVALUE DAVERAGE DAY DAYS DAYS360 DB DBCS DCOUNT DCOUNTA DDB DEC2BIN DEC2HEX DEC2OCT DECIMAL DEGREES DELTA DEVSQ DGET DISC DMAX DMIN DOLLAR DOLLARDE DOLLARFR DPRODUCT DSTDEV DSTDEVP DSUM DURATION DVAR DVARP EDATE EFFECT ENCODEURL EOMONTH ERF ERF.PRECISE ERFC ERFC.PRECISE ERROR.TYPE EUROCONVERT EVEN EXACT EXP EXPON.DIST EXPONDIST FACT FACTDOUBLE FALSE|0 F.DIST FDIST F.DIST.RT FILTERXML FIND FINDB F.INV F.INV.RT FINV FISHER FISHERINV FIXED FLOOR FLOOR.MATH FLOOR.PRECISE FORECAST FORECAST.ETS FORECAST.ETS.CONFINT FORECAST.ETS.SEASONALITY FORECAST.ETS.STAT FORECAST.LINEAR FORMULATEXT FREQUENCY F.TEST FTEST FV FVSCHEDULE GAMMA GAMMA.DIST GAMMADIST GAMMA.INV GAMMAINV GAMMALN GAMMALN.PRECISE GAUSS GCD GEOMEAN GESTEP GETPIVOTDATA GROWTH HARMEAN HEX2BIN HEX2DEC HEX2OCT HLOOKUP HOUR HYPERLINK HYPGEOM.DIST HYPGEOMDIST IF IFERROR IFNA IFS IMABS IMAGINARY IMARGUMENT IMCONJUGATE IMCOS IMCOSH IMCOT IMCSC IMCSCH IMDIV IMEXP IMLN IMLOG10 IMLOG2 IMPOWER IMPRODUCT IMREAL IMSEC IMSECH IMSIN IMSINH IMSQRT IMSUB IMSUM IMTAN INDEX INDIRECT INFO INT INTERCEPT INTRATE IPMT IRR ISBLANK ISERR ISERROR ISEVEN ISFORMULA ISLOGICAL ISNA ISNONTEXT ISNUMBER ISODD ISREF ISTEXT ISO.CEILING ISOWEEKNUM ISPMT JIS KURT LARGE LCM LEFT LEFTB LEN LENB LINEST LN LOG LOG10 LOGEST LOGINV LOGNORM.DIST LOGNORMDIST LOGNORM.INV LOOKUP LOWER MATCH MAX MAXA MAXIFS MDETERM MDURATION MEDIAN MID MIDBs MIN MINIFS MINA MINUTE MINVERSE MIRR MMULT MOD MODE MODE.MULT MODE.SNGL MONTH MROUND MULTINOMIAL MUNIT N NA NEGBINOM.DIST NEGBINOMDIST NETWORKDAYS NETWORKDAYS.INTL NOMINAL NORM.DIST NORMDIST NORMINV NORM.INV NORM.S.DIST NORMSDIST NORM.S.INV NORMSINV NOT NOW NPER NPV NUMBERVALUE OCT2BIN OCT2DEC OCT2HEX ODD ODDFPRICE ODDFYIELD ODDLPRICE ODDLYIELD OFFSET OR PDURATION PEARSON PERCENTILE.EXC PERCENTILE.INC PERCENTILE PERCENTRANK.EXC PERCENTRANK.INC PERCENTRANK PERMUT PERMUTATIONA PHI PHONETIC PI PMT POISSON.DIST POISSON POWER PPMT PRICE PRICEDISC PRICEMAT PROB PRODUCT PROPER PV QUARTILE QUARTILE.EXC QUARTILE.INC QUOTIENT RADIANS RAND RANDBETWEEN RANK.AVG RANK.EQ RANK RATE RECEIVED REGISTER.ID REPLACE REPLACEB REPT RIGHT RIGHTB ROMAN ROUND ROUNDDOWN ROUNDUP ROW ROWS RRI RSQ RTD SEARCH SEARCHB SEC SECH SECOND SERIESSUM SHEET SHEETS SIGN SIN SINH SKEW SKEW.P SLN SLOPE SMALL SQL.REQUEST SQRT SQRTPI STANDARDIZE STDEV STDEV.P STDEV.S STDEVA STDEVP STDEVPA STEYX SUBSTITUTE SUBTOTAL SUM SUMIF SUMIFS SUMPRODUCT SUMSQ SUMX2MY2 SUMX2PY2 SUMXMY2 SWITCH SYD T TAN TANH TBILLEQ TBILLPRICE TBILLYIELD T.DIST T.DIST.2T T.DIST.RT TDIST TEXT TEXTJOIN TIME TIMEVALUE T.INV T.INV.2T TINV TODAY TRANSPOSE TREND TRIM TRIMMEAN TRUE|0 TRUNC T.TEST TTEST TYPE UNICHAR UNICODE UPPER VALUE VAR VAR.P VAR.S VARA VARP VARPA VDB VLOOKUP WEBSERVICE WEEKDAY WEEKNUM WEIBULL WEIBULL.DIST WORKDAY WORKDAY.INTL XIRR XNPV XOR YEAR YEARFRAC YIELD YIELDDISC YIELDMAT Z.TEST ZTEST'\n },\n contains: [\n {\n /* matches a beginning equal sign found in Excel formula examples */\n begin: /^=/,\n end: /[^=]/,\n returnEnd: true,\n illegal: /=/, /* only allow single equal sign at front of line */\n relevance: 10\n },\n /* technically, there can be more than 2 letters in column names, but this prevents conflict with some keywords */\n {\n /* matches a reference to a single cell */\n className: 'symbol',\n begin: /\\b[A-Z]{1,2}\\d+\\b/,\n end: /[^\\d]/,\n excludeEnd: true,\n relevance: 0\n },\n {\n /* matches a reference to a range of cells */\n className: 'symbol',\n begin: /[A-Z]{0,2}\\d*:[A-Z]{0,2}\\d*/,\n relevance: 0\n },\n hljs.BACKSLASH_ESCAPE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'number',\n begin: hljs.NUMBER_RE + '(%)?',\n relevance: 0\n },\n /* Excel formula comments are done by putting the comment in a function call to N() */\n hljs.COMMENT(/\\bN\\(/, /\\)/,\n {\n excludeBegin: true,\n excludeEnd: true,\n illegal: /\\n/\n })\n ]\n };\n}\n\nmodule.exports = excel;\n","/*\nLanguage: FIX\nAuthor: Brent Bradbury <brent@brentium.com>\n*/\n\n/** @type LanguageFn */\nfunction fix(hljs) {\n return {\n name: 'FIX',\n contains: [{\n begin: /[^\\u2401\\u0001]+/,\n end: /[\\u2401\\u0001]/,\n excludeEnd: true,\n returnBegin: true,\n returnEnd: false,\n contains: [\n {\n begin: /([^\\u2401\\u0001=]+)/,\n end: /=([^\\u2401\\u0001=]+)/,\n returnEnd: true,\n returnBegin: false,\n className: 'attr'\n },\n {\n begin: /=/,\n end: /([\\u2401\\u0001])/,\n excludeEnd: true,\n excludeBegin: true,\n className: 'string'\n }\n ]\n }],\n case_insensitive: true\n };\n}\n\nmodule.exports = fix;\n","/*\n Language: Flix\n Category: functional\n Author: Magnus Madsen <mmadsen@uwaterloo.ca>\n Website: https://flix.dev/\n */\n\n /** @type LanguageFn */\nfunction flix(hljs) {\n const CHAR = {\n className: 'string',\n begin: /'(.|\\\\[xXuU][a-zA-Z0-9]+)'/\n };\n\n const STRING = {\n className: 'string',\n variants: [{\n begin: '\"',\n end: '\"'\n }]\n };\n\n const NAME = {\n className: 'title',\n relevance: 0,\n begin: /[^0-9\\n\\t \"'(),.`{}\\[\\]:;][^\\n\\t \"'(),.`{}\\[\\]:;]+|[^0-9\\n\\t \"'(),.`{}\\[\\]:;=]/\n };\n\n const METHOD = {\n className: 'function',\n beginKeywords: 'def',\n end: /[:={\\[(\\n;]/,\n excludeEnd: true,\n contains: [NAME]\n };\n\n return {\n name: 'Flix',\n keywords: {\n literal: 'true false',\n keyword: 'case class def else enum if impl import in lat rel index let match namespace switch type yield with'\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n CHAR,\n STRING,\n METHOD,\n hljs.C_NUMBER_MODE\n ]\n };\n}\n\nmodule.exports = flix;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/*\nLanguage: Fortran\nAuthor: Anthony Scemama <scemama@irsamc.ups-tlse.fr>\nWebsite: https://en.wikipedia.org/wiki/Fortran\nCategory: scientific\n*/\n\n/** @type LanguageFn */\nfunction fortran(hljs) {\n const PARAMS = {\n className: 'params',\n begin: '\\\\(',\n end: '\\\\)'\n };\n\n const COMMENT = {\n variants: [\n hljs.COMMENT('!', '$', {\n relevance: 0\n }),\n // allow FORTRAN 77 style comments\n hljs.COMMENT('^C[ ]', '$', {\n relevance: 0\n }),\n hljs.COMMENT('^C$', '$', {\n relevance: 0\n })\n ]\n };\n\n // regex in both fortran and irpf90 should match\n const OPTIONAL_NUMBER_SUFFIX = /(_[a-z_\\d]+)?/;\n const OPTIONAL_NUMBER_EXP = /([de][+-]?\\d+)?/;\n const NUMBER = {\n className: 'number',\n variants: [\n {\n begin: concat(/\\b\\d+/, /\\.(\\d*)/, OPTIONAL_NUMBER_EXP, OPTIONAL_NUMBER_SUFFIX)\n },\n {\n begin: concat(/\\b\\d+/, OPTIONAL_NUMBER_EXP, OPTIONAL_NUMBER_SUFFIX)\n },\n {\n begin: concat(/\\.\\d+/, OPTIONAL_NUMBER_EXP, OPTIONAL_NUMBER_SUFFIX)\n }\n ],\n relevance: 0\n };\n\n const FUNCTION_DEF = {\n className: 'function',\n beginKeywords: 'subroutine function program',\n illegal: '[${=\\\\n]',\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n PARAMS\n ]\n };\n\n const STRING = {\n className: 'string',\n relevance: 0,\n variants: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n };\n\n const KEYWORDS = {\n literal: '.False. .True.',\n keyword: 'kind do concurrent local shared while private call intrinsic where elsewhere ' +\n 'type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then block endblock endassociate ' +\n 'public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. ' +\n 'goto save else use module select case ' +\n 'access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit ' +\n 'continue format pause cycle exit ' +\n 'c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg ' +\n 'synchronous nopass non_overridable pass protected volatile abstract extends import ' +\n 'non_intrinsic value deferred generic final enumerator class associate bind enum ' +\n 'c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t ' +\n 'c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double ' +\n 'c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr ' +\n 'c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer ' +\n 'c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor ' +\n 'numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ' +\n 'ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive ' +\n 'pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure impure ' +\n 'integer real character complex logical codimension dimension allocatable|10 parameter ' +\n 'external implicit|10 none double precision assign intent optional pointer ' +\n 'target in out common equivalence data',\n built_in: 'alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint ' +\n 'dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl ' +\n 'algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama ' +\n 'iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod ' +\n 'qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log ' +\n 'log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate ' +\n 'adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product ' +\n 'eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul ' +\n 'maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product ' +\n 'radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind ' +\n 'set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer ' +\n 'dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ' +\n 'ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode ' +\n 'is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_of ' +\n 'acosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 ' +\n 'atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits ' +\n 'bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr ' +\n 'num_images parity popcnt poppar shifta shiftl shiftr this_image sync change team co_broadcast co_max co_min co_sum co_reduce'\n };\n return {\n name: 'Fortran',\n case_insensitive: true,\n aliases: [\n 'f90',\n 'f95'\n ],\n keywords: KEYWORDS,\n illegal: /\\/\\*/,\n contains: [\n STRING,\n FUNCTION_DEF,\n // allow `C = value` for assignments so they aren't misdetected\n // as Fortran 77 style comments\n {\n begin: /^C\\s*=(?!=)/,\n relevance: 0\n },\n COMMENT,\n NUMBER\n ]\n };\n}\n\nmodule.exports = fortran;\n","/*\nLanguage: F#\nAuthor: Jonas Follesø <jonas@follesoe.no>\nContributors: Troy Kershaw <hello@troykershaw.com>, Henrik Feldt <henrik@haf.se>\nWebsite: https://docs.microsoft.com/en-us/dotnet/fsharp/\nCategory: functional\n*/\n\n/** @type LanguageFn */\nfunction fsharp(hljs) {\n const TYPEPARAM = {\n begin: '<',\n end: '>',\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n begin: /'[a-zA-Z0-9_]+/\n })\n ]\n };\n\n return {\n name: 'F#',\n aliases: ['fs'],\n keywords:\n 'abstract and as assert base begin class default delegate do done ' +\n 'downcast downto elif else end exception extern false finally for ' +\n 'fun function global if in inherit inline interface internal lazy let ' +\n 'match member module mutable namespace new null of open or ' +\n 'override private public rec return sig static struct then to ' +\n 'true try type upcast use val void when while with yield',\n illegal: /\\/\\*/,\n contains: [\n {\n // monad builder keywords (matches before non-bang kws)\n className: 'keyword',\n begin: /\\b(yield|return|let|do)!/\n },\n {\n className: 'string',\n begin: '@\"',\n end: '\"',\n contains: [\n {\n begin: '\"\"'\n }\n ]\n },\n {\n className: 'string',\n begin: '\"\"\"',\n end: '\"\"\"'\n },\n hljs.COMMENT('\\\\(\\\\*(\\\\s)', '\\\\*\\\\)', {\n contains: [\"self\"]\n }),\n {\n className: 'class',\n beginKeywords: 'type',\n end: '\\\\(|=|$',\n excludeEnd: true,\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n TYPEPARAM\n ]\n },\n {\n className: 'meta',\n begin: '\\\\[<',\n end: '>\\\\]',\n relevance: 10\n },\n {\n className: 'symbol',\n begin: '\\\\B(\\'[A-Za-z])\\\\b',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.inherit(hljs.QUOTE_STRING_MODE, {\n illegal: null\n }),\n hljs.C_NUMBER_MODE\n ]\n };\n}\n\nmodule.exports = fsharp;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction anyNumberOfTimes(re) {\n return concat('(', re, ')*');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/** @type LanguageFn */\nfunction gams(hljs) {\n const KEYWORDS = {\n keyword:\n 'abort acronym acronyms alias all and assign binary card diag display ' +\n 'else eq file files for free ge gt if integer le loop lt maximizing ' +\n 'minimizing model models ne negative no not option options or ord ' +\n 'positive prod put putpage puttl repeat sameas semicont semiint smax ' +\n 'smin solve sos1 sos2 sum system table then until using while xor yes',\n literal:\n 'eps inf na',\n built_in:\n 'abs arccos arcsin arctan arctan2 Beta betaReg binomial ceil centropy ' +\n 'cos cosh cvPower div div0 eDist entropy errorf execSeed exp fact ' +\n 'floor frac gamma gammaReg log logBeta logGamma log10 log2 mapVal max ' +\n 'min mod ncpCM ncpF ncpVUpow ncpVUsin normal pi poly power ' +\n 'randBinomial randLinear randTriangle round rPower sigmoid sign ' +\n 'signPower sin sinh slexp sllog10 slrec sqexp sqlog10 sqr sqrec sqrt ' +\n 'tan tanh trunc uniform uniformInt vcPower bool_and bool_eqv bool_imp ' +\n 'bool_not bool_or bool_xor ifThen rel_eq rel_ge rel_gt rel_le rel_lt ' +\n 'rel_ne gday gdow ghour gleap gmillisec gminute gmonth gsecond gyear ' +\n 'jdate jnow jstart jtime errorLevel execError gamsRelease gamsVersion ' +\n 'handleCollect handleDelete handleStatus handleSubmit heapFree ' +\n 'heapLimit heapSize jobHandle jobKill jobStatus jobTerminate ' +\n 'licenseLevel licenseStatus maxExecError sleep timeClose timeComp ' +\n 'timeElapsed timeExec timeStart'\n };\n const PARAMS = {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true\n };\n const SYMBOLS = {\n className: 'symbol',\n variants: [\n {\n begin: /=[lgenxc]=/\n },\n {\n begin: /\\$/\n }\n ]\n };\n const QSTR = { // One-line quoted comment string\n className: 'comment',\n variants: [\n {\n begin: '\\'',\n end: '\\''\n },\n {\n begin: '\"',\n end: '\"'\n }\n ],\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE]\n };\n const ASSIGNMENT = {\n begin: '/',\n end: '/',\n keywords: KEYWORDS,\n contains: [\n QSTR,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n hljs.C_NUMBER_MODE\n ]\n };\n const COMMENT_WORD = /[a-z0-9&#*=?@\\\\><:,()$[\\]_.{}!+%^-]+/;\n const DESCTEXT = { // Parameter/set/variable description text\n begin: /[a-z][a-z0-9_]*(\\([a-z0-9_, ]*\\))?[ \\t]+/,\n excludeBegin: true,\n end: '$',\n endsWithParent: true,\n contains: [\n QSTR,\n ASSIGNMENT,\n {\n className: 'comment',\n // one comment word, then possibly more\n begin: concat(\n COMMENT_WORD,\n // [ ] because \\s would be too broad (matching newlines)\n anyNumberOfTimes(concat(/[ ]+/, COMMENT_WORD))\n ),\n relevance: 0\n }\n ]\n };\n\n return {\n name: 'GAMS',\n aliases: ['gms'],\n case_insensitive: true,\n keywords: KEYWORDS,\n contains: [\n hljs.COMMENT(/^\\$ontext/, /^\\$offtext/),\n {\n className: 'meta',\n begin: '^\\\\$[a-z0-9]+',\n end: '$',\n returnBegin: true,\n contains: [\n {\n className: 'meta-keyword',\n begin: '^\\\\$[a-z0-9]+'\n }\n ]\n },\n hljs.COMMENT('^\\\\*', '$'),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n // Declarations\n {\n beginKeywords:\n 'set sets parameter parameters variable variables ' +\n 'scalar scalars equation equations',\n end: ';',\n contains: [\n hljs.COMMENT('^\\\\*', '$'),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n ASSIGNMENT,\n DESCTEXT\n ]\n },\n { // table environment\n beginKeywords: 'table',\n end: ';',\n returnBegin: true,\n contains: [\n { // table header row\n beginKeywords: 'table',\n end: '$',\n contains: [DESCTEXT]\n },\n hljs.COMMENT('^\\\\*', '$'),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n hljs.C_NUMBER_MODE\n // Table does not contain DESCTEXT or ASSIGNMENT\n ]\n },\n // Function definitions\n {\n className: 'function',\n begin: /^[a-z][a-z0-9_,\\-+' ()$]+\\.{2}/,\n returnBegin: true,\n contains: [\n { // Function title\n className: 'title',\n begin: /^[a-z0-9_]+/\n },\n PARAMS,\n SYMBOLS\n ]\n },\n hljs.C_NUMBER_MODE,\n SYMBOLS\n ]\n };\n}\n\nmodule.exports = gams;\n","/*\nLanguage: GAUSS\nAuthor: Matt Evans <matt@aptech.com>\nDescription: GAUSS Mathematical and Statistical language\nWebsite: https://www.aptech.com\nCategory: scientific\n*/\nfunction gauss(hljs) {\n const KEYWORDS = {\n keyword: 'bool break call callexe checkinterrupt clear clearg closeall cls comlog compile ' +\n 'continue create debug declare delete disable dlibrary dllcall do dos ed edit else ' +\n 'elseif enable end endfor endif endp endo errorlog errorlogat expr external fn ' +\n 'for format goto gosub graph if keyword let lib library line load loadarray loadexe ' +\n 'loadf loadk loadm loadp loads loadx local locate loopnextindex lprint lpwidth lshow ' +\n 'matrix msym ndpclex new open output outwidth plot plotsym pop prcsn print ' +\n 'printdos proc push retp return rndcon rndmod rndmult rndseed run save saveall screen ' +\n 'scroll setarray show sparse stop string struct system trace trap threadfor ' +\n 'threadendfor threadbegin threadjoin threadstat threadend until use while winprint ' +\n 'ne ge le gt lt and xor or not eq eqv',\n built_in: 'abs acf aconcat aeye amax amean AmericanBinomCall AmericanBinomCall_Greeks AmericanBinomCall_ImpVol ' +\n 'AmericanBinomPut AmericanBinomPut_Greeks AmericanBinomPut_ImpVol AmericanBSCall AmericanBSCall_Greeks ' +\n 'AmericanBSCall_ImpVol AmericanBSPut AmericanBSPut_Greeks AmericanBSPut_ImpVol amin amult annotationGetDefaults ' +\n 'annotationSetBkd annotationSetFont annotationSetLineColor annotationSetLineStyle annotationSetLineThickness ' +\n 'annualTradingDays arccos arcsin areshape arrayalloc arrayindex arrayinit arraytomat asciiload asclabel astd ' +\n 'astds asum atan atan2 atranspose axmargin balance band bandchol bandcholsol bandltsol bandrv bandsolpd bar ' +\n 'base10 begwind besselj bessely beta box boxcox cdfBeta cdfBetaInv cdfBinomial cdfBinomialInv cdfBvn cdfBvn2 ' +\n 'cdfBvn2e cdfCauchy cdfCauchyInv cdfChic cdfChii cdfChinc cdfChincInv cdfExp cdfExpInv cdfFc cdfFnc cdfFncInv ' +\n 'cdfGam cdfGenPareto cdfHyperGeo cdfLaplace cdfLaplaceInv cdfLogistic cdfLogisticInv cdfmControlCreate cdfMvn ' +\n 'cdfMvn2e cdfMvnce cdfMvne cdfMvt2e cdfMvtce cdfMvte cdfN cdfN2 cdfNc cdfNegBinomial cdfNegBinomialInv cdfNi ' +\n 'cdfPoisson cdfPoissonInv cdfRayleigh cdfRayleighInv cdfTc cdfTci cdfTnc cdfTvn cdfWeibull cdfWeibullInv cdir ' +\n 'ceil ChangeDir chdir chiBarSquare chol choldn cholsol cholup chrs close code cols colsf combinate combinated ' +\n 'complex con cond conj cons ConScore contour conv convertsatostr convertstrtosa corrm corrms corrvc corrx corrxs ' +\n 'cos cosh counts countwts crossprd crout croutp csrcol csrlin csvReadM csvReadSA cumprodc cumsumc curve cvtos ' +\n 'datacreate datacreatecomplex datalist dataload dataloop dataopen datasave date datestr datestring datestrymd ' +\n 'dayinyr dayofweek dbAddDatabase dbClose dbCommit dbCreateQuery dbExecQuery dbGetConnectOptions dbGetDatabaseName ' +\n 'dbGetDriverName dbGetDrivers dbGetHostName dbGetLastErrorNum dbGetLastErrorText dbGetNumericalPrecPolicy ' +\n 'dbGetPassword dbGetPort dbGetTableHeaders dbGetTables dbGetUserName dbHasFeature dbIsDriverAvailable dbIsOpen ' +\n 'dbIsOpenError dbOpen dbQueryBindValue dbQueryClear dbQueryCols dbQueryExecPrepared dbQueryFetchAllM dbQueryFetchAllSA ' +\n 'dbQueryFetchOneM dbQueryFetchOneSA dbQueryFinish dbQueryGetBoundValue dbQueryGetBoundValues dbQueryGetField ' +\n 'dbQueryGetLastErrorNum dbQueryGetLastErrorText dbQueryGetLastInsertID dbQueryGetLastQuery dbQueryGetPosition ' +\n 'dbQueryIsActive dbQueryIsForwardOnly dbQueryIsNull dbQueryIsSelect dbQueryIsValid dbQueryPrepare dbQueryRows ' +\n 'dbQuerySeek dbQuerySeekFirst dbQuerySeekLast dbQuerySeekNext dbQuerySeekPrevious dbQuerySetForwardOnly ' +\n 'dbRemoveDatabase dbRollback dbSetConnectOptions dbSetDatabaseName dbSetHostName dbSetNumericalPrecPolicy ' +\n 'dbSetPort dbSetUserName dbTransaction DeleteFile delif delrows denseToSp denseToSpRE denToZero design det detl ' +\n 'dfft dffti diag diagrv digamma doswin DOSWinCloseall DOSWinOpen dotfeq dotfeqmt dotfge dotfgemt dotfgt dotfgtmt ' +\n 'dotfle dotflemt dotflt dotfltmt dotfne dotfnemt draw drop dsCreate dstat dstatmt dstatmtControlCreate dtdate dtday ' +\n 'dttime dttodtv dttostr dttoutc dtvnormal dtvtodt dtvtoutc dummy dummybr dummydn eig eigh eighv eigv elapsedTradingDays ' +\n 'endwind envget eof eqSolve eqSolvemt eqSolvemtControlCreate eqSolvemtOutCreate eqSolveset erf erfc erfccplx erfcplx error ' +\n 'etdays ethsec etstr EuropeanBinomCall EuropeanBinomCall_Greeks EuropeanBinomCall_ImpVol EuropeanBinomPut ' +\n 'EuropeanBinomPut_Greeks EuropeanBinomPut_ImpVol EuropeanBSCall EuropeanBSCall_Greeks EuropeanBSCall_ImpVol ' +\n 'EuropeanBSPut EuropeanBSPut_Greeks EuropeanBSPut_ImpVol exctsmpl exec execbg exp extern eye fcheckerr fclearerr feq ' +\n 'feqmt fflush fft ffti fftm fftmi fftn fge fgemt fgets fgetsa fgetsat fgetst fgt fgtmt fileinfo filesa fle flemt ' +\n 'floor flt fltmt fmod fne fnemt fonts fopen formatcv formatnv fputs fputst fseek fstrerror ftell ftocv ftos ftostrC ' +\n 'gamma gammacplx gammaii gausset gdaAppend gdaCreate gdaDStat gdaDStatMat gdaGetIndex gdaGetName gdaGetNames gdaGetOrders ' +\n 'gdaGetType gdaGetTypes gdaGetVarInfo gdaIsCplx gdaLoad gdaPack gdaRead gdaReadByIndex gdaReadSome gdaReadSparse ' +\n 'gdaReadStruct gdaReportVarInfo gdaSave gdaUpdate gdaUpdateAndPack gdaVars gdaWrite gdaWrite32 gdaWriteSome getarray ' +\n 'getdims getf getGAUSShome getmatrix getmatrix4D getname getnamef getNextTradingDay getNextWeekDay getnr getorders ' +\n 'getpath getPreviousTradingDay getPreviousWeekDay getRow getscalar3D getscalar4D getTrRow getwind glm gradcplx gradMT ' +\n 'gradMTm gradMTT gradMTTm gradp graphprt graphset hasimag header headermt hess hessMT hessMTg hessMTgw hessMTm ' +\n 'hessMTmw hessMTT hessMTTg hessMTTgw hessMTTm hessMTw hessp hist histf histp hsec imag indcv indexcat indices indices2 ' +\n 'indicesf indicesfn indnv indsav integrate1d integrateControlCreate intgrat2 intgrat3 inthp1 inthp2 inthp3 inthp4 ' +\n 'inthpControlCreate intquad1 intquad2 intquad3 intrleav intrleavsa intrsect intsimp inv invpd invswp iscplx iscplxf ' +\n 'isden isinfnanmiss ismiss key keyav keyw lag lag1 lagn lapEighb lapEighi lapEighvb lapEighvi lapgEig lapgEigh lapgEighv ' +\n 'lapgEigv lapgSchur lapgSvdcst lapgSvds lapgSvdst lapSvdcusv lapSvds lapSvdusv ldlp ldlsol linSolve listwise ln lncdfbvn ' +\n 'lncdfbvn2 lncdfmvn lncdfn lncdfn2 lncdfnc lnfact lngammacplx lnpdfmvn lnpdfmvt lnpdfn lnpdft loadd loadstruct loadwind ' +\n 'loess loessmt loessmtControlCreate log loglog logx logy lower lowmat lowmat1 ltrisol lu lusol machEpsilon make makevars ' +\n 'makewind margin matalloc matinit mattoarray maxbytes maxc maxindc maxv maxvec mbesselei mbesselei0 mbesselei1 mbesseli ' +\n 'mbesseli0 mbesseli1 meanc median mergeby mergevar minc minindc minv miss missex missrv moment momentd movingave ' +\n 'movingaveExpwgt movingaveWgt nextindex nextn nextnevn nextwind ntos null null1 numCombinations ols olsmt olsmtControlCreate ' +\n 'olsqr olsqr2 olsqrmt ones optn optnevn orth outtyp pacf packedToSp packr parse pause pdfCauchy pdfChi pdfExp pdfGenPareto ' +\n 'pdfHyperGeo pdfLaplace pdfLogistic pdfn pdfPoisson pdfRayleigh pdfWeibull pi pinv pinvmt plotAddArrow plotAddBar plotAddBox ' +\n 'plotAddHist plotAddHistF plotAddHistP plotAddPolar plotAddScatter plotAddShape plotAddTextbox plotAddTS plotAddXY plotArea ' +\n 'plotBar plotBox plotClearLayout plotContour plotCustomLayout plotGetDefaults plotHist plotHistF plotHistP plotLayout ' +\n 'plotLogLog plotLogX plotLogY plotOpenWindow plotPolar plotSave plotScatter plotSetAxesPen plotSetBar plotSetBarFill ' +\n 'plotSetBarStacked plotSetBkdColor plotSetFill plotSetGrid plotSetLegend plotSetLineColor plotSetLineStyle plotSetLineSymbol ' +\n 'plotSetLineThickness plotSetNewWindow plotSetTitle plotSetWhichYAxis plotSetXAxisShow plotSetXLabel plotSetXRange ' +\n 'plotSetXTicInterval plotSetXTicLabel plotSetYAxisShow plotSetYLabel plotSetYRange plotSetZAxisShow plotSetZLabel ' +\n 'plotSurface plotTS plotXY polar polychar polyeval polygamma polyint polymake polymat polymroot polymult polyroot ' +\n 'pqgwin previousindex princomp printfm printfmt prodc psi putarray putf putvals pvCreate pvGetIndex pvGetParNames ' +\n 'pvGetParVector pvLength pvList pvPack pvPacki pvPackm pvPackmi pvPacks pvPacksi pvPacksm pvPacksmi pvPutParVector ' +\n 'pvTest pvUnpack QNewton QNewtonmt QNewtonmtControlCreate QNewtonmtOutCreate QNewtonSet QProg QProgmt QProgmtInCreate ' +\n 'qqr qqre qqrep qr qre qrep qrsol qrtsol qtyr qtyre qtyrep quantile quantiled qyr qyre qyrep qz rank rankindx readr ' +\n 'real reclassify reclassifyCuts recode recserar recsercp recserrc rerun rescale reshape rets rev rfft rffti rfftip rfftn ' +\n 'rfftnp rfftp rndBernoulli rndBeta rndBinomial rndCauchy rndChiSquare rndCon rndCreateState rndExp rndGamma rndGeo rndGumbel ' +\n 'rndHyperGeo rndi rndKMbeta rndKMgam rndKMi rndKMn rndKMnb rndKMp rndKMu rndKMvm rndLaplace rndLCbeta rndLCgam rndLCi rndLCn ' +\n 'rndLCnb rndLCp rndLCu rndLCvm rndLogNorm rndMTu rndMVn rndMVt rndn rndnb rndNegBinomial rndp rndPoisson rndRayleigh ' +\n 'rndStateSkip rndu rndvm rndWeibull rndWishart rotater round rows rowsf rref sampleData satostrC saved saveStruct savewind ' +\n 'scale scale3d scalerr scalinfnanmiss scalmiss schtoc schur searchsourcepath seekr select selif seqa seqm setdif setdifsa ' +\n 'setvars setvwrmode setwind shell shiftr sin singleindex sinh sleep solpd sortc sortcc sortd sorthc sorthcc sortind ' +\n 'sortindc sortmc sortr sortrc spBiconjGradSol spChol spConjGradSol spCreate spDenseSubmat spDiagRvMat spEigv spEye spLDL ' +\n 'spline spLU spNumNZE spOnes spreadSheetReadM spreadSheetReadSA spreadSheetWrite spScale spSubmat spToDense spTrTDense ' +\n 'spTScalar spZeros sqpSolve sqpSolveMT sqpSolveMTControlCreate sqpSolveMTlagrangeCreate sqpSolveMToutCreate sqpSolveSet ' +\n 'sqrt statements stdc stdsc stocv stof strcombine strindx strlen strput strrindx strsect strsplit strsplitPad strtodt ' +\n 'strtof strtofcplx strtriml strtrimr strtrunc strtruncl strtruncpad strtruncr submat subscat substute subvec sumc sumr ' +\n 'surface svd svd1 svd2 svdcusv svds svdusv sysstate tab tan tanh tempname ' +\n 'time timedt timestr timeutc title tkf2eps tkf2ps tocart todaydt toeplitz token topolar trapchk ' +\n 'trigamma trimr trunc type typecv typef union unionsa uniqindx uniqindxsa unique uniquesa upmat upmat1 upper utctodt ' +\n 'utctodtv utrisol vals varCovMS varCovXS varget vargetl varmall varmares varput varputl vartypef vcm vcms vcx vcxs ' +\n 'vec vech vecr vector vget view viewxyz vlist vnamecv volume vput vread vtypecv wait waitc walkindex where window ' +\n 'writer xlabel xlsGetSheetCount xlsGetSheetSize xlsGetSheetTypes xlsMakeRange xlsReadM xlsReadSA xlsWrite xlsWriteM ' +\n 'xlsWriteSA xpnd xtics xy xyz ylabel ytics zeros zeta zlabel ztics cdfEmpirical dot h5create h5open h5read h5readAttribute ' +\n 'h5write h5writeAttribute ldl plotAddErrorBar plotAddSurface plotCDFEmpirical plotSetColormap plotSetContourLabels ' +\n 'plotSetLegendFont plotSetTextInterpreter plotSetXTicCount plotSetYTicCount plotSetZLevels powerm strjoin sylvester ' +\n 'strtrim',\n literal: 'DB_AFTER_LAST_ROW DB_ALL_TABLES DB_BATCH_OPERATIONS DB_BEFORE_FIRST_ROW DB_BLOB DB_EVENT_NOTIFICATIONS ' +\n 'DB_FINISH_QUERY DB_HIGH_PRECISION DB_LAST_INSERT_ID DB_LOW_PRECISION_DOUBLE DB_LOW_PRECISION_INT32 ' +\n 'DB_LOW_PRECISION_INT64 DB_LOW_PRECISION_NUMBERS DB_MULTIPLE_RESULT_SETS DB_NAMED_PLACEHOLDERS ' +\n 'DB_POSITIONAL_PLACEHOLDERS DB_PREPARED_QUERIES DB_QUERY_SIZE DB_SIMPLE_LOCKING DB_SYSTEM_TABLES DB_TABLES ' +\n 'DB_TRANSACTIONS DB_UNICODE DB_VIEWS __STDIN __STDOUT __STDERR __FILE_DIR'\n };\n\n const AT_COMMENT_MODE = hljs.COMMENT('@', '@');\n\n const PREPROCESSOR =\n {\n className: 'meta',\n begin: '#',\n end: '$',\n keywords: {\n 'meta-keyword': 'define definecs|10 undef ifdef ifndef iflight ifdllcall ifmac ifos2win ifunix else endif lineson linesoff srcfile srcline'\n },\n contains: [\n {\n begin: /\\\\\\n/,\n relevance: 0\n },\n {\n beginKeywords: 'include',\n end: '$',\n keywords: {\n 'meta-keyword': 'include'\n },\n contains: [\n {\n className: 'meta-string',\n begin: '\"',\n end: '\"',\n illegal: '\\\\n'\n }\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n AT_COMMENT_MODE\n ]\n };\n\n const STRUCT_TYPE =\n {\n begin: /\\bstruct\\s+/,\n end: /\\s/,\n keywords: \"struct\",\n contains: [\n {\n className: \"type\",\n begin: hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n }\n ]\n };\n\n // only for definitions\n const PARSE_PARAMS = [\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n endsWithParent: true,\n relevance: 0,\n contains: [\n { // dots\n className: 'literal',\n begin: /\\.\\.\\./\n },\n hljs.C_NUMBER_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n AT_COMMENT_MODE,\n STRUCT_TYPE\n ]\n }\n ];\n\n const FUNCTION_DEF =\n {\n className: \"title\",\n begin: hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n };\n\n const DEFINITION = function(beginKeywords, end, inherits) {\n const mode = hljs.inherit(\n {\n className: \"function\",\n beginKeywords: beginKeywords,\n end: end,\n excludeEnd: true,\n contains: [].concat(PARSE_PARAMS)\n },\n inherits || {}\n );\n mode.contains.push(FUNCTION_DEF);\n mode.contains.push(hljs.C_NUMBER_MODE);\n mode.contains.push(hljs.C_BLOCK_COMMENT_MODE);\n mode.contains.push(AT_COMMENT_MODE);\n return mode;\n };\n\n const BUILT_IN_REF =\n { // these are explicitly named internal function calls\n className: 'built_in',\n begin: '\\\\b(' + KEYWORDS.built_in.split(' ').join('|') + ')\\\\b'\n };\n\n const STRING_REF =\n {\n className: 'string',\n begin: '\"',\n end: '\"',\n contains: [hljs.BACKSLASH_ESCAPE],\n relevance: 0\n };\n\n const FUNCTION_REF =\n {\n // className: \"fn_ref\",\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(',\n returnBegin: true,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n {\n beginKeywords: KEYWORDS.keyword\n },\n BUILT_IN_REF,\n { // ambiguously named function calls get a relevance of 0\n className: 'built_in',\n begin: hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n }\n ]\n };\n\n const FUNCTION_REF_PARAMS =\n {\n // className: \"fn_ref_params\",\n begin: /\\(/,\n end: /\\)/,\n relevance: 0,\n keywords: {\n built_in: KEYWORDS.built_in,\n literal: KEYWORDS.literal\n },\n contains: [\n hljs.C_NUMBER_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n AT_COMMENT_MODE,\n BUILT_IN_REF,\n FUNCTION_REF,\n STRING_REF,\n 'self'\n ]\n };\n\n FUNCTION_REF.contains.push(FUNCTION_REF_PARAMS);\n\n return {\n name: 'GAUSS',\n aliases: ['gss'],\n case_insensitive: true, // language is case-insensitive\n keywords: KEYWORDS,\n illegal: /(\\{[%#]|[%#]\\}| <- )/,\n contains: [\n hljs.C_NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n AT_COMMENT_MODE,\n STRING_REF,\n PREPROCESSOR,\n {\n className: 'keyword',\n begin: /\\bexternal (matrix|string|array|sparse matrix|struct|proc|keyword|fn)/\n },\n DEFINITION('proc keyword', ';'),\n DEFINITION('fn', '='),\n {\n beginKeywords: 'for threadfor',\n end: /;/,\n // end: /\\(/,\n relevance: 0,\n contains: [\n hljs.C_BLOCK_COMMENT_MODE,\n AT_COMMENT_MODE,\n FUNCTION_REF_PARAMS\n ]\n },\n { // custom method guard\n // excludes method names from keyword processing\n variants: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\.' + hljs.UNDERSCORE_IDENT_RE\n },\n {\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s*='\n }\n ],\n relevance: 0\n },\n FUNCTION_REF,\n STRUCT_TYPE\n ]\n };\n}\n\nmodule.exports = gauss;\n","/*\n Language: G-code (ISO 6983)\n Contributors: Adam Joseph Cook <adam.joseph.cook@gmail.com>\n Description: G-code syntax highlighter for Fanuc and other common CNC machine tool controls.\n Website: https://www.sis.se/api/document/preview/911952/\n */\n\nfunction gcode(hljs) {\n const GCODE_IDENT_RE = '[A-Z_][A-Z0-9_.]*';\n const GCODE_CLOSE_RE = '%';\n const GCODE_KEYWORDS = {\n $pattern: GCODE_IDENT_RE,\n keyword: 'IF DO WHILE ENDWHILE CALL ENDIF SUB ENDSUB GOTO REPEAT ENDREPEAT ' +\n 'EQ LT GT NE GE LE OR XOR'\n };\n const GCODE_START = {\n className: 'meta',\n begin: '([O])([0-9]+)'\n };\n const NUMBER = hljs.inherit(hljs.C_NUMBER_MODE, {\n begin: '([-+]?((\\\\.\\\\d+)|(\\\\d+)(\\\\.\\\\d*)?))|' + hljs.C_NUMBER_RE\n });\n const GCODE_CODE = [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.COMMENT(/\\(/, /\\)/),\n NUMBER,\n hljs.inherit(hljs.APOS_STRING_MODE, {\n illegal: null\n }),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {\n illegal: null\n }),\n {\n className: 'name',\n begin: '([G])([0-9]+\\\\.?[0-9]?)'\n },\n {\n className: 'name',\n begin: '([M])([0-9]+\\\\.?[0-9]?)'\n },\n {\n className: 'attr',\n begin: '(VC|VS|#)',\n end: '(\\\\d+)'\n },\n {\n className: 'attr',\n begin: '(VZOFX|VZOFY|VZOFZ)'\n },\n {\n className: 'built_in',\n begin: '(ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN)(\\\\[)',\n contains: [\n NUMBER\n ],\n end: '\\\\]'\n },\n {\n className: 'symbol',\n variants: [\n {\n begin: 'N',\n end: '\\\\d+',\n illegal: '\\\\W'\n }\n ]\n }\n ];\n\n return {\n name: 'G-code (ISO 6983)',\n aliases: ['nc'],\n // Some implementations (CNC controls) of G-code are interoperable with uppercase and lowercase letters seamlessly.\n // However, most prefer all uppercase and uppercase is customary.\n case_insensitive: true,\n keywords: GCODE_KEYWORDS,\n contains: [\n {\n className: 'meta',\n begin: GCODE_CLOSE_RE\n },\n GCODE_START\n ].concat(GCODE_CODE)\n };\n}\n\nmodule.exports = gcode;\n","/*\n Language: Gherkin\n Author: Sam Pikesley (@pikesley) <sam.pikesley@theodi.org>\n Description: Gherkin is the format for cucumber specifications. It is a domain specific language which helps you to describe business behavior without the need to go into detail of implementation.\n Website: https://cucumber.io/docs/gherkin/\n */\n\nfunction gherkin(hljs) {\n return {\n name: 'Gherkin',\n aliases: ['feature'],\n keywords: 'Feature Background Ability Business\\ Need Scenario Scenarios Scenario\\ Outline Scenario\\ Template Examples Given And Then But When',\n contains: [\n {\n className: 'symbol',\n begin: '\\\\*',\n relevance: 0\n },\n {\n className: 'meta',\n begin: '@[^@\\\\s]+'\n },\n {\n begin: '\\\\|',\n end: '\\\\|\\\\w*$',\n contains: [\n {\n className: 'string',\n begin: '[^|]+'\n }\n ]\n },\n {\n className: 'variable',\n begin: '<',\n end: '>'\n },\n hljs.HASH_COMMENT_MODE,\n {\n className: 'string',\n begin: '\"\"\"',\n end: '\"\"\"'\n },\n hljs.QUOTE_STRING_MODE\n ]\n };\n}\n\nmodule.exports = gherkin;\n","/*\nLanguage: GLSL\nDescription: OpenGL Shading Language\nAuthor: Sergey Tikhomirov <sergey@tikhomirov.io>\nWebsite: https://en.wikipedia.org/wiki/OpenGL_Shading_Language\nCategory: graphics\n*/\n\nfunction glsl(hljs) {\n return {\n name: 'GLSL',\n keywords: {\n keyword:\n // Statements\n 'break continue discard do else for if return while switch case default ' +\n // Qualifiers\n 'attribute binding buffer ccw centroid centroid varying coherent column_major const cw ' +\n 'depth_any depth_greater depth_less depth_unchanged early_fragment_tests equal_spacing ' +\n 'flat fractional_even_spacing fractional_odd_spacing highp in index inout invariant ' +\n 'invocations isolines layout line_strip lines lines_adjacency local_size_x local_size_y ' +\n 'local_size_z location lowp max_vertices mediump noperspective offset origin_upper_left ' +\n 'out packed patch pixel_center_integer point_mode points precise precision quads r11f_g11f_b10f ' +\n 'r16 r16_snorm r16f r16i r16ui r32f r32i r32ui r8 r8_snorm r8i r8ui readonly restrict ' +\n 'rg16 rg16_snorm rg16f rg16i rg16ui rg32f rg32i rg32ui rg8 rg8_snorm rg8i rg8ui rgb10_a2 ' +\n 'rgb10_a2ui rgba16 rgba16_snorm rgba16f rgba16i rgba16ui rgba32f rgba32i rgba32ui rgba8 ' +\n 'rgba8_snorm rgba8i rgba8ui row_major sample shared smooth std140 std430 stream triangle_strip ' +\n 'triangles triangles_adjacency uniform varying vertices volatile writeonly',\n type:\n 'atomic_uint bool bvec2 bvec3 bvec4 dmat2 dmat2x2 dmat2x3 dmat2x4 dmat3 dmat3x2 dmat3x3 ' +\n 'dmat3x4 dmat4 dmat4x2 dmat4x3 dmat4x4 double dvec2 dvec3 dvec4 float iimage1D iimage1DArray ' +\n 'iimage2D iimage2DArray iimage2DMS iimage2DMSArray iimage2DRect iimage3D iimageBuffer ' +\n 'iimageCube iimageCubeArray image1D image1DArray image2D image2DArray image2DMS image2DMSArray ' +\n 'image2DRect image3D imageBuffer imageCube imageCubeArray int isampler1D isampler1DArray ' +\n 'isampler2D isampler2DArray isampler2DMS isampler2DMSArray isampler2DRect isampler3D ' +\n 'isamplerBuffer isamplerCube isamplerCubeArray ivec2 ivec3 ivec4 mat2 mat2x2 mat2x3 ' +\n 'mat2x4 mat3 mat3x2 mat3x3 mat3x4 mat4 mat4x2 mat4x3 mat4x4 sampler1D sampler1DArray ' +\n 'sampler1DArrayShadow sampler1DShadow sampler2D sampler2DArray sampler2DArrayShadow ' +\n 'sampler2DMS sampler2DMSArray sampler2DRect sampler2DRectShadow sampler2DShadow sampler3D ' +\n 'samplerBuffer samplerCube samplerCubeArray samplerCubeArrayShadow samplerCubeShadow ' +\n 'image1D uimage1DArray uimage2D uimage2DArray uimage2DMS uimage2DMSArray uimage2DRect ' +\n 'uimage3D uimageBuffer uimageCube uimageCubeArray uint usampler1D usampler1DArray ' +\n 'usampler2D usampler2DArray usampler2DMS usampler2DMSArray usampler2DRect usampler3D ' +\n 'samplerBuffer usamplerCube usamplerCubeArray uvec2 uvec3 uvec4 vec2 vec3 vec4 void',\n built_in:\n // Constants\n 'gl_MaxAtomicCounterBindings gl_MaxAtomicCounterBufferSize gl_MaxClipDistances gl_MaxClipPlanes ' +\n 'gl_MaxCombinedAtomicCounterBuffers gl_MaxCombinedAtomicCounters gl_MaxCombinedImageUniforms ' +\n 'gl_MaxCombinedImageUnitsAndFragmentOutputs gl_MaxCombinedTextureImageUnits gl_MaxComputeAtomicCounterBuffers ' +\n 'gl_MaxComputeAtomicCounters gl_MaxComputeImageUniforms gl_MaxComputeTextureImageUnits ' +\n 'gl_MaxComputeUniformComponents gl_MaxComputeWorkGroupCount gl_MaxComputeWorkGroupSize ' +\n 'gl_MaxDrawBuffers gl_MaxFragmentAtomicCounterBuffers gl_MaxFragmentAtomicCounters ' +\n 'gl_MaxFragmentImageUniforms gl_MaxFragmentInputComponents gl_MaxFragmentInputVectors ' +\n 'gl_MaxFragmentUniformComponents gl_MaxFragmentUniformVectors gl_MaxGeometryAtomicCounterBuffers ' +\n 'gl_MaxGeometryAtomicCounters gl_MaxGeometryImageUniforms gl_MaxGeometryInputComponents ' +\n 'gl_MaxGeometryOutputComponents gl_MaxGeometryOutputVertices gl_MaxGeometryTextureImageUnits ' +\n 'gl_MaxGeometryTotalOutputComponents gl_MaxGeometryUniformComponents gl_MaxGeometryVaryingComponents ' +\n 'gl_MaxImageSamples gl_MaxImageUnits gl_MaxLights gl_MaxPatchVertices gl_MaxProgramTexelOffset ' +\n 'gl_MaxTessControlAtomicCounterBuffers gl_MaxTessControlAtomicCounters gl_MaxTessControlImageUniforms ' +\n 'gl_MaxTessControlInputComponents gl_MaxTessControlOutputComponents gl_MaxTessControlTextureImageUnits ' +\n 'gl_MaxTessControlTotalOutputComponents gl_MaxTessControlUniformComponents ' +\n 'gl_MaxTessEvaluationAtomicCounterBuffers gl_MaxTessEvaluationAtomicCounters ' +\n 'gl_MaxTessEvaluationImageUniforms gl_MaxTessEvaluationInputComponents gl_MaxTessEvaluationOutputComponents ' +\n 'gl_MaxTessEvaluationTextureImageUnits gl_MaxTessEvaluationUniformComponents ' +\n 'gl_MaxTessGenLevel gl_MaxTessPatchComponents gl_MaxTextureCoords gl_MaxTextureImageUnits ' +\n 'gl_MaxTextureUnits gl_MaxVaryingComponents gl_MaxVaryingFloats gl_MaxVaryingVectors ' +\n 'gl_MaxVertexAtomicCounterBuffers gl_MaxVertexAtomicCounters gl_MaxVertexAttribs gl_MaxVertexImageUniforms ' +\n 'gl_MaxVertexOutputComponents gl_MaxVertexOutputVectors gl_MaxVertexTextureImageUnits ' +\n 'gl_MaxVertexUniformComponents gl_MaxVertexUniformVectors gl_MaxViewports gl_MinProgramTexelOffset ' +\n // Variables\n 'gl_BackColor gl_BackLightModelProduct gl_BackLightProduct gl_BackMaterial ' +\n 'gl_BackSecondaryColor gl_ClipDistance gl_ClipPlane gl_ClipVertex gl_Color ' +\n 'gl_DepthRange gl_EyePlaneQ gl_EyePlaneR gl_EyePlaneS gl_EyePlaneT gl_Fog gl_FogCoord ' +\n 'gl_FogFragCoord gl_FragColor gl_FragCoord gl_FragData gl_FragDepth gl_FrontColor ' +\n 'gl_FrontFacing gl_FrontLightModelProduct gl_FrontLightProduct gl_FrontMaterial ' +\n 'gl_FrontSecondaryColor gl_GlobalInvocationID gl_InstanceID gl_InvocationID gl_Layer gl_LightModel ' +\n 'gl_LightSource gl_LocalInvocationID gl_LocalInvocationIndex gl_ModelViewMatrix ' +\n 'gl_ModelViewMatrixInverse gl_ModelViewMatrixInverseTranspose gl_ModelViewMatrixTranspose ' +\n 'gl_ModelViewProjectionMatrix gl_ModelViewProjectionMatrixInverse gl_ModelViewProjectionMatrixInverseTranspose ' +\n 'gl_ModelViewProjectionMatrixTranspose gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 ' +\n 'gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 ' +\n 'gl_Normal gl_NormalMatrix gl_NormalScale gl_NumSamples gl_NumWorkGroups gl_ObjectPlaneQ ' +\n 'gl_ObjectPlaneR gl_ObjectPlaneS gl_ObjectPlaneT gl_PatchVerticesIn gl_Point gl_PointCoord ' +\n 'gl_PointSize gl_Position gl_PrimitiveID gl_PrimitiveIDIn gl_ProjectionMatrix gl_ProjectionMatrixInverse ' +\n 'gl_ProjectionMatrixInverseTranspose gl_ProjectionMatrixTranspose gl_SampleID gl_SampleMask ' +\n 'gl_SampleMaskIn gl_SamplePosition gl_SecondaryColor gl_TessCoord gl_TessLevelInner gl_TessLevelOuter ' +\n 'gl_TexCoord gl_TextureEnvColor gl_TextureMatrix gl_TextureMatrixInverse gl_TextureMatrixInverseTranspose ' +\n 'gl_TextureMatrixTranspose gl_Vertex gl_VertexID gl_ViewportIndex gl_WorkGroupID gl_WorkGroupSize gl_in gl_out ' +\n // Functions\n 'EmitStreamVertex EmitVertex EndPrimitive EndStreamPrimitive abs acos acosh all any asin ' +\n 'asinh atan atanh atomicAdd atomicAnd atomicCompSwap atomicCounter atomicCounterDecrement ' +\n 'atomicCounterIncrement atomicExchange atomicMax atomicMin atomicOr atomicXor barrier ' +\n 'bitCount bitfieldExtract bitfieldInsert bitfieldReverse ceil clamp cos cosh cross ' +\n 'dFdx dFdy degrees determinant distance dot equal exp exp2 faceforward findLSB findMSB ' +\n 'floatBitsToInt floatBitsToUint floor fma fract frexp ftransform fwidth greaterThan ' +\n 'greaterThanEqual groupMemoryBarrier imageAtomicAdd imageAtomicAnd imageAtomicCompSwap ' +\n 'imageAtomicExchange imageAtomicMax imageAtomicMin imageAtomicOr imageAtomicXor imageLoad ' +\n 'imageSize imageStore imulExtended intBitsToFloat interpolateAtCentroid interpolateAtOffset ' +\n 'interpolateAtSample inverse inversesqrt isinf isnan ldexp length lessThan lessThanEqual log ' +\n 'log2 matrixCompMult max memoryBarrier memoryBarrierAtomicCounter memoryBarrierBuffer ' +\n 'memoryBarrierImage memoryBarrierShared min mix mod modf noise1 noise2 noise3 noise4 ' +\n 'normalize not notEqual outerProduct packDouble2x32 packHalf2x16 packSnorm2x16 packSnorm4x8 ' +\n 'packUnorm2x16 packUnorm4x8 pow radians reflect refract round roundEven shadow1D shadow1DLod ' +\n 'shadow1DProj shadow1DProjLod shadow2D shadow2DLod shadow2DProj shadow2DProjLod sign sin sinh ' +\n 'smoothstep sqrt step tan tanh texelFetch texelFetchOffset texture texture1D texture1DLod ' +\n 'texture1DProj texture1DProjLod texture2D texture2DLod texture2DProj texture2DProjLod ' +\n 'texture3D texture3DLod texture3DProj texture3DProjLod textureCube textureCubeLod ' +\n 'textureGather textureGatherOffset textureGatherOffsets textureGrad textureGradOffset ' +\n 'textureLod textureLodOffset textureOffset textureProj textureProjGrad textureProjGradOffset ' +\n 'textureProjLod textureProjLodOffset textureProjOffset textureQueryLevels textureQueryLod ' +\n 'textureSize transpose trunc uaddCarry uintBitsToFloat umulExtended unpackDouble2x32 ' +\n 'unpackHalf2x16 unpackSnorm2x16 unpackSnorm4x8 unpackUnorm2x16 unpackUnorm4x8 usubBorrow',\n literal: 'true false'\n },\n illegal: '\"',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'meta',\n begin: '#',\n end: '$'\n }\n ]\n };\n}\n\nmodule.exports = glsl;\n","/*\nLanguage: GML\nAuthor: Meseta <meseta@gmail.com>\nDescription: Game Maker Language for GameMaker Studio 2\nWebsite: https://docs2.yoyogames.com\nCategory: scripting\n*/\n\nfunction gml(hljs) {\n const GML_KEYWORDS = {\n keyword: 'begin end if then else while do for break continue with until ' +\n 'repeat exit and or xor not return mod div switch case default var ' +\n 'globalvar enum function constructor delete #macro #region #endregion',\n built_in: 'is_real is_string is_array is_undefined is_int32 is_int64 is_ptr ' +\n 'is_vec3 is_vec4 is_matrix is_bool is_method is_struct is_infinity is_nan ' +\n 'is_numeric typeof variable_global_exists variable_global_get variable_global_set ' +\n 'variable_instance_exists variable_instance_get variable_instance_set ' +\n 'variable_instance_get_names variable_struct_exists variable_struct_get ' +\n 'variable_struct_get_names variable_struct_names_count variable_struct_remove ' +\n 'variable_struct_set array_delete array_insert array_length array_length_1d ' +\n 'array_length_2d array_height_2d array_equals array_create ' +\n 'array_copy array_pop array_push array_resize array_sort ' +\n 'random random_range irandom irandom_range random_set_seed random_get_seed ' +\n 'randomize randomise choose abs round floor ceil sign frac sqrt sqr ' +\n 'exp ln log2 log10 sin cos tan arcsin arccos arctan arctan2 dsin dcos ' +\n 'dtan darcsin darccos darctan darctan2 degtorad radtodeg power logn ' +\n 'min max mean median clamp lerp dot_product dot_product_3d ' +\n 'dot_product_normalised dot_product_3d_normalised ' +\n 'dot_product_normalized dot_product_3d_normalized math_set_epsilon ' +\n 'math_get_epsilon angle_difference point_distance_3d point_distance ' +\n 'point_direction lengthdir_x lengthdir_y real string int64 ptr ' +\n 'string_format chr ansi_char ord string_length string_byte_length ' +\n 'string_pos string_copy string_char_at string_ord_at string_byte_at ' +\n 'string_set_byte_at string_delete string_insert string_lower ' +\n 'string_upper string_repeat string_letters string_digits ' +\n 'string_lettersdigits string_replace string_replace_all string_count ' +\n 'string_hash_to_newline clipboard_has_text clipboard_set_text ' +\n 'clipboard_get_text date_current_datetime date_create_datetime ' +\n 'date_valid_datetime date_inc_year date_inc_month date_inc_week ' +\n 'date_inc_day date_inc_hour date_inc_minute date_inc_second ' +\n 'date_get_year date_get_month date_get_week date_get_day ' +\n 'date_get_hour date_get_minute date_get_second date_get_weekday ' +\n 'date_get_day_of_year date_get_hour_of_year date_get_minute_of_year ' +\n 'date_get_second_of_year date_year_span date_month_span ' +\n 'date_week_span date_day_span date_hour_span date_minute_span ' +\n 'date_second_span date_compare_datetime date_compare_date ' +\n 'date_compare_time date_date_of date_time_of date_datetime_string ' +\n 'date_date_string date_time_string date_days_in_month ' +\n 'date_days_in_year date_leap_year date_is_today date_set_timezone ' +\n 'date_get_timezone game_set_speed game_get_speed motion_set ' +\n 'motion_add place_free place_empty place_meeting place_snapped ' +\n 'move_random move_snap move_towards_point move_contact_solid ' +\n 'move_contact_all move_outside_solid move_outside_all ' +\n 'move_bounce_solid move_bounce_all move_wrap distance_to_point ' +\n 'distance_to_object position_empty position_meeting path_start ' +\n 'path_end mp_linear_step mp_potential_step mp_linear_step_object ' +\n 'mp_potential_step_object mp_potential_settings mp_linear_path ' +\n 'mp_potential_path mp_linear_path_object mp_potential_path_object ' +\n 'mp_grid_create mp_grid_destroy mp_grid_clear_all mp_grid_clear_cell ' +\n 'mp_grid_clear_rectangle mp_grid_add_cell mp_grid_get_cell ' +\n 'mp_grid_add_rectangle mp_grid_add_instances mp_grid_path ' +\n 'mp_grid_draw mp_grid_to_ds_grid collision_point collision_rectangle ' +\n 'collision_circle collision_ellipse collision_line ' +\n 'collision_point_list collision_rectangle_list collision_circle_list ' +\n 'collision_ellipse_list collision_line_list instance_position_list ' +\n 'instance_place_list point_in_rectangle ' +\n 'point_in_triangle point_in_circle rectangle_in_rectangle ' +\n 'rectangle_in_triangle rectangle_in_circle instance_find ' +\n 'instance_exists instance_number instance_position instance_nearest ' +\n 'instance_furthest instance_place instance_create_depth ' +\n 'instance_create_layer instance_copy instance_change instance_destroy ' +\n 'position_destroy position_change instance_id_get ' +\n 'instance_deactivate_all instance_deactivate_object ' +\n 'instance_deactivate_region instance_activate_all ' +\n 'instance_activate_object instance_activate_region room_goto ' +\n 'room_goto_previous room_goto_next room_previous room_next ' +\n 'room_restart game_end game_restart game_load game_save ' +\n 'game_save_buffer game_load_buffer event_perform event_user ' +\n 'event_perform_object event_inherited show_debug_message ' +\n 'show_debug_overlay debug_event debug_get_callstack alarm_get ' +\n 'alarm_set font_texture_page_size keyboard_set_map keyboard_get_map ' +\n 'keyboard_unset_map keyboard_check keyboard_check_pressed ' +\n 'keyboard_check_released keyboard_check_direct keyboard_get_numlock ' +\n 'keyboard_set_numlock keyboard_key_press keyboard_key_release ' +\n 'keyboard_clear io_clear mouse_check_button ' +\n 'mouse_check_button_pressed mouse_check_button_released ' +\n 'mouse_wheel_up mouse_wheel_down mouse_clear draw_self draw_sprite ' +\n 'draw_sprite_pos draw_sprite_ext draw_sprite_stretched ' +\n 'draw_sprite_stretched_ext draw_sprite_tiled draw_sprite_tiled_ext ' +\n 'draw_sprite_part draw_sprite_part_ext draw_sprite_general draw_clear ' +\n 'draw_clear_alpha draw_point draw_line draw_line_width draw_rectangle ' +\n 'draw_roundrect draw_roundrect_ext draw_triangle draw_circle ' +\n 'draw_ellipse draw_set_circle_precision draw_arrow draw_button ' +\n 'draw_path draw_healthbar draw_getpixel draw_getpixel_ext ' +\n 'draw_set_colour draw_set_color draw_set_alpha draw_get_colour ' +\n 'draw_get_color draw_get_alpha merge_colour make_colour_rgb ' +\n 'make_colour_hsv colour_get_red colour_get_green colour_get_blue ' +\n 'colour_get_hue colour_get_saturation colour_get_value merge_color ' +\n 'make_color_rgb make_color_hsv color_get_red color_get_green ' +\n 'color_get_blue color_get_hue color_get_saturation color_get_value ' +\n 'merge_color screen_save screen_save_part draw_set_font ' +\n 'draw_set_halign draw_set_valign draw_text draw_text_ext string_width ' +\n 'string_height string_width_ext string_height_ext ' +\n 'draw_text_transformed draw_text_ext_transformed draw_text_colour ' +\n 'draw_text_ext_colour draw_text_transformed_colour ' +\n 'draw_text_ext_transformed_colour draw_text_color draw_text_ext_color ' +\n 'draw_text_transformed_color draw_text_ext_transformed_color ' +\n 'draw_point_colour draw_line_colour draw_line_width_colour ' +\n 'draw_rectangle_colour draw_roundrect_colour ' +\n 'draw_roundrect_colour_ext draw_triangle_colour draw_circle_colour ' +\n 'draw_ellipse_colour draw_point_color draw_line_color ' +\n 'draw_line_width_color draw_rectangle_color draw_roundrect_color ' +\n 'draw_roundrect_color_ext draw_triangle_color draw_circle_color ' +\n 'draw_ellipse_color draw_primitive_begin draw_vertex ' +\n 'draw_vertex_colour draw_vertex_color draw_primitive_end ' +\n 'sprite_get_uvs font_get_uvs sprite_get_texture font_get_texture ' +\n 'texture_get_width texture_get_height texture_get_uvs ' +\n 'draw_primitive_begin_texture draw_vertex_texture ' +\n 'draw_vertex_texture_colour draw_vertex_texture_color ' +\n 'texture_global_scale surface_create surface_create_ext ' +\n 'surface_resize surface_free surface_exists surface_get_width ' +\n 'surface_get_height surface_get_texture surface_set_target ' +\n 'surface_set_target_ext surface_reset_target surface_depth_disable ' +\n 'surface_get_depth_disable draw_surface draw_surface_stretched ' +\n 'draw_surface_tiled draw_surface_part draw_surface_ext ' +\n 'draw_surface_stretched_ext draw_surface_tiled_ext ' +\n 'draw_surface_part_ext draw_surface_general surface_getpixel ' +\n 'surface_getpixel_ext surface_save surface_save_part surface_copy ' +\n 'surface_copy_part application_surface_draw_enable ' +\n 'application_get_position application_surface_enable ' +\n 'application_surface_is_enabled display_get_width display_get_height ' +\n 'display_get_orientation display_get_gui_width display_get_gui_height ' +\n 'display_reset display_mouse_get_x display_mouse_get_y ' +\n 'display_mouse_set display_set_ui_visibility ' +\n 'window_set_fullscreen window_get_fullscreen ' +\n 'window_set_caption window_set_min_width window_set_max_width ' +\n 'window_set_min_height window_set_max_height window_get_visible_rects ' +\n 'window_get_caption window_set_cursor window_get_cursor ' +\n 'window_set_colour window_get_colour window_set_color ' +\n 'window_get_color window_set_position window_set_size ' +\n 'window_set_rectangle window_center window_get_x window_get_y ' +\n 'window_get_width window_get_height window_mouse_get_x ' +\n 'window_mouse_get_y window_mouse_set window_view_mouse_get_x ' +\n 'window_view_mouse_get_y window_views_mouse_get_x ' +\n 'window_views_mouse_get_y audio_listener_position ' +\n 'audio_listener_velocity audio_listener_orientation ' +\n 'audio_emitter_position audio_emitter_create audio_emitter_free ' +\n 'audio_emitter_exists audio_emitter_pitch audio_emitter_velocity ' +\n 'audio_emitter_falloff audio_emitter_gain audio_play_sound ' +\n 'audio_play_sound_on audio_play_sound_at audio_stop_sound ' +\n 'audio_resume_music audio_music_is_playing audio_resume_sound ' +\n 'audio_pause_sound audio_pause_music audio_channel_num ' +\n 'audio_sound_length audio_get_type audio_falloff_set_model ' +\n 'audio_play_music audio_stop_music audio_master_gain audio_music_gain ' +\n 'audio_sound_gain audio_sound_pitch audio_stop_all audio_resume_all ' +\n 'audio_pause_all audio_is_playing audio_is_paused audio_exists ' +\n 'audio_sound_set_track_position audio_sound_get_track_position ' +\n 'audio_emitter_get_gain audio_emitter_get_pitch audio_emitter_get_x ' +\n 'audio_emitter_get_y audio_emitter_get_z audio_emitter_get_vx ' +\n 'audio_emitter_get_vy audio_emitter_get_vz ' +\n 'audio_listener_set_position audio_listener_set_velocity ' +\n 'audio_listener_set_orientation audio_listener_get_data ' +\n 'audio_set_master_gain audio_get_master_gain audio_sound_get_gain ' +\n 'audio_sound_get_pitch audio_get_name audio_sound_set_track_position ' +\n 'audio_sound_get_track_position audio_create_stream ' +\n 'audio_destroy_stream audio_create_sync_group ' +\n 'audio_destroy_sync_group audio_play_in_sync_group ' +\n 'audio_start_sync_group audio_stop_sync_group audio_pause_sync_group ' +\n 'audio_resume_sync_group audio_sync_group_get_track_pos ' +\n 'audio_sync_group_debug audio_sync_group_is_playing audio_debug ' +\n 'audio_group_load audio_group_unload audio_group_is_loaded ' +\n 'audio_group_load_progress audio_group_name audio_group_stop_all ' +\n 'audio_group_set_gain audio_create_buffer_sound ' +\n 'audio_free_buffer_sound audio_create_play_queue ' +\n 'audio_free_play_queue audio_queue_sound audio_get_recorder_count ' +\n 'audio_get_recorder_info audio_start_recording audio_stop_recording ' +\n 'audio_sound_get_listener_mask audio_emitter_get_listener_mask ' +\n 'audio_get_listener_mask audio_sound_set_listener_mask ' +\n 'audio_emitter_set_listener_mask audio_set_listener_mask ' +\n 'audio_get_listener_count audio_get_listener_info audio_system ' +\n 'show_message show_message_async clickable_add clickable_add_ext ' +\n 'clickable_change clickable_change_ext clickable_delete ' +\n 'clickable_exists clickable_set_style show_question ' +\n 'show_question_async get_integer get_string get_integer_async ' +\n 'get_string_async get_login_async get_open_filename get_save_filename ' +\n 'get_open_filename_ext get_save_filename_ext show_error ' +\n 'highscore_clear highscore_add highscore_value highscore_name ' +\n 'draw_highscore sprite_exists sprite_get_name sprite_get_number ' +\n 'sprite_get_width sprite_get_height sprite_get_xoffset ' +\n 'sprite_get_yoffset sprite_get_bbox_left sprite_get_bbox_right ' +\n 'sprite_get_bbox_top sprite_get_bbox_bottom sprite_save ' +\n 'sprite_save_strip sprite_set_cache_size sprite_set_cache_size_ext ' +\n 'sprite_get_tpe sprite_prefetch sprite_prefetch_multi sprite_flush ' +\n 'sprite_flush_multi sprite_set_speed sprite_get_speed_type ' +\n 'sprite_get_speed font_exists font_get_name font_get_fontname ' +\n 'font_get_bold font_get_italic font_get_first font_get_last ' +\n 'font_get_size font_set_cache_size path_exists path_get_name ' +\n 'path_get_length path_get_time path_get_kind path_get_closed ' +\n 'path_get_precision path_get_number path_get_point_x path_get_point_y ' +\n 'path_get_point_speed path_get_x path_get_y path_get_speed ' +\n 'script_exists script_get_name timeline_add timeline_delete ' +\n 'timeline_clear timeline_exists timeline_get_name ' +\n 'timeline_moment_clear timeline_moment_add_script timeline_size ' +\n 'timeline_max_moment object_exists object_get_name object_get_sprite ' +\n 'object_get_solid object_get_visible object_get_persistent ' +\n 'object_get_mask object_get_parent object_get_physics ' +\n 'object_is_ancestor room_exists room_get_name sprite_set_offset ' +\n 'sprite_duplicate sprite_assign sprite_merge sprite_add ' +\n 'sprite_replace sprite_create_from_surface sprite_add_from_surface ' +\n 'sprite_delete sprite_set_alpha_from_sprite sprite_collision_mask ' +\n 'font_add_enable_aa font_add_get_enable_aa font_add font_add_sprite ' +\n 'font_add_sprite_ext font_replace font_replace_sprite ' +\n 'font_replace_sprite_ext font_delete path_set_kind path_set_closed ' +\n 'path_set_precision path_add path_assign path_duplicate path_append ' +\n 'path_delete path_add_point path_insert_point path_change_point ' +\n 'path_delete_point path_clear_points path_reverse path_mirror ' +\n 'path_flip path_rotate path_rescale path_shift script_execute ' +\n 'object_set_sprite object_set_solid object_set_visible ' +\n 'object_set_persistent object_set_mask room_set_width room_set_height ' +\n 'room_set_persistent room_set_background_colour ' +\n 'room_set_background_color room_set_view room_set_viewport ' +\n 'room_get_viewport room_set_view_enabled room_add room_duplicate ' +\n 'room_assign room_instance_add room_instance_clear room_get_camera ' +\n 'room_set_camera asset_get_index asset_get_type ' +\n 'file_text_open_from_string file_text_open_read file_text_open_write ' +\n 'file_text_open_append file_text_close file_text_write_string ' +\n 'file_text_write_real file_text_writeln file_text_read_string ' +\n 'file_text_read_real file_text_readln file_text_eof file_text_eoln ' +\n 'file_exists file_delete file_rename file_copy directory_exists ' +\n 'directory_create directory_destroy file_find_first file_find_next ' +\n 'file_find_close file_attributes filename_name filename_path ' +\n 'filename_dir filename_drive filename_ext filename_change_ext ' +\n 'file_bin_open file_bin_rewrite file_bin_close file_bin_position ' +\n 'file_bin_size file_bin_seek file_bin_write_byte file_bin_read_byte ' +\n 'parameter_count parameter_string environment_get_variable ' +\n 'ini_open_from_string ini_open ini_close ini_read_string ' +\n 'ini_read_real ini_write_string ini_write_real ini_key_exists ' +\n 'ini_section_exists ini_key_delete ini_section_delete ' +\n 'ds_set_precision ds_exists ds_stack_create ds_stack_destroy ' +\n 'ds_stack_clear ds_stack_copy ds_stack_size ds_stack_empty ' +\n 'ds_stack_push ds_stack_pop ds_stack_top ds_stack_write ds_stack_read ' +\n 'ds_queue_create ds_queue_destroy ds_queue_clear ds_queue_copy ' +\n 'ds_queue_size ds_queue_empty ds_queue_enqueue ds_queue_dequeue ' +\n 'ds_queue_head ds_queue_tail ds_queue_write ds_queue_read ' +\n 'ds_list_create ds_list_destroy ds_list_clear ds_list_copy ' +\n 'ds_list_size ds_list_empty ds_list_add ds_list_insert ' +\n 'ds_list_replace ds_list_delete ds_list_find_index ds_list_find_value ' +\n 'ds_list_mark_as_list ds_list_mark_as_map ds_list_sort ' +\n 'ds_list_shuffle ds_list_write ds_list_read ds_list_set ds_map_create ' +\n 'ds_map_destroy ds_map_clear ds_map_copy ds_map_size ds_map_empty ' +\n 'ds_map_add ds_map_add_list ds_map_add_map ds_map_replace ' +\n 'ds_map_replace_map ds_map_replace_list ds_map_delete ds_map_exists ' +\n 'ds_map_find_value ds_map_find_previous ds_map_find_next ' +\n 'ds_map_find_first ds_map_find_last ds_map_write ds_map_read ' +\n 'ds_map_secure_save ds_map_secure_load ds_map_secure_load_buffer ' +\n 'ds_map_secure_save_buffer ds_map_set ds_priority_create ' +\n 'ds_priority_destroy ds_priority_clear ds_priority_copy ' +\n 'ds_priority_size ds_priority_empty ds_priority_add ' +\n 'ds_priority_change_priority ds_priority_find_priority ' +\n 'ds_priority_delete_value ds_priority_delete_min ds_priority_find_min ' +\n 'ds_priority_delete_max ds_priority_find_max ds_priority_write ' +\n 'ds_priority_read ds_grid_create ds_grid_destroy ds_grid_copy ' +\n 'ds_grid_resize ds_grid_width ds_grid_height ds_grid_clear ' +\n 'ds_grid_set ds_grid_add ds_grid_multiply ds_grid_set_region ' +\n 'ds_grid_add_region ds_grid_multiply_region ds_grid_set_disk ' +\n 'ds_grid_add_disk ds_grid_multiply_disk ds_grid_set_grid_region ' +\n 'ds_grid_add_grid_region ds_grid_multiply_grid_region ds_grid_get ' +\n 'ds_grid_get_sum ds_grid_get_max ds_grid_get_min ds_grid_get_mean ' +\n 'ds_grid_get_disk_sum ds_grid_get_disk_min ds_grid_get_disk_max ' +\n 'ds_grid_get_disk_mean ds_grid_value_exists ds_grid_value_x ' +\n 'ds_grid_value_y ds_grid_value_disk_exists ds_grid_value_disk_x ' +\n 'ds_grid_value_disk_y ds_grid_shuffle ds_grid_write ds_grid_read ' +\n 'ds_grid_sort ds_grid_set ds_grid_get effect_create_below ' +\n 'effect_create_above effect_clear part_type_create part_type_destroy ' +\n 'part_type_exists part_type_clear part_type_shape part_type_sprite ' +\n 'part_type_size part_type_scale part_type_orientation part_type_life ' +\n 'part_type_step part_type_death part_type_speed part_type_direction ' +\n 'part_type_gravity part_type_colour1 part_type_colour2 ' +\n 'part_type_colour3 part_type_colour_mix part_type_colour_rgb ' +\n 'part_type_colour_hsv part_type_color1 part_type_color2 ' +\n 'part_type_color3 part_type_color_mix part_type_color_rgb ' +\n 'part_type_color_hsv part_type_alpha1 part_type_alpha2 ' +\n 'part_type_alpha3 part_type_blend part_system_create ' +\n 'part_system_create_layer part_system_destroy part_system_exists ' +\n 'part_system_clear part_system_draw_order part_system_depth ' +\n 'part_system_position part_system_automatic_update ' +\n 'part_system_automatic_draw part_system_update part_system_drawit ' +\n 'part_system_get_layer part_system_layer part_particles_create ' +\n 'part_particles_create_colour part_particles_create_color ' +\n 'part_particles_clear part_particles_count part_emitter_create ' +\n 'part_emitter_destroy part_emitter_destroy_all part_emitter_exists ' +\n 'part_emitter_clear part_emitter_region part_emitter_burst ' +\n 'part_emitter_stream external_call external_define external_free ' +\n 'window_handle window_device matrix_get matrix_set ' +\n 'matrix_build_identity matrix_build matrix_build_lookat ' +\n 'matrix_build_projection_ortho matrix_build_projection_perspective ' +\n 'matrix_build_projection_perspective_fov matrix_multiply ' +\n 'matrix_transform_vertex matrix_stack_push matrix_stack_pop ' +\n 'matrix_stack_multiply matrix_stack_set matrix_stack_clear ' +\n 'matrix_stack_top matrix_stack_is_empty browser_input_capture ' +\n 'os_get_config os_get_info os_get_language os_get_region ' +\n 'os_lock_orientation display_get_dpi_x display_get_dpi_y ' +\n 'display_set_gui_size display_set_gui_maximise ' +\n 'display_set_gui_maximize device_mouse_dbclick_enable ' +\n 'display_set_timing_method display_get_timing_method ' +\n 'display_set_sleep_margin display_get_sleep_margin virtual_key_add ' +\n 'virtual_key_hide virtual_key_delete virtual_key_show ' +\n 'draw_enable_drawevent draw_enable_swf_aa draw_set_swf_aa_level ' +\n 'draw_get_swf_aa_level draw_texture_flush draw_flush ' +\n 'gpu_set_blendenable gpu_set_ztestenable gpu_set_zfunc ' +\n 'gpu_set_zwriteenable gpu_set_lightingenable gpu_set_fog ' +\n 'gpu_set_cullmode gpu_set_blendmode gpu_set_blendmode_ext ' +\n 'gpu_set_blendmode_ext_sepalpha gpu_set_colorwriteenable ' +\n 'gpu_set_colourwriteenable gpu_set_alphatestenable ' +\n 'gpu_set_alphatestref gpu_set_alphatestfunc gpu_set_texfilter ' +\n 'gpu_set_texfilter_ext gpu_set_texrepeat gpu_set_texrepeat_ext ' +\n 'gpu_set_tex_filter gpu_set_tex_filter_ext gpu_set_tex_repeat ' +\n 'gpu_set_tex_repeat_ext gpu_set_tex_mip_filter ' +\n 'gpu_set_tex_mip_filter_ext gpu_set_tex_mip_bias ' +\n 'gpu_set_tex_mip_bias_ext gpu_set_tex_min_mip gpu_set_tex_min_mip_ext ' +\n 'gpu_set_tex_max_mip gpu_set_tex_max_mip_ext gpu_set_tex_max_aniso ' +\n 'gpu_set_tex_max_aniso_ext gpu_set_tex_mip_enable ' +\n 'gpu_set_tex_mip_enable_ext gpu_get_blendenable gpu_get_ztestenable ' +\n 'gpu_get_zfunc gpu_get_zwriteenable gpu_get_lightingenable ' +\n 'gpu_get_fog gpu_get_cullmode gpu_get_blendmode gpu_get_blendmode_ext ' +\n 'gpu_get_blendmode_ext_sepalpha gpu_get_blendmode_src ' +\n 'gpu_get_blendmode_dest gpu_get_blendmode_srcalpha ' +\n 'gpu_get_blendmode_destalpha gpu_get_colorwriteenable ' +\n 'gpu_get_colourwriteenable gpu_get_alphatestenable ' +\n 'gpu_get_alphatestref gpu_get_alphatestfunc gpu_get_texfilter ' +\n 'gpu_get_texfilter_ext gpu_get_texrepeat gpu_get_texrepeat_ext ' +\n 'gpu_get_tex_filter gpu_get_tex_filter_ext gpu_get_tex_repeat ' +\n 'gpu_get_tex_repeat_ext gpu_get_tex_mip_filter ' +\n 'gpu_get_tex_mip_filter_ext gpu_get_tex_mip_bias ' +\n 'gpu_get_tex_mip_bias_ext gpu_get_tex_min_mip gpu_get_tex_min_mip_ext ' +\n 'gpu_get_tex_max_mip gpu_get_tex_max_mip_ext gpu_get_tex_max_aniso ' +\n 'gpu_get_tex_max_aniso_ext gpu_get_tex_mip_enable ' +\n 'gpu_get_tex_mip_enable_ext gpu_push_state gpu_pop_state ' +\n 'gpu_get_state gpu_set_state draw_light_define_ambient ' +\n 'draw_light_define_direction draw_light_define_point ' +\n 'draw_light_enable draw_set_lighting draw_light_get_ambient ' +\n 'draw_light_get draw_get_lighting shop_leave_rating url_get_domain ' +\n 'url_open url_open_ext url_open_full get_timer achievement_login ' +\n 'achievement_logout achievement_post achievement_increment ' +\n 'achievement_post_score achievement_available ' +\n 'achievement_show_achievements achievement_show_leaderboards ' +\n 'achievement_load_friends achievement_load_leaderboard ' +\n 'achievement_send_challenge achievement_load_progress ' +\n 'achievement_reset achievement_login_status achievement_get_pic ' +\n 'achievement_show_challenge_notifications achievement_get_challenges ' +\n 'achievement_event achievement_show achievement_get_info ' +\n 'cloud_file_save cloud_string_save cloud_synchronise ads_enable ' +\n 'ads_disable ads_setup ads_engagement_launch ads_engagement_available ' +\n 'ads_engagement_active ads_event ads_event_preload ' +\n 'ads_set_reward_callback ads_get_display_height ads_get_display_width ' +\n 'ads_move ads_interstitial_available ads_interstitial_display ' +\n 'device_get_tilt_x device_get_tilt_y device_get_tilt_z ' +\n 'device_is_keypad_open device_mouse_check_button ' +\n 'device_mouse_check_button_pressed device_mouse_check_button_released ' +\n 'device_mouse_x device_mouse_y device_mouse_raw_x device_mouse_raw_y ' +\n 'device_mouse_x_to_gui device_mouse_y_to_gui iap_activate iap_status ' +\n 'iap_enumerate_products iap_restore_all iap_acquire iap_consume ' +\n 'iap_product_details iap_purchase_details facebook_init ' +\n 'facebook_login facebook_status facebook_graph_request ' +\n 'facebook_dialog facebook_logout facebook_launch_offerwall ' +\n 'facebook_post_message facebook_send_invite facebook_user_id ' +\n 'facebook_accesstoken facebook_check_permission ' +\n 'facebook_request_read_permissions ' +\n 'facebook_request_publish_permissions gamepad_is_supported ' +\n 'gamepad_get_device_count gamepad_is_connected ' +\n 'gamepad_get_description gamepad_get_button_threshold ' +\n 'gamepad_set_button_threshold gamepad_get_axis_deadzone ' +\n 'gamepad_set_axis_deadzone gamepad_button_count gamepad_button_check ' +\n 'gamepad_button_check_pressed gamepad_button_check_released ' +\n 'gamepad_button_value gamepad_axis_count gamepad_axis_value ' +\n 'gamepad_set_vibration gamepad_set_colour gamepad_set_color ' +\n 'os_is_paused window_has_focus code_is_compiled http_get ' +\n 'http_get_file http_post_string http_request json_encode json_decode ' +\n 'zip_unzip load_csv base64_encode base64_decode md5_string_unicode ' +\n 'md5_string_utf8 md5_file os_is_network_connected sha1_string_unicode ' +\n 'sha1_string_utf8 sha1_file os_powersave_enable analytics_event ' +\n 'analytics_event_ext win8_livetile_tile_notification ' +\n 'win8_livetile_tile_clear win8_livetile_badge_notification ' +\n 'win8_livetile_badge_clear win8_livetile_queue_enable ' +\n 'win8_secondarytile_pin win8_secondarytile_badge_notification ' +\n 'win8_secondarytile_delete win8_livetile_notification_begin ' +\n 'win8_livetile_notification_secondary_begin ' +\n 'win8_livetile_notification_expiry win8_livetile_notification_tag ' +\n 'win8_livetile_notification_text_add ' +\n 'win8_livetile_notification_image_add win8_livetile_notification_end ' +\n 'win8_appbar_enable win8_appbar_add_element ' +\n 'win8_appbar_remove_element win8_settingscharm_add_entry ' +\n 'win8_settingscharm_add_html_entry win8_settingscharm_add_xaml_entry ' +\n 'win8_settingscharm_set_xaml_property ' +\n 'win8_settingscharm_get_xaml_property win8_settingscharm_remove_entry ' +\n 'win8_share_image win8_share_screenshot win8_share_file ' +\n 'win8_share_url win8_share_text win8_search_enable ' +\n 'win8_search_disable win8_search_add_suggestions ' +\n 'win8_device_touchscreen_available win8_license_initialize_sandbox ' +\n 'win8_license_trial_version winphone_license_trial_version ' +\n 'winphone_tile_title winphone_tile_count winphone_tile_back_title ' +\n 'winphone_tile_back_content winphone_tile_back_content_wide ' +\n 'winphone_tile_front_image winphone_tile_front_image_small ' +\n 'winphone_tile_front_image_wide winphone_tile_back_image ' +\n 'winphone_tile_back_image_wide winphone_tile_background_colour ' +\n 'winphone_tile_background_color winphone_tile_icon_image ' +\n 'winphone_tile_small_icon_image winphone_tile_wide_content ' +\n 'winphone_tile_cycle_images winphone_tile_small_background_image ' +\n 'physics_world_create physics_world_gravity ' +\n 'physics_world_update_speed physics_world_update_iterations ' +\n 'physics_world_draw_debug physics_pause_enable physics_fixture_create ' +\n 'physics_fixture_set_kinematic physics_fixture_set_density ' +\n 'physics_fixture_set_awake physics_fixture_set_restitution ' +\n 'physics_fixture_set_friction physics_fixture_set_collision_group ' +\n 'physics_fixture_set_sensor physics_fixture_set_linear_damping ' +\n 'physics_fixture_set_angular_damping physics_fixture_set_circle_shape ' +\n 'physics_fixture_set_box_shape physics_fixture_set_edge_shape ' +\n 'physics_fixture_set_polygon_shape physics_fixture_set_chain_shape ' +\n 'physics_fixture_add_point physics_fixture_bind ' +\n 'physics_fixture_bind_ext physics_fixture_delete physics_apply_force ' +\n 'physics_apply_impulse physics_apply_angular_impulse ' +\n 'physics_apply_local_force physics_apply_local_impulse ' +\n 'physics_apply_torque physics_mass_properties physics_draw_debug ' +\n 'physics_test_overlap physics_remove_fixture physics_set_friction ' +\n 'physics_set_density physics_set_restitution physics_get_friction ' +\n 'physics_get_density physics_get_restitution ' +\n 'physics_joint_distance_create physics_joint_rope_create ' +\n 'physics_joint_revolute_create physics_joint_prismatic_create ' +\n 'physics_joint_pulley_create physics_joint_wheel_create ' +\n 'physics_joint_weld_create physics_joint_friction_create ' +\n 'physics_joint_gear_create physics_joint_enable_motor ' +\n 'physics_joint_get_value physics_joint_set_value physics_joint_delete ' +\n 'physics_particle_create physics_particle_delete ' +\n 'physics_particle_delete_region_circle ' +\n 'physics_particle_delete_region_box ' +\n 'physics_particle_delete_region_poly physics_particle_set_flags ' +\n 'physics_particle_set_category_flags physics_particle_draw ' +\n 'physics_particle_draw_ext physics_particle_count ' +\n 'physics_particle_get_data physics_particle_get_data_particle ' +\n 'physics_particle_group_begin physics_particle_group_circle ' +\n 'physics_particle_group_box physics_particle_group_polygon ' +\n 'physics_particle_group_add_point physics_particle_group_end ' +\n 'physics_particle_group_join physics_particle_group_delete ' +\n 'physics_particle_group_count physics_particle_group_get_data ' +\n 'physics_particle_group_get_mass physics_particle_group_get_inertia ' +\n 'physics_particle_group_get_centre_x ' +\n 'physics_particle_group_get_centre_y physics_particle_group_get_vel_x ' +\n 'physics_particle_group_get_vel_y physics_particle_group_get_ang_vel ' +\n 'physics_particle_group_get_x physics_particle_group_get_y ' +\n 'physics_particle_group_get_angle physics_particle_set_group_flags ' +\n 'physics_particle_get_group_flags physics_particle_get_max_count ' +\n 'physics_particle_get_radius physics_particle_get_density ' +\n 'physics_particle_get_damping physics_particle_get_gravity_scale ' +\n 'physics_particle_set_max_count physics_particle_set_radius ' +\n 'physics_particle_set_density physics_particle_set_damping ' +\n 'physics_particle_set_gravity_scale network_create_socket ' +\n 'network_create_socket_ext network_create_server ' +\n 'network_create_server_raw network_connect network_connect_raw ' +\n 'network_send_packet network_send_raw network_send_broadcast ' +\n 'network_send_udp network_send_udp_raw network_set_timeout ' +\n 'network_set_config network_resolve network_destroy buffer_create ' +\n 'buffer_write buffer_read buffer_seek buffer_get_surface ' +\n 'buffer_set_surface buffer_delete buffer_exists buffer_get_type ' +\n 'buffer_get_alignment buffer_poke buffer_peek buffer_save ' +\n 'buffer_save_ext buffer_load buffer_load_ext buffer_load_partial ' +\n 'buffer_copy buffer_fill buffer_get_size buffer_tell buffer_resize ' +\n 'buffer_md5 buffer_sha1 buffer_base64_encode buffer_base64_decode ' +\n 'buffer_base64_decode_ext buffer_sizeof buffer_get_address ' +\n 'buffer_create_from_vertex_buffer ' +\n 'buffer_create_from_vertex_buffer_ext buffer_copy_from_vertex_buffer ' +\n 'buffer_async_group_begin buffer_async_group_option ' +\n 'buffer_async_group_end buffer_load_async buffer_save_async ' +\n 'gml_release_mode gml_pragma steam_activate_overlay ' +\n 'steam_is_overlay_enabled steam_is_overlay_activated ' +\n 'steam_get_persona_name steam_initialised ' +\n 'steam_is_cloud_enabled_for_app steam_is_cloud_enabled_for_account ' +\n 'steam_file_persisted steam_get_quota_total steam_get_quota_free ' +\n 'steam_file_write steam_file_write_file steam_file_read ' +\n 'steam_file_delete steam_file_exists steam_file_size steam_file_share ' +\n 'steam_is_screenshot_requested steam_send_screenshot ' +\n 'steam_is_user_logged_on steam_get_user_steam_id steam_user_owns_dlc ' +\n 'steam_user_installed_dlc steam_set_achievement steam_get_achievement ' +\n 'steam_clear_achievement steam_set_stat_int steam_set_stat_float ' +\n 'steam_set_stat_avg_rate steam_get_stat_int steam_get_stat_float ' +\n 'steam_get_stat_avg_rate steam_reset_all_stats ' +\n 'steam_reset_all_stats_achievements steam_stats_ready ' +\n 'steam_create_leaderboard steam_upload_score steam_upload_score_ext ' +\n 'steam_download_scores_around_user steam_download_scores ' +\n 'steam_download_friends_scores steam_upload_score_buffer ' +\n 'steam_upload_score_buffer_ext steam_current_game_language ' +\n 'steam_available_languages steam_activate_overlay_browser ' +\n 'steam_activate_overlay_user steam_activate_overlay_store ' +\n 'steam_get_user_persona_name steam_get_app_id ' +\n 'steam_get_user_account_id steam_ugc_download steam_ugc_create_item ' +\n 'steam_ugc_start_item_update steam_ugc_set_item_title ' +\n 'steam_ugc_set_item_description steam_ugc_set_item_visibility ' +\n 'steam_ugc_set_item_tags steam_ugc_set_item_content ' +\n 'steam_ugc_set_item_preview steam_ugc_submit_item_update ' +\n 'steam_ugc_get_item_update_progress steam_ugc_subscribe_item ' +\n 'steam_ugc_unsubscribe_item steam_ugc_num_subscribed_items ' +\n 'steam_ugc_get_subscribed_items steam_ugc_get_item_install_info ' +\n 'steam_ugc_get_item_update_info steam_ugc_request_item_details ' +\n 'steam_ugc_create_query_user steam_ugc_create_query_user_ex ' +\n 'steam_ugc_create_query_all steam_ugc_create_query_all_ex ' +\n 'steam_ugc_query_set_cloud_filename_filter ' +\n 'steam_ugc_query_set_match_any_tag steam_ugc_query_set_search_text ' +\n 'steam_ugc_query_set_ranked_by_trend_days ' +\n 'steam_ugc_query_add_required_tag steam_ugc_query_add_excluded_tag ' +\n 'steam_ugc_query_set_return_long_description ' +\n 'steam_ugc_query_set_return_total_only ' +\n 'steam_ugc_query_set_allow_cached_response steam_ugc_send_query ' +\n 'shader_set shader_get_name shader_reset shader_current ' +\n 'shader_is_compiled shader_get_sampler_index shader_get_uniform ' +\n 'shader_set_uniform_i shader_set_uniform_i_array shader_set_uniform_f ' +\n 'shader_set_uniform_f_array shader_set_uniform_matrix ' +\n 'shader_set_uniform_matrix_array shader_enable_corner_id ' +\n 'texture_set_stage texture_get_texel_width texture_get_texel_height ' +\n 'shaders_are_supported vertex_format_begin vertex_format_end ' +\n 'vertex_format_delete vertex_format_add_position ' +\n 'vertex_format_add_position_3d vertex_format_add_colour ' +\n 'vertex_format_add_color vertex_format_add_normal ' +\n 'vertex_format_add_texcoord vertex_format_add_textcoord ' +\n 'vertex_format_add_custom vertex_create_buffer ' +\n 'vertex_create_buffer_ext vertex_delete_buffer vertex_begin ' +\n 'vertex_end vertex_position vertex_position_3d vertex_colour ' +\n 'vertex_color vertex_argb vertex_texcoord vertex_normal vertex_float1 ' +\n 'vertex_float2 vertex_float3 vertex_float4 vertex_ubyte4 ' +\n 'vertex_submit vertex_freeze vertex_get_number vertex_get_buffer_size ' +\n 'vertex_create_buffer_from_buffer ' +\n 'vertex_create_buffer_from_buffer_ext push_local_notification ' +\n 'push_get_first_local_notification push_get_next_local_notification ' +\n 'push_cancel_local_notification skeleton_animation_set ' +\n 'skeleton_animation_get skeleton_animation_mix ' +\n 'skeleton_animation_set_ext skeleton_animation_get_ext ' +\n 'skeleton_animation_get_duration skeleton_animation_get_frames ' +\n 'skeleton_animation_clear skeleton_skin_set skeleton_skin_get ' +\n 'skeleton_attachment_set skeleton_attachment_get ' +\n 'skeleton_attachment_create skeleton_collision_draw_set ' +\n 'skeleton_bone_data_get skeleton_bone_data_set ' +\n 'skeleton_bone_state_get skeleton_bone_state_set skeleton_get_minmax ' +\n 'skeleton_get_num_bounds skeleton_get_bounds ' +\n 'skeleton_animation_get_frame skeleton_animation_set_frame ' +\n 'draw_skeleton draw_skeleton_time draw_skeleton_instance ' +\n 'draw_skeleton_collision skeleton_animation_list skeleton_skin_list ' +\n 'skeleton_slot_data layer_get_id layer_get_id_at_depth ' +\n 'layer_get_depth layer_create layer_destroy layer_destroy_instances ' +\n 'layer_add_instance layer_has_instance layer_set_visible ' +\n 'layer_get_visible layer_exists layer_x layer_y layer_get_x ' +\n 'layer_get_y layer_hspeed layer_vspeed layer_get_hspeed ' +\n 'layer_get_vspeed layer_script_begin layer_script_end layer_shader ' +\n 'layer_get_script_begin layer_get_script_end layer_get_shader ' +\n 'layer_set_target_room layer_get_target_room layer_reset_target_room ' +\n 'layer_get_all layer_get_all_elements layer_get_name layer_depth ' +\n 'layer_get_element_layer layer_get_element_type layer_element_move ' +\n 'layer_force_draw_depth layer_is_draw_depth_forced ' +\n 'layer_get_forced_depth layer_background_get_id ' +\n 'layer_background_exists layer_background_create ' +\n 'layer_background_destroy layer_background_visible ' +\n 'layer_background_change layer_background_sprite ' +\n 'layer_background_htiled layer_background_vtiled ' +\n 'layer_background_stretch layer_background_yscale ' +\n 'layer_background_xscale layer_background_blend ' +\n 'layer_background_alpha layer_background_index layer_background_speed ' +\n 'layer_background_get_visible layer_background_get_sprite ' +\n 'layer_background_get_htiled layer_background_get_vtiled ' +\n 'layer_background_get_stretch layer_background_get_yscale ' +\n 'layer_background_get_xscale layer_background_get_blend ' +\n 'layer_background_get_alpha layer_background_get_index ' +\n 'layer_background_get_speed layer_sprite_get_id layer_sprite_exists ' +\n 'layer_sprite_create layer_sprite_destroy layer_sprite_change ' +\n 'layer_sprite_index layer_sprite_speed layer_sprite_xscale ' +\n 'layer_sprite_yscale layer_sprite_angle layer_sprite_blend ' +\n 'layer_sprite_alpha layer_sprite_x layer_sprite_y ' +\n 'layer_sprite_get_sprite layer_sprite_get_index ' +\n 'layer_sprite_get_speed layer_sprite_get_xscale ' +\n 'layer_sprite_get_yscale layer_sprite_get_angle ' +\n 'layer_sprite_get_blend layer_sprite_get_alpha layer_sprite_get_x ' +\n 'layer_sprite_get_y layer_tilemap_get_id layer_tilemap_exists ' +\n 'layer_tilemap_create layer_tilemap_destroy tilemap_tileset tilemap_x ' +\n 'tilemap_y tilemap_set tilemap_set_at_pixel tilemap_get_tileset ' +\n 'tilemap_get_tile_width tilemap_get_tile_height tilemap_get_width ' +\n 'tilemap_get_height tilemap_get_x tilemap_get_y tilemap_get ' +\n 'tilemap_get_at_pixel tilemap_get_cell_x_at_pixel ' +\n 'tilemap_get_cell_y_at_pixel tilemap_clear draw_tilemap draw_tile ' +\n 'tilemap_set_global_mask tilemap_get_global_mask tilemap_set_mask ' +\n 'tilemap_get_mask tilemap_get_frame tile_set_empty tile_set_index ' +\n 'tile_set_flip tile_set_mirror tile_set_rotate tile_get_empty ' +\n 'tile_get_index tile_get_flip tile_get_mirror tile_get_rotate ' +\n 'layer_tile_exists layer_tile_create layer_tile_destroy ' +\n 'layer_tile_change layer_tile_xscale layer_tile_yscale ' +\n 'layer_tile_blend layer_tile_alpha layer_tile_x layer_tile_y ' +\n 'layer_tile_region layer_tile_visible layer_tile_get_sprite ' +\n 'layer_tile_get_xscale layer_tile_get_yscale layer_tile_get_blend ' +\n 'layer_tile_get_alpha layer_tile_get_x layer_tile_get_y ' +\n 'layer_tile_get_region layer_tile_get_visible ' +\n 'layer_instance_get_instance instance_activate_layer ' +\n 'instance_deactivate_layer camera_create camera_create_view ' +\n 'camera_destroy camera_apply camera_get_active camera_get_default ' +\n 'camera_set_default camera_set_view_mat camera_set_proj_mat ' +\n 'camera_set_update_script camera_set_begin_script ' +\n 'camera_set_end_script camera_set_view_pos camera_set_view_size ' +\n 'camera_set_view_speed camera_set_view_border camera_set_view_angle ' +\n 'camera_set_view_target camera_get_view_mat camera_get_proj_mat ' +\n 'camera_get_update_script camera_get_begin_script ' +\n 'camera_get_end_script camera_get_view_x camera_get_view_y ' +\n 'camera_get_view_width camera_get_view_height camera_get_view_speed_x ' +\n 'camera_get_view_speed_y camera_get_view_border_x ' +\n 'camera_get_view_border_y camera_get_view_angle ' +\n 'camera_get_view_target view_get_camera view_get_visible ' +\n 'view_get_xport view_get_yport view_get_wport view_get_hport ' +\n 'view_get_surface_id view_set_camera view_set_visible view_set_xport ' +\n 'view_set_yport view_set_wport view_set_hport view_set_surface_id ' +\n 'gesture_drag_time gesture_drag_distance gesture_flick_speed ' +\n 'gesture_double_tap_time gesture_double_tap_distance ' +\n 'gesture_pinch_distance gesture_pinch_angle_towards ' +\n 'gesture_pinch_angle_away gesture_rotate_time gesture_rotate_angle ' +\n 'gesture_tap_count gesture_get_drag_time gesture_get_drag_distance ' +\n 'gesture_get_flick_speed gesture_get_double_tap_time ' +\n 'gesture_get_double_tap_distance gesture_get_pinch_distance ' +\n 'gesture_get_pinch_angle_towards gesture_get_pinch_angle_away ' +\n 'gesture_get_rotate_time gesture_get_rotate_angle ' +\n 'gesture_get_tap_count keyboard_virtual_show keyboard_virtual_hide ' +\n 'keyboard_virtual_status keyboard_virtual_height',\n literal: 'self other all noone global local undefined pointer_invalid ' +\n 'pointer_null path_action_stop path_action_restart ' +\n 'path_action_continue path_action_reverse true false pi GM_build_date ' +\n 'GM_version GM_runtime_version timezone_local timezone_utc ' +\n 'gamespeed_fps gamespeed_microseconds ev_create ev_destroy ev_step ' +\n 'ev_alarm ev_keyboard ev_mouse ev_collision ev_other ev_draw ' +\n 'ev_draw_begin ev_draw_end ev_draw_pre ev_draw_post ev_keypress ' +\n 'ev_keyrelease ev_trigger ev_left_button ev_right_button ' +\n 'ev_middle_button ev_no_button ev_left_press ev_right_press ' +\n 'ev_middle_press ev_left_release ev_right_release ev_middle_release ' +\n 'ev_mouse_enter ev_mouse_leave ev_mouse_wheel_up ev_mouse_wheel_down ' +\n 'ev_global_left_button ev_global_right_button ev_global_middle_button ' +\n 'ev_global_left_press ev_global_right_press ev_global_middle_press ' +\n 'ev_global_left_release ev_global_right_release ' +\n 'ev_global_middle_release ev_joystick1_left ev_joystick1_right ' +\n 'ev_joystick1_up ev_joystick1_down ev_joystick1_button1 ' +\n 'ev_joystick1_button2 ev_joystick1_button3 ev_joystick1_button4 ' +\n 'ev_joystick1_button5 ev_joystick1_button6 ev_joystick1_button7 ' +\n 'ev_joystick1_button8 ev_joystick2_left ev_joystick2_right ' +\n 'ev_joystick2_up ev_joystick2_down ev_joystick2_button1 ' +\n 'ev_joystick2_button2 ev_joystick2_button3 ev_joystick2_button4 ' +\n 'ev_joystick2_button5 ev_joystick2_button6 ev_joystick2_button7 ' +\n 'ev_joystick2_button8 ev_outside ev_boundary ev_game_start ' +\n 'ev_game_end ev_room_start ev_room_end ev_no_more_lives ' +\n 'ev_animation_end ev_end_of_path ev_no_more_health ev_close_button ' +\n 'ev_user0 ev_user1 ev_user2 ev_user3 ev_user4 ev_user5 ev_user6 ' +\n 'ev_user7 ev_user8 ev_user9 ev_user10 ev_user11 ev_user12 ev_user13 ' +\n 'ev_user14 ev_user15 ev_step_normal ev_step_begin ev_step_end ev_gui ' +\n 'ev_gui_begin ev_gui_end ev_cleanup ev_gesture ev_gesture_tap ' +\n 'ev_gesture_double_tap ev_gesture_drag_start ev_gesture_dragging ' +\n 'ev_gesture_drag_end ev_gesture_flick ev_gesture_pinch_start ' +\n 'ev_gesture_pinch_in ev_gesture_pinch_out ev_gesture_pinch_end ' +\n 'ev_gesture_rotate_start ev_gesture_rotating ev_gesture_rotate_end ' +\n 'ev_global_gesture_tap ev_global_gesture_double_tap ' +\n 'ev_global_gesture_drag_start ev_global_gesture_dragging ' +\n 'ev_global_gesture_drag_end ev_global_gesture_flick ' +\n 'ev_global_gesture_pinch_start ev_global_gesture_pinch_in ' +\n 'ev_global_gesture_pinch_out ev_global_gesture_pinch_end ' +\n 'ev_global_gesture_rotate_start ev_global_gesture_rotating ' +\n 'ev_global_gesture_rotate_end vk_nokey vk_anykey vk_enter vk_return ' +\n 'vk_shift vk_control vk_alt vk_escape vk_space vk_backspace vk_tab ' +\n 'vk_pause vk_printscreen vk_left vk_right vk_up vk_down vk_home ' +\n 'vk_end vk_delete vk_insert vk_pageup vk_pagedown vk_f1 vk_f2 vk_f3 ' +\n 'vk_f4 vk_f5 vk_f6 vk_f7 vk_f8 vk_f9 vk_f10 vk_f11 vk_f12 vk_numpad0 ' +\n 'vk_numpad1 vk_numpad2 vk_numpad3 vk_numpad4 vk_numpad5 vk_numpad6 ' +\n 'vk_numpad7 vk_numpad8 vk_numpad9 vk_divide vk_multiply vk_subtract ' +\n 'vk_add vk_decimal vk_lshift vk_lcontrol vk_lalt vk_rshift ' +\n 'vk_rcontrol vk_ralt mb_any mb_none mb_left mb_right mb_middle ' +\n 'c_aqua c_black c_blue c_dkgray c_fuchsia c_gray c_green c_lime ' +\n 'c_ltgray c_maroon c_navy c_olive c_purple c_red c_silver c_teal ' +\n 'c_white c_yellow c_orange fa_left fa_center fa_right fa_top ' +\n 'fa_middle fa_bottom pr_pointlist pr_linelist pr_linestrip ' +\n 'pr_trianglelist pr_trianglestrip pr_trianglefan bm_complex bm_normal ' +\n 'bm_add bm_max bm_subtract bm_zero bm_one bm_src_colour ' +\n 'bm_inv_src_colour bm_src_color bm_inv_src_color bm_src_alpha ' +\n 'bm_inv_src_alpha bm_dest_alpha bm_inv_dest_alpha bm_dest_colour ' +\n 'bm_inv_dest_colour bm_dest_color bm_inv_dest_color bm_src_alpha_sat ' +\n 'tf_point tf_linear tf_anisotropic mip_off mip_on mip_markedonly ' +\n 'audio_falloff_none audio_falloff_inverse_distance ' +\n 'audio_falloff_inverse_distance_clamped audio_falloff_linear_distance ' +\n 'audio_falloff_linear_distance_clamped ' +\n 'audio_falloff_exponent_distance ' +\n 'audio_falloff_exponent_distance_clamped audio_old_system ' +\n 'audio_new_system audio_mono audio_stereo audio_3d cr_default cr_none ' +\n 'cr_arrow cr_cross cr_beam cr_size_nesw cr_size_ns cr_size_nwse ' +\n 'cr_size_we cr_uparrow cr_hourglass cr_drag cr_appstart cr_handpoint ' +\n 'cr_size_all spritespeed_framespersecond ' +\n 'spritespeed_framespergameframe asset_object asset_unknown ' +\n 'asset_sprite asset_sound asset_room asset_path asset_script ' +\n 'asset_font asset_timeline asset_tiles asset_shader fa_readonly ' +\n 'fa_hidden fa_sysfile fa_volumeid fa_directory fa_archive ' +\n 'ds_type_map ds_type_list ds_type_stack ds_type_queue ds_type_grid ' +\n 'ds_type_priority ef_explosion ef_ring ef_ellipse ef_firework ' +\n 'ef_smoke ef_smokeup ef_star ef_spark ef_flare ef_cloud ef_rain ' +\n 'ef_snow pt_shape_pixel pt_shape_disk pt_shape_square pt_shape_line ' +\n 'pt_shape_star pt_shape_circle pt_shape_ring pt_shape_sphere ' +\n 'pt_shape_flare pt_shape_spark pt_shape_explosion pt_shape_cloud ' +\n 'pt_shape_smoke pt_shape_snow ps_distr_linear ps_distr_gaussian ' +\n 'ps_distr_invgaussian ps_shape_rectangle ps_shape_ellipse ' +\n 'ps_shape_diamond ps_shape_line ty_real ty_string dll_cdecl ' +\n 'dll_stdcall matrix_view matrix_projection matrix_world os_win32 ' +\n 'os_windows os_macosx os_ios os_android os_symbian os_linux ' +\n 'os_unknown os_winphone os_tizen os_win8native ' +\n 'os_wiiu os_3ds os_psvita os_bb10 os_ps4 os_xboxone ' +\n 'os_ps3 os_xbox360 os_uwp os_tvos os_switch ' +\n 'browser_not_a_browser browser_unknown browser_ie browser_firefox ' +\n 'browser_chrome browser_safari browser_safari_mobile browser_opera ' +\n 'browser_tizen browser_edge browser_windows_store browser_ie_mobile ' +\n 'device_ios_unknown device_ios_iphone device_ios_iphone_retina ' +\n 'device_ios_ipad device_ios_ipad_retina device_ios_iphone5 ' +\n 'device_ios_iphone6 device_ios_iphone6plus device_emulator ' +\n 'device_tablet display_landscape display_landscape_flipped ' +\n 'display_portrait display_portrait_flipped tm_sleep tm_countvsyncs ' +\n 'of_challenge_win of_challen ge_lose of_challenge_tie ' +\n 'leaderboard_type_number leaderboard_type_time_mins_secs ' +\n 'cmpfunc_never cmpfunc_less cmpfunc_equal cmpfunc_lessequal ' +\n 'cmpfunc_greater cmpfunc_notequal cmpfunc_greaterequal cmpfunc_always ' +\n 'cull_noculling cull_clockwise cull_counterclockwise lighttype_dir ' +\n 'lighttype_point iap_ev_storeload iap_ev_product iap_ev_purchase ' +\n 'iap_ev_consume iap_ev_restore iap_storeload_ok iap_storeload_failed ' +\n 'iap_status_uninitialised iap_status_unavailable iap_status_loading ' +\n 'iap_status_available iap_status_processing iap_status_restoring ' +\n 'iap_failed iap_unavailable iap_available iap_purchased iap_canceled ' +\n 'iap_refunded fb_login_default fb_login_fallback_to_webview ' +\n 'fb_login_no_fallback_to_webview fb_login_forcing_webview ' +\n 'fb_login_use_system_account fb_login_forcing_safari ' +\n 'phy_joint_anchor_1_x phy_joint_anchor_1_y phy_joint_anchor_2_x ' +\n 'phy_joint_anchor_2_y phy_joint_reaction_force_x ' +\n 'phy_joint_reaction_force_y phy_joint_reaction_torque ' +\n 'phy_joint_motor_speed phy_joint_angle phy_joint_motor_torque ' +\n 'phy_joint_max_motor_torque phy_joint_translation phy_joint_speed ' +\n 'phy_joint_motor_force phy_joint_max_motor_force phy_joint_length_1 ' +\n 'phy_joint_length_2 phy_joint_damping_ratio phy_joint_frequency ' +\n 'phy_joint_lower_angle_limit phy_joint_upper_angle_limit ' +\n 'phy_joint_angle_limits phy_joint_max_length phy_joint_max_torque ' +\n 'phy_joint_max_force phy_debug_render_aabb ' +\n 'phy_debug_render_collision_pairs phy_debug_render_coms ' +\n 'phy_debug_render_core_shapes phy_debug_render_joints ' +\n 'phy_debug_render_obb phy_debug_render_shapes ' +\n 'phy_particle_flag_water phy_particle_flag_zombie ' +\n 'phy_particle_flag_wall phy_particle_flag_spring ' +\n 'phy_particle_flag_elastic phy_particle_flag_viscous ' +\n 'phy_particle_flag_powder phy_particle_flag_tensile ' +\n 'phy_particle_flag_colourmixing phy_particle_flag_colormixing ' +\n 'phy_particle_group_flag_solid phy_particle_group_flag_rigid ' +\n 'phy_particle_data_flag_typeflags phy_particle_data_flag_position ' +\n 'phy_particle_data_flag_velocity phy_particle_data_flag_colour ' +\n 'phy_particle_data_flag_color phy_particle_data_flag_category ' +\n 'achievement_our_info achievement_friends_info ' +\n 'achievement_leaderboard_info achievement_achievement_info ' +\n 'achievement_filter_all_players achievement_filter_friends_only ' +\n 'achievement_filter_favorites_only ' +\n 'achievement_type_achievement_challenge ' +\n 'achievement_type_score_challenge achievement_pic_loaded ' +\n 'achievement_show_ui achievement_show_profile ' +\n 'achievement_show_leaderboard achievement_show_achievement ' +\n 'achievement_show_bank achievement_show_friend_picker ' +\n 'achievement_show_purchase_prompt network_socket_tcp ' +\n 'network_socket_udp network_socket_bluetooth network_type_connect ' +\n 'network_type_disconnect network_type_data ' +\n 'network_type_non_blocking_connect network_config_connect_timeout ' +\n 'network_config_use_non_blocking_socket ' +\n 'network_config_enable_reliable_udp ' +\n 'network_config_disable_reliable_udp buffer_fixed buffer_grow ' +\n 'buffer_wrap buffer_fast buffer_vbuffer buffer_network buffer_u8 ' +\n 'buffer_s8 buffer_u16 buffer_s16 buffer_u32 buffer_s32 buffer_u64 ' +\n 'buffer_f16 buffer_f32 buffer_f64 buffer_bool buffer_text ' +\n 'buffer_string buffer_surface_copy buffer_seek_start ' +\n 'buffer_seek_relative buffer_seek_end ' +\n 'buffer_generalerror buffer_outofspace buffer_outofbounds ' +\n 'buffer_invalidtype text_type button_type input_type ANSI_CHARSET ' +\n 'DEFAULT_CHARSET EASTEUROPE_CHARSET RUSSIAN_CHARSET SYMBOL_CHARSET ' +\n 'SHIFTJIS_CHARSET HANGEUL_CHARSET GB2312_CHARSET CHINESEBIG5_CHARSET ' +\n 'JOHAB_CHARSET HEBREW_CHARSET ARABIC_CHARSET GREEK_CHARSET ' +\n 'TURKISH_CHARSET VIETNAMESE_CHARSET THAI_CHARSET MAC_CHARSET ' +\n 'BALTIC_CHARSET OEM_CHARSET gp_face1 gp_face2 gp_face3 gp_face4 ' +\n 'gp_shoulderl gp_shoulderr gp_shoulderlb gp_shoulderrb gp_select ' +\n 'gp_start gp_stickl gp_stickr gp_padu gp_padd gp_padl gp_padr ' +\n 'gp_axislh gp_axislv gp_axisrh gp_axisrv ov_friends ov_community ' +\n 'ov_players ov_settings ov_gamegroup ov_achievements lb_sort_none ' +\n 'lb_sort_ascending lb_sort_descending lb_disp_none lb_disp_numeric ' +\n 'lb_disp_time_sec lb_disp_time_ms ugc_result_success ' +\n 'ugc_filetype_community ugc_filetype_microtrans ugc_visibility_public ' +\n 'ugc_visibility_friends_only ugc_visibility_private ' +\n 'ugc_query_RankedByVote ugc_query_RankedByPublicationDate ' +\n 'ugc_query_AcceptedForGameRankedByAcceptanceDate ' +\n 'ugc_query_RankedByTrend ' +\n 'ugc_query_FavoritedByFriendsRankedByPublicationDate ' +\n 'ugc_query_CreatedByFriendsRankedByPublicationDate ' +\n 'ugc_query_RankedByNumTimesReported ' +\n 'ugc_query_CreatedByFollowedUsersRankedByPublicationDate ' +\n 'ugc_query_NotYetRated ugc_query_RankedByTotalVotesAsc ' +\n 'ugc_query_RankedByVotesUp ugc_query_RankedByTextSearch ' +\n 'ugc_sortorder_CreationOrderDesc ugc_sortorder_CreationOrderAsc ' +\n 'ugc_sortorder_TitleAsc ugc_sortorder_LastUpdatedDesc ' +\n 'ugc_sortorder_SubscriptionDateDesc ugc_sortorder_VoteScoreDesc ' +\n 'ugc_sortorder_ForModeration ugc_list_Published ugc_list_VotedOn ' +\n 'ugc_list_VotedUp ugc_list_VotedDown ugc_list_WillVoteLater ' +\n 'ugc_list_Favorited ugc_list_Subscribed ugc_list_UsedOrPlayed ' +\n 'ugc_list_Followed ugc_match_Items ugc_match_Items_Mtx ' +\n 'ugc_match_Items_ReadyToUse ugc_match_Collections ugc_match_Artwork ' +\n 'ugc_match_Videos ugc_match_Screenshots ugc_match_AllGuides ' +\n 'ugc_match_WebGuides ugc_match_IntegratedGuides ' +\n 'ugc_match_UsableInGame ugc_match_ControllerBindings ' +\n 'vertex_usage_position vertex_usage_colour vertex_usage_color ' +\n 'vertex_usage_normal vertex_usage_texcoord vertex_usage_textcoord ' +\n 'vertex_usage_blendweight vertex_usage_blendindices ' +\n 'vertex_usage_psize vertex_usage_tangent vertex_usage_binormal ' +\n 'vertex_usage_fog vertex_usage_depth vertex_usage_sample ' +\n 'vertex_type_float1 vertex_type_float2 vertex_type_float3 ' +\n 'vertex_type_float4 vertex_type_colour vertex_type_color ' +\n 'vertex_type_ubyte4 layerelementtype_undefined ' +\n 'layerelementtype_background layerelementtype_instance ' +\n 'layerelementtype_oldtilemap layerelementtype_sprite ' +\n 'layerelementtype_tilemap layerelementtype_particlesystem ' +\n 'layerelementtype_tile tile_rotate tile_flip tile_mirror ' +\n 'tile_index_mask kbv_type_default kbv_type_ascii kbv_type_url ' +\n 'kbv_type_email kbv_type_numbers kbv_type_phone kbv_type_phone_name ' +\n 'kbv_returnkey_default kbv_returnkey_go kbv_returnkey_google ' +\n 'kbv_returnkey_join kbv_returnkey_next kbv_returnkey_route ' +\n 'kbv_returnkey_search kbv_returnkey_send kbv_returnkey_yahoo ' +\n 'kbv_returnkey_done kbv_returnkey_continue kbv_returnkey_emergency ' +\n 'kbv_autocapitalize_none kbv_autocapitalize_words ' +\n 'kbv_autocapitalize_sentences kbv_autocapitalize_characters',\n symbol: 'argument_relative argument argument0 argument1 argument2 ' +\n 'argument3 argument4 argument5 argument6 argument7 argument8 ' +\n 'argument9 argument10 argument11 argument12 argument13 argument14 ' +\n 'argument15 argument_count x|0 y|0 xprevious yprevious xstart ystart ' +\n 'hspeed vspeed direction speed friction gravity gravity_direction ' +\n 'path_index path_position path_positionprevious path_speed ' +\n 'path_scale path_orientation path_endaction object_index id solid ' +\n 'persistent mask_index instance_count instance_id room_speed fps ' +\n 'fps_real current_time current_year current_month current_day ' +\n 'current_weekday current_hour current_minute current_second alarm ' +\n 'timeline_index timeline_position timeline_speed timeline_running ' +\n 'timeline_loop room room_first room_last room_width room_height ' +\n 'room_caption room_persistent score lives health show_score ' +\n 'show_lives show_health caption_score caption_lives caption_health ' +\n 'event_type event_number event_object event_action ' +\n 'application_surface gamemaker_pro gamemaker_registered ' +\n 'gamemaker_version error_occurred error_last debug_mode ' +\n 'keyboard_key keyboard_lastkey keyboard_lastchar keyboard_string ' +\n 'mouse_x mouse_y mouse_button mouse_lastbutton cursor_sprite ' +\n 'visible sprite_index sprite_width sprite_height sprite_xoffset ' +\n 'sprite_yoffset image_number image_index image_speed depth ' +\n 'image_xscale image_yscale image_angle image_alpha image_blend ' +\n 'bbox_left bbox_right bbox_top bbox_bottom layer background_colour ' +\n 'background_showcolour background_color background_showcolor ' +\n 'view_enabled view_current view_visible view_xview view_yview ' +\n 'view_wview view_hview view_xport view_yport view_wport view_hport ' +\n 'view_angle view_hborder view_vborder view_hspeed view_vspeed ' +\n 'view_object view_surface_id view_camera game_id game_display_name ' +\n 'game_project_name game_save_id working_directory temp_directory ' +\n 'program_directory browser_width browser_height os_type os_device ' +\n 'os_browser os_version display_aa async_load delta_time ' +\n 'webgl_enabled event_data iap_data phy_rotation phy_position_x ' +\n 'phy_position_y phy_angular_velocity phy_linear_velocity_x ' +\n 'phy_linear_velocity_y phy_speed_x phy_speed_y phy_speed ' +\n 'phy_angular_damping phy_linear_damping phy_bullet ' +\n 'phy_fixed_rotation phy_active phy_mass phy_inertia phy_com_x ' +\n 'phy_com_y phy_dynamic phy_kinematic phy_sleeping ' +\n 'phy_collision_points phy_collision_x phy_collision_y ' +\n 'phy_col_normal_x phy_col_normal_y phy_position_xprevious ' +\n 'phy_position_yprevious'\n };\n\n return {\n name: 'GML',\n case_insensitive: false, // language is case-insensitive\n keywords: GML_KEYWORDS,\n\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE\n ]\n };\n}\n\nmodule.exports = gml;\n","/*\nLanguage: Go\nAuthor: Stephan Kountso aka StepLg <steplg@gmail.com>\nContributors: Evgeny Stepanischev <imbolk@gmail.com>\nDescription: Google go language (golang). For info about language\nWebsite: http://golang.org/\nCategory: common, system\n*/\n\nfunction go(hljs) {\n const GO_KEYWORDS = {\n keyword:\n 'break default func interface select case map struct chan else goto package switch ' +\n 'const fallthrough if range type continue for import return var go defer ' +\n 'bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 ' +\n 'uint16 uint32 uint64 int uint uintptr rune',\n literal:\n 'true false iota nil',\n built_in:\n 'append cap close complex copy imag len make new panic print println real recover delete'\n };\n return {\n name: 'Go',\n aliases: ['golang'],\n keywords: GO_KEYWORDS,\n illegal: '</',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'string',\n variants: [\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n {\n begin: '`',\n end: '`'\n }\n ]\n },\n {\n className: 'number',\n variants: [\n {\n begin: hljs.C_NUMBER_RE + '[i]',\n relevance: 1\n },\n hljs.C_NUMBER_MODE\n ]\n },\n {\n begin: /:=/ // relevance booster\n },\n {\n className: 'function',\n beginKeywords: 'func',\n end: '\\\\s*(\\\\{|$)',\n excludeEnd: true,\n contains: [\n hljs.TITLE_MODE,\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n keywords: GO_KEYWORDS,\n illegal: /[\"']/\n }\n ]\n }\n ]\n };\n}\n\nmodule.exports = go;\n","/*\nLanguage: Golo\nAuthor: Philippe Charriere <ph.charriere@gmail.com>\nDescription: a lightweight dynamic language for the JVM\nWebsite: http://golo-lang.org/\n*/\n\nfunction golo(hljs) {\n return {\n name: 'Golo',\n keywords: {\n keyword:\n 'println readln print import module function local return let var ' +\n 'while for foreach times in case when match with break continue ' +\n 'augment augmentation each find filter reduce ' +\n 'if then else otherwise try catch finally raise throw orIfNull ' +\n 'DynamicObject|10 DynamicVariable struct Observable map set vector list array',\n literal:\n 'true false null'\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'meta',\n begin: '@[A-Za-z]+'\n }\n ]\n };\n}\n\nmodule.exports = golo;\n","/*\nLanguage: Gradle\nDescription: Gradle is an open-source build automation tool focused on flexibility and performance.\nWebsite: https://gradle.org\nAuthor: Damian Mee <mee.damian@gmail.com>\n*/\n\nfunction gradle(hljs) {\n return {\n name: 'Gradle',\n case_insensitive: true,\n keywords: {\n keyword:\n 'task project allprojects subprojects artifacts buildscript configurations ' +\n 'dependencies repositories sourceSets description delete from into include ' +\n 'exclude source classpath destinationDir includes options sourceCompatibility ' +\n 'targetCompatibility group flatDir doLast doFirst flatten todir fromdir ant ' +\n 'def abstract break case catch continue default do else extends final finally ' +\n 'for if implements instanceof native new private protected public return static ' +\n 'switch synchronized throw throws transient try volatile while strictfp package ' +\n 'import false null super this true antlrtask checkstyle codenarc copy boolean ' +\n 'byte char class double float int interface long short void compile runTime ' +\n 'file fileTree abs any append asList asWritable call collect compareTo count ' +\n 'div dump each eachByte eachFile eachLine every find findAll flatten getAt ' +\n 'getErr getIn getOut getText grep immutable inject inspect intersect invokeMethods ' +\n 'isCase join leftShift minus multiply newInputStream newOutputStream newPrintWriter ' +\n 'newReader newWriter next plus pop power previous print println push putAt read ' +\n 'readBytes readLines reverse reverseEach round size sort splitEachLine step subMap ' +\n 'times toInteger toList tokenize upto waitForOrKill withPrintWriter withReader ' +\n 'withStream withWriter withWriterAppend write writeLine'\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE,\n hljs.REGEXP_MODE\n\n ]\n };\n}\n\nmodule.exports = gradle;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n return concat('(?=', re, ')');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/*\n Language: Groovy\n Author: Guillaume Laforge <glaforge@gmail.com>\n Description: Groovy programming language implementation inspired from Vsevolod's Java mode\n Website: https://groovy-lang.org\n */\n\nfunction variants(variants, obj = {}) {\n obj.variants = variants;\n return obj;\n}\n\nfunction groovy(hljs) {\n const IDENT_RE = '[A-Za-z0-9_$]+';\n const COMMENT = variants([\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.COMMENT(\n '/\\\\*\\\\*',\n '\\\\*/',\n {\n relevance: 0,\n contains: [\n {\n // eat up @'s in emails to prevent them to be recognized as doctags\n begin: /\\w+@/,\n relevance: 0\n },\n {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n }\n ]\n }\n )\n ]);\n const REGEXP = {\n className: 'regexp',\n begin: /~?\\/[^\\/\\n]+\\//,\n contains: [ hljs.BACKSLASH_ESCAPE ]\n };\n const NUMBER = variants([\n hljs.BINARY_NUMBER_MODE,\n hljs.C_NUMBER_MODE\n ]);\n const STRING = variants([\n {\n begin: /\"\"\"/,\n end: /\"\"\"/\n },\n {\n begin: /'''/,\n end: /'''/\n },\n {\n begin: \"\\\\$/\",\n end: \"/\\\\$\",\n relevance: 10\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ],\n {\n className: \"string\"\n }\n );\n\n return {\n name: 'Groovy',\n keywords: {\n built_in: 'this super',\n literal: 'true false null',\n keyword:\n 'byte short char int long boolean float double void ' +\n // groovy specific keywords\n 'def as in assert trait ' +\n // common keywords with Java\n 'abstract static volatile transient public private protected synchronized final ' +\n 'class interface enum if else for while switch case break default continue ' +\n 'throw throws try catch finally implements extends new import package return instanceof'\n },\n contains: [\n hljs.SHEBANG({\n binary: \"groovy\",\n relevance: 10\n }),\n COMMENT,\n STRING,\n REGEXP,\n NUMBER,\n {\n className: 'class',\n beginKeywords: 'class interface trait enum',\n end: /\\{/,\n illegal: ':',\n contains: [\n {\n beginKeywords: 'extends implements'\n },\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n className: 'meta',\n begin: '@[A-Za-z]+',\n relevance: 0\n },\n {\n // highlight map keys and named parameters as attrs\n className: 'attr',\n begin: IDENT_RE + '[ \\t]*:',\n relevance: 0\n },\n {\n // catch middle element of the ternary operator\n // to avoid highlight it as a label, named parameter, or map key\n begin: /\\?/,\n end: /:/,\n relevance: 0,\n contains: [\n COMMENT,\n STRING,\n REGEXP,\n NUMBER,\n 'self'\n ]\n },\n {\n // highlight labeled statements\n className: 'symbol',\n begin: '^[ \\t]*' + lookahead(IDENT_RE + ':'),\n excludeBegin: true,\n end: IDENT_RE + ':',\n relevance: 0\n }\n ],\n illegal: /#|<\\//\n };\n}\n\nmodule.exports = groovy;\n","/*\nLanguage: HAML\nRequires: ruby.js\nAuthor: Dan Allen <dan.j.allen@gmail.com>\nWebsite: http://haml.info\nCategory: template\n*/\n\n// TODO support filter tags like :javascript, support inline HTML\nfunction haml(hljs) {\n return {\n name: 'HAML',\n case_insensitive: true,\n contains: [\n {\n className: 'meta',\n begin: '^!!!( (5|1\\\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\\\b.*))?$',\n relevance: 10\n },\n // FIXME these comments should be allowed to span indented lines\n hljs.COMMENT(\n '^\\\\s*(!=#|=#|-#|/).*$',\n false,\n {\n relevance: 0\n }\n ),\n {\n begin: '^\\\\s*(-|=|!=)(?!#)',\n starts: {\n end: '\\\\n',\n subLanguage: 'ruby'\n }\n },\n {\n className: 'tag',\n begin: '^\\\\s*%',\n contains: [\n {\n className: 'selector-tag',\n begin: '\\\\w+'\n },\n {\n className: 'selector-id',\n begin: '#[\\\\w-]+'\n },\n {\n className: 'selector-class',\n begin: '\\\\.[\\\\w-]+'\n },\n {\n begin: /\\{\\s*/,\n end: /\\s*\\}/,\n contains: [\n {\n begin: ':\\\\w+\\\\s*=>',\n end: ',\\\\s+',\n returnBegin: true,\n endsWithParent: true,\n contains: [\n {\n className: 'attr',\n begin: ':\\\\w+'\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n begin: '\\\\w+',\n relevance: 0\n }\n ]\n }\n ]\n },\n {\n begin: '\\\\(\\\\s*',\n end: '\\\\s*\\\\)',\n excludeEnd: true,\n contains: [\n {\n begin: '\\\\w+\\\\s*=',\n end: '\\\\s+',\n returnBegin: true,\n endsWithParent: true,\n contains: [\n {\n className: 'attr',\n begin: '\\\\w+',\n relevance: 0\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n begin: '\\\\w+',\n relevance: 0\n }\n ]\n }\n ]\n }\n ]\n },\n {\n begin: '^\\\\s*[=~]\\\\s*'\n },\n {\n begin: /#\\{/,\n starts: {\n end: /\\}/,\n subLanguage: 'ruby'\n }\n }\n ]\n };\n}\n\nmodule.exports = haml;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction anyNumberOfTimes(re) {\n return concat('(', re, ')*');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction optional(re) {\n return concat('(', re, ')?');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] } args\n * @returns {string}\n */\nfunction either(...args) {\n const joined = '(' + args.map((x) => source(x)).join(\"|\") + \")\";\n return joined;\n}\n\n/*\nLanguage: Handlebars\nRequires: xml.js\nAuthor: Robin Ward <robin.ward@gmail.com>\nDescription: Matcher for Handlebars as well as EmberJS additions.\nWebsite: https://handlebarsjs.com\nCategory: template\n*/\n\nfunction handlebars(hljs) {\n const BUILT_INS = {\n 'builtin-name': [\n 'action',\n 'bindattr',\n 'collection',\n 'component',\n 'concat',\n 'debugger',\n 'each',\n 'each-in',\n 'get',\n 'hash',\n 'if',\n 'in',\n 'input',\n 'link-to',\n 'loc',\n 'log',\n 'lookup',\n 'mut',\n 'outlet',\n 'partial',\n 'query-params',\n 'render',\n 'template',\n 'textarea',\n 'unbound',\n 'unless',\n 'view',\n 'with',\n 'yield'\n ]\n };\n\n const LITERALS = {\n literal: [\n 'true',\n 'false',\n 'undefined',\n 'null'\n ]\n };\n\n // as defined in https://handlebarsjs.com/guide/expressions.html#literal-segments\n // this regex matches literal segments like ' abc ' or [ abc ] as well as helpers and paths\n // like a/b, ./abc/cde, and abc.bcd\n\n const DOUBLE_QUOTED_ID_REGEX = /\"\"|\"[^\"]+\"/;\n const SINGLE_QUOTED_ID_REGEX = /''|'[^']+'/;\n const BRACKET_QUOTED_ID_REGEX = /\\[\\]|\\[[^\\]]+\\]/;\n const PLAIN_ID_REGEX = /[^\\s!\"#%&'()*+,.\\/;<=>@\\[\\\\\\]^`{|}~]+/;\n const PATH_DELIMITER_REGEX = /(\\.|\\/)/;\n const ANY_ID = either(\n DOUBLE_QUOTED_ID_REGEX,\n SINGLE_QUOTED_ID_REGEX,\n BRACKET_QUOTED_ID_REGEX,\n PLAIN_ID_REGEX\n );\n\n const IDENTIFIER_REGEX = concat(\n optional(/\\.|\\.\\/|\\//), // relative or absolute path\n ANY_ID,\n anyNumberOfTimes(concat(\n PATH_DELIMITER_REGEX,\n ANY_ID\n ))\n );\n\n // identifier followed by a equal-sign (without the equal sign)\n const HASH_PARAM_REGEX = concat(\n '(',\n BRACKET_QUOTED_ID_REGEX, '|',\n PLAIN_ID_REGEX,\n ')(?==)'\n );\n\n const HELPER_NAME_OR_PATH_EXPRESSION = {\n begin: IDENTIFIER_REGEX,\n lexemes: /[\\w.\\/]+/\n };\n\n const HELPER_PARAMETER = hljs.inherit(HELPER_NAME_OR_PATH_EXPRESSION, {\n keywords: LITERALS\n });\n\n const SUB_EXPRESSION = {\n begin: /\\(/,\n end: /\\)/\n // the \"contains\" is added below when all necessary sub-modes are defined\n };\n\n const HASH = {\n // fka \"attribute-assignment\", parameters of the form 'key=value'\n className: 'attr',\n begin: HASH_PARAM_REGEX,\n relevance: 0,\n starts: {\n begin: /=/,\n end: /=/,\n starts: {\n contains: [\n hljs.NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n HELPER_PARAMETER,\n SUB_EXPRESSION\n ]\n }\n }\n };\n\n const BLOCK_PARAMS = {\n // parameters of the form '{{#with x as | y |}}...{{/with}}'\n begin: /as\\s+\\|/,\n keywords: {\n keyword: 'as'\n },\n end: /\\|/,\n contains: [\n {\n // define sub-mode in order to prevent highlighting of block-parameter named \"as\"\n begin: /\\w+/\n }\n ]\n };\n\n const HELPER_PARAMETERS = {\n contains: [\n hljs.NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n BLOCK_PARAMS,\n HASH,\n HELPER_PARAMETER,\n SUB_EXPRESSION\n ],\n returnEnd: true\n // the property \"end\" is defined through inheritance when the mode is used. If depends\n // on the surrounding mode, but \"endsWithParent\" does not work here (i.e. it includes the\n // end-token of the surrounding mode)\n };\n\n const SUB_EXPRESSION_CONTENTS = hljs.inherit(HELPER_NAME_OR_PATH_EXPRESSION, {\n className: 'name',\n keywords: BUILT_INS,\n starts: hljs.inherit(HELPER_PARAMETERS, {\n end: /\\)/\n })\n });\n\n SUB_EXPRESSION.contains = [SUB_EXPRESSION_CONTENTS];\n\n const OPENING_BLOCK_MUSTACHE_CONTENTS = hljs.inherit(HELPER_NAME_OR_PATH_EXPRESSION, {\n keywords: BUILT_INS,\n className: 'name',\n starts: hljs.inherit(HELPER_PARAMETERS, {\n end: /\\}\\}/\n })\n });\n\n const CLOSING_BLOCK_MUSTACHE_CONTENTS = hljs.inherit(HELPER_NAME_OR_PATH_EXPRESSION, {\n keywords: BUILT_INS,\n className: 'name'\n });\n\n const BASIC_MUSTACHE_CONTENTS = hljs.inherit(HELPER_NAME_OR_PATH_EXPRESSION, {\n className: 'name',\n keywords: BUILT_INS,\n starts: hljs.inherit(HELPER_PARAMETERS, {\n end: /\\}\\}/\n })\n });\n\n const ESCAPE_MUSTACHE_WITH_PRECEEDING_BACKSLASH = {\n begin: /\\\\\\{\\{/,\n skip: true\n };\n const PREVENT_ESCAPE_WITH_ANOTHER_PRECEEDING_BACKSLASH = {\n begin: /\\\\\\\\(?=\\{\\{)/,\n skip: true\n };\n\n return {\n name: 'Handlebars',\n aliases: [\n 'hbs',\n 'html.hbs',\n 'html.handlebars',\n 'htmlbars'\n ],\n case_insensitive: true,\n subLanguage: 'xml',\n contains: [\n ESCAPE_MUSTACHE_WITH_PRECEEDING_BACKSLASH,\n PREVENT_ESCAPE_WITH_ANOTHER_PRECEEDING_BACKSLASH,\n hljs.COMMENT(/\\{\\{!--/, /--\\}\\}/),\n hljs.COMMENT(/\\{\\{!/, /\\}\\}/),\n {\n // open raw block \"{{{{raw}}}} content not evaluated {{{{/raw}}}}\"\n className: 'template-tag',\n begin: /\\{\\{\\{\\{(?!\\/)/,\n end: /\\}\\}\\}\\}/,\n contains: [OPENING_BLOCK_MUSTACHE_CONTENTS],\n starts: {\n end: /\\{\\{\\{\\{\\//,\n returnEnd: true,\n subLanguage: 'xml'\n }\n },\n {\n // close raw block\n className: 'template-tag',\n begin: /\\{\\{\\{\\{\\//,\n end: /\\}\\}\\}\\}/,\n contains: [CLOSING_BLOCK_MUSTACHE_CONTENTS]\n },\n {\n // open block statement\n className: 'template-tag',\n begin: /\\{\\{#/,\n end: /\\}\\}/,\n contains: [OPENING_BLOCK_MUSTACHE_CONTENTS]\n },\n {\n className: 'template-tag',\n begin: /\\{\\{(?=else\\}\\})/,\n end: /\\}\\}/,\n keywords: 'else'\n },\n {\n className: 'template-tag',\n begin: /\\{\\{(?=else if)/,\n end: /\\}\\}/,\n keywords: 'else if'\n },\n {\n // closing block statement\n className: 'template-tag',\n begin: /\\{\\{\\//,\n end: /\\}\\}/,\n contains: [CLOSING_BLOCK_MUSTACHE_CONTENTS]\n },\n {\n // template variable or helper-call that is NOT html-escaped\n className: 'template-variable',\n begin: /\\{\\{\\{/,\n end: /\\}\\}\\}/,\n contains: [BASIC_MUSTACHE_CONTENTS]\n },\n {\n // template variable or helper-call that is html-escaped\n className: 'template-variable',\n begin: /\\{\\{/,\n end: /\\}\\}/,\n contains: [BASIC_MUSTACHE_CONTENTS]\n }\n ]\n };\n}\n\nmodule.exports = handlebars;\n","/*\nLanguage: Haskell\nAuthor: Jeremy Hull <sourdrums@gmail.com>\nContributors: Zena Treep <zena.treep@gmail.com>\nWebsite: https://www.haskell.org\nCategory: functional\n*/\n\nfunction haskell(hljs) {\n const COMMENT = {\n variants: [\n hljs.COMMENT('--', '$'),\n hljs.COMMENT(\n /\\{-/,\n /-\\}/,\n {\n contains: ['self']\n }\n )\n ]\n };\n\n const PRAGMA = {\n className: 'meta',\n begin: /\\{-#/,\n end: /#-\\}/\n };\n\n const PREPROCESSOR = {\n className: 'meta',\n begin: '^#',\n end: '$'\n };\n\n const CONSTRUCTOR = {\n className: 'type',\n begin: '\\\\b[A-Z][\\\\w\\']*', // TODO: other constructors (build-in, infix).\n relevance: 0\n };\n\n const LIST = {\n begin: '\\\\(',\n end: '\\\\)',\n illegal: '\"',\n contains: [\n PRAGMA,\n PREPROCESSOR,\n {\n className: 'type',\n begin: '\\\\b[A-Z][\\\\w]*(\\\\((\\\\.\\\\.|,|\\\\w+)\\\\))?'\n },\n hljs.inherit(hljs.TITLE_MODE, {\n begin: '[_a-z][\\\\w\\']*'\n }),\n COMMENT\n ]\n };\n\n const RECORD = {\n begin: /\\{/,\n end: /\\}/,\n contains: LIST.contains\n };\n\n return {\n name: 'Haskell',\n aliases: ['hs'],\n keywords:\n 'let in if then else case of where do module import hiding ' +\n 'qualified type data newtype deriving class instance as default ' +\n 'infix infixl infixr foreign export ccall stdcall cplusplus ' +\n 'jvm dotnet safe unsafe family forall mdo proc rec',\n contains: [\n // Top-level constructions.\n {\n beginKeywords: 'module',\n end: 'where',\n keywords: 'module where',\n contains: [\n LIST,\n COMMENT\n ],\n illegal: '\\\\W\\\\.|;'\n },\n {\n begin: '\\\\bimport\\\\b',\n end: '$',\n keywords: 'import qualified as hiding',\n contains: [\n LIST,\n COMMENT\n ],\n illegal: '\\\\W\\\\.|;'\n },\n {\n className: 'class',\n begin: '^(\\\\s*)?(class|instance)\\\\b',\n end: 'where',\n keywords: 'class family instance where',\n contains: [\n CONSTRUCTOR,\n LIST,\n COMMENT\n ]\n },\n {\n className: 'class',\n begin: '\\\\b(data|(new)?type)\\\\b',\n end: '$',\n keywords: 'data family type newtype deriving',\n contains: [\n PRAGMA,\n CONSTRUCTOR,\n LIST,\n RECORD,\n COMMENT\n ]\n },\n {\n beginKeywords: 'default',\n end: '$',\n contains: [\n CONSTRUCTOR,\n LIST,\n COMMENT\n ]\n },\n {\n beginKeywords: 'infix infixl infixr',\n end: '$',\n contains: [\n hljs.C_NUMBER_MODE,\n COMMENT\n ]\n },\n {\n begin: '\\\\bforeign\\\\b',\n end: '$',\n keywords: 'foreign import export ccall stdcall cplusplus jvm ' +\n 'dotnet safe unsafe',\n contains: [\n CONSTRUCTOR,\n hljs.QUOTE_STRING_MODE,\n COMMENT\n ]\n },\n {\n className: 'meta',\n begin: '#!\\\\/usr\\\\/bin\\\\/env\\ runhaskell',\n end: '$'\n },\n // \"Whitespaces\".\n PRAGMA,\n PREPROCESSOR,\n\n // Literals and names.\n\n // TODO: characters.\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n CONSTRUCTOR,\n hljs.inherit(hljs.TITLE_MODE, {\n begin: '^[_a-z][\\\\w\\']*'\n }),\n COMMENT,\n { // No markup, relevance booster\n begin: '->|<-'\n }\n ]\n };\n}\n\nmodule.exports = haskell;\n","/*\nLanguage: Haxe\nDescription: Haxe is an open source toolkit based on a modern, high level, strictly typed programming language.\nAuthor: Christopher Kaster <ikasoki@gmail.com> (Based on the actionscript.js language file by Alexander Myadzel)\nContributors: Kenton Hamaluik <kentonh@gmail.com>\nWebsite: https://haxe.org\n*/\n\nfunction haxe(hljs) {\n\n const HAXE_BASIC_TYPES = 'Int Float String Bool Dynamic Void Array ';\n\n return {\n name: 'Haxe',\n aliases: ['hx'],\n keywords: {\n keyword: 'break case cast catch continue default do dynamic else enum extern ' +\n 'for function here if import in inline never new override package private get set ' +\n 'public return static super switch this throw trace try typedef untyped using var while ' +\n HAXE_BASIC_TYPES,\n built_in:\n 'trace this',\n literal:\n 'true false null _'\n },\n contains: [\n {\n className: 'string', // interpolate-able strings\n begin: '\\'',\n end: '\\'',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n {\n className: 'subst', // interpolation\n begin: '\\\\$\\\\{',\n end: '\\\\}'\n },\n {\n className: 'subst', // interpolation\n begin: '\\\\$',\n end: /\\W\\}/\n }\n ]\n },\n hljs.QUOTE_STRING_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'meta', // compiler meta\n begin: '@:',\n end: '$'\n },\n {\n className: 'meta', // compiler conditionals\n begin: '#',\n end: '$',\n keywords: {\n 'meta-keyword': 'if else elseif end error'\n }\n },\n {\n className: 'type', // function types\n begin: ':[ \\t]*',\n end: '[^A-Za-z0-9_ \\t\\\\->]',\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0\n },\n {\n className: 'type', // types\n begin: ':[ \\t]*',\n end: '\\\\W',\n excludeBegin: true,\n excludeEnd: true\n },\n {\n className: 'type', // instantiation\n begin: 'new *',\n end: '\\\\W',\n excludeBegin: true,\n excludeEnd: true\n },\n {\n className: 'class', // enums\n beginKeywords: 'enum',\n end: '\\\\{',\n contains: [hljs.TITLE_MODE]\n },\n {\n className: 'class', // abstracts\n beginKeywords: 'abstract',\n end: '[\\\\{$]',\n contains: [\n {\n className: 'type',\n begin: '\\\\(',\n end: '\\\\)',\n excludeBegin: true,\n excludeEnd: true\n },\n {\n className: 'type',\n begin: 'from +',\n end: '\\\\W',\n excludeBegin: true,\n excludeEnd: true\n },\n {\n className: 'type',\n begin: 'to +',\n end: '\\\\W',\n excludeBegin: true,\n excludeEnd: true\n },\n hljs.TITLE_MODE\n ],\n keywords: {\n keyword: 'abstract from to'\n }\n },\n {\n className: 'class', // classes\n begin: '\\\\b(class|interface) +',\n end: '[\\\\{$]',\n excludeEnd: true,\n keywords: 'class interface',\n contains: [\n {\n className: 'keyword',\n begin: '\\\\b(extends|implements) +',\n keywords: 'extends implements',\n contains: [\n {\n className: 'type',\n begin: hljs.IDENT_RE,\n relevance: 0\n }\n ]\n },\n hljs.TITLE_MODE\n ]\n },\n {\n className: 'function',\n beginKeywords: 'function',\n end: '\\\\(',\n excludeEnd: true,\n illegal: '\\\\S',\n contains: [hljs.TITLE_MODE]\n }\n ],\n illegal: /<\\//\n };\n}\n\nmodule.exports = haxe;\n","/*\nLanguage: HSP\nAuthor: prince <MC.prince.0203@gmail.com>\nWebsite: https://en.wikipedia.org/wiki/Hot_Soup_Processor\nCategory: scripting\n*/\n\nfunction hsp(hljs) {\n return {\n name: 'HSP',\n case_insensitive: true,\n keywords: {\n $pattern: /[\\w._]+/,\n keyword: 'goto gosub return break repeat loop continue wait await dim sdim foreach dimtype dup dupptr end stop newmod delmod mref run exgoto on mcall assert logmes newlab resume yield onexit onerror onkey onclick oncmd exist delete mkdir chdir dirlist bload bsave bcopy memfile if else poke wpoke lpoke getstr chdpm memexpand memcpy memset notesel noteadd notedel noteload notesave randomize noteunsel noteget split strrep setease button chgdisp exec dialog mmload mmplay mmstop mci pset pget syscolor mes print title pos circle cls font sysfont objsize picload color palcolor palette redraw width gsel gcopy gzoom gmode bmpsave hsvcolor getkey listbox chkbox combox input mesbox buffer screen bgscr mouse objsel groll line clrobj boxf objprm objmode stick grect grotate gsquare gradf objimage objskip objenable celload celdiv celput newcom querycom delcom cnvstow comres axobj winobj sendmsg comevent comevarg sarrayconv callfunc cnvwtos comevdisp libptr system hspstat hspver stat cnt err strsize looplev sublev iparam wparam lparam refstr refdval int rnd strlen length length2 length3 length4 vartype gettime peek wpeek lpeek varptr varuse noteinfo instr abs limit getease str strmid strf getpath strtrim sin cos tan atan sqrt double absf expf logf limitf powf geteasef mousex mousey mousew hwnd hinstance hdc ginfo objinfo dirinfo sysinfo thismod __hspver__ __hsp30__ __date__ __time__ __line__ __file__ _debug __hspdef__ and or xor not screen_normal screen_palette screen_hide screen_fixedsize screen_tool screen_frame gmode_gdi gmode_mem gmode_rgb0 gmode_alpha gmode_rgb0alpha gmode_add gmode_sub gmode_pixela ginfo_mx ginfo_my ginfo_act ginfo_sel ginfo_wx1 ginfo_wy1 ginfo_wx2 ginfo_wy2 ginfo_vx ginfo_vy ginfo_sizex ginfo_sizey ginfo_winx ginfo_winy ginfo_mesx ginfo_mesy ginfo_r ginfo_g ginfo_b ginfo_paluse ginfo_dispx ginfo_dispy ginfo_cx ginfo_cy ginfo_intid ginfo_newid ginfo_sx ginfo_sy objinfo_mode objinfo_bmscr objinfo_hwnd notemax notesize dir_cur dir_exe dir_win dir_sys dir_cmdline dir_desktop dir_mydoc dir_tv font_normal font_bold font_italic font_underline font_strikeout font_antialias objmode_normal objmode_guifont objmode_usefont gsquare_grad msgothic msmincho do until while wend for next _break _continue switch case default swbreak swend ddim ldim alloc m_pi rad2deg deg2rad ease_linear ease_quad_in ease_quad_out ease_quad_inout ease_cubic_in ease_cubic_out ease_cubic_inout ease_quartic_in ease_quartic_out ease_quartic_inout ease_bounce_in ease_bounce_out ease_bounce_inout ease_shake_in ease_shake_out ease_shake_inout ease_loop'\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n\n {\n // multi-line string\n className: 'string',\n begin: /\\{\"/,\n end: /\"\\}/,\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n\n hljs.COMMENT(';', '$', {\n relevance: 0\n }),\n\n {\n // pre-processor\n className: 'meta',\n begin: '#',\n end: '$',\n keywords: {\n 'meta-keyword': 'addion cfunc cmd cmpopt comfunc const defcfunc deffunc define else endif enum epack func global if ifdef ifndef include modcfunc modfunc modinit modterm module pack packopt regcmd runtime undef usecom uselib'\n },\n contains: [\n hljs.inherit(hljs.QUOTE_STRING_MODE, {\n className: 'meta-string'\n }),\n hljs.NUMBER_MODE,\n hljs.C_NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n\n {\n // label\n className: 'symbol',\n begin: '^\\\\*(\\\\w+|@)'\n },\n\n hljs.NUMBER_MODE,\n hljs.C_NUMBER_MODE\n ]\n };\n}\n\nmodule.exports = hsp;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction anyNumberOfTimes(re) {\n return concat('(', re, ')*');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction optional(re) {\n return concat('(', re, ')?');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] } args\n * @returns {string}\n */\nfunction either(...args) {\n const joined = '(' + args.map((x) => source(x)).join(\"|\") + \")\";\n return joined;\n}\n\n/*\nLanguage: Handlebars\nRequires: xml.js\nAuthor: Robin Ward <robin.ward@gmail.com>\nDescription: Matcher for Handlebars as well as EmberJS additions.\nWebsite: https://handlebarsjs.com\nCategory: template\n*/\n\nfunction handlebars(hljs) {\n const BUILT_INS = {\n 'builtin-name': [\n 'action',\n 'bindattr',\n 'collection',\n 'component',\n 'concat',\n 'debugger',\n 'each',\n 'each-in',\n 'get',\n 'hash',\n 'if',\n 'in',\n 'input',\n 'link-to',\n 'loc',\n 'log',\n 'lookup',\n 'mut',\n 'outlet',\n 'partial',\n 'query-params',\n 'render',\n 'template',\n 'textarea',\n 'unbound',\n 'unless',\n 'view',\n 'with',\n 'yield'\n ]\n };\n\n const LITERALS = {\n literal: [\n 'true',\n 'false',\n 'undefined',\n 'null'\n ]\n };\n\n // as defined in https://handlebarsjs.com/guide/expressions.html#literal-segments\n // this regex matches literal segments like ' abc ' or [ abc ] as well as helpers and paths\n // like a/b, ./abc/cde, and abc.bcd\n\n const DOUBLE_QUOTED_ID_REGEX = /\"\"|\"[^\"]+\"/;\n const SINGLE_QUOTED_ID_REGEX = /''|'[^']+'/;\n const BRACKET_QUOTED_ID_REGEX = /\\[\\]|\\[[^\\]]+\\]/;\n const PLAIN_ID_REGEX = /[^\\s!\"#%&'()*+,.\\/;<=>@\\[\\\\\\]^`{|}~]+/;\n const PATH_DELIMITER_REGEX = /(\\.|\\/)/;\n const ANY_ID = either(\n DOUBLE_QUOTED_ID_REGEX,\n SINGLE_QUOTED_ID_REGEX,\n BRACKET_QUOTED_ID_REGEX,\n PLAIN_ID_REGEX\n );\n\n const IDENTIFIER_REGEX = concat(\n optional(/\\.|\\.\\/|\\//), // relative or absolute path\n ANY_ID,\n anyNumberOfTimes(concat(\n PATH_DELIMITER_REGEX,\n ANY_ID\n ))\n );\n\n // identifier followed by a equal-sign (without the equal sign)\n const HASH_PARAM_REGEX = concat(\n '(',\n BRACKET_QUOTED_ID_REGEX, '|',\n PLAIN_ID_REGEX,\n ')(?==)'\n );\n\n const HELPER_NAME_OR_PATH_EXPRESSION = {\n begin: IDENTIFIER_REGEX,\n lexemes: /[\\w.\\/]+/\n };\n\n const HELPER_PARAMETER = hljs.inherit(HELPER_NAME_OR_PATH_EXPRESSION, {\n keywords: LITERALS\n });\n\n const SUB_EXPRESSION = {\n begin: /\\(/,\n end: /\\)/\n // the \"contains\" is added below when all necessary sub-modes are defined\n };\n\n const HASH = {\n // fka \"attribute-assignment\", parameters of the form 'key=value'\n className: 'attr',\n begin: HASH_PARAM_REGEX,\n relevance: 0,\n starts: {\n begin: /=/,\n end: /=/,\n starts: {\n contains: [\n hljs.NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n HELPER_PARAMETER,\n SUB_EXPRESSION\n ]\n }\n }\n };\n\n const BLOCK_PARAMS = {\n // parameters of the form '{{#with x as | y |}}...{{/with}}'\n begin: /as\\s+\\|/,\n keywords: {\n keyword: 'as'\n },\n end: /\\|/,\n contains: [\n {\n // define sub-mode in order to prevent highlighting of block-parameter named \"as\"\n begin: /\\w+/\n }\n ]\n };\n\n const HELPER_PARAMETERS = {\n contains: [\n hljs.NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n BLOCK_PARAMS,\n HASH,\n HELPER_PARAMETER,\n SUB_EXPRESSION\n ],\n returnEnd: true\n // the property \"end\" is defined through inheritance when the mode is used. If depends\n // on the surrounding mode, but \"endsWithParent\" does not work here (i.e. it includes the\n // end-token of the surrounding mode)\n };\n\n const SUB_EXPRESSION_CONTENTS = hljs.inherit(HELPER_NAME_OR_PATH_EXPRESSION, {\n className: 'name',\n keywords: BUILT_INS,\n starts: hljs.inherit(HELPER_PARAMETERS, {\n end: /\\)/\n })\n });\n\n SUB_EXPRESSION.contains = [SUB_EXPRESSION_CONTENTS];\n\n const OPENING_BLOCK_MUSTACHE_CONTENTS = hljs.inherit(HELPER_NAME_OR_PATH_EXPRESSION, {\n keywords: BUILT_INS,\n className: 'name',\n starts: hljs.inherit(HELPER_PARAMETERS, {\n end: /\\}\\}/\n })\n });\n\n const CLOSING_BLOCK_MUSTACHE_CONTENTS = hljs.inherit(HELPER_NAME_OR_PATH_EXPRESSION, {\n keywords: BUILT_INS,\n className: 'name'\n });\n\n const BASIC_MUSTACHE_CONTENTS = hljs.inherit(HELPER_NAME_OR_PATH_EXPRESSION, {\n className: 'name',\n keywords: BUILT_INS,\n starts: hljs.inherit(HELPER_PARAMETERS, {\n end: /\\}\\}/\n })\n });\n\n const ESCAPE_MUSTACHE_WITH_PRECEEDING_BACKSLASH = {\n begin: /\\\\\\{\\{/,\n skip: true\n };\n const PREVENT_ESCAPE_WITH_ANOTHER_PRECEEDING_BACKSLASH = {\n begin: /\\\\\\\\(?=\\{\\{)/,\n skip: true\n };\n\n return {\n name: 'Handlebars',\n aliases: [\n 'hbs',\n 'html.hbs',\n 'html.handlebars',\n 'htmlbars'\n ],\n case_insensitive: true,\n subLanguage: 'xml',\n contains: [\n ESCAPE_MUSTACHE_WITH_PRECEEDING_BACKSLASH,\n PREVENT_ESCAPE_WITH_ANOTHER_PRECEEDING_BACKSLASH,\n hljs.COMMENT(/\\{\\{!--/, /--\\}\\}/),\n hljs.COMMENT(/\\{\\{!/, /\\}\\}/),\n {\n // open raw block \"{{{{raw}}}} content not evaluated {{{{/raw}}}}\"\n className: 'template-tag',\n begin: /\\{\\{\\{\\{(?!\\/)/,\n end: /\\}\\}\\}\\}/,\n contains: [OPENING_BLOCK_MUSTACHE_CONTENTS],\n starts: {\n end: /\\{\\{\\{\\{\\//,\n returnEnd: true,\n subLanguage: 'xml'\n }\n },\n {\n // close raw block\n className: 'template-tag',\n begin: /\\{\\{\\{\\{\\//,\n end: /\\}\\}\\}\\}/,\n contains: [CLOSING_BLOCK_MUSTACHE_CONTENTS]\n },\n {\n // open block statement\n className: 'template-tag',\n begin: /\\{\\{#/,\n end: /\\}\\}/,\n contains: [OPENING_BLOCK_MUSTACHE_CONTENTS]\n },\n {\n className: 'template-tag',\n begin: /\\{\\{(?=else\\}\\})/,\n end: /\\}\\}/,\n keywords: 'else'\n },\n {\n className: 'template-tag',\n begin: /\\{\\{(?=else if)/,\n end: /\\}\\}/,\n keywords: 'else if'\n },\n {\n // closing block statement\n className: 'template-tag',\n begin: /\\{\\{\\//,\n end: /\\}\\}/,\n contains: [CLOSING_BLOCK_MUSTACHE_CONTENTS]\n },\n {\n // template variable or helper-call that is NOT html-escaped\n className: 'template-variable',\n begin: /\\{\\{\\{/,\n end: /\\}\\}\\}/,\n contains: [BASIC_MUSTACHE_CONTENTS]\n },\n {\n // template variable or helper-call that is html-escaped\n className: 'template-variable',\n begin: /\\{\\{/,\n end: /\\}\\}/,\n contains: [BASIC_MUSTACHE_CONTENTS]\n }\n ]\n };\n}\n\n/*\n Language: HTMLBars (legacy)\n Requires: xml.js\n Description: Matcher for Handlebars as well as EmberJS additions.\n Website: https://github.com/tildeio/htmlbars\n Category: template\n */\n\nfunction htmlbars(hljs) {\n const definition = handlebars(hljs);\n\n definition.name = \"HTMLbars\";\n\n // HACK: This lets handlebars do the auto-detection if it's been loaded (by\n // default the build script will load in alphabetical order) and if not (perhaps\n // an install is only using `htmlbars`, not `handlebars`) then this will still\n // allow HTMLBars to participate in the auto-detection\n\n // worse case someone will have HTMLbars and handlebars competing for the same\n // content and will need to change their setup to only require handlebars, but\n // I don't consider this a breaking change\n if (hljs.getLanguage(\"handlebars\")) {\n definition.disableAutodetect = true;\n }\n\n return definition;\n}\n\nmodule.exports = htmlbars;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/*\nLanguage: HTTP\nDescription: HTTP request and response headers with automatic body highlighting\nAuthor: Ivan Sagalaev <maniac@softwaremaniacs.org>\nCategory: common, protocols\nWebsite: https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview\n*/\n\nfunction http(hljs) {\n const VERSION = 'HTTP/(2|1\\\\.[01])';\n const HEADER_NAME = /[A-Za-z][A-Za-z0-9-]*/;\n const HEADER = {\n className: 'attribute',\n begin: concat('^', HEADER_NAME, '(?=\\\\:\\\\s)'),\n starts: {\n contains: [\n {\n className: \"punctuation\",\n begin: /: /,\n relevance: 0,\n starts: {\n end: '$',\n relevance: 0\n }\n }\n ]\n }\n };\n const HEADERS_AND_BODY = [\n HEADER,\n {\n begin: '\\\\n\\\\n',\n starts: { subLanguage: [], endsWithParent: true }\n }\n ];\n\n return {\n name: 'HTTP',\n aliases: ['https'],\n illegal: /\\S/,\n contains: [\n // response\n {\n begin: '^(?=' + VERSION + \" \\\\d{3})\",\n end: /$/,\n contains: [\n {\n className: \"meta\",\n begin: VERSION\n },\n {\n className: 'number', begin: '\\\\b\\\\d{3}\\\\b'\n }\n ],\n starts: {\n end: /\\b\\B/,\n illegal: /\\S/,\n contains: HEADERS_AND_BODY\n }\n },\n // request\n {\n begin: '(?=^[A-Z]+ (.*?) ' + VERSION + '$)',\n end: /$/,\n contains: [\n {\n className: 'string',\n begin: ' ',\n end: ' ',\n excludeBegin: true,\n excludeEnd: true\n },\n {\n className: \"meta\",\n begin: VERSION\n },\n {\n className: 'keyword',\n begin: '[A-Z]+'\n }\n ],\n starts: {\n end: /\\b\\B/,\n illegal: /\\S/,\n contains: HEADERS_AND_BODY\n }\n },\n // to allow headers to work even without a preamble\n hljs.inherit(HEADER, {\n relevance: 0\n })\n ]\n };\n}\n\nmodule.exports = http;\n","/*\nLanguage: Hy\nDescription: Hy is a wonderful dialect of Lisp that’s embedded in Python.\nAuthor: Sergey Sobko <s.sobko@profitware.ru>\nWebsite: http://docs.hylang.org/en/stable/\nCategory: lisp\n*/\n\nfunction hy(hljs) {\n var SYMBOLSTART = 'a-zA-Z_\\\\-!.?+*=<>&#\\'';\n var SYMBOL_RE = '[' + SYMBOLSTART + '][' + SYMBOLSTART + '0-9/;:]*';\n var keywords = {\n $pattern: SYMBOL_RE,\n 'builtin-name':\n // keywords\n '!= % %= & &= * ** **= *= *map ' +\n '+ += , --build-class-- --import-- -= . / // //= ' +\n '/= < << <<= <= = > >= >> >>= ' +\n '@ @= ^ ^= abs accumulate all and any ap-compose ' +\n 'ap-dotimes ap-each ap-each-while ap-filter ap-first ap-if ap-last ap-map ap-map-when ap-pipe ' +\n 'ap-reduce ap-reject apply as-> ascii assert assoc bin break butlast ' +\n 'callable calling-module-name car case cdr chain chr coll? combinations compile ' +\n 'compress cond cons cons? continue count curry cut cycle dec ' +\n 'def default-method defclass defmacro defmacro-alias defmacro/g! defmain defmethod defmulti defn ' +\n 'defn-alias defnc defnr defreader defseq del delattr delete-route dict-comp dir ' +\n 'disassemble dispatch-reader-macro distinct divmod do doto drop drop-last drop-while empty? ' +\n 'end-sequence eval eval-and-compile eval-when-compile even? every? except exec filter first ' +\n 'flatten float? fn fnc fnr for for* format fraction genexpr ' +\n 'gensym get getattr global globals group-by hasattr hash hex id ' +\n 'identity if if* if-not if-python2 import in inc input instance? ' +\n 'integer integer-char? integer? interleave interpose is is-coll is-cons is-empty is-even ' +\n 'is-every is-float is-instance is-integer is-integer-char is-iterable is-iterator is-keyword is-neg is-none ' +\n 'is-not is-numeric is-odd is-pos is-string is-symbol is-zero isinstance islice issubclass ' +\n 'iter iterable? iterate iterator? keyword keyword? lambda last len let ' +\n 'lif lif-not list* list-comp locals loop macro-error macroexpand macroexpand-1 macroexpand-all ' +\n 'map max merge-with method-decorator min multi-decorator multicombinations name neg? next ' +\n 'none? nonlocal not not-in not? nth numeric? oct odd? open ' +\n 'or ord partition permutations pos? post-route postwalk pow prewalk print ' +\n 'product profile/calls profile/cpu put-route quasiquote quote raise range read read-str ' +\n 'recursive-replace reduce remove repeat repeatedly repr require rest round route ' +\n 'route-with-methods rwm second seq set-comp setattr setv some sorted string ' +\n 'string? sum switch symbol? take take-nth take-while tee try unless ' +\n 'unquote unquote-splicing vars walk when while with with* with-decorator with-gensyms ' +\n 'xi xor yield yield-from zero? zip zip-longest | |= ~'\n };\n\n var SIMPLE_NUMBER_RE = '[-+]?\\\\d+(\\\\.\\\\d+)?';\n\n var SYMBOL = {\n begin: SYMBOL_RE,\n relevance: 0\n };\n var NUMBER = {\n className: 'number', begin: SIMPLE_NUMBER_RE,\n relevance: 0\n };\n var STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null});\n var COMMENT = hljs.COMMENT(\n ';',\n '$',\n {\n relevance: 0\n }\n );\n var LITERAL = {\n className: 'literal',\n begin: /\\b([Tt]rue|[Ff]alse|nil|None)\\b/\n };\n var COLLECTION = {\n begin: '[\\\\[\\\\{]', end: '[\\\\]\\\\}]'\n };\n var HINT = {\n className: 'comment',\n begin: '\\\\^' + SYMBOL_RE\n };\n var HINT_COL = hljs.COMMENT('\\\\^\\\\{', '\\\\}');\n var KEY = {\n className: 'symbol',\n begin: '[:]{1,2}' + SYMBOL_RE\n };\n var LIST = {\n begin: '\\\\(', end: '\\\\)'\n };\n var BODY = {\n endsWithParent: true,\n relevance: 0\n };\n var NAME = {\n className: 'name',\n relevance: 0,\n keywords: keywords,\n begin: SYMBOL_RE,\n starts: BODY\n };\n var DEFAULT_CONTAINS = [LIST, STRING, HINT, HINT_COL, COMMENT, KEY, COLLECTION, NUMBER, LITERAL, SYMBOL];\n\n LIST.contains = [hljs.COMMENT('comment', ''), NAME, BODY];\n BODY.contains = DEFAULT_CONTAINS;\n COLLECTION.contains = DEFAULT_CONTAINS;\n\n return {\n name: 'Hy',\n aliases: ['hylang'],\n illegal: /\\S/,\n contains: [hljs.SHEBANG(), LIST, STRING, HINT, HINT_COL, COMMENT, KEY, COLLECTION, NUMBER, LITERAL]\n };\n}\n\nmodule.exports = hy;\n","/*\nLanguage: Inform 7\nAuthor: Bruno Dias <bruno.r.dias@gmail.com>\nDescription: Language definition for Inform 7, a DSL for writing parser interactive fiction.\nWebsite: http://inform7.com\n*/\n\nfunction inform7(hljs) {\n const START_BRACKET = '\\\\[';\n const END_BRACKET = '\\\\]';\n return {\n name: 'Inform 7',\n aliases: ['i7'],\n case_insensitive: true,\n keywords: {\n // Some keywords more or less unique to I7, for relevance.\n keyword:\n // kind:\n 'thing room person man woman animal container ' +\n 'supporter backdrop door ' +\n // characteristic:\n 'scenery open closed locked inside gender ' +\n // verb:\n 'is are say understand ' +\n // misc keyword:\n 'kind of rule'\n },\n contains: [\n {\n className: 'string',\n begin: '\"',\n end: '\"',\n relevance: 0,\n contains: [\n {\n className: 'subst',\n begin: START_BRACKET,\n end: END_BRACKET\n }\n ]\n },\n {\n className: 'section',\n begin: /^(Volume|Book|Part|Chapter|Section|Table)\\b/,\n end: '$'\n },\n {\n // Rule definition\n // This is here for relevance.\n begin: /^(Check|Carry out|Report|Instead of|To|Rule|When|Before|After)\\b/,\n end: ':',\n contains: [\n {\n // Rule name\n begin: '\\\\(This',\n end: '\\\\)'\n }\n ]\n },\n {\n className: 'comment',\n begin: START_BRACKET,\n end: END_BRACKET,\n contains: ['self']\n }\n ]\n };\n}\n\nmodule.exports = inform7;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n return concat('(?=', re, ')');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] } args\n * @returns {string}\n */\nfunction either(...args) {\n const joined = '(' + args.map((x) => source(x)).join(\"|\") + \")\";\n return joined;\n}\n\n/*\nLanguage: TOML, also INI\nDescription: TOML aims to be a minimal configuration file format that's easy to read due to obvious semantics.\nContributors: Guillaume Gomez <guillaume1.gomez@gmail.com>\nCategory: common, config\nWebsite: https://github.com/toml-lang/toml\n*/\n\nfunction ini(hljs) {\n const NUMBERS = {\n className: 'number',\n relevance: 0,\n variants: [\n {\n begin: /([+-]+)?[\\d]+_[\\d_]+/\n },\n {\n begin: hljs.NUMBER_RE\n }\n ]\n };\n const COMMENTS = hljs.COMMENT();\n COMMENTS.variants = [\n {\n begin: /;/,\n end: /$/\n },\n {\n begin: /#/,\n end: /$/\n }\n ];\n const VARIABLES = {\n className: 'variable',\n variants: [\n {\n begin: /\\$[\\w\\d\"][\\w\\d_]*/\n },\n {\n begin: /\\$\\{(.*?)\\}/\n }\n ]\n };\n const LITERALS = {\n className: 'literal',\n begin: /\\bon|off|true|false|yes|no\\b/\n };\n const STRINGS = {\n className: \"string\",\n contains: [hljs.BACKSLASH_ESCAPE],\n variants: [\n {\n begin: \"'''\",\n end: \"'''\",\n relevance: 10\n },\n {\n begin: '\"\"\"',\n end: '\"\"\"',\n relevance: 10\n },\n {\n begin: '\"',\n end: '\"'\n },\n {\n begin: \"'\",\n end: \"'\"\n }\n ]\n };\n const ARRAY = {\n begin: /\\[/,\n end: /\\]/,\n contains: [\n COMMENTS,\n LITERALS,\n VARIABLES,\n STRINGS,\n NUMBERS,\n 'self'\n ],\n relevance: 0\n };\n\n const BARE_KEY = /[A-Za-z0-9_-]+/;\n const QUOTED_KEY_DOUBLE_QUOTE = /\"(\\\\\"|[^\"])*\"/;\n const QUOTED_KEY_SINGLE_QUOTE = /'[^']*'/;\n const ANY_KEY = either(\n BARE_KEY, QUOTED_KEY_DOUBLE_QUOTE, QUOTED_KEY_SINGLE_QUOTE\n );\n const DOTTED_KEY = concat(\n ANY_KEY, '(\\\\s*\\\\.\\\\s*', ANY_KEY, ')*',\n lookahead(/\\s*=\\s*[^#\\s]/)\n );\n\n return {\n name: 'TOML, also INI',\n aliases: ['toml'],\n case_insensitive: true,\n illegal: /\\S/,\n contains: [\n COMMENTS,\n {\n className: 'section',\n begin: /\\[+/,\n end: /\\]+/\n },\n {\n begin: DOTTED_KEY,\n className: 'attr',\n starts: {\n end: /$/,\n contains: [\n COMMENTS,\n ARRAY,\n LITERALS,\n VARIABLES,\n STRINGS,\n NUMBERS\n ]\n }\n }\n ]\n };\n}\n\nmodule.exports = ini;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/*\nLanguage: IRPF90\nAuthor: Anthony Scemama <scemama@irsamc.ups-tlse.fr>\nDescription: IRPF90 is an open-source Fortran code generator\nWebsite: http://irpf90.ups-tlse.fr\nCategory: scientific\n*/\n\n/** @type LanguageFn */\nfunction irpf90(hljs) {\n const PARAMS = {\n className: 'params',\n begin: '\\\\(',\n end: '\\\\)'\n };\n\n // regex in both fortran and irpf90 should match\n const OPTIONAL_NUMBER_SUFFIX = /(_[a-z_\\d]+)?/;\n const OPTIONAL_NUMBER_EXP = /([de][+-]?\\d+)?/;\n const NUMBER = {\n className: 'number',\n variants: [\n {\n begin: concat(/\\b\\d+/, /\\.(\\d*)/, OPTIONAL_NUMBER_EXP, OPTIONAL_NUMBER_SUFFIX)\n },\n {\n begin: concat(/\\b\\d+/, OPTIONAL_NUMBER_EXP, OPTIONAL_NUMBER_SUFFIX)\n },\n {\n begin: concat(/\\.\\d+/, OPTIONAL_NUMBER_EXP, OPTIONAL_NUMBER_SUFFIX)\n }\n ],\n relevance: 0\n };\n\n const F_KEYWORDS = {\n literal: '.False. .True.',\n keyword: 'kind do while private call intrinsic where elsewhere ' +\n 'type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then ' +\n 'public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. ' +\n 'goto save else use module select case ' +\n 'access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit ' +\n 'continue format pause cycle exit ' +\n 'c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg ' +\n 'synchronous nopass non_overridable pass protected volatile abstract extends import ' +\n 'non_intrinsic value deferred generic final enumerator class associate bind enum ' +\n 'c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t ' +\n 'c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double ' +\n 'c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr ' +\n 'c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer ' +\n 'c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor ' +\n 'numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ' +\n 'ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive ' +\n 'pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure ' +\n 'integer real character complex logical dimension allocatable|10 parameter ' +\n 'external implicit|10 none double precision assign intent optional pointer ' +\n 'target in out common equivalence data ' +\n // IRPF90 special keywords\n 'begin_provider &begin_provider end_provider begin_shell end_shell begin_template end_template subst assert touch ' +\n 'soft_touch provide no_dep free irp_if irp_else irp_endif irp_write irp_read',\n built_in: 'alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint ' +\n 'dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl ' +\n 'algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama ' +\n 'iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod ' +\n 'qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log ' +\n 'log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate ' +\n 'adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product ' +\n 'eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul ' +\n 'maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product ' +\n 'radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind ' +\n 'set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer ' +\n 'dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ' +\n 'ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode ' +\n 'is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_of ' +\n 'acosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 ' +\n 'atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits ' +\n 'bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr ' +\n 'num_images parity popcnt poppar shifta shiftl shiftr this_image ' +\n // IRPF90 special built_ins\n 'IRP_ALIGN irp_here'\n };\n return {\n name: 'IRPF90',\n case_insensitive: true,\n keywords: F_KEYWORDS,\n illegal: /\\/\\*/,\n contains: [\n hljs.inherit(hljs.APOS_STRING_MODE, {\n className: 'string',\n relevance: 0\n }),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {\n className: 'string',\n relevance: 0\n }),\n {\n className: 'function',\n beginKeywords: 'subroutine function program',\n illegal: '[${=\\\\n]',\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n PARAMS\n ]\n },\n hljs.COMMENT('!', '$', {\n relevance: 0\n }),\n hljs.COMMENT('begin_doc', 'end_doc', {\n relevance: 10\n }),\n NUMBER\n ]\n };\n}\n\nmodule.exports = irpf90;\n","/*\nLanguage: ISBL\nAuthor: Dmitriy Tarasov <dimatar@gmail.com>\nDescription: built-in language DIRECTUM\nCategory: enterprise\n*/\n\nfunction isbl(hljs) {\n // Определение идентификаторов\n const UNDERSCORE_IDENT_RE = \"[A-Za-zА-Яа-яёЁ_!][A-Za-zА-Яа-яёЁ_0-9]*\";\n\n // Определение имен функций\n const FUNCTION_NAME_IDENT_RE = \"[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]*\";\n\n // keyword : ключевые слова\n const KEYWORD =\n \"and и else иначе endexcept endfinally endforeach конецвсе endif конецесли endwhile конецпока \" +\n \"except exitfor finally foreach все if если in в not не or или try while пока \";\n\n // SYSRES Constants\n const sysres_constants =\n \"SYSRES_CONST_ACCES_RIGHT_TYPE_EDIT \" +\n \"SYSRES_CONST_ACCES_RIGHT_TYPE_FULL \" +\n \"SYSRES_CONST_ACCES_RIGHT_TYPE_VIEW \" +\n \"SYSRES_CONST_ACCESS_MODE_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_NO_ACCESS_VIEW \" +\n \"SYSRES_CONST_ACCESS_NO_ACCESS_VIEW_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_YES_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_YES_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_YES_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_YES_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_YES_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_YES_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_VIEW \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_VIEW_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_YES_CODE \" +\n \"SYSRES_CONST_ACCESS_TYPE_CHANGE \" +\n \"SYSRES_CONST_ACCESS_TYPE_CHANGE_CODE \" +\n \"SYSRES_CONST_ACCESS_TYPE_EXISTS \" +\n \"SYSRES_CONST_ACCESS_TYPE_EXISTS_CODE \" +\n \"SYSRES_CONST_ACCESS_TYPE_FULL \" +\n \"SYSRES_CONST_ACCESS_TYPE_FULL_CODE \" +\n \"SYSRES_CONST_ACCESS_TYPE_VIEW \" +\n \"SYSRES_CONST_ACCESS_TYPE_VIEW_CODE \" +\n \"SYSRES_CONST_ACTION_TYPE_ABORT \" +\n \"SYSRES_CONST_ACTION_TYPE_ACCEPT \" +\n \"SYSRES_CONST_ACTION_TYPE_ACCESS_RIGHTS \" +\n \"SYSRES_CONST_ACTION_TYPE_ADD_ATTACHMENT \" +\n \"SYSRES_CONST_ACTION_TYPE_CHANGE_CARD \" +\n \"SYSRES_CONST_ACTION_TYPE_CHANGE_KIND \" +\n \"SYSRES_CONST_ACTION_TYPE_CHANGE_STORAGE \" +\n \"SYSRES_CONST_ACTION_TYPE_CONTINUE \" +\n \"SYSRES_CONST_ACTION_TYPE_COPY \" +\n \"SYSRES_CONST_ACTION_TYPE_CREATE \" +\n \"SYSRES_CONST_ACTION_TYPE_CREATE_VERSION \" +\n \"SYSRES_CONST_ACTION_TYPE_DELETE \" +\n \"SYSRES_CONST_ACTION_TYPE_DELETE_ATTACHMENT \" +\n \"SYSRES_CONST_ACTION_TYPE_DELETE_VERSION \" +\n \"SYSRES_CONST_ACTION_TYPE_DISABLE_DELEGATE_ACCESS_RIGHTS \" +\n \"SYSRES_CONST_ACTION_TYPE_ENABLE_DELEGATE_ACCESS_RIGHTS \" +\n \"SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE \" +\n \"SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE_AND_PASSWORD \" +\n \"SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_PASSWORD \" +\n \"SYSRES_CONST_ACTION_TYPE_EXPORT_WITH_LOCK \" +\n \"SYSRES_CONST_ACTION_TYPE_EXPORT_WITHOUT_LOCK \" +\n \"SYSRES_CONST_ACTION_TYPE_IMPORT_WITH_UNLOCK \" +\n \"SYSRES_CONST_ACTION_TYPE_IMPORT_WITHOUT_UNLOCK \" +\n \"SYSRES_CONST_ACTION_TYPE_LIFE_CYCLE_STAGE \" +\n \"SYSRES_CONST_ACTION_TYPE_LOCK \" +\n \"SYSRES_CONST_ACTION_TYPE_LOCK_FOR_SERVER \" +\n \"SYSRES_CONST_ACTION_TYPE_LOCK_MODIFY \" +\n \"SYSRES_CONST_ACTION_TYPE_MARK_AS_READED \" +\n \"SYSRES_CONST_ACTION_TYPE_MARK_AS_UNREADED \" +\n \"SYSRES_CONST_ACTION_TYPE_MODIFY \" +\n \"SYSRES_CONST_ACTION_TYPE_MODIFY_CARD \" +\n \"SYSRES_CONST_ACTION_TYPE_MOVE_TO_ARCHIVE \" +\n \"SYSRES_CONST_ACTION_TYPE_OFF_ENCRYPTION \" +\n \"SYSRES_CONST_ACTION_TYPE_PASSWORD_CHANGE \" +\n \"SYSRES_CONST_ACTION_TYPE_PERFORM \" +\n \"SYSRES_CONST_ACTION_TYPE_RECOVER_FROM_LOCAL_COPY \" +\n \"SYSRES_CONST_ACTION_TYPE_RESTART \" +\n \"SYSRES_CONST_ACTION_TYPE_RESTORE_FROM_ARCHIVE \" +\n \"SYSRES_CONST_ACTION_TYPE_REVISION \" +\n \"SYSRES_CONST_ACTION_TYPE_SEND_BY_MAIL \" +\n \"SYSRES_CONST_ACTION_TYPE_SIGN \" +\n \"SYSRES_CONST_ACTION_TYPE_START \" +\n \"SYSRES_CONST_ACTION_TYPE_UNLOCK \" +\n \"SYSRES_CONST_ACTION_TYPE_UNLOCK_FROM_SERVER \" +\n \"SYSRES_CONST_ACTION_TYPE_VERSION_STATE \" +\n \"SYSRES_CONST_ACTION_TYPE_VERSION_VISIBILITY \" +\n \"SYSRES_CONST_ACTION_TYPE_VIEW \" +\n \"SYSRES_CONST_ACTION_TYPE_VIEW_SHADOW_COPY \" +\n \"SYSRES_CONST_ACTION_TYPE_WORKFLOW_DESCRIPTION_MODIFY \" +\n \"SYSRES_CONST_ACTION_TYPE_WRITE_HISTORY \" +\n \"SYSRES_CONST_ACTIVE_VERSION_STATE_PICK_VALUE \" +\n \"SYSRES_CONST_ADD_REFERENCE_MODE_NAME \" +\n \"SYSRES_CONST_ADDITION_REQUISITE_CODE \" +\n \"SYSRES_CONST_ADDITIONAL_PARAMS_REQUISITE_CODE \" +\n \"SYSRES_CONST_ADITIONAL_JOB_END_DATE_REQUISITE_NAME \" +\n \"SYSRES_CONST_ADITIONAL_JOB_READ_REQUISITE_NAME \" +\n \"SYSRES_CONST_ADITIONAL_JOB_START_DATE_REQUISITE_NAME \" +\n \"SYSRES_CONST_ADITIONAL_JOB_STATE_REQUISITE_NAME \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE_ACTION \" +\n \"SYSRES_CONST_ALL_ACCEPT_CONDITION_RUS \" +\n \"SYSRES_CONST_ALL_USERS_GROUP \" +\n \"SYSRES_CONST_ALL_USERS_GROUP_NAME \" +\n \"SYSRES_CONST_ALL_USERS_SERVER_GROUP_NAME \" +\n \"SYSRES_CONST_ALLOWED_ACCESS_TYPE_CODE \" +\n \"SYSRES_CONST_ALLOWED_ACCESS_TYPE_NAME \" +\n \"SYSRES_CONST_APP_VIEWER_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_APPROVING_SIGNATURE_NAME \" +\n \"SYSRES_CONST_APPROVING_SIGNATURE_REQUISITE_CODE \" +\n \"SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE \" +\n \"SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE_CODE \" +\n \"SYSRES_CONST_ATTACH_TYPE_COMPONENT_TOKEN \" +\n \"SYSRES_CONST_ATTACH_TYPE_DOC \" +\n \"SYSRES_CONST_ATTACH_TYPE_EDOC \" +\n \"SYSRES_CONST_ATTACH_TYPE_FOLDER \" +\n \"SYSRES_CONST_ATTACH_TYPE_JOB \" +\n \"SYSRES_CONST_ATTACH_TYPE_REFERENCE \" +\n \"SYSRES_CONST_ATTACH_TYPE_TASK \" +\n \"SYSRES_CONST_AUTH_ENCODED_PASSWORD \" +\n \"SYSRES_CONST_AUTH_ENCODED_PASSWORD_CODE \" +\n \"SYSRES_CONST_AUTH_NOVELL \" +\n \"SYSRES_CONST_AUTH_PASSWORD \" +\n \"SYSRES_CONST_AUTH_PASSWORD_CODE \" +\n \"SYSRES_CONST_AUTH_WINDOWS \" +\n \"SYSRES_CONST_AUTHENTICATING_SIGNATURE_NAME \" +\n \"SYSRES_CONST_AUTHENTICATING_SIGNATURE_REQUISITE_CODE \" +\n \"SYSRES_CONST_AUTO_ENUM_METHOD_FLAG \" +\n \"SYSRES_CONST_AUTO_NUMERATION_CODE \" +\n \"SYSRES_CONST_AUTO_STRONG_ENUM_METHOD_FLAG \" +\n \"SYSRES_CONST_AUTOTEXT_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_AUTOTEXT_TEXT_REQUISITE_CODE \" +\n \"SYSRES_CONST_AUTOTEXT_USAGE_ALL \" +\n \"SYSRES_CONST_AUTOTEXT_USAGE_ALL_CODE \" +\n \"SYSRES_CONST_AUTOTEXT_USAGE_SIGN \" +\n \"SYSRES_CONST_AUTOTEXT_USAGE_SIGN_CODE \" +\n \"SYSRES_CONST_AUTOTEXT_USAGE_WORK \" +\n \"SYSRES_CONST_AUTOTEXT_USAGE_WORK_CODE \" +\n \"SYSRES_CONST_AUTOTEXT_USE_ANYWHERE_CODE \" +\n \"SYSRES_CONST_AUTOTEXT_USE_ON_SIGNING_CODE \" +\n \"SYSRES_CONST_AUTOTEXT_USE_ON_WORK_CODE \" +\n \"SYSRES_CONST_BEGIN_DATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_BLACK_LIFE_CYCLE_STAGE_FONT_COLOR \" +\n \"SYSRES_CONST_BLUE_LIFE_CYCLE_STAGE_FONT_COLOR \" +\n \"SYSRES_CONST_BTN_PART \" +\n \"SYSRES_CONST_CALCULATED_ROLE_TYPE_CODE \" +\n \"SYSRES_CONST_CALL_TYPE_VARIABLE_BUTTON_VALUE \" +\n \"SYSRES_CONST_CALL_TYPE_VARIABLE_PROGRAM_VALUE \" +\n \"SYSRES_CONST_CANCEL_MESSAGE_FUNCTION_RESULT \" +\n \"SYSRES_CONST_CARD_PART \" +\n \"SYSRES_CONST_CARD_REFERENCE_MODE_NAME \" +\n \"SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_ENCRYPT_VALUE \" +\n \"SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_AND_ENCRYPT_VALUE \" +\n \"SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_VALUE \" +\n \"SYSRES_CONST_CHECK_PARAM_VALUE_DATE_PARAM_TYPE \" +\n \"SYSRES_CONST_CHECK_PARAM_VALUE_FLOAT_PARAM_TYPE \" +\n \"SYSRES_CONST_CHECK_PARAM_VALUE_INTEGER_PARAM_TYPE \" +\n \"SYSRES_CONST_CHECK_PARAM_VALUE_PICK_PARAM_TYPE \" +\n \"SYSRES_CONST_CHECK_PARAM_VALUE_REEFRENCE_PARAM_TYPE \" +\n \"SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_FEMININE \" +\n \"SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_MASCULINE \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_ADMIN \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_DEVELOPER \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_DOCS \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_EDOC_CARDS \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_EXTERNAL_EXECUTABLE \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_OTHER \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_REFERENCE \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_REPORT \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_SCRIPT \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_URL \" +\n \"SYSRES_CONST_CODE_REQUISITE_ACCESS \" +\n \"SYSRES_CONST_CODE_REQUISITE_CODE \" +\n \"SYSRES_CONST_CODE_REQUISITE_COMPONENT \" +\n \"SYSRES_CONST_CODE_REQUISITE_DESCRIPTION \" +\n \"SYSRES_CONST_CODE_REQUISITE_EXCLUDE_COMPONENT \" +\n \"SYSRES_CONST_CODE_REQUISITE_RECORD \" +\n \"SYSRES_CONST_COMMENT_REQ_CODE \" +\n \"SYSRES_CONST_COMMON_SETTINGS_REQUISITE_CODE \" +\n \"SYSRES_CONST_COMP_CODE_GRD \" +\n \"SYSRES_CONST_COMPONENT_GROUP_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_COMPONENT_TYPE_ADMIN_COMPONENTS \" +\n \"SYSRES_CONST_COMPONENT_TYPE_DEVELOPER_COMPONENTS \" +\n \"SYSRES_CONST_COMPONENT_TYPE_DOCS \" +\n \"SYSRES_CONST_COMPONENT_TYPE_EDOC_CARDS \" +\n \"SYSRES_CONST_COMPONENT_TYPE_EDOCS \" +\n \"SYSRES_CONST_COMPONENT_TYPE_EXTERNAL_EXECUTABLE \" +\n \"SYSRES_CONST_COMPONENT_TYPE_OTHER \" +\n \"SYSRES_CONST_COMPONENT_TYPE_REFERENCE_TYPES \" +\n \"SYSRES_CONST_COMPONENT_TYPE_REFERENCES \" +\n \"SYSRES_CONST_COMPONENT_TYPE_REPORTS \" +\n \"SYSRES_CONST_COMPONENT_TYPE_SCRIPTS \" +\n \"SYSRES_CONST_COMPONENT_TYPE_URL \" +\n \"SYSRES_CONST_COMPONENTS_REMOTE_SERVERS_VIEW_CODE \" +\n \"SYSRES_CONST_CONDITION_BLOCK_DESCRIPTION \" +\n \"SYSRES_CONST_CONST_FIRM_STATUS_COMMON \" +\n \"SYSRES_CONST_CONST_FIRM_STATUS_INDIVIDUAL \" +\n \"SYSRES_CONST_CONST_NEGATIVE_VALUE \" +\n \"SYSRES_CONST_CONST_POSITIVE_VALUE \" +\n \"SYSRES_CONST_CONST_SERVER_STATUS_DONT_REPLICATE \" +\n \"SYSRES_CONST_CONST_SERVER_STATUS_REPLICATE \" +\n \"SYSRES_CONST_CONTENTS_REQUISITE_CODE \" +\n \"SYSRES_CONST_DATA_TYPE_BOOLEAN \" +\n \"SYSRES_CONST_DATA_TYPE_DATE \" +\n \"SYSRES_CONST_DATA_TYPE_FLOAT \" +\n \"SYSRES_CONST_DATA_TYPE_INTEGER \" +\n \"SYSRES_CONST_DATA_TYPE_PICK \" +\n \"SYSRES_CONST_DATA_TYPE_REFERENCE \" +\n \"SYSRES_CONST_DATA_TYPE_STRING \" +\n \"SYSRES_CONST_DATA_TYPE_TEXT \" +\n \"SYSRES_CONST_DATA_TYPE_VARIANT \" +\n \"SYSRES_CONST_DATE_CLOSE_REQ_CODE \" +\n \"SYSRES_CONST_DATE_FORMAT_DATE_ONLY_CHAR \" +\n \"SYSRES_CONST_DATE_OPEN_REQ_CODE \" +\n \"SYSRES_CONST_DATE_REQUISITE \" +\n \"SYSRES_CONST_DATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_DATE_REQUISITE_NAME \" +\n \"SYSRES_CONST_DATE_REQUISITE_TYPE \" +\n \"SYSRES_CONST_DATE_TYPE_CHAR \" +\n \"SYSRES_CONST_DATETIME_FORMAT_VALUE \" +\n \"SYSRES_CONST_DEA_ACCESS_RIGHTS_ACTION_CODE \" +\n \"SYSRES_CONST_DESCRIPTION_LOCALIZE_ID_REQUISITE_CODE \" +\n \"SYSRES_CONST_DESCRIPTION_REQUISITE_CODE \" +\n \"SYSRES_CONST_DET1_PART \" +\n \"SYSRES_CONST_DET2_PART \" +\n \"SYSRES_CONST_DET3_PART \" +\n \"SYSRES_CONST_DET4_PART \" +\n \"SYSRES_CONST_DET5_PART \" +\n \"SYSRES_CONST_DET6_PART \" +\n \"SYSRES_CONST_DETAIL_DATASET_KEY_REQUISITE_CODE \" +\n \"SYSRES_CONST_DETAIL_PICK_REQUISITE_CODE \" +\n \"SYSRES_CONST_DETAIL_REQ_CODE \" +\n \"SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_CODE \" +\n \"SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_NAME \" +\n \"SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_CODE \" +\n \"SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_NAME \" +\n \"SYSRES_CONST_DOCUMENT_STORAGES_CODE \" +\n \"SYSRES_CONST_DOCUMENT_TEMPLATES_TYPE_NAME \" +\n \"SYSRES_CONST_DOUBLE_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDITOR_CLOSE_FILE_OBSERV_TYPE_CODE \" +\n \"SYSRES_CONST_EDITOR_CLOSE_PROCESS_OBSERV_TYPE_CODE \" +\n \"SYSRES_CONST_EDITOR_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDITORS_APPLICATION_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDITORS_CREATE_SEVERAL_PROCESSES_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDITORS_EXTENSION_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDITORS_OBSERVER_BY_PROCESS_TYPE \" +\n \"SYSRES_CONST_EDITORS_REFERENCE_CODE \" +\n \"SYSRES_CONST_EDITORS_REPLACE_SPEC_CHARS_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDITORS_USE_PLUGINS_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDITORS_VIEW_DOCUMENT_OPENED_TO_EDIT_CODE \" +\n \"SYSRES_CONST_EDOC_CARD_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_CARD_TYPES_LINK_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_CERTIFICATE_AND_PASSWORD_ENCODE_CODE \" +\n \"SYSRES_CONST_EDOC_CERTIFICATE_ENCODE_CODE \" +\n \"SYSRES_CONST_EDOC_DATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_KIND_REFERENCE_CODE \" +\n \"SYSRES_CONST_EDOC_KINDS_BY_TEMPLATE_ACTION_CODE \" +\n \"SYSRES_CONST_EDOC_MANAGE_ACCESS_CODE \" +\n \"SYSRES_CONST_EDOC_NONE_ENCODE_CODE \" +\n \"SYSRES_CONST_EDOC_NUMBER_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_PASSWORD_ENCODE_CODE \" +\n \"SYSRES_CONST_EDOC_READONLY_ACCESS_CODE \" +\n \"SYSRES_CONST_EDOC_SHELL_LIFE_TYPE_VIEW_VALUE \" +\n \"SYSRES_CONST_EDOC_SIZE_RESTRICTION_PRIORITY_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_STORAGE_CHECK_ACCESS_RIGHTS_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_STORAGE_COMPUTER_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_STORAGE_DATABASE_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_STORAGE_EDIT_IN_STORAGE_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_STORAGE_LOCAL_PATH_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_STORAGE_SHARED_SOURCE_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_TEMPLATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_TYPES_REFERENCE_CODE \" +\n \"SYSRES_CONST_EDOC_VERSION_ACTIVE_STAGE_CODE \" +\n \"SYSRES_CONST_EDOC_VERSION_DESIGN_STAGE_CODE \" +\n \"SYSRES_CONST_EDOC_VERSION_OBSOLETE_STAGE_CODE \" +\n \"SYSRES_CONST_EDOC_WRITE_ACCES_CODE \" +\n \"SYSRES_CONST_EDOCUMENT_CARD_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE \" +\n \"SYSRES_CONST_ENCODE_CERTIFICATE_TYPE_CODE \" +\n \"SYSRES_CONST_END_DATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_ENUMERATION_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_EXECUTE_ACCESS_RIGHTS_TYPE_CODE \" +\n \"SYSRES_CONST_EXECUTIVE_FILE_STORAGE_TYPE \" +\n \"SYSRES_CONST_EXIST_CONST \" +\n \"SYSRES_CONST_EXIST_VALUE \" +\n \"SYSRES_CONST_EXPORT_LOCK_TYPE_ASK \" +\n \"SYSRES_CONST_EXPORT_LOCK_TYPE_WITH_LOCK \" +\n \"SYSRES_CONST_EXPORT_LOCK_TYPE_WITHOUT_LOCK \" +\n \"SYSRES_CONST_EXPORT_VERSION_TYPE_ASK \" +\n \"SYSRES_CONST_EXPORT_VERSION_TYPE_LAST \" +\n \"SYSRES_CONST_EXPORT_VERSION_TYPE_LAST_ACTIVE \" +\n \"SYSRES_CONST_EXTENSION_REQUISITE_CODE \" +\n \"SYSRES_CONST_FILTER_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_FILTER_REQUISITE_CODE \" +\n \"SYSRES_CONST_FILTER_TYPE_COMMON_CODE \" +\n \"SYSRES_CONST_FILTER_TYPE_COMMON_NAME \" +\n \"SYSRES_CONST_FILTER_TYPE_USER_CODE \" +\n \"SYSRES_CONST_FILTER_TYPE_USER_NAME \" +\n \"SYSRES_CONST_FILTER_VALUE_REQUISITE_NAME \" +\n \"SYSRES_CONST_FLOAT_NUMBER_FORMAT_CHAR \" +\n \"SYSRES_CONST_FLOAT_REQUISITE_TYPE \" +\n \"SYSRES_CONST_FOLDER_AUTHOR_VALUE \" +\n \"SYSRES_CONST_FOLDER_KIND_ANY_OBJECTS \" +\n \"SYSRES_CONST_FOLDER_KIND_COMPONENTS \" +\n \"SYSRES_CONST_FOLDER_KIND_EDOCS \" +\n \"SYSRES_CONST_FOLDER_KIND_JOBS \" +\n \"SYSRES_CONST_FOLDER_KIND_TASKS \" +\n \"SYSRES_CONST_FOLDER_TYPE_COMMON \" +\n \"SYSRES_CONST_FOLDER_TYPE_COMPONENT \" +\n \"SYSRES_CONST_FOLDER_TYPE_FAVORITES \" +\n \"SYSRES_CONST_FOLDER_TYPE_INBOX \" +\n \"SYSRES_CONST_FOLDER_TYPE_OUTBOX \" +\n \"SYSRES_CONST_FOLDER_TYPE_QUICK_LAUNCH \" +\n \"SYSRES_CONST_FOLDER_TYPE_SEARCH \" +\n \"SYSRES_CONST_FOLDER_TYPE_SHORTCUTS \" +\n \"SYSRES_CONST_FOLDER_TYPE_USER \" +\n \"SYSRES_CONST_FROM_DICTIONARY_ENUM_METHOD_FLAG \" +\n \"SYSRES_CONST_FULL_SUBSTITUTE_TYPE \" +\n \"SYSRES_CONST_FULL_SUBSTITUTE_TYPE_CODE \" +\n \"SYSRES_CONST_FUNCTION_CANCEL_RESULT \" +\n \"SYSRES_CONST_FUNCTION_CATEGORY_SYSTEM \" +\n \"SYSRES_CONST_FUNCTION_CATEGORY_USER \" +\n \"SYSRES_CONST_FUNCTION_FAILURE_RESULT \" +\n \"SYSRES_CONST_FUNCTION_SAVE_RESULT \" +\n \"SYSRES_CONST_GENERATED_REQUISITE \" +\n \"SYSRES_CONST_GREEN_LIFE_CYCLE_STAGE_FONT_COLOR \" +\n \"SYSRES_CONST_GROUP_ACCOUNT_TYPE_VALUE_CODE \" +\n \"SYSRES_CONST_GROUP_CATEGORY_NORMAL_CODE \" +\n \"SYSRES_CONST_GROUP_CATEGORY_NORMAL_NAME \" +\n \"SYSRES_CONST_GROUP_CATEGORY_SERVICE_CODE \" +\n \"SYSRES_CONST_GROUP_CATEGORY_SERVICE_NAME \" +\n \"SYSRES_CONST_GROUP_COMMON_CATEGORY_FIELD_VALUE \" +\n \"SYSRES_CONST_GROUP_FULL_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_GROUP_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_GROUP_RIGHTS_T_REQUISITE_CODE \" +\n \"SYSRES_CONST_GROUP_SERVER_CODES_REQUISITE_CODE \" +\n \"SYSRES_CONST_GROUP_SERVER_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_GROUP_SERVICE_CATEGORY_FIELD_VALUE \" +\n \"SYSRES_CONST_GROUP_USER_REQUISITE_CODE \" +\n \"SYSRES_CONST_GROUPS_REFERENCE_CODE \" +\n \"SYSRES_CONST_GROUPS_REQUISITE_CODE \" +\n \"SYSRES_CONST_HIDDEN_MODE_NAME \" +\n \"SYSRES_CONST_HIGH_LVL_REQUISITE_CODE \" +\n \"SYSRES_CONST_HISTORY_ACTION_CREATE_CODE \" +\n \"SYSRES_CONST_HISTORY_ACTION_DELETE_CODE \" +\n \"SYSRES_CONST_HISTORY_ACTION_EDIT_CODE \" +\n \"SYSRES_CONST_HOUR_CHAR \" +\n \"SYSRES_CONST_ID_REQUISITE_CODE \" +\n \"SYSRES_CONST_IDSPS_REQUISITE_CODE \" +\n \"SYSRES_CONST_IMAGE_MODE_COLOR \" +\n \"SYSRES_CONST_IMAGE_MODE_GREYSCALE \" +\n \"SYSRES_CONST_IMAGE_MODE_MONOCHROME \" +\n \"SYSRES_CONST_IMPORTANCE_HIGH \" +\n \"SYSRES_CONST_IMPORTANCE_LOW \" +\n \"SYSRES_CONST_IMPORTANCE_NORMAL \" +\n \"SYSRES_CONST_IN_DESIGN_VERSION_STATE_PICK_VALUE \" +\n \"SYSRES_CONST_INCOMING_WORK_RULE_TYPE_CODE \" +\n \"SYSRES_CONST_INT_REQUISITE \" +\n \"SYSRES_CONST_INT_REQUISITE_TYPE \" +\n \"SYSRES_CONST_INTEGER_NUMBER_FORMAT_CHAR \" +\n \"SYSRES_CONST_INTEGER_TYPE_CHAR \" +\n \"SYSRES_CONST_IS_GENERATED_REQUISITE_NEGATIVE_VALUE \" +\n \"SYSRES_CONST_IS_PUBLIC_ROLE_REQUISITE_CODE \" +\n \"SYSRES_CONST_IS_REMOTE_USER_NEGATIVE_VALUE \" +\n \"SYSRES_CONST_IS_REMOTE_USER_POSITIVE_VALUE \" +\n \"SYSRES_CONST_IS_STORED_REQUISITE_NEGATIVE_VALUE \" +\n \"SYSRES_CONST_IS_STORED_REQUISITE_STORED_VALUE \" +\n \"SYSRES_CONST_ITALIC_LIFE_CYCLE_STAGE_DRAW_STYLE \" +\n \"SYSRES_CONST_JOB_BLOCK_DESCRIPTION \" +\n \"SYSRES_CONST_JOB_KIND_CONTROL_JOB \" +\n \"SYSRES_CONST_JOB_KIND_JOB \" +\n \"SYSRES_CONST_JOB_KIND_NOTICE \" +\n \"SYSRES_CONST_JOB_STATE_ABORTED \" +\n \"SYSRES_CONST_JOB_STATE_COMPLETE \" +\n \"SYSRES_CONST_JOB_STATE_WORKING \" +\n \"SYSRES_CONST_KIND_REQUISITE_CODE \" +\n \"SYSRES_CONST_KIND_REQUISITE_NAME \" +\n \"SYSRES_CONST_KINDS_CREATE_SHADOW_COPIES_REQUISITE_CODE \" +\n \"SYSRES_CONST_KINDS_DEFAULT_EDOC_LIFE_STAGE_REQUISITE_CODE \" +\n \"SYSRES_CONST_KINDS_EDOC_ALL_TEPLATES_ALLOWED_REQUISITE_CODE \" +\n \"SYSRES_CONST_KINDS_EDOC_ALLOW_LIFE_CYCLE_STAGE_CHANGING_REQUISITE_CODE \" +\n \"SYSRES_CONST_KINDS_EDOC_ALLOW_MULTIPLE_ACTIVE_VERSIONS_REQUISITE_CODE \" +\n \"SYSRES_CONST_KINDS_EDOC_SHARE_ACCES_RIGHTS_BY_DEFAULT_CODE \" +\n \"SYSRES_CONST_KINDS_EDOC_TEMPLATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_KINDS_EDOC_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_KINDS_SIGNERS_REQUISITES_CODE \" +\n \"SYSRES_CONST_KOD_INPUT_TYPE \" +\n \"SYSRES_CONST_LAST_UPDATE_DATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_LIFE_CYCLE_START_STAGE_REQUISITE_CODE \" +\n \"SYSRES_CONST_LILAC_LIFE_CYCLE_STAGE_FONT_COLOR \" +\n \"SYSRES_CONST_LINK_OBJECT_KIND_COMPONENT \" +\n \"SYSRES_CONST_LINK_OBJECT_KIND_DOCUMENT \" +\n \"SYSRES_CONST_LINK_OBJECT_KIND_EDOC \" +\n \"SYSRES_CONST_LINK_OBJECT_KIND_FOLDER \" +\n \"SYSRES_CONST_LINK_OBJECT_KIND_JOB \" +\n \"SYSRES_CONST_LINK_OBJECT_KIND_REFERENCE \" +\n \"SYSRES_CONST_LINK_OBJECT_KIND_TASK \" +\n \"SYSRES_CONST_LINK_REF_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_LIST_REFERENCE_MODE_NAME \" +\n \"SYSRES_CONST_LOCALIZATION_DICTIONARY_MAIN_VIEW_CODE \" +\n \"SYSRES_CONST_MAIN_VIEW_CODE \" +\n \"SYSRES_CONST_MANUAL_ENUM_METHOD_FLAG \" +\n \"SYSRES_CONST_MASTER_COMP_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_MASTER_TABLE_REC_ID_REQUISITE_CODE \" +\n \"SYSRES_CONST_MAXIMIZED_MODE_NAME \" +\n \"SYSRES_CONST_ME_VALUE \" +\n \"SYSRES_CONST_MESSAGE_ATTENTION_CAPTION \" +\n \"SYSRES_CONST_MESSAGE_CONFIRMATION_CAPTION \" +\n \"SYSRES_CONST_MESSAGE_ERROR_CAPTION \" +\n \"SYSRES_CONST_MESSAGE_INFORMATION_CAPTION \" +\n \"SYSRES_CONST_MINIMIZED_MODE_NAME \" +\n \"SYSRES_CONST_MINUTE_CHAR \" +\n \"SYSRES_CONST_MODULE_REQUISITE_CODE \" +\n \"SYSRES_CONST_MONITORING_BLOCK_DESCRIPTION \" +\n \"SYSRES_CONST_MONTH_FORMAT_VALUE \" +\n \"SYSRES_CONST_NAME_LOCALIZE_ID_REQUISITE_CODE \" +\n \"SYSRES_CONST_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_NAME_SINGULAR_REQUISITE_CODE \" +\n \"SYSRES_CONST_NAMEAN_INPUT_TYPE \" +\n \"SYSRES_CONST_NEGATIVE_PICK_VALUE \" +\n \"SYSRES_CONST_NEGATIVE_VALUE \" +\n \"SYSRES_CONST_NO \" +\n \"SYSRES_CONST_NO_PICK_VALUE \" +\n \"SYSRES_CONST_NO_SIGNATURE_REQUISITE_CODE \" +\n \"SYSRES_CONST_NO_VALUE \" +\n \"SYSRES_CONST_NONE_ACCESS_RIGHTS_TYPE_CODE \" +\n \"SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE \" +\n \"SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE_MASCULINE \" +\n \"SYSRES_CONST_NORMAL_ACCESS_RIGHTS_TYPE_CODE \" +\n \"SYSRES_CONST_NORMAL_LIFE_CYCLE_STAGE_DRAW_STYLE \" +\n \"SYSRES_CONST_NORMAL_MODE_NAME \" +\n \"SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_CODE \" +\n \"SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_NAME \" +\n \"SYSRES_CONST_NOTE_REQUISITE_CODE \" +\n \"SYSRES_CONST_NOTICE_BLOCK_DESCRIPTION \" +\n \"SYSRES_CONST_NUM_REQUISITE \" +\n \"SYSRES_CONST_NUM_STR_REQUISITE_CODE \" +\n \"SYSRES_CONST_NUMERATION_AUTO_NOT_STRONG \" +\n \"SYSRES_CONST_NUMERATION_AUTO_STRONG \" +\n \"SYSRES_CONST_NUMERATION_FROM_DICTONARY \" +\n \"SYSRES_CONST_NUMERATION_MANUAL \" +\n \"SYSRES_CONST_NUMERIC_TYPE_CHAR \" +\n \"SYSRES_CONST_NUMREQ_REQUISITE_CODE \" +\n \"SYSRES_CONST_OBSOLETE_VERSION_STATE_PICK_VALUE \" +\n \"SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE \" +\n \"SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_CODE \" +\n \"SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_FEMININE \" +\n \"SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_MASCULINE \" +\n \"SYSRES_CONST_OPTIONAL_FORM_COMP_REQCODE_PREFIX \" +\n \"SYSRES_CONST_ORANGE_LIFE_CYCLE_STAGE_FONT_COLOR \" +\n \"SYSRES_CONST_ORIGINALREF_REQUISITE_CODE \" +\n \"SYSRES_CONST_OURFIRM_REF_CODE \" +\n \"SYSRES_CONST_OURFIRM_REQUISITE_CODE \" +\n \"SYSRES_CONST_OURFIRM_VAR \" +\n \"SYSRES_CONST_OUTGOING_WORK_RULE_TYPE_CODE \" +\n \"SYSRES_CONST_PICK_NEGATIVE_RESULT \" +\n \"SYSRES_CONST_PICK_POSITIVE_RESULT \" +\n \"SYSRES_CONST_PICK_REQUISITE \" +\n \"SYSRES_CONST_PICK_REQUISITE_TYPE \" +\n \"SYSRES_CONST_PICK_TYPE_CHAR \" +\n \"SYSRES_CONST_PLAN_STATUS_REQUISITE_CODE \" +\n \"SYSRES_CONST_PLATFORM_VERSION_COMMENT \" +\n \"SYSRES_CONST_PLUGINS_SETTINGS_DESCRIPTION_REQUISITE_CODE \" +\n \"SYSRES_CONST_POSITIVE_PICK_VALUE \" +\n \"SYSRES_CONST_POWER_TO_CREATE_ACTION_CODE \" +\n \"SYSRES_CONST_POWER_TO_SIGN_ACTION_CODE \" +\n \"SYSRES_CONST_PRIORITY_REQUISITE_CODE \" +\n \"SYSRES_CONST_QUALIFIED_TASK_TYPE \" +\n \"SYSRES_CONST_QUALIFIED_TASK_TYPE_CODE \" +\n \"SYSRES_CONST_RECSTAT_REQUISITE_CODE \" +\n \"SYSRES_CONST_RED_LIFE_CYCLE_STAGE_FONT_COLOR \" +\n \"SYSRES_CONST_REF_ID_T_REF_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_REF_REQUISITE \" +\n \"SYSRES_CONST_REF_REQUISITE_TYPE \" +\n \"SYSRES_CONST_REF_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE \" +\n \"SYSRES_CONST_REFERENCE_RECORD_HISTORY_CREATE_ACTION_CODE \" +\n \"SYSRES_CONST_REFERENCE_RECORD_HISTORY_DELETE_ACTION_CODE \" +\n \"SYSRES_CONST_REFERENCE_RECORD_HISTORY_MODIFY_ACTION_CODE \" +\n \"SYSRES_CONST_REFERENCE_TYPE_CHAR \" +\n \"SYSRES_CONST_REFERENCE_TYPE_REQUISITE_NAME \" +\n \"SYSRES_CONST_REFERENCES_ADD_PARAMS_REQUISITE_CODE \" +\n \"SYSRES_CONST_REFERENCES_DISPLAY_REQUISITE_REQUISITE_CODE \" +\n \"SYSRES_CONST_REMOTE_SERVER_STATUS_WORKING \" +\n \"SYSRES_CONST_REMOTE_SERVER_TYPE_MAIN \" +\n \"SYSRES_CONST_REMOTE_SERVER_TYPE_SECONDARY \" +\n \"SYSRES_CONST_REMOTE_USER_FLAG_VALUE_CODE \" +\n \"SYSRES_CONST_REPORT_APP_EDITOR_INTERNAL \" +\n \"SYSRES_CONST_REPORT_BASE_REPORT_ID_REQUISITE_CODE \" +\n \"SYSRES_CONST_REPORT_BASE_REPORT_REQUISITE_CODE \" +\n \"SYSRES_CONST_REPORT_SCRIPT_REQUISITE_CODE \" +\n \"SYSRES_CONST_REPORT_TEMPLATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_REPORT_VIEWER_CODE_REQUISITE_CODE \" +\n \"SYSRES_CONST_REQ_ALLOW_COMPONENT_DEFAULT_VALUE \" +\n \"SYSRES_CONST_REQ_ALLOW_RECORD_DEFAULT_VALUE \" +\n \"SYSRES_CONST_REQ_ALLOW_SERVER_COMPONENT_DEFAULT_VALUE \" +\n \"SYSRES_CONST_REQ_MODE_AVAILABLE_CODE \" +\n \"SYSRES_CONST_REQ_MODE_EDIT_CODE \" +\n \"SYSRES_CONST_REQ_MODE_HIDDEN_CODE \" +\n \"SYSRES_CONST_REQ_MODE_NOT_AVAILABLE_CODE \" +\n \"SYSRES_CONST_REQ_MODE_VIEW_CODE \" +\n \"SYSRES_CONST_REQ_NUMBER_REQUISITE_CODE \" +\n \"SYSRES_CONST_REQ_SECTION_VALUE \" +\n \"SYSRES_CONST_REQ_TYPE_VALUE \" +\n \"SYSRES_CONST_REQUISITE_FORMAT_BY_UNIT \" +\n \"SYSRES_CONST_REQUISITE_FORMAT_DATE_FULL \" +\n \"SYSRES_CONST_REQUISITE_FORMAT_DATE_TIME \" +\n \"SYSRES_CONST_REQUISITE_FORMAT_LEFT \" +\n \"SYSRES_CONST_REQUISITE_FORMAT_RIGHT \" +\n \"SYSRES_CONST_REQUISITE_FORMAT_WITHOUT_UNIT \" +\n \"SYSRES_CONST_REQUISITE_NUMBER_REQUISITE_CODE \" +\n \"SYSRES_CONST_REQUISITE_SECTION_ACTIONS \" +\n \"SYSRES_CONST_REQUISITE_SECTION_BUTTON \" +\n \"SYSRES_CONST_REQUISITE_SECTION_BUTTONS \" +\n \"SYSRES_CONST_REQUISITE_SECTION_CARD \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE10 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE11 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE12 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE13 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE14 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE15 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE16 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE17 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE18 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE19 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE2 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE20 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE21 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE22 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE23 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE24 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE3 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE4 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE5 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE6 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE7 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE8 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE9 \" +\n \"SYSRES_CONST_REQUISITES_PSEUDOREFERENCE_REQUISITE_NUMBER_REQUISITE_CODE \" +\n \"SYSRES_CONST_RIGHT_ALIGNMENT_CODE \" +\n \"SYSRES_CONST_ROLES_REFERENCE_CODE \" +\n \"SYSRES_CONST_ROUTE_STEP_AFTER_RUS \" +\n \"SYSRES_CONST_ROUTE_STEP_AND_CONDITION_RUS \" +\n \"SYSRES_CONST_ROUTE_STEP_OR_CONDITION_RUS \" +\n \"SYSRES_CONST_ROUTE_TYPE_COMPLEX \" +\n \"SYSRES_CONST_ROUTE_TYPE_PARALLEL \" +\n \"SYSRES_CONST_ROUTE_TYPE_SERIAL \" +\n \"SYSRES_CONST_SBDATASETDESC_NEGATIVE_VALUE \" +\n \"SYSRES_CONST_SBDATASETDESC_POSITIVE_VALUE \" +\n \"SYSRES_CONST_SBVIEWSDESC_POSITIVE_VALUE \" +\n \"SYSRES_CONST_SCRIPT_BLOCK_DESCRIPTION \" +\n \"SYSRES_CONST_SEARCH_BY_TEXT_REQUISITE_CODE \" +\n \"SYSRES_CONST_SEARCHES_COMPONENT_CONTENT \" +\n \"SYSRES_CONST_SEARCHES_CRITERIA_ACTION_NAME \" +\n \"SYSRES_CONST_SEARCHES_EDOC_CONTENT \" +\n \"SYSRES_CONST_SEARCHES_FOLDER_CONTENT \" +\n \"SYSRES_CONST_SEARCHES_JOB_CONTENT \" +\n \"SYSRES_CONST_SEARCHES_REFERENCE_CODE \" +\n \"SYSRES_CONST_SEARCHES_TASK_CONTENT \" +\n \"SYSRES_CONST_SECOND_CHAR \" +\n \"SYSRES_CONST_SECTION_REQUISITE_ACTIONS_VALUE \" +\n \"SYSRES_CONST_SECTION_REQUISITE_CARD_VALUE \" +\n \"SYSRES_CONST_SECTION_REQUISITE_CODE \" +\n \"SYSRES_CONST_SECTION_REQUISITE_DETAIL_1_VALUE \" +\n \"SYSRES_CONST_SECTION_REQUISITE_DETAIL_2_VALUE \" +\n \"SYSRES_CONST_SECTION_REQUISITE_DETAIL_3_VALUE \" +\n \"SYSRES_CONST_SECTION_REQUISITE_DETAIL_4_VALUE \" +\n \"SYSRES_CONST_SECTION_REQUISITE_DETAIL_5_VALUE \" +\n \"SYSRES_CONST_SECTION_REQUISITE_DETAIL_6_VALUE \" +\n \"SYSRES_CONST_SELECT_REFERENCE_MODE_NAME \" +\n \"SYSRES_CONST_SELECT_TYPE_SELECTABLE \" +\n \"SYSRES_CONST_SELECT_TYPE_SELECTABLE_ONLY_CHILD \" +\n \"SYSRES_CONST_SELECT_TYPE_SELECTABLE_WITH_CHILD \" +\n \"SYSRES_CONST_SELECT_TYPE_UNSLECTABLE \" +\n \"SYSRES_CONST_SERVER_TYPE_MAIN \" +\n \"SYSRES_CONST_SERVICE_USER_CATEGORY_FIELD_VALUE \" +\n \"SYSRES_CONST_SETTINGS_USER_REQUISITE_CODE \" +\n \"SYSRES_CONST_SIGNATURE_AND_ENCODE_CERTIFICATE_TYPE_CODE \" +\n \"SYSRES_CONST_SIGNATURE_CERTIFICATE_TYPE_CODE \" +\n \"SYSRES_CONST_SINGULAR_TITLE_REQUISITE_CODE \" +\n \"SYSRES_CONST_SQL_SERVER_AUTHENTIFICATION_FLAG_VALUE_CODE \" +\n \"SYSRES_CONST_SQL_SERVER_ENCODE_AUTHENTIFICATION_FLAG_VALUE_CODE \" +\n \"SYSRES_CONST_STANDART_ROUTE_REFERENCE_CODE \" +\n \"SYSRES_CONST_STANDART_ROUTE_REFERENCE_COMMENT_REQUISITE_CODE \" +\n \"SYSRES_CONST_STANDART_ROUTES_GROUPS_REFERENCE_CODE \" +\n \"SYSRES_CONST_STATE_REQ_NAME \" +\n \"SYSRES_CONST_STATE_REQUISITE_ACTIVE_VALUE \" +\n \"SYSRES_CONST_STATE_REQUISITE_CLOSED_VALUE \" +\n \"SYSRES_CONST_STATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_STATIC_ROLE_TYPE_CODE \" +\n \"SYSRES_CONST_STATUS_PLAN_DEFAULT_VALUE \" +\n \"SYSRES_CONST_STATUS_VALUE_AUTOCLEANING \" +\n \"SYSRES_CONST_STATUS_VALUE_BLUE_SQUARE \" +\n \"SYSRES_CONST_STATUS_VALUE_COMPLETE \" +\n \"SYSRES_CONST_STATUS_VALUE_GREEN_SQUARE \" +\n \"SYSRES_CONST_STATUS_VALUE_ORANGE_SQUARE \" +\n \"SYSRES_CONST_STATUS_VALUE_PURPLE_SQUARE \" +\n \"SYSRES_CONST_STATUS_VALUE_RED_SQUARE \" +\n \"SYSRES_CONST_STATUS_VALUE_SUSPEND \" +\n \"SYSRES_CONST_STATUS_VALUE_YELLOW_SQUARE \" +\n \"SYSRES_CONST_STDROUTE_SHOW_TO_USERS_REQUISITE_CODE \" +\n \"SYSRES_CONST_STORAGE_TYPE_FILE \" +\n \"SYSRES_CONST_STORAGE_TYPE_SQL_SERVER \" +\n \"SYSRES_CONST_STR_REQUISITE \" +\n \"SYSRES_CONST_STRIKEOUT_LIFE_CYCLE_STAGE_DRAW_STYLE \" +\n \"SYSRES_CONST_STRING_FORMAT_LEFT_ALIGN_CHAR \" +\n \"SYSRES_CONST_STRING_FORMAT_RIGHT_ALIGN_CHAR \" +\n \"SYSRES_CONST_STRING_REQUISITE_CODE \" +\n \"SYSRES_CONST_STRING_REQUISITE_TYPE \" +\n \"SYSRES_CONST_STRING_TYPE_CHAR \" +\n \"SYSRES_CONST_SUBSTITUTES_PSEUDOREFERENCE_CODE \" +\n \"SYSRES_CONST_SUBTASK_BLOCK_DESCRIPTION \" +\n \"SYSRES_CONST_SYSTEM_SETTING_CURRENT_USER_PARAM_VALUE \" +\n \"SYSRES_CONST_SYSTEM_SETTING_EMPTY_VALUE_PARAM_VALUE \" +\n \"SYSRES_CONST_SYSTEM_VERSION_COMMENT \" +\n \"SYSRES_CONST_TASK_ACCESS_TYPE_ALL \" +\n \"SYSRES_CONST_TASK_ACCESS_TYPE_ALL_MEMBERS \" +\n \"SYSRES_CONST_TASK_ACCESS_TYPE_MANUAL \" +\n \"SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION \" +\n \"SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION_AND_PASSWORD \" +\n \"SYSRES_CONST_TASK_ENCODE_TYPE_NONE \" +\n \"SYSRES_CONST_TASK_ENCODE_TYPE_PASSWORD \" +\n \"SYSRES_CONST_TASK_ROUTE_ALL_CONDITION \" +\n \"SYSRES_CONST_TASK_ROUTE_AND_CONDITION \" +\n \"SYSRES_CONST_TASK_ROUTE_OR_CONDITION \" +\n \"SYSRES_CONST_TASK_STATE_ABORTED \" +\n \"SYSRES_CONST_TASK_STATE_COMPLETE \" +\n \"SYSRES_CONST_TASK_STATE_CONTINUED \" +\n \"SYSRES_CONST_TASK_STATE_CONTROL \" +\n \"SYSRES_CONST_TASK_STATE_INIT \" +\n \"SYSRES_CONST_TASK_STATE_WORKING \" +\n \"SYSRES_CONST_TASK_TITLE \" +\n \"SYSRES_CONST_TASK_TYPES_GROUPS_REFERENCE_CODE \" +\n \"SYSRES_CONST_TASK_TYPES_REFERENCE_CODE \" +\n \"SYSRES_CONST_TEMPLATES_REFERENCE_CODE \" +\n \"SYSRES_CONST_TEST_DATE_REQUISITE_NAME \" +\n \"SYSRES_CONST_TEST_DEV_DATABASE_NAME \" +\n \"SYSRES_CONST_TEST_DEV_SYSTEM_CODE \" +\n \"SYSRES_CONST_TEST_EDMS_DATABASE_NAME \" +\n \"SYSRES_CONST_TEST_EDMS_MAIN_CODE \" +\n \"SYSRES_CONST_TEST_EDMS_MAIN_DB_NAME \" +\n \"SYSRES_CONST_TEST_EDMS_SECOND_CODE \" +\n \"SYSRES_CONST_TEST_EDMS_SECOND_DB_NAME \" +\n \"SYSRES_CONST_TEST_EDMS_SYSTEM_CODE \" +\n \"SYSRES_CONST_TEST_NUMERIC_REQUISITE_NAME \" +\n \"SYSRES_CONST_TEXT_REQUISITE \" +\n \"SYSRES_CONST_TEXT_REQUISITE_CODE \" +\n \"SYSRES_CONST_TEXT_REQUISITE_TYPE \" +\n \"SYSRES_CONST_TEXT_TYPE_CHAR \" +\n \"SYSRES_CONST_TYPE_CODE_REQUISITE_CODE \" +\n \"SYSRES_CONST_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_UNDEFINED_LIFE_CYCLE_STAGE_FONT_COLOR \" +\n \"SYSRES_CONST_UNITS_SECTION_ID_REQUISITE_CODE \" +\n \"SYSRES_CONST_UNITS_SECTION_REQUISITE_CODE \" +\n \"SYSRES_CONST_UNOPERATING_RECORD_FLAG_VALUE_CODE \" +\n \"SYSRES_CONST_UNSTORED_DATA_REQUISITE_CODE \" +\n \"SYSRES_CONST_UNSTORED_DATA_REQUISITE_NAME \" +\n \"SYSRES_CONST_USE_ACCESS_TYPE_CODE \" +\n \"SYSRES_CONST_USE_ACCESS_TYPE_NAME \" +\n \"SYSRES_CONST_USER_ACCOUNT_TYPE_VALUE_CODE \" +\n \"SYSRES_CONST_USER_ADDITIONAL_INFORMATION_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_AND_GROUP_ID_FROM_PSEUDOREFERENCE_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_CATEGORY_NORMAL \" +\n \"SYSRES_CONST_USER_CERTIFICATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_CERTIFICATE_STATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_CERTIFICATE_SUBJECT_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_CERTIFICATE_THUMBPRINT_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_COMMON_CATEGORY \" +\n \"SYSRES_CONST_USER_COMMON_CATEGORY_CODE \" +\n \"SYSRES_CONST_USER_FULL_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_GROUP_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_LOGIN_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_REMOTE_CONTROLLER_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_REMOTE_SYSTEM_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_RIGHTS_T_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_SERVER_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_SERVICE_CATEGORY \" +\n \"SYSRES_CONST_USER_SERVICE_CATEGORY_CODE \" +\n \"SYSRES_CONST_USER_STATUS_ADMINISTRATOR_CODE \" +\n \"SYSRES_CONST_USER_STATUS_ADMINISTRATOR_NAME \" +\n \"SYSRES_CONST_USER_STATUS_DEVELOPER_CODE \" +\n \"SYSRES_CONST_USER_STATUS_DEVELOPER_NAME \" +\n \"SYSRES_CONST_USER_STATUS_DISABLED_CODE \" +\n \"SYSRES_CONST_USER_STATUS_DISABLED_NAME \" +\n \"SYSRES_CONST_USER_STATUS_SYSTEM_DEVELOPER_CODE \" +\n \"SYSRES_CONST_USER_STATUS_USER_CODE \" +\n \"SYSRES_CONST_USER_STATUS_USER_NAME \" +\n \"SYSRES_CONST_USER_STATUS_USER_NAME_DEPRECATED \" +\n \"SYSRES_CONST_USER_TYPE_FIELD_VALUE_USER \" +\n \"SYSRES_CONST_USER_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_CONTROLLER_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_IS_MAIN_SERVER_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_REFERENCE_CODE \" +\n \"SYSRES_CONST_USERS_REGISTRATION_CERTIFICATES_ACTION_NAME \" +\n \"SYSRES_CONST_USERS_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_SYSTEM_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_USER_ACCESS_RIGHTS_TYPR_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_USER_AUTHENTICATION_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_USER_COMPONENT_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_USER_GROUP_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_VIEW_CERTIFICATES_ACTION_NAME \" +\n \"SYSRES_CONST_VIEW_DEFAULT_CODE \" +\n \"SYSRES_CONST_VIEW_DEFAULT_NAME \" +\n \"SYSRES_CONST_VIEWER_REQUISITE_CODE \" +\n \"SYSRES_CONST_WAITING_BLOCK_DESCRIPTION \" +\n \"SYSRES_CONST_WIZARD_FORM_LABEL_TEST_STRING \" +\n \"SYSRES_CONST_WIZARD_QUERY_PARAM_HEIGHT_ETALON_STRING \" +\n \"SYSRES_CONST_WIZARD_REFERENCE_COMMENT_REQUISITE_CODE \" +\n \"SYSRES_CONST_WORK_RULES_DESCRIPTION_REQUISITE_CODE \" +\n \"SYSRES_CONST_WORK_TIME_CALENDAR_REFERENCE_CODE \" +\n \"SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE \" +\n \"SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE \" +\n \"SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE_RUS \" +\n \"SYSRES_CONST_WORK_WORKFLOW_SOFT_ROUTE_TYPE_VALUE_CODE_RUS \" +\n \"SYSRES_CONST_WORKFLOW_ROUTE_TYPR_HARD \" +\n \"SYSRES_CONST_WORKFLOW_ROUTE_TYPR_SOFT \" +\n \"SYSRES_CONST_XML_ENCODING \" +\n \"SYSRES_CONST_XREC_STAT_REQUISITE_CODE \" +\n \"SYSRES_CONST_XRECID_FIELD_NAME \" +\n \"SYSRES_CONST_YES \" +\n \"SYSRES_CONST_YES_NO_2_REQUISITE_CODE \" +\n \"SYSRES_CONST_YES_NO_REQUISITE_CODE \" +\n \"SYSRES_CONST_YES_NO_T_REF_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_YES_PICK_VALUE \" +\n \"SYSRES_CONST_YES_VALUE \";\n\n // Base constant\n const base_constants = \"CR FALSE nil NO_VALUE NULL TAB TRUE YES_VALUE \";\n\n // Base group name\n const base_group_name_constants =\n \"ADMINISTRATORS_GROUP_NAME CUSTOMIZERS_GROUP_NAME DEVELOPERS_GROUP_NAME SERVICE_USERS_GROUP_NAME \";\n\n // Decision block properties\n const decision_block_properties_constants =\n \"DECISION_BLOCK_FIRST_OPERAND_PROPERTY DECISION_BLOCK_NAME_PROPERTY DECISION_BLOCK_OPERATION_PROPERTY \" +\n \"DECISION_BLOCK_RESULT_TYPE_PROPERTY DECISION_BLOCK_SECOND_OPERAND_PROPERTY \";\n\n // File extension\n const file_extension_constants =\n \"ANY_FILE_EXTENTION COMPRESSED_DOCUMENT_EXTENSION EXTENDED_DOCUMENT_EXTENSION \" +\n \"SHORT_COMPRESSED_DOCUMENT_EXTENSION SHORT_EXTENDED_DOCUMENT_EXTENSION \";\n\n // Job block properties\n const job_block_properties_constants =\n \"JOB_BLOCK_ABORT_DEADLINE_PROPERTY \" +\n \"JOB_BLOCK_AFTER_FINISH_EVENT \" +\n \"JOB_BLOCK_AFTER_QUERY_PARAMETERS_EVENT \" +\n \"JOB_BLOCK_ATTACHMENT_PROPERTY \" +\n \"JOB_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY \" +\n \"JOB_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY \" +\n \"JOB_BLOCK_BEFORE_QUERY_PARAMETERS_EVENT \" +\n \"JOB_BLOCK_BEFORE_START_EVENT \" +\n \"JOB_BLOCK_CREATED_JOBS_PROPERTY \" +\n \"JOB_BLOCK_DEADLINE_PROPERTY \" +\n \"JOB_BLOCK_EXECUTION_RESULTS_PROPERTY \" +\n \"JOB_BLOCK_IS_PARALLEL_PROPERTY \" +\n \"JOB_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY \" +\n \"JOB_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY \" +\n \"JOB_BLOCK_JOB_TEXT_PROPERTY \" +\n \"JOB_BLOCK_NAME_PROPERTY \" +\n \"JOB_BLOCK_NEED_SIGN_ON_PERFORM_PROPERTY \" +\n \"JOB_BLOCK_PERFORMER_PROPERTY \" +\n \"JOB_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY \" +\n \"JOB_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY \" +\n \"JOB_BLOCK_SUBJECT_PROPERTY \";\n\n // Language code\n const language_code_constants = \"ENGLISH_LANGUAGE_CODE RUSSIAN_LANGUAGE_CODE \";\n\n // Launching external applications\n const launching_external_applications_constants =\n \"smHidden smMaximized smMinimized smNormal wmNo wmYes \";\n\n // Link kind\n const link_kind_constants =\n \"COMPONENT_TOKEN_LINK_KIND \" +\n \"DOCUMENT_LINK_KIND \" +\n \"EDOCUMENT_LINK_KIND \" +\n \"FOLDER_LINK_KIND \" +\n \"JOB_LINK_KIND \" +\n \"REFERENCE_LINK_KIND \" +\n \"TASK_LINK_KIND \";\n\n // Lock type\n const lock_type_constants =\n \"COMPONENT_TOKEN_LOCK_TYPE EDOCUMENT_VERSION_LOCK_TYPE \";\n\n // Monitor block properties\n const monitor_block_properties_constants =\n \"MONITOR_BLOCK_AFTER_FINISH_EVENT \" +\n \"MONITOR_BLOCK_BEFORE_START_EVENT \" +\n \"MONITOR_BLOCK_DEADLINE_PROPERTY \" +\n \"MONITOR_BLOCK_INTERVAL_PROPERTY \" +\n \"MONITOR_BLOCK_INTERVAL_TYPE_PROPERTY \" +\n \"MONITOR_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY \" +\n \"MONITOR_BLOCK_NAME_PROPERTY \" +\n \"MONITOR_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY \" +\n \"MONITOR_BLOCK_SEARCH_SCRIPT_PROPERTY \";\n\n // Notice block properties\n const notice_block_properties_constants =\n \"NOTICE_BLOCK_AFTER_FINISH_EVENT \" +\n \"NOTICE_BLOCK_ATTACHMENT_PROPERTY \" +\n \"NOTICE_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY \" +\n \"NOTICE_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY \" +\n \"NOTICE_BLOCK_BEFORE_START_EVENT \" +\n \"NOTICE_BLOCK_CREATED_NOTICES_PROPERTY \" +\n \"NOTICE_BLOCK_DEADLINE_PROPERTY \" +\n \"NOTICE_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY \" +\n \"NOTICE_BLOCK_NAME_PROPERTY \" +\n \"NOTICE_BLOCK_NOTICE_TEXT_PROPERTY \" +\n \"NOTICE_BLOCK_PERFORMER_PROPERTY \" +\n \"NOTICE_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY \" +\n \"NOTICE_BLOCK_SUBJECT_PROPERTY \";\n\n // Object events\n const object_events_constants =\n \"dseAfterCancel \" +\n \"dseAfterClose \" +\n \"dseAfterDelete \" +\n \"dseAfterDeleteOutOfTransaction \" +\n \"dseAfterInsert \" +\n \"dseAfterOpen \" +\n \"dseAfterScroll \" +\n \"dseAfterUpdate \" +\n \"dseAfterUpdateOutOfTransaction \" +\n \"dseBeforeCancel \" +\n \"dseBeforeClose \" +\n \"dseBeforeDelete \" +\n \"dseBeforeDetailUpdate \" +\n \"dseBeforeInsert \" +\n \"dseBeforeOpen \" +\n \"dseBeforeUpdate \" +\n \"dseOnAnyRequisiteChange \" +\n \"dseOnCloseRecord \" +\n \"dseOnDeleteError \" +\n \"dseOnOpenRecord \" +\n \"dseOnPrepareUpdate \" +\n \"dseOnUpdateError \" +\n \"dseOnUpdateRatifiedRecord \" +\n \"dseOnValidDelete \" +\n \"dseOnValidUpdate \" +\n \"reOnChange \" +\n \"reOnChangeValues \" +\n \"SELECTION_BEGIN_ROUTE_EVENT \" +\n \"SELECTION_END_ROUTE_EVENT \";\n\n // Object params\n const object_params_constants =\n \"CURRENT_PERIOD_IS_REQUIRED \" +\n \"PREVIOUS_CARD_TYPE_NAME \" +\n \"SHOW_RECORD_PROPERTIES_FORM \";\n\n // Other\n const other_constants =\n \"ACCESS_RIGHTS_SETTING_DIALOG_CODE \" +\n \"ADMINISTRATOR_USER_CODE \" +\n \"ANALYTIC_REPORT_TYPE \" +\n \"asrtHideLocal \" +\n \"asrtHideRemote \" +\n \"CALCULATED_ROLE_TYPE_CODE \" +\n \"COMPONENTS_REFERENCE_DEVELOPER_VIEW_CODE \" +\n \"DCTS_TEST_PROTOCOLS_FOLDER_PATH \" +\n \"E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED \" +\n \"E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED_BY_USER \" +\n \"E_EDOC_VERSION_ALREDY_SIGNED \" +\n \"E_EDOC_VERSION_ALREDY_SIGNED_BY_USER \" +\n \"EDOC_TYPES_CODE_REQUISITE_FIELD_NAME \" +\n \"EDOCUMENTS_ALIAS_NAME \" +\n \"FILES_FOLDER_PATH \" +\n \"FILTER_OPERANDS_DELIMITER \" +\n \"FILTER_OPERATIONS_DELIMITER \" +\n \"FORMCARD_NAME \" +\n \"FORMLIST_NAME \" +\n \"GET_EXTENDED_DOCUMENT_EXTENSION_CREATION_MODE \" +\n \"GET_EXTENDED_DOCUMENT_EXTENSION_IMPORT_MODE \" +\n \"INTEGRATED_REPORT_TYPE \" +\n \"IS_BUILDER_APPLICATION_ROLE \" +\n \"IS_BUILDER_APPLICATION_ROLE2 \" +\n \"IS_BUILDER_USERS \" +\n \"ISBSYSDEV \" +\n \"LOG_FOLDER_PATH \" +\n \"mbCancel \" +\n \"mbNo \" +\n \"mbNoToAll \" +\n \"mbOK \" +\n \"mbYes \" +\n \"mbYesToAll \" +\n \"MEMORY_DATASET_DESRIPTIONS_FILENAME \" +\n \"mrNo \" +\n \"mrNoToAll \" +\n \"mrYes \" +\n \"mrYesToAll \" +\n \"MULTIPLE_SELECT_DIALOG_CODE \" +\n \"NONOPERATING_RECORD_FLAG_FEMININE \" +\n \"NONOPERATING_RECORD_FLAG_MASCULINE \" +\n \"OPERATING_RECORD_FLAG_FEMININE \" +\n \"OPERATING_RECORD_FLAG_MASCULINE \" +\n \"PROFILING_SETTINGS_COMMON_SETTINGS_CODE_VALUE \" +\n \"PROGRAM_INITIATED_LOOKUP_ACTION \" +\n \"ratDelete \" +\n \"ratEdit \" +\n \"ratInsert \" +\n \"REPORT_TYPE \" +\n \"REQUIRED_PICK_VALUES_VARIABLE \" +\n \"rmCard \" +\n \"rmList \" +\n \"SBRTE_PROGID_DEV \" +\n \"SBRTE_PROGID_RELEASE \" +\n \"STATIC_ROLE_TYPE_CODE \" +\n \"SUPPRESS_EMPTY_TEMPLATE_CREATION \" +\n \"SYSTEM_USER_CODE \" +\n \"UPDATE_DIALOG_DATASET \" +\n \"USED_IN_OBJECT_HINT_PARAM \" +\n \"USER_INITIATED_LOOKUP_ACTION \" +\n \"USER_NAME_FORMAT \" +\n \"USER_SELECTION_RESTRICTIONS \" +\n \"WORKFLOW_TEST_PROTOCOLS_FOLDER_PATH \" +\n \"ELS_SUBTYPE_CONTROL_NAME \" +\n \"ELS_FOLDER_KIND_CONTROL_NAME \" +\n \"REPEAT_PROCESS_CURRENT_OBJECT_EXCEPTION_NAME \";\n\n // Privileges\n const privileges_constants =\n \"PRIVILEGE_COMPONENT_FULL_ACCESS \" +\n \"PRIVILEGE_DEVELOPMENT_EXPORT \" +\n \"PRIVILEGE_DEVELOPMENT_IMPORT \" +\n \"PRIVILEGE_DOCUMENT_DELETE \" +\n \"PRIVILEGE_ESD \" +\n \"PRIVILEGE_FOLDER_DELETE \" +\n \"PRIVILEGE_MANAGE_ACCESS_RIGHTS \" +\n \"PRIVILEGE_MANAGE_REPLICATION \" +\n \"PRIVILEGE_MANAGE_SESSION_SERVER \" +\n \"PRIVILEGE_OBJECT_FULL_ACCESS \" +\n \"PRIVILEGE_OBJECT_VIEW \" +\n \"PRIVILEGE_RESERVE_LICENSE \" +\n \"PRIVILEGE_SYSTEM_CUSTOMIZE \" +\n \"PRIVILEGE_SYSTEM_DEVELOP \" +\n \"PRIVILEGE_SYSTEM_INSTALL \" +\n \"PRIVILEGE_TASK_DELETE \" +\n \"PRIVILEGE_USER_PLUGIN_SETTINGS_CUSTOMIZE \" +\n \"PRIVILEGES_PSEUDOREFERENCE_CODE \";\n\n // Pseudoreference code\n const pseudoreference_code_constants =\n \"ACCESS_TYPES_PSEUDOREFERENCE_CODE \" +\n \"ALL_AVAILABLE_COMPONENTS_PSEUDOREFERENCE_CODE \" +\n \"ALL_AVAILABLE_PRIVILEGES_PSEUDOREFERENCE_CODE \" +\n \"ALL_REPLICATE_COMPONENTS_PSEUDOREFERENCE_CODE \" +\n \"AVAILABLE_DEVELOPERS_COMPONENTS_PSEUDOREFERENCE_CODE \" +\n \"COMPONENTS_PSEUDOREFERENCE_CODE \" +\n \"FILTRATER_SETTINGS_CONFLICTS_PSEUDOREFERENCE_CODE \" +\n \"GROUPS_PSEUDOREFERENCE_CODE \" +\n \"RECEIVE_PROTOCOL_PSEUDOREFERENCE_CODE \" +\n \"REFERENCE_REQUISITE_PSEUDOREFERENCE_CODE \" +\n \"REFERENCE_REQUISITES_PSEUDOREFERENCE_CODE \" +\n \"REFTYPES_PSEUDOREFERENCE_CODE \" +\n \"REPLICATION_SEANCES_DIARY_PSEUDOREFERENCE_CODE \" +\n \"SEND_PROTOCOL_PSEUDOREFERENCE_CODE \" +\n \"SUBSTITUTES_PSEUDOREFERENCE_CODE \" +\n \"SYSTEM_SETTINGS_PSEUDOREFERENCE_CODE \" +\n \"UNITS_PSEUDOREFERENCE_CODE \" +\n \"USERS_PSEUDOREFERENCE_CODE \" +\n \"VIEWERS_PSEUDOREFERENCE_CODE \";\n\n // Requisite ISBCertificateType values\n const requisite_ISBCertificateType_values_constants =\n \"CERTIFICATE_TYPE_ENCRYPT \" +\n \"CERTIFICATE_TYPE_SIGN \" +\n \"CERTIFICATE_TYPE_SIGN_AND_ENCRYPT \";\n\n // Requisite ISBEDocStorageType values\n const requisite_ISBEDocStorageType_values_constants =\n \"STORAGE_TYPE_FILE \" +\n \"STORAGE_TYPE_NAS_CIFS \" +\n \"STORAGE_TYPE_SAPERION \" +\n \"STORAGE_TYPE_SQL_SERVER \";\n\n // Requisite CompType2 values\n const requisite_compType2_values_constants =\n \"COMPTYPE2_REQUISITE_DOCUMENTS_VALUE \" +\n \"COMPTYPE2_REQUISITE_TASKS_VALUE \" +\n \"COMPTYPE2_REQUISITE_FOLDERS_VALUE \" +\n \"COMPTYPE2_REQUISITE_REFERENCES_VALUE \";\n\n // Requisite name\n const requisite_name_constants =\n \"SYSREQ_CODE \" +\n \"SYSREQ_COMPTYPE2 \" +\n \"SYSREQ_CONST_AVAILABLE_FOR_WEB \" +\n \"SYSREQ_CONST_COMMON_CODE \" +\n \"SYSREQ_CONST_COMMON_VALUE \" +\n \"SYSREQ_CONST_FIRM_CODE \" +\n \"SYSREQ_CONST_FIRM_STATUS \" +\n \"SYSREQ_CONST_FIRM_VALUE \" +\n \"SYSREQ_CONST_SERVER_STATUS \" +\n \"SYSREQ_CONTENTS \" +\n \"SYSREQ_DATE_OPEN \" +\n \"SYSREQ_DATE_CLOSE \" +\n \"SYSREQ_DESCRIPTION \" +\n \"SYSREQ_DESCRIPTION_LOCALIZE_ID \" +\n \"SYSREQ_DOUBLE \" +\n \"SYSREQ_EDOC_ACCESS_TYPE \" +\n \"SYSREQ_EDOC_AUTHOR \" +\n \"SYSREQ_EDOC_CREATED \" +\n \"SYSREQ_EDOC_DELEGATE_RIGHTS_REQUISITE_CODE \" +\n \"SYSREQ_EDOC_EDITOR \" +\n \"SYSREQ_EDOC_ENCODE_TYPE \" +\n \"SYSREQ_EDOC_ENCRYPTION_PLUGIN_NAME \" +\n \"SYSREQ_EDOC_ENCRYPTION_PLUGIN_VERSION \" +\n \"SYSREQ_EDOC_EXPORT_DATE \" +\n \"SYSREQ_EDOC_EXPORTER \" +\n \"SYSREQ_EDOC_KIND \" +\n \"SYSREQ_EDOC_LIFE_STAGE_NAME \" +\n \"SYSREQ_EDOC_LOCKED_FOR_SERVER_CODE \" +\n \"SYSREQ_EDOC_MODIFIED \" +\n \"SYSREQ_EDOC_NAME \" +\n \"SYSREQ_EDOC_NOTE \" +\n \"SYSREQ_EDOC_QUALIFIED_ID \" +\n \"SYSREQ_EDOC_SESSION_KEY \" +\n \"SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_NAME \" +\n \"SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_VERSION \" +\n \"SYSREQ_EDOC_SIGNATURE_TYPE \" +\n \"SYSREQ_EDOC_SIGNED \" +\n \"SYSREQ_EDOC_STORAGE \" +\n \"SYSREQ_EDOC_STORAGES_ARCHIVE_STORAGE \" +\n \"SYSREQ_EDOC_STORAGES_CHECK_RIGHTS \" +\n \"SYSREQ_EDOC_STORAGES_COMPUTER_NAME \" +\n \"SYSREQ_EDOC_STORAGES_EDIT_IN_STORAGE \" +\n \"SYSREQ_EDOC_STORAGES_EXECUTIVE_STORAGE \" +\n \"SYSREQ_EDOC_STORAGES_FUNCTION \" +\n \"SYSREQ_EDOC_STORAGES_INITIALIZED \" +\n \"SYSREQ_EDOC_STORAGES_LOCAL_PATH \" +\n \"SYSREQ_EDOC_STORAGES_SAPERION_DATABASE_NAME \" +\n \"SYSREQ_EDOC_STORAGES_SEARCH_BY_TEXT \" +\n \"SYSREQ_EDOC_STORAGES_SERVER_NAME \" +\n \"SYSREQ_EDOC_STORAGES_SHARED_SOURCE_NAME \" +\n \"SYSREQ_EDOC_STORAGES_TYPE \" +\n \"SYSREQ_EDOC_TEXT_MODIFIED \" +\n \"SYSREQ_EDOC_TYPE_ACT_CODE \" +\n \"SYSREQ_EDOC_TYPE_ACT_DESCRIPTION \" +\n \"SYSREQ_EDOC_TYPE_ACT_DESCRIPTION_LOCALIZE_ID \" +\n \"SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE \" +\n \"SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE_EXISTS \" +\n \"SYSREQ_EDOC_TYPE_ACT_SECTION \" +\n \"SYSREQ_EDOC_TYPE_ADD_PARAMS \" +\n \"SYSREQ_EDOC_TYPE_COMMENT \" +\n \"SYSREQ_EDOC_TYPE_EVENT_TEXT \" +\n \"SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR \" +\n \"SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID \" +\n \"SYSREQ_EDOC_TYPE_NAME_LOCALIZE_ID \" +\n \"SYSREQ_EDOC_TYPE_NUMERATION_METHOD \" +\n \"SYSREQ_EDOC_TYPE_PSEUDO_REQUISITE_CODE \" +\n \"SYSREQ_EDOC_TYPE_REQ_CODE \" +\n \"SYSREQ_EDOC_TYPE_REQ_DESCRIPTION \" +\n \"SYSREQ_EDOC_TYPE_REQ_DESCRIPTION_LOCALIZE_ID \" +\n \"SYSREQ_EDOC_TYPE_REQ_IS_LEADING \" +\n \"SYSREQ_EDOC_TYPE_REQ_IS_REQUIRED \" +\n \"SYSREQ_EDOC_TYPE_REQ_NUMBER \" +\n \"SYSREQ_EDOC_TYPE_REQ_ON_CHANGE \" +\n \"SYSREQ_EDOC_TYPE_REQ_ON_CHANGE_EXISTS \" +\n \"SYSREQ_EDOC_TYPE_REQ_ON_SELECT \" +\n \"SYSREQ_EDOC_TYPE_REQ_ON_SELECT_KIND \" +\n \"SYSREQ_EDOC_TYPE_REQ_SECTION \" +\n \"SYSREQ_EDOC_TYPE_VIEW_CARD \" +\n \"SYSREQ_EDOC_TYPE_VIEW_CODE \" +\n \"SYSREQ_EDOC_TYPE_VIEW_COMMENT \" +\n \"SYSREQ_EDOC_TYPE_VIEW_IS_MAIN \" +\n \"SYSREQ_EDOC_TYPE_VIEW_NAME \" +\n \"SYSREQ_EDOC_TYPE_VIEW_NAME_LOCALIZE_ID \" +\n \"SYSREQ_EDOC_VERSION_AUTHOR \" +\n \"SYSREQ_EDOC_VERSION_CRC \" +\n \"SYSREQ_EDOC_VERSION_DATA \" +\n \"SYSREQ_EDOC_VERSION_EDITOR \" +\n \"SYSREQ_EDOC_VERSION_EXPORT_DATE \" +\n \"SYSREQ_EDOC_VERSION_EXPORTER \" +\n \"SYSREQ_EDOC_VERSION_HIDDEN \" +\n \"SYSREQ_EDOC_VERSION_LIFE_STAGE \" +\n \"SYSREQ_EDOC_VERSION_MODIFIED \" +\n \"SYSREQ_EDOC_VERSION_NOTE \" +\n \"SYSREQ_EDOC_VERSION_SIGNATURE_TYPE \" +\n \"SYSREQ_EDOC_VERSION_SIGNED \" +\n \"SYSREQ_EDOC_VERSION_SIZE \" +\n \"SYSREQ_EDOC_VERSION_SOURCE \" +\n \"SYSREQ_EDOC_VERSION_TEXT_MODIFIED \" +\n \"SYSREQ_EDOCKIND_DEFAULT_VERSION_STATE_CODE \" +\n \"SYSREQ_FOLDER_KIND \" +\n \"SYSREQ_FUNC_CATEGORY \" +\n \"SYSREQ_FUNC_COMMENT \" +\n \"SYSREQ_FUNC_GROUP \" +\n \"SYSREQ_FUNC_GROUP_COMMENT \" +\n \"SYSREQ_FUNC_GROUP_NUMBER \" +\n \"SYSREQ_FUNC_HELP \" +\n \"SYSREQ_FUNC_PARAM_DEF_VALUE \" +\n \"SYSREQ_FUNC_PARAM_IDENT \" +\n \"SYSREQ_FUNC_PARAM_NUMBER \" +\n \"SYSREQ_FUNC_PARAM_TYPE \" +\n \"SYSREQ_FUNC_TEXT \" +\n \"SYSREQ_GROUP_CATEGORY \" +\n \"SYSREQ_ID \" +\n \"SYSREQ_LAST_UPDATE \" +\n \"SYSREQ_LEADER_REFERENCE \" +\n \"SYSREQ_LINE_NUMBER \" +\n \"SYSREQ_MAIN_RECORD_ID \" +\n \"SYSREQ_NAME \" +\n \"SYSREQ_NAME_LOCALIZE_ID \" +\n \"SYSREQ_NOTE \" +\n \"SYSREQ_ORIGINAL_RECORD \" +\n \"SYSREQ_OUR_FIRM \" +\n \"SYSREQ_PROFILING_SETTINGS_BATCH_LOGING \" +\n \"SYSREQ_PROFILING_SETTINGS_BATCH_SIZE \" +\n \"SYSREQ_PROFILING_SETTINGS_PROFILING_ENABLED \" +\n \"SYSREQ_PROFILING_SETTINGS_SQL_PROFILING_ENABLED \" +\n \"SYSREQ_PROFILING_SETTINGS_START_LOGGED \" +\n \"SYSREQ_RECORD_STATUS \" +\n \"SYSREQ_REF_REQ_FIELD_NAME \" +\n \"SYSREQ_REF_REQ_FORMAT \" +\n \"SYSREQ_REF_REQ_GENERATED \" +\n \"SYSREQ_REF_REQ_LENGTH \" +\n \"SYSREQ_REF_REQ_PRECISION \" +\n \"SYSREQ_REF_REQ_REFERENCE \" +\n \"SYSREQ_REF_REQ_SECTION \" +\n \"SYSREQ_REF_REQ_STORED \" +\n \"SYSREQ_REF_REQ_TOKENS \" +\n \"SYSREQ_REF_REQ_TYPE \" +\n \"SYSREQ_REF_REQ_VIEW \" +\n \"SYSREQ_REF_TYPE_ACT_CODE \" +\n \"SYSREQ_REF_TYPE_ACT_DESCRIPTION \" +\n \"SYSREQ_REF_TYPE_ACT_DESCRIPTION_LOCALIZE_ID \" +\n \"SYSREQ_REF_TYPE_ACT_ON_EXECUTE \" +\n \"SYSREQ_REF_TYPE_ACT_ON_EXECUTE_EXISTS \" +\n \"SYSREQ_REF_TYPE_ACT_SECTION \" +\n \"SYSREQ_REF_TYPE_ADD_PARAMS \" +\n \"SYSREQ_REF_TYPE_COMMENT \" +\n \"SYSREQ_REF_TYPE_COMMON_SETTINGS \" +\n \"SYSREQ_REF_TYPE_DISPLAY_REQUISITE_NAME \" +\n \"SYSREQ_REF_TYPE_EVENT_TEXT \" +\n \"SYSREQ_REF_TYPE_MAIN_LEADING_REF \" +\n \"SYSREQ_REF_TYPE_NAME_IN_SINGULAR \" +\n \"SYSREQ_REF_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID \" +\n \"SYSREQ_REF_TYPE_NAME_LOCALIZE_ID \" +\n \"SYSREQ_REF_TYPE_NUMERATION_METHOD \" +\n \"SYSREQ_REF_TYPE_REQ_CODE \" +\n \"SYSREQ_REF_TYPE_REQ_DESCRIPTION \" +\n \"SYSREQ_REF_TYPE_REQ_DESCRIPTION_LOCALIZE_ID \" +\n \"SYSREQ_REF_TYPE_REQ_IS_CONTROL \" +\n \"SYSREQ_REF_TYPE_REQ_IS_FILTER \" +\n \"SYSREQ_REF_TYPE_REQ_IS_LEADING \" +\n \"SYSREQ_REF_TYPE_REQ_IS_REQUIRED \" +\n \"SYSREQ_REF_TYPE_REQ_NUMBER \" +\n \"SYSREQ_REF_TYPE_REQ_ON_CHANGE \" +\n \"SYSREQ_REF_TYPE_REQ_ON_CHANGE_EXISTS \" +\n \"SYSREQ_REF_TYPE_REQ_ON_SELECT \" +\n \"SYSREQ_REF_TYPE_REQ_ON_SELECT_KIND \" +\n \"SYSREQ_REF_TYPE_REQ_SECTION \" +\n \"SYSREQ_REF_TYPE_VIEW_CARD \" +\n \"SYSREQ_REF_TYPE_VIEW_CODE \" +\n \"SYSREQ_REF_TYPE_VIEW_COMMENT \" +\n \"SYSREQ_REF_TYPE_VIEW_IS_MAIN \" +\n \"SYSREQ_REF_TYPE_VIEW_NAME \" +\n \"SYSREQ_REF_TYPE_VIEW_NAME_LOCALIZE_ID \" +\n \"SYSREQ_REFERENCE_TYPE_ID \" +\n \"SYSREQ_STATE \" +\n \"SYSREQ_STATЕ \" +\n \"SYSREQ_SYSTEM_SETTINGS_VALUE \" +\n \"SYSREQ_TYPE \" +\n \"SYSREQ_UNIT \" +\n \"SYSREQ_UNIT_ID \" +\n \"SYSREQ_USER_GROUPS_GROUP_FULL_NAME \" +\n \"SYSREQ_USER_GROUPS_GROUP_NAME \" +\n \"SYSREQ_USER_GROUPS_GROUP_SERVER_NAME \" +\n \"SYSREQ_USERS_ACCESS_RIGHTS \" +\n \"SYSREQ_USERS_AUTHENTICATION \" +\n \"SYSREQ_USERS_CATEGORY \" +\n \"SYSREQ_USERS_COMPONENT \" +\n \"SYSREQ_USERS_COMPONENT_USER_IS_PUBLIC \" +\n \"SYSREQ_USERS_DOMAIN \" +\n \"SYSREQ_USERS_FULL_USER_NAME \" +\n \"SYSREQ_USERS_GROUP \" +\n \"SYSREQ_USERS_IS_MAIN_SERVER \" +\n \"SYSREQ_USERS_LOGIN \" +\n \"SYSREQ_USERS_REFERENCE_USER_IS_PUBLIC \" +\n \"SYSREQ_USERS_STATUS \" +\n \"SYSREQ_USERS_USER_CERTIFICATE \" +\n \"SYSREQ_USERS_USER_CERTIFICATE_INFO \" +\n \"SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_NAME \" +\n \"SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_VERSION \" +\n \"SYSREQ_USERS_USER_CERTIFICATE_STATE \" +\n \"SYSREQ_USERS_USER_CERTIFICATE_SUBJECT_NAME \" +\n \"SYSREQ_USERS_USER_CERTIFICATE_THUMBPRINT \" +\n \"SYSREQ_USERS_USER_DEFAULT_CERTIFICATE \" +\n \"SYSREQ_USERS_USER_DESCRIPTION \" +\n \"SYSREQ_USERS_USER_GLOBAL_NAME \" +\n \"SYSREQ_USERS_USER_LOGIN \" +\n \"SYSREQ_USERS_USER_MAIN_SERVER \" +\n \"SYSREQ_USERS_USER_TYPE \" +\n \"SYSREQ_WORK_RULES_FOLDER_ID \";\n\n // Result\n const result_constants = \"RESULT_VAR_NAME RESULT_VAR_NAME_ENG \";\n\n // Rule identification\n const rule_identification_constants =\n \"AUTO_NUMERATION_RULE_ID \" +\n \"CANT_CHANGE_ID_REQUISITE_RULE_ID \" +\n \"CANT_CHANGE_OURFIRM_REQUISITE_RULE_ID \" +\n \"CHECK_CHANGING_REFERENCE_RECORD_USE_RULE_ID \" +\n \"CHECK_CODE_REQUISITE_RULE_ID \" +\n \"CHECK_DELETING_REFERENCE_RECORD_USE_RULE_ID \" +\n \"CHECK_FILTRATER_CHANGES_RULE_ID \" +\n \"CHECK_RECORD_INTERVAL_RULE_ID \" +\n \"CHECK_REFERENCE_INTERVAL_RULE_ID \" +\n \"CHECK_REQUIRED_DATA_FULLNESS_RULE_ID \" +\n \"CHECK_REQUIRED_REQUISITES_FULLNESS_RULE_ID \" +\n \"MAKE_RECORD_UNRATIFIED_RULE_ID \" +\n \"RESTORE_AUTO_NUMERATION_RULE_ID \" +\n \"SET_FIRM_CONTEXT_FROM_RECORD_RULE_ID \" +\n \"SET_FIRST_RECORD_IN_LIST_FORM_RULE_ID \" +\n \"SET_IDSPS_VALUE_RULE_ID \" +\n \"SET_NEXT_CODE_VALUE_RULE_ID \" +\n \"SET_OURFIRM_BOUNDS_RULE_ID \" +\n \"SET_OURFIRM_REQUISITE_RULE_ID \";\n\n // Script block properties\n const script_block_properties_constants =\n \"SCRIPT_BLOCK_AFTER_FINISH_EVENT \" +\n \"SCRIPT_BLOCK_BEFORE_START_EVENT \" +\n \"SCRIPT_BLOCK_EXECUTION_RESULTS_PROPERTY \" +\n \"SCRIPT_BLOCK_NAME_PROPERTY \" +\n \"SCRIPT_BLOCK_SCRIPT_PROPERTY \";\n\n // Subtask block properties\n const subtask_block_properties_constants =\n \"SUBTASK_BLOCK_ABORT_DEADLINE_PROPERTY \" +\n \"SUBTASK_BLOCK_AFTER_FINISH_EVENT \" +\n \"SUBTASK_BLOCK_ASSIGN_PARAMS_EVENT \" +\n \"SUBTASK_BLOCK_ATTACHMENTS_PROPERTY \" +\n \"SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY \" +\n \"SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY \" +\n \"SUBTASK_BLOCK_BEFORE_START_EVENT \" +\n \"SUBTASK_BLOCK_CREATED_TASK_PROPERTY \" +\n \"SUBTASK_BLOCK_CREATION_EVENT \" +\n \"SUBTASK_BLOCK_DEADLINE_PROPERTY \" +\n \"SUBTASK_BLOCK_IMPORTANCE_PROPERTY \" +\n \"SUBTASK_BLOCK_INITIATOR_PROPERTY \" +\n \"SUBTASK_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY \" +\n \"SUBTASK_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY \" +\n \"SUBTASK_BLOCK_JOBS_TYPE_PROPERTY \" +\n \"SUBTASK_BLOCK_NAME_PROPERTY \" +\n \"SUBTASK_BLOCK_PARALLEL_ROUTE_PROPERTY \" +\n \"SUBTASK_BLOCK_PERFORMERS_PROPERTY \" +\n \"SUBTASK_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY \" +\n \"SUBTASK_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY \" +\n \"SUBTASK_BLOCK_REQUIRE_SIGN_PROPERTY \" +\n \"SUBTASK_BLOCK_STANDARD_ROUTE_PROPERTY \" +\n \"SUBTASK_BLOCK_START_EVENT \" +\n \"SUBTASK_BLOCK_STEP_CONTROL_PROPERTY \" +\n \"SUBTASK_BLOCK_SUBJECT_PROPERTY \" +\n \"SUBTASK_BLOCK_TASK_CONTROL_PROPERTY \" +\n \"SUBTASK_BLOCK_TEXT_PROPERTY \" +\n \"SUBTASK_BLOCK_UNLOCK_ATTACHMENTS_ON_STOP_PROPERTY \" +\n \"SUBTASK_BLOCK_USE_STANDARD_ROUTE_PROPERTY \" +\n \"SUBTASK_BLOCK_WAIT_FOR_TASK_COMPLETE_PROPERTY \";\n\n // System component\n const system_component_constants =\n \"SYSCOMP_CONTROL_JOBS \" +\n \"SYSCOMP_FOLDERS \" +\n \"SYSCOMP_JOBS \" +\n \"SYSCOMP_NOTICES \" +\n \"SYSCOMP_TASKS \";\n\n // System dialogs\n const system_dialogs_constants =\n \"SYSDLG_CREATE_EDOCUMENT \" +\n \"SYSDLG_CREATE_EDOCUMENT_VERSION \" +\n \"SYSDLG_CURRENT_PERIOD \" +\n \"SYSDLG_EDIT_FUNCTION_HELP \" +\n \"SYSDLG_EDOCUMENT_KINDS_FOR_TEMPLATE \" +\n \"SYSDLG_EXPORT_MULTIPLE_EDOCUMENTS \" +\n \"SYSDLG_EXPORT_SINGLE_EDOCUMENT \" +\n \"SYSDLG_IMPORT_EDOCUMENT \" +\n \"SYSDLG_MULTIPLE_SELECT \" +\n \"SYSDLG_SETUP_ACCESS_RIGHTS \" +\n \"SYSDLG_SETUP_DEFAULT_RIGHTS \" +\n \"SYSDLG_SETUP_FILTER_CONDITION \" +\n \"SYSDLG_SETUP_SIGN_RIGHTS \" +\n \"SYSDLG_SETUP_TASK_OBSERVERS \" +\n \"SYSDLG_SETUP_TASK_ROUTE \" +\n \"SYSDLG_SETUP_USERS_LIST \" +\n \"SYSDLG_SIGN_EDOCUMENT \" +\n \"SYSDLG_SIGN_MULTIPLE_EDOCUMENTS \";\n\n // System reference names\n const system_reference_names_constants =\n \"SYSREF_ACCESS_RIGHTS_TYPES \" +\n \"SYSREF_ADMINISTRATION_HISTORY \" +\n \"SYSREF_ALL_AVAILABLE_COMPONENTS \" +\n \"SYSREF_ALL_AVAILABLE_PRIVILEGES \" +\n \"SYSREF_ALL_REPLICATING_COMPONENTS \" +\n \"SYSREF_AVAILABLE_DEVELOPERS_COMPONENTS \" +\n \"SYSREF_CALENDAR_EVENTS \" +\n \"SYSREF_COMPONENT_TOKEN_HISTORY \" +\n \"SYSREF_COMPONENT_TOKENS \" +\n \"SYSREF_COMPONENTS \" +\n \"SYSREF_CONSTANTS \" +\n \"SYSREF_DATA_RECEIVE_PROTOCOL \" +\n \"SYSREF_DATA_SEND_PROTOCOL \" +\n \"SYSREF_DIALOGS \" +\n \"SYSREF_DIALOGS_REQUISITES \" +\n \"SYSREF_EDITORS \" +\n \"SYSREF_EDOC_CARDS \" +\n \"SYSREF_EDOC_TYPES \" +\n \"SYSREF_EDOCUMENT_CARD_REQUISITES \" +\n \"SYSREF_EDOCUMENT_CARD_TYPES \" +\n \"SYSREF_EDOCUMENT_CARD_TYPES_REFERENCE \" +\n \"SYSREF_EDOCUMENT_CARDS \" +\n \"SYSREF_EDOCUMENT_HISTORY \" +\n \"SYSREF_EDOCUMENT_KINDS \" +\n \"SYSREF_EDOCUMENT_REQUISITES \" +\n \"SYSREF_EDOCUMENT_SIGNATURES \" +\n \"SYSREF_EDOCUMENT_TEMPLATES \" +\n \"SYSREF_EDOCUMENT_TEXT_STORAGES \" +\n \"SYSREF_EDOCUMENT_VIEWS \" +\n \"SYSREF_FILTERER_SETUP_CONFLICTS \" +\n \"SYSREF_FILTRATER_SETTING_CONFLICTS \" +\n \"SYSREF_FOLDER_HISTORY \" +\n \"SYSREF_FOLDERS \" +\n \"SYSREF_FUNCTION_GROUPS \" +\n \"SYSREF_FUNCTION_PARAMS \" +\n \"SYSREF_FUNCTIONS \" +\n \"SYSREF_JOB_HISTORY \" +\n \"SYSREF_LINKS \" +\n \"SYSREF_LOCALIZATION_DICTIONARY \" +\n \"SYSREF_LOCALIZATION_LANGUAGES \" +\n \"SYSREF_MODULES \" +\n \"SYSREF_PRIVILEGES \" +\n \"SYSREF_RECORD_HISTORY \" +\n \"SYSREF_REFERENCE_REQUISITES \" +\n \"SYSREF_REFERENCE_TYPE_VIEWS \" +\n \"SYSREF_REFERENCE_TYPES \" +\n \"SYSREF_REFERENCES \" +\n \"SYSREF_REFERENCES_REQUISITES \" +\n \"SYSREF_REMOTE_SERVERS \" +\n \"SYSREF_REPLICATION_SESSIONS_LOG \" +\n \"SYSREF_REPLICATION_SESSIONS_PROTOCOL \" +\n \"SYSREF_REPORTS \" +\n \"SYSREF_ROLES \" +\n \"SYSREF_ROUTE_BLOCK_GROUPS \" +\n \"SYSREF_ROUTE_BLOCKS \" +\n \"SYSREF_SCRIPTS \" +\n \"SYSREF_SEARCHES \" +\n \"SYSREF_SERVER_EVENTS \" +\n \"SYSREF_SERVER_EVENTS_HISTORY \" +\n \"SYSREF_STANDARD_ROUTE_GROUPS \" +\n \"SYSREF_STANDARD_ROUTES \" +\n \"SYSREF_STATUSES \" +\n \"SYSREF_SYSTEM_SETTINGS \" +\n \"SYSREF_TASK_HISTORY \" +\n \"SYSREF_TASK_KIND_GROUPS \" +\n \"SYSREF_TASK_KINDS \" +\n \"SYSREF_TASK_RIGHTS \" +\n \"SYSREF_TASK_SIGNATURES \" +\n \"SYSREF_TASKS \" +\n \"SYSREF_UNITS \" +\n \"SYSREF_USER_GROUPS \" +\n \"SYSREF_USER_GROUPS_REFERENCE \" +\n \"SYSREF_USER_SUBSTITUTION \" +\n \"SYSREF_USERS \" +\n \"SYSREF_USERS_REFERENCE \" +\n \"SYSREF_VIEWERS \" +\n \"SYSREF_WORKING_TIME_CALENDARS \";\n\n // Table name\n const table_name_constants =\n \"ACCESS_RIGHTS_TABLE_NAME \" +\n \"EDMS_ACCESS_TABLE_NAME \" +\n \"EDOC_TYPES_TABLE_NAME \";\n\n // Test\n const test_constants =\n \"TEST_DEV_DB_NAME \" +\n \"TEST_DEV_SYSTEM_CODE \" +\n \"TEST_EDMS_DB_NAME \" +\n \"TEST_EDMS_MAIN_CODE \" +\n \"TEST_EDMS_MAIN_DB_NAME \" +\n \"TEST_EDMS_SECOND_CODE \" +\n \"TEST_EDMS_SECOND_DB_NAME \" +\n \"TEST_EDMS_SYSTEM_CODE \" +\n \"TEST_ISB5_MAIN_CODE \" +\n \"TEST_ISB5_SECOND_CODE \" +\n \"TEST_SQL_SERVER_2005_NAME \" +\n \"TEST_SQL_SERVER_NAME \";\n\n // Using the dialog windows\n const using_the_dialog_windows_constants =\n \"ATTENTION_CAPTION \" +\n \"cbsCommandLinks \" +\n \"cbsDefault \" +\n \"CONFIRMATION_CAPTION \" +\n \"ERROR_CAPTION \" +\n \"INFORMATION_CAPTION \" +\n \"mrCancel \" +\n \"mrOk \";\n\n // Using the document\n const using_the_document_constants =\n \"EDOC_VERSION_ACTIVE_STAGE_CODE \" +\n \"EDOC_VERSION_DESIGN_STAGE_CODE \" +\n \"EDOC_VERSION_OBSOLETE_STAGE_CODE \";\n\n // Using the EA and encryption\n const using_the_EA_and_encryption_constants =\n \"cpDataEnciphermentEnabled \" +\n \"cpDigitalSignatureEnabled \" +\n \"cpID \" +\n \"cpIssuer \" +\n \"cpPluginVersion \" +\n \"cpSerial \" +\n \"cpSubjectName \" +\n \"cpSubjSimpleName \" +\n \"cpValidFromDate \" +\n \"cpValidToDate \";\n\n // Using the ISBL-editor\n const using_the_ISBL_editor_constants =\n \"ISBL_SYNTAX \" + \"NO_SYNTAX \" + \"XML_SYNTAX \";\n\n // Wait block properties\n const wait_block_properties_constants =\n \"WAIT_BLOCK_AFTER_FINISH_EVENT \" +\n \"WAIT_BLOCK_BEFORE_START_EVENT \" +\n \"WAIT_BLOCK_DEADLINE_PROPERTY \" +\n \"WAIT_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY \" +\n \"WAIT_BLOCK_NAME_PROPERTY \" +\n \"WAIT_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY \";\n\n // SYSRES Common\n const sysres_common_constants =\n \"SYSRES_COMMON \" +\n \"SYSRES_CONST \" +\n \"SYSRES_MBFUNC \" +\n \"SYSRES_SBDATA \" +\n \"SYSRES_SBGUI \" +\n \"SYSRES_SBINTF \" +\n \"SYSRES_SBREFDSC \" +\n \"SYSRES_SQLERRORS \" +\n \"SYSRES_SYSCOMP \";\n\n // Константы ==> built_in\n const CONSTANTS =\n sysres_constants +\n base_constants +\n base_group_name_constants +\n decision_block_properties_constants +\n file_extension_constants +\n job_block_properties_constants +\n language_code_constants +\n launching_external_applications_constants +\n link_kind_constants +\n lock_type_constants +\n monitor_block_properties_constants +\n notice_block_properties_constants +\n object_events_constants +\n object_params_constants +\n other_constants +\n privileges_constants +\n pseudoreference_code_constants +\n requisite_ISBCertificateType_values_constants +\n requisite_ISBEDocStorageType_values_constants +\n requisite_compType2_values_constants +\n requisite_name_constants +\n result_constants +\n rule_identification_constants +\n script_block_properties_constants +\n subtask_block_properties_constants +\n system_component_constants +\n system_dialogs_constants +\n system_reference_names_constants +\n table_name_constants +\n test_constants +\n using_the_dialog_windows_constants +\n using_the_document_constants +\n using_the_EA_and_encryption_constants +\n using_the_ISBL_editor_constants +\n wait_block_properties_constants +\n sysres_common_constants;\n\n // enum TAccountType\n const TAccountType = \"atUser atGroup atRole \";\n\n // enum TActionEnabledMode\n const TActionEnabledMode =\n \"aemEnabledAlways \" +\n \"aemDisabledAlways \" +\n \"aemEnabledOnBrowse \" +\n \"aemEnabledOnEdit \" +\n \"aemDisabledOnBrowseEmpty \";\n\n // enum TAddPosition\n const TAddPosition = \"apBegin apEnd \";\n\n // enum TAlignment\n const TAlignment = \"alLeft alRight \";\n\n // enum TAreaShowMode\n const TAreaShowMode =\n \"asmNever \" +\n \"asmNoButCustomize \" +\n \"asmAsLastTime \" +\n \"asmYesButCustomize \" +\n \"asmAlways \";\n\n // enum TCertificateInvalidationReason\n const TCertificateInvalidationReason = \"cirCommon cirRevoked \";\n\n // enum TCertificateType\n const TCertificateType = \"ctSignature ctEncode ctSignatureEncode \";\n\n // enum TCheckListBoxItemState\n const TCheckListBoxItemState = \"clbUnchecked clbChecked clbGrayed \";\n\n // enum TCloseOnEsc\n const TCloseOnEsc = \"ceISB ceAlways ceNever \";\n\n // enum TCompType\n const TCompType =\n \"ctDocument \" +\n \"ctReference \" +\n \"ctScript \" +\n \"ctUnknown \" +\n \"ctReport \" +\n \"ctDialog \" +\n \"ctFunction \" +\n \"ctFolder \" +\n \"ctEDocument \" +\n \"ctTask \" +\n \"ctJob \" +\n \"ctNotice \" +\n \"ctControlJob \";\n\n // enum TConditionFormat\n const TConditionFormat = \"cfInternal cfDisplay \";\n\n // enum TConnectionIntent\n const TConnectionIntent = \"ciUnspecified ciWrite ciRead \";\n\n // enum TContentKind\n const TContentKind =\n \"ckFolder \" +\n \"ckEDocument \" +\n \"ckTask \" +\n \"ckJob \" +\n \"ckComponentToken \" +\n \"ckAny \" +\n \"ckReference \" +\n \"ckScript \" +\n \"ckReport \" +\n \"ckDialog \";\n\n // enum TControlType\n const TControlType =\n \"ctISBLEditor \" +\n \"ctBevel \" +\n \"ctButton \" +\n \"ctCheckListBox \" +\n \"ctComboBox \" +\n \"ctComboEdit \" +\n \"ctGrid \" +\n \"ctDBCheckBox \" +\n \"ctDBComboBox \" +\n \"ctDBEdit \" +\n \"ctDBEllipsis \" +\n \"ctDBMemo \" +\n \"ctDBNavigator \" +\n \"ctDBRadioGroup \" +\n \"ctDBStatusLabel \" +\n \"ctEdit \" +\n \"ctGroupBox \" +\n \"ctInplaceHint \" +\n \"ctMemo \" +\n \"ctPanel \" +\n \"ctListBox \" +\n \"ctRadioButton \" +\n \"ctRichEdit \" +\n \"ctTabSheet \" +\n \"ctWebBrowser \" +\n \"ctImage \" +\n \"ctHyperLink \" +\n \"ctLabel \" +\n \"ctDBMultiEllipsis \" +\n \"ctRibbon \" +\n \"ctRichView \" +\n \"ctInnerPanel \" +\n \"ctPanelGroup \" +\n \"ctBitButton \";\n\n // enum TCriterionContentType\n const TCriterionContentType =\n \"cctDate \" +\n \"cctInteger \" +\n \"cctNumeric \" +\n \"cctPick \" +\n \"cctReference \" +\n \"cctString \" +\n \"cctText \";\n\n // enum TCultureType\n const TCultureType = \"cltInternal cltPrimary cltGUI \";\n\n // enum TDataSetEventType\n const TDataSetEventType =\n \"dseBeforeOpen \" +\n \"dseAfterOpen \" +\n \"dseBeforeClose \" +\n \"dseAfterClose \" +\n \"dseOnValidDelete \" +\n \"dseBeforeDelete \" +\n \"dseAfterDelete \" +\n \"dseAfterDeleteOutOfTransaction \" +\n \"dseOnDeleteError \" +\n \"dseBeforeInsert \" +\n \"dseAfterInsert \" +\n \"dseOnValidUpdate \" +\n \"dseBeforeUpdate \" +\n \"dseOnUpdateRatifiedRecord \" +\n \"dseAfterUpdate \" +\n \"dseAfterUpdateOutOfTransaction \" +\n \"dseOnUpdateError \" +\n \"dseAfterScroll \" +\n \"dseOnOpenRecord \" +\n \"dseOnCloseRecord \" +\n \"dseBeforeCancel \" +\n \"dseAfterCancel \" +\n \"dseOnUpdateDeadlockError \" +\n \"dseBeforeDetailUpdate \" +\n \"dseOnPrepareUpdate \" +\n \"dseOnAnyRequisiteChange \";\n\n // enum TDataSetState\n const TDataSetState = \"dssEdit dssInsert dssBrowse dssInActive \";\n\n // enum TDateFormatType\n const TDateFormatType = \"dftDate dftShortDate dftDateTime dftTimeStamp \";\n\n // enum TDateOffsetType\n const TDateOffsetType = \"dotDays dotHours dotMinutes dotSeconds \";\n\n // enum TDateTimeKind\n const TDateTimeKind = \"dtkndLocal dtkndUTC \";\n\n // enum TDeaAccessRights\n const TDeaAccessRights = \"arNone arView arEdit arFull \";\n\n // enum TDocumentDefaultAction\n const TDocumentDefaultAction = \"ddaView ddaEdit \";\n\n // enum TEditMode\n const TEditMode =\n \"emLock \" +\n \"emEdit \" +\n \"emSign \" +\n \"emExportWithLock \" +\n \"emImportWithUnlock \" +\n \"emChangeVersionNote \" +\n \"emOpenForModify \" +\n \"emChangeLifeStage \" +\n \"emDelete \" +\n \"emCreateVersion \" +\n \"emImport \" +\n \"emUnlockExportedWithLock \" +\n \"emStart \" +\n \"emAbort \" +\n \"emReInit \" +\n \"emMarkAsReaded \" +\n \"emMarkAsUnreaded \" +\n \"emPerform \" +\n \"emAccept \" +\n \"emResume \" +\n \"emChangeRights \" +\n \"emEditRoute \" +\n \"emEditObserver \" +\n \"emRecoveryFromLocalCopy \" +\n \"emChangeWorkAccessType \" +\n \"emChangeEncodeTypeToCertificate \" +\n \"emChangeEncodeTypeToPassword \" +\n \"emChangeEncodeTypeToNone \" +\n \"emChangeEncodeTypeToCertificatePassword \" +\n \"emChangeStandardRoute \" +\n \"emGetText \" +\n \"emOpenForView \" +\n \"emMoveToStorage \" +\n \"emCreateObject \" +\n \"emChangeVersionHidden \" +\n \"emDeleteVersion \" +\n \"emChangeLifeCycleStage \" +\n \"emApprovingSign \" +\n \"emExport \" +\n \"emContinue \" +\n \"emLockFromEdit \" +\n \"emUnLockForEdit \" +\n \"emLockForServer \" +\n \"emUnlockFromServer \" +\n \"emDelegateAccessRights \" +\n \"emReEncode \";\n\n // enum TEditorCloseObservType\n const TEditorCloseObservType = \"ecotFile ecotProcess \";\n\n // enum TEdmsApplicationAction\n const TEdmsApplicationAction = \"eaGet eaCopy eaCreate eaCreateStandardRoute \";\n\n // enum TEDocumentLockType\n const TEDocumentLockType = \"edltAll edltNothing edltQuery \";\n\n // enum TEDocumentStepShowMode\n const TEDocumentStepShowMode = \"essmText essmCard \";\n\n // enum TEDocumentStepVersionType\n const TEDocumentStepVersionType = \"esvtLast esvtLastActive esvtSpecified \";\n\n // enum TEDocumentStorageFunction\n const TEDocumentStorageFunction = \"edsfExecutive edsfArchive \";\n\n // enum TEDocumentStorageType\n const TEDocumentStorageType = \"edstSQLServer edstFile \";\n\n // enum TEDocumentVersionSourceType\n const TEDocumentVersionSourceType =\n \"edvstNone edvstEDocumentVersionCopy edvstFile edvstTemplate edvstScannedFile \";\n\n // enum TEDocumentVersionState\n const TEDocumentVersionState = \"vsDefault vsDesign vsActive vsObsolete \";\n\n // enum TEncodeType\n const TEncodeType = \"etNone etCertificate etPassword etCertificatePassword \";\n\n // enum TExceptionCategory\n const TExceptionCategory = \"ecException ecWarning ecInformation \";\n\n // enum TExportedSignaturesType\n const TExportedSignaturesType = \"estAll estApprovingOnly \";\n\n // enum TExportedVersionType\n const TExportedVersionType = \"evtLast evtLastActive evtQuery \";\n\n // enum TFieldDataType\n const TFieldDataType =\n \"fdtString \" +\n \"fdtNumeric \" +\n \"fdtInteger \" +\n \"fdtDate \" +\n \"fdtText \" +\n \"fdtUnknown \" +\n \"fdtWideString \" +\n \"fdtLargeInteger \";\n\n // enum TFolderType\n const TFolderType =\n \"ftInbox \" +\n \"ftOutbox \" +\n \"ftFavorites \" +\n \"ftCommonFolder \" +\n \"ftUserFolder \" +\n \"ftComponents \" +\n \"ftQuickLaunch \" +\n \"ftShortcuts \" +\n \"ftSearch \";\n\n // enum TGridRowHeight\n const TGridRowHeight = \"grhAuto \" + \"grhX1 \" + \"grhX2 \" + \"grhX3 \";\n\n // enum THyperlinkType\n const THyperlinkType = \"hltText \" + \"hltRTF \" + \"hltHTML \";\n\n // enum TImageFileFormat\n const TImageFileFormat =\n \"iffBMP \" +\n \"iffJPEG \" +\n \"iffMultiPageTIFF \" +\n \"iffSinglePageTIFF \" +\n \"iffTIFF \" +\n \"iffPNG \";\n\n // enum TImageMode\n const TImageMode = \"im8bGrayscale \" + \"im24bRGB \" + \"im1bMonochrome \";\n\n // enum TImageType\n const TImageType = \"itBMP \" + \"itJPEG \" + \"itWMF \" + \"itPNG \";\n\n // enum TInplaceHintKind\n const TInplaceHintKind =\n \"ikhInformation \" + \"ikhWarning \" + \"ikhError \" + \"ikhNoIcon \";\n\n // enum TISBLContext\n const TISBLContext =\n \"icUnknown \" +\n \"icScript \" +\n \"icFunction \" +\n \"icIntegratedReport \" +\n \"icAnalyticReport \" +\n \"icDataSetEventHandler \" +\n \"icActionHandler \" +\n \"icFormEventHandler \" +\n \"icLookUpEventHandler \" +\n \"icRequisiteChangeEventHandler \" +\n \"icBeforeSearchEventHandler \" +\n \"icRoleCalculation \" +\n \"icSelectRouteEventHandler \" +\n \"icBlockPropertyCalculation \" +\n \"icBlockQueryParamsEventHandler \" +\n \"icChangeSearchResultEventHandler \" +\n \"icBlockEventHandler \" +\n \"icSubTaskInitEventHandler \" +\n \"icEDocDataSetEventHandler \" +\n \"icEDocLookUpEventHandler \" +\n \"icEDocActionHandler \" +\n \"icEDocFormEventHandler \" +\n \"icEDocRequisiteChangeEventHandler \" +\n \"icStructuredConversionRule \" +\n \"icStructuredConversionEventBefore \" +\n \"icStructuredConversionEventAfter \" +\n \"icWizardEventHandler \" +\n \"icWizardFinishEventHandler \" +\n \"icWizardStepEventHandler \" +\n \"icWizardStepFinishEventHandler \" +\n \"icWizardActionEnableEventHandler \" +\n \"icWizardActionExecuteEventHandler \" +\n \"icCreateJobsHandler \" +\n \"icCreateNoticesHandler \" +\n \"icBeforeLookUpEventHandler \" +\n \"icAfterLookUpEventHandler \" +\n \"icTaskAbortEventHandler \" +\n \"icWorkflowBlockActionHandler \" +\n \"icDialogDataSetEventHandler \" +\n \"icDialogActionHandler \" +\n \"icDialogLookUpEventHandler \" +\n \"icDialogRequisiteChangeEventHandler \" +\n \"icDialogFormEventHandler \" +\n \"icDialogValidCloseEventHandler \" +\n \"icBlockFormEventHandler \" +\n \"icTaskFormEventHandler \" +\n \"icReferenceMethod \" +\n \"icEDocMethod \" +\n \"icDialogMethod \" +\n \"icProcessMessageHandler \";\n\n // enum TItemShow\n const TItemShow = \"isShow \" + \"isHide \" + \"isByUserSettings \";\n\n // enum TJobKind\n const TJobKind = \"jkJob \" + \"jkNotice \" + \"jkControlJob \";\n\n // enum TJoinType\n const TJoinType = \"jtInner \" + \"jtLeft \" + \"jtRight \" + \"jtFull \" + \"jtCross \";\n\n // enum TLabelPos\n const TLabelPos = \"lbpAbove \" + \"lbpBelow \" + \"lbpLeft \" + \"lbpRight \";\n\n // enum TLicensingType\n const TLicensingType = \"eltPerConnection \" + \"eltPerUser \";\n\n // enum TLifeCycleStageFontColor\n const TLifeCycleStageFontColor =\n \"sfcUndefined \" +\n \"sfcBlack \" +\n \"sfcGreen \" +\n \"sfcRed \" +\n \"sfcBlue \" +\n \"sfcOrange \" +\n \"sfcLilac \";\n\n // enum TLifeCycleStageFontStyle\n const TLifeCycleStageFontStyle = \"sfsItalic \" + \"sfsStrikeout \" + \"sfsNormal \";\n\n // enum TLockableDevelopmentComponentType\n const TLockableDevelopmentComponentType =\n \"ldctStandardRoute \" +\n \"ldctWizard \" +\n \"ldctScript \" +\n \"ldctFunction \" +\n \"ldctRouteBlock \" +\n \"ldctIntegratedReport \" +\n \"ldctAnalyticReport \" +\n \"ldctReferenceType \" +\n \"ldctEDocumentType \" +\n \"ldctDialog \" +\n \"ldctServerEvents \";\n\n // enum TMaxRecordCountRestrictionType\n const TMaxRecordCountRestrictionType =\n \"mrcrtNone \" + \"mrcrtUser \" + \"mrcrtMaximal \" + \"mrcrtCustom \";\n\n // enum TRangeValueType\n const TRangeValueType =\n \"vtEqual \" + \"vtGreaterOrEqual \" + \"vtLessOrEqual \" + \"vtRange \";\n\n // enum TRelativeDate\n const TRelativeDate =\n \"rdYesterday \" +\n \"rdToday \" +\n \"rdTomorrow \" +\n \"rdThisWeek \" +\n \"rdThisMonth \" +\n \"rdThisYear \" +\n \"rdNextMonth \" +\n \"rdNextWeek \" +\n \"rdLastWeek \" +\n \"rdLastMonth \";\n\n // enum TReportDestination\n const TReportDestination = \"rdWindow \" + \"rdFile \" + \"rdPrinter \";\n\n // enum TReqDataType\n const TReqDataType =\n \"rdtString \" +\n \"rdtNumeric \" +\n \"rdtInteger \" +\n \"rdtDate \" +\n \"rdtReference \" +\n \"rdtAccount \" +\n \"rdtText \" +\n \"rdtPick \" +\n \"rdtUnknown \" +\n \"rdtLargeInteger \" +\n \"rdtDocument \";\n\n // enum TRequisiteEventType\n const TRequisiteEventType = \"reOnChange \" + \"reOnChangeValues \";\n\n // enum TSBTimeType\n const TSBTimeType = \"ttGlobal \" + \"ttLocal \" + \"ttUser \" + \"ttSystem \";\n\n // enum TSearchShowMode\n const TSearchShowMode =\n \"ssmBrowse \" + \"ssmSelect \" + \"ssmMultiSelect \" + \"ssmBrowseModal \";\n\n // enum TSelectMode\n const TSelectMode = \"smSelect \" + \"smLike \" + \"smCard \";\n\n // enum TSignatureType\n const TSignatureType = \"stNone \" + \"stAuthenticating \" + \"stApproving \";\n\n // enum TSignerContentType\n const TSignerContentType = \"sctString \" + \"sctStream \";\n\n // enum TStringsSortType\n const TStringsSortType = \"sstAnsiSort \" + \"sstNaturalSort \";\n\n // enum TStringValueType\n const TStringValueType = \"svtEqual \" + \"svtContain \";\n\n // enum TStructuredObjectAttributeType\n const TStructuredObjectAttributeType =\n \"soatString \" +\n \"soatNumeric \" +\n \"soatInteger \" +\n \"soatDatetime \" +\n \"soatReferenceRecord \" +\n \"soatText \" +\n \"soatPick \" +\n \"soatBoolean \" +\n \"soatEDocument \" +\n \"soatAccount \" +\n \"soatIntegerCollection \" +\n \"soatNumericCollection \" +\n \"soatStringCollection \" +\n \"soatPickCollection \" +\n \"soatDatetimeCollection \" +\n \"soatBooleanCollection \" +\n \"soatReferenceRecordCollection \" +\n \"soatEDocumentCollection \" +\n \"soatAccountCollection \" +\n \"soatContents \" +\n \"soatUnknown \";\n\n // enum TTaskAbortReason\n const TTaskAbortReason = \"tarAbortByUser \" + \"tarAbortByWorkflowException \";\n\n // enum TTextValueType\n const TTextValueType = \"tvtAllWords \" + \"tvtExactPhrase \" + \"tvtAnyWord \";\n\n // enum TUserObjectStatus\n const TUserObjectStatus =\n \"usNone \" +\n \"usCompleted \" +\n \"usRedSquare \" +\n \"usBlueSquare \" +\n \"usYellowSquare \" +\n \"usGreenSquare \" +\n \"usOrangeSquare \" +\n \"usPurpleSquare \" +\n \"usFollowUp \";\n\n // enum TUserType\n const TUserType =\n \"utUnknown \" +\n \"utUser \" +\n \"utDeveloper \" +\n \"utAdministrator \" +\n \"utSystemDeveloper \" +\n \"utDisconnected \";\n\n // enum TValuesBuildType\n const TValuesBuildType =\n \"btAnd \" + \"btDetailAnd \" + \"btOr \" + \"btNotOr \" + \"btOnly \";\n\n // enum TViewMode\n const TViewMode = \"vmView \" + \"vmSelect \" + \"vmNavigation \";\n\n // enum TViewSelectionMode\n const TViewSelectionMode =\n \"vsmSingle \" + \"vsmMultiple \" + \"vsmMultipleCheck \" + \"vsmNoSelection \";\n\n // enum TWizardActionType\n const TWizardActionType =\n \"wfatPrevious \" + \"wfatNext \" + \"wfatCancel \" + \"wfatFinish \";\n\n // enum TWizardFormElementProperty\n const TWizardFormElementProperty =\n \"wfepUndefined \" +\n \"wfepText3 \" +\n \"wfepText6 \" +\n \"wfepText9 \" +\n \"wfepSpinEdit \" +\n \"wfepDropDown \" +\n \"wfepRadioGroup \" +\n \"wfepFlag \" +\n \"wfepText12 \" +\n \"wfepText15 \" +\n \"wfepText18 \" +\n \"wfepText21 \" +\n \"wfepText24 \" +\n \"wfepText27 \" +\n \"wfepText30 \" +\n \"wfepRadioGroupColumn1 \" +\n \"wfepRadioGroupColumn2 \" +\n \"wfepRadioGroupColumn3 \";\n\n // enum TWizardFormElementType\n const TWizardFormElementType =\n \"wfetQueryParameter \" + \"wfetText \" + \"wfetDelimiter \" + \"wfetLabel \";\n\n // enum TWizardParamType\n const TWizardParamType =\n \"wptString \" +\n \"wptInteger \" +\n \"wptNumeric \" +\n \"wptBoolean \" +\n \"wptDateTime \" +\n \"wptPick \" +\n \"wptText \" +\n \"wptUser \" +\n \"wptUserList \" +\n \"wptEDocumentInfo \" +\n \"wptEDocumentInfoList \" +\n \"wptReferenceRecordInfo \" +\n \"wptReferenceRecordInfoList \" +\n \"wptFolderInfo \" +\n \"wptTaskInfo \" +\n \"wptContents \" +\n \"wptFileName \" +\n \"wptDate \";\n\n // enum TWizardStepResult\n const TWizardStepResult =\n \"wsrComplete \" +\n \"wsrGoNext \" +\n \"wsrGoPrevious \" +\n \"wsrCustom \" +\n \"wsrCancel \" +\n \"wsrGoFinal \";\n\n // enum TWizardStepType\n const TWizardStepType =\n \"wstForm \" +\n \"wstEDocument \" +\n \"wstTaskCard \" +\n \"wstReferenceRecordCard \" +\n \"wstFinal \";\n\n // enum TWorkAccessType\n const TWorkAccessType = \"waAll \" + \"waPerformers \" + \"waManual \";\n\n // enum TWorkflowBlockType\n const TWorkflowBlockType =\n \"wsbStart \" +\n \"wsbFinish \" +\n \"wsbNotice \" +\n \"wsbStep \" +\n \"wsbDecision \" +\n \"wsbWait \" +\n \"wsbMonitor \" +\n \"wsbScript \" +\n \"wsbConnector \" +\n \"wsbSubTask \" +\n \"wsbLifeCycleStage \" +\n \"wsbPause \";\n\n // enum TWorkflowDataType\n const TWorkflowDataType =\n \"wdtInteger \" +\n \"wdtFloat \" +\n \"wdtString \" +\n \"wdtPick \" +\n \"wdtDateTime \" +\n \"wdtBoolean \" +\n \"wdtTask \" +\n \"wdtJob \" +\n \"wdtFolder \" +\n \"wdtEDocument \" +\n \"wdtReferenceRecord \" +\n \"wdtUser \" +\n \"wdtGroup \" +\n \"wdtRole \" +\n \"wdtIntegerCollection \" +\n \"wdtFloatCollection \" +\n \"wdtStringCollection \" +\n \"wdtPickCollection \" +\n \"wdtDateTimeCollection \" +\n \"wdtBooleanCollection \" +\n \"wdtTaskCollection \" +\n \"wdtJobCollection \" +\n \"wdtFolderCollection \" +\n \"wdtEDocumentCollection \" +\n \"wdtReferenceRecordCollection \" +\n \"wdtUserCollection \" +\n \"wdtGroupCollection \" +\n \"wdtRoleCollection \" +\n \"wdtContents \" +\n \"wdtUserList \" +\n \"wdtSearchDescription \" +\n \"wdtDeadLine \" +\n \"wdtPickSet \" +\n \"wdtAccountCollection \";\n\n // enum TWorkImportance\n const TWorkImportance = \"wiLow \" + \"wiNormal \" + \"wiHigh \";\n\n // enum TWorkRouteType\n const TWorkRouteType = \"wrtSoft \" + \"wrtHard \";\n\n // enum TWorkState\n const TWorkState =\n \"wsInit \" +\n \"wsRunning \" +\n \"wsDone \" +\n \"wsControlled \" +\n \"wsAborted \" +\n \"wsContinued \";\n\n // enum TWorkTextBuildingMode\n const TWorkTextBuildingMode =\n \"wtmFull \" + \"wtmFromCurrent \" + \"wtmOnlyCurrent \";\n\n // Перечисления\n const ENUMS =\n TAccountType +\n TActionEnabledMode +\n TAddPosition +\n TAlignment +\n TAreaShowMode +\n TCertificateInvalidationReason +\n TCertificateType +\n TCheckListBoxItemState +\n TCloseOnEsc +\n TCompType +\n TConditionFormat +\n TConnectionIntent +\n TContentKind +\n TControlType +\n TCriterionContentType +\n TCultureType +\n TDataSetEventType +\n TDataSetState +\n TDateFormatType +\n TDateOffsetType +\n TDateTimeKind +\n TDeaAccessRights +\n TDocumentDefaultAction +\n TEditMode +\n TEditorCloseObservType +\n TEdmsApplicationAction +\n TEDocumentLockType +\n TEDocumentStepShowMode +\n TEDocumentStepVersionType +\n TEDocumentStorageFunction +\n TEDocumentStorageType +\n TEDocumentVersionSourceType +\n TEDocumentVersionState +\n TEncodeType +\n TExceptionCategory +\n TExportedSignaturesType +\n TExportedVersionType +\n TFieldDataType +\n TFolderType +\n TGridRowHeight +\n THyperlinkType +\n TImageFileFormat +\n TImageMode +\n TImageType +\n TInplaceHintKind +\n TISBLContext +\n TItemShow +\n TJobKind +\n TJoinType +\n TLabelPos +\n TLicensingType +\n TLifeCycleStageFontColor +\n TLifeCycleStageFontStyle +\n TLockableDevelopmentComponentType +\n TMaxRecordCountRestrictionType +\n TRangeValueType +\n TRelativeDate +\n TReportDestination +\n TReqDataType +\n TRequisiteEventType +\n TSBTimeType +\n TSearchShowMode +\n TSelectMode +\n TSignatureType +\n TSignerContentType +\n TStringsSortType +\n TStringValueType +\n TStructuredObjectAttributeType +\n TTaskAbortReason +\n TTextValueType +\n TUserObjectStatus +\n TUserType +\n TValuesBuildType +\n TViewMode +\n TViewSelectionMode +\n TWizardActionType +\n TWizardFormElementProperty +\n TWizardFormElementType +\n TWizardParamType +\n TWizardStepResult +\n TWizardStepType +\n TWorkAccessType +\n TWorkflowBlockType +\n TWorkflowDataType +\n TWorkImportance +\n TWorkRouteType +\n TWorkState +\n TWorkTextBuildingMode;\n\n // Системные функции ==> SYSFUNCTIONS\n const system_functions =\n \"AddSubString \" +\n \"AdjustLineBreaks \" +\n \"AmountInWords \" +\n \"Analysis \" +\n \"ArrayDimCount \" +\n \"ArrayHighBound \" +\n \"ArrayLowBound \" +\n \"ArrayOf \" +\n \"ArrayReDim \" +\n \"Assert \" +\n \"Assigned \" +\n \"BeginOfMonth \" +\n \"BeginOfPeriod \" +\n \"BuildProfilingOperationAnalysis \" +\n \"CallProcedure \" +\n \"CanReadFile \" +\n \"CArrayElement \" +\n \"CDataSetRequisite \" +\n \"ChangeDate \" +\n \"ChangeReferenceDataset \" +\n \"Char \" +\n \"CharPos \" +\n \"CheckParam \" +\n \"CheckParamValue \" +\n \"CompareStrings \" +\n \"ConstantExists \" +\n \"ControlState \" +\n \"ConvertDateStr \" +\n \"Copy \" +\n \"CopyFile \" +\n \"CreateArray \" +\n \"CreateCachedReference \" +\n \"CreateConnection \" +\n \"CreateDialog \" +\n \"CreateDualListDialog \" +\n \"CreateEditor \" +\n \"CreateException \" +\n \"CreateFile \" +\n \"CreateFolderDialog \" +\n \"CreateInputDialog \" +\n \"CreateLinkFile \" +\n \"CreateList \" +\n \"CreateLock \" +\n \"CreateMemoryDataSet \" +\n \"CreateObject \" +\n \"CreateOpenDialog \" +\n \"CreateProgress \" +\n \"CreateQuery \" +\n \"CreateReference \" +\n \"CreateReport \" +\n \"CreateSaveDialog \" +\n \"CreateScript \" +\n \"CreateSQLPivotFunction \" +\n \"CreateStringList \" +\n \"CreateTreeListSelectDialog \" +\n \"CSelectSQL \" +\n \"CSQL \" +\n \"CSubString \" +\n \"CurrentUserID \" +\n \"CurrentUserName \" +\n \"CurrentVersion \" +\n \"DataSetLocateEx \" +\n \"DateDiff \" +\n \"DateTimeDiff \" +\n \"DateToStr \" +\n \"DayOfWeek \" +\n \"DeleteFile \" +\n \"DirectoryExists \" +\n \"DisableCheckAccessRights \" +\n \"DisableCheckFullShowingRestriction \" +\n \"DisableMassTaskSendingRestrictions \" +\n \"DropTable \" +\n \"DupeString \" +\n \"EditText \" +\n \"EnableCheckAccessRights \" +\n \"EnableCheckFullShowingRestriction \" +\n \"EnableMassTaskSendingRestrictions \" +\n \"EndOfMonth \" +\n \"EndOfPeriod \" +\n \"ExceptionExists \" +\n \"ExceptionsOff \" +\n \"ExceptionsOn \" +\n \"Execute \" +\n \"ExecuteProcess \" +\n \"Exit \" +\n \"ExpandEnvironmentVariables \" +\n \"ExtractFileDrive \" +\n \"ExtractFileExt \" +\n \"ExtractFileName \" +\n \"ExtractFilePath \" +\n \"ExtractParams \" +\n \"FileExists \" +\n \"FileSize \" +\n \"FindFile \" +\n \"FindSubString \" +\n \"FirmContext \" +\n \"ForceDirectories \" +\n \"Format \" +\n \"FormatDate \" +\n \"FormatNumeric \" +\n \"FormatSQLDate \" +\n \"FormatString \" +\n \"FreeException \" +\n \"GetComponent \" +\n \"GetComponentLaunchParam \" +\n \"GetConstant \" +\n \"GetLastException \" +\n \"GetReferenceRecord \" +\n \"GetRefTypeByRefID \" +\n \"GetTableID \" +\n \"GetTempFolder \" +\n \"IfThen \" +\n \"In \" +\n \"IndexOf \" +\n \"InputDialog \" +\n \"InputDialogEx \" +\n \"InteractiveMode \" +\n \"IsFileLocked \" +\n \"IsGraphicFile \" +\n \"IsNumeric \" +\n \"Length \" +\n \"LoadString \" +\n \"LoadStringFmt \" +\n \"LocalTimeToUTC \" +\n \"LowerCase \" +\n \"Max \" +\n \"MessageBox \" +\n \"MessageBoxEx \" +\n \"MimeDecodeBinary \" +\n \"MimeDecodeString \" +\n \"MimeEncodeBinary \" +\n \"MimeEncodeString \" +\n \"Min \" +\n \"MoneyInWords \" +\n \"MoveFile \" +\n \"NewID \" +\n \"Now \" +\n \"OpenFile \" +\n \"Ord \" +\n \"Precision \" +\n \"Raise \" +\n \"ReadCertificateFromFile \" +\n \"ReadFile \" +\n \"ReferenceCodeByID \" +\n \"ReferenceNumber \" +\n \"ReferenceRequisiteMode \" +\n \"ReferenceRequisiteValue \" +\n \"RegionDateSettings \" +\n \"RegionNumberSettings \" +\n \"RegionTimeSettings \" +\n \"RegRead \" +\n \"RegWrite \" +\n \"RenameFile \" +\n \"Replace \" +\n \"Round \" +\n \"SelectServerCode \" +\n \"SelectSQL \" +\n \"ServerDateTime \" +\n \"SetConstant \" +\n \"SetManagedFolderFieldsState \" +\n \"ShowConstantsInputDialog \" +\n \"ShowMessage \" +\n \"Sleep \" +\n \"Split \" +\n \"SQL \" +\n \"SQL2XLSTAB \" +\n \"SQLProfilingSendReport \" +\n \"StrToDate \" +\n \"SubString \" +\n \"SubStringCount \" +\n \"SystemSetting \" +\n \"Time \" +\n \"TimeDiff \" +\n \"Today \" +\n \"Transliterate \" +\n \"Trim \" +\n \"UpperCase \" +\n \"UserStatus \" +\n \"UTCToLocalTime \" +\n \"ValidateXML \" +\n \"VarIsClear \" +\n \"VarIsEmpty \" +\n \"VarIsNull \" +\n \"WorkTimeDiff \" +\n \"WriteFile \" +\n \"WriteFileEx \" +\n \"WriteObjectHistory \" +\n \"Анализ \" +\n \"БазаДанных \" +\n \"БлокЕсть \" +\n \"БлокЕстьРасш \" +\n \"БлокИнфо \" +\n \"БлокСнять \" +\n \"БлокСнятьРасш \" +\n \"БлокУстановить \" +\n \"Ввод \" +\n \"ВводМеню \" +\n \"ВедС \" +\n \"ВедСпр \" +\n \"ВерхняяГраницаМассива \" +\n \"ВнешПрогр \" +\n \"Восст \" +\n \"ВременнаяПапка \" +\n \"Время \" +\n \"ВыборSQL \" +\n \"ВыбратьЗапись \" +\n \"ВыделитьСтр \" +\n \"Вызвать \" +\n \"Выполнить \" +\n \"ВыпПрогр \" +\n \"ГрафическийФайл \" +\n \"ГруппаДополнительно \" +\n \"ДатаВремяСерв \" +\n \"ДеньНедели \" +\n \"ДиалогДаНет \" +\n \"ДлинаСтр \" +\n \"ДобПодстр \" +\n \"ЕПусто \" +\n \"ЕслиТо \" +\n \"ЕЧисло \" +\n \"ЗамПодстр \" +\n \"ЗаписьСправочника \" +\n \"ЗначПоляСпр \" +\n \"ИДТипСпр \" +\n \"ИзвлечьДиск \" +\n \"ИзвлечьИмяФайла \" +\n \"ИзвлечьПуть \" +\n \"ИзвлечьРасширение \" +\n \"ИзмДат \" +\n \"ИзменитьРазмерМассива \" +\n \"ИзмеренийМассива \" +\n \"ИмяОрг \" +\n \"ИмяПоляСпр \" +\n \"Индекс \" +\n \"ИндикаторЗакрыть \" +\n \"ИндикаторОткрыть \" +\n \"ИндикаторШаг \" +\n \"ИнтерактивныйРежим \" +\n \"ИтогТблСпр \" +\n \"КодВидВедСпр \" +\n \"КодВидСпрПоИД \" +\n \"КодПоAnalit \" +\n \"КодСимвола \" +\n \"КодСпр \" +\n \"КолПодстр \" +\n \"КолПроп \" +\n \"КонМес \" +\n \"Конст \" +\n \"КонстЕсть \" +\n \"КонстЗнач \" +\n \"КонТран \" +\n \"КопироватьФайл \" +\n \"КопияСтр \" +\n \"КПериод \" +\n \"КСтрТблСпр \" +\n \"Макс \" +\n \"МаксСтрТблСпр \" +\n \"Массив \" +\n \"Меню \" +\n \"МенюРасш \" +\n \"Мин \" +\n \"НаборДанныхНайтиРасш \" +\n \"НаимВидСпр \" +\n \"НаимПоAnalit \" +\n \"НаимСпр \" +\n \"НастроитьПереводыСтрок \" +\n \"НачМес \" +\n \"НачТран \" +\n \"НижняяГраницаМассива \" +\n \"НомерСпр \" +\n \"НПериод \" +\n \"Окно \" +\n \"Окр \" +\n \"Окружение \" +\n \"ОтлИнфДобавить \" +\n \"ОтлИнфУдалить \" +\n \"Отчет \" +\n \"ОтчетАнал \" +\n \"ОтчетИнт \" +\n \"ПапкаСуществует \" +\n \"Пауза \" +\n \"ПВыборSQL \" +\n \"ПереименоватьФайл \" +\n \"Переменные \" +\n \"ПереместитьФайл \" +\n \"Подстр \" +\n \"ПоискПодстр \" +\n \"ПоискСтр \" +\n \"ПолучитьИДТаблицы \" +\n \"ПользовательДополнительно \" +\n \"ПользовательИД \" +\n \"ПользовательИмя \" +\n \"ПользовательСтатус \" +\n \"Прервать \" +\n \"ПроверитьПараметр \" +\n \"ПроверитьПараметрЗнач \" +\n \"ПроверитьУсловие \" +\n \"РазбСтр \" +\n \"РазнВремя \" +\n \"РазнДат \" +\n \"РазнДатаВремя \" +\n \"РазнРабВремя \" +\n \"РегУстВрем \" +\n \"РегУстДат \" +\n \"РегУстЧсл \" +\n \"РедТекст \" +\n \"РеестрЗапись \" +\n \"РеестрСписокИменПарам \" +\n \"РеестрЧтение \" +\n \"РеквСпр \" +\n \"РеквСпрПр \" +\n \"Сегодня \" +\n \"Сейчас \" +\n \"Сервер \" +\n \"СерверПроцессИД \" +\n \"СертификатФайлСчитать \" +\n \"СжПроб \" +\n \"Символ \" +\n \"СистемаДиректумКод \" +\n \"СистемаИнформация \" +\n \"СистемаКод \" +\n \"Содержит \" +\n \"СоединениеЗакрыть \" +\n \"СоединениеОткрыть \" +\n \"СоздатьДиалог \" +\n \"СоздатьДиалогВыбораИзДвухСписков \" +\n \"СоздатьДиалогВыбораПапки \" +\n \"СоздатьДиалогОткрытияФайла \" +\n \"СоздатьДиалогСохраненияФайла \" +\n \"СоздатьЗапрос \" +\n \"СоздатьИндикатор \" +\n \"СоздатьИсключение \" +\n \"СоздатьКэшированныйСправочник \" +\n \"СоздатьМассив \" +\n \"СоздатьНаборДанных \" +\n \"СоздатьОбъект \" +\n \"СоздатьОтчет \" +\n \"СоздатьПапку \" +\n \"СоздатьРедактор \" +\n \"СоздатьСоединение \" +\n \"СоздатьСписок \" +\n \"СоздатьСписокСтрок \" +\n \"СоздатьСправочник \" +\n \"СоздатьСценарий \" +\n \"СоздСпр \" +\n \"СостСпр \" +\n \"Сохр \" +\n \"СохрСпр \" +\n \"СписокСистем \" +\n \"Спр \" +\n \"Справочник \" +\n \"СпрБлокЕсть \" +\n \"СпрБлокСнять \" +\n \"СпрБлокСнятьРасш \" +\n \"СпрБлокУстановить \" +\n \"СпрИзмНабДан \" +\n \"СпрКод \" +\n \"СпрНомер \" +\n \"СпрОбновить \" +\n \"СпрОткрыть \" +\n \"СпрОтменить \" +\n \"СпрПарам \" +\n \"СпрПолеЗнач \" +\n \"СпрПолеИмя \" +\n \"СпрРекв \" +\n \"СпрРеквВведЗн \" +\n \"СпрРеквНовые \" +\n \"СпрРеквПр \" +\n \"СпрРеквПредЗн \" +\n \"СпрРеквРежим \" +\n \"СпрРеквТипТекст \" +\n \"СпрСоздать \" +\n \"СпрСост \" +\n \"СпрСохранить \" +\n \"СпрТблИтог \" +\n \"СпрТблСтр \" +\n \"СпрТблСтрКол \" +\n \"СпрТблСтрМакс \" +\n \"СпрТблСтрМин \" +\n \"СпрТблСтрПред \" +\n \"СпрТблСтрСлед \" +\n \"СпрТблСтрСозд \" +\n \"СпрТблСтрУд \" +\n \"СпрТекПредст \" +\n \"СпрУдалить \" +\n \"СравнитьСтр \" +\n \"СтрВерхРегистр \" +\n \"СтрНижнРегистр \" +\n \"СтрТблСпр \" +\n \"СумПроп \" +\n \"Сценарий \" +\n \"СценарийПарам \" +\n \"ТекВерсия \" +\n \"ТекОрг \" +\n \"Точн \" +\n \"Тран \" +\n \"Транслитерация \" +\n \"УдалитьТаблицу \" +\n \"УдалитьФайл \" +\n \"УдСпр \" +\n \"УдСтрТблСпр \" +\n \"Уст \" +\n \"УстановкиКонстант \" +\n \"ФайлАтрибутСчитать \" +\n \"ФайлАтрибутУстановить \" +\n \"ФайлВремя \" +\n \"ФайлВремяУстановить \" +\n \"ФайлВыбрать \" +\n \"ФайлЗанят \" +\n \"ФайлЗаписать \" +\n \"ФайлИскать \" +\n \"ФайлКопировать \" +\n \"ФайлМожноЧитать \" +\n \"ФайлОткрыть \" +\n \"ФайлПереименовать \" +\n \"ФайлПерекодировать \" +\n \"ФайлПереместить \" +\n \"ФайлПросмотреть \" +\n \"ФайлРазмер \" +\n \"ФайлСоздать \" +\n \"ФайлСсылкаСоздать \" +\n \"ФайлСуществует \" +\n \"ФайлСчитать \" +\n \"ФайлУдалить \" +\n \"ФмтSQLДат \" +\n \"ФмтДат \" +\n \"ФмтСтр \" +\n \"ФмтЧсл \" +\n \"Формат \" +\n \"ЦМассивЭлемент \" +\n \"ЦНаборДанныхРеквизит \" +\n \"ЦПодстр \";\n\n // Предопределенные переменные ==> built_in\n const predefined_variables =\n \"AltState \" +\n \"Application \" +\n \"CallType \" +\n \"ComponentTokens \" +\n \"CreatedJobs \" +\n \"CreatedNotices \" +\n \"ControlState \" +\n \"DialogResult \" +\n \"Dialogs \" +\n \"EDocuments \" +\n \"EDocumentVersionSource \" +\n \"Folders \" +\n \"GlobalIDs \" +\n \"Job \" +\n \"Jobs \" +\n \"InputValue \" +\n \"LookUpReference \" +\n \"LookUpRequisiteNames \" +\n \"LookUpSearch \" +\n \"Object \" +\n \"ParentComponent \" +\n \"Processes \" +\n \"References \" +\n \"Requisite \" +\n \"ReportName \" +\n \"Reports \" +\n \"Result \" +\n \"Scripts \" +\n \"Searches \" +\n \"SelectedAttachments \" +\n \"SelectedItems \" +\n \"SelectMode \" +\n \"Sender \" +\n \"ServerEvents \" +\n \"ServiceFactory \" +\n \"ShiftState \" +\n \"SubTask \" +\n \"SystemDialogs \" +\n \"Tasks \" +\n \"Wizard \" +\n \"Wizards \" +\n \"Work \" +\n \"ВызовСпособ \" +\n \"ИмяОтчета \" +\n \"РеквЗнач \";\n\n // Интерфейсы ==> type\n const interfaces =\n \"IApplication \" +\n \"IAccessRights \" +\n \"IAccountRepository \" +\n \"IAccountSelectionRestrictions \" +\n \"IAction \" +\n \"IActionList \" +\n \"IAdministrationHistoryDescription \" +\n \"IAnchors \" +\n \"IApplication \" +\n \"IArchiveInfo \" +\n \"IAttachment \" +\n \"IAttachmentList \" +\n \"ICheckListBox \" +\n \"ICheckPointedList \" +\n \"IColumn \" +\n \"IComponent \" +\n \"IComponentDescription \" +\n \"IComponentToken \" +\n \"IComponentTokenFactory \" +\n \"IComponentTokenInfo \" +\n \"ICompRecordInfo \" +\n \"IConnection \" +\n \"IContents \" +\n \"IControl \" +\n \"IControlJob \" +\n \"IControlJobInfo \" +\n \"IControlList \" +\n \"ICrypto \" +\n \"ICrypto2 \" +\n \"ICustomJob \" +\n \"ICustomJobInfo \" +\n \"ICustomListBox \" +\n \"ICustomObjectWizardStep \" +\n \"ICustomWork \" +\n \"ICustomWorkInfo \" +\n \"IDataSet \" +\n \"IDataSetAccessInfo \" +\n \"IDataSigner \" +\n \"IDateCriterion \" +\n \"IDateRequisite \" +\n \"IDateRequisiteDescription \" +\n \"IDateValue \" +\n \"IDeaAccessRights \" +\n \"IDeaObjectInfo \" +\n \"IDevelopmentComponentLock \" +\n \"IDialog \" +\n \"IDialogFactory \" +\n \"IDialogPickRequisiteItems \" +\n \"IDialogsFactory \" +\n \"IDICSFactory \" +\n \"IDocRequisite \" +\n \"IDocumentInfo \" +\n \"IDualListDialog \" +\n \"IECertificate \" +\n \"IECertificateInfo \" +\n \"IECertificates \" +\n \"IEditControl \" +\n \"IEditorForm \" +\n \"IEdmsExplorer \" +\n \"IEdmsObject \" +\n \"IEdmsObjectDescription \" +\n \"IEdmsObjectFactory \" +\n \"IEdmsObjectInfo \" +\n \"IEDocument \" +\n \"IEDocumentAccessRights \" +\n \"IEDocumentDescription \" +\n \"IEDocumentEditor \" +\n \"IEDocumentFactory \" +\n \"IEDocumentInfo \" +\n \"IEDocumentStorage \" +\n \"IEDocumentVersion \" +\n \"IEDocumentVersionListDialog \" +\n \"IEDocumentVersionSource \" +\n \"IEDocumentWizardStep \" +\n \"IEDocVerSignature \" +\n \"IEDocVersionState \" +\n \"IEnabledMode \" +\n \"IEncodeProvider \" +\n \"IEncrypter \" +\n \"IEvent \" +\n \"IEventList \" +\n \"IException \" +\n \"IExternalEvents \" +\n \"IExternalHandler \" +\n \"IFactory \" +\n \"IField \" +\n \"IFileDialog \" +\n \"IFolder \" +\n \"IFolderDescription \" +\n \"IFolderDialog \" +\n \"IFolderFactory \" +\n \"IFolderInfo \" +\n \"IForEach \" +\n \"IForm \" +\n \"IFormTitle \" +\n \"IFormWizardStep \" +\n \"IGlobalIDFactory \" +\n \"IGlobalIDInfo \" +\n \"IGrid \" +\n \"IHasher \" +\n \"IHistoryDescription \" +\n \"IHyperLinkControl \" +\n \"IImageButton \" +\n \"IImageControl \" +\n \"IInnerPanel \" +\n \"IInplaceHint \" +\n \"IIntegerCriterion \" +\n \"IIntegerList \" +\n \"IIntegerRequisite \" +\n \"IIntegerValue \" +\n \"IISBLEditorForm \" +\n \"IJob \" +\n \"IJobDescription \" +\n \"IJobFactory \" +\n \"IJobForm \" +\n \"IJobInfo \" +\n \"ILabelControl \" +\n \"ILargeIntegerCriterion \" +\n \"ILargeIntegerRequisite \" +\n \"ILargeIntegerValue \" +\n \"ILicenseInfo \" +\n \"ILifeCycleStage \" +\n \"IList \" +\n \"IListBox \" +\n \"ILocalIDInfo \" +\n \"ILocalization \" +\n \"ILock \" +\n \"IMemoryDataSet \" +\n \"IMessagingFactory \" +\n \"IMetadataRepository \" +\n \"INotice \" +\n \"INoticeInfo \" +\n \"INumericCriterion \" +\n \"INumericRequisite \" +\n \"INumericValue \" +\n \"IObject \" +\n \"IObjectDescription \" +\n \"IObjectImporter \" +\n \"IObjectInfo \" +\n \"IObserver \" +\n \"IPanelGroup \" +\n \"IPickCriterion \" +\n \"IPickProperty \" +\n \"IPickRequisite \" +\n \"IPickRequisiteDescription \" +\n \"IPickRequisiteItem \" +\n \"IPickRequisiteItems \" +\n \"IPickValue \" +\n \"IPrivilege \" +\n \"IPrivilegeList \" +\n \"IProcess \" +\n \"IProcessFactory \" +\n \"IProcessMessage \" +\n \"IProgress \" +\n \"IProperty \" +\n \"IPropertyChangeEvent \" +\n \"IQuery \" +\n \"IReference \" +\n \"IReferenceCriterion \" +\n \"IReferenceEnabledMode \" +\n \"IReferenceFactory \" +\n \"IReferenceHistoryDescription \" +\n \"IReferenceInfo \" +\n \"IReferenceRecordCardWizardStep \" +\n \"IReferenceRequisiteDescription \" +\n \"IReferencesFactory \" +\n \"IReferenceValue \" +\n \"IRefRequisite \" +\n \"IReport \" +\n \"IReportFactory \" +\n \"IRequisite \" +\n \"IRequisiteDescription \" +\n \"IRequisiteDescriptionList \" +\n \"IRequisiteFactory \" +\n \"IRichEdit \" +\n \"IRouteStep \" +\n \"IRule \" +\n \"IRuleList \" +\n \"ISchemeBlock \" +\n \"IScript \" +\n \"IScriptFactory \" +\n \"ISearchCriteria \" +\n \"ISearchCriterion \" +\n \"ISearchDescription \" +\n \"ISearchFactory \" +\n \"ISearchFolderInfo \" +\n \"ISearchForObjectDescription \" +\n \"ISearchResultRestrictions \" +\n \"ISecuredContext \" +\n \"ISelectDialog \" +\n \"IServerEvent \" +\n \"IServerEventFactory \" +\n \"IServiceDialog \" +\n \"IServiceFactory \" +\n \"ISignature \" +\n \"ISignProvider \" +\n \"ISignProvider2 \" +\n \"ISignProvider3 \" +\n \"ISimpleCriterion \" +\n \"IStringCriterion \" +\n \"IStringList \" +\n \"IStringRequisite \" +\n \"IStringRequisiteDescription \" +\n \"IStringValue \" +\n \"ISystemDialogsFactory \" +\n \"ISystemInfo \" +\n \"ITabSheet \" +\n \"ITask \" +\n \"ITaskAbortReasonInfo \" +\n \"ITaskCardWizardStep \" +\n \"ITaskDescription \" +\n \"ITaskFactory \" +\n \"ITaskInfo \" +\n \"ITaskRoute \" +\n \"ITextCriterion \" +\n \"ITextRequisite \" +\n \"ITextValue \" +\n \"ITreeListSelectDialog \" +\n \"IUser \" +\n \"IUserList \" +\n \"IValue \" +\n \"IView \" +\n \"IWebBrowserControl \" +\n \"IWizard \" +\n \"IWizardAction \" +\n \"IWizardFactory \" +\n \"IWizardFormElement \" +\n \"IWizardParam \" +\n \"IWizardPickParam \" +\n \"IWizardReferenceParam \" +\n \"IWizardStep \" +\n \"IWorkAccessRights \" +\n \"IWorkDescription \" +\n \"IWorkflowAskableParam \" +\n \"IWorkflowAskableParams \" +\n \"IWorkflowBlock \" +\n \"IWorkflowBlockResult \" +\n \"IWorkflowEnabledMode \" +\n \"IWorkflowParam \" +\n \"IWorkflowPickParam \" +\n \"IWorkflowReferenceParam \" +\n \"IWorkState \" +\n \"IWorkTreeCustomNode \" +\n \"IWorkTreeJobNode \" +\n \"IWorkTreeTaskNode \" +\n \"IXMLEditorForm \" +\n \"SBCrypto \";\n\n // built_in : встроенные или библиотечные объекты (константы, перечисления)\n const BUILTIN = CONSTANTS + ENUMS;\n\n // class: встроенные наборы значений, системные объекты, фабрики\n const CLASS = predefined_variables;\n\n // literal : примитивные типы\n const LITERAL = \"null true false nil \";\n\n // number : числа\n const NUMBERS = {\n className: \"number\",\n begin: hljs.NUMBER_RE,\n relevance: 0\n };\n\n // string : строки\n const STRINGS = {\n className: \"string\",\n variants: [\n {\n begin: '\"',\n end: '\"'\n },\n {\n begin: \"'\",\n end: \"'\"\n }\n ]\n };\n\n // Токены\n const DOCTAGS = {\n className: \"doctag\",\n begin: \"\\\\b(?:TODO|DONE|BEGIN|END|STUB|CHG|FIXME|NOTE|BUG|XXX)\\\\b\",\n relevance: 0\n };\n\n // Однострочный комментарий\n const ISBL_LINE_COMMENT_MODE = {\n className: \"comment\",\n begin: \"//\",\n end: \"$\",\n relevance: 0,\n contains: [\n hljs.PHRASAL_WORDS_MODE,\n DOCTAGS\n ]\n };\n\n // Многострочный комментарий\n const ISBL_BLOCK_COMMENT_MODE = {\n className: \"comment\",\n begin: \"/\\\\*\",\n end: \"\\\\*/\",\n relevance: 0,\n contains: [\n hljs.PHRASAL_WORDS_MODE,\n DOCTAGS\n ]\n };\n\n // comment : комментарии\n const COMMENTS = {\n variants: [\n ISBL_LINE_COMMENT_MODE,\n ISBL_BLOCK_COMMENT_MODE\n ]\n };\n\n // keywords : ключевые слова\n const KEYWORDS = {\n $pattern: UNDERSCORE_IDENT_RE,\n keyword: KEYWORD,\n built_in: BUILTIN,\n class: CLASS,\n literal: LITERAL\n };\n\n // methods : методы\n const METHODS = {\n begin: \"\\\\.\\\\s*\" + hljs.UNDERSCORE_IDENT_RE,\n keywords: KEYWORDS,\n relevance: 0\n };\n\n // type : встроенные типы\n const TYPES = {\n className: \"type\",\n begin: \":[ \\\\t]*(\" + interfaces.trim().replace(/\\s/g, \"|\") + \")\",\n end: \"[ \\\\t]*=\",\n excludeEnd: true\n };\n\n // variables : переменные\n const VARIABLES = {\n className: \"variable\",\n keywords: KEYWORDS,\n begin: UNDERSCORE_IDENT_RE,\n relevance: 0,\n contains: [\n TYPES,\n METHODS\n ]\n };\n\n // Имена функций\n const FUNCTION_TITLE = FUNCTION_NAME_IDENT_RE + \"\\\\(\";\n\n const TITLE_MODE = {\n className: \"title\",\n keywords: {\n $pattern: UNDERSCORE_IDENT_RE,\n built_in: system_functions\n },\n begin: FUNCTION_TITLE,\n end: \"\\\\(\",\n returnBegin: true,\n excludeEnd: true\n };\n\n // function : функции\n const FUNCTIONS = {\n className: \"function\",\n begin: FUNCTION_TITLE,\n end: \"\\\\)$\",\n returnBegin: true,\n keywords: KEYWORDS,\n illegal: \"[\\\\[\\\\]\\\\|\\\\$\\\\?%,~#@]\",\n contains: [\n TITLE_MODE,\n METHODS,\n VARIABLES,\n STRINGS,\n NUMBERS,\n COMMENTS\n ]\n };\n\n return {\n name: 'ISBL',\n case_insensitive: true,\n keywords: KEYWORDS,\n illegal: \"\\\\$|\\\\?|%|,|;$|~|#|@|</\",\n contains: [\n FUNCTIONS,\n TYPES,\n METHODS,\n VARIABLES,\n STRINGS,\n NUMBERS,\n COMMENTS\n ]\n };\n}\n\nmodule.exports = isbl;\n","// https://docs.oracle.com/javase/specs/jls/se15/html/jls-3.html#jls-3.10\nvar decimalDigits = '[0-9](_*[0-9])*';\nvar frac = `\\\\.(${decimalDigits})`;\nvar hexDigits = '[0-9a-fA-F](_*[0-9a-fA-F])*';\nvar NUMERIC = {\n className: 'number',\n variants: [\n // DecimalFloatingPointLiteral\n // including ExponentPart\n { begin: `(\\\\b(${decimalDigits})((${frac})|\\\\.)?|(${frac}))` +\n `[eE][+-]?(${decimalDigits})[fFdD]?\\\\b` },\n // excluding ExponentPart\n { begin: `\\\\b(${decimalDigits})((${frac})[fFdD]?\\\\b|\\\\.([fFdD]\\\\b)?)` },\n { begin: `(${frac})[fFdD]?\\\\b` },\n { begin: `\\\\b(${decimalDigits})[fFdD]\\\\b` },\n\n // HexadecimalFloatingPointLiteral\n { begin: `\\\\b0[xX]((${hexDigits})\\\\.?|(${hexDigits})?\\\\.(${hexDigits}))` +\n `[pP][+-]?(${decimalDigits})[fFdD]?\\\\b` },\n\n // DecimalIntegerLiteral\n { begin: '\\\\b(0|[1-9](_*[0-9])*)[lL]?\\\\b' },\n\n // HexIntegerLiteral\n { begin: `\\\\b0[xX](${hexDigits})[lL]?\\\\b` },\n\n // OctalIntegerLiteral\n { begin: '\\\\b0(_*[0-7])*[lL]?\\\\b' },\n\n // BinaryIntegerLiteral\n { begin: '\\\\b0[bB][01](_*[01])*[lL]?\\\\b' },\n ],\n relevance: 0\n};\n\n/*\nLanguage: Java\nAuthor: Vsevolod Solovyov <vsevolod.solovyov@gmail.com>\nCategory: common, enterprise\nWebsite: https://www.java.com/\n*/\n\nfunction java(hljs) {\n var JAVA_IDENT_RE = '[\\u00C0-\\u02B8a-zA-Z_$][\\u00C0-\\u02B8a-zA-Z_$0-9]*';\n var GENERIC_IDENT_RE = JAVA_IDENT_RE + '(<' + JAVA_IDENT_RE + '(\\\\s*,\\\\s*' + JAVA_IDENT_RE + ')*>)?';\n var KEYWORDS = 'false synchronized int abstract float private char boolean var static null if const ' +\n 'for true while long strictfp finally protected import native final void ' +\n 'enum else break transient catch instanceof byte super volatile case assert short ' +\n 'package default double public try this switch continue throws protected public private ' +\n 'module requires exports do';\n\n var ANNOTATION = {\n className: 'meta',\n begin: '@' + JAVA_IDENT_RE,\n contains: [\n {\n begin: /\\(/,\n end: /\\)/,\n contains: [\"self\"] // allow nested () inside our annotation\n },\n ]\n };\n const NUMBER = NUMERIC;\n\n return {\n name: 'Java',\n aliases: ['jsp'],\n keywords: KEYWORDS,\n illegal: /<\\/|#/,\n contains: [\n hljs.COMMENT(\n '/\\\\*\\\\*',\n '\\\\*/',\n {\n relevance: 0,\n contains: [\n {\n // eat up @'s in emails to prevent them to be recognized as doctags\n begin: /\\w+@/, relevance: 0\n },\n {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n }\n ]\n }\n ),\n // relevance boost\n {\n begin: /import java\\.[a-z]+\\./,\n keywords: \"import\",\n relevance: 2\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'class',\n beginKeywords: 'class interface enum', end: /[{;=]/, excludeEnd: true,\n // TODO: can this be removed somehow?\n // an extra boost because Java is more popular than other languages with\n // this same syntax feature (this is just to preserve our tests passing\n // for now)\n relevance: 1,\n keywords: 'class interface enum',\n illegal: /[:\"\\[\\]]/,\n contains: [\n { beginKeywords: 'extends implements' },\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n // Expression keywords prevent 'keyword Name(...)' from being\n // recognized as a function definition\n beginKeywords: 'new throw return else',\n relevance: 0\n },\n {\n className: 'class',\n begin: 'record\\\\s+' + hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(',\n returnBegin: true,\n excludeEnd: true,\n end: /[{;=]/,\n keywords: KEYWORDS,\n contains: [\n { beginKeywords: \"record\" },\n {\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(',\n returnBegin: true,\n relevance: 0,\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n className: 'function',\n begin: '(' + GENERIC_IDENT_RE + '\\\\s+)+' + hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(', returnBegin: true, end: /[{;=]/,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(', returnBegin: true,\n relevance: 0,\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n ANNOTATION,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n NUMBER,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n NUMBER,\n ANNOTATION\n ]\n };\n}\n\nmodule.exports = java;\n","const IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\nconst KEYWORDS = [\n \"as\", // for exports\n \"in\",\n \"of\",\n \"if\",\n \"for\",\n \"while\",\n \"finally\",\n \"var\",\n \"new\",\n \"function\",\n \"do\",\n \"return\",\n \"void\",\n \"else\",\n \"break\",\n \"catch\",\n \"instanceof\",\n \"with\",\n \"throw\",\n \"case\",\n \"default\",\n \"try\",\n \"switch\",\n \"continue\",\n \"typeof\",\n \"delete\",\n \"let\",\n \"yield\",\n \"const\",\n \"class\",\n // JS handles these with a special rule\n // \"get\",\n // \"set\",\n \"debugger\",\n \"async\",\n \"await\",\n \"static\",\n \"import\",\n \"from\",\n \"export\",\n \"extends\"\n];\nconst LITERALS = [\n \"true\",\n \"false\",\n \"null\",\n \"undefined\",\n \"NaN\",\n \"Infinity\"\n];\n\nconst TYPES = [\n \"Intl\",\n \"DataView\",\n \"Number\",\n \"Math\",\n \"Date\",\n \"String\",\n \"RegExp\",\n \"Object\",\n \"Function\",\n \"Boolean\",\n \"Error\",\n \"Symbol\",\n \"Set\",\n \"Map\",\n \"WeakSet\",\n \"WeakMap\",\n \"Proxy\",\n \"Reflect\",\n \"JSON\",\n \"Promise\",\n \"Float64Array\",\n \"Int16Array\",\n \"Int32Array\",\n \"Int8Array\",\n \"Uint16Array\",\n \"Uint32Array\",\n \"Float32Array\",\n \"Array\",\n \"Uint8Array\",\n \"Uint8ClampedArray\",\n \"ArrayBuffer\",\n \"BigInt64Array\",\n \"BigUint64Array\",\n \"BigInt\"\n];\n\nconst ERROR_TYPES = [\n \"EvalError\",\n \"InternalError\",\n \"RangeError\",\n \"ReferenceError\",\n \"SyntaxError\",\n \"TypeError\",\n \"URIError\"\n];\n\nconst BUILT_IN_GLOBALS = [\n \"setInterval\",\n \"setTimeout\",\n \"clearInterval\",\n \"clearTimeout\",\n\n \"require\",\n \"exports\",\n\n \"eval\",\n \"isFinite\",\n \"isNaN\",\n \"parseFloat\",\n \"parseInt\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"escape\",\n \"unescape\"\n];\n\nconst BUILT_IN_VARIABLES = [\n \"arguments\",\n \"this\",\n \"super\",\n \"console\",\n \"window\",\n \"document\",\n \"localStorage\",\n \"module\",\n \"global\" // Node.js\n];\n\nconst BUILT_INS = [].concat(\n BUILT_IN_GLOBALS,\n BUILT_IN_VARIABLES,\n TYPES,\n ERROR_TYPES\n);\n\n/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n return concat('(?=', re, ')');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/*\nLanguage: JavaScript\nDescription: JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with first-class functions.\nCategory: common, scripting\nWebsite: https://developer.mozilla.org/en-US/docs/Web/JavaScript\n*/\n\n/** @type LanguageFn */\nfunction javascript(hljs) {\n /**\n * Takes a string like \"<Booger\" and checks to see\n * if we can find a matching \"</Booger\" later in the\n * content.\n * @param {RegExpMatchArray} match\n * @param {{after:number}} param1\n */\n const hasClosingTag = (match, { after }) => {\n const tag = \"</\" + match[0].slice(1);\n const pos = match.input.indexOf(tag, after);\n return pos !== -1;\n };\n\n const IDENT_RE$1 = IDENT_RE;\n const FRAGMENT = {\n begin: '<>',\n end: '</>'\n };\n const XML_TAG = {\n begin: /<[A-Za-z0-9\\\\._:-]+/,\n end: /\\/[A-Za-z0-9\\\\._:-]+>|\\/>/,\n /**\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\n isTrulyOpeningTag: (match, response) => {\n const afterMatchIndex = match[0].length + match.index;\n const nextChar = match.input[afterMatchIndex];\n // nested type?\n // HTML should not include another raw `<` inside a tag\n // But a type might: `<Array<Array<number>>`, etc.\n if (nextChar === \"<\") {\n response.ignoreMatch();\n return;\n }\n // <something>\n // This is now either a tag or a type.\n if (nextChar === \">\") {\n // if we cannot find a matching closing tag, then we\n // will ignore it\n if (!hasClosingTag(match, { after: afterMatchIndex })) {\n response.ignoreMatch();\n }\n }\n }\n };\n const KEYWORDS$1 = {\n $pattern: IDENT_RE,\n keyword: KEYWORDS,\n literal: LITERALS,\n built_in: BUILT_INS\n };\n\n // https://tc39.es/ecma262/#sec-literals-numeric-literals\n const decimalDigits = '[0-9](_?[0-9])*';\n const frac = `\\\\.(${decimalDigits})`;\n // DecimalIntegerLiteral, including Annex B NonOctalDecimalIntegerLiteral\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n const decimalInteger = `0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`;\n const NUMBER = {\n className: 'number',\n variants: [\n // DecimalLiteral\n { begin: `(\\\\b(${decimalInteger})((${frac})|\\\\.)?|(${frac}))` +\n `[eE][+-]?(${decimalDigits})\\\\b` },\n { begin: `\\\\b(${decimalInteger})\\\\b((${frac})\\\\b|\\\\.)?|(${frac})\\\\b` },\n\n // DecimalBigIntegerLiteral\n { begin: `\\\\b(0|[1-9](_?[0-9])*)n\\\\b` },\n\n // NonDecimalIntegerLiteral\n { begin: \"\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\\\b\" },\n { begin: \"\\\\b0[bB][0-1](_?[0-1])*n?\\\\b\" },\n { begin: \"\\\\b0[oO][0-7](_?[0-7])*n?\\\\b\" },\n\n // LegacyOctalIntegerLiteral (does not include underscore separators)\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n { begin: \"\\\\b0[0-7]+n?\\\\b\" },\n ],\n relevance: 0\n };\n\n const SUBST = {\n className: 'subst',\n begin: '\\\\$\\\\{',\n end: '\\\\}',\n keywords: KEYWORDS$1,\n contains: [] // defined later\n };\n const HTML_TEMPLATE = {\n begin: 'html`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'xml'\n }\n };\n const CSS_TEMPLATE = {\n begin: 'css`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'css'\n }\n };\n const TEMPLATE_STRING = {\n className: 'string',\n begin: '`',\n end: '`',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n };\n const JSDOC_COMMENT = hljs.COMMENT(\n /\\/\\*\\*(?!\\/)/,\n '\\\\*/',\n {\n relevance: 0,\n contains: [\n {\n className: 'doctag',\n begin: '@[A-Za-z]+',\n contains: [\n {\n className: 'type',\n begin: '\\\\{',\n end: '\\\\}',\n relevance: 0\n },\n {\n className: 'variable',\n begin: IDENT_RE$1 + '(?=\\\\s*(-)|$)',\n endsParent: true,\n relevance: 0\n },\n // eat spaces (not newlines) so we can find\n // types or variables\n {\n begin: /(?=[^\\n])\\s/,\n relevance: 0\n }\n ]\n }\n ]\n }\n );\n const COMMENT = {\n className: \"comment\",\n variants: [\n JSDOC_COMMENT,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE\n ]\n };\n const SUBST_INTERNALS = [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n TEMPLATE_STRING,\n NUMBER,\n hljs.REGEXP_MODE\n ];\n SUBST.contains = SUBST_INTERNALS\n .concat({\n // we need to pair up {} inside our subst to prevent\n // it from ending too early by matching another }\n begin: /\\{/,\n end: /\\}/,\n keywords: KEYWORDS$1,\n contains: [\n \"self\"\n ].concat(SUBST_INTERNALS)\n });\n const SUBST_AND_COMMENTS = [].concat(COMMENT, SUBST.contains);\n const PARAMS_CONTAINS = SUBST_AND_COMMENTS.concat([\n // eat recursive parens in sub expressions\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS$1,\n contains: [\"self\"].concat(SUBST_AND_COMMENTS)\n }\n ]);\n const PARAMS = {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n };\n\n return {\n name: 'Javascript',\n aliases: ['js', 'jsx', 'mjs', 'cjs'],\n keywords: KEYWORDS$1,\n // this will be extended by TypeScript\n exports: { PARAMS_CONTAINS },\n illegal: /#(?![$_A-z])/,\n contains: [\n hljs.SHEBANG({\n label: \"shebang\",\n binary: \"node\",\n relevance: 5\n }),\n {\n label: \"use_strict\",\n className: 'meta',\n relevance: 10,\n begin: /^\\s*['\"]use (strict|asm)['\"]/\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n TEMPLATE_STRING,\n COMMENT,\n NUMBER,\n { // object attr container\n begin: concat(/[{,\\n]\\s*/,\n // we need to look ahead to make sure that we actually have an\n // attribute coming up so we don't steal a comma from a potential\n // \"value\" container\n //\n // NOTE: this might not work how you think. We don't actually always\n // enter this mode and stay. Instead it might merely match `,\n // <comments up next>` and then immediately end after the , because it\n // fails to find any actual attrs. But this still does the job because\n // it prevents the value contain rule from grabbing this instead and\n // prevening this rule from firing when we actually DO have keys.\n lookahead(concat(\n // we also need to allow for multiple possible comments inbetween\n // the first key:value pairing\n /(((\\/\\/.*$)|(\\/\\*(\\*[^/]|[^*])*\\*\\/))\\s*)*/,\n IDENT_RE$1 + '\\\\s*:'))),\n relevance: 0,\n contains: [\n {\n className: 'attr',\n begin: IDENT_RE$1 + lookahead('\\\\s*:'),\n relevance: 0\n }\n ]\n },\n { // \"value\" container\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n keywords: 'return throw case',\n contains: [\n COMMENT,\n hljs.REGEXP_MODE,\n {\n className: 'function',\n // we have to count the parens to make sure we actually have the\n // correct bounding ( ) before the =>. There could be any number of\n // sub-expressions inside also surrounded by parens.\n begin: '(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*' +\n '\\\\)[^()]*)*' +\n '\\\\)[^()]*)*' +\n '\\\\)|' + hljs.UNDERSCORE_IDENT_RE + ')\\\\s*=>',\n returnBegin: true,\n end: '\\\\s*=>',\n contains: [\n {\n className: 'params',\n variants: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n },\n {\n className: null,\n begin: /\\(\\s*\\)/,\n skip: true\n },\n {\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n }\n ]\n }\n ]\n },\n { // could be a comma delimited list of params to a function call\n begin: /,/, relevance: 0\n },\n {\n className: '',\n begin: /\\s/,\n end: /\\s*/,\n skip: true\n },\n { // JSX\n variants: [\n { begin: FRAGMENT.begin, end: FRAGMENT.end },\n {\n begin: XML_TAG.begin,\n // we carefully check the opening tag to see if it truly\n // is a tag and not a false positive\n 'on:begin': XML_TAG.isTrulyOpeningTag,\n end: XML_TAG.end\n }\n ],\n subLanguage: 'xml',\n contains: [\n {\n begin: XML_TAG.begin,\n end: XML_TAG.end,\n skip: true,\n contains: ['self']\n }\n ]\n }\n ],\n relevance: 0\n },\n {\n className: 'function',\n beginKeywords: 'function',\n end: /[{;]/,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: [\n 'self',\n hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1 }),\n PARAMS\n ],\n illegal: /%/\n },\n {\n // prevent this from getting swallowed up by function\n // since they appear \"function like\"\n beginKeywords: \"while if switch catch for\"\n },\n {\n className: 'function',\n // we have to count the parens to make sure we actually have the correct\n // bounding ( ). There could be any number of sub-expressions inside\n // also surrounded by parens.\n begin: hljs.UNDERSCORE_IDENT_RE +\n '\\\\(' + // first parens\n '[^()]*(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*' +\n '\\\\)[^()]*)*' +\n '\\\\)[^()]*)*' +\n '\\\\)\\\\s*\\\\{', // end parens\n returnBegin:true,\n contains: [\n PARAMS,\n hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1 }),\n ]\n },\n // hack: prevents detection of keywords in some circumstances\n // .keyword()\n // $keyword = x\n {\n variants: [\n { begin: '\\\\.' + IDENT_RE$1 },\n { begin: '\\\\$' + IDENT_RE$1 }\n ],\n relevance: 0\n },\n { // ES6 class\n className: 'class',\n beginKeywords: 'class',\n end: /[{;=]/,\n excludeEnd: true,\n illegal: /[:\"[\\]]/,\n contains: [\n { beginKeywords: 'extends' },\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n begin: /\\b(?=constructor)/,\n end: /[{;]/,\n excludeEnd: true,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1 }),\n 'self',\n PARAMS\n ]\n },\n {\n begin: '(get|set)\\\\s+(?=' + IDENT_RE$1 + '\\\\()',\n end: /\\{/,\n keywords: \"get set\",\n contains: [\n hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1 }),\n { begin: /\\(\\)/ }, // eat to avoid empty params\n PARAMS\n ]\n },\n {\n begin: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\n }\n ]\n };\n}\n\nmodule.exports = javascript;\n","/*\n Language: JBoss CLI\n Author: Raphaël Parrëe <rparree@edc4it.com>\n Description: language definition jboss cli\n Website: https://docs.jboss.org/author/display/WFLY/Command+Line+Interface\n Category: config\n */\n\nfunction jbossCli(hljs) {\n const PARAM = {\n begin: /[\\w-]+ *=/,\n returnBegin: true,\n relevance: 0,\n contains: [\n {\n className: 'attr',\n begin: /[\\w-]+/\n }\n ]\n };\n const PARAMSBLOCK = {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n contains: [PARAM],\n relevance: 0\n };\n const OPERATION = {\n className: 'function',\n begin: /:[\\w\\-.]+/,\n relevance: 0\n };\n const PATH = {\n className: 'string',\n begin: /\\B([\\/.])[\\w\\-.\\/=]+/\n };\n const COMMAND_PARAMS = {\n className: 'params',\n begin: /--[\\w\\-=\\/]+/\n };\n return {\n name: 'JBoss CLI',\n aliases: ['wildfly-cli'],\n keywords: {\n $pattern: '[a-z\\-]+',\n keyword: 'alias batch cd clear command connect connection-factory connection-info data-source deploy ' +\n 'deployment-info deployment-overlay echo echo-dmr help history if jdbc-driver-info jms-queue|20 jms-topic|20 ls ' +\n 'patch pwd quit read-attribute read-operation reload rollout-plan run-batch set shutdown try unalias ' +\n 'undeploy unset version xa-data-source', // module\n literal: 'true false'\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n COMMAND_PARAMS,\n OPERATION,\n PATH,\n PARAMSBLOCK\n ]\n };\n}\n\nmodule.exports = jbossCli;\n","/*\nLanguage: JSON\nDescription: JSON (JavaScript Object Notation) is a lightweight data-interchange format.\nAuthor: Ivan Sagalaev <maniac@softwaremaniacs.org>\nWebsite: http://www.json.org\nCategory: common, protocols\n*/\n\nfunction json(hljs) {\n const LITERALS = {\n literal: 'true false null'\n };\n const ALLOWED_COMMENTS = [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ];\n const TYPES = [\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE\n ];\n const VALUE_CONTAINER = {\n end: ',',\n endsWithParent: true,\n excludeEnd: true,\n contains: TYPES,\n keywords: LITERALS\n };\n const OBJECT = {\n begin: /\\{/,\n end: /\\}/,\n contains: [\n {\n className: 'attr',\n begin: /\"/,\n end: /\"/,\n contains: [hljs.BACKSLASH_ESCAPE],\n illegal: '\\\\n'\n },\n hljs.inherit(VALUE_CONTAINER, {\n begin: /:/\n })\n ].concat(ALLOWED_COMMENTS),\n illegal: '\\\\S'\n };\n const ARRAY = {\n begin: '\\\\[',\n end: '\\\\]',\n contains: [hljs.inherit(VALUE_CONTAINER)], // inherit is a workaround for a bug that makes shared modes with endsWithParent compile only the ending of one of the parents\n illegal: '\\\\S'\n };\n TYPES.push(OBJECT, ARRAY);\n ALLOWED_COMMENTS.forEach(function(rule) {\n TYPES.push(rule);\n });\n return {\n name: 'JSON',\n contains: TYPES,\n keywords: LITERALS,\n illegal: '\\\\S'\n };\n}\n\nmodule.exports = json;\n","/*\nLanguage: Julia REPL\nDescription: Julia REPL sessions\nAuthor: Morten Piibeleht <morten.piibeleht@gmail.com>\nWebsite: https://julialang.org\nRequires: julia.js\n\nThe Julia REPL code blocks look something like the following:\n\n julia> function foo(x)\n x + 1\n end\n foo (generic function with 1 method)\n\nThey start on a new line with \"julia>\". Usually there should also be a space after this, but\nwe also allow the code to start right after the > character. The code may run over multiple\nlines, but the additional lines must start with six spaces (i.e. be indented to match\n\"julia>\"). The rest of the code is assumed to be output from the executed code and will be\nleft un-highlighted.\n\nUsing simply spaces to identify line continuations may get a false-positive if the output\nalso prints out six spaces, but such cases should be rare.\n*/\n\nfunction juliaRepl(hljs) {\n return {\n name: 'Julia REPL',\n contains: [\n {\n className: 'meta',\n begin: /^julia>/,\n relevance: 10,\n starts: {\n // end the highlighting if we are on a new line and the line does not have at\n // least six spaces in the beginning\n end: /^(?![ ]{6})/,\n subLanguage: 'julia'\n },\n // jldoctest Markdown blocks are used in the Julia manual and package docs indicate\n // code snippets that should be verified when the documentation is built. They can be\n // either REPL-like or script-like, but are usually REPL-like and therefore we apply\n // julia-repl highlighting to them. More information can be found in Documenter's\n // manual: https://juliadocs.github.io/Documenter.jl/latest/man/doctests.html\n aliases: ['jldoctest']\n }\n ]\n }\n}\n\nmodule.exports = juliaRepl;\n","/*\nLanguage: Julia\nDescription: Julia is a high-level, high-performance, dynamic programming language.\nAuthor: Kenta Sato <bicycle1885@gmail.com>\nContributors: Alex Arslan <ararslan@comcast.net>, Fredrik Ekre <ekrefredrik@gmail.com>\nWebsite: https://julialang.org\n*/\n\nfunction julia(hljs) {\n // Since there are numerous special names in Julia, it is too much trouble\n // to maintain them by hand. Hence these names (i.e. keywords, literals and\n // built-ins) are automatically generated from Julia 1.5.2 itself through\n // the following scripts for each.\n\n // ref: https://docs.julialang.org/en/v1/manual/variables/#Allowed-Variable-Names\n var VARIABLE_NAME_RE = '[A-Za-z_\\\\u00A1-\\\\uFFFF][A-Za-z_0-9\\\\u00A1-\\\\uFFFF]*';\n\n // # keyword generator, multi-word keywords handled manually below (Julia 1.5.2)\n // import REPL.REPLCompletions\n // res = String[\"in\", \"isa\", \"where\"]\n // for kw in collect(x.keyword for x in REPLCompletions.complete_keyword(\"\"))\n // if !(contains(kw, \" \") || kw == \"struct\")\n // push!(res, kw)\n // end\n // end\n // sort!(unique!(res))\n // foreach(x -> println(\"\\'\", x, \"\\',\"), res)\n var KEYWORD_LIST = [\n 'baremodule',\n 'begin',\n 'break',\n 'catch',\n 'ccall',\n 'const',\n 'continue',\n 'do',\n 'else',\n 'elseif',\n 'end',\n 'export',\n 'false',\n 'finally',\n 'for',\n 'function',\n 'global',\n 'if',\n 'import',\n 'in',\n 'isa',\n 'let',\n 'local',\n 'macro',\n 'module',\n 'quote',\n 'return',\n 'true',\n 'try',\n 'using',\n 'where',\n 'while',\n ];\n\n // # literal generator (Julia 1.5.2)\n // import REPL.REPLCompletions\n // res = String[\"true\", \"false\"]\n // for compl in filter!(x -> isa(x, REPLCompletions.ModuleCompletion) && (x.parent === Base || x.parent === Core),\n // REPLCompletions.completions(\"\", 0)[1])\n // try\n // v = eval(Symbol(compl.mod))\n // if !(v isa Function || v isa Type || v isa TypeVar || v isa Module || v isa Colon)\n // push!(res, compl.mod)\n // end\n // catch e\n // end\n // end\n // sort!(unique!(res))\n // foreach(x -> println(\"\\'\", x, \"\\',\"), res)\n var LITERAL_LIST = [\n 'ARGS',\n 'C_NULL',\n 'DEPOT_PATH',\n 'ENDIAN_BOM',\n 'ENV',\n 'Inf',\n 'Inf16',\n 'Inf32',\n 'Inf64',\n 'InsertionSort',\n 'LOAD_PATH',\n 'MergeSort',\n 'NaN',\n 'NaN16',\n 'NaN32',\n 'NaN64',\n 'PROGRAM_FILE',\n 'QuickSort',\n 'RoundDown',\n 'RoundFromZero',\n 'RoundNearest',\n 'RoundNearestTiesAway',\n 'RoundNearestTiesUp',\n 'RoundToZero',\n 'RoundUp',\n 'VERSION|0',\n 'devnull',\n 'false',\n 'im',\n 'missing',\n 'nothing',\n 'pi',\n 'stderr',\n 'stdin',\n 'stdout',\n 'true',\n 'undef',\n 'π',\n 'ℯ',\n ];\n\n // # built_in generator (Julia 1.5.2)\n // import REPL.REPLCompletions\n // res = String[]\n // for compl in filter!(x -> isa(x, REPLCompletions.ModuleCompletion) && (x.parent === Base || x.parent === Core),\n // REPLCompletions.completions(\"\", 0)[1])\n // try\n // v = eval(Symbol(compl.mod))\n // if (v isa Type || v isa TypeVar) && (compl.mod != \"=>\")\n // push!(res, compl.mod)\n // end\n // catch e\n // end\n // end\n // sort!(unique!(res))\n // foreach(x -> println(\"\\'\", x, \"\\',\"), res)\n var BUILT_IN_LIST = [\n 'AbstractArray',\n 'AbstractChannel',\n 'AbstractChar',\n 'AbstractDict',\n 'AbstractDisplay',\n 'AbstractFloat',\n 'AbstractIrrational',\n 'AbstractMatrix',\n 'AbstractRange',\n 'AbstractSet',\n 'AbstractString',\n 'AbstractUnitRange',\n 'AbstractVecOrMat',\n 'AbstractVector',\n 'Any',\n 'ArgumentError',\n 'Array',\n 'AssertionError',\n 'BigFloat',\n 'BigInt',\n 'BitArray',\n 'BitMatrix',\n 'BitSet',\n 'BitVector',\n 'Bool',\n 'BoundsError',\n 'CapturedException',\n 'CartesianIndex',\n 'CartesianIndices',\n 'Cchar',\n 'Cdouble',\n 'Cfloat',\n 'Channel',\n 'Char',\n 'Cint',\n 'Cintmax_t',\n 'Clong',\n 'Clonglong',\n 'Cmd',\n 'Colon',\n 'Complex',\n 'ComplexF16',\n 'ComplexF32',\n 'ComplexF64',\n 'CompositeException',\n 'Condition',\n 'Cptrdiff_t',\n 'Cshort',\n 'Csize_t',\n 'Cssize_t',\n 'Cstring',\n 'Cuchar',\n 'Cuint',\n 'Cuintmax_t',\n 'Culong',\n 'Culonglong',\n 'Cushort',\n 'Cvoid',\n 'Cwchar_t',\n 'Cwstring',\n 'DataType',\n 'DenseArray',\n 'DenseMatrix',\n 'DenseVecOrMat',\n 'DenseVector',\n 'Dict',\n 'DimensionMismatch',\n 'Dims',\n 'DivideError',\n 'DomainError',\n 'EOFError',\n 'Enum',\n 'ErrorException',\n 'Exception',\n 'ExponentialBackOff',\n 'Expr',\n 'Float16',\n 'Float32',\n 'Float64',\n 'Function',\n 'GlobalRef',\n 'HTML',\n 'IO',\n 'IOBuffer',\n 'IOContext',\n 'IOStream',\n 'IdDict',\n 'IndexCartesian',\n 'IndexLinear',\n 'IndexStyle',\n 'InexactError',\n 'InitError',\n 'Int',\n 'Int128',\n 'Int16',\n 'Int32',\n 'Int64',\n 'Int8',\n 'Integer',\n 'InterruptException',\n 'InvalidStateException',\n 'Irrational',\n 'KeyError',\n 'LinRange',\n 'LineNumberNode',\n 'LinearIndices',\n 'LoadError',\n 'MIME',\n 'Matrix',\n 'Method',\n 'MethodError',\n 'Missing',\n 'MissingException',\n 'Module',\n 'NTuple',\n 'NamedTuple',\n 'Nothing',\n 'Number',\n 'OrdinalRange',\n 'OutOfMemoryError',\n 'OverflowError',\n 'Pair',\n 'PartialQuickSort',\n 'PermutedDimsArray',\n 'Pipe',\n 'ProcessFailedException',\n 'Ptr',\n 'QuoteNode',\n 'Rational',\n 'RawFD',\n 'ReadOnlyMemoryError',\n 'Real',\n 'ReentrantLock',\n 'Ref',\n 'Regex',\n 'RegexMatch',\n 'RoundingMode',\n 'SegmentationFault',\n 'Set',\n 'Signed',\n 'Some',\n 'StackOverflowError',\n 'StepRange',\n 'StepRangeLen',\n 'StridedArray',\n 'StridedMatrix',\n 'StridedVecOrMat',\n 'StridedVector',\n 'String',\n 'StringIndexError',\n 'SubArray',\n 'SubString',\n 'SubstitutionString',\n 'Symbol',\n 'SystemError',\n 'Task',\n 'TaskFailedException',\n 'Text',\n 'TextDisplay',\n 'Timer',\n 'Tuple',\n 'Type',\n 'TypeError',\n 'TypeVar',\n 'UInt',\n 'UInt128',\n 'UInt16',\n 'UInt32',\n 'UInt64',\n 'UInt8',\n 'UndefInitializer',\n 'UndefKeywordError',\n 'UndefRefError',\n 'UndefVarError',\n 'Union',\n 'UnionAll',\n 'UnitRange',\n 'Unsigned',\n 'Val',\n 'Vararg',\n 'VecElement',\n 'VecOrMat',\n 'Vector',\n 'VersionNumber',\n 'WeakKeyDict',\n 'WeakRef',\n ];\n\n var KEYWORDS = {\n $pattern: VARIABLE_NAME_RE,\n keyword: KEYWORD_LIST,\n literal: LITERAL_LIST,\n built_in: BUILT_IN_LIST,\n };\n\n // placeholder for recursive self-reference\n var DEFAULT = {\n keywords: KEYWORDS, illegal: /<\\//\n };\n\n // ref: https://docs.julialang.org/en/v1/manual/integers-and-floating-point-numbers/\n var NUMBER = {\n className: 'number',\n // supported numeric literals:\n // * binary literal (e.g. 0x10)\n // * octal literal (e.g. 0o76543210)\n // * hexadecimal literal (e.g. 0xfedcba876543210)\n // * hexadecimal floating point literal (e.g. 0x1p0, 0x1.2p2)\n // * decimal literal (e.g. 9876543210, 100_000_000)\n // * floating pointe literal (e.g. 1.2, 1.2f, .2, 1., 1.2e10, 1.2e-10)\n begin: /(\\b0x[\\d_]*(\\.[\\d_]*)?|0x\\.\\d[\\d_]*)p[-+]?\\d+|\\b0[box][a-fA-F0-9][a-fA-F0-9_]*|(\\b\\d[\\d_]*(\\.[\\d_]*)?|\\.\\d[\\d_]*)([eEfF][-+]?\\d+)?/,\n relevance: 0\n };\n\n var CHAR = {\n className: 'string',\n begin: /'(.|\\\\[xXuU][a-zA-Z0-9]+)'/\n };\n\n var INTERPOLATION = {\n className: 'subst',\n begin: /\\$\\(/, end: /\\)/,\n keywords: KEYWORDS\n };\n\n var INTERPOLATED_VARIABLE = {\n className: 'variable',\n begin: '\\\\$' + VARIABLE_NAME_RE\n };\n\n // TODO: neatly escape normal code in string literal\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, INTERPOLATION, INTERPOLATED_VARIABLE],\n variants: [\n { begin: /\\w*\"\"\"/, end: /\"\"\"\\w*/, relevance: 10 },\n { begin: /\\w*\"/, end: /\"\\w*/ }\n ]\n };\n\n var COMMAND = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, INTERPOLATION, INTERPOLATED_VARIABLE],\n begin: '`', end: '`'\n };\n\n var MACROCALL = {\n className: 'meta',\n begin: '@' + VARIABLE_NAME_RE\n };\n\n var COMMENT = {\n className: 'comment',\n variants: [\n { begin: '#=', end: '=#', relevance: 10 },\n { begin: '#', end: '$' }\n ]\n };\n\n DEFAULT.name = 'Julia';\n DEFAULT.contains = [\n NUMBER,\n CHAR,\n STRING,\n COMMAND,\n MACROCALL,\n COMMENT,\n hljs.HASH_COMMENT_MODE,\n {\n className: 'keyword',\n begin:\n '\\\\b(((abstract|primitive)\\\\s+)type|(mutable\\\\s+)?struct)\\\\b'\n },\n {begin: /<:/} // relevance booster\n ];\n INTERPOLATION.contains = DEFAULT.contains;\n\n return DEFAULT;\n}\n\nmodule.exports = julia;\n","// https://docs.oracle.com/javase/specs/jls/se15/html/jls-3.html#jls-3.10\nvar decimalDigits = '[0-9](_*[0-9])*';\nvar frac = `\\\\.(${decimalDigits})`;\nvar hexDigits = '[0-9a-fA-F](_*[0-9a-fA-F])*';\nvar NUMERIC = {\n className: 'number',\n variants: [\n // DecimalFloatingPointLiteral\n // including ExponentPart\n { begin: `(\\\\b(${decimalDigits})((${frac})|\\\\.)?|(${frac}))` +\n `[eE][+-]?(${decimalDigits})[fFdD]?\\\\b` },\n // excluding ExponentPart\n { begin: `\\\\b(${decimalDigits})((${frac})[fFdD]?\\\\b|\\\\.([fFdD]\\\\b)?)` },\n { begin: `(${frac})[fFdD]?\\\\b` },\n { begin: `\\\\b(${decimalDigits})[fFdD]\\\\b` },\n\n // HexadecimalFloatingPointLiteral\n { begin: `\\\\b0[xX]((${hexDigits})\\\\.?|(${hexDigits})?\\\\.(${hexDigits}))` +\n `[pP][+-]?(${decimalDigits})[fFdD]?\\\\b` },\n\n // DecimalIntegerLiteral\n { begin: '\\\\b(0|[1-9](_*[0-9])*)[lL]?\\\\b' },\n\n // HexIntegerLiteral\n { begin: `\\\\b0[xX](${hexDigits})[lL]?\\\\b` },\n\n // OctalIntegerLiteral\n { begin: '\\\\b0(_*[0-7])*[lL]?\\\\b' },\n\n // BinaryIntegerLiteral\n { begin: '\\\\b0[bB][01](_*[01])*[lL]?\\\\b' },\n ],\n relevance: 0\n};\n\n/*\n Language: Kotlin\n Description: Kotlin is an OSS statically typed programming language that targets the JVM, Android, JavaScript and Native.\n Author: Sergey Mashkov <cy6erGn0m@gmail.com>\n Website: https://kotlinlang.org\n Category: common\n */\n\nfunction kotlin(hljs) {\n const KEYWORDS = {\n keyword:\n 'abstract as val var vararg get set class object open private protected public noinline ' +\n 'crossinline dynamic final enum if else do while for when throw try catch finally ' +\n 'import package is in fun override companion reified inline lateinit init ' +\n 'interface annotation data sealed internal infix operator out by constructor super ' +\n 'tailrec where const inner suspend typealias external expect actual',\n built_in:\n 'Byte Short Char Int Long Boolean Float Double Void Unit Nothing',\n literal:\n 'true false null'\n };\n const KEYWORDS_WITH_LABEL = {\n className: 'keyword',\n begin: /\\b(break|continue|return|this)\\b/,\n starts: {\n contains: [\n {\n className: 'symbol',\n begin: /@\\w+/\n }\n ]\n }\n };\n const LABEL = {\n className: 'symbol',\n begin: hljs.UNDERSCORE_IDENT_RE + '@'\n };\n\n // for string templates\n const SUBST = {\n className: 'subst',\n begin: /\\$\\{/,\n end: /\\}/,\n contains: [ hljs.C_NUMBER_MODE ]\n };\n const VARIABLE = {\n className: 'variable',\n begin: '\\\\$' + hljs.UNDERSCORE_IDENT_RE\n };\n const STRING = {\n className: 'string',\n variants: [\n {\n begin: '\"\"\"',\n end: '\"\"\"(?=[^\"])',\n contains: [\n VARIABLE,\n SUBST\n ]\n },\n // Can't use built-in modes easily, as we want to use STRING in the meta\n // context as 'meta-string' and there's no syntax to remove explicitly set\n // classNames in built-in modes.\n {\n begin: '\\'',\n end: '\\'',\n illegal: /\\n/,\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: '\"',\n end: '\"',\n illegal: /\\n/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VARIABLE,\n SUBST\n ]\n }\n ]\n };\n SUBST.contains.push(STRING);\n\n const ANNOTATION_USE_SITE = {\n className: 'meta',\n begin: '@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\\\s*:(?:\\\\s*' + hljs.UNDERSCORE_IDENT_RE + ')?'\n };\n const ANNOTATION = {\n className: 'meta',\n begin: '@' + hljs.UNDERSCORE_IDENT_RE,\n contains: [\n {\n begin: /\\(/,\n end: /\\)/,\n contains: [\n hljs.inherit(STRING, {\n className: 'meta-string'\n })\n ]\n }\n ]\n };\n\n // https://kotlinlang.org/docs/reference/whatsnew11.html#underscores-in-numeric-literals\n // According to the doc above, the number mode of kotlin is the same as java 8,\n // so the code below is copied from java.js\n const KOTLIN_NUMBER_MODE = NUMERIC;\n const KOTLIN_NESTED_COMMENT = hljs.COMMENT(\n '/\\\\*', '\\\\*/',\n {\n contains: [ hljs.C_BLOCK_COMMENT_MODE ]\n }\n );\n const KOTLIN_PAREN_TYPE = {\n variants: [\n {\n className: 'type',\n begin: hljs.UNDERSCORE_IDENT_RE\n },\n {\n begin: /\\(/,\n end: /\\)/,\n contains: [] // defined later\n }\n ]\n };\n const KOTLIN_PAREN_TYPE2 = KOTLIN_PAREN_TYPE;\n KOTLIN_PAREN_TYPE2.variants[1].contains = [ KOTLIN_PAREN_TYPE ];\n KOTLIN_PAREN_TYPE.variants[1].contains = [ KOTLIN_PAREN_TYPE2 ];\n\n return {\n name: 'Kotlin',\n aliases: [ 'kt', 'kts' ],\n keywords: KEYWORDS,\n contains: [\n hljs.COMMENT(\n '/\\\\*\\\\*',\n '\\\\*/',\n {\n relevance: 0,\n contains: [\n {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n }\n ]\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n KOTLIN_NESTED_COMMENT,\n KEYWORDS_WITH_LABEL,\n LABEL,\n ANNOTATION_USE_SITE,\n ANNOTATION,\n {\n className: 'function',\n beginKeywords: 'fun',\n end: '[(]|$',\n returnBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n relevance: 5,\n contains: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(',\n returnBegin: true,\n relevance: 0,\n contains: [ hljs.UNDERSCORE_TITLE_MODE ]\n },\n {\n className: 'type',\n begin: /</,\n end: />/,\n keywords: 'reified',\n relevance: 0\n },\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n endsParent: true,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n {\n begin: /:/,\n end: /[=,\\/]/,\n endsWithParent: true,\n contains: [\n KOTLIN_PAREN_TYPE,\n hljs.C_LINE_COMMENT_MODE,\n KOTLIN_NESTED_COMMENT\n ],\n relevance: 0\n },\n hljs.C_LINE_COMMENT_MODE,\n KOTLIN_NESTED_COMMENT,\n ANNOTATION_USE_SITE,\n ANNOTATION,\n STRING,\n hljs.C_NUMBER_MODE\n ]\n },\n KOTLIN_NESTED_COMMENT\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class interface trait', // remove 'trait' when removed from KEYWORDS\n end: /[:\\{(]|$/,\n excludeEnd: true,\n illegal: 'extends implements',\n contains: [\n {\n beginKeywords: 'public protected internal private constructor'\n },\n hljs.UNDERSCORE_TITLE_MODE,\n {\n className: 'type',\n begin: /</,\n end: />/,\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0\n },\n {\n className: 'type',\n begin: /[,:]\\s*/,\n end: /[<\\(,]|$/,\n excludeBegin: true,\n returnEnd: true\n },\n ANNOTATION_USE_SITE,\n ANNOTATION\n ]\n },\n STRING,\n {\n className: 'meta',\n begin: \"^#!/usr/bin/env\",\n end: '$',\n illegal: '\\n'\n },\n KOTLIN_NUMBER_MODE\n ]\n };\n}\n\nmodule.exports = kotlin;\n","/*\nLanguage: Lasso\nAuthor: Eric Knibbe <eric@lassosoft.com>\nDescription: Lasso is a language and server platform for database-driven web applications. This definition handles Lasso 9 syntax and LassoScript for Lasso 8.6 and earlier.\nWebsite: http://www.lassosoft.com/What-Is-Lasso\n*/\n\nfunction lasso(hljs) {\n const LASSO_IDENT_RE = '[a-zA-Z_][\\\\w.]*';\n const LASSO_ANGLE_RE = '<\\\\?(lasso(script)?|=)';\n const LASSO_CLOSE_RE = '\\\\]|\\\\?>';\n const LASSO_KEYWORDS = {\n $pattern: LASSO_IDENT_RE + '|&[lg]t;',\n literal:\n 'true false none minimal full all void and or not ' +\n 'bw nbw ew new cn ncn lt lte gt gte eq neq rx nrx ft',\n built_in:\n 'array date decimal duration integer map pair string tag xml null ' +\n 'boolean bytes keyword list locale queue set stack staticarray ' +\n 'local var variable global data self inherited currentcapture givenblock',\n keyword:\n 'cache database_names database_schemanames database_tablenames ' +\n 'define_tag define_type email_batch encode_set html_comment handle ' +\n 'handle_error header if inline iterate ljax_target link ' +\n 'link_currentaction link_currentgroup link_currentrecord link_detail ' +\n 'link_firstgroup link_firstrecord link_lastgroup link_lastrecord ' +\n 'link_nextgroup link_nextrecord link_prevgroup link_prevrecord log ' +\n 'loop namespace_using output_none portal private protect records ' +\n 'referer referrer repeating resultset rows search_args ' +\n 'search_arguments select sort_args sort_arguments thread_atomic ' +\n 'value_list while abort case else fail_if fail_ifnot fail if_empty ' +\n 'if_false if_null if_true loop_abort loop_continue loop_count params ' +\n 'params_up return return_value run_children soap_definetag ' +\n 'soap_lastrequest soap_lastresponse tag_name ascending average by ' +\n 'define descending do equals frozen group handle_failure import in ' +\n 'into join let match max min on order parent protected provide public ' +\n 'require returnhome skip split_thread sum take thread to trait type ' +\n 'where with yield yieldhome'\n };\n const HTML_COMMENT = hljs.COMMENT(\n '<!--',\n '-->',\n {\n relevance: 0\n }\n );\n const LASSO_NOPROCESS = {\n className: 'meta',\n begin: '\\\\[noprocess\\\\]',\n starts: {\n end: '\\\\[/noprocess\\\\]',\n returnEnd: true,\n contains: [HTML_COMMENT]\n }\n };\n const LASSO_START = {\n className: 'meta',\n begin: '\\\\[/noprocess|' + LASSO_ANGLE_RE\n };\n const LASSO_DATAMEMBER = {\n className: 'symbol',\n begin: '\\'' + LASSO_IDENT_RE + '\\''\n };\n const LASSO_CODE = [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.inherit(hljs.C_NUMBER_MODE, {\n begin: hljs.C_NUMBER_RE + '|(-?infinity|NaN)\\\\b'\n }),\n hljs.inherit(hljs.APOS_STRING_MODE, {\n illegal: null\n }),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {\n illegal: null\n }),\n {\n className: 'string',\n begin: '`',\n end: '`'\n },\n { // variables\n variants: [\n {\n begin: '[#$]' + LASSO_IDENT_RE\n },\n {\n begin: '#',\n end: '\\\\d+',\n illegal: '\\\\W'\n }\n ]\n },\n {\n className: 'type',\n begin: '::\\\\s*',\n end: LASSO_IDENT_RE,\n illegal: '\\\\W'\n },\n {\n className: 'params',\n variants: [\n {\n begin: '-(?!infinity)' + LASSO_IDENT_RE,\n relevance: 0\n },\n {\n begin: '(\\\\.\\\\.\\\\.)'\n }\n ]\n },\n {\n begin: /(->|\\.)\\s*/,\n relevance: 0,\n contains: [LASSO_DATAMEMBER]\n },\n {\n className: 'class',\n beginKeywords: 'define',\n returnEnd: true,\n end: '\\\\(|=>',\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n begin: LASSO_IDENT_RE + '(=(?!>))?|[-+*/%](?!>)'\n })\n ]\n }\n ];\n return {\n name: 'Lasso',\n aliases: [\n 'ls',\n 'lassoscript'\n ],\n case_insensitive: true,\n keywords: LASSO_KEYWORDS,\n contains: [\n {\n className: 'meta',\n begin: LASSO_CLOSE_RE,\n relevance: 0,\n starts: { // markup\n end: '\\\\[|' + LASSO_ANGLE_RE,\n returnEnd: true,\n relevance: 0,\n contains: [HTML_COMMENT]\n }\n },\n LASSO_NOPROCESS,\n LASSO_START,\n {\n className: 'meta',\n begin: '\\\\[no_square_brackets',\n starts: {\n end: '\\\\[/no_square_brackets\\\\]', // not implemented in the language\n keywords: LASSO_KEYWORDS,\n contains: [\n {\n className: 'meta',\n begin: LASSO_CLOSE_RE,\n relevance: 0,\n starts: {\n end: '\\\\[noprocess\\\\]|' + LASSO_ANGLE_RE,\n returnEnd: true,\n contains: [HTML_COMMENT]\n }\n },\n LASSO_NOPROCESS,\n LASSO_START\n ].concat(LASSO_CODE)\n }\n },\n {\n className: 'meta',\n begin: '\\\\[',\n relevance: 0\n },\n {\n className: 'meta',\n begin: '^#!',\n end: 'lasso9$',\n relevance: 10\n }\n ].concat(LASSO_CODE)\n };\n}\n\nmodule.exports = lasso;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] } args\n * @returns {string}\n */\nfunction either(...args) {\n const joined = '(' + args.map((x) => source(x)).join(\"|\") + \")\";\n return joined;\n}\n\n/*\nLanguage: LaTeX\nAuthor: Benedikt Wilde <bwilde@posteo.de>\nWebsite: https://www.latex-project.org\nCategory: markup\n*/\n\n/** @type LanguageFn */\nfunction latex(hljs) {\n const KNOWN_CONTROL_WORDS = either(...[\n '(?:NeedsTeXFormat|RequirePackage|GetIdInfo)',\n 'Provides(?:Expl)?(?:Package|Class|File)',\n '(?:DeclareOption|ProcessOptions)',\n '(?:documentclass|usepackage|input|include)',\n 'makeat(?:letter|other)',\n 'ExplSyntax(?:On|Off)',\n '(?:new|renew|provide)?command',\n '(?:re)newenvironment',\n '(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand',\n '(?:New|Renew|Provide|Declare)DocumentEnvironment',\n '(?:(?:e|g|x)?def|let)',\n '(?:begin|end)',\n '(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)',\n 'caption',\n '(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)',\n '(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)',\n '(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)',\n '(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)',\n '(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)',\n '(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)'\n ].map(word => word + '(?![a-zA-Z@:_])'));\n const L3_REGEX = new RegExp([\n // A function \\module_function_name:signature or \\__module_function_name:signature,\n // where both module and function_name need at least two characters and\n // function_name may contain single underscores.\n '(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*',\n // A variable \\scope_module_and_name_type or \\scope__module_ane_name_type,\n // where scope is one of l, g or c, type needs at least two characters\n // and module_and_name may contain single underscores.\n '[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}',\n // A quark \\q_the_name or \\q__the_name or\n // scan mark \\s_the_name or \\s__vthe_name,\n // where variable_name needs at least two characters and\n // may contain single underscores.\n '[qs]__?[a-zA-Z](?:_?[a-zA-Z])+',\n // Other LaTeX3 macro names that are not covered by the three rules above.\n 'use(?:_i)?:[a-zA-Z]*',\n '(?:else|fi|or):',\n '(?:if|cs|exp):w',\n '(?:hbox|vbox):n',\n '::[a-zA-Z]_unbraced',\n '::[a-zA-Z:]'\n ].map(pattern => pattern + '(?![a-zA-Z:_])').join('|'));\n const L2_VARIANTS = [\n {begin: /[a-zA-Z@]+/}, // control word\n {begin: /[^a-zA-Z@]?/} // control symbol\n ];\n const DOUBLE_CARET_VARIANTS = [\n {begin: /\\^{6}[0-9a-f]{6}/},\n {begin: /\\^{5}[0-9a-f]{5}/},\n {begin: /\\^{4}[0-9a-f]{4}/},\n {begin: /\\^{3}[0-9a-f]{3}/},\n {begin: /\\^{2}[0-9a-f]{2}/},\n {begin: /\\^{2}[\\u0000-\\u007f]/}\n ];\n const CONTROL_SEQUENCE = {\n className: 'keyword',\n begin: /\\\\/,\n relevance: 0,\n contains: [\n {\n endsParent: true,\n begin: KNOWN_CONTROL_WORDS\n },\n {\n endsParent: true,\n begin: L3_REGEX\n },\n {\n endsParent: true,\n variants: DOUBLE_CARET_VARIANTS\n },\n {\n endsParent: true,\n relevance: 0,\n variants: L2_VARIANTS\n }\n ]\n };\n const MACRO_PARAM = {\n className: 'params',\n relevance: 0,\n begin: /#+\\d?/\n };\n const DOUBLE_CARET_CHAR = {\n // relevance: 1\n variants: DOUBLE_CARET_VARIANTS\n };\n const SPECIAL_CATCODE = {\n className: 'built_in',\n relevance: 0,\n begin: /[$&^_]/\n };\n const MAGIC_COMMENT = {\n className: 'meta',\n begin: '% !TeX',\n end: '$',\n relevance: 10\n };\n const COMMENT = hljs.COMMENT(\n '%',\n '$',\n {\n relevance: 0\n }\n );\n const EVERYTHING_BUT_VERBATIM = [\n CONTROL_SEQUENCE,\n MACRO_PARAM,\n DOUBLE_CARET_CHAR,\n SPECIAL_CATCODE,\n MAGIC_COMMENT,\n COMMENT\n ];\n const BRACE_GROUP_NO_VERBATIM = {\n begin: /\\{/, end: /\\}/,\n relevance: 0,\n contains: ['self', ...EVERYTHING_BUT_VERBATIM]\n };\n const ARGUMENT_BRACES = hljs.inherit(\n BRACE_GROUP_NO_VERBATIM,\n {\n relevance: 0,\n endsParent: true,\n contains: [BRACE_GROUP_NO_VERBATIM, ...EVERYTHING_BUT_VERBATIM]\n }\n );\n const ARGUMENT_BRACKETS = {\n begin: /\\[/,\n end: /\\]/,\n endsParent: true,\n relevance: 0,\n contains: [BRACE_GROUP_NO_VERBATIM, ...EVERYTHING_BUT_VERBATIM]\n };\n const SPACE_GOBBLER = {\n begin: /\\s+/,\n relevance: 0\n };\n const ARGUMENT_M = [ARGUMENT_BRACES];\n const ARGUMENT_O = [ARGUMENT_BRACKETS];\n const ARGUMENT_AND_THEN = function(arg, starts_mode) {\n return {\n contains: [SPACE_GOBBLER],\n starts: {\n relevance: 0,\n contains: arg,\n starts: starts_mode\n }\n };\n };\n const CSNAME = function(csname, starts_mode) {\n return {\n begin: '\\\\\\\\' + csname + '(?![a-zA-Z@:_])',\n keywords: {$pattern: /\\\\[a-zA-Z]+/, keyword: '\\\\' + csname},\n relevance: 0,\n contains: [SPACE_GOBBLER],\n starts: starts_mode\n };\n };\n const BEGIN_ENV = function(envname, starts_mode) {\n return hljs.inherit(\n {\n begin: '\\\\\\\\begin(?=[ \\t]*(\\\\r?\\\\n[ \\t]*)?\\\\{' + envname + '\\\\})',\n keywords: {$pattern: /\\\\[a-zA-Z]+/, keyword: '\\\\begin'},\n relevance: 0,\n },\n ARGUMENT_AND_THEN(ARGUMENT_M, starts_mode)\n );\n };\n const VERBATIM_DELIMITED_EQUAL = (innerName = \"string\") => {\n return hljs.END_SAME_AS_BEGIN({\n className: innerName,\n begin: /(.|\\r?\\n)/,\n end: /(.|\\r?\\n)/,\n excludeBegin: true,\n excludeEnd: true,\n endsParent: true\n });\n };\n const VERBATIM_DELIMITED_ENV = function(envname) {\n return {\n className: 'string',\n end: '(?=\\\\\\\\end\\\\{' + envname + '\\\\})'\n };\n };\n\n const VERBATIM_DELIMITED_BRACES = (innerName = \"string\") => {\n return {\n relevance: 0,\n begin: /\\{/,\n starts: {\n endsParent: true,\n contains: [\n {\n className: innerName,\n end: /(?=\\})/,\n endsParent:true,\n contains: [\n {\n begin: /\\{/,\n end: /\\}/,\n relevance: 0,\n contains: [\"self\"]\n }\n ],\n }\n ]\n }\n };\n };\n const VERBATIM = [\n ...['verb', 'lstinline'].map(csname => CSNAME(csname, {contains: [VERBATIM_DELIMITED_EQUAL()]})),\n CSNAME('mint', ARGUMENT_AND_THEN(ARGUMENT_M, {contains: [VERBATIM_DELIMITED_EQUAL()]})),\n CSNAME('mintinline', ARGUMENT_AND_THEN(ARGUMENT_M, {contains: [VERBATIM_DELIMITED_BRACES(), VERBATIM_DELIMITED_EQUAL()]})),\n CSNAME('url', {contains: [VERBATIM_DELIMITED_BRACES(\"link\"), VERBATIM_DELIMITED_BRACES(\"link\")]}),\n CSNAME('hyperref', {contains: [VERBATIM_DELIMITED_BRACES(\"link\")]}),\n CSNAME('href', ARGUMENT_AND_THEN(ARGUMENT_O, {contains: [VERBATIM_DELIMITED_BRACES(\"link\")]})),\n ...[].concat(...['', '\\\\*'].map(suffix => [\n BEGIN_ENV('verbatim' + suffix, VERBATIM_DELIMITED_ENV('verbatim' + suffix)),\n BEGIN_ENV('filecontents' + suffix, ARGUMENT_AND_THEN(ARGUMENT_M, VERBATIM_DELIMITED_ENV('filecontents' + suffix))),\n ...['', 'B', 'L'].map(prefix =>\n BEGIN_ENV(prefix + 'Verbatim' + suffix, ARGUMENT_AND_THEN(ARGUMENT_O, VERBATIM_DELIMITED_ENV(prefix + 'Verbatim' + suffix)))\n )\n ])),\n BEGIN_ENV('minted', ARGUMENT_AND_THEN(ARGUMENT_O, ARGUMENT_AND_THEN(ARGUMENT_M, VERBATIM_DELIMITED_ENV('minted')))),\n ];\n\n return {\n name: 'LaTeX',\n aliases: ['tex'],\n contains: [\n ...VERBATIM,\n ...EVERYTHING_BUT_VERBATIM\n ]\n };\n}\n\nmodule.exports = latex;\n","/*\nLanguage: LDIF\nContributors: Jacob Childress <jacobc@gmail.com>\nCategory: enterprise, config\nWebsite: https://en.wikipedia.org/wiki/LDAP_Data_Interchange_Format\n*/\nfunction ldif(hljs) {\n return {\n name: 'LDIF',\n contains: [\n {\n className: 'attribute',\n begin: '^dn',\n end: ': ',\n excludeEnd: true,\n starts: {\n end: '$',\n relevance: 0\n },\n relevance: 10\n },\n {\n className: 'attribute',\n begin: '^\\\\w',\n end: ': ',\n excludeEnd: true,\n starts: {\n end: '$',\n relevance: 0\n }\n },\n {\n className: 'literal',\n begin: '^-',\n end: '$'\n },\n hljs.HASH_COMMENT_MODE\n ]\n };\n}\n\nmodule.exports = ldif;\n","/*\nLanguage: Leaf\nAuthor: Hale Chan <halechan@qq.com>\nDescription: Based on the Leaf reference from https://vapor.github.io/documentation/guide/leaf.html.\n*/\n\nfunction leaf(hljs) {\n return {\n name: 'Leaf',\n contains: [\n {\n className: 'function',\n begin: '#+' + '[A-Za-z_0-9]*' + '\\\\(',\n end: / \\{/,\n returnBegin: true,\n excludeEnd: true,\n contains: [\n {\n className: 'keyword',\n begin: '#+'\n },\n {\n className: 'title',\n begin: '[A-Za-z_][A-Za-z_0-9]*'\n },\n {\n className: 'params',\n begin: '\\\\(',\n end: '\\\\)',\n endsParent: true,\n contains: [\n {\n className: 'string',\n begin: '\"',\n end: '\"'\n },\n {\n className: 'variable',\n begin: '[A-Za-z_][A-Za-z_0-9]*'\n }\n ]\n }\n ]\n }\n ]\n };\n}\n\nmodule.exports = leaf;\n","const MODES = (hljs) => {\n return {\n IMPORTANT: {\n className: 'meta',\n begin: '!important'\n },\n HEXCOLOR: {\n className: 'number',\n begin: '#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})'\n },\n ATTRIBUTE_SELECTOR_MODE: {\n className: 'selector-attr',\n begin: /\\[/,\n end: /\\]/,\n illegal: '$',\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n }\n };\n};\n\nconst TAGS = [\n 'a',\n 'abbr',\n 'address',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'blockquote',\n 'body',\n 'button',\n 'canvas',\n 'caption',\n 'cite',\n 'code',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'header',\n 'hgroup',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'mark',\n 'menu',\n 'nav',\n 'object',\n 'ol',\n 'p',\n 'q',\n 'quote',\n 'samp',\n 'section',\n 'span',\n 'strong',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'ul',\n 'var',\n 'video'\n];\n\nconst MEDIA_FEATURES = [\n 'any-hover',\n 'any-pointer',\n 'aspect-ratio',\n 'color',\n 'color-gamut',\n 'color-index',\n 'device-aspect-ratio',\n 'device-height',\n 'device-width',\n 'display-mode',\n 'forced-colors',\n 'grid',\n 'height',\n 'hover',\n 'inverted-colors',\n 'monochrome',\n 'orientation',\n 'overflow-block',\n 'overflow-inline',\n 'pointer',\n 'prefers-color-scheme',\n 'prefers-contrast',\n 'prefers-reduced-motion',\n 'prefers-reduced-transparency',\n 'resolution',\n 'scan',\n 'scripting',\n 'update',\n 'width',\n // TODO: find a better solution?\n 'min-width',\n 'max-width',\n 'min-height',\n 'max-height'\n];\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes\nconst PSEUDO_CLASSES = [\n 'active',\n 'any-link',\n 'blank',\n 'checked',\n 'current',\n 'default',\n 'defined',\n 'dir', // dir()\n 'disabled',\n 'drop',\n 'empty',\n 'enabled',\n 'first',\n 'first-child',\n 'first-of-type',\n 'fullscreen',\n 'future',\n 'focus',\n 'focus-visible',\n 'focus-within',\n 'has', // has()\n 'host', // host or host()\n 'host-context', // host-context()\n 'hover',\n 'indeterminate',\n 'in-range',\n 'invalid',\n 'is', // is()\n 'lang', // lang()\n 'last-child',\n 'last-of-type',\n 'left',\n 'link',\n 'local-link',\n 'not', // not()\n 'nth-child', // nth-child()\n 'nth-col', // nth-col()\n 'nth-last-child', // nth-last-child()\n 'nth-last-col', // nth-last-col()\n 'nth-last-of-type', //nth-last-of-type()\n 'nth-of-type', //nth-of-type()\n 'only-child',\n 'only-of-type',\n 'optional',\n 'out-of-range',\n 'past',\n 'placeholder-shown',\n 'read-only',\n 'read-write',\n 'required',\n 'right',\n 'root',\n 'scope',\n 'target',\n 'target-within',\n 'user-invalid',\n 'valid',\n 'visited',\n 'where' // where()\n];\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements\nconst PSEUDO_ELEMENTS = [\n 'after',\n 'backdrop',\n 'before',\n 'cue',\n 'cue-region',\n 'first-letter',\n 'first-line',\n 'grammar-error',\n 'marker',\n 'part',\n 'placeholder',\n 'selection',\n 'slotted',\n 'spelling-error'\n];\n\nconst ATTRIBUTES = [\n 'align-content',\n 'align-items',\n 'align-self',\n 'animation',\n 'animation-delay',\n 'animation-direction',\n 'animation-duration',\n 'animation-fill-mode',\n 'animation-iteration-count',\n 'animation-name',\n 'animation-play-state',\n 'animation-timing-function',\n 'auto',\n 'backface-visibility',\n 'background',\n 'background-attachment',\n 'background-clip',\n 'background-color',\n 'background-image',\n 'background-origin',\n 'background-position',\n 'background-repeat',\n 'background-size',\n 'border',\n 'border-bottom',\n 'border-bottom-color',\n 'border-bottom-left-radius',\n 'border-bottom-right-radius',\n 'border-bottom-style',\n 'border-bottom-width',\n 'border-collapse',\n 'border-color',\n 'border-image',\n 'border-image-outset',\n 'border-image-repeat',\n 'border-image-slice',\n 'border-image-source',\n 'border-image-width',\n 'border-left',\n 'border-left-color',\n 'border-left-style',\n 'border-left-width',\n 'border-radius',\n 'border-right',\n 'border-right-color',\n 'border-right-style',\n 'border-right-width',\n 'border-spacing',\n 'border-style',\n 'border-top',\n 'border-top-color',\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-top-style',\n 'border-top-width',\n 'border-width',\n 'bottom',\n 'box-decoration-break',\n 'box-shadow',\n 'box-sizing',\n 'break-after',\n 'break-before',\n 'break-inside',\n 'caption-side',\n 'clear',\n 'clip',\n 'clip-path',\n 'color',\n 'column-count',\n 'column-fill',\n 'column-gap',\n 'column-rule',\n 'column-rule-color',\n 'column-rule-style',\n 'column-rule-width',\n 'column-span',\n 'column-width',\n 'columns',\n 'content',\n 'counter-increment',\n 'counter-reset',\n 'cursor',\n 'direction',\n 'display',\n 'empty-cells',\n 'filter',\n 'flex',\n 'flex-basis',\n 'flex-direction',\n 'flex-flow',\n 'flex-grow',\n 'flex-shrink',\n 'flex-wrap',\n 'float',\n 'font',\n 'font-display',\n 'font-family',\n 'font-feature-settings',\n 'font-kerning',\n 'font-language-override',\n 'font-size',\n 'font-size-adjust',\n 'font-smoothing',\n 'font-stretch',\n 'font-style',\n 'font-variant',\n 'font-variant-ligatures',\n 'font-variation-settings',\n 'font-weight',\n 'height',\n 'hyphens',\n 'icon',\n 'image-orientation',\n 'image-rendering',\n 'image-resolution',\n 'ime-mode',\n 'inherit',\n 'initial',\n 'justify-content',\n 'left',\n 'letter-spacing',\n 'line-height',\n 'list-style',\n 'list-style-image',\n 'list-style-position',\n 'list-style-type',\n 'margin',\n 'margin-bottom',\n 'margin-left',\n 'margin-right',\n 'margin-top',\n 'marks',\n 'mask',\n 'max-height',\n 'max-width',\n 'min-height',\n 'min-width',\n 'nav-down',\n 'nav-index',\n 'nav-left',\n 'nav-right',\n 'nav-up',\n 'none',\n 'normal',\n 'object-fit',\n 'object-position',\n 'opacity',\n 'order',\n 'orphans',\n 'outline',\n 'outline-color',\n 'outline-offset',\n 'outline-style',\n 'outline-width',\n 'overflow',\n 'overflow-wrap',\n 'overflow-x',\n 'overflow-y',\n 'padding',\n 'padding-bottom',\n 'padding-left',\n 'padding-right',\n 'padding-top',\n 'page-break-after',\n 'page-break-before',\n 'page-break-inside',\n 'perspective',\n 'perspective-origin',\n 'pointer-events',\n 'position',\n 'quotes',\n 'resize',\n 'right',\n 'src', // @font-face\n 'tab-size',\n 'table-layout',\n 'text-align',\n 'text-align-last',\n 'text-decoration',\n 'text-decoration-color',\n 'text-decoration-line',\n 'text-decoration-style',\n 'text-indent',\n 'text-overflow',\n 'text-rendering',\n 'text-shadow',\n 'text-transform',\n 'text-underline-position',\n 'top',\n 'transform',\n 'transform-origin',\n 'transform-style',\n 'transition',\n 'transition-delay',\n 'transition-duration',\n 'transition-property',\n 'transition-timing-function',\n 'unicode-bidi',\n 'vertical-align',\n 'visibility',\n 'white-space',\n 'widows',\n 'width',\n 'word-break',\n 'word-spacing',\n 'word-wrap',\n 'z-index'\n // reverse makes sure longer attributes `font-weight` are matched fully\n // instead of getting false positives on say `font`\n].reverse();\n\n// some grammars use them all as a single group\nconst PSEUDO_SELECTORS = PSEUDO_CLASSES.concat(PSEUDO_ELEMENTS);\n\n/*\nLanguage: Less\nDescription: It's CSS, with just a little more.\nAuthor: Max Mikhailov <seven.phases.max@gmail.com>\nWebsite: http://lesscss.org\nCategory: common, css\n*/\n\n/** @type LanguageFn */\nfunction less(hljs) {\n const modes = MODES(hljs);\n const PSEUDO_SELECTORS$1 = PSEUDO_SELECTORS;\n\n const AT_MODIFIERS = \"and or not only\";\n const IDENT_RE = '[\\\\w-]+'; // yes, Less identifiers may begin with a digit\n const INTERP_IDENT_RE = '(' + IDENT_RE + '|@\\\\{' + IDENT_RE + '\\\\})';\n\n /* Generic Modes */\n\n const RULES = []; const VALUE_MODES = []; // forward def. for recursive modes\n\n const STRING_MODE = function(c) {\n return {\n // Less strings are not multiline (also include '~' for more consistent coloring of \"escaped\" strings)\n className: 'string',\n begin: '~?' + c + '.*?' + c\n };\n };\n\n const IDENT_MODE = function(name, begin, relevance) {\n return {\n className: name,\n begin: begin,\n relevance: relevance\n };\n };\n\n const AT_KEYWORDS = {\n $pattern: /[a-z-]+/,\n keyword: AT_MODIFIERS,\n attribute: MEDIA_FEATURES.join(\" \")\n };\n\n const PARENS_MODE = {\n // used only to properly balance nested parens inside mixin call, def. arg list\n begin: '\\\\(',\n end: '\\\\)',\n contains: VALUE_MODES,\n keywords: AT_KEYWORDS,\n relevance: 0\n };\n\n // generic Less highlighter (used almost everywhere except selectors):\n VALUE_MODES.push(\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING_MODE(\"'\"),\n STRING_MODE('\"'),\n hljs.CSS_NUMBER_MODE, // fixme: it does not include dot for numbers like .5em :(\n {\n begin: '(url|data-uri)\\\\(',\n starts: {\n className: 'string',\n end: '[\\\\)\\\\n]',\n excludeEnd: true\n }\n },\n modes.HEXCOLOR,\n PARENS_MODE,\n IDENT_MODE('variable', '@@?' + IDENT_RE, 10),\n IDENT_MODE('variable', '@\\\\{' + IDENT_RE + '\\\\}'),\n IDENT_MODE('built_in', '~?`[^`]*?`'), // inline javascript (or whatever host language) *multiline* string\n { // @media features (it’s here to not duplicate things in AT_RULE_MODE with extra PARENS_MODE overriding):\n className: 'attribute',\n begin: IDENT_RE + '\\\\s*:',\n end: ':',\n returnBegin: true,\n excludeEnd: true\n },\n modes.IMPORTANT\n );\n\n const VALUE_WITH_RULESETS = VALUE_MODES.concat({\n begin: /\\{/,\n end: /\\}/,\n contains: RULES\n });\n\n const MIXIN_GUARD_MODE = {\n beginKeywords: 'when',\n endsWithParent: true,\n contains: [\n {\n beginKeywords: 'and not'\n }\n ].concat(VALUE_MODES) // using this form to override VALUE’s 'function' match\n };\n\n /* Rule-Level Modes */\n\n const RULE_MODE = {\n begin: INTERP_IDENT_RE + '\\\\s*:',\n returnBegin: true,\n end: /[;}]/,\n relevance: 0,\n contains: [\n {\n begin: /-(webkit|moz|ms|o)-/\n },\n {\n className: 'attribute',\n begin: '\\\\b(' + ATTRIBUTES.join('|') + ')\\\\b',\n end: /(?=:)/,\n starts: {\n endsWithParent: true,\n illegal: '[<=$]',\n relevance: 0,\n contains: VALUE_MODES\n }\n }\n ]\n };\n\n const AT_RULE_MODE = {\n className: 'keyword',\n begin: '@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\\\b',\n starts: {\n end: '[;{}]',\n keywords: AT_KEYWORDS,\n returnEnd: true,\n contains: VALUE_MODES,\n relevance: 0\n }\n };\n\n // variable definitions and calls\n const VAR_RULE_MODE = {\n className: 'variable',\n variants: [\n // using more strict pattern for higher relevance to increase chances of Less detection.\n // this is *the only* Less specific statement used in most of the sources, so...\n // (we’ll still often loose to the css-parser unless there's '//' comment,\n // simply because 1 variable just can't beat 99 properties :)\n {\n begin: '@' + IDENT_RE + '\\\\s*:',\n relevance: 15\n },\n {\n begin: '@' + IDENT_RE\n }\n ],\n starts: {\n end: '[;}]',\n returnEnd: true,\n contains: VALUE_WITH_RULESETS\n }\n };\n\n const SELECTOR_MODE = {\n // first parse unambiguous selectors (i.e. those not starting with tag)\n // then fall into the scary lookahead-discriminator variant.\n // this mode also handles mixin definitions and calls\n variants: [\n {\n begin: '[\\\\.#:&\\\\[>]',\n end: '[;{}]' // mixin calls end with ';'\n },\n {\n begin: INTERP_IDENT_RE,\n end: /\\{/\n }\n ],\n returnBegin: true,\n returnEnd: true,\n illegal: '[<=\\'$\"]',\n relevance: 0,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n MIXIN_GUARD_MODE,\n IDENT_MODE('keyword', 'all\\\\b'),\n IDENT_MODE('variable', '@\\\\{' + IDENT_RE + '\\\\}'), // otherwise it’s identified as tag\n {\n begin: '\\\\b(' + TAGS.join('|') + ')\\\\b',\n className: 'selector-tag'\n },\n IDENT_MODE('selector-tag', INTERP_IDENT_RE + '%?', 0), // '%' for more consistent coloring of @keyframes \"tags\"\n IDENT_MODE('selector-id', '#' + INTERP_IDENT_RE),\n IDENT_MODE('selector-class', '\\\\.' + INTERP_IDENT_RE, 0),\n IDENT_MODE('selector-tag', '&', 0),\n modes.ATTRIBUTE_SELECTOR_MODE,\n {\n className: 'selector-pseudo',\n begin: ':(' + PSEUDO_CLASSES.join('|') + ')'\n },\n {\n className: 'selector-pseudo',\n begin: '::(' + PSEUDO_ELEMENTS.join('|') + ')'\n },\n {\n begin: '\\\\(',\n end: '\\\\)',\n contains: VALUE_WITH_RULESETS\n }, // argument list of parametric mixins\n {\n begin: '!important'\n } // eat !important after mixin call or it will be colored as tag\n ]\n };\n\n const PSEUDO_SELECTOR_MODE = {\n begin: IDENT_RE + ':(:)?' + `(${PSEUDO_SELECTORS$1.join('|')})`,\n returnBegin: true,\n contains: [ SELECTOR_MODE ]\n };\n\n RULES.push(\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n AT_RULE_MODE,\n VAR_RULE_MODE,\n PSEUDO_SELECTOR_MODE,\n RULE_MODE,\n SELECTOR_MODE\n );\n\n return {\n name: 'Less',\n case_insensitive: true,\n illegal: '[=>\\'/<($\"]',\n contains: RULES\n };\n}\n\nmodule.exports = less;\n","/*\nLanguage: Lisp\nDescription: Generic lisp syntax\nAuthor: Vasily Polovnyov <vast@whiteants.net>\nCategory: lisp\n*/\n\nfunction lisp(hljs) {\n var LISP_IDENT_RE = '[a-zA-Z_\\\\-+\\\\*\\\\/<=>&#][a-zA-Z0-9_\\\\-+*\\\\/<=>&#!]*';\n var MEC_RE = '\\\\|[^]*?\\\\|';\n var LISP_SIMPLE_NUMBER_RE = '(-|\\\\+)?\\\\d+(\\\\.\\\\d+|\\\\/\\\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\\\+|-)?\\\\d+)?';\n var LITERAL = {\n className: 'literal',\n begin: '\\\\b(t{1}|nil)\\\\b'\n };\n var NUMBER = {\n className: 'number',\n variants: [\n {begin: LISP_SIMPLE_NUMBER_RE, relevance: 0},\n {begin: '#(b|B)[0-1]+(/[0-1]+)?'},\n {begin: '#(o|O)[0-7]+(/[0-7]+)?'},\n {begin: '#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?'},\n {begin: '#(c|C)\\\\(' + LISP_SIMPLE_NUMBER_RE + ' +' + LISP_SIMPLE_NUMBER_RE, end: '\\\\)'}\n ]\n };\n var STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null});\n var COMMENT = hljs.COMMENT(\n ';', '$',\n {\n relevance: 0\n }\n );\n var VARIABLE = {\n begin: '\\\\*', end: '\\\\*'\n };\n var KEYWORD = {\n className: 'symbol',\n begin: '[:&]' + LISP_IDENT_RE\n };\n var IDENT = {\n begin: LISP_IDENT_RE,\n relevance: 0\n };\n var MEC = {\n begin: MEC_RE\n };\n var QUOTED_LIST = {\n begin: '\\\\(', end: '\\\\)',\n contains: ['self', LITERAL, STRING, NUMBER, IDENT]\n };\n var QUOTED = {\n contains: [NUMBER, STRING, VARIABLE, KEYWORD, QUOTED_LIST, IDENT],\n variants: [\n {\n begin: '[\\'`]\\\\(', end: '\\\\)'\n },\n {\n begin: '\\\\(quote ', end: '\\\\)',\n keywords: {name: 'quote'}\n },\n {\n begin: '\\'' + MEC_RE\n }\n ]\n };\n var QUOTED_ATOM = {\n variants: [\n {begin: '\\'' + LISP_IDENT_RE},\n {begin: '#\\'' + LISP_IDENT_RE + '(::' + LISP_IDENT_RE + ')*'}\n ]\n };\n var LIST = {\n begin: '\\\\(\\\\s*', end: '\\\\)'\n };\n var BODY = {\n endsWithParent: true,\n relevance: 0\n };\n LIST.contains = [\n {\n className: 'name',\n variants: [\n {\n begin: LISP_IDENT_RE,\n relevance: 0,\n },\n {begin: MEC_RE}\n ]\n },\n BODY\n ];\n BODY.contains = [QUOTED, QUOTED_ATOM, LIST, LITERAL, NUMBER, STRING, COMMENT, VARIABLE, KEYWORD, MEC, IDENT];\n\n return {\n name: 'Lisp',\n illegal: /\\S/,\n contains: [\n NUMBER,\n hljs.SHEBANG(),\n LITERAL,\n STRING,\n COMMENT,\n QUOTED,\n QUOTED_ATOM,\n LIST,\n IDENT\n ]\n };\n}\n\nmodule.exports = lisp;\n","/*\nLanguage: LiveCode\nAuthor: Ralf Bitter <rabit@revigniter.com>\nDescription: Language definition for LiveCode server accounting for revIgniter (a web application framework) characteristics.\nVersion: 1.1\nDate: 2019-04-17\nCategory: enterprise\n*/\n\nfunction livecodeserver(hljs) {\n const VARIABLE = {\n className: 'variable',\n variants: [\n {\n begin: '\\\\b([gtps][A-Z]{1}[a-zA-Z0-9]*)(\\\\[.+\\\\])?(?:\\\\s*?)'\n },\n {\n begin: '\\\\$_[A-Z]+'\n }\n ],\n relevance: 0\n };\n const COMMENT_MODES = [\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.HASH_COMMENT_MODE,\n hljs.COMMENT('--', '$'),\n hljs.COMMENT('[^:]//', '$')\n ];\n const TITLE1 = hljs.inherit(hljs.TITLE_MODE, {\n variants: [\n {\n begin: '\\\\b_*rig[A-Z][A-Za-z0-9_\\\\-]*'\n },\n {\n begin: '\\\\b_[a-z0-9\\\\-]+'\n }\n ]\n });\n const TITLE2 = hljs.inherit(hljs.TITLE_MODE, {\n begin: '\\\\b([A-Za-z0-9_\\\\-]+)\\\\b'\n });\n return {\n name: 'LiveCode',\n case_insensitive: false,\n keywords: {\n keyword:\n '$_COOKIE $_FILES $_GET $_GET_BINARY $_GET_RAW $_POST $_POST_BINARY $_POST_RAW $_SESSION $_SERVER ' +\n 'codepoint codepoints segment segments codeunit codeunits sentence sentences trueWord trueWords paragraph ' +\n 'after byte bytes english the until http forever descending using line real8 with seventh ' +\n 'for stdout finally element word words fourth before black ninth sixth characters chars stderr ' +\n 'uInt1 uInt1s uInt2 uInt2s stdin string lines relative rel any fifth items from middle mid ' +\n 'at else of catch then third it file milliseconds seconds second secs sec int1 int1s int4 ' +\n 'int4s internet int2 int2s normal text item last long detailed effective uInt4 uInt4s repeat ' +\n 'end repeat URL in try into switch to words https token binfile each tenth as ticks tick ' +\n 'system real4 by dateItems without char character ascending eighth whole dateTime numeric short ' +\n 'first ftp integer abbreviated abbr abbrev private case while if ' +\n 'div mod wrap and or bitAnd bitNot bitOr bitXor among not in a an within ' +\n 'contains ends with begins the keys of keys',\n literal:\n 'SIX TEN FORMFEED NINE ZERO NONE SPACE FOUR FALSE COLON CRLF PI COMMA ENDOFFILE EOF EIGHT FIVE ' +\n 'QUOTE EMPTY ONE TRUE RETURN CR LINEFEED RIGHT BACKSLASH NULL SEVEN TAB THREE TWO ' +\n 'six ten formfeed nine zero none space four false colon crlf pi comma endoffile eof eight five ' +\n 'quote empty one true return cr linefeed right backslash null seven tab three two ' +\n 'RIVERSION RISTATE FILE_READ_MODE FILE_WRITE_MODE FILE_WRITE_MODE DIR_WRITE_MODE FILE_READ_UMASK ' +\n 'FILE_WRITE_UMASK DIR_READ_UMASK DIR_WRITE_UMASK',\n built_in:\n 'put abs acos aliasReference annuity arrayDecode arrayEncode asin atan atan2 average avg avgDev base64Decode ' +\n 'base64Encode baseConvert binaryDecode binaryEncode byteOffset byteToNum cachedURL cachedURLs charToNum ' +\n 'cipherNames codepointOffset codepointProperty codepointToNum codeunitOffset commandNames compound compress ' +\n 'constantNames cos date dateFormat decompress difference directories ' +\n 'diskSpace DNSServers exp exp1 exp2 exp10 extents files flushEvents folders format functionNames geometricMean global ' +\n 'globals hasMemory harmonicMean hostAddress hostAddressToName hostName hostNameToAddress isNumber ISOToMac itemOffset ' +\n 'keys len length libURLErrorData libUrlFormData libURLftpCommand libURLLastHTTPHeaders libURLLastRHHeaders ' +\n 'libUrlMultipartFormAddPart libUrlMultipartFormData libURLVersion lineOffset ln ln1 localNames log log2 log10 ' +\n 'longFilePath lower macToISO matchChunk matchText matrixMultiply max md5Digest median merge messageAuthenticationCode messageDigest millisec ' +\n 'millisecs millisecond milliseconds min monthNames nativeCharToNum normalizeText num number numToByte numToChar ' +\n 'numToCodepoint numToNativeChar offset open openfiles openProcesses openProcessIDs openSockets ' +\n 'paragraphOffset paramCount param params peerAddress pendingMessages platform popStdDev populationStandardDeviation ' +\n 'populationVariance popVariance processID random randomBytes replaceText result revCreateXMLTree revCreateXMLTreeFromFile ' +\n 'revCurrentRecord revCurrentRecordIsFirst revCurrentRecordIsLast revDatabaseColumnCount revDatabaseColumnIsNull ' +\n 'revDatabaseColumnLengths revDatabaseColumnNames revDatabaseColumnNamed revDatabaseColumnNumbered ' +\n 'revDatabaseColumnTypes revDatabaseConnectResult revDatabaseCursors revDatabaseID revDatabaseTableNames ' +\n 'revDatabaseType revDataFromQuery revdb_closeCursor revdb_columnbynumber revdb_columncount revdb_columnisnull ' +\n 'revdb_columnlengths revdb_columnnames revdb_columntypes revdb_commit revdb_connect revdb_connections ' +\n 'revdb_connectionerr revdb_currentrecord revdb_cursorconnection revdb_cursorerr revdb_cursors revdb_dbtype ' +\n 'revdb_disconnect revdb_execute revdb_iseof revdb_isbof revdb_movefirst revdb_movelast revdb_movenext ' +\n 'revdb_moveprev revdb_query revdb_querylist revdb_recordcount revdb_rollback revdb_tablenames ' +\n 'revGetDatabaseDriverPath revNumberOfRecords revOpenDatabase revOpenDatabases revQueryDatabase ' +\n 'revQueryDatabaseBlob revQueryResult revQueryIsAtStart revQueryIsAtEnd revUnixFromMacPath revXMLAttribute ' +\n 'revXMLAttributes revXMLAttributeValues revXMLChildContents revXMLChildNames revXMLCreateTreeFromFileWithNamespaces ' +\n 'revXMLCreateTreeWithNamespaces revXMLDataFromXPathQuery revXMLEvaluateXPath revXMLFirstChild revXMLMatchingNode ' +\n 'revXMLNextSibling revXMLNodeContents revXMLNumberOfChildren revXMLParent revXMLPreviousSibling ' +\n 'revXMLRootNode revXMLRPC_CreateRequest revXMLRPC_Documents revXMLRPC_Error ' +\n 'revXMLRPC_GetHost revXMLRPC_GetMethod revXMLRPC_GetParam revXMLText revXMLRPC_Execute ' +\n 'revXMLRPC_GetParamCount revXMLRPC_GetParamNode revXMLRPC_GetParamType revXMLRPC_GetPath revXMLRPC_GetPort ' +\n 'revXMLRPC_GetProtocol revXMLRPC_GetRequest revXMLRPC_GetResponse revXMLRPC_GetSocket revXMLTree ' +\n 'revXMLTrees revXMLValidateDTD revZipDescribeItem revZipEnumerateItems revZipOpenArchives round sampVariance ' +\n 'sec secs seconds sentenceOffset sha1Digest shell shortFilePath sin specialFolderPath sqrt standardDeviation statRound ' +\n 'stdDev sum sysError systemVersion tan tempName textDecode textEncode tick ticks time to tokenOffset toLower toUpper ' +\n 'transpose truewordOffset trunc uniDecode uniEncode upper URLDecode URLEncode URLStatus uuid value variableNames ' +\n 'variance version waitDepth weekdayNames wordOffset xsltApplyStylesheet xsltApplyStylesheetFromFile xsltLoadStylesheet ' +\n 'xsltLoadStylesheetFromFile add breakpoint cancel clear local variable file word line folder directory URL close socket process ' +\n 'combine constant convert create new alias folder directory decrypt delete variable word line folder ' +\n 'directory URL dispatch divide do encrypt filter get include intersect kill libURLDownloadToFile ' +\n 'libURLFollowHttpRedirects libURLftpUpload libURLftpUploadFile libURLresetAll libUrlSetAuthCallback libURLSetDriver ' +\n 'libURLSetCustomHTTPHeaders libUrlSetExpect100 libURLSetFTPListCommand libURLSetFTPMode libURLSetFTPStopTime ' +\n 'libURLSetStatusCallback load extension loadedExtensions multiply socket prepare process post seek rel relative read from process rename ' +\n 'replace require resetAll resolve revAddXMLNode revAppendXML revCloseCursor revCloseDatabase revCommitDatabase ' +\n 'revCopyFile revCopyFolder revCopyXMLNode revDeleteFolder revDeleteXMLNode revDeleteAllXMLTrees ' +\n 'revDeleteXMLTree revExecuteSQL revGoURL revInsertXMLNode revMoveFolder revMoveToFirstRecord revMoveToLastRecord ' +\n 'revMoveToNextRecord revMoveToPreviousRecord revMoveToRecord revMoveXMLNode revPutIntoXMLNode revRollBackDatabase ' +\n 'revSetDatabaseDriverPath revSetXMLAttribute revXMLRPC_AddParam revXMLRPC_DeleteAllDocuments revXMLAddDTD ' +\n 'revXMLRPC_Free revXMLRPC_FreeAll revXMLRPC_DeleteDocument revXMLRPC_DeleteParam revXMLRPC_SetHost ' +\n 'revXMLRPC_SetMethod revXMLRPC_SetPort revXMLRPC_SetProtocol revXMLRPC_SetSocket revZipAddItemWithData ' +\n 'revZipAddItemWithFile revZipAddUncompressedItemWithData revZipAddUncompressedItemWithFile revZipCancel ' +\n 'revZipCloseArchive revZipDeleteItem revZipExtractItemToFile revZipExtractItemToVariable revZipSetProgressCallback ' +\n 'revZipRenameItem revZipReplaceItemWithData revZipReplaceItemWithFile revZipOpenArchive send set sort split start stop ' +\n 'subtract symmetric union unload vectorDotProduct wait write'\n },\n contains: [\n VARIABLE,\n {\n className: 'keyword',\n begin: '\\\\bend\\\\sif\\\\b'\n },\n {\n className: 'function',\n beginKeywords: 'function',\n end: '$',\n contains: [\n VARIABLE,\n TITLE2,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.BINARY_NUMBER_MODE,\n hljs.C_NUMBER_MODE,\n TITLE1\n ]\n },\n {\n className: 'function',\n begin: '\\\\bend\\\\s+',\n end: '$',\n keywords: 'end',\n contains: [\n TITLE2,\n TITLE1\n ],\n relevance: 0\n },\n {\n beginKeywords: 'command on',\n end: '$',\n contains: [\n VARIABLE,\n TITLE2,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.BINARY_NUMBER_MODE,\n hljs.C_NUMBER_MODE,\n TITLE1\n ]\n },\n {\n className: 'meta',\n variants: [\n {\n begin: '<\\\\?(rev|lc|livecode)',\n relevance: 10\n },\n {\n begin: '<\\\\?'\n },\n {\n begin: '\\\\?>'\n }\n ]\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.BINARY_NUMBER_MODE,\n hljs.C_NUMBER_MODE,\n TITLE1\n ].concat(COMMENT_MODES),\n illegal: ';$|^\\\\[|^=|&|\\\\{'\n };\n}\n\nmodule.exports = livecodeserver;\n","const KEYWORDS = [\n \"as\", // for exports\n \"in\",\n \"of\",\n \"if\",\n \"for\",\n \"while\",\n \"finally\",\n \"var\",\n \"new\",\n \"function\",\n \"do\",\n \"return\",\n \"void\",\n \"else\",\n \"break\",\n \"catch\",\n \"instanceof\",\n \"with\",\n \"throw\",\n \"case\",\n \"default\",\n \"try\",\n \"switch\",\n \"continue\",\n \"typeof\",\n \"delete\",\n \"let\",\n \"yield\",\n \"const\",\n \"class\",\n // JS handles these with a special rule\n // \"get\",\n // \"set\",\n \"debugger\",\n \"async\",\n \"await\",\n \"static\",\n \"import\",\n \"from\",\n \"export\",\n \"extends\"\n];\nconst LITERALS = [\n \"true\",\n \"false\",\n \"null\",\n \"undefined\",\n \"NaN\",\n \"Infinity\"\n];\n\nconst TYPES = [\n \"Intl\",\n \"DataView\",\n \"Number\",\n \"Math\",\n \"Date\",\n \"String\",\n \"RegExp\",\n \"Object\",\n \"Function\",\n \"Boolean\",\n \"Error\",\n \"Symbol\",\n \"Set\",\n \"Map\",\n \"WeakSet\",\n \"WeakMap\",\n \"Proxy\",\n \"Reflect\",\n \"JSON\",\n \"Promise\",\n \"Float64Array\",\n \"Int16Array\",\n \"Int32Array\",\n \"Int8Array\",\n \"Uint16Array\",\n \"Uint32Array\",\n \"Float32Array\",\n \"Array\",\n \"Uint8Array\",\n \"Uint8ClampedArray\",\n \"ArrayBuffer\",\n \"BigInt64Array\",\n \"BigUint64Array\",\n \"BigInt\"\n];\n\nconst ERROR_TYPES = [\n \"EvalError\",\n \"InternalError\",\n \"RangeError\",\n \"ReferenceError\",\n \"SyntaxError\",\n \"TypeError\",\n \"URIError\"\n];\n\nconst BUILT_IN_GLOBALS = [\n \"setInterval\",\n \"setTimeout\",\n \"clearInterval\",\n \"clearTimeout\",\n\n \"require\",\n \"exports\",\n\n \"eval\",\n \"isFinite\",\n \"isNaN\",\n \"parseFloat\",\n \"parseInt\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"escape\",\n \"unescape\"\n];\n\nconst BUILT_IN_VARIABLES = [\n \"arguments\",\n \"this\",\n \"super\",\n \"console\",\n \"window\",\n \"document\",\n \"localStorage\",\n \"module\",\n \"global\" // Node.js\n];\n\nconst BUILT_INS = [].concat(\n BUILT_IN_GLOBALS,\n BUILT_IN_VARIABLES,\n TYPES,\n ERROR_TYPES\n);\n\n/*\nLanguage: LiveScript\nAuthor: Taneli Vatanen <taneli.vatanen@gmail.com>\nContributors: Jen Evers-Corvina <jen@sevvie.net>\nOrigin: coffeescript.js\nDescription: LiveScript is a programming language that transcompiles to JavaScript. For info about language see http://livescript.net/\nWebsite: https://livescript.net\nCategory: scripting\n*/\n\nfunction livescript(hljs) {\n const LIVESCRIPT_BUILT_INS = [\n 'npm',\n 'print'\n ];\n const LIVESCRIPT_LITERALS = [\n 'yes',\n 'no',\n 'on',\n 'off',\n 'it',\n 'that',\n 'void'\n ];\n const LIVESCRIPT_KEYWORDS = [\n 'then',\n 'unless',\n 'until',\n 'loop',\n 'of',\n 'by',\n 'when',\n 'and',\n 'or',\n 'is',\n 'isnt',\n 'not',\n 'it',\n 'that',\n 'otherwise',\n 'from',\n 'to',\n 'til',\n 'fallthrough',\n 'case',\n 'enum',\n 'native',\n 'list',\n 'map',\n '__hasProp',\n '__extends',\n '__slice',\n '__bind',\n '__indexOf'\n ];\n const KEYWORDS$1 = {\n keyword: KEYWORDS.concat(LIVESCRIPT_KEYWORDS),\n literal: LITERALS.concat(LIVESCRIPT_LITERALS),\n built_in: BUILT_INS.concat(LIVESCRIPT_BUILT_INS)\n };\n const JS_IDENT_RE = '[A-Za-z$_](?:-[0-9A-Za-z$_]|[0-9A-Za-z$_])*';\n const TITLE = hljs.inherit(hljs.TITLE_MODE, {\n begin: JS_IDENT_RE\n });\n const SUBST = {\n className: 'subst',\n begin: /#\\{/,\n end: /\\}/,\n keywords: KEYWORDS$1\n };\n const SUBST_SIMPLE = {\n className: 'subst',\n begin: /#[A-Za-z$_]/,\n end: /(?:-[0-9A-Za-z$_]|[0-9A-Za-z$_])*/,\n keywords: KEYWORDS$1\n };\n const EXPRESSIONS = [\n hljs.BINARY_NUMBER_MODE,\n {\n className: 'number',\n begin: '(\\\\b0[xX][a-fA-F0-9_]+)|(\\\\b\\\\d(\\\\d|_\\\\d)*(\\\\.(\\\\d(\\\\d|_\\\\d)*)?)?(_*[eE]([-+]\\\\d(_\\\\d|\\\\d)*)?)?[_a-z]*)',\n relevance: 0,\n starts: {\n end: '(\\\\s*/)?',\n relevance: 0\n } // a number tries to eat the following slash to prevent treating it as a regexp\n },\n {\n className: 'string',\n variants: [\n {\n begin: /'''/,\n end: /'''/,\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: /'/,\n end: /'/,\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: /\"\"\"/,\n end: /\"\"\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST,\n SUBST_SIMPLE\n ]\n },\n {\n begin: /\"/,\n end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST,\n SUBST_SIMPLE\n ]\n },\n {\n begin: /\\\\/,\n end: /(\\s|$)/,\n excludeEnd: true\n }\n ]\n },\n {\n className: 'regexp',\n variants: [\n {\n begin: '//',\n end: '//[gim]*',\n contains: [\n SUBST,\n hljs.HASH_COMMENT_MODE\n ]\n },\n {\n // regex can't start with space to parse x / 2 / 3 as two divisions\n // regex can't start with *, and it supports an \"illegal\" in the main mode\n begin: /\\/(?![ *])(\\\\.|[^\\\\\\n])*?\\/[gim]*(?=\\W)/\n }\n ]\n },\n {\n begin: '@' + JS_IDENT_RE\n },\n {\n begin: '``',\n end: '``',\n excludeBegin: true,\n excludeEnd: true,\n subLanguage: 'javascript'\n }\n ];\n SUBST.contains = EXPRESSIONS;\n\n const PARAMS = {\n className: 'params',\n begin: '\\\\(',\n returnBegin: true,\n /* We need another contained nameless mode to not have every nested\n pair of parens to be called \"params\" */\n contains: [\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS$1,\n contains: ['self'].concat(EXPRESSIONS)\n }\n ]\n };\n\n const SYMBOLS = {\n begin: '(#=>|=>|\\\\|>>|-?->|!->)'\n };\n\n return {\n name: 'LiveScript',\n aliases: ['ls'],\n keywords: KEYWORDS$1,\n illegal: /\\/\\*/,\n contains: EXPRESSIONS.concat([\n hljs.COMMENT('\\\\/\\\\*', '\\\\*\\\\/'),\n hljs.HASH_COMMENT_MODE,\n SYMBOLS, // relevance booster\n {\n className: 'function',\n contains: [\n TITLE,\n PARAMS\n ],\n returnBegin: true,\n variants: [\n {\n begin: '(' + JS_IDENT_RE + '\\\\s*(?:=|:=)\\\\s*)?(\\\\(.*\\\\)\\\\s*)?\\\\B->\\\\*?',\n end: '->\\\\*?'\n },\n {\n begin: '(' + JS_IDENT_RE + '\\\\s*(?:=|:=)\\\\s*)?!?(\\\\(.*\\\\)\\\\s*)?\\\\B[-~]{1,2}>\\\\*?',\n end: '[-~]{1,2}>\\\\*?'\n },\n {\n begin: '(' + JS_IDENT_RE + '\\\\s*(?:=|:=)\\\\s*)?(\\\\(.*\\\\)\\\\s*)?\\\\B!?[-~]{1,2}>\\\\*?',\n end: '!?[-~]{1,2}>\\\\*?'\n }\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class',\n end: '$',\n illegal: /[:=\"\\[\\]]/,\n contains: [\n {\n beginKeywords: 'extends',\n endsWithParent: true,\n illegal: /[:=\"\\[\\]]/,\n contains: [TITLE]\n },\n TITLE\n ]\n },\n {\n begin: JS_IDENT_RE + ':',\n end: ':',\n returnBegin: true,\n returnEnd: true,\n relevance: 0\n }\n ])\n };\n}\n\nmodule.exports = livescript;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/*\nLanguage: LLVM IR\nAuthor: Michael Rodler <contact@f0rki.at>\nDescription: language used as intermediate representation in the LLVM compiler framework\nWebsite: https://llvm.org/docs/LangRef.html\nCategory: assembler\nAudit: 2020\n*/\n\n/** @type LanguageFn */\nfunction llvm(hljs) {\n const IDENT_RE = /([-a-zA-Z$._][\\w$.-]*)/;\n const TYPE = {\n className: 'type',\n begin: /\\bi\\d+(?=\\s|\\b)/\n };\n const OPERATOR = {\n className: 'operator',\n relevance: 0,\n begin: /=/\n };\n const PUNCTUATION = {\n className: 'punctuation',\n relevance: 0,\n begin: /,/\n };\n const NUMBER = {\n className: 'number',\n variants: [\n { begin: /0[xX][a-fA-F0-9]+/ },\n { begin: /-?\\d+(?:[.]\\d+)?(?:[eE][-+]?\\d+(?:[.]\\d+)?)?/ }\n ],\n relevance: 0\n };\n const LABEL = {\n className: 'symbol',\n variants: [\n { begin: /^\\s*[a-z]+:/ }, // labels\n ],\n relevance: 0\n };\n const VARIABLE = {\n className: 'variable',\n variants: [\n { begin: concat(/%/, IDENT_RE) },\n { begin: /%\\d+/ },\n { begin: /#\\d+/ },\n ]\n };\n const FUNCTION = {\n className: 'title',\n variants: [\n { begin: concat(/@/, IDENT_RE) },\n { begin: /@\\d+/ },\n { begin: concat(/!/, IDENT_RE) },\n { begin: concat(/!\\d+/, IDENT_RE) },\n // https://llvm.org/docs/LangRef.html#namedmetadatastructure\n // obviously a single digit can also be used in this fashion\n { begin: /!\\d+/ }\n ]\n };\n\n return {\n name: 'LLVM IR',\n // TODO: split into different categories of keywords\n keywords:\n 'begin end true false declare define global ' +\n 'constant private linker_private internal ' +\n 'available_externally linkonce linkonce_odr weak ' +\n 'weak_odr appending dllimport dllexport common ' +\n 'default hidden protected extern_weak external ' +\n 'thread_local zeroinitializer undef null to tail ' +\n 'target triple datalayout volatile nuw nsw nnan ' +\n 'ninf nsz arcp fast exact inbounds align ' +\n 'addrspace section alias module asm sideeffect ' +\n 'gc dbg linker_private_weak attributes blockaddress ' +\n 'initialexec localdynamic localexec prefix unnamed_addr ' +\n 'ccc fastcc coldcc x86_stdcallcc x86_fastcallcc ' +\n 'arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ' +\n 'ptx_kernel intel_ocl_bicc msp430_intrcc spir_func ' +\n 'spir_kernel x86_64_sysvcc x86_64_win64cc x86_thiscallcc ' +\n 'cc c signext zeroext inreg sret nounwind ' +\n 'noreturn noalias nocapture byval nest readnone ' +\n 'readonly inlinehint noinline alwaysinline optsize ssp ' +\n 'sspreq noredzone noimplicitfloat naked builtin cold ' +\n 'nobuiltin noduplicate nonlazybind optnone returns_twice ' +\n 'sanitize_address sanitize_memory sanitize_thread sspstrong ' +\n 'uwtable returned type opaque eq ne slt sgt ' +\n 'sle sge ult ugt ule uge oeq one olt ogt ' +\n 'ole oge ord uno ueq une x acq_rel acquire ' +\n 'alignstack atomic catch cleanup filter inteldialect ' +\n 'max min monotonic nand personality release seq_cst ' +\n 'singlethread umax umin unordered xchg add fadd ' +\n 'sub fsub mul fmul udiv sdiv fdiv urem srem ' +\n 'frem shl lshr ashr and or xor icmp fcmp ' +\n 'phi call trunc zext sext fptrunc fpext uitofp ' +\n 'sitofp fptoui fptosi inttoptr ptrtoint bitcast ' +\n 'addrspacecast select va_arg ret br switch invoke ' +\n 'unwind unreachable indirectbr landingpad resume ' +\n 'malloc alloca free load store getelementptr ' +\n 'extractelement insertelement shufflevector getresult ' +\n 'extractvalue insertvalue atomicrmw cmpxchg fence ' +\n 'argmemonly double',\n contains: [\n TYPE,\n // this matches \"empty comments\"...\n // ...because it's far more likely this is a statement terminator in\n // another language than an actual comment\n hljs.COMMENT(/;\\s*$/, null, { relevance: 0 }),\n hljs.COMMENT(/;/, /$/),\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n variants: [\n // Double-quoted string\n { begin: /\"/, end: /[^\\\\]\"/ },\n ]\n },\n FUNCTION,\n PUNCTUATION,\n OPERATOR,\n VARIABLE,\n LABEL,\n NUMBER\n ]\n };\n}\n\nmodule.exports = llvm;\n","/*\nLanguage: LSL (Linden Scripting Language)\nDescription: The Linden Scripting Language is used in Second Life by Linden Labs.\nAuthor: Builder's Brewery <buildersbrewery@gmail.com>\nWebsite: http://wiki.secondlife.com/wiki/LSL_Portal\nCategory: scripting\n*/\n\nfunction lsl(hljs) {\n\n var LSL_STRING_ESCAPE_CHARS = {\n className: 'subst',\n begin: /\\\\[tn\"\\\\]/\n };\n\n var LSL_STRINGS = {\n className: 'string',\n begin: '\"',\n end: '\"',\n contains: [\n LSL_STRING_ESCAPE_CHARS\n ]\n };\n\n var LSL_NUMBERS = {\n className: 'number',\n relevance:0,\n begin: hljs.C_NUMBER_RE\n };\n\n var LSL_CONSTANTS = {\n className: 'literal',\n variants: [\n {\n begin: '\\\\b(PI|TWO_PI|PI_BY_TWO|DEG_TO_RAD|RAD_TO_DEG|SQRT2)\\\\b'\n },\n {\n begin: '\\\\b(XP_ERROR_(EXPERIENCES_DISABLED|EXPERIENCE_(DISABLED|SUSPENDED)|INVALID_(EXPERIENCE|PARAMETERS)|KEY_NOT_FOUND|MATURITY_EXCEEDED|NONE|NOT_(FOUND|PERMITTED(_LAND)?)|NO_EXPERIENCE|QUOTA_EXCEEDED|RETRY_UPDATE|STORAGE_EXCEPTION|STORE_DISABLED|THROTTLED|UNKNOWN_ERROR)|JSON_APPEND|STATUS_(PHYSICS|ROTATE_[XYZ]|PHANTOM|SANDBOX|BLOCK_GRAB(_OBJECT)?|(DIE|RETURN)_AT_EDGE|CAST_SHADOWS|OK|MALFORMED_PARAMS|TYPE_MISMATCH|BOUNDS_ERROR|NOT_(FOUND|SUPPORTED)|INTERNAL_ERROR|WHITELIST_FAILED)|AGENT(_(BY_(LEGACY_|USER)NAME|FLYING|ATTACHMENTS|SCRIPTED|MOUSELOOK|SITTING|ON_OBJECT|AWAY|WALKING|IN_AIR|TYPING|CROUCHING|BUSY|ALWAYS_RUN|AUTOPILOT|LIST_(PARCEL(_OWNER)?|REGION)))?|CAMERA_(PITCH|DISTANCE|BEHINDNESS_(ANGLE|LAG)|(FOCUS|POSITION)(_(THRESHOLD|LOCKED|LAG))?|FOCUS_OFFSET|ACTIVE)|ANIM_ON|LOOP|REVERSE|PING_PONG|SMOOTH|ROTATE|SCALE|ALL_SIDES|LINK_(ROOT|SET|ALL_(OTHERS|CHILDREN)|THIS)|ACTIVE|PASS(IVE|_(ALWAYS|IF_NOT_HANDLED|NEVER))|SCRIPTED|CONTROL_(FWD|BACK|(ROT_)?(LEFT|RIGHT)|UP|DOWN|(ML_)?LBUTTON)|PERMISSION_(RETURN_OBJECTS|DEBIT|OVERRIDE_ANIMATIONS|SILENT_ESTATE_MANAGEMENT|TAKE_CONTROLS|TRIGGER_ANIMATION|ATTACH|CHANGE_LINKS|(CONTROL|TRACK)_CAMERA|TELEPORT)|INVENTORY_(TEXTURE|SOUND|OBJECT|SCRIPT|LANDMARK|CLOTHING|NOTECARD|BODYPART|ANIMATION|GESTURE|ALL|NONE)|CHANGED_(INVENTORY|COLOR|SHAPE|SCALE|TEXTURE|LINK|ALLOWED_DROP|OWNER|REGION(_START)?|TELEPORT|MEDIA)|OBJECT_(CLICK_ACTION|HOVER_HEIGHT|LAST_OWNER_ID|(PHYSICS|SERVER|STREAMING)_COST|UNKNOWN_DETAIL|CHARACTER_TIME|PHANTOM|PHYSICS|TEMP_(ATTACHED|ON_REZ)|NAME|DESC|POS|PRIM_(COUNT|EQUIVALENCE)|RETURN_(PARCEL(_OWNER)?|REGION)|REZZER_KEY|ROO?T|VELOCITY|OMEGA|OWNER|GROUP(_TAG)?|CREATOR|ATTACHED_(POINT|SLOTS_AVAILABLE)|RENDER_WEIGHT|(BODY_SHAPE|PATHFINDING)_TYPE|(RUNNING|TOTAL)_SCRIPT_COUNT|TOTAL_INVENTORY_COUNT|SCRIPT_(MEMORY|TIME))|TYPE_(INTEGER|FLOAT|STRING|KEY|VECTOR|ROTATION|INVALID)|(DEBUG|PUBLIC)_CHANNEL|ATTACH_(AVATAR_CENTER|CHEST|HEAD|BACK|PELVIS|MOUTH|CHIN|NECK|NOSE|BELLY|[LR](SHOULDER|HAND|FOOT|EAR|EYE|[UL](ARM|LEG)|HIP)|(LEFT|RIGHT)_PEC|HUD_(CENTER_[12]|TOP_(RIGHT|CENTER|LEFT)|BOTTOM(_(RIGHT|LEFT))?)|[LR]HAND_RING1|TAIL_(BASE|TIP)|[LR]WING|FACE_(JAW|[LR]EAR|[LR]EYE|TOUNGE)|GROIN|HIND_[LR]FOOT)|LAND_(LEVEL|RAISE|LOWER|SMOOTH|NOISE|REVERT)|DATA_(ONLINE|NAME|BORN|SIM_(POS|STATUS|RATING)|PAYINFO)|PAYMENT_INFO_(ON_FILE|USED)|REMOTE_DATA_(CHANNEL|REQUEST|REPLY)|PSYS_(PART_(BF_(ZERO|ONE(_MINUS_(DEST_COLOR|SOURCE_(ALPHA|COLOR)))?|DEST_COLOR|SOURCE_(ALPHA|COLOR))|BLEND_FUNC_(DEST|SOURCE)|FLAGS|(START|END)_(COLOR|ALPHA|SCALE|GLOW)|MAX_AGE|(RIBBON|WIND|INTERP_(COLOR|SCALE)|BOUNCE|FOLLOW_(SRC|VELOCITY)|TARGET_(POS|LINEAR)|EMISSIVE)_MASK)|SRC_(MAX_AGE|PATTERN|ANGLE_(BEGIN|END)|BURST_(RATE|PART_COUNT|RADIUS|SPEED_(MIN|MAX))|ACCEL|TEXTURE|TARGET_KEY|OMEGA|PATTERN_(DROP|EXPLODE|ANGLE(_CONE(_EMPTY)?)?)))|VEHICLE_(REFERENCE_FRAME|TYPE_(NONE|SLED|CAR|BOAT|AIRPLANE|BALLOON)|(LINEAR|ANGULAR)_(FRICTION_TIMESCALE|MOTOR_DIRECTION)|LINEAR_MOTOR_OFFSET|HOVER_(HEIGHT|EFFICIENCY|TIMESCALE)|BUOYANCY|(LINEAR|ANGULAR)_(DEFLECTION_(EFFICIENCY|TIMESCALE)|MOTOR_(DECAY_)?TIMESCALE)|VERTICAL_ATTRACTION_(EFFICIENCY|TIMESCALE)|BANKING_(EFFICIENCY|MIX|TIMESCALE)|FLAG_(NO_DEFLECTION_UP|LIMIT_(ROLL_ONLY|MOTOR_UP)|HOVER_((WATER|TERRAIN|UP)_ONLY|GLOBAL_HEIGHT)|MOUSELOOK_(STEER|BANK)|CAMERA_DECOUPLED))|PRIM_(ALLOW_UNSIT|ALPHA_MODE(_(BLEND|EMISSIVE|MASK|NONE))?|NORMAL|SPECULAR|TYPE(_(BOX|CYLINDER|PRISM|SPHERE|TORUS|TUBE|RING|SCULPT))?|HOLE_(DEFAULT|CIRCLE|SQUARE|TRIANGLE)|MATERIAL(_(STONE|METAL|GLASS|WOOD|FLESH|PLASTIC|RUBBER))?|SHINY_(NONE|LOW|MEDIUM|HIGH)|BUMP_(NONE|BRIGHT|DARK|WOOD|BARK|BRICKS|CHECKER|CONCRETE|TILE|STONE|DISKS|GRAVEL|BLOBS|SIDING|LARGETILE|STUCCO|SUCTION|WEAVE)|TEXGEN_(DEFAULT|PLANAR)|SCRIPTED_SIT_ONLY|SCULPT_(TYPE_(SPHERE|TORUS|PLANE|CYLINDER|MASK)|FLAG_(MIRROR|INVERT))|PHYSICS(_(SHAPE_(CONVEX|NONE|PRIM|TYPE)))?|(POS|ROT)_LOCAL|SLICE|TEXT|FLEXIBLE|POINT_LIGHT|TEMP_ON_REZ|PHANTOM|POSITION|SIT_TARGET|SIZE|ROTATION|TEXTURE|NAME|OMEGA|DESC|LINK_TARGET|COLOR|BUMP_SHINY|FULLBRIGHT|TEXGEN|GLOW|MEDIA_(ALT_IMAGE_ENABLE|CONTROLS|(CURRENT|HOME)_URL|AUTO_(LOOP|PLAY|SCALE|ZOOM)|FIRST_CLICK_INTERACT|(WIDTH|HEIGHT)_PIXELS|WHITELIST(_ENABLE)?|PERMS_(INTERACT|CONTROL)|PARAM_MAX|CONTROLS_(STANDARD|MINI)|PERM_(NONE|OWNER|GROUP|ANYONE)|MAX_(URL_LENGTH|WHITELIST_(SIZE|COUNT)|(WIDTH|HEIGHT)_PIXELS)))|MASK_(BASE|OWNER|GROUP|EVERYONE|NEXT)|PERM_(TRANSFER|MODIFY|COPY|MOVE|ALL)|PARCEL_(MEDIA_COMMAND_(STOP|PAUSE|PLAY|LOOP|TEXTURE|URL|TIME|AGENT|UNLOAD|AUTO_ALIGN|TYPE|SIZE|DESC|LOOP_SET)|FLAG_(ALLOW_(FLY|(GROUP_)?SCRIPTS|LANDMARK|TERRAFORM|DAMAGE|CREATE_(GROUP_)?OBJECTS)|USE_(ACCESS_(GROUP|LIST)|BAN_LIST|LAND_PASS_LIST)|LOCAL_SOUND_ONLY|RESTRICT_PUSHOBJECT|ALLOW_(GROUP|ALL)_OBJECT_ENTRY)|COUNT_(TOTAL|OWNER|GROUP|OTHER|SELECTED|TEMP)|DETAILS_(NAME|DESC|OWNER|GROUP|AREA|ID|SEE_AVATARS))|LIST_STAT_(MAX|MIN|MEAN|MEDIAN|STD_DEV|SUM(_SQUARES)?|NUM_COUNT|GEOMETRIC_MEAN|RANGE)|PAY_(HIDE|DEFAULT)|REGION_FLAG_(ALLOW_DAMAGE|FIXED_SUN|BLOCK_TERRAFORM|SANDBOX|DISABLE_(COLLISIONS|PHYSICS)|BLOCK_FLY|ALLOW_DIRECT_TELEPORT|RESTRICT_PUSHOBJECT)|HTTP_(METHOD|MIMETYPE|BODY_(MAXLENGTH|TRUNCATED)|CUSTOM_HEADER|PRAGMA_NO_CACHE|VERBOSE_THROTTLE|VERIFY_CERT)|SIT_(INVALID_(AGENT|LINK_OBJECT)|NO(T_EXPERIENCE|_(ACCESS|EXPERIENCE_PERMISSION|SIT_TARGET)))|STRING_(TRIM(_(HEAD|TAIL))?)|CLICK_ACTION_(NONE|TOUCH|SIT|BUY|PAY|OPEN(_MEDIA)?|PLAY|ZOOM)|TOUCH_INVALID_FACE|PROFILE_(NONE|SCRIPT_MEMORY)|RC_(DATA_FLAGS|DETECT_PHANTOM|GET_(LINK_NUM|NORMAL|ROOT_KEY)|MAX_HITS|REJECT_(TYPES|AGENTS|(NON)?PHYSICAL|LAND))|RCERR_(CAST_TIME_EXCEEDED|SIM_PERF_LOW|UNKNOWN)|ESTATE_ACCESS_(ALLOWED_(AGENT|GROUP)_(ADD|REMOVE)|BANNED_AGENT_(ADD|REMOVE))|DENSITY|FRICTION|RESTITUTION|GRAVITY_MULTIPLIER|KFM_(COMMAND|CMD_(PLAY|STOP|PAUSE)|MODE|FORWARD|LOOP|PING_PONG|REVERSE|DATA|ROTATION|TRANSLATION)|ERR_(GENERIC|PARCEL_PERMISSIONS|MALFORMED_PARAMS|RUNTIME_PERMISSIONS|THROTTLED)|CHARACTER_(CMD_((SMOOTH_)?STOP|JUMP)|DESIRED_(TURN_)?SPEED|RADIUS|STAY_WITHIN_PARCEL|LENGTH|ORIENTATION|ACCOUNT_FOR_SKIPPED_FRAMES|AVOIDANCE_MODE|TYPE(_([ABCD]|NONE))?|MAX_(DECEL|TURN_RADIUS|(ACCEL|SPEED)))|PURSUIT_(OFFSET|FUZZ_FACTOR|GOAL_TOLERANCE|INTERCEPT)|REQUIRE_LINE_OF_SIGHT|FORCE_DIRECT_PATH|VERTICAL|HORIZONTAL|AVOID_(CHARACTERS|DYNAMIC_OBSTACLES|NONE)|PU_(EVADE_(HIDDEN|SPOTTED)|FAILURE_(DYNAMIC_PATHFINDING_DISABLED|INVALID_(GOAL|START)|NO_(NAVMESH|VALID_DESTINATION)|OTHER|TARGET_GONE|(PARCEL_)?UNREACHABLE)|(GOAL|SLOWDOWN_DISTANCE)_REACHED)|TRAVERSAL_TYPE(_(FAST|NONE|SLOW))?|CONTENT_TYPE_(ATOM|FORM|HTML|JSON|LLSD|RSS|TEXT|XHTML|XML)|GCNP_(RADIUS|STATIC)|(PATROL|WANDER)_PAUSE_AT_WAYPOINTS|OPT_(AVATAR|CHARACTER|EXCLUSION_VOLUME|LEGACY_LINKSET|MATERIAL_VOLUME|OTHER|STATIC_OBSTACLE|WALKABLE)|SIM_STAT_PCT_CHARS_STEPPED)\\\\b'\n },\n {\n begin: '\\\\b(FALSE|TRUE)\\\\b'\n },\n {\n begin: '\\\\b(ZERO_ROTATION)\\\\b'\n },\n {\n begin: '\\\\b(EOF|JSON_(ARRAY|DELETE|FALSE|INVALID|NULL|NUMBER|OBJECT|STRING|TRUE)|NULL_KEY|TEXTURE_(BLANK|DEFAULT|MEDIA|PLYWOOD|TRANSPARENT)|URL_REQUEST_(GRANTED|DENIED))\\\\b'\n },\n {\n begin: '\\\\b(ZERO_VECTOR|TOUCH_INVALID_(TEXCOORD|VECTOR))\\\\b'\n }\n ]\n };\n\n var LSL_FUNCTIONS = {\n className: 'built_in',\n begin: '\\\\b(ll(AgentInExperience|(Create|DataSize|Delete|KeyCount|Keys|Read|Update)KeyValue|GetExperience(Details|ErrorMessage)|ReturnObjectsBy(ID|Owner)|Json(2List|[GS]etValue|ValueType)|Sin|Cos|Tan|Atan2|Sqrt|Pow|Abs|Fabs|Frand|Floor|Ceil|Round|Vec(Mag|Norm|Dist)|Rot(Between|2(Euler|Fwd|Left|Up))|(Euler|Axes)2Rot|Whisper|(Region|Owner)?Say|Shout|Listen(Control|Remove)?|Sensor(Repeat|Remove)?|Detected(Name|Key|Owner|Type|Pos|Vel|Grab|Rot|Group|LinkNumber)|Die|Ground|Wind|([GS]et)(AnimationOverride|MemoryLimit|PrimMediaParams|ParcelMusicURL|Object(Desc|Name)|PhysicsMaterial|Status|Scale|Color|Alpha|Texture|Pos|Rot|Force|Torque)|ResetAnimationOverride|(Scale|Offset|Rotate)Texture|(Rot)?Target(Remove)?|(Stop)?MoveToTarget|Apply(Rotational)?Impulse|Set(KeyframedMotion|ContentType|RegionPos|(Angular)?Velocity|Buoyancy|HoverHeight|ForceAndTorque|TimerEvent|ScriptState|Damage|TextureAnim|Sound(Queueing|Radius)|Vehicle(Type|(Float|Vector|Rotation)Param)|(Touch|Sit)?Text|Camera(Eye|At)Offset|PrimitiveParams|ClickAction|Link(Alpha|Color|PrimitiveParams(Fast)?|Texture(Anim)?|Camera|Media)|RemoteScriptAccessPin|PayPrice|LocalRot)|ScaleByFactor|Get((Max|Min)ScaleFactor|ClosestNavPoint|StaticPath|SimStats|Env|PrimitiveParams|Link(PrimitiveParams|Number(OfSides)?|Key|Name|Media)|HTTPHeader|FreeURLs|Object(Details|PermMask|PrimCount)|Parcel(MaxPrims|Details|Prim(Count|Owners))|Attached(List)?|(SPMax|Free|Used)Memory|Region(Name|TimeDilation|FPS|Corner|AgentCount)|Root(Position|Rotation)|UnixTime|(Parcel|Region)Flags|(Wall|GMT)clock|SimulatorHostname|BoundingBox|GeometricCenter|Creator|NumberOf(Prims|NotecardLines|Sides)|Animation(List)?|(Camera|Local)(Pos|Rot)|Vel|Accel|Omega|Time(stamp|OfDay)|(Object|CenterOf)?Mass|MassMKS|Energy|Owner|(Owner)?Key|SunDirection|Texture(Offset|Scale|Rot)|Inventory(Number|Name|Key|Type|Creator|PermMask)|Permissions(Key)?|StartParameter|List(Length|EntryType)|Date|Agent(Size|Info|Language|List)|LandOwnerAt|NotecardLine|Script(Name|State))|(Get|Reset|GetAndReset)Time|PlaySound(Slave)?|LoopSound(Master|Slave)?|(Trigger|Stop|Preload)Sound|((Get|Delete)Sub|Insert)String|To(Upper|Lower)|Give(InventoryList|Money)|RezObject|(Stop)?LookAt|Sleep|CollisionFilter|(Take|Release)Controls|DetachFromAvatar|AttachToAvatar(Temp)?|InstantMessage|(GetNext)?Email|StopHover|MinEventDelay|RotLookAt|String(Length|Trim)|(Start|Stop)Animation|TargetOmega|Request(Experience)?Permissions|(Create|Break)Link|BreakAllLinks|(Give|Remove)Inventory|Water|PassTouches|Request(Agent|Inventory)Data|TeleportAgent(Home|GlobalCoords)?|ModifyLand|CollisionSound|ResetScript|MessageLinked|PushObject|PassCollisions|AxisAngle2Rot|Rot2(Axis|Angle)|A(cos|sin)|AngleBetween|AllowInventoryDrop|SubStringIndex|List2(CSV|Integer|Json|Float|String|Key|Vector|Rot|List(Strided)?)|DeleteSubList|List(Statistics|Sort|Randomize|(Insert|Find|Replace)List)|EdgeOfWorld|AdjustSoundVolume|Key2Name|TriggerSoundLimited|EjectFromLand|(CSV|ParseString)2List|OverMyLand|SameGroup|UnSit|Ground(Slope|Normal|Contour)|GroundRepel|(Set|Remove)VehicleFlags|SitOnLink|(AvatarOn)?(Link)?SitTarget|Script(Danger|Profiler)|Dialog|VolumeDetect|ResetOtherScript|RemoteLoadScriptPin|(Open|Close)RemoteDataChannel|SendRemoteData|RemoteDataReply|(Integer|String)ToBase64|XorBase64|Log(10)?|Base64To(String|Integer)|ParseStringKeepNulls|RezAtRoot|RequestSimulatorData|ForceMouselook|(Load|Release|(E|Une)scape)URL|ParcelMedia(CommandList|Query)|ModPow|MapDestination|(RemoveFrom|AddTo|Reset)Land(Pass|Ban)List|(Set|Clear)CameraParams|HTTP(Request|Response)|TextBox|DetectedTouch(UV|Face|Pos|(N|Bin)ormal|ST)|(MD5|SHA1|DumpList2)String|Request(Secure)?URL|Clear(Prim|Link)Media|(Link)?ParticleSystem|(Get|Request)(Username|DisplayName)|RegionSayTo|CastRay|GenerateKey|TransferLindenDollars|ManageEstateAccess|(Create|Delete)Character|ExecCharacterCmd|Evade|FleeFrom|NavigateTo|PatrolPoints|Pursue|UpdateCharacter|WanderWithin))\\\\b'\n };\n\n return {\n name: 'LSL (Linden Scripting Language)',\n illegal: ':',\n contains: [\n LSL_STRINGS,\n {\n className: 'comment',\n variants: [\n hljs.COMMENT('//', '$'),\n hljs.COMMENT('/\\\\*', '\\\\*/')\n ],\n relevance: 0\n },\n LSL_NUMBERS,\n {\n className: 'section',\n variants: [\n {\n begin: '\\\\b(state|default)\\\\b'\n },\n {\n begin: '\\\\b(state_(entry|exit)|touch(_(start|end))?|(land_)?collision(_(start|end))?|timer|listen|(no_)?sensor|control|(not_)?at_(rot_)?target|money|email|experience_permissions(_denied)?|run_time_permissions|changed|attach|dataserver|moving_(start|end)|link_message|(on|object)_rez|remote_data|http_re(sponse|quest)|path_update|transaction_result)\\\\b'\n }\n ]\n },\n LSL_FUNCTIONS,\n LSL_CONSTANTS,\n {\n className: 'type',\n begin: '\\\\b(integer|float|string|key|vector|quaternion|rotation|list)\\\\b'\n }\n ]\n };\n}\n\nmodule.exports = lsl;\n","/*\nLanguage: Lua\nDescription: Lua is a powerful, efficient, lightweight, embeddable scripting language.\nAuthor: Andrew Fedorov <dmmdrs@mail.ru>\nCategory: common, scripting\nWebsite: https://www.lua.org\n*/\n\nfunction lua(hljs) {\n const OPENING_LONG_BRACKET = '\\\\[=*\\\\[';\n const CLOSING_LONG_BRACKET = '\\\\]=*\\\\]';\n const LONG_BRACKETS = {\n begin: OPENING_LONG_BRACKET,\n end: CLOSING_LONG_BRACKET,\n contains: ['self']\n };\n const COMMENTS = [\n hljs.COMMENT('--(?!' + OPENING_LONG_BRACKET + ')', '$'),\n hljs.COMMENT(\n '--' + OPENING_LONG_BRACKET,\n CLOSING_LONG_BRACKET,\n {\n contains: [LONG_BRACKETS],\n relevance: 10\n }\n )\n ];\n return {\n name: 'Lua',\n keywords: {\n $pattern: hljs.UNDERSCORE_IDENT_RE,\n literal: \"true false nil\",\n keyword: \"and break do else elseif end for goto if in local not or repeat return then until while\",\n built_in:\n // Metatags and globals:\n '_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len ' +\n '__gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert ' +\n // Standard methods and properties:\n 'collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring ' +\n 'module next pairs pcall print rawequal rawget rawset require select setfenv ' +\n 'setmetatable tonumber tostring type unpack xpcall arg self ' +\n // Library methods and properties (one line per library):\n 'coroutine resume yield status wrap create running debug getupvalue ' +\n 'debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv ' +\n 'io lines write close flush open output type read stderr stdin input stdout popen tmpfile ' +\n 'math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan ' +\n 'os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall ' +\n 'string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower ' +\n 'table setn insert getn foreachi maxn foreach concat sort remove'\n },\n contains: COMMENTS.concat([\n {\n className: 'function',\n beginKeywords: 'function',\n end: '\\\\)',\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n begin: '([_a-zA-Z]\\\\w*\\\\.)*([_a-zA-Z]\\\\w*:)?[_a-zA-Z]\\\\w*'\n }),\n {\n className: 'params',\n begin: '\\\\(',\n endsWithParent: true,\n contains: COMMENTS\n }\n ].concat(COMMENTS)\n },\n hljs.C_NUMBER_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: OPENING_LONG_BRACKET,\n end: CLOSING_LONG_BRACKET,\n contains: [LONG_BRACKETS],\n relevance: 5\n }\n ])\n };\n}\n\nmodule.exports = lua;\n","/*\nLanguage: Makefile\nAuthor: Ivan Sagalaev <maniac@softwaremaniacs.org>\nContributors: Joël Porquet <joel@porquet.org>\nWebsite: https://www.gnu.org/software/make/manual/html_node/Introduction.html\nCategory: common\n*/\n\nfunction makefile(hljs) {\n /* Variables: simple (eg $(var)) and special (eg $@) */\n const VARIABLE = {\n className: 'variable',\n variants: [\n {\n begin: '\\\\$\\\\(' + hljs.UNDERSCORE_IDENT_RE + '\\\\)',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: /\\$[@%<?\\^\\+\\*]/\n }\n ]\n };\n /* Quoted string with variables inside */\n const QUOTE_STRING = {\n className: 'string',\n begin: /\"/,\n end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VARIABLE\n ]\n };\n /* Function: $(func arg,...) */\n const FUNC = {\n className: 'variable',\n begin: /\\$\\([\\w-]+\\s/,\n end: /\\)/,\n keywords: {\n built_in:\n 'subst patsubst strip findstring filter filter-out sort ' +\n 'word wordlist firstword lastword dir notdir suffix basename ' +\n 'addsuffix addprefix join wildcard realpath abspath error warning ' +\n 'shell origin flavor foreach if or and call eval file value'\n },\n contains: [ VARIABLE ]\n };\n /* Variable assignment */\n const ASSIGNMENT = {\n begin: '^' + hljs.UNDERSCORE_IDENT_RE + '\\\\s*(?=[:+?]?=)'\n };\n /* Meta targets (.PHONY) */\n const META = {\n className: 'meta',\n begin: /^\\.PHONY:/,\n end: /$/,\n keywords: {\n $pattern: /[\\.\\w]+/,\n 'meta-keyword': '.PHONY'\n }\n };\n /* Targets */\n const TARGET = {\n className: 'section',\n begin: /^[^\\s]+:/,\n end: /$/,\n contains: [ VARIABLE ]\n };\n return {\n name: 'Makefile',\n aliases: [\n 'mk',\n 'mak',\n 'make',\n ],\n keywords: {\n $pattern: /[\\w-]+/,\n keyword: 'define endef undefine ifdef ifndef ifeq ifneq else endif ' +\n 'include -include sinclude override export unexport private vpath'\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n VARIABLE,\n QUOTE_STRING,\n FUNC,\n ASSIGNMENT,\n META,\n TARGET\n ]\n };\n}\n\nmodule.exports = makefile;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/*\nLanguage: Markdown\nRequires: xml.js\nAuthor: John Crepezzi <john.crepezzi@gmail.com>\nWebsite: https://daringfireball.net/projects/markdown/\nCategory: common, markup\n*/\n\nfunction markdown(hljs) {\n const INLINE_HTML = {\n begin: /<\\/?[A-Za-z_]/,\n end: '>',\n subLanguage: 'xml',\n relevance: 0\n };\n const HORIZONTAL_RULE = {\n begin: '^[-\\\\*]{3,}',\n end: '$'\n };\n const CODE = {\n className: 'code',\n variants: [\n // TODO: fix to allow these to work with sublanguage also\n {\n begin: '(`{3,})[^`](.|\\\\n)*?\\\\1`*[ ]*'\n },\n {\n begin: '(~{3,})[^~](.|\\\\n)*?\\\\1~*[ ]*'\n },\n // needed to allow markdown as a sublanguage to work\n {\n begin: '```',\n end: '```+[ ]*$'\n },\n {\n begin: '~~~',\n end: '~~~+[ ]*$'\n },\n {\n begin: '`.+?`'\n },\n {\n begin: '(?=^( {4}|\\\\t))',\n // use contains to gobble up multiple lines to allow the block to be whatever size\n // but only have a single open/close tag vs one per line\n contains: [\n {\n begin: '^( {4}|\\\\t)',\n end: '(\\\\n)$'\n }\n ],\n relevance: 0\n }\n ]\n };\n const LIST = {\n className: 'bullet',\n begin: '^[ \\t]*([*+-]|(\\\\d+\\\\.))(?=\\\\s+)',\n end: '\\\\s+',\n excludeEnd: true\n };\n const LINK_REFERENCE = {\n begin: /^\\[[^\\n]+\\]:/,\n returnBegin: true,\n contains: [\n {\n className: 'symbol',\n begin: /\\[/,\n end: /\\]/,\n excludeBegin: true,\n excludeEnd: true\n },\n {\n className: 'link',\n begin: /:\\s*/,\n end: /$/,\n excludeBegin: true\n }\n ]\n };\n const URL_SCHEME = /[A-Za-z][A-Za-z0-9+.-]*/;\n const LINK = {\n variants: [\n // too much like nested array access in so many languages\n // to have any real relevance\n {\n begin: /\\[.+?\\]\\[.*?\\]/,\n relevance: 0\n },\n // popular internet URLs\n {\n begin: /\\[.+?\\]\\(((data|javascript|mailto):|(?:http|ftp)s?:\\/\\/).*?\\)/,\n relevance: 2\n },\n {\n begin: concat(/\\[.+?\\]\\(/, URL_SCHEME, /:\\/\\/.*?\\)/),\n relevance: 2\n },\n // relative urls\n {\n begin: /\\[.+?\\]\\([./?&#].*?\\)/,\n relevance: 1\n },\n // whatever else, lower relevance (might not be a link at all)\n {\n begin: /\\[.+?\\]\\(.*?\\)/,\n relevance: 0\n }\n ],\n returnBegin: true,\n contains: [\n {\n className: 'string',\n relevance: 0,\n begin: '\\\\[',\n end: '\\\\]',\n excludeBegin: true,\n returnEnd: true\n },\n {\n className: 'link',\n relevance: 0,\n begin: '\\\\]\\\\(',\n end: '\\\\)',\n excludeBegin: true,\n excludeEnd: true\n },\n {\n className: 'symbol',\n relevance: 0,\n begin: '\\\\]\\\\[',\n end: '\\\\]',\n excludeBegin: true,\n excludeEnd: true\n }\n ]\n };\n const BOLD = {\n className: 'strong',\n contains: [], // defined later\n variants: [\n {\n begin: /_{2}/,\n end: /_{2}/\n },\n {\n begin: /\\*{2}/,\n end: /\\*{2}/\n }\n ]\n };\n const ITALIC = {\n className: 'emphasis',\n contains: [], // defined later\n variants: [\n {\n begin: /\\*(?!\\*)/,\n end: /\\*/\n },\n {\n begin: /_(?!_)/,\n end: /_/,\n relevance: 0\n }\n ]\n };\n BOLD.contains.push(ITALIC);\n ITALIC.contains.push(BOLD);\n\n let CONTAINABLE = [\n INLINE_HTML,\n LINK\n ];\n\n BOLD.contains = BOLD.contains.concat(CONTAINABLE);\n ITALIC.contains = ITALIC.contains.concat(CONTAINABLE);\n\n CONTAINABLE = CONTAINABLE.concat(BOLD, ITALIC);\n\n const HEADER = {\n className: 'section',\n variants: [\n {\n begin: '^#{1,6}',\n end: '$',\n contains: CONTAINABLE\n },\n {\n begin: '(?=^.+?\\\\n[=-]{2,}$)',\n contains: [\n {\n begin: '^[=-]*$'\n },\n {\n begin: '^',\n end: \"\\\\n\",\n contains: CONTAINABLE\n }\n ]\n }\n ]\n };\n\n const BLOCKQUOTE = {\n className: 'quote',\n begin: '^>\\\\s+',\n contains: CONTAINABLE,\n end: '$'\n };\n\n return {\n name: 'Markdown',\n aliases: [\n 'md',\n 'mkdown',\n 'mkd'\n ],\n contains: [\n HEADER,\n INLINE_HTML,\n LIST,\n BOLD,\n ITALIC,\n BLOCKQUOTE,\n CODE,\n HORIZONTAL_RULE,\n LINK,\n LINK_REFERENCE\n ]\n };\n}\n\nmodule.exports = markdown;\n","const SYSTEM_SYMBOLS = [\n \"AASTriangle\",\n \"AbelianGroup\",\n \"Abort\",\n \"AbortKernels\",\n \"AbortProtect\",\n \"AbortScheduledTask\",\n \"Above\",\n \"Abs\",\n \"AbsArg\",\n \"AbsArgPlot\",\n \"Absolute\",\n \"AbsoluteCorrelation\",\n \"AbsoluteCorrelationFunction\",\n \"AbsoluteCurrentValue\",\n \"AbsoluteDashing\",\n \"AbsoluteFileName\",\n \"AbsoluteOptions\",\n \"AbsolutePointSize\",\n \"AbsoluteThickness\",\n \"AbsoluteTime\",\n \"AbsoluteTiming\",\n \"AcceptanceThreshold\",\n \"AccountingForm\",\n \"Accumulate\",\n \"Accuracy\",\n \"AccuracyGoal\",\n \"ActionDelay\",\n \"ActionMenu\",\n \"ActionMenuBox\",\n \"ActionMenuBoxOptions\",\n \"Activate\",\n \"Active\",\n \"ActiveClassification\",\n \"ActiveClassificationObject\",\n \"ActiveItem\",\n \"ActivePrediction\",\n \"ActivePredictionObject\",\n \"ActiveStyle\",\n \"AcyclicGraphQ\",\n \"AddOnHelpPath\",\n \"AddSides\",\n \"AddTo\",\n \"AddToSearchIndex\",\n \"AddUsers\",\n \"AdjacencyGraph\",\n \"AdjacencyList\",\n \"AdjacencyMatrix\",\n \"AdjacentMeshCells\",\n \"AdjustmentBox\",\n \"AdjustmentBoxOptions\",\n \"AdjustTimeSeriesForecast\",\n \"AdministrativeDivisionData\",\n \"AffineHalfSpace\",\n \"AffineSpace\",\n \"AffineStateSpaceModel\",\n \"AffineTransform\",\n \"After\",\n \"AggregatedEntityClass\",\n \"AggregationLayer\",\n \"AircraftData\",\n \"AirportData\",\n \"AirPressureData\",\n \"AirTemperatureData\",\n \"AiryAi\",\n \"AiryAiPrime\",\n \"AiryAiZero\",\n \"AiryBi\",\n \"AiryBiPrime\",\n \"AiryBiZero\",\n \"AlgebraicIntegerQ\",\n \"AlgebraicNumber\",\n \"AlgebraicNumberDenominator\",\n \"AlgebraicNumberNorm\",\n \"AlgebraicNumberPolynomial\",\n \"AlgebraicNumberTrace\",\n \"AlgebraicRules\",\n \"AlgebraicRulesData\",\n \"Algebraics\",\n \"AlgebraicUnitQ\",\n \"Alignment\",\n \"AlignmentMarker\",\n \"AlignmentPoint\",\n \"All\",\n \"AllowAdultContent\",\n \"AllowedCloudExtraParameters\",\n \"AllowedCloudParameterExtensions\",\n \"AllowedDimensions\",\n \"AllowedFrequencyRange\",\n \"AllowedHeads\",\n \"AllowGroupClose\",\n \"AllowIncomplete\",\n \"AllowInlineCells\",\n \"AllowKernelInitialization\",\n \"AllowLooseGrammar\",\n \"AllowReverseGroupClose\",\n \"AllowScriptLevelChange\",\n \"AllowVersionUpdate\",\n \"AllTrue\",\n \"Alphabet\",\n \"AlphabeticOrder\",\n \"AlphabeticSort\",\n \"AlphaChannel\",\n \"AlternateImage\",\n \"AlternatingFactorial\",\n \"AlternatingGroup\",\n \"AlternativeHypothesis\",\n \"Alternatives\",\n \"AltitudeMethod\",\n \"AmbientLight\",\n \"AmbiguityFunction\",\n \"AmbiguityList\",\n \"Analytic\",\n \"AnatomyData\",\n \"AnatomyForm\",\n \"AnatomyPlot3D\",\n \"AnatomySkinStyle\",\n \"AnatomyStyling\",\n \"AnchoredSearch\",\n \"And\",\n \"AndersonDarlingTest\",\n \"AngerJ\",\n \"AngleBisector\",\n \"AngleBracket\",\n \"AnglePath\",\n \"AnglePath3D\",\n \"AngleVector\",\n \"AngularGauge\",\n \"Animate\",\n \"AnimationCycleOffset\",\n \"AnimationCycleRepetitions\",\n \"AnimationDirection\",\n \"AnimationDisplayTime\",\n \"AnimationRate\",\n \"AnimationRepetitions\",\n \"AnimationRunning\",\n \"AnimationRunTime\",\n \"AnimationTimeIndex\",\n \"Animator\",\n \"AnimatorBox\",\n \"AnimatorBoxOptions\",\n \"AnimatorElements\",\n \"Annotate\",\n \"Annotation\",\n \"AnnotationDelete\",\n \"AnnotationKeys\",\n \"AnnotationRules\",\n \"AnnotationValue\",\n \"Annuity\",\n \"AnnuityDue\",\n \"Annulus\",\n \"AnomalyDetection\",\n \"AnomalyDetector\",\n \"AnomalyDetectorFunction\",\n \"Anonymous\",\n \"Antialiasing\",\n \"AntihermitianMatrixQ\",\n \"Antisymmetric\",\n \"AntisymmetricMatrixQ\",\n \"Antonyms\",\n \"AnyOrder\",\n \"AnySubset\",\n \"AnyTrue\",\n \"Apart\",\n \"ApartSquareFree\",\n \"APIFunction\",\n \"Appearance\",\n \"AppearanceElements\",\n \"AppearanceRules\",\n \"AppellF1\",\n \"Append\",\n \"AppendCheck\",\n \"AppendLayer\",\n \"AppendTo\",\n \"Apply\",\n \"ApplySides\",\n \"ArcCos\",\n \"ArcCosh\",\n \"ArcCot\",\n \"ArcCoth\",\n \"ArcCsc\",\n \"ArcCsch\",\n \"ArcCurvature\",\n \"ARCHProcess\",\n \"ArcLength\",\n \"ArcSec\",\n \"ArcSech\",\n \"ArcSin\",\n \"ArcSinDistribution\",\n \"ArcSinh\",\n \"ArcTan\",\n \"ArcTanh\",\n \"Area\",\n \"Arg\",\n \"ArgMax\",\n \"ArgMin\",\n \"ArgumentCountQ\",\n \"ARIMAProcess\",\n \"ArithmeticGeometricMean\",\n \"ARMAProcess\",\n \"Around\",\n \"AroundReplace\",\n \"ARProcess\",\n \"Array\",\n \"ArrayComponents\",\n \"ArrayDepth\",\n \"ArrayFilter\",\n \"ArrayFlatten\",\n \"ArrayMesh\",\n \"ArrayPad\",\n \"ArrayPlot\",\n \"ArrayQ\",\n \"ArrayResample\",\n \"ArrayReshape\",\n \"ArrayRules\",\n \"Arrays\",\n \"Arrow\",\n \"Arrow3DBox\",\n \"ArrowBox\",\n \"Arrowheads\",\n \"ASATriangle\",\n \"Ask\",\n \"AskAppend\",\n \"AskConfirm\",\n \"AskDisplay\",\n \"AskedQ\",\n \"AskedValue\",\n \"AskFunction\",\n \"AskState\",\n \"AskTemplateDisplay\",\n \"AspectRatio\",\n \"AspectRatioFixed\",\n \"Assert\",\n \"AssociateTo\",\n \"Association\",\n \"AssociationFormat\",\n \"AssociationMap\",\n \"AssociationQ\",\n \"AssociationThread\",\n \"AssumeDeterministic\",\n \"Assuming\",\n \"Assumptions\",\n \"AstronomicalData\",\n \"Asymptotic\",\n \"AsymptoticDSolveValue\",\n \"AsymptoticEqual\",\n \"AsymptoticEquivalent\",\n \"AsymptoticGreater\",\n \"AsymptoticGreaterEqual\",\n \"AsymptoticIntegrate\",\n \"AsymptoticLess\",\n \"AsymptoticLessEqual\",\n \"AsymptoticOutputTracker\",\n \"AsymptoticProduct\",\n \"AsymptoticRSolveValue\",\n \"AsymptoticSolve\",\n \"AsymptoticSum\",\n \"Asynchronous\",\n \"AsynchronousTaskObject\",\n \"AsynchronousTasks\",\n \"Atom\",\n \"AtomCoordinates\",\n \"AtomCount\",\n \"AtomDiagramCoordinates\",\n \"AtomList\",\n \"AtomQ\",\n \"AttentionLayer\",\n \"Attributes\",\n \"Audio\",\n \"AudioAmplify\",\n \"AudioAnnotate\",\n \"AudioAnnotationLookup\",\n \"AudioBlockMap\",\n \"AudioCapture\",\n \"AudioChannelAssignment\",\n \"AudioChannelCombine\",\n \"AudioChannelMix\",\n \"AudioChannels\",\n \"AudioChannelSeparate\",\n \"AudioData\",\n \"AudioDelay\",\n \"AudioDelete\",\n \"AudioDevice\",\n \"AudioDistance\",\n \"AudioEncoding\",\n \"AudioFade\",\n \"AudioFrequencyShift\",\n \"AudioGenerator\",\n \"AudioIdentify\",\n \"AudioInputDevice\",\n \"AudioInsert\",\n \"AudioInstanceQ\",\n \"AudioIntervals\",\n \"AudioJoin\",\n \"AudioLabel\",\n \"AudioLength\",\n \"AudioLocalMeasurements\",\n \"AudioLooping\",\n \"AudioLoudness\",\n \"AudioMeasurements\",\n \"AudioNormalize\",\n \"AudioOutputDevice\",\n \"AudioOverlay\",\n \"AudioPad\",\n \"AudioPan\",\n \"AudioPartition\",\n \"AudioPause\",\n \"AudioPitchShift\",\n \"AudioPlay\",\n \"AudioPlot\",\n \"AudioQ\",\n \"AudioRecord\",\n \"AudioReplace\",\n \"AudioResample\",\n \"AudioReverb\",\n \"AudioReverse\",\n \"AudioSampleRate\",\n \"AudioSpectralMap\",\n \"AudioSpectralTransformation\",\n \"AudioSplit\",\n \"AudioStop\",\n \"AudioStream\",\n \"AudioStreams\",\n \"AudioTimeStretch\",\n \"AudioTracks\",\n \"AudioTrim\",\n \"AudioType\",\n \"AugmentedPolyhedron\",\n \"AugmentedSymmetricPolynomial\",\n \"Authenticate\",\n \"Authentication\",\n \"AuthenticationDialog\",\n \"AutoAction\",\n \"Autocomplete\",\n \"AutocompletionFunction\",\n \"AutoCopy\",\n \"AutocorrelationTest\",\n \"AutoDelete\",\n \"AutoEvaluateEvents\",\n \"AutoGeneratedPackage\",\n \"AutoIndent\",\n \"AutoIndentSpacings\",\n \"AutoItalicWords\",\n \"AutoloadPath\",\n \"AutoMatch\",\n \"Automatic\",\n \"AutomaticImageSize\",\n \"AutoMultiplicationSymbol\",\n \"AutoNumberFormatting\",\n \"AutoOpenNotebooks\",\n \"AutoOpenPalettes\",\n \"AutoQuoteCharacters\",\n \"AutoRefreshed\",\n \"AutoRemove\",\n \"AutorunSequencing\",\n \"AutoScaling\",\n \"AutoScroll\",\n \"AutoSpacing\",\n \"AutoStyleOptions\",\n \"AutoStyleWords\",\n \"AutoSubmitting\",\n \"Axes\",\n \"AxesEdge\",\n \"AxesLabel\",\n \"AxesOrigin\",\n \"AxesStyle\",\n \"AxiomaticTheory\",\n \"Axis\",\n \"BabyMonsterGroupB\",\n \"Back\",\n \"Background\",\n \"BackgroundAppearance\",\n \"BackgroundTasksSettings\",\n \"Backslash\",\n \"Backsubstitution\",\n \"Backward\",\n \"Ball\",\n \"Band\",\n \"BandpassFilter\",\n \"BandstopFilter\",\n \"BarabasiAlbertGraphDistribution\",\n \"BarChart\",\n \"BarChart3D\",\n \"BarcodeImage\",\n \"BarcodeRecognize\",\n \"BaringhausHenzeTest\",\n \"BarLegend\",\n \"BarlowProschanImportance\",\n \"BarnesG\",\n \"BarOrigin\",\n \"BarSpacing\",\n \"BartlettHannWindow\",\n \"BartlettWindow\",\n \"BaseDecode\",\n \"BaseEncode\",\n \"BaseForm\",\n \"Baseline\",\n \"BaselinePosition\",\n \"BaseStyle\",\n \"BasicRecurrentLayer\",\n \"BatchNormalizationLayer\",\n \"BatchSize\",\n \"BatesDistribution\",\n \"BattleLemarieWavelet\",\n \"BayesianMaximization\",\n \"BayesianMaximizationObject\",\n \"BayesianMinimization\",\n \"BayesianMinimizationObject\",\n \"Because\",\n \"BeckmannDistribution\",\n \"Beep\",\n \"Before\",\n \"Begin\",\n \"BeginDialogPacket\",\n \"BeginFrontEndInteractionPacket\",\n \"BeginPackage\",\n \"BellB\",\n \"BellY\",\n \"Below\",\n \"BenfordDistribution\",\n \"BeniniDistribution\",\n \"BenktanderGibratDistribution\",\n \"BenktanderWeibullDistribution\",\n \"BernoulliB\",\n \"BernoulliDistribution\",\n \"BernoulliGraphDistribution\",\n \"BernoulliProcess\",\n \"BernsteinBasis\",\n \"BesselFilterModel\",\n \"BesselI\",\n \"BesselJ\",\n \"BesselJZero\",\n \"BesselK\",\n \"BesselY\",\n \"BesselYZero\",\n \"Beta\",\n \"BetaBinomialDistribution\",\n \"BetaDistribution\",\n \"BetaNegativeBinomialDistribution\",\n \"BetaPrimeDistribution\",\n \"BetaRegularized\",\n \"Between\",\n \"BetweennessCentrality\",\n \"BeveledPolyhedron\",\n \"BezierCurve\",\n \"BezierCurve3DBox\",\n \"BezierCurve3DBoxOptions\",\n \"BezierCurveBox\",\n \"BezierCurveBoxOptions\",\n \"BezierFunction\",\n \"BilateralFilter\",\n \"Binarize\",\n \"BinaryDeserialize\",\n \"BinaryDistance\",\n \"BinaryFormat\",\n \"BinaryImageQ\",\n \"BinaryRead\",\n \"BinaryReadList\",\n \"BinarySerialize\",\n \"BinaryWrite\",\n \"BinCounts\",\n \"BinLists\",\n \"Binomial\",\n \"BinomialDistribution\",\n \"BinomialProcess\",\n \"BinormalDistribution\",\n \"BiorthogonalSplineWavelet\",\n \"BipartiteGraphQ\",\n \"BiquadraticFilterModel\",\n \"BirnbaumImportance\",\n \"BirnbaumSaundersDistribution\",\n \"BitAnd\",\n \"BitClear\",\n \"BitGet\",\n \"BitLength\",\n \"BitNot\",\n \"BitOr\",\n \"BitSet\",\n \"BitShiftLeft\",\n \"BitShiftRight\",\n \"BitXor\",\n \"BiweightLocation\",\n \"BiweightMidvariance\",\n \"Black\",\n \"BlackmanHarrisWindow\",\n \"BlackmanNuttallWindow\",\n \"BlackmanWindow\",\n \"Blank\",\n \"BlankForm\",\n \"BlankNullSequence\",\n \"BlankSequence\",\n \"Blend\",\n \"Block\",\n \"BlockchainAddressData\",\n \"BlockchainBase\",\n \"BlockchainBlockData\",\n \"BlockchainContractValue\",\n \"BlockchainData\",\n \"BlockchainGet\",\n \"BlockchainKeyEncode\",\n \"BlockchainPut\",\n \"BlockchainTokenData\",\n \"BlockchainTransaction\",\n \"BlockchainTransactionData\",\n \"BlockchainTransactionSign\",\n \"BlockchainTransactionSubmit\",\n \"BlockMap\",\n \"BlockRandom\",\n \"BlomqvistBeta\",\n \"BlomqvistBetaTest\",\n \"Blue\",\n \"Blur\",\n \"BodePlot\",\n \"BohmanWindow\",\n \"Bold\",\n \"Bond\",\n \"BondCount\",\n \"BondList\",\n \"BondQ\",\n \"Bookmarks\",\n \"Boole\",\n \"BooleanConsecutiveFunction\",\n \"BooleanConvert\",\n \"BooleanCountingFunction\",\n \"BooleanFunction\",\n \"BooleanGraph\",\n \"BooleanMaxterms\",\n \"BooleanMinimize\",\n \"BooleanMinterms\",\n \"BooleanQ\",\n \"BooleanRegion\",\n \"Booleans\",\n \"BooleanStrings\",\n \"BooleanTable\",\n \"BooleanVariables\",\n \"BorderDimensions\",\n \"BorelTannerDistribution\",\n \"Bottom\",\n \"BottomHatTransform\",\n \"BoundaryDiscretizeGraphics\",\n \"BoundaryDiscretizeRegion\",\n \"BoundaryMesh\",\n \"BoundaryMeshRegion\",\n \"BoundaryMeshRegionQ\",\n \"BoundaryStyle\",\n \"BoundedRegionQ\",\n \"BoundingRegion\",\n \"Bounds\",\n \"Box\",\n \"BoxBaselineShift\",\n \"BoxData\",\n \"BoxDimensions\",\n \"Boxed\",\n \"Boxes\",\n \"BoxForm\",\n \"BoxFormFormatTypes\",\n \"BoxFrame\",\n \"BoxID\",\n \"BoxMargins\",\n \"BoxMatrix\",\n \"BoxObject\",\n \"BoxRatios\",\n \"BoxRotation\",\n \"BoxRotationPoint\",\n \"BoxStyle\",\n \"BoxWhiskerChart\",\n \"Bra\",\n \"BracketingBar\",\n \"BraKet\",\n \"BrayCurtisDistance\",\n \"BreadthFirstScan\",\n \"Break\",\n \"BridgeData\",\n \"BrightnessEqualize\",\n \"BroadcastStationData\",\n \"Brown\",\n \"BrownForsytheTest\",\n \"BrownianBridgeProcess\",\n \"BrowserCategory\",\n \"BSplineBasis\",\n \"BSplineCurve\",\n \"BSplineCurve3DBox\",\n \"BSplineCurve3DBoxOptions\",\n \"BSplineCurveBox\",\n \"BSplineCurveBoxOptions\",\n \"BSplineFunction\",\n \"BSplineSurface\",\n \"BSplineSurface3DBox\",\n \"BSplineSurface3DBoxOptions\",\n \"BubbleChart\",\n \"BubbleChart3D\",\n \"BubbleScale\",\n \"BubbleSizes\",\n \"BuildingData\",\n \"BulletGauge\",\n \"BusinessDayQ\",\n \"ButterflyGraph\",\n \"ButterworthFilterModel\",\n \"Button\",\n \"ButtonBar\",\n \"ButtonBox\",\n \"ButtonBoxOptions\",\n \"ButtonCell\",\n \"ButtonContents\",\n \"ButtonData\",\n \"ButtonEvaluator\",\n \"ButtonExpandable\",\n \"ButtonFrame\",\n \"ButtonFunction\",\n \"ButtonMargins\",\n \"ButtonMinHeight\",\n \"ButtonNote\",\n \"ButtonNotebook\",\n \"ButtonSource\",\n \"ButtonStyle\",\n \"ButtonStyleMenuListing\",\n \"Byte\",\n \"ByteArray\",\n \"ByteArrayFormat\",\n \"ByteArrayQ\",\n \"ByteArrayToString\",\n \"ByteCount\",\n \"ByteOrdering\",\n \"C\",\n \"CachedValue\",\n \"CacheGraphics\",\n \"CachePersistence\",\n \"CalendarConvert\",\n \"CalendarData\",\n \"CalendarType\",\n \"Callout\",\n \"CalloutMarker\",\n \"CalloutStyle\",\n \"CallPacket\",\n \"CanberraDistance\",\n \"Cancel\",\n \"CancelButton\",\n \"CandlestickChart\",\n \"CanonicalGraph\",\n \"CanonicalizePolygon\",\n \"CanonicalizePolyhedron\",\n \"CanonicalName\",\n \"CanonicalWarpingCorrespondence\",\n \"CanonicalWarpingDistance\",\n \"CantorMesh\",\n \"CantorStaircase\",\n \"Cap\",\n \"CapForm\",\n \"CapitalDifferentialD\",\n \"Capitalize\",\n \"CapsuleShape\",\n \"CaptureRunning\",\n \"CardinalBSplineBasis\",\n \"CarlemanLinearize\",\n \"CarmichaelLambda\",\n \"CaseOrdering\",\n \"Cases\",\n \"CaseSensitive\",\n \"Cashflow\",\n \"Casoratian\",\n \"Catalan\",\n \"CatalanNumber\",\n \"Catch\",\n \"CategoricalDistribution\",\n \"Catenate\",\n \"CatenateLayer\",\n \"CauchyDistribution\",\n \"CauchyWindow\",\n \"CayleyGraph\",\n \"CDF\",\n \"CDFDeploy\",\n \"CDFInformation\",\n \"CDFWavelet\",\n \"Ceiling\",\n \"CelestialSystem\",\n \"Cell\",\n \"CellAutoOverwrite\",\n \"CellBaseline\",\n \"CellBoundingBox\",\n \"CellBracketOptions\",\n \"CellChangeTimes\",\n \"CellContents\",\n \"CellContext\",\n \"CellDingbat\",\n \"CellDynamicExpression\",\n \"CellEditDuplicate\",\n \"CellElementsBoundingBox\",\n \"CellElementSpacings\",\n \"CellEpilog\",\n \"CellEvaluationDuplicate\",\n \"CellEvaluationFunction\",\n \"CellEvaluationLanguage\",\n \"CellEventActions\",\n \"CellFrame\",\n \"CellFrameColor\",\n \"CellFrameLabelMargins\",\n \"CellFrameLabels\",\n \"CellFrameMargins\",\n \"CellGroup\",\n \"CellGroupData\",\n \"CellGrouping\",\n \"CellGroupingRules\",\n \"CellHorizontalScrolling\",\n \"CellID\",\n \"CellLabel\",\n \"CellLabelAutoDelete\",\n \"CellLabelMargins\",\n \"CellLabelPositioning\",\n \"CellLabelStyle\",\n \"CellLabelTemplate\",\n \"CellMargins\",\n \"CellObject\",\n \"CellOpen\",\n \"CellPrint\",\n \"CellProlog\",\n \"Cells\",\n \"CellSize\",\n \"CellStyle\",\n \"CellTags\",\n \"CellularAutomaton\",\n \"CensoredDistribution\",\n \"Censoring\",\n \"Center\",\n \"CenterArray\",\n \"CenterDot\",\n \"CentralFeature\",\n \"CentralMoment\",\n \"CentralMomentGeneratingFunction\",\n \"Cepstrogram\",\n \"CepstrogramArray\",\n \"CepstrumArray\",\n \"CForm\",\n \"ChampernowneNumber\",\n \"ChangeOptions\",\n \"ChannelBase\",\n \"ChannelBrokerAction\",\n \"ChannelDatabin\",\n \"ChannelHistoryLength\",\n \"ChannelListen\",\n \"ChannelListener\",\n \"ChannelListeners\",\n \"ChannelListenerWait\",\n \"ChannelObject\",\n \"ChannelPreSendFunction\",\n \"ChannelReceiverFunction\",\n \"ChannelSend\",\n \"ChannelSubscribers\",\n \"ChanVeseBinarize\",\n \"Character\",\n \"CharacterCounts\",\n \"CharacterEncoding\",\n \"CharacterEncodingsPath\",\n \"CharacteristicFunction\",\n \"CharacteristicPolynomial\",\n \"CharacterName\",\n \"CharacterNormalize\",\n \"CharacterRange\",\n \"Characters\",\n \"ChartBaseStyle\",\n \"ChartElementData\",\n \"ChartElementDataFunction\",\n \"ChartElementFunction\",\n \"ChartElements\",\n \"ChartLabels\",\n \"ChartLayout\",\n \"ChartLegends\",\n \"ChartStyle\",\n \"Chebyshev1FilterModel\",\n \"Chebyshev2FilterModel\",\n \"ChebyshevDistance\",\n \"ChebyshevT\",\n \"ChebyshevU\",\n \"Check\",\n \"CheckAbort\",\n \"CheckAll\",\n \"Checkbox\",\n \"CheckboxBar\",\n \"CheckboxBox\",\n \"CheckboxBoxOptions\",\n \"ChemicalData\",\n \"ChessboardDistance\",\n \"ChiDistribution\",\n \"ChineseRemainder\",\n \"ChiSquareDistribution\",\n \"ChoiceButtons\",\n \"ChoiceDialog\",\n \"CholeskyDecomposition\",\n \"Chop\",\n \"ChromaticityPlot\",\n \"ChromaticityPlot3D\",\n \"ChromaticPolynomial\",\n \"Circle\",\n \"CircleBox\",\n \"CircleDot\",\n \"CircleMinus\",\n \"CirclePlus\",\n \"CirclePoints\",\n \"CircleThrough\",\n \"CircleTimes\",\n \"CirculantGraph\",\n \"CircularOrthogonalMatrixDistribution\",\n \"CircularQuaternionMatrixDistribution\",\n \"CircularRealMatrixDistribution\",\n \"CircularSymplecticMatrixDistribution\",\n \"CircularUnitaryMatrixDistribution\",\n \"Circumsphere\",\n \"CityData\",\n \"ClassifierFunction\",\n \"ClassifierInformation\",\n \"ClassifierMeasurements\",\n \"ClassifierMeasurementsObject\",\n \"Classify\",\n \"ClassPriors\",\n \"Clear\",\n \"ClearAll\",\n \"ClearAttributes\",\n \"ClearCookies\",\n \"ClearPermissions\",\n \"ClearSystemCache\",\n \"ClebschGordan\",\n \"ClickPane\",\n \"Clip\",\n \"ClipboardNotebook\",\n \"ClipFill\",\n \"ClippingStyle\",\n \"ClipPlanes\",\n \"ClipPlanesStyle\",\n \"ClipRange\",\n \"Clock\",\n \"ClockGauge\",\n \"ClockwiseContourIntegral\",\n \"Close\",\n \"Closed\",\n \"CloseKernels\",\n \"ClosenessCentrality\",\n \"Closing\",\n \"ClosingAutoSave\",\n \"ClosingEvent\",\n \"ClosingSaveDialog\",\n \"CloudAccountData\",\n \"CloudBase\",\n \"CloudConnect\",\n \"CloudConnections\",\n \"CloudDeploy\",\n \"CloudDirectory\",\n \"CloudDisconnect\",\n \"CloudEvaluate\",\n \"CloudExport\",\n \"CloudExpression\",\n \"CloudExpressions\",\n \"CloudFunction\",\n \"CloudGet\",\n \"CloudImport\",\n \"CloudLoggingData\",\n \"CloudObject\",\n \"CloudObjectInformation\",\n \"CloudObjectInformationData\",\n \"CloudObjectNameFormat\",\n \"CloudObjects\",\n \"CloudObjectURLType\",\n \"CloudPublish\",\n \"CloudPut\",\n \"CloudRenderingMethod\",\n \"CloudSave\",\n \"CloudShare\",\n \"CloudSubmit\",\n \"CloudSymbol\",\n \"CloudUnshare\",\n \"CloudUserID\",\n \"ClusterClassify\",\n \"ClusterDissimilarityFunction\",\n \"ClusteringComponents\",\n \"ClusteringTree\",\n \"CMYKColor\",\n \"Coarse\",\n \"CodeAssistOptions\",\n \"Coefficient\",\n \"CoefficientArrays\",\n \"CoefficientDomain\",\n \"CoefficientList\",\n \"CoefficientRules\",\n \"CoifletWavelet\",\n \"Collect\",\n \"Colon\",\n \"ColonForm\",\n \"ColorBalance\",\n \"ColorCombine\",\n \"ColorConvert\",\n \"ColorCoverage\",\n \"ColorData\",\n \"ColorDataFunction\",\n \"ColorDetect\",\n \"ColorDistance\",\n \"ColorFunction\",\n \"ColorFunctionScaling\",\n \"Colorize\",\n \"ColorNegate\",\n \"ColorOutput\",\n \"ColorProfileData\",\n \"ColorQ\",\n \"ColorQuantize\",\n \"ColorReplace\",\n \"ColorRules\",\n \"ColorSelectorSettings\",\n \"ColorSeparate\",\n \"ColorSetter\",\n \"ColorSetterBox\",\n \"ColorSetterBoxOptions\",\n \"ColorSlider\",\n \"ColorsNear\",\n \"ColorSpace\",\n \"ColorToneMapping\",\n \"Column\",\n \"ColumnAlignments\",\n \"ColumnBackgrounds\",\n \"ColumnForm\",\n \"ColumnLines\",\n \"ColumnsEqual\",\n \"ColumnSpacings\",\n \"ColumnWidths\",\n \"CombinedEntityClass\",\n \"CombinerFunction\",\n \"CometData\",\n \"CommonDefaultFormatTypes\",\n \"Commonest\",\n \"CommonestFilter\",\n \"CommonName\",\n \"CommonUnits\",\n \"CommunityBoundaryStyle\",\n \"CommunityGraphPlot\",\n \"CommunityLabels\",\n \"CommunityRegionStyle\",\n \"CompanyData\",\n \"CompatibleUnitQ\",\n \"CompilationOptions\",\n \"CompilationTarget\",\n \"Compile\",\n \"Compiled\",\n \"CompiledCodeFunction\",\n \"CompiledFunction\",\n \"CompilerOptions\",\n \"Complement\",\n \"ComplementedEntityClass\",\n \"CompleteGraph\",\n \"CompleteGraphQ\",\n \"CompleteKaryTree\",\n \"CompletionsListPacket\",\n \"Complex\",\n \"ComplexContourPlot\",\n \"Complexes\",\n \"ComplexExpand\",\n \"ComplexInfinity\",\n \"ComplexityFunction\",\n \"ComplexListPlot\",\n \"ComplexPlot\",\n \"ComplexPlot3D\",\n \"ComplexRegionPlot\",\n \"ComplexStreamPlot\",\n \"ComplexVectorPlot\",\n \"ComponentMeasurements\",\n \"ComponentwiseContextMenu\",\n \"Compose\",\n \"ComposeList\",\n \"ComposeSeries\",\n \"CompositeQ\",\n \"Composition\",\n \"CompoundElement\",\n \"CompoundExpression\",\n \"CompoundPoissonDistribution\",\n \"CompoundPoissonProcess\",\n \"CompoundRenewalProcess\",\n \"Compress\",\n \"CompressedData\",\n \"CompressionLevel\",\n \"ComputeUncertainty\",\n \"Condition\",\n \"ConditionalExpression\",\n \"Conditioned\",\n \"Cone\",\n \"ConeBox\",\n \"ConfidenceLevel\",\n \"ConfidenceRange\",\n \"ConfidenceTransform\",\n \"ConfigurationPath\",\n \"ConformAudio\",\n \"ConformImages\",\n \"Congruent\",\n \"ConicHullRegion\",\n \"ConicHullRegion3DBox\",\n \"ConicHullRegionBox\",\n \"ConicOptimization\",\n \"Conjugate\",\n \"ConjugateTranspose\",\n \"Conjunction\",\n \"Connect\",\n \"ConnectedComponents\",\n \"ConnectedGraphComponents\",\n \"ConnectedGraphQ\",\n \"ConnectedMeshComponents\",\n \"ConnectedMoleculeComponents\",\n \"ConnectedMoleculeQ\",\n \"ConnectionSettings\",\n \"ConnectLibraryCallbackFunction\",\n \"ConnectSystemModelComponents\",\n \"ConnesWindow\",\n \"ConoverTest\",\n \"ConsoleMessage\",\n \"ConsoleMessagePacket\",\n \"Constant\",\n \"ConstantArray\",\n \"ConstantArrayLayer\",\n \"ConstantImage\",\n \"ConstantPlusLayer\",\n \"ConstantRegionQ\",\n \"Constants\",\n \"ConstantTimesLayer\",\n \"ConstellationData\",\n \"ConstrainedMax\",\n \"ConstrainedMin\",\n \"Construct\",\n \"Containing\",\n \"ContainsAll\",\n \"ContainsAny\",\n \"ContainsExactly\",\n \"ContainsNone\",\n \"ContainsOnly\",\n \"ContentFieldOptions\",\n \"ContentLocationFunction\",\n \"ContentObject\",\n \"ContentPadding\",\n \"ContentsBoundingBox\",\n \"ContentSelectable\",\n \"ContentSize\",\n \"Context\",\n \"ContextMenu\",\n \"Contexts\",\n \"ContextToFileName\",\n \"Continuation\",\n \"Continue\",\n \"ContinuedFraction\",\n \"ContinuedFractionK\",\n \"ContinuousAction\",\n \"ContinuousMarkovProcess\",\n \"ContinuousTask\",\n \"ContinuousTimeModelQ\",\n \"ContinuousWaveletData\",\n \"ContinuousWaveletTransform\",\n \"ContourDetect\",\n \"ContourGraphics\",\n \"ContourIntegral\",\n \"ContourLabels\",\n \"ContourLines\",\n \"ContourPlot\",\n \"ContourPlot3D\",\n \"Contours\",\n \"ContourShading\",\n \"ContourSmoothing\",\n \"ContourStyle\",\n \"ContraharmonicMean\",\n \"ContrastiveLossLayer\",\n \"Control\",\n \"ControlActive\",\n \"ControlAlignment\",\n \"ControlGroupContentsBox\",\n \"ControllabilityGramian\",\n \"ControllabilityMatrix\",\n \"ControllableDecomposition\",\n \"ControllableModelQ\",\n \"ControllerDuration\",\n \"ControllerInformation\",\n \"ControllerInformationData\",\n \"ControllerLinking\",\n \"ControllerManipulate\",\n \"ControllerMethod\",\n \"ControllerPath\",\n \"ControllerState\",\n \"ControlPlacement\",\n \"ControlsRendering\",\n \"ControlType\",\n \"Convergents\",\n \"ConversionOptions\",\n \"ConversionRules\",\n \"ConvertToBitmapPacket\",\n \"ConvertToPostScript\",\n \"ConvertToPostScriptPacket\",\n \"ConvexHullMesh\",\n \"ConvexPolygonQ\",\n \"ConvexPolyhedronQ\",\n \"ConvolutionLayer\",\n \"Convolve\",\n \"ConwayGroupCo1\",\n \"ConwayGroupCo2\",\n \"ConwayGroupCo3\",\n \"CookieFunction\",\n \"Cookies\",\n \"CoordinateBoundingBox\",\n \"CoordinateBoundingBoxArray\",\n \"CoordinateBounds\",\n \"CoordinateBoundsArray\",\n \"CoordinateChartData\",\n \"CoordinatesToolOptions\",\n \"CoordinateTransform\",\n \"CoordinateTransformData\",\n \"CoprimeQ\",\n \"Coproduct\",\n \"CopulaDistribution\",\n \"Copyable\",\n \"CopyDatabin\",\n \"CopyDirectory\",\n \"CopyFile\",\n \"CopyTag\",\n \"CopyToClipboard\",\n \"CornerFilter\",\n \"CornerNeighbors\",\n \"Correlation\",\n \"CorrelationDistance\",\n \"CorrelationFunction\",\n \"CorrelationTest\",\n \"Cos\",\n \"Cosh\",\n \"CoshIntegral\",\n \"CosineDistance\",\n \"CosineWindow\",\n \"CosIntegral\",\n \"Cot\",\n \"Coth\",\n \"Count\",\n \"CountDistinct\",\n \"CountDistinctBy\",\n \"CounterAssignments\",\n \"CounterBox\",\n \"CounterBoxOptions\",\n \"CounterClockwiseContourIntegral\",\n \"CounterEvaluator\",\n \"CounterFunction\",\n \"CounterIncrements\",\n \"CounterStyle\",\n \"CounterStyleMenuListing\",\n \"CountRoots\",\n \"CountryData\",\n \"Counts\",\n \"CountsBy\",\n \"Covariance\",\n \"CovarianceEstimatorFunction\",\n \"CovarianceFunction\",\n \"CoxianDistribution\",\n \"CoxIngersollRossProcess\",\n \"CoxModel\",\n \"CoxModelFit\",\n \"CramerVonMisesTest\",\n \"CreateArchive\",\n \"CreateCellID\",\n \"CreateChannel\",\n \"CreateCloudExpression\",\n \"CreateDatabin\",\n \"CreateDataStructure\",\n \"CreateDataSystemModel\",\n \"CreateDialog\",\n \"CreateDirectory\",\n \"CreateDocument\",\n \"CreateFile\",\n \"CreateIntermediateDirectories\",\n \"CreateManagedLibraryExpression\",\n \"CreateNotebook\",\n \"CreatePacletArchive\",\n \"CreatePalette\",\n \"CreatePalettePacket\",\n \"CreatePermissionsGroup\",\n \"CreateScheduledTask\",\n \"CreateSearchIndex\",\n \"CreateSystemModel\",\n \"CreateTemporary\",\n \"CreateUUID\",\n \"CreateWindow\",\n \"CriterionFunction\",\n \"CriticalityFailureImportance\",\n \"CriticalitySuccessImportance\",\n \"CriticalSection\",\n \"Cross\",\n \"CrossEntropyLossLayer\",\n \"CrossingCount\",\n \"CrossingDetect\",\n \"CrossingPolygon\",\n \"CrossMatrix\",\n \"Csc\",\n \"Csch\",\n \"CTCLossLayer\",\n \"Cube\",\n \"CubeRoot\",\n \"Cubics\",\n \"Cuboid\",\n \"CuboidBox\",\n \"Cumulant\",\n \"CumulantGeneratingFunction\",\n \"Cup\",\n \"CupCap\",\n \"Curl\",\n \"CurlyDoubleQuote\",\n \"CurlyQuote\",\n \"CurrencyConvert\",\n \"CurrentDate\",\n \"CurrentImage\",\n \"CurrentlySpeakingPacket\",\n \"CurrentNotebookImage\",\n \"CurrentScreenImage\",\n \"CurrentValue\",\n \"Curry\",\n \"CurryApplied\",\n \"CurvatureFlowFilter\",\n \"CurveClosed\",\n \"Cyan\",\n \"CycleGraph\",\n \"CycleIndexPolynomial\",\n \"Cycles\",\n \"CyclicGroup\",\n \"Cyclotomic\",\n \"Cylinder\",\n \"CylinderBox\",\n \"CylindricalDecomposition\",\n \"D\",\n \"DagumDistribution\",\n \"DamData\",\n \"DamerauLevenshteinDistance\",\n \"DampingFactor\",\n \"Darker\",\n \"Dashed\",\n \"Dashing\",\n \"DatabaseConnect\",\n \"DatabaseDisconnect\",\n \"DatabaseReference\",\n \"Databin\",\n \"DatabinAdd\",\n \"DatabinRemove\",\n \"Databins\",\n \"DatabinUpload\",\n \"DataCompression\",\n \"DataDistribution\",\n \"DataRange\",\n \"DataReversed\",\n \"Dataset\",\n \"DatasetDisplayPanel\",\n \"DataStructure\",\n \"DataStructureQ\",\n \"Date\",\n \"DateBounds\",\n \"Dated\",\n \"DateDelimiters\",\n \"DateDifference\",\n \"DatedUnit\",\n \"DateFormat\",\n \"DateFunction\",\n \"DateHistogram\",\n \"DateInterval\",\n \"DateList\",\n \"DateListLogPlot\",\n \"DateListPlot\",\n \"DateListStepPlot\",\n \"DateObject\",\n \"DateObjectQ\",\n \"DateOverlapsQ\",\n \"DatePattern\",\n \"DatePlus\",\n \"DateRange\",\n \"DateReduction\",\n \"DateString\",\n \"DateTicksFormat\",\n \"DateValue\",\n \"DateWithinQ\",\n \"DaubechiesWavelet\",\n \"DavisDistribution\",\n \"DawsonF\",\n \"DayCount\",\n \"DayCountConvention\",\n \"DayHemisphere\",\n \"DaylightQ\",\n \"DayMatchQ\",\n \"DayName\",\n \"DayNightTerminator\",\n \"DayPlus\",\n \"DayRange\",\n \"DayRound\",\n \"DeBruijnGraph\",\n \"DeBruijnSequence\",\n \"Debug\",\n \"DebugTag\",\n \"Decapitalize\",\n \"Decimal\",\n \"DecimalForm\",\n \"DeclareKnownSymbols\",\n \"DeclarePackage\",\n \"Decompose\",\n \"DeconvolutionLayer\",\n \"Decrement\",\n \"Decrypt\",\n \"DecryptFile\",\n \"DedekindEta\",\n \"DeepSpaceProbeData\",\n \"Default\",\n \"DefaultAxesStyle\",\n \"DefaultBaseStyle\",\n \"DefaultBoxStyle\",\n \"DefaultButton\",\n \"DefaultColor\",\n \"DefaultControlPlacement\",\n \"DefaultDuplicateCellStyle\",\n \"DefaultDuration\",\n \"DefaultElement\",\n \"DefaultFaceGridsStyle\",\n \"DefaultFieldHintStyle\",\n \"DefaultFont\",\n \"DefaultFontProperties\",\n \"DefaultFormatType\",\n \"DefaultFormatTypeForStyle\",\n \"DefaultFrameStyle\",\n \"DefaultFrameTicksStyle\",\n \"DefaultGridLinesStyle\",\n \"DefaultInlineFormatType\",\n \"DefaultInputFormatType\",\n \"DefaultLabelStyle\",\n \"DefaultMenuStyle\",\n \"DefaultNaturalLanguage\",\n \"DefaultNewCellStyle\",\n \"DefaultNewInlineCellStyle\",\n \"DefaultNotebook\",\n \"DefaultOptions\",\n \"DefaultOutputFormatType\",\n \"DefaultPrintPrecision\",\n \"DefaultStyle\",\n \"DefaultStyleDefinitions\",\n \"DefaultTextFormatType\",\n \"DefaultTextInlineFormatType\",\n \"DefaultTicksStyle\",\n \"DefaultTooltipStyle\",\n \"DefaultValue\",\n \"DefaultValues\",\n \"Defer\",\n \"DefineExternal\",\n \"DefineInputStreamMethod\",\n \"DefineOutputStreamMethod\",\n \"DefineResourceFunction\",\n \"Definition\",\n \"Degree\",\n \"DegreeCentrality\",\n \"DegreeGraphDistribution\",\n \"DegreeLexicographic\",\n \"DegreeReverseLexicographic\",\n \"DEigensystem\",\n \"DEigenvalues\",\n \"Deinitialization\",\n \"Del\",\n \"DelaunayMesh\",\n \"Delayed\",\n \"Deletable\",\n \"Delete\",\n \"DeleteAnomalies\",\n \"DeleteBorderComponents\",\n \"DeleteCases\",\n \"DeleteChannel\",\n \"DeleteCloudExpression\",\n \"DeleteContents\",\n \"DeleteDirectory\",\n \"DeleteDuplicates\",\n \"DeleteDuplicatesBy\",\n \"DeleteFile\",\n \"DeleteMissing\",\n \"DeleteObject\",\n \"DeletePermissionsKey\",\n \"DeleteSearchIndex\",\n \"DeleteSmallComponents\",\n \"DeleteStopwords\",\n \"DeleteWithContents\",\n \"DeletionWarning\",\n \"DelimitedArray\",\n \"DelimitedSequence\",\n \"Delimiter\",\n \"DelimiterFlashTime\",\n \"DelimiterMatching\",\n \"Delimiters\",\n \"DeliveryFunction\",\n \"Dendrogram\",\n \"Denominator\",\n \"DensityGraphics\",\n \"DensityHistogram\",\n \"DensityPlot\",\n \"DensityPlot3D\",\n \"DependentVariables\",\n \"Deploy\",\n \"Deployed\",\n \"Depth\",\n \"DepthFirstScan\",\n \"Derivative\",\n \"DerivativeFilter\",\n \"DerivedKey\",\n \"DescriptorStateSpace\",\n \"DesignMatrix\",\n \"DestroyAfterEvaluation\",\n \"Det\",\n \"DeviceClose\",\n \"DeviceConfigure\",\n \"DeviceExecute\",\n \"DeviceExecuteAsynchronous\",\n \"DeviceObject\",\n \"DeviceOpen\",\n \"DeviceOpenQ\",\n \"DeviceRead\",\n \"DeviceReadBuffer\",\n \"DeviceReadLatest\",\n \"DeviceReadList\",\n \"DeviceReadTimeSeries\",\n \"Devices\",\n \"DeviceStreams\",\n \"DeviceWrite\",\n \"DeviceWriteBuffer\",\n \"DGaussianWavelet\",\n \"DiacriticalPositioning\",\n \"Diagonal\",\n \"DiagonalizableMatrixQ\",\n \"DiagonalMatrix\",\n \"DiagonalMatrixQ\",\n \"Dialog\",\n \"DialogIndent\",\n \"DialogInput\",\n \"DialogLevel\",\n \"DialogNotebook\",\n \"DialogProlog\",\n \"DialogReturn\",\n \"DialogSymbols\",\n \"Diamond\",\n \"DiamondMatrix\",\n \"DiceDissimilarity\",\n \"DictionaryLookup\",\n \"DictionaryWordQ\",\n \"DifferenceDelta\",\n \"DifferenceOrder\",\n \"DifferenceQuotient\",\n \"DifferenceRoot\",\n \"DifferenceRootReduce\",\n \"Differences\",\n \"DifferentialD\",\n \"DifferentialRoot\",\n \"DifferentialRootReduce\",\n \"DifferentiatorFilter\",\n \"DigitalSignature\",\n \"DigitBlock\",\n \"DigitBlockMinimum\",\n \"DigitCharacter\",\n \"DigitCount\",\n \"DigitQ\",\n \"DihedralAngle\",\n \"DihedralGroup\",\n \"Dilation\",\n \"DimensionalCombinations\",\n \"DimensionalMeshComponents\",\n \"DimensionReduce\",\n \"DimensionReducerFunction\",\n \"DimensionReduction\",\n \"Dimensions\",\n \"DiracComb\",\n \"DiracDelta\",\n \"DirectedEdge\",\n \"DirectedEdges\",\n \"DirectedGraph\",\n \"DirectedGraphQ\",\n \"DirectedInfinity\",\n \"Direction\",\n \"Directive\",\n \"Directory\",\n \"DirectoryName\",\n \"DirectoryQ\",\n \"DirectoryStack\",\n \"DirichletBeta\",\n \"DirichletCharacter\",\n \"DirichletCondition\",\n \"DirichletConvolve\",\n \"DirichletDistribution\",\n \"DirichletEta\",\n \"DirichletL\",\n \"DirichletLambda\",\n \"DirichletTransform\",\n \"DirichletWindow\",\n \"DisableConsolePrintPacket\",\n \"DisableFormatting\",\n \"DiscreteAsymptotic\",\n \"DiscreteChirpZTransform\",\n \"DiscreteConvolve\",\n \"DiscreteDelta\",\n \"DiscreteHadamardTransform\",\n \"DiscreteIndicator\",\n \"DiscreteLimit\",\n \"DiscreteLQEstimatorGains\",\n \"DiscreteLQRegulatorGains\",\n \"DiscreteLyapunovSolve\",\n \"DiscreteMarkovProcess\",\n \"DiscreteMaxLimit\",\n \"DiscreteMinLimit\",\n \"DiscretePlot\",\n \"DiscretePlot3D\",\n \"DiscreteRatio\",\n \"DiscreteRiccatiSolve\",\n \"DiscreteShift\",\n \"DiscreteTimeModelQ\",\n \"DiscreteUniformDistribution\",\n \"DiscreteVariables\",\n \"DiscreteWaveletData\",\n \"DiscreteWaveletPacketTransform\",\n \"DiscreteWaveletTransform\",\n \"DiscretizeGraphics\",\n \"DiscretizeRegion\",\n \"Discriminant\",\n \"DisjointQ\",\n \"Disjunction\",\n \"Disk\",\n \"DiskBox\",\n \"DiskMatrix\",\n \"DiskSegment\",\n \"Dispatch\",\n \"DispatchQ\",\n \"DispersionEstimatorFunction\",\n \"Display\",\n \"DisplayAllSteps\",\n \"DisplayEndPacket\",\n \"DisplayFlushImagePacket\",\n \"DisplayForm\",\n \"DisplayFunction\",\n \"DisplayPacket\",\n \"DisplayRules\",\n \"DisplaySetSizePacket\",\n \"DisplayString\",\n \"DisplayTemporary\",\n \"DisplayWith\",\n \"DisplayWithRef\",\n \"DisplayWithVariable\",\n \"DistanceFunction\",\n \"DistanceMatrix\",\n \"DistanceTransform\",\n \"Distribute\",\n \"Distributed\",\n \"DistributedContexts\",\n \"DistributeDefinitions\",\n \"DistributionChart\",\n \"DistributionDomain\",\n \"DistributionFitTest\",\n \"DistributionParameterAssumptions\",\n \"DistributionParameterQ\",\n \"Dithering\",\n \"Div\",\n \"Divergence\",\n \"Divide\",\n \"DivideBy\",\n \"Dividers\",\n \"DivideSides\",\n \"Divisible\",\n \"Divisors\",\n \"DivisorSigma\",\n \"DivisorSum\",\n \"DMSList\",\n \"DMSString\",\n \"Do\",\n \"DockedCells\",\n \"DocumentGenerator\",\n \"DocumentGeneratorInformation\",\n \"DocumentGeneratorInformationData\",\n \"DocumentGenerators\",\n \"DocumentNotebook\",\n \"DocumentWeightingRules\",\n \"Dodecahedron\",\n \"DomainRegistrationInformation\",\n \"DominantColors\",\n \"DOSTextFormat\",\n \"Dot\",\n \"DotDashed\",\n \"DotEqual\",\n \"DotLayer\",\n \"DotPlusLayer\",\n \"Dotted\",\n \"DoubleBracketingBar\",\n \"DoubleContourIntegral\",\n \"DoubleDownArrow\",\n \"DoubleLeftArrow\",\n \"DoubleLeftRightArrow\",\n \"DoubleLeftTee\",\n \"DoubleLongLeftArrow\",\n \"DoubleLongLeftRightArrow\",\n \"DoubleLongRightArrow\",\n \"DoubleRightArrow\",\n \"DoubleRightTee\",\n \"DoubleUpArrow\",\n \"DoubleUpDownArrow\",\n \"DoubleVerticalBar\",\n \"DoublyInfinite\",\n \"Down\",\n \"DownArrow\",\n \"DownArrowBar\",\n \"DownArrowUpArrow\",\n \"DownLeftRightVector\",\n \"DownLeftTeeVector\",\n \"DownLeftVector\",\n \"DownLeftVectorBar\",\n \"DownRightTeeVector\",\n \"DownRightVector\",\n \"DownRightVectorBar\",\n \"Downsample\",\n \"DownTee\",\n \"DownTeeArrow\",\n \"DownValues\",\n \"DragAndDrop\",\n \"DrawEdges\",\n \"DrawFrontFaces\",\n \"DrawHighlighted\",\n \"Drop\",\n \"DropoutLayer\",\n \"DSolve\",\n \"DSolveValue\",\n \"Dt\",\n \"DualLinearProgramming\",\n \"DualPolyhedron\",\n \"DualSystemsModel\",\n \"DumpGet\",\n \"DumpSave\",\n \"DuplicateFreeQ\",\n \"Duration\",\n \"Dynamic\",\n \"DynamicBox\",\n \"DynamicBoxOptions\",\n \"DynamicEvaluationTimeout\",\n \"DynamicGeoGraphics\",\n \"DynamicImage\",\n \"DynamicLocation\",\n \"DynamicModule\",\n \"DynamicModuleBox\",\n \"DynamicModuleBoxOptions\",\n \"DynamicModuleParent\",\n \"DynamicModuleValues\",\n \"DynamicName\",\n \"DynamicNamespace\",\n \"DynamicReference\",\n \"DynamicSetting\",\n \"DynamicUpdating\",\n \"DynamicWrapper\",\n \"DynamicWrapperBox\",\n \"DynamicWrapperBoxOptions\",\n \"E\",\n \"EarthImpactData\",\n \"EarthquakeData\",\n \"EccentricityCentrality\",\n \"Echo\",\n \"EchoFunction\",\n \"EclipseType\",\n \"EdgeAdd\",\n \"EdgeBetweennessCentrality\",\n \"EdgeCapacity\",\n \"EdgeCapForm\",\n \"EdgeColor\",\n \"EdgeConnectivity\",\n \"EdgeContract\",\n \"EdgeCost\",\n \"EdgeCount\",\n \"EdgeCoverQ\",\n \"EdgeCycleMatrix\",\n \"EdgeDashing\",\n \"EdgeDelete\",\n \"EdgeDetect\",\n \"EdgeForm\",\n \"EdgeIndex\",\n \"EdgeJoinForm\",\n \"EdgeLabeling\",\n \"EdgeLabels\",\n \"EdgeLabelStyle\",\n \"EdgeList\",\n \"EdgeOpacity\",\n \"EdgeQ\",\n \"EdgeRenderingFunction\",\n \"EdgeRules\",\n \"EdgeShapeFunction\",\n \"EdgeStyle\",\n \"EdgeTaggedGraph\",\n \"EdgeTaggedGraphQ\",\n \"EdgeTags\",\n \"EdgeThickness\",\n \"EdgeWeight\",\n \"EdgeWeightedGraphQ\",\n \"Editable\",\n \"EditButtonSettings\",\n \"EditCellTagsSettings\",\n \"EditDistance\",\n \"EffectiveInterest\",\n \"Eigensystem\",\n \"Eigenvalues\",\n \"EigenvectorCentrality\",\n \"Eigenvectors\",\n \"Element\",\n \"ElementData\",\n \"ElementwiseLayer\",\n \"ElidedForms\",\n \"Eliminate\",\n \"EliminationOrder\",\n \"Ellipsoid\",\n \"EllipticE\",\n \"EllipticExp\",\n \"EllipticExpPrime\",\n \"EllipticF\",\n \"EllipticFilterModel\",\n \"EllipticK\",\n \"EllipticLog\",\n \"EllipticNomeQ\",\n \"EllipticPi\",\n \"EllipticReducedHalfPeriods\",\n \"EllipticTheta\",\n \"EllipticThetaPrime\",\n \"EmbedCode\",\n \"EmbeddedHTML\",\n \"EmbeddedService\",\n \"EmbeddingLayer\",\n \"EmbeddingObject\",\n \"EmitSound\",\n \"EmphasizeSyntaxErrors\",\n \"EmpiricalDistribution\",\n \"Empty\",\n \"EmptyGraphQ\",\n \"EmptyRegion\",\n \"EnableConsolePrintPacket\",\n \"Enabled\",\n \"Encode\",\n \"Encrypt\",\n \"EncryptedObject\",\n \"EncryptFile\",\n \"End\",\n \"EndAdd\",\n \"EndDialogPacket\",\n \"EndFrontEndInteractionPacket\",\n \"EndOfBuffer\",\n \"EndOfFile\",\n \"EndOfLine\",\n \"EndOfString\",\n \"EndPackage\",\n \"EngineEnvironment\",\n \"EngineeringForm\",\n \"Enter\",\n \"EnterExpressionPacket\",\n \"EnterTextPacket\",\n \"Entity\",\n \"EntityClass\",\n \"EntityClassList\",\n \"EntityCopies\",\n \"EntityFunction\",\n \"EntityGroup\",\n \"EntityInstance\",\n \"EntityList\",\n \"EntityPrefetch\",\n \"EntityProperties\",\n \"EntityProperty\",\n \"EntityPropertyClass\",\n \"EntityRegister\",\n \"EntityStore\",\n \"EntityStores\",\n \"EntityTypeName\",\n \"EntityUnregister\",\n \"EntityValue\",\n \"Entropy\",\n \"EntropyFilter\",\n \"Environment\",\n \"Epilog\",\n \"EpilogFunction\",\n \"Equal\",\n \"EqualColumns\",\n \"EqualRows\",\n \"EqualTilde\",\n \"EqualTo\",\n \"EquatedTo\",\n \"Equilibrium\",\n \"EquirippleFilterKernel\",\n \"Equivalent\",\n \"Erf\",\n \"Erfc\",\n \"Erfi\",\n \"ErlangB\",\n \"ErlangC\",\n \"ErlangDistribution\",\n \"Erosion\",\n \"ErrorBox\",\n \"ErrorBoxOptions\",\n \"ErrorNorm\",\n \"ErrorPacket\",\n \"ErrorsDialogSettings\",\n \"EscapeRadius\",\n \"EstimatedBackground\",\n \"EstimatedDistribution\",\n \"EstimatedProcess\",\n \"EstimatorGains\",\n \"EstimatorRegulator\",\n \"EuclideanDistance\",\n \"EulerAngles\",\n \"EulerCharacteristic\",\n \"EulerE\",\n \"EulerGamma\",\n \"EulerianGraphQ\",\n \"EulerMatrix\",\n \"EulerPhi\",\n \"Evaluatable\",\n \"Evaluate\",\n \"Evaluated\",\n \"EvaluatePacket\",\n \"EvaluateScheduledTask\",\n \"EvaluationBox\",\n \"EvaluationCell\",\n \"EvaluationCompletionAction\",\n \"EvaluationData\",\n \"EvaluationElements\",\n \"EvaluationEnvironment\",\n \"EvaluationMode\",\n \"EvaluationMonitor\",\n \"EvaluationNotebook\",\n \"EvaluationObject\",\n \"EvaluationOrder\",\n \"Evaluator\",\n \"EvaluatorNames\",\n \"EvenQ\",\n \"EventData\",\n \"EventEvaluator\",\n \"EventHandler\",\n \"EventHandlerTag\",\n \"EventLabels\",\n \"EventSeries\",\n \"ExactBlackmanWindow\",\n \"ExactNumberQ\",\n \"ExactRootIsolation\",\n \"ExampleData\",\n \"Except\",\n \"ExcludedForms\",\n \"ExcludedLines\",\n \"ExcludedPhysicalQuantities\",\n \"ExcludePods\",\n \"Exclusions\",\n \"ExclusionsStyle\",\n \"Exists\",\n \"Exit\",\n \"ExitDialog\",\n \"ExoplanetData\",\n \"Exp\",\n \"Expand\",\n \"ExpandAll\",\n \"ExpandDenominator\",\n \"ExpandFileName\",\n \"ExpandNumerator\",\n \"Expectation\",\n \"ExpectationE\",\n \"ExpectedValue\",\n \"ExpGammaDistribution\",\n \"ExpIntegralE\",\n \"ExpIntegralEi\",\n \"ExpirationDate\",\n \"Exponent\",\n \"ExponentFunction\",\n \"ExponentialDistribution\",\n \"ExponentialFamily\",\n \"ExponentialGeneratingFunction\",\n \"ExponentialMovingAverage\",\n \"ExponentialPowerDistribution\",\n \"ExponentPosition\",\n \"ExponentStep\",\n \"Export\",\n \"ExportAutoReplacements\",\n \"ExportByteArray\",\n \"ExportForm\",\n \"ExportPacket\",\n \"ExportString\",\n \"Expression\",\n \"ExpressionCell\",\n \"ExpressionGraph\",\n \"ExpressionPacket\",\n \"ExpressionUUID\",\n \"ExpToTrig\",\n \"ExtendedEntityClass\",\n \"ExtendedGCD\",\n \"Extension\",\n \"ExtentElementFunction\",\n \"ExtentMarkers\",\n \"ExtentSize\",\n \"ExternalBundle\",\n \"ExternalCall\",\n \"ExternalDataCharacterEncoding\",\n \"ExternalEvaluate\",\n \"ExternalFunction\",\n \"ExternalFunctionName\",\n \"ExternalIdentifier\",\n \"ExternalObject\",\n \"ExternalOptions\",\n \"ExternalSessionObject\",\n \"ExternalSessions\",\n \"ExternalStorageBase\",\n \"ExternalStorageDownload\",\n \"ExternalStorageGet\",\n \"ExternalStorageObject\",\n \"ExternalStoragePut\",\n \"ExternalStorageUpload\",\n \"ExternalTypeSignature\",\n \"ExternalValue\",\n \"Extract\",\n \"ExtractArchive\",\n \"ExtractLayer\",\n \"ExtractPacletArchive\",\n \"ExtremeValueDistribution\",\n \"FaceAlign\",\n \"FaceForm\",\n \"FaceGrids\",\n \"FaceGridsStyle\",\n \"FacialFeatures\",\n \"Factor\",\n \"FactorComplete\",\n \"Factorial\",\n \"Factorial2\",\n \"FactorialMoment\",\n \"FactorialMomentGeneratingFunction\",\n \"FactorialPower\",\n \"FactorInteger\",\n \"FactorList\",\n \"FactorSquareFree\",\n \"FactorSquareFreeList\",\n \"FactorTerms\",\n \"FactorTermsList\",\n \"Fail\",\n \"Failure\",\n \"FailureAction\",\n \"FailureDistribution\",\n \"FailureQ\",\n \"False\",\n \"FareySequence\",\n \"FARIMAProcess\",\n \"FeatureDistance\",\n \"FeatureExtract\",\n \"FeatureExtraction\",\n \"FeatureExtractor\",\n \"FeatureExtractorFunction\",\n \"FeatureNames\",\n \"FeatureNearest\",\n \"FeatureSpacePlot\",\n \"FeatureSpacePlot3D\",\n \"FeatureTypes\",\n \"FEDisableConsolePrintPacket\",\n \"FeedbackLinearize\",\n \"FeedbackSector\",\n \"FeedbackSectorStyle\",\n \"FeedbackType\",\n \"FEEnableConsolePrintPacket\",\n \"FetalGrowthData\",\n \"Fibonacci\",\n \"Fibonorial\",\n \"FieldCompletionFunction\",\n \"FieldHint\",\n \"FieldHintStyle\",\n \"FieldMasked\",\n \"FieldSize\",\n \"File\",\n \"FileBaseName\",\n \"FileByteCount\",\n \"FileConvert\",\n \"FileDate\",\n \"FileExistsQ\",\n \"FileExtension\",\n \"FileFormat\",\n \"FileHandler\",\n \"FileHash\",\n \"FileInformation\",\n \"FileName\",\n \"FileNameDepth\",\n \"FileNameDialogSettings\",\n \"FileNameDrop\",\n \"FileNameForms\",\n \"FileNameJoin\",\n \"FileNames\",\n \"FileNameSetter\",\n \"FileNameSplit\",\n \"FileNameTake\",\n \"FilePrint\",\n \"FileSize\",\n \"FileSystemMap\",\n \"FileSystemScan\",\n \"FileTemplate\",\n \"FileTemplateApply\",\n \"FileType\",\n \"FilledCurve\",\n \"FilledCurveBox\",\n \"FilledCurveBoxOptions\",\n \"Filling\",\n \"FillingStyle\",\n \"FillingTransform\",\n \"FilteredEntityClass\",\n \"FilterRules\",\n \"FinancialBond\",\n \"FinancialData\",\n \"FinancialDerivative\",\n \"FinancialIndicator\",\n \"Find\",\n \"FindAnomalies\",\n \"FindArgMax\",\n \"FindArgMin\",\n \"FindChannels\",\n \"FindClique\",\n \"FindClusters\",\n \"FindCookies\",\n \"FindCurvePath\",\n \"FindCycle\",\n \"FindDevices\",\n \"FindDistribution\",\n \"FindDistributionParameters\",\n \"FindDivisions\",\n \"FindEdgeCover\",\n \"FindEdgeCut\",\n \"FindEdgeIndependentPaths\",\n \"FindEquationalProof\",\n \"FindEulerianCycle\",\n \"FindExternalEvaluators\",\n \"FindFaces\",\n \"FindFile\",\n \"FindFit\",\n \"FindFormula\",\n \"FindFundamentalCycles\",\n \"FindGeneratingFunction\",\n \"FindGeoLocation\",\n \"FindGeometricConjectures\",\n \"FindGeometricTransform\",\n \"FindGraphCommunities\",\n \"FindGraphIsomorphism\",\n \"FindGraphPartition\",\n \"FindHamiltonianCycle\",\n \"FindHamiltonianPath\",\n \"FindHiddenMarkovStates\",\n \"FindImageText\",\n \"FindIndependentEdgeSet\",\n \"FindIndependentVertexSet\",\n \"FindInstance\",\n \"FindIntegerNullVector\",\n \"FindKClan\",\n \"FindKClique\",\n \"FindKClub\",\n \"FindKPlex\",\n \"FindLibrary\",\n \"FindLinearRecurrence\",\n \"FindList\",\n \"FindMatchingColor\",\n \"FindMaximum\",\n \"FindMaximumCut\",\n \"FindMaximumFlow\",\n \"FindMaxValue\",\n \"FindMeshDefects\",\n \"FindMinimum\",\n \"FindMinimumCostFlow\",\n \"FindMinimumCut\",\n \"FindMinValue\",\n \"FindMoleculeSubstructure\",\n \"FindPath\",\n \"FindPeaks\",\n \"FindPermutation\",\n \"FindPostmanTour\",\n \"FindProcessParameters\",\n \"FindRepeat\",\n \"FindRoot\",\n \"FindSequenceFunction\",\n \"FindSettings\",\n \"FindShortestPath\",\n \"FindShortestTour\",\n \"FindSpanningTree\",\n \"FindSystemModelEquilibrium\",\n \"FindTextualAnswer\",\n \"FindThreshold\",\n \"FindTransientRepeat\",\n \"FindVertexCover\",\n \"FindVertexCut\",\n \"FindVertexIndependentPaths\",\n \"Fine\",\n \"FinishDynamic\",\n \"FiniteAbelianGroupCount\",\n \"FiniteGroupCount\",\n \"FiniteGroupData\",\n \"First\",\n \"FirstCase\",\n \"FirstPassageTimeDistribution\",\n \"FirstPosition\",\n \"FischerGroupFi22\",\n \"FischerGroupFi23\",\n \"FischerGroupFi24Prime\",\n \"FisherHypergeometricDistribution\",\n \"FisherRatioTest\",\n \"FisherZDistribution\",\n \"Fit\",\n \"FitAll\",\n \"FitRegularization\",\n \"FittedModel\",\n \"FixedOrder\",\n \"FixedPoint\",\n \"FixedPointList\",\n \"FlashSelection\",\n \"Flat\",\n \"Flatten\",\n \"FlattenAt\",\n \"FlattenLayer\",\n \"FlatTopWindow\",\n \"FlipView\",\n \"Floor\",\n \"FlowPolynomial\",\n \"FlushPrintOutputPacket\",\n \"Fold\",\n \"FoldList\",\n \"FoldPair\",\n \"FoldPairList\",\n \"FollowRedirects\",\n \"Font\",\n \"FontColor\",\n \"FontFamily\",\n \"FontForm\",\n \"FontName\",\n \"FontOpacity\",\n \"FontPostScriptName\",\n \"FontProperties\",\n \"FontReencoding\",\n \"FontSize\",\n \"FontSlant\",\n \"FontSubstitutions\",\n \"FontTracking\",\n \"FontVariations\",\n \"FontWeight\",\n \"For\",\n \"ForAll\",\n \"ForceVersionInstall\",\n \"Format\",\n \"FormatRules\",\n \"FormatType\",\n \"FormatTypeAutoConvert\",\n \"FormatValues\",\n \"FormBox\",\n \"FormBoxOptions\",\n \"FormControl\",\n \"FormFunction\",\n \"FormLayoutFunction\",\n \"FormObject\",\n \"FormPage\",\n \"FormTheme\",\n \"FormulaData\",\n \"FormulaLookup\",\n \"FortranForm\",\n \"Forward\",\n \"ForwardBackward\",\n \"Fourier\",\n \"FourierCoefficient\",\n \"FourierCosCoefficient\",\n \"FourierCosSeries\",\n \"FourierCosTransform\",\n \"FourierDCT\",\n \"FourierDCTFilter\",\n \"FourierDCTMatrix\",\n \"FourierDST\",\n \"FourierDSTMatrix\",\n \"FourierMatrix\",\n \"FourierParameters\",\n \"FourierSequenceTransform\",\n \"FourierSeries\",\n \"FourierSinCoefficient\",\n \"FourierSinSeries\",\n \"FourierSinTransform\",\n \"FourierTransform\",\n \"FourierTrigSeries\",\n \"FractionalBrownianMotionProcess\",\n \"FractionalGaussianNoiseProcess\",\n \"FractionalPart\",\n \"FractionBox\",\n \"FractionBoxOptions\",\n \"FractionLine\",\n \"Frame\",\n \"FrameBox\",\n \"FrameBoxOptions\",\n \"Framed\",\n \"FrameInset\",\n \"FrameLabel\",\n \"Frameless\",\n \"FrameMargins\",\n \"FrameRate\",\n \"FrameStyle\",\n \"FrameTicks\",\n \"FrameTicksStyle\",\n \"FRatioDistribution\",\n \"FrechetDistribution\",\n \"FreeQ\",\n \"FrenetSerretSystem\",\n \"FrequencySamplingFilterKernel\",\n \"FresnelC\",\n \"FresnelF\",\n \"FresnelG\",\n \"FresnelS\",\n \"Friday\",\n \"FrobeniusNumber\",\n \"FrobeniusSolve\",\n \"FromAbsoluteTime\",\n \"FromCharacterCode\",\n \"FromCoefficientRules\",\n \"FromContinuedFraction\",\n \"FromDate\",\n \"FromDigits\",\n \"FromDMS\",\n \"FromEntity\",\n \"FromJulianDate\",\n \"FromLetterNumber\",\n \"FromPolarCoordinates\",\n \"FromRomanNumeral\",\n \"FromSphericalCoordinates\",\n \"FromUnixTime\",\n \"Front\",\n \"FrontEndDynamicExpression\",\n \"FrontEndEventActions\",\n \"FrontEndExecute\",\n \"FrontEndObject\",\n \"FrontEndResource\",\n \"FrontEndResourceString\",\n \"FrontEndStackSize\",\n \"FrontEndToken\",\n \"FrontEndTokenExecute\",\n \"FrontEndValueCache\",\n \"FrontEndVersion\",\n \"FrontFaceColor\",\n \"FrontFaceOpacity\",\n \"Full\",\n \"FullAxes\",\n \"FullDefinition\",\n \"FullForm\",\n \"FullGraphics\",\n \"FullInformationOutputRegulator\",\n \"FullOptions\",\n \"FullRegion\",\n \"FullSimplify\",\n \"Function\",\n \"FunctionCompile\",\n \"FunctionCompileExport\",\n \"FunctionCompileExportByteArray\",\n \"FunctionCompileExportLibrary\",\n \"FunctionCompileExportString\",\n \"FunctionDomain\",\n \"FunctionExpand\",\n \"FunctionInterpolation\",\n \"FunctionPeriod\",\n \"FunctionRange\",\n \"FunctionSpace\",\n \"FussellVeselyImportance\",\n \"GaborFilter\",\n \"GaborMatrix\",\n \"GaborWavelet\",\n \"GainMargins\",\n \"GainPhaseMargins\",\n \"GalaxyData\",\n \"GalleryView\",\n \"Gamma\",\n \"GammaDistribution\",\n \"GammaRegularized\",\n \"GapPenalty\",\n \"GARCHProcess\",\n \"GatedRecurrentLayer\",\n \"Gather\",\n \"GatherBy\",\n \"GaugeFaceElementFunction\",\n \"GaugeFaceStyle\",\n \"GaugeFrameElementFunction\",\n \"GaugeFrameSize\",\n \"GaugeFrameStyle\",\n \"GaugeLabels\",\n \"GaugeMarkers\",\n \"GaugeStyle\",\n \"GaussianFilter\",\n \"GaussianIntegers\",\n \"GaussianMatrix\",\n \"GaussianOrthogonalMatrixDistribution\",\n \"GaussianSymplecticMatrixDistribution\",\n \"GaussianUnitaryMatrixDistribution\",\n \"GaussianWindow\",\n \"GCD\",\n \"GegenbauerC\",\n \"General\",\n \"GeneralizedLinearModelFit\",\n \"GenerateAsymmetricKeyPair\",\n \"GenerateConditions\",\n \"GeneratedCell\",\n \"GeneratedDocumentBinding\",\n \"GenerateDerivedKey\",\n \"GenerateDigitalSignature\",\n \"GenerateDocument\",\n \"GeneratedParameters\",\n \"GeneratedQuantityMagnitudes\",\n \"GenerateFileSignature\",\n \"GenerateHTTPResponse\",\n \"GenerateSecuredAuthenticationKey\",\n \"GenerateSymmetricKey\",\n \"GeneratingFunction\",\n \"GeneratorDescription\",\n \"GeneratorHistoryLength\",\n \"GeneratorOutputType\",\n \"Generic\",\n \"GenericCylindricalDecomposition\",\n \"GenomeData\",\n \"GenomeLookup\",\n \"GeoAntipode\",\n \"GeoArea\",\n \"GeoArraySize\",\n \"GeoBackground\",\n \"GeoBoundingBox\",\n \"GeoBounds\",\n \"GeoBoundsRegion\",\n \"GeoBubbleChart\",\n \"GeoCenter\",\n \"GeoCircle\",\n \"GeoContourPlot\",\n \"GeoDensityPlot\",\n \"GeodesicClosing\",\n \"GeodesicDilation\",\n \"GeodesicErosion\",\n \"GeodesicOpening\",\n \"GeoDestination\",\n \"GeodesyData\",\n \"GeoDirection\",\n \"GeoDisk\",\n \"GeoDisplacement\",\n \"GeoDistance\",\n \"GeoDistanceList\",\n \"GeoElevationData\",\n \"GeoEntities\",\n \"GeoGraphics\",\n \"GeogravityModelData\",\n \"GeoGridDirectionDifference\",\n \"GeoGridLines\",\n \"GeoGridLinesStyle\",\n \"GeoGridPosition\",\n \"GeoGridRange\",\n \"GeoGridRangePadding\",\n \"GeoGridUnitArea\",\n \"GeoGridUnitDistance\",\n \"GeoGridVector\",\n \"GeoGroup\",\n \"GeoHemisphere\",\n \"GeoHemisphereBoundary\",\n \"GeoHistogram\",\n \"GeoIdentify\",\n \"GeoImage\",\n \"GeoLabels\",\n \"GeoLength\",\n \"GeoListPlot\",\n \"GeoLocation\",\n \"GeologicalPeriodData\",\n \"GeomagneticModelData\",\n \"GeoMarker\",\n \"GeometricAssertion\",\n \"GeometricBrownianMotionProcess\",\n \"GeometricDistribution\",\n \"GeometricMean\",\n \"GeometricMeanFilter\",\n \"GeometricOptimization\",\n \"GeometricScene\",\n \"GeometricTransformation\",\n \"GeometricTransformation3DBox\",\n \"GeometricTransformation3DBoxOptions\",\n \"GeometricTransformationBox\",\n \"GeometricTransformationBoxOptions\",\n \"GeoModel\",\n \"GeoNearest\",\n \"GeoPath\",\n \"GeoPosition\",\n \"GeoPositionENU\",\n \"GeoPositionXYZ\",\n \"GeoProjection\",\n \"GeoProjectionData\",\n \"GeoRange\",\n \"GeoRangePadding\",\n \"GeoRegionValuePlot\",\n \"GeoResolution\",\n \"GeoScaleBar\",\n \"GeoServer\",\n \"GeoSmoothHistogram\",\n \"GeoStreamPlot\",\n \"GeoStyling\",\n \"GeoStylingImageFunction\",\n \"GeoVariant\",\n \"GeoVector\",\n \"GeoVectorENU\",\n \"GeoVectorPlot\",\n \"GeoVectorXYZ\",\n \"GeoVisibleRegion\",\n \"GeoVisibleRegionBoundary\",\n \"GeoWithinQ\",\n \"GeoZoomLevel\",\n \"GestureHandler\",\n \"GestureHandlerTag\",\n \"Get\",\n \"GetBoundingBoxSizePacket\",\n \"GetContext\",\n \"GetEnvironment\",\n \"GetFileName\",\n \"GetFrontEndOptionsDataPacket\",\n \"GetLinebreakInformationPacket\",\n \"GetMenusPacket\",\n \"GetPageBreakInformationPacket\",\n \"Glaisher\",\n \"GlobalClusteringCoefficient\",\n \"GlobalPreferences\",\n \"GlobalSession\",\n \"Glow\",\n \"GoldenAngle\",\n \"GoldenRatio\",\n \"GompertzMakehamDistribution\",\n \"GoochShading\",\n \"GoodmanKruskalGamma\",\n \"GoodmanKruskalGammaTest\",\n \"Goto\",\n \"Grad\",\n \"Gradient\",\n \"GradientFilter\",\n \"GradientOrientationFilter\",\n \"GrammarApply\",\n \"GrammarRules\",\n \"GrammarToken\",\n \"Graph\",\n \"Graph3D\",\n \"GraphAssortativity\",\n \"GraphAutomorphismGroup\",\n \"GraphCenter\",\n \"GraphComplement\",\n \"GraphData\",\n \"GraphDensity\",\n \"GraphDiameter\",\n \"GraphDifference\",\n \"GraphDisjointUnion\",\n \"GraphDistance\",\n \"GraphDistanceMatrix\",\n \"GraphElementData\",\n \"GraphEmbedding\",\n \"GraphHighlight\",\n \"GraphHighlightStyle\",\n \"GraphHub\",\n \"Graphics\",\n \"Graphics3D\",\n \"Graphics3DBox\",\n \"Graphics3DBoxOptions\",\n \"GraphicsArray\",\n \"GraphicsBaseline\",\n \"GraphicsBox\",\n \"GraphicsBoxOptions\",\n \"GraphicsColor\",\n \"GraphicsColumn\",\n \"GraphicsComplex\",\n \"GraphicsComplex3DBox\",\n \"GraphicsComplex3DBoxOptions\",\n \"GraphicsComplexBox\",\n \"GraphicsComplexBoxOptions\",\n \"GraphicsContents\",\n \"GraphicsData\",\n \"GraphicsGrid\",\n \"GraphicsGridBox\",\n \"GraphicsGroup\",\n \"GraphicsGroup3DBox\",\n \"GraphicsGroup3DBoxOptions\",\n \"GraphicsGroupBox\",\n \"GraphicsGroupBoxOptions\",\n \"GraphicsGrouping\",\n \"GraphicsHighlightColor\",\n \"GraphicsRow\",\n \"GraphicsSpacing\",\n \"GraphicsStyle\",\n \"GraphIntersection\",\n \"GraphLayout\",\n \"GraphLinkEfficiency\",\n \"GraphPeriphery\",\n \"GraphPlot\",\n \"GraphPlot3D\",\n \"GraphPower\",\n \"GraphPropertyDistribution\",\n \"GraphQ\",\n \"GraphRadius\",\n \"GraphReciprocity\",\n \"GraphRoot\",\n \"GraphStyle\",\n \"GraphUnion\",\n \"Gray\",\n \"GrayLevel\",\n \"Greater\",\n \"GreaterEqual\",\n \"GreaterEqualLess\",\n \"GreaterEqualThan\",\n \"GreaterFullEqual\",\n \"GreaterGreater\",\n \"GreaterLess\",\n \"GreaterSlantEqual\",\n \"GreaterThan\",\n \"GreaterTilde\",\n \"Green\",\n \"GreenFunction\",\n \"Grid\",\n \"GridBaseline\",\n \"GridBox\",\n \"GridBoxAlignment\",\n \"GridBoxBackground\",\n \"GridBoxDividers\",\n \"GridBoxFrame\",\n \"GridBoxItemSize\",\n \"GridBoxItemStyle\",\n \"GridBoxOptions\",\n \"GridBoxSpacings\",\n \"GridCreationSettings\",\n \"GridDefaultElement\",\n \"GridElementStyleOptions\",\n \"GridFrame\",\n \"GridFrameMargins\",\n \"GridGraph\",\n \"GridLines\",\n \"GridLinesStyle\",\n \"GroebnerBasis\",\n \"GroupActionBase\",\n \"GroupBy\",\n \"GroupCentralizer\",\n \"GroupElementFromWord\",\n \"GroupElementPosition\",\n \"GroupElementQ\",\n \"GroupElements\",\n \"GroupElementToWord\",\n \"GroupGenerators\",\n \"Groupings\",\n \"GroupMultiplicationTable\",\n \"GroupOrbits\",\n \"GroupOrder\",\n \"GroupPageBreakWithin\",\n \"GroupSetwiseStabilizer\",\n \"GroupStabilizer\",\n \"GroupStabilizerChain\",\n \"GroupTogetherGrouping\",\n \"GroupTogetherNestedGrouping\",\n \"GrowCutComponents\",\n \"Gudermannian\",\n \"GuidedFilter\",\n \"GumbelDistribution\",\n \"HaarWavelet\",\n \"HadamardMatrix\",\n \"HalfLine\",\n \"HalfNormalDistribution\",\n \"HalfPlane\",\n \"HalfSpace\",\n \"HalftoneShading\",\n \"HamiltonianGraphQ\",\n \"HammingDistance\",\n \"HammingWindow\",\n \"HandlerFunctions\",\n \"HandlerFunctionsKeys\",\n \"HankelH1\",\n \"HankelH2\",\n \"HankelMatrix\",\n \"HankelTransform\",\n \"HannPoissonWindow\",\n \"HannWindow\",\n \"HaradaNortonGroupHN\",\n \"HararyGraph\",\n \"HarmonicMean\",\n \"HarmonicMeanFilter\",\n \"HarmonicNumber\",\n \"Hash\",\n \"HatchFilling\",\n \"HatchShading\",\n \"Haversine\",\n \"HazardFunction\",\n \"Head\",\n \"HeadCompose\",\n \"HeaderAlignment\",\n \"HeaderBackground\",\n \"HeaderDisplayFunction\",\n \"HeaderLines\",\n \"HeaderSize\",\n \"HeaderStyle\",\n \"Heads\",\n \"HeavisideLambda\",\n \"HeavisidePi\",\n \"HeavisideTheta\",\n \"HeldGroupHe\",\n \"HeldPart\",\n \"HelpBrowserLookup\",\n \"HelpBrowserNotebook\",\n \"HelpBrowserSettings\",\n \"Here\",\n \"HermiteDecomposition\",\n \"HermiteH\",\n \"HermitianMatrixQ\",\n \"HessenbergDecomposition\",\n \"Hessian\",\n \"HeunB\",\n \"HeunBPrime\",\n \"HeunC\",\n \"HeunCPrime\",\n \"HeunD\",\n \"HeunDPrime\",\n \"HeunG\",\n \"HeunGPrime\",\n \"HeunT\",\n \"HeunTPrime\",\n \"HexadecimalCharacter\",\n \"Hexahedron\",\n \"HexahedronBox\",\n \"HexahedronBoxOptions\",\n \"HiddenItems\",\n \"HiddenMarkovProcess\",\n \"HiddenSurface\",\n \"Highlighted\",\n \"HighlightGraph\",\n \"HighlightImage\",\n \"HighlightMesh\",\n \"HighpassFilter\",\n \"HigmanSimsGroupHS\",\n \"HilbertCurve\",\n \"HilbertFilter\",\n \"HilbertMatrix\",\n \"Histogram\",\n \"Histogram3D\",\n \"HistogramDistribution\",\n \"HistogramList\",\n \"HistogramTransform\",\n \"HistogramTransformInterpolation\",\n \"HistoricalPeriodData\",\n \"HitMissTransform\",\n \"HITSCentrality\",\n \"HjorthDistribution\",\n \"HodgeDual\",\n \"HoeffdingD\",\n \"HoeffdingDTest\",\n \"Hold\",\n \"HoldAll\",\n \"HoldAllComplete\",\n \"HoldComplete\",\n \"HoldFirst\",\n \"HoldForm\",\n \"HoldPattern\",\n \"HoldRest\",\n \"HolidayCalendar\",\n \"HomeDirectory\",\n \"HomePage\",\n \"Horizontal\",\n \"HorizontalForm\",\n \"HorizontalGauge\",\n \"HorizontalScrollPosition\",\n \"HornerForm\",\n \"HostLookup\",\n \"HotellingTSquareDistribution\",\n \"HoytDistribution\",\n \"HTMLSave\",\n \"HTTPErrorResponse\",\n \"HTTPRedirect\",\n \"HTTPRequest\",\n \"HTTPRequestData\",\n \"HTTPResponse\",\n \"Hue\",\n \"HumanGrowthData\",\n \"HumpDownHump\",\n \"HumpEqual\",\n \"HurwitzLerchPhi\",\n \"HurwitzZeta\",\n \"HyperbolicDistribution\",\n \"HypercubeGraph\",\n \"HyperexponentialDistribution\",\n \"Hyperfactorial\",\n \"Hypergeometric0F1\",\n \"Hypergeometric0F1Regularized\",\n \"Hypergeometric1F1\",\n \"Hypergeometric1F1Regularized\",\n \"Hypergeometric2F1\",\n \"Hypergeometric2F1Regularized\",\n \"HypergeometricDistribution\",\n \"HypergeometricPFQ\",\n \"HypergeometricPFQRegularized\",\n \"HypergeometricU\",\n \"Hyperlink\",\n \"HyperlinkAction\",\n \"HyperlinkCreationSettings\",\n \"Hyperplane\",\n \"Hyphenation\",\n \"HyphenationOptions\",\n \"HypoexponentialDistribution\",\n \"HypothesisTestData\",\n \"I\",\n \"IconData\",\n \"Iconize\",\n \"IconizedObject\",\n \"IconRules\",\n \"Icosahedron\",\n \"Identity\",\n \"IdentityMatrix\",\n \"If\",\n \"IgnoreCase\",\n \"IgnoreDiacritics\",\n \"IgnorePunctuation\",\n \"IgnoreSpellCheck\",\n \"IgnoringInactive\",\n \"Im\",\n \"Image\",\n \"Image3D\",\n \"Image3DProjection\",\n \"Image3DSlices\",\n \"ImageAccumulate\",\n \"ImageAdd\",\n \"ImageAdjust\",\n \"ImageAlign\",\n \"ImageApply\",\n \"ImageApplyIndexed\",\n \"ImageAspectRatio\",\n \"ImageAssemble\",\n \"ImageAugmentationLayer\",\n \"ImageBoundingBoxes\",\n \"ImageCache\",\n \"ImageCacheValid\",\n \"ImageCapture\",\n \"ImageCaptureFunction\",\n \"ImageCases\",\n \"ImageChannels\",\n \"ImageClip\",\n \"ImageCollage\",\n \"ImageColorSpace\",\n \"ImageCompose\",\n \"ImageContainsQ\",\n \"ImageContents\",\n \"ImageConvolve\",\n \"ImageCooccurrence\",\n \"ImageCorners\",\n \"ImageCorrelate\",\n \"ImageCorrespondingPoints\",\n \"ImageCrop\",\n \"ImageData\",\n \"ImageDeconvolve\",\n \"ImageDemosaic\",\n \"ImageDifference\",\n \"ImageDimensions\",\n \"ImageDisplacements\",\n \"ImageDistance\",\n \"ImageEffect\",\n \"ImageExposureCombine\",\n \"ImageFeatureTrack\",\n \"ImageFileApply\",\n \"ImageFileFilter\",\n \"ImageFileScan\",\n \"ImageFilter\",\n \"ImageFocusCombine\",\n \"ImageForestingComponents\",\n \"ImageFormattingWidth\",\n \"ImageForwardTransformation\",\n \"ImageGraphics\",\n \"ImageHistogram\",\n \"ImageIdentify\",\n \"ImageInstanceQ\",\n \"ImageKeypoints\",\n \"ImageLabels\",\n \"ImageLegends\",\n \"ImageLevels\",\n \"ImageLines\",\n \"ImageMargins\",\n \"ImageMarker\",\n \"ImageMarkers\",\n \"ImageMeasurements\",\n \"ImageMesh\",\n \"ImageMultiply\",\n \"ImageOffset\",\n \"ImagePad\",\n \"ImagePadding\",\n \"ImagePartition\",\n \"ImagePeriodogram\",\n \"ImagePerspectiveTransformation\",\n \"ImagePosition\",\n \"ImagePreviewFunction\",\n \"ImagePyramid\",\n \"ImagePyramidApply\",\n \"ImageQ\",\n \"ImageRangeCache\",\n \"ImageRecolor\",\n \"ImageReflect\",\n \"ImageRegion\",\n \"ImageResize\",\n \"ImageResolution\",\n \"ImageRestyle\",\n \"ImageRotate\",\n \"ImageRotated\",\n \"ImageSaliencyFilter\",\n \"ImageScaled\",\n \"ImageScan\",\n \"ImageSize\",\n \"ImageSizeAction\",\n \"ImageSizeCache\",\n \"ImageSizeMultipliers\",\n \"ImageSizeRaw\",\n \"ImageSubtract\",\n \"ImageTake\",\n \"ImageTransformation\",\n \"ImageTrim\",\n \"ImageType\",\n \"ImageValue\",\n \"ImageValuePositions\",\n \"ImagingDevice\",\n \"ImplicitRegion\",\n \"Implies\",\n \"Import\",\n \"ImportAutoReplacements\",\n \"ImportByteArray\",\n \"ImportOptions\",\n \"ImportString\",\n \"ImprovementImportance\",\n \"In\",\n \"Inactivate\",\n \"Inactive\",\n \"IncidenceGraph\",\n \"IncidenceList\",\n \"IncidenceMatrix\",\n \"IncludeAromaticBonds\",\n \"IncludeConstantBasis\",\n \"IncludeDefinitions\",\n \"IncludeDirectories\",\n \"IncludeFileExtension\",\n \"IncludeGeneratorTasks\",\n \"IncludeHydrogens\",\n \"IncludeInflections\",\n \"IncludeMetaInformation\",\n \"IncludePods\",\n \"IncludeQuantities\",\n \"IncludeRelatedTables\",\n \"IncludeSingularTerm\",\n \"IncludeWindowTimes\",\n \"Increment\",\n \"IndefiniteMatrixQ\",\n \"Indent\",\n \"IndentingNewlineSpacings\",\n \"IndentMaxFraction\",\n \"IndependenceTest\",\n \"IndependentEdgeSetQ\",\n \"IndependentPhysicalQuantity\",\n \"IndependentUnit\",\n \"IndependentUnitDimension\",\n \"IndependentVertexSetQ\",\n \"Indeterminate\",\n \"IndeterminateThreshold\",\n \"IndexCreationOptions\",\n \"Indexed\",\n \"IndexEdgeTaggedGraph\",\n \"IndexGraph\",\n \"IndexTag\",\n \"Inequality\",\n \"InexactNumberQ\",\n \"InexactNumbers\",\n \"InfiniteFuture\",\n \"InfiniteLine\",\n \"InfinitePast\",\n \"InfinitePlane\",\n \"Infinity\",\n \"Infix\",\n \"InflationAdjust\",\n \"InflationMethod\",\n \"Information\",\n \"InformationData\",\n \"InformationDataGrid\",\n \"Inherited\",\n \"InheritScope\",\n \"InhomogeneousPoissonProcess\",\n \"InitialEvaluationHistory\",\n \"Initialization\",\n \"InitializationCell\",\n \"InitializationCellEvaluation\",\n \"InitializationCellWarning\",\n \"InitializationObjects\",\n \"InitializationValue\",\n \"Initialize\",\n \"InitialSeeding\",\n \"InlineCounterAssignments\",\n \"InlineCounterIncrements\",\n \"InlineRules\",\n \"Inner\",\n \"InnerPolygon\",\n \"InnerPolyhedron\",\n \"Inpaint\",\n \"Input\",\n \"InputAliases\",\n \"InputAssumptions\",\n \"InputAutoReplacements\",\n \"InputField\",\n \"InputFieldBox\",\n \"InputFieldBoxOptions\",\n \"InputForm\",\n \"InputGrouping\",\n \"InputNamePacket\",\n \"InputNotebook\",\n \"InputPacket\",\n \"InputSettings\",\n \"InputStream\",\n \"InputString\",\n \"InputStringPacket\",\n \"InputToBoxFormPacket\",\n \"Insert\",\n \"InsertionFunction\",\n \"InsertionPointObject\",\n \"InsertLinebreaks\",\n \"InsertResults\",\n \"Inset\",\n \"Inset3DBox\",\n \"Inset3DBoxOptions\",\n \"InsetBox\",\n \"InsetBoxOptions\",\n \"Insphere\",\n \"Install\",\n \"InstallService\",\n \"InstanceNormalizationLayer\",\n \"InString\",\n \"Integer\",\n \"IntegerDigits\",\n \"IntegerExponent\",\n \"IntegerLength\",\n \"IntegerName\",\n \"IntegerPart\",\n \"IntegerPartitions\",\n \"IntegerQ\",\n \"IntegerReverse\",\n \"Integers\",\n \"IntegerString\",\n \"Integral\",\n \"Integrate\",\n \"Interactive\",\n \"InteractiveTradingChart\",\n \"Interlaced\",\n \"Interleaving\",\n \"InternallyBalancedDecomposition\",\n \"InterpolatingFunction\",\n \"InterpolatingPolynomial\",\n \"Interpolation\",\n \"InterpolationOrder\",\n \"InterpolationPoints\",\n \"InterpolationPrecision\",\n \"Interpretation\",\n \"InterpretationBox\",\n \"InterpretationBoxOptions\",\n \"InterpretationFunction\",\n \"Interpreter\",\n \"InterpretTemplate\",\n \"InterquartileRange\",\n \"Interrupt\",\n \"InterruptSettings\",\n \"IntersectedEntityClass\",\n \"IntersectingQ\",\n \"Intersection\",\n \"Interval\",\n \"IntervalIntersection\",\n \"IntervalMarkers\",\n \"IntervalMarkersStyle\",\n \"IntervalMemberQ\",\n \"IntervalSlider\",\n \"IntervalUnion\",\n \"Into\",\n \"Inverse\",\n \"InverseBetaRegularized\",\n \"InverseCDF\",\n \"InverseChiSquareDistribution\",\n \"InverseContinuousWaveletTransform\",\n \"InverseDistanceTransform\",\n \"InverseEllipticNomeQ\",\n \"InverseErf\",\n \"InverseErfc\",\n \"InverseFourier\",\n \"InverseFourierCosTransform\",\n \"InverseFourierSequenceTransform\",\n \"InverseFourierSinTransform\",\n \"InverseFourierTransform\",\n \"InverseFunction\",\n \"InverseFunctions\",\n \"InverseGammaDistribution\",\n \"InverseGammaRegularized\",\n \"InverseGaussianDistribution\",\n \"InverseGudermannian\",\n \"InverseHankelTransform\",\n \"InverseHaversine\",\n \"InverseImagePyramid\",\n \"InverseJacobiCD\",\n \"InverseJacobiCN\",\n \"InverseJacobiCS\",\n \"InverseJacobiDC\",\n \"InverseJacobiDN\",\n \"InverseJacobiDS\",\n \"InverseJacobiNC\",\n \"InverseJacobiND\",\n \"InverseJacobiNS\",\n \"InverseJacobiSC\",\n \"InverseJacobiSD\",\n \"InverseJacobiSN\",\n \"InverseLaplaceTransform\",\n \"InverseMellinTransform\",\n \"InversePermutation\",\n \"InverseRadon\",\n \"InverseRadonTransform\",\n \"InverseSeries\",\n \"InverseShortTimeFourier\",\n \"InverseSpectrogram\",\n \"InverseSurvivalFunction\",\n \"InverseTransformedRegion\",\n \"InverseWaveletTransform\",\n \"InverseWeierstrassP\",\n \"InverseWishartMatrixDistribution\",\n \"InverseZTransform\",\n \"Invisible\",\n \"InvisibleApplication\",\n \"InvisibleTimes\",\n \"IPAddress\",\n \"IrreduciblePolynomialQ\",\n \"IslandData\",\n \"IsolatingInterval\",\n \"IsomorphicGraphQ\",\n \"IsotopeData\",\n \"Italic\",\n \"Item\",\n \"ItemAspectRatio\",\n \"ItemBox\",\n \"ItemBoxOptions\",\n \"ItemDisplayFunction\",\n \"ItemSize\",\n \"ItemStyle\",\n \"ItoProcess\",\n \"JaccardDissimilarity\",\n \"JacobiAmplitude\",\n \"Jacobian\",\n \"JacobiCD\",\n \"JacobiCN\",\n \"JacobiCS\",\n \"JacobiDC\",\n \"JacobiDN\",\n \"JacobiDS\",\n \"JacobiNC\",\n \"JacobiND\",\n \"JacobiNS\",\n \"JacobiP\",\n \"JacobiSC\",\n \"JacobiSD\",\n \"JacobiSN\",\n \"JacobiSymbol\",\n \"JacobiZeta\",\n \"JankoGroupJ1\",\n \"JankoGroupJ2\",\n \"JankoGroupJ3\",\n \"JankoGroupJ4\",\n \"JarqueBeraALMTest\",\n \"JohnsonDistribution\",\n \"Join\",\n \"JoinAcross\",\n \"Joined\",\n \"JoinedCurve\",\n \"JoinedCurveBox\",\n \"JoinedCurveBoxOptions\",\n \"JoinForm\",\n \"JordanDecomposition\",\n \"JordanModelDecomposition\",\n \"JulianDate\",\n \"JuliaSetBoettcher\",\n \"JuliaSetIterationCount\",\n \"JuliaSetPlot\",\n \"JuliaSetPoints\",\n \"K\",\n \"KagiChart\",\n \"KaiserBesselWindow\",\n \"KaiserWindow\",\n \"KalmanEstimator\",\n \"KalmanFilter\",\n \"KarhunenLoeveDecomposition\",\n \"KaryTree\",\n \"KatzCentrality\",\n \"KCoreComponents\",\n \"KDistribution\",\n \"KEdgeConnectedComponents\",\n \"KEdgeConnectedGraphQ\",\n \"KeepExistingVersion\",\n \"KelvinBei\",\n \"KelvinBer\",\n \"KelvinKei\",\n \"KelvinKer\",\n \"KendallTau\",\n \"KendallTauTest\",\n \"KernelExecute\",\n \"KernelFunction\",\n \"KernelMixtureDistribution\",\n \"KernelObject\",\n \"Kernels\",\n \"Ket\",\n \"Key\",\n \"KeyCollisionFunction\",\n \"KeyComplement\",\n \"KeyDrop\",\n \"KeyDropFrom\",\n \"KeyExistsQ\",\n \"KeyFreeQ\",\n \"KeyIntersection\",\n \"KeyMap\",\n \"KeyMemberQ\",\n \"KeypointStrength\",\n \"Keys\",\n \"KeySelect\",\n \"KeySort\",\n \"KeySortBy\",\n \"KeyTake\",\n \"KeyUnion\",\n \"KeyValueMap\",\n \"KeyValuePattern\",\n \"Khinchin\",\n \"KillProcess\",\n \"KirchhoffGraph\",\n \"KirchhoffMatrix\",\n \"KleinInvariantJ\",\n \"KnapsackSolve\",\n \"KnightTourGraph\",\n \"KnotData\",\n \"KnownUnitQ\",\n \"KochCurve\",\n \"KolmogorovSmirnovTest\",\n \"KroneckerDelta\",\n \"KroneckerModelDecomposition\",\n \"KroneckerProduct\",\n \"KroneckerSymbol\",\n \"KuiperTest\",\n \"KumaraswamyDistribution\",\n \"Kurtosis\",\n \"KuwaharaFilter\",\n \"KVertexConnectedComponents\",\n \"KVertexConnectedGraphQ\",\n \"LABColor\",\n \"Label\",\n \"Labeled\",\n \"LabeledSlider\",\n \"LabelingFunction\",\n \"LabelingSize\",\n \"LabelStyle\",\n \"LabelVisibility\",\n \"LaguerreL\",\n \"LakeData\",\n \"LambdaComponents\",\n \"LambertW\",\n \"LaminaData\",\n \"LanczosWindow\",\n \"LandauDistribution\",\n \"Language\",\n \"LanguageCategory\",\n \"LanguageData\",\n \"LanguageIdentify\",\n \"LanguageOptions\",\n \"LaplaceDistribution\",\n \"LaplaceTransform\",\n \"Laplacian\",\n \"LaplacianFilter\",\n \"LaplacianGaussianFilter\",\n \"Large\",\n \"Larger\",\n \"Last\",\n \"Latitude\",\n \"LatitudeLongitude\",\n \"LatticeData\",\n \"LatticeReduce\",\n \"Launch\",\n \"LaunchKernels\",\n \"LayeredGraphPlot\",\n \"LayerSizeFunction\",\n \"LayoutInformation\",\n \"LCHColor\",\n \"LCM\",\n \"LeaderSize\",\n \"LeafCount\",\n \"LeapYearQ\",\n \"LearnDistribution\",\n \"LearnedDistribution\",\n \"LearningRate\",\n \"LearningRateMultipliers\",\n \"LeastSquares\",\n \"LeastSquaresFilterKernel\",\n \"Left\",\n \"LeftArrow\",\n \"LeftArrowBar\",\n \"LeftArrowRightArrow\",\n \"LeftDownTeeVector\",\n \"LeftDownVector\",\n \"LeftDownVectorBar\",\n \"LeftRightArrow\",\n \"LeftRightVector\",\n \"LeftTee\",\n \"LeftTeeArrow\",\n \"LeftTeeVector\",\n \"LeftTriangle\",\n \"LeftTriangleBar\",\n \"LeftTriangleEqual\",\n \"LeftUpDownVector\",\n \"LeftUpTeeVector\",\n \"LeftUpVector\",\n \"LeftUpVectorBar\",\n \"LeftVector\",\n \"LeftVectorBar\",\n \"LegendAppearance\",\n \"Legended\",\n \"LegendFunction\",\n \"LegendLabel\",\n \"LegendLayout\",\n \"LegendMargins\",\n \"LegendMarkers\",\n \"LegendMarkerSize\",\n \"LegendreP\",\n \"LegendreQ\",\n \"LegendreType\",\n \"Length\",\n \"LengthWhile\",\n \"LerchPhi\",\n \"Less\",\n \"LessEqual\",\n \"LessEqualGreater\",\n \"LessEqualThan\",\n \"LessFullEqual\",\n \"LessGreater\",\n \"LessLess\",\n \"LessSlantEqual\",\n \"LessThan\",\n \"LessTilde\",\n \"LetterCharacter\",\n \"LetterCounts\",\n \"LetterNumber\",\n \"LetterQ\",\n \"Level\",\n \"LeveneTest\",\n \"LeviCivitaTensor\",\n \"LevyDistribution\",\n \"Lexicographic\",\n \"LibraryDataType\",\n \"LibraryFunction\",\n \"LibraryFunctionError\",\n \"LibraryFunctionInformation\",\n \"LibraryFunctionLoad\",\n \"LibraryFunctionUnload\",\n \"LibraryLoad\",\n \"LibraryUnload\",\n \"LicenseID\",\n \"LiftingFilterData\",\n \"LiftingWaveletTransform\",\n \"LightBlue\",\n \"LightBrown\",\n \"LightCyan\",\n \"Lighter\",\n \"LightGray\",\n \"LightGreen\",\n \"Lighting\",\n \"LightingAngle\",\n \"LightMagenta\",\n \"LightOrange\",\n \"LightPink\",\n \"LightPurple\",\n \"LightRed\",\n \"LightSources\",\n \"LightYellow\",\n \"Likelihood\",\n \"Limit\",\n \"LimitsPositioning\",\n \"LimitsPositioningTokens\",\n \"LindleyDistribution\",\n \"Line\",\n \"Line3DBox\",\n \"Line3DBoxOptions\",\n \"LinearFilter\",\n \"LinearFractionalOptimization\",\n \"LinearFractionalTransform\",\n \"LinearGradientImage\",\n \"LinearizingTransformationData\",\n \"LinearLayer\",\n \"LinearModelFit\",\n \"LinearOffsetFunction\",\n \"LinearOptimization\",\n \"LinearProgramming\",\n \"LinearRecurrence\",\n \"LinearSolve\",\n \"LinearSolveFunction\",\n \"LineBox\",\n \"LineBoxOptions\",\n \"LineBreak\",\n \"LinebreakAdjustments\",\n \"LineBreakChart\",\n \"LinebreakSemicolonWeighting\",\n \"LineBreakWithin\",\n \"LineColor\",\n \"LineGraph\",\n \"LineIndent\",\n \"LineIndentMaxFraction\",\n \"LineIntegralConvolutionPlot\",\n \"LineIntegralConvolutionScale\",\n \"LineLegend\",\n \"LineOpacity\",\n \"LineSpacing\",\n \"LineWrapParts\",\n \"LinkActivate\",\n \"LinkClose\",\n \"LinkConnect\",\n \"LinkConnectedQ\",\n \"LinkCreate\",\n \"LinkError\",\n \"LinkFlush\",\n \"LinkFunction\",\n \"LinkHost\",\n \"LinkInterrupt\",\n \"LinkLaunch\",\n \"LinkMode\",\n \"LinkObject\",\n \"LinkOpen\",\n \"LinkOptions\",\n \"LinkPatterns\",\n \"LinkProtocol\",\n \"LinkRankCentrality\",\n \"LinkRead\",\n \"LinkReadHeld\",\n \"LinkReadyQ\",\n \"Links\",\n \"LinkService\",\n \"LinkWrite\",\n \"LinkWriteHeld\",\n \"LiouvilleLambda\",\n \"List\",\n \"Listable\",\n \"ListAnimate\",\n \"ListContourPlot\",\n \"ListContourPlot3D\",\n \"ListConvolve\",\n \"ListCorrelate\",\n \"ListCurvePathPlot\",\n \"ListDeconvolve\",\n \"ListDensityPlot\",\n \"ListDensityPlot3D\",\n \"Listen\",\n \"ListFormat\",\n \"ListFourierSequenceTransform\",\n \"ListInterpolation\",\n \"ListLineIntegralConvolutionPlot\",\n \"ListLinePlot\",\n \"ListLogLinearPlot\",\n \"ListLogLogPlot\",\n \"ListLogPlot\",\n \"ListPicker\",\n \"ListPickerBox\",\n \"ListPickerBoxBackground\",\n \"ListPickerBoxOptions\",\n \"ListPlay\",\n \"ListPlot\",\n \"ListPlot3D\",\n \"ListPointPlot3D\",\n \"ListPolarPlot\",\n \"ListQ\",\n \"ListSliceContourPlot3D\",\n \"ListSliceDensityPlot3D\",\n \"ListSliceVectorPlot3D\",\n \"ListStepPlot\",\n \"ListStreamDensityPlot\",\n \"ListStreamPlot\",\n \"ListSurfacePlot3D\",\n \"ListVectorDensityPlot\",\n \"ListVectorPlot\",\n \"ListVectorPlot3D\",\n \"ListZTransform\",\n \"Literal\",\n \"LiteralSearch\",\n \"LocalAdaptiveBinarize\",\n \"LocalCache\",\n \"LocalClusteringCoefficient\",\n \"LocalizeDefinitions\",\n \"LocalizeVariables\",\n \"LocalObject\",\n \"LocalObjects\",\n \"LocalResponseNormalizationLayer\",\n \"LocalSubmit\",\n \"LocalSymbol\",\n \"LocalTime\",\n \"LocalTimeZone\",\n \"LocationEquivalenceTest\",\n \"LocationTest\",\n \"Locator\",\n \"LocatorAutoCreate\",\n \"LocatorBox\",\n \"LocatorBoxOptions\",\n \"LocatorCentering\",\n \"LocatorPane\",\n \"LocatorPaneBox\",\n \"LocatorPaneBoxOptions\",\n \"LocatorRegion\",\n \"Locked\",\n \"Log\",\n \"Log10\",\n \"Log2\",\n \"LogBarnesG\",\n \"LogGamma\",\n \"LogGammaDistribution\",\n \"LogicalExpand\",\n \"LogIntegral\",\n \"LogisticDistribution\",\n \"LogisticSigmoid\",\n \"LogitModelFit\",\n \"LogLikelihood\",\n \"LogLinearPlot\",\n \"LogLogisticDistribution\",\n \"LogLogPlot\",\n \"LogMultinormalDistribution\",\n \"LogNormalDistribution\",\n \"LogPlot\",\n \"LogRankTest\",\n \"LogSeriesDistribution\",\n \"LongEqual\",\n \"Longest\",\n \"LongestCommonSequence\",\n \"LongestCommonSequencePositions\",\n \"LongestCommonSubsequence\",\n \"LongestCommonSubsequencePositions\",\n \"LongestMatch\",\n \"LongestOrderedSequence\",\n \"LongForm\",\n \"Longitude\",\n \"LongLeftArrow\",\n \"LongLeftRightArrow\",\n \"LongRightArrow\",\n \"LongShortTermMemoryLayer\",\n \"Lookup\",\n \"Loopback\",\n \"LoopFreeGraphQ\",\n \"Looping\",\n \"LossFunction\",\n \"LowerCaseQ\",\n \"LowerLeftArrow\",\n \"LowerRightArrow\",\n \"LowerTriangularize\",\n \"LowerTriangularMatrixQ\",\n \"LowpassFilter\",\n \"LQEstimatorGains\",\n \"LQGRegulator\",\n \"LQOutputRegulatorGains\",\n \"LQRegulatorGains\",\n \"LUBackSubstitution\",\n \"LucasL\",\n \"LuccioSamiComponents\",\n \"LUDecomposition\",\n \"LunarEclipse\",\n \"LUVColor\",\n \"LyapunovSolve\",\n \"LyonsGroupLy\",\n \"MachineID\",\n \"MachineName\",\n \"MachineNumberQ\",\n \"MachinePrecision\",\n \"MacintoshSystemPageSetup\",\n \"Magenta\",\n \"Magnification\",\n \"Magnify\",\n \"MailAddressValidation\",\n \"MailExecute\",\n \"MailFolder\",\n \"MailItem\",\n \"MailReceiverFunction\",\n \"MailResponseFunction\",\n \"MailSearch\",\n \"MailServerConnect\",\n \"MailServerConnection\",\n \"MailSettings\",\n \"MainSolve\",\n \"MaintainDynamicCaches\",\n \"Majority\",\n \"MakeBoxes\",\n \"MakeExpression\",\n \"MakeRules\",\n \"ManagedLibraryExpressionID\",\n \"ManagedLibraryExpressionQ\",\n \"MandelbrotSetBoettcher\",\n \"MandelbrotSetDistance\",\n \"MandelbrotSetIterationCount\",\n \"MandelbrotSetMemberQ\",\n \"MandelbrotSetPlot\",\n \"MangoldtLambda\",\n \"ManhattanDistance\",\n \"Manipulate\",\n \"Manipulator\",\n \"MannedSpaceMissionData\",\n \"MannWhitneyTest\",\n \"MantissaExponent\",\n \"Manual\",\n \"Map\",\n \"MapAll\",\n \"MapAt\",\n \"MapIndexed\",\n \"MAProcess\",\n \"MapThread\",\n \"MarchenkoPasturDistribution\",\n \"MarcumQ\",\n \"MardiaCombinedTest\",\n \"MardiaKurtosisTest\",\n \"MardiaSkewnessTest\",\n \"MarginalDistribution\",\n \"MarkovProcessProperties\",\n \"Masking\",\n \"MatchingDissimilarity\",\n \"MatchLocalNameQ\",\n \"MatchLocalNames\",\n \"MatchQ\",\n \"Material\",\n \"MathematicalFunctionData\",\n \"MathematicaNotation\",\n \"MathieuC\",\n \"MathieuCharacteristicA\",\n \"MathieuCharacteristicB\",\n \"MathieuCharacteristicExponent\",\n \"MathieuCPrime\",\n \"MathieuGroupM11\",\n \"MathieuGroupM12\",\n \"MathieuGroupM22\",\n \"MathieuGroupM23\",\n \"MathieuGroupM24\",\n \"MathieuS\",\n \"MathieuSPrime\",\n \"MathMLForm\",\n \"MathMLText\",\n \"Matrices\",\n \"MatrixExp\",\n \"MatrixForm\",\n \"MatrixFunction\",\n \"MatrixLog\",\n \"MatrixNormalDistribution\",\n \"MatrixPlot\",\n \"MatrixPower\",\n \"MatrixPropertyDistribution\",\n \"MatrixQ\",\n \"MatrixRank\",\n \"MatrixTDistribution\",\n \"Max\",\n \"MaxBend\",\n \"MaxCellMeasure\",\n \"MaxColorDistance\",\n \"MaxDate\",\n \"MaxDetect\",\n \"MaxDuration\",\n \"MaxExtraBandwidths\",\n \"MaxExtraConditions\",\n \"MaxFeatureDisplacement\",\n \"MaxFeatures\",\n \"MaxFilter\",\n \"MaximalBy\",\n \"Maximize\",\n \"MaxItems\",\n \"MaxIterations\",\n \"MaxLimit\",\n \"MaxMemoryUsed\",\n \"MaxMixtureKernels\",\n \"MaxOverlapFraction\",\n \"MaxPlotPoints\",\n \"MaxPoints\",\n \"MaxRecursion\",\n \"MaxStableDistribution\",\n \"MaxStepFraction\",\n \"MaxSteps\",\n \"MaxStepSize\",\n \"MaxTrainingRounds\",\n \"MaxValue\",\n \"MaxwellDistribution\",\n \"MaxWordGap\",\n \"McLaughlinGroupMcL\",\n \"Mean\",\n \"MeanAbsoluteLossLayer\",\n \"MeanAround\",\n \"MeanClusteringCoefficient\",\n \"MeanDegreeConnectivity\",\n \"MeanDeviation\",\n \"MeanFilter\",\n \"MeanGraphDistance\",\n \"MeanNeighborDegree\",\n \"MeanShift\",\n \"MeanShiftFilter\",\n \"MeanSquaredLossLayer\",\n \"Median\",\n \"MedianDeviation\",\n \"MedianFilter\",\n \"MedicalTestData\",\n \"Medium\",\n \"MeijerG\",\n \"MeijerGReduce\",\n \"MeixnerDistribution\",\n \"MellinConvolve\",\n \"MellinTransform\",\n \"MemberQ\",\n \"MemoryAvailable\",\n \"MemoryConstrained\",\n \"MemoryConstraint\",\n \"MemoryInUse\",\n \"MengerMesh\",\n \"Menu\",\n \"MenuAppearance\",\n \"MenuCommandKey\",\n \"MenuEvaluator\",\n \"MenuItem\",\n \"MenuList\",\n \"MenuPacket\",\n \"MenuSortingValue\",\n \"MenuStyle\",\n \"MenuView\",\n \"Merge\",\n \"MergeDifferences\",\n \"MergingFunction\",\n \"MersennePrimeExponent\",\n \"MersennePrimeExponentQ\",\n \"Mesh\",\n \"MeshCellCentroid\",\n \"MeshCellCount\",\n \"MeshCellHighlight\",\n \"MeshCellIndex\",\n \"MeshCellLabel\",\n \"MeshCellMarker\",\n \"MeshCellMeasure\",\n \"MeshCellQuality\",\n \"MeshCells\",\n \"MeshCellShapeFunction\",\n \"MeshCellStyle\",\n \"MeshConnectivityGraph\",\n \"MeshCoordinates\",\n \"MeshFunctions\",\n \"MeshPrimitives\",\n \"MeshQualityGoal\",\n \"MeshRange\",\n \"MeshRefinementFunction\",\n \"MeshRegion\",\n \"MeshRegionQ\",\n \"MeshShading\",\n \"MeshStyle\",\n \"Message\",\n \"MessageDialog\",\n \"MessageList\",\n \"MessageName\",\n \"MessageObject\",\n \"MessageOptions\",\n \"MessagePacket\",\n \"Messages\",\n \"MessagesNotebook\",\n \"MetaCharacters\",\n \"MetaInformation\",\n \"MeteorShowerData\",\n \"Method\",\n \"MethodOptions\",\n \"MexicanHatWavelet\",\n \"MeyerWavelet\",\n \"Midpoint\",\n \"Min\",\n \"MinColorDistance\",\n \"MinDate\",\n \"MinDetect\",\n \"MineralData\",\n \"MinFilter\",\n \"MinimalBy\",\n \"MinimalPolynomial\",\n \"MinimalStateSpaceModel\",\n \"Minimize\",\n \"MinimumTimeIncrement\",\n \"MinIntervalSize\",\n \"MinkowskiQuestionMark\",\n \"MinLimit\",\n \"MinMax\",\n \"MinorPlanetData\",\n \"Minors\",\n \"MinRecursion\",\n \"MinSize\",\n \"MinStableDistribution\",\n \"Minus\",\n \"MinusPlus\",\n \"MinValue\",\n \"Missing\",\n \"MissingBehavior\",\n \"MissingDataMethod\",\n \"MissingDataRules\",\n \"MissingQ\",\n \"MissingString\",\n \"MissingStyle\",\n \"MissingValuePattern\",\n \"MittagLefflerE\",\n \"MixedFractionParts\",\n \"MixedGraphQ\",\n \"MixedMagnitude\",\n \"MixedRadix\",\n \"MixedRadixQuantity\",\n \"MixedUnit\",\n \"MixtureDistribution\",\n \"Mod\",\n \"Modal\",\n \"Mode\",\n \"Modular\",\n \"ModularInverse\",\n \"ModularLambda\",\n \"Module\",\n \"Modulus\",\n \"MoebiusMu\",\n \"Molecule\",\n \"MoleculeContainsQ\",\n \"MoleculeEquivalentQ\",\n \"MoleculeGraph\",\n \"MoleculeModify\",\n \"MoleculePattern\",\n \"MoleculePlot\",\n \"MoleculePlot3D\",\n \"MoleculeProperty\",\n \"MoleculeQ\",\n \"MoleculeRecognize\",\n \"MoleculeValue\",\n \"Moment\",\n \"Momentary\",\n \"MomentConvert\",\n \"MomentEvaluate\",\n \"MomentGeneratingFunction\",\n \"MomentOfInertia\",\n \"Monday\",\n \"Monitor\",\n \"MonomialList\",\n \"MonomialOrder\",\n \"MonsterGroupM\",\n \"MoonPhase\",\n \"MoonPosition\",\n \"MorletWavelet\",\n \"MorphologicalBinarize\",\n \"MorphologicalBranchPoints\",\n \"MorphologicalComponents\",\n \"MorphologicalEulerNumber\",\n \"MorphologicalGraph\",\n \"MorphologicalPerimeter\",\n \"MorphologicalTransform\",\n \"MortalityData\",\n \"Most\",\n \"MountainData\",\n \"MouseAnnotation\",\n \"MouseAppearance\",\n \"MouseAppearanceTag\",\n \"MouseButtons\",\n \"Mouseover\",\n \"MousePointerNote\",\n \"MousePosition\",\n \"MovieData\",\n \"MovingAverage\",\n \"MovingMap\",\n \"MovingMedian\",\n \"MoyalDistribution\",\n \"Multicolumn\",\n \"MultiedgeStyle\",\n \"MultigraphQ\",\n \"MultilaunchWarning\",\n \"MultiLetterItalics\",\n \"MultiLetterStyle\",\n \"MultilineFunction\",\n \"Multinomial\",\n \"MultinomialDistribution\",\n \"MultinormalDistribution\",\n \"MultiplicativeOrder\",\n \"Multiplicity\",\n \"MultiplySides\",\n \"Multiselection\",\n \"MultivariateHypergeometricDistribution\",\n \"MultivariatePoissonDistribution\",\n \"MultivariateTDistribution\",\n \"N\",\n \"NakagamiDistribution\",\n \"NameQ\",\n \"Names\",\n \"NamespaceBox\",\n \"NamespaceBoxOptions\",\n \"Nand\",\n \"NArgMax\",\n \"NArgMin\",\n \"NBernoulliB\",\n \"NBodySimulation\",\n \"NBodySimulationData\",\n \"NCache\",\n \"NDEigensystem\",\n \"NDEigenvalues\",\n \"NDSolve\",\n \"NDSolveValue\",\n \"Nearest\",\n \"NearestFunction\",\n \"NearestMeshCells\",\n \"NearestNeighborGraph\",\n \"NearestTo\",\n \"NebulaData\",\n \"NeedCurrentFrontEndPackagePacket\",\n \"NeedCurrentFrontEndSymbolsPacket\",\n \"NeedlemanWunschSimilarity\",\n \"Needs\",\n \"Negative\",\n \"NegativeBinomialDistribution\",\n \"NegativeDefiniteMatrixQ\",\n \"NegativeIntegers\",\n \"NegativeMultinomialDistribution\",\n \"NegativeRationals\",\n \"NegativeReals\",\n \"NegativeSemidefiniteMatrixQ\",\n \"NeighborhoodData\",\n \"NeighborhoodGraph\",\n \"Nest\",\n \"NestedGreaterGreater\",\n \"NestedLessLess\",\n \"NestedScriptRules\",\n \"NestGraph\",\n \"NestList\",\n \"NestWhile\",\n \"NestWhileList\",\n \"NetAppend\",\n \"NetBidirectionalOperator\",\n \"NetChain\",\n \"NetDecoder\",\n \"NetDelete\",\n \"NetDrop\",\n \"NetEncoder\",\n \"NetEvaluationMode\",\n \"NetExtract\",\n \"NetFlatten\",\n \"NetFoldOperator\",\n \"NetGANOperator\",\n \"NetGraph\",\n \"NetInformation\",\n \"NetInitialize\",\n \"NetInsert\",\n \"NetInsertSharedArrays\",\n \"NetJoin\",\n \"NetMapOperator\",\n \"NetMapThreadOperator\",\n \"NetMeasurements\",\n \"NetModel\",\n \"NetNestOperator\",\n \"NetPairEmbeddingOperator\",\n \"NetPort\",\n \"NetPortGradient\",\n \"NetPrepend\",\n \"NetRename\",\n \"NetReplace\",\n \"NetReplacePart\",\n \"NetSharedArray\",\n \"NetStateObject\",\n \"NetTake\",\n \"NetTrain\",\n \"NetTrainResultsObject\",\n \"NetworkPacketCapture\",\n \"NetworkPacketRecording\",\n \"NetworkPacketRecordingDuring\",\n \"NetworkPacketTrace\",\n \"NeumannValue\",\n \"NevilleThetaC\",\n \"NevilleThetaD\",\n \"NevilleThetaN\",\n \"NevilleThetaS\",\n \"NewPrimitiveStyle\",\n \"NExpectation\",\n \"Next\",\n \"NextCell\",\n \"NextDate\",\n \"NextPrime\",\n \"NextScheduledTaskTime\",\n \"NHoldAll\",\n \"NHoldFirst\",\n \"NHoldRest\",\n \"NicholsGridLines\",\n \"NicholsPlot\",\n \"NightHemisphere\",\n \"NIntegrate\",\n \"NMaximize\",\n \"NMaxValue\",\n \"NMinimize\",\n \"NMinValue\",\n \"NominalVariables\",\n \"NonAssociative\",\n \"NoncentralBetaDistribution\",\n \"NoncentralChiSquareDistribution\",\n \"NoncentralFRatioDistribution\",\n \"NoncentralStudentTDistribution\",\n \"NonCommutativeMultiply\",\n \"NonConstants\",\n \"NondimensionalizationTransform\",\n \"None\",\n \"NoneTrue\",\n \"NonlinearModelFit\",\n \"NonlinearStateSpaceModel\",\n \"NonlocalMeansFilter\",\n \"NonNegative\",\n \"NonNegativeIntegers\",\n \"NonNegativeRationals\",\n \"NonNegativeReals\",\n \"NonPositive\",\n \"NonPositiveIntegers\",\n \"NonPositiveRationals\",\n \"NonPositiveReals\",\n \"Nor\",\n \"NorlundB\",\n \"Norm\",\n \"Normal\",\n \"NormalDistribution\",\n \"NormalGrouping\",\n \"NormalizationLayer\",\n \"Normalize\",\n \"Normalized\",\n \"NormalizedSquaredEuclideanDistance\",\n \"NormalMatrixQ\",\n \"NormalsFunction\",\n \"NormFunction\",\n \"Not\",\n \"NotCongruent\",\n \"NotCupCap\",\n \"NotDoubleVerticalBar\",\n \"Notebook\",\n \"NotebookApply\",\n \"NotebookAutoSave\",\n \"NotebookClose\",\n \"NotebookConvertSettings\",\n \"NotebookCreate\",\n \"NotebookCreateReturnObject\",\n \"NotebookDefault\",\n \"NotebookDelete\",\n \"NotebookDirectory\",\n \"NotebookDynamicExpression\",\n \"NotebookEvaluate\",\n \"NotebookEventActions\",\n \"NotebookFileName\",\n \"NotebookFind\",\n \"NotebookFindReturnObject\",\n \"NotebookGet\",\n \"NotebookGetLayoutInformationPacket\",\n \"NotebookGetMisspellingsPacket\",\n \"NotebookImport\",\n \"NotebookInformation\",\n \"NotebookInterfaceObject\",\n \"NotebookLocate\",\n \"NotebookObject\",\n \"NotebookOpen\",\n \"NotebookOpenReturnObject\",\n \"NotebookPath\",\n \"NotebookPrint\",\n \"NotebookPut\",\n \"NotebookPutReturnObject\",\n \"NotebookRead\",\n \"NotebookResetGeneratedCells\",\n \"Notebooks\",\n \"NotebookSave\",\n \"NotebookSaveAs\",\n \"NotebookSelection\",\n \"NotebookSetupLayoutInformationPacket\",\n \"NotebooksMenu\",\n \"NotebookTemplate\",\n \"NotebookWrite\",\n \"NotElement\",\n \"NotEqualTilde\",\n \"NotExists\",\n \"NotGreater\",\n \"NotGreaterEqual\",\n \"NotGreaterFullEqual\",\n \"NotGreaterGreater\",\n \"NotGreaterLess\",\n \"NotGreaterSlantEqual\",\n \"NotGreaterTilde\",\n \"Nothing\",\n \"NotHumpDownHump\",\n \"NotHumpEqual\",\n \"NotificationFunction\",\n \"NotLeftTriangle\",\n \"NotLeftTriangleBar\",\n \"NotLeftTriangleEqual\",\n \"NotLess\",\n \"NotLessEqual\",\n \"NotLessFullEqual\",\n \"NotLessGreater\",\n \"NotLessLess\",\n \"NotLessSlantEqual\",\n \"NotLessTilde\",\n \"NotNestedGreaterGreater\",\n \"NotNestedLessLess\",\n \"NotPrecedes\",\n \"NotPrecedesEqual\",\n \"NotPrecedesSlantEqual\",\n \"NotPrecedesTilde\",\n \"NotReverseElement\",\n \"NotRightTriangle\",\n \"NotRightTriangleBar\",\n \"NotRightTriangleEqual\",\n \"NotSquareSubset\",\n \"NotSquareSubsetEqual\",\n \"NotSquareSuperset\",\n \"NotSquareSupersetEqual\",\n \"NotSubset\",\n \"NotSubsetEqual\",\n \"NotSucceeds\",\n \"NotSucceedsEqual\",\n \"NotSucceedsSlantEqual\",\n \"NotSucceedsTilde\",\n \"NotSuperset\",\n \"NotSupersetEqual\",\n \"NotTilde\",\n \"NotTildeEqual\",\n \"NotTildeFullEqual\",\n \"NotTildeTilde\",\n \"NotVerticalBar\",\n \"Now\",\n \"NoWhitespace\",\n \"NProbability\",\n \"NProduct\",\n \"NProductFactors\",\n \"NRoots\",\n \"NSolve\",\n \"NSum\",\n \"NSumTerms\",\n \"NuclearExplosionData\",\n \"NuclearReactorData\",\n \"Null\",\n \"NullRecords\",\n \"NullSpace\",\n \"NullWords\",\n \"Number\",\n \"NumberCompose\",\n \"NumberDecompose\",\n \"NumberExpand\",\n \"NumberFieldClassNumber\",\n \"NumberFieldDiscriminant\",\n \"NumberFieldFundamentalUnits\",\n \"NumberFieldIntegralBasis\",\n \"NumberFieldNormRepresentatives\",\n \"NumberFieldRegulator\",\n \"NumberFieldRootsOfUnity\",\n \"NumberFieldSignature\",\n \"NumberForm\",\n \"NumberFormat\",\n \"NumberLinePlot\",\n \"NumberMarks\",\n \"NumberMultiplier\",\n \"NumberPadding\",\n \"NumberPoint\",\n \"NumberQ\",\n \"NumberSeparator\",\n \"NumberSigns\",\n \"NumberString\",\n \"Numerator\",\n \"NumeratorDenominator\",\n \"NumericalOrder\",\n \"NumericalSort\",\n \"NumericArray\",\n \"NumericArrayQ\",\n \"NumericArrayType\",\n \"NumericFunction\",\n \"NumericQ\",\n \"NuttallWindow\",\n \"NValues\",\n \"NyquistGridLines\",\n \"NyquistPlot\",\n \"O\",\n \"ObservabilityGramian\",\n \"ObservabilityMatrix\",\n \"ObservableDecomposition\",\n \"ObservableModelQ\",\n \"OceanData\",\n \"Octahedron\",\n \"OddQ\",\n \"Off\",\n \"Offset\",\n \"OLEData\",\n \"On\",\n \"ONanGroupON\",\n \"Once\",\n \"OneIdentity\",\n \"Opacity\",\n \"OpacityFunction\",\n \"OpacityFunctionScaling\",\n \"Open\",\n \"OpenAppend\",\n \"Opener\",\n \"OpenerBox\",\n \"OpenerBoxOptions\",\n \"OpenerView\",\n \"OpenFunctionInspectorPacket\",\n \"Opening\",\n \"OpenRead\",\n \"OpenSpecialOptions\",\n \"OpenTemporary\",\n \"OpenWrite\",\n \"Operate\",\n \"OperatingSystem\",\n \"OperatorApplied\",\n \"OptimumFlowData\",\n \"Optional\",\n \"OptionalElement\",\n \"OptionInspectorSettings\",\n \"OptionQ\",\n \"Options\",\n \"OptionsPacket\",\n \"OptionsPattern\",\n \"OptionValue\",\n \"OptionValueBox\",\n \"OptionValueBoxOptions\",\n \"Or\",\n \"Orange\",\n \"Order\",\n \"OrderDistribution\",\n \"OrderedQ\",\n \"Ordering\",\n \"OrderingBy\",\n \"OrderingLayer\",\n \"Orderless\",\n \"OrderlessPatternSequence\",\n \"OrnsteinUhlenbeckProcess\",\n \"Orthogonalize\",\n \"OrthogonalMatrixQ\",\n \"Out\",\n \"Outer\",\n \"OuterPolygon\",\n \"OuterPolyhedron\",\n \"OutputAutoOverwrite\",\n \"OutputControllabilityMatrix\",\n \"OutputControllableModelQ\",\n \"OutputForm\",\n \"OutputFormData\",\n \"OutputGrouping\",\n \"OutputMathEditExpression\",\n \"OutputNamePacket\",\n \"OutputResponse\",\n \"OutputSizeLimit\",\n \"OutputStream\",\n \"Over\",\n \"OverBar\",\n \"OverDot\",\n \"Overflow\",\n \"OverHat\",\n \"Overlaps\",\n \"Overlay\",\n \"OverlayBox\",\n \"OverlayBoxOptions\",\n \"Overscript\",\n \"OverscriptBox\",\n \"OverscriptBoxOptions\",\n \"OverTilde\",\n \"OverVector\",\n \"OverwriteTarget\",\n \"OwenT\",\n \"OwnValues\",\n \"Package\",\n \"PackingMethod\",\n \"PackPaclet\",\n \"PacletDataRebuild\",\n \"PacletDirectoryAdd\",\n \"PacletDirectoryLoad\",\n \"PacletDirectoryRemove\",\n \"PacletDirectoryUnload\",\n \"PacletDisable\",\n \"PacletEnable\",\n \"PacletFind\",\n \"PacletFindRemote\",\n \"PacletInformation\",\n \"PacletInstall\",\n \"PacletInstallSubmit\",\n \"PacletNewerQ\",\n \"PacletObject\",\n \"PacletObjectQ\",\n \"PacletSite\",\n \"PacletSiteObject\",\n \"PacletSiteRegister\",\n \"PacletSites\",\n \"PacletSiteUnregister\",\n \"PacletSiteUpdate\",\n \"PacletUninstall\",\n \"PacletUpdate\",\n \"PaddedForm\",\n \"Padding\",\n \"PaddingLayer\",\n \"PaddingSize\",\n \"PadeApproximant\",\n \"PadLeft\",\n \"PadRight\",\n \"PageBreakAbove\",\n \"PageBreakBelow\",\n \"PageBreakWithin\",\n \"PageFooterLines\",\n \"PageFooters\",\n \"PageHeaderLines\",\n \"PageHeaders\",\n \"PageHeight\",\n \"PageRankCentrality\",\n \"PageTheme\",\n \"PageWidth\",\n \"Pagination\",\n \"PairedBarChart\",\n \"PairedHistogram\",\n \"PairedSmoothHistogram\",\n \"PairedTTest\",\n \"PairedZTest\",\n \"PaletteNotebook\",\n \"PalettePath\",\n \"PalindromeQ\",\n \"Pane\",\n \"PaneBox\",\n \"PaneBoxOptions\",\n \"Panel\",\n \"PanelBox\",\n \"PanelBoxOptions\",\n \"Paneled\",\n \"PaneSelector\",\n \"PaneSelectorBox\",\n \"PaneSelectorBoxOptions\",\n \"PaperWidth\",\n \"ParabolicCylinderD\",\n \"ParagraphIndent\",\n \"ParagraphSpacing\",\n \"ParallelArray\",\n \"ParallelCombine\",\n \"ParallelDo\",\n \"Parallelepiped\",\n \"ParallelEvaluate\",\n \"Parallelization\",\n \"Parallelize\",\n \"ParallelMap\",\n \"ParallelNeeds\",\n \"Parallelogram\",\n \"ParallelProduct\",\n \"ParallelSubmit\",\n \"ParallelSum\",\n \"ParallelTable\",\n \"ParallelTry\",\n \"Parameter\",\n \"ParameterEstimator\",\n \"ParameterMixtureDistribution\",\n \"ParameterVariables\",\n \"ParametricFunction\",\n \"ParametricNDSolve\",\n \"ParametricNDSolveValue\",\n \"ParametricPlot\",\n \"ParametricPlot3D\",\n \"ParametricRampLayer\",\n \"ParametricRegion\",\n \"ParentBox\",\n \"ParentCell\",\n \"ParentConnect\",\n \"ParentDirectory\",\n \"ParentForm\",\n \"Parenthesize\",\n \"ParentList\",\n \"ParentNotebook\",\n \"ParetoDistribution\",\n \"ParetoPickandsDistribution\",\n \"ParkData\",\n \"Part\",\n \"PartBehavior\",\n \"PartialCorrelationFunction\",\n \"PartialD\",\n \"ParticleAcceleratorData\",\n \"ParticleData\",\n \"Partition\",\n \"PartitionGranularity\",\n \"PartitionsP\",\n \"PartitionsQ\",\n \"PartLayer\",\n \"PartOfSpeech\",\n \"PartProtection\",\n \"ParzenWindow\",\n \"PascalDistribution\",\n \"PassEventsDown\",\n \"PassEventsUp\",\n \"Paste\",\n \"PasteAutoQuoteCharacters\",\n \"PasteBoxFormInlineCells\",\n \"PasteButton\",\n \"Path\",\n \"PathGraph\",\n \"PathGraphQ\",\n \"Pattern\",\n \"PatternFilling\",\n \"PatternSequence\",\n \"PatternTest\",\n \"PauliMatrix\",\n \"PaulWavelet\",\n \"Pause\",\n \"PausedTime\",\n \"PDF\",\n \"PeakDetect\",\n \"PeanoCurve\",\n \"PearsonChiSquareTest\",\n \"PearsonCorrelationTest\",\n \"PearsonDistribution\",\n \"PercentForm\",\n \"PerfectNumber\",\n \"PerfectNumberQ\",\n \"PerformanceGoal\",\n \"Perimeter\",\n \"PeriodicBoundaryCondition\",\n \"PeriodicInterpolation\",\n \"Periodogram\",\n \"PeriodogramArray\",\n \"Permanent\",\n \"Permissions\",\n \"PermissionsGroup\",\n \"PermissionsGroupMemberQ\",\n \"PermissionsGroups\",\n \"PermissionsKey\",\n \"PermissionsKeys\",\n \"PermutationCycles\",\n \"PermutationCyclesQ\",\n \"PermutationGroup\",\n \"PermutationLength\",\n \"PermutationList\",\n \"PermutationListQ\",\n \"PermutationMax\",\n \"PermutationMin\",\n \"PermutationOrder\",\n \"PermutationPower\",\n \"PermutationProduct\",\n \"PermutationReplace\",\n \"Permutations\",\n \"PermutationSupport\",\n \"Permute\",\n \"PeronaMalikFilter\",\n \"Perpendicular\",\n \"PerpendicularBisector\",\n \"PersistenceLocation\",\n \"PersistenceTime\",\n \"PersistentObject\",\n \"PersistentObjects\",\n \"PersistentValue\",\n \"PersonData\",\n \"PERTDistribution\",\n \"PetersenGraph\",\n \"PhaseMargins\",\n \"PhaseRange\",\n \"PhysicalSystemData\",\n \"Pi\",\n \"Pick\",\n \"PIDData\",\n \"PIDDerivativeFilter\",\n \"PIDFeedforward\",\n \"PIDTune\",\n \"Piecewise\",\n \"PiecewiseExpand\",\n \"PieChart\",\n \"PieChart3D\",\n \"PillaiTrace\",\n \"PillaiTraceTest\",\n \"PingTime\",\n \"Pink\",\n \"PitchRecognize\",\n \"Pivoting\",\n \"PixelConstrained\",\n \"PixelValue\",\n \"PixelValuePositions\",\n \"Placed\",\n \"Placeholder\",\n \"PlaceholderReplace\",\n \"Plain\",\n \"PlanarAngle\",\n \"PlanarGraph\",\n \"PlanarGraphQ\",\n \"PlanckRadiationLaw\",\n \"PlaneCurveData\",\n \"PlanetaryMoonData\",\n \"PlanetData\",\n \"PlantData\",\n \"Play\",\n \"PlayRange\",\n \"Plot\",\n \"Plot3D\",\n \"Plot3Matrix\",\n \"PlotDivision\",\n \"PlotJoined\",\n \"PlotLabel\",\n \"PlotLabels\",\n \"PlotLayout\",\n \"PlotLegends\",\n \"PlotMarkers\",\n \"PlotPoints\",\n \"PlotRange\",\n \"PlotRangeClipping\",\n \"PlotRangeClipPlanesStyle\",\n \"PlotRangePadding\",\n \"PlotRegion\",\n \"PlotStyle\",\n \"PlotTheme\",\n \"Pluralize\",\n \"Plus\",\n \"PlusMinus\",\n \"Pochhammer\",\n \"PodStates\",\n \"PodWidth\",\n \"Point\",\n \"Point3DBox\",\n \"Point3DBoxOptions\",\n \"PointBox\",\n \"PointBoxOptions\",\n \"PointFigureChart\",\n \"PointLegend\",\n \"PointSize\",\n \"PoissonConsulDistribution\",\n \"PoissonDistribution\",\n \"PoissonProcess\",\n \"PoissonWindow\",\n \"PolarAxes\",\n \"PolarAxesOrigin\",\n \"PolarGridLines\",\n \"PolarPlot\",\n \"PolarTicks\",\n \"PoleZeroMarkers\",\n \"PolyaAeppliDistribution\",\n \"PolyGamma\",\n \"Polygon\",\n \"Polygon3DBox\",\n \"Polygon3DBoxOptions\",\n \"PolygonalNumber\",\n \"PolygonAngle\",\n \"PolygonBox\",\n \"PolygonBoxOptions\",\n \"PolygonCoordinates\",\n \"PolygonDecomposition\",\n \"PolygonHoleScale\",\n \"PolygonIntersections\",\n \"PolygonScale\",\n \"Polyhedron\",\n \"PolyhedronAngle\",\n \"PolyhedronCoordinates\",\n \"PolyhedronData\",\n \"PolyhedronDecomposition\",\n \"PolyhedronGenus\",\n \"PolyLog\",\n \"PolynomialExtendedGCD\",\n \"PolynomialForm\",\n \"PolynomialGCD\",\n \"PolynomialLCM\",\n \"PolynomialMod\",\n \"PolynomialQ\",\n \"PolynomialQuotient\",\n \"PolynomialQuotientRemainder\",\n \"PolynomialReduce\",\n \"PolynomialRemainder\",\n \"Polynomials\",\n \"PoolingLayer\",\n \"PopupMenu\",\n \"PopupMenuBox\",\n \"PopupMenuBoxOptions\",\n \"PopupView\",\n \"PopupWindow\",\n \"Position\",\n \"PositionIndex\",\n \"Positive\",\n \"PositiveDefiniteMatrixQ\",\n \"PositiveIntegers\",\n \"PositiveRationals\",\n \"PositiveReals\",\n \"PositiveSemidefiniteMatrixQ\",\n \"PossibleZeroQ\",\n \"Postfix\",\n \"PostScript\",\n \"Power\",\n \"PowerDistribution\",\n \"PowerExpand\",\n \"PowerMod\",\n \"PowerModList\",\n \"PowerRange\",\n \"PowerSpectralDensity\",\n \"PowersRepresentations\",\n \"PowerSymmetricPolynomial\",\n \"Precedence\",\n \"PrecedenceForm\",\n \"Precedes\",\n \"PrecedesEqual\",\n \"PrecedesSlantEqual\",\n \"PrecedesTilde\",\n \"Precision\",\n \"PrecisionGoal\",\n \"PreDecrement\",\n \"Predict\",\n \"PredictionRoot\",\n \"PredictorFunction\",\n \"PredictorInformation\",\n \"PredictorMeasurements\",\n \"PredictorMeasurementsObject\",\n \"PreemptProtect\",\n \"PreferencesPath\",\n \"Prefix\",\n \"PreIncrement\",\n \"Prepend\",\n \"PrependLayer\",\n \"PrependTo\",\n \"PreprocessingRules\",\n \"PreserveColor\",\n \"PreserveImageOptions\",\n \"Previous\",\n \"PreviousCell\",\n \"PreviousDate\",\n \"PriceGraphDistribution\",\n \"PrimaryPlaceholder\",\n \"Prime\",\n \"PrimeNu\",\n \"PrimeOmega\",\n \"PrimePi\",\n \"PrimePowerQ\",\n \"PrimeQ\",\n \"Primes\",\n \"PrimeZetaP\",\n \"PrimitivePolynomialQ\",\n \"PrimitiveRoot\",\n \"PrimitiveRootList\",\n \"PrincipalComponents\",\n \"PrincipalValue\",\n \"Print\",\n \"PrintableASCIIQ\",\n \"PrintAction\",\n \"PrintForm\",\n \"PrintingCopies\",\n \"PrintingOptions\",\n \"PrintingPageRange\",\n \"PrintingStartingPageNumber\",\n \"PrintingStyleEnvironment\",\n \"Printout3D\",\n \"Printout3DPreviewer\",\n \"PrintPrecision\",\n \"PrintTemporary\",\n \"Prism\",\n \"PrismBox\",\n \"PrismBoxOptions\",\n \"PrivateCellOptions\",\n \"PrivateEvaluationOptions\",\n \"PrivateFontOptions\",\n \"PrivateFrontEndOptions\",\n \"PrivateKey\",\n \"PrivateNotebookOptions\",\n \"PrivatePaths\",\n \"Probability\",\n \"ProbabilityDistribution\",\n \"ProbabilityPlot\",\n \"ProbabilityPr\",\n \"ProbabilityScalePlot\",\n \"ProbitModelFit\",\n \"ProcessConnection\",\n \"ProcessDirectory\",\n \"ProcessEnvironment\",\n \"Processes\",\n \"ProcessEstimator\",\n \"ProcessInformation\",\n \"ProcessObject\",\n \"ProcessParameterAssumptions\",\n \"ProcessParameterQ\",\n \"ProcessStateDomain\",\n \"ProcessStatus\",\n \"ProcessTimeDomain\",\n \"Product\",\n \"ProductDistribution\",\n \"ProductLog\",\n \"ProgressIndicator\",\n \"ProgressIndicatorBox\",\n \"ProgressIndicatorBoxOptions\",\n \"Projection\",\n \"Prolog\",\n \"PromptForm\",\n \"ProofObject\",\n \"Properties\",\n \"Property\",\n \"PropertyList\",\n \"PropertyValue\",\n \"Proportion\",\n \"Proportional\",\n \"Protect\",\n \"Protected\",\n \"ProteinData\",\n \"Pruning\",\n \"PseudoInverse\",\n \"PsychrometricPropertyData\",\n \"PublicKey\",\n \"PublisherID\",\n \"PulsarData\",\n \"PunctuationCharacter\",\n \"Purple\",\n \"Put\",\n \"PutAppend\",\n \"Pyramid\",\n \"PyramidBox\",\n \"PyramidBoxOptions\",\n \"QBinomial\",\n \"QFactorial\",\n \"QGamma\",\n \"QHypergeometricPFQ\",\n \"QnDispersion\",\n \"QPochhammer\",\n \"QPolyGamma\",\n \"QRDecomposition\",\n \"QuadraticIrrationalQ\",\n \"QuadraticOptimization\",\n \"Quantile\",\n \"QuantilePlot\",\n \"Quantity\",\n \"QuantityArray\",\n \"QuantityDistribution\",\n \"QuantityForm\",\n \"QuantityMagnitude\",\n \"QuantityQ\",\n \"QuantityUnit\",\n \"QuantityVariable\",\n \"QuantityVariableCanonicalUnit\",\n \"QuantityVariableDimensions\",\n \"QuantityVariableIdentifier\",\n \"QuantityVariablePhysicalQuantity\",\n \"Quartics\",\n \"QuartileDeviation\",\n \"Quartiles\",\n \"QuartileSkewness\",\n \"Query\",\n \"QueueingNetworkProcess\",\n \"QueueingProcess\",\n \"QueueProperties\",\n \"Quiet\",\n \"Quit\",\n \"Quotient\",\n \"QuotientRemainder\",\n \"RadialGradientImage\",\n \"RadialityCentrality\",\n \"RadicalBox\",\n \"RadicalBoxOptions\",\n \"RadioButton\",\n \"RadioButtonBar\",\n \"RadioButtonBox\",\n \"RadioButtonBoxOptions\",\n \"Radon\",\n \"RadonTransform\",\n \"RamanujanTau\",\n \"RamanujanTauL\",\n \"RamanujanTauTheta\",\n \"RamanujanTauZ\",\n \"Ramp\",\n \"Random\",\n \"RandomChoice\",\n \"RandomColor\",\n \"RandomComplex\",\n \"RandomEntity\",\n \"RandomFunction\",\n \"RandomGeoPosition\",\n \"RandomGraph\",\n \"RandomImage\",\n \"RandomInstance\",\n \"RandomInteger\",\n \"RandomPermutation\",\n \"RandomPoint\",\n \"RandomPolygon\",\n \"RandomPolyhedron\",\n \"RandomPrime\",\n \"RandomReal\",\n \"RandomSample\",\n \"RandomSeed\",\n \"RandomSeeding\",\n \"RandomVariate\",\n \"RandomWalkProcess\",\n \"RandomWord\",\n \"Range\",\n \"RangeFilter\",\n \"RangeSpecification\",\n \"RankedMax\",\n \"RankedMin\",\n \"RarerProbability\",\n \"Raster\",\n \"Raster3D\",\n \"Raster3DBox\",\n \"Raster3DBoxOptions\",\n \"RasterArray\",\n \"RasterBox\",\n \"RasterBoxOptions\",\n \"Rasterize\",\n \"RasterSize\",\n \"Rational\",\n \"RationalFunctions\",\n \"Rationalize\",\n \"Rationals\",\n \"Ratios\",\n \"RawArray\",\n \"RawBoxes\",\n \"RawData\",\n \"RawMedium\",\n \"RayleighDistribution\",\n \"Re\",\n \"Read\",\n \"ReadByteArray\",\n \"ReadLine\",\n \"ReadList\",\n \"ReadProtected\",\n \"ReadString\",\n \"Real\",\n \"RealAbs\",\n \"RealBlockDiagonalForm\",\n \"RealDigits\",\n \"RealExponent\",\n \"Reals\",\n \"RealSign\",\n \"Reap\",\n \"RebuildPacletData\",\n \"RecognitionPrior\",\n \"RecognitionThreshold\",\n \"Record\",\n \"RecordLists\",\n \"RecordSeparators\",\n \"Rectangle\",\n \"RectangleBox\",\n \"RectangleBoxOptions\",\n \"RectangleChart\",\n \"RectangleChart3D\",\n \"RectangularRepeatingElement\",\n \"RecurrenceFilter\",\n \"RecurrenceTable\",\n \"RecurringDigitsForm\",\n \"Red\",\n \"Reduce\",\n \"RefBox\",\n \"ReferenceLineStyle\",\n \"ReferenceMarkers\",\n \"ReferenceMarkerStyle\",\n \"Refine\",\n \"ReflectionMatrix\",\n \"ReflectionTransform\",\n \"Refresh\",\n \"RefreshRate\",\n \"Region\",\n \"RegionBinarize\",\n \"RegionBoundary\",\n \"RegionBoundaryStyle\",\n \"RegionBounds\",\n \"RegionCentroid\",\n \"RegionDifference\",\n \"RegionDimension\",\n \"RegionDisjoint\",\n \"RegionDistance\",\n \"RegionDistanceFunction\",\n \"RegionEmbeddingDimension\",\n \"RegionEqual\",\n \"RegionFillingStyle\",\n \"RegionFunction\",\n \"RegionImage\",\n \"RegionIntersection\",\n \"RegionMeasure\",\n \"RegionMember\",\n \"RegionMemberFunction\",\n \"RegionMoment\",\n \"RegionNearest\",\n \"RegionNearestFunction\",\n \"RegionPlot\",\n \"RegionPlot3D\",\n \"RegionProduct\",\n \"RegionQ\",\n \"RegionResize\",\n \"RegionSize\",\n \"RegionSymmetricDifference\",\n \"RegionUnion\",\n \"RegionWithin\",\n \"RegisterExternalEvaluator\",\n \"RegularExpression\",\n \"Regularization\",\n \"RegularlySampledQ\",\n \"RegularPolygon\",\n \"ReIm\",\n \"ReImLabels\",\n \"ReImPlot\",\n \"ReImStyle\",\n \"Reinstall\",\n \"RelationalDatabase\",\n \"RelationGraph\",\n \"Release\",\n \"ReleaseHold\",\n \"ReliabilityDistribution\",\n \"ReliefImage\",\n \"ReliefPlot\",\n \"RemoteAuthorizationCaching\",\n \"RemoteConnect\",\n \"RemoteConnectionObject\",\n \"RemoteFile\",\n \"RemoteRun\",\n \"RemoteRunProcess\",\n \"Remove\",\n \"RemoveAlphaChannel\",\n \"RemoveAsynchronousTask\",\n \"RemoveAudioStream\",\n \"RemoveBackground\",\n \"RemoveChannelListener\",\n \"RemoveChannelSubscribers\",\n \"Removed\",\n \"RemoveDiacritics\",\n \"RemoveInputStreamMethod\",\n \"RemoveOutputStreamMethod\",\n \"RemoveProperty\",\n \"RemoveScheduledTask\",\n \"RemoveUsers\",\n \"RemoveVideoStream\",\n \"RenameDirectory\",\n \"RenameFile\",\n \"RenderAll\",\n \"RenderingOptions\",\n \"RenewalProcess\",\n \"RenkoChart\",\n \"RepairMesh\",\n \"Repeated\",\n \"RepeatedNull\",\n \"RepeatedString\",\n \"RepeatedTiming\",\n \"RepeatingElement\",\n \"Replace\",\n \"ReplaceAll\",\n \"ReplaceHeldPart\",\n \"ReplaceImageValue\",\n \"ReplaceList\",\n \"ReplacePart\",\n \"ReplacePixelValue\",\n \"ReplaceRepeated\",\n \"ReplicateLayer\",\n \"RequiredPhysicalQuantities\",\n \"Resampling\",\n \"ResamplingAlgorithmData\",\n \"ResamplingMethod\",\n \"Rescale\",\n \"RescalingTransform\",\n \"ResetDirectory\",\n \"ResetMenusPacket\",\n \"ResetScheduledTask\",\n \"ReshapeLayer\",\n \"Residue\",\n \"ResizeLayer\",\n \"Resolve\",\n \"ResourceAcquire\",\n \"ResourceData\",\n \"ResourceFunction\",\n \"ResourceObject\",\n \"ResourceRegister\",\n \"ResourceRemove\",\n \"ResourceSearch\",\n \"ResourceSubmissionObject\",\n \"ResourceSubmit\",\n \"ResourceSystemBase\",\n \"ResourceSystemPath\",\n \"ResourceUpdate\",\n \"ResourceVersion\",\n \"ResponseForm\",\n \"Rest\",\n \"RestartInterval\",\n \"Restricted\",\n \"Resultant\",\n \"ResumePacket\",\n \"Return\",\n \"ReturnEntersInput\",\n \"ReturnExpressionPacket\",\n \"ReturnInputFormPacket\",\n \"ReturnPacket\",\n \"ReturnReceiptFunction\",\n \"ReturnTextPacket\",\n \"Reverse\",\n \"ReverseApplied\",\n \"ReverseBiorthogonalSplineWavelet\",\n \"ReverseElement\",\n \"ReverseEquilibrium\",\n \"ReverseGraph\",\n \"ReverseSort\",\n \"ReverseSortBy\",\n \"ReverseUpEquilibrium\",\n \"RevolutionAxis\",\n \"RevolutionPlot3D\",\n \"RGBColor\",\n \"RiccatiSolve\",\n \"RiceDistribution\",\n \"RidgeFilter\",\n \"RiemannR\",\n \"RiemannSiegelTheta\",\n \"RiemannSiegelZ\",\n \"RiemannXi\",\n \"Riffle\",\n \"Right\",\n \"RightArrow\",\n \"RightArrowBar\",\n \"RightArrowLeftArrow\",\n \"RightComposition\",\n \"RightCosetRepresentative\",\n \"RightDownTeeVector\",\n \"RightDownVector\",\n \"RightDownVectorBar\",\n \"RightTee\",\n \"RightTeeArrow\",\n \"RightTeeVector\",\n \"RightTriangle\",\n \"RightTriangleBar\",\n \"RightTriangleEqual\",\n \"RightUpDownVector\",\n \"RightUpTeeVector\",\n \"RightUpVector\",\n \"RightUpVectorBar\",\n \"RightVector\",\n \"RightVectorBar\",\n \"RiskAchievementImportance\",\n \"RiskReductionImportance\",\n \"RogersTanimotoDissimilarity\",\n \"RollPitchYawAngles\",\n \"RollPitchYawMatrix\",\n \"RomanNumeral\",\n \"Root\",\n \"RootApproximant\",\n \"RootIntervals\",\n \"RootLocusPlot\",\n \"RootMeanSquare\",\n \"RootOfUnityQ\",\n \"RootReduce\",\n \"Roots\",\n \"RootSum\",\n \"Rotate\",\n \"RotateLabel\",\n \"RotateLeft\",\n \"RotateRight\",\n \"RotationAction\",\n \"RotationBox\",\n \"RotationBoxOptions\",\n \"RotationMatrix\",\n \"RotationTransform\",\n \"Round\",\n \"RoundImplies\",\n \"RoundingRadius\",\n \"Row\",\n \"RowAlignments\",\n \"RowBackgrounds\",\n \"RowBox\",\n \"RowHeights\",\n \"RowLines\",\n \"RowMinHeight\",\n \"RowReduce\",\n \"RowsEqual\",\n \"RowSpacings\",\n \"RSolve\",\n \"RSolveValue\",\n \"RudinShapiro\",\n \"RudvalisGroupRu\",\n \"Rule\",\n \"RuleCondition\",\n \"RuleDelayed\",\n \"RuleForm\",\n \"RulePlot\",\n \"RulerUnits\",\n \"Run\",\n \"RunProcess\",\n \"RunScheduledTask\",\n \"RunThrough\",\n \"RuntimeAttributes\",\n \"RuntimeOptions\",\n \"RussellRaoDissimilarity\",\n \"SameQ\",\n \"SameTest\",\n \"SameTestProperties\",\n \"SampledEntityClass\",\n \"SampleDepth\",\n \"SampledSoundFunction\",\n \"SampledSoundList\",\n \"SampleRate\",\n \"SamplingPeriod\",\n \"SARIMAProcess\",\n \"SARMAProcess\",\n \"SASTriangle\",\n \"SatelliteData\",\n \"SatisfiabilityCount\",\n \"SatisfiabilityInstances\",\n \"SatisfiableQ\",\n \"Saturday\",\n \"Save\",\n \"Saveable\",\n \"SaveAutoDelete\",\n \"SaveConnection\",\n \"SaveDefinitions\",\n \"SavitzkyGolayMatrix\",\n \"SawtoothWave\",\n \"Scale\",\n \"Scaled\",\n \"ScaleDivisions\",\n \"ScaledMousePosition\",\n \"ScaleOrigin\",\n \"ScalePadding\",\n \"ScaleRanges\",\n \"ScaleRangeStyle\",\n \"ScalingFunctions\",\n \"ScalingMatrix\",\n \"ScalingTransform\",\n \"Scan\",\n \"ScheduledTask\",\n \"ScheduledTaskActiveQ\",\n \"ScheduledTaskInformation\",\n \"ScheduledTaskInformationData\",\n \"ScheduledTaskObject\",\n \"ScheduledTasks\",\n \"SchurDecomposition\",\n \"ScientificForm\",\n \"ScientificNotationThreshold\",\n \"ScorerGi\",\n \"ScorerGiPrime\",\n \"ScorerHi\",\n \"ScorerHiPrime\",\n \"ScreenRectangle\",\n \"ScreenStyleEnvironment\",\n \"ScriptBaselineShifts\",\n \"ScriptForm\",\n \"ScriptLevel\",\n \"ScriptMinSize\",\n \"ScriptRules\",\n \"ScriptSizeMultipliers\",\n \"Scrollbars\",\n \"ScrollingOptions\",\n \"ScrollPosition\",\n \"SearchAdjustment\",\n \"SearchIndexObject\",\n \"SearchIndices\",\n \"SearchQueryString\",\n \"SearchResultObject\",\n \"Sec\",\n \"Sech\",\n \"SechDistribution\",\n \"SecondOrderConeOptimization\",\n \"SectionGrouping\",\n \"SectorChart\",\n \"SectorChart3D\",\n \"SectorOrigin\",\n \"SectorSpacing\",\n \"SecuredAuthenticationKey\",\n \"SecuredAuthenticationKeys\",\n \"SeedRandom\",\n \"Select\",\n \"Selectable\",\n \"SelectComponents\",\n \"SelectedCells\",\n \"SelectedNotebook\",\n \"SelectFirst\",\n \"Selection\",\n \"SelectionAnimate\",\n \"SelectionCell\",\n \"SelectionCellCreateCell\",\n \"SelectionCellDefaultStyle\",\n \"SelectionCellParentStyle\",\n \"SelectionCreateCell\",\n \"SelectionDebuggerTag\",\n \"SelectionDuplicateCell\",\n \"SelectionEvaluate\",\n \"SelectionEvaluateCreateCell\",\n \"SelectionMove\",\n \"SelectionPlaceholder\",\n \"SelectionSetStyle\",\n \"SelectWithContents\",\n \"SelfLoops\",\n \"SelfLoopStyle\",\n \"SemanticImport\",\n \"SemanticImportString\",\n \"SemanticInterpretation\",\n \"SemialgebraicComponentInstances\",\n \"SemidefiniteOptimization\",\n \"SendMail\",\n \"SendMessage\",\n \"Sequence\",\n \"SequenceAlignment\",\n \"SequenceAttentionLayer\",\n \"SequenceCases\",\n \"SequenceCount\",\n \"SequenceFold\",\n \"SequenceFoldList\",\n \"SequenceForm\",\n \"SequenceHold\",\n \"SequenceLastLayer\",\n \"SequenceMostLayer\",\n \"SequencePosition\",\n \"SequencePredict\",\n \"SequencePredictorFunction\",\n \"SequenceReplace\",\n \"SequenceRestLayer\",\n \"SequenceReverseLayer\",\n \"SequenceSplit\",\n \"Series\",\n \"SeriesCoefficient\",\n \"SeriesData\",\n \"SeriesTermGoal\",\n \"ServiceConnect\",\n \"ServiceDisconnect\",\n \"ServiceExecute\",\n \"ServiceObject\",\n \"ServiceRequest\",\n \"ServiceResponse\",\n \"ServiceSubmit\",\n \"SessionSubmit\",\n \"SessionTime\",\n \"Set\",\n \"SetAccuracy\",\n \"SetAlphaChannel\",\n \"SetAttributes\",\n \"Setbacks\",\n \"SetBoxFormNamesPacket\",\n \"SetCloudDirectory\",\n \"SetCookies\",\n \"SetDelayed\",\n \"SetDirectory\",\n \"SetEnvironment\",\n \"SetEvaluationNotebook\",\n \"SetFileDate\",\n \"SetFileLoadingContext\",\n \"SetNotebookStatusLine\",\n \"SetOptions\",\n \"SetOptionsPacket\",\n \"SetPermissions\",\n \"SetPrecision\",\n \"SetProperty\",\n \"SetSecuredAuthenticationKey\",\n \"SetSelectedNotebook\",\n \"SetSharedFunction\",\n \"SetSharedVariable\",\n \"SetSpeechParametersPacket\",\n \"SetStreamPosition\",\n \"SetSystemModel\",\n \"SetSystemOptions\",\n \"Setter\",\n \"SetterBar\",\n \"SetterBox\",\n \"SetterBoxOptions\",\n \"Setting\",\n \"SetUsers\",\n \"SetValue\",\n \"Shading\",\n \"Shallow\",\n \"ShannonWavelet\",\n \"ShapiroWilkTest\",\n \"Share\",\n \"SharingList\",\n \"Sharpen\",\n \"ShearingMatrix\",\n \"ShearingTransform\",\n \"ShellRegion\",\n \"ShenCastanMatrix\",\n \"ShiftedGompertzDistribution\",\n \"ShiftRegisterSequence\",\n \"Short\",\n \"ShortDownArrow\",\n \"Shortest\",\n \"ShortestMatch\",\n \"ShortestPathFunction\",\n \"ShortLeftArrow\",\n \"ShortRightArrow\",\n \"ShortTimeFourier\",\n \"ShortTimeFourierData\",\n \"ShortUpArrow\",\n \"Show\",\n \"ShowAutoConvert\",\n \"ShowAutoSpellCheck\",\n \"ShowAutoStyles\",\n \"ShowCellBracket\",\n \"ShowCellLabel\",\n \"ShowCellTags\",\n \"ShowClosedCellArea\",\n \"ShowCodeAssist\",\n \"ShowContents\",\n \"ShowControls\",\n \"ShowCursorTracker\",\n \"ShowGroupOpenCloseIcon\",\n \"ShowGroupOpener\",\n \"ShowInvisibleCharacters\",\n \"ShowPageBreaks\",\n \"ShowPredictiveInterface\",\n \"ShowSelection\",\n \"ShowShortBoxForm\",\n \"ShowSpecialCharacters\",\n \"ShowStringCharacters\",\n \"ShowSyntaxStyles\",\n \"ShrinkingDelay\",\n \"ShrinkWrapBoundingBox\",\n \"SiderealTime\",\n \"SiegelTheta\",\n \"SiegelTukeyTest\",\n \"SierpinskiCurve\",\n \"SierpinskiMesh\",\n \"Sign\",\n \"Signature\",\n \"SignedRankTest\",\n \"SignedRegionDistance\",\n \"SignificanceLevel\",\n \"SignPadding\",\n \"SignTest\",\n \"SimilarityRules\",\n \"SimpleGraph\",\n \"SimpleGraphQ\",\n \"SimplePolygonQ\",\n \"SimplePolyhedronQ\",\n \"Simplex\",\n \"Simplify\",\n \"Sin\",\n \"Sinc\",\n \"SinghMaddalaDistribution\",\n \"SingleEvaluation\",\n \"SingleLetterItalics\",\n \"SingleLetterStyle\",\n \"SingularValueDecomposition\",\n \"SingularValueList\",\n \"SingularValuePlot\",\n \"SingularValues\",\n \"Sinh\",\n \"SinhIntegral\",\n \"SinIntegral\",\n \"SixJSymbol\",\n \"Skeleton\",\n \"SkeletonTransform\",\n \"SkellamDistribution\",\n \"Skewness\",\n \"SkewNormalDistribution\",\n \"SkinStyle\",\n \"Skip\",\n \"SliceContourPlot3D\",\n \"SliceDensityPlot3D\",\n \"SliceDistribution\",\n \"SliceVectorPlot3D\",\n \"Slider\",\n \"Slider2D\",\n \"Slider2DBox\",\n \"Slider2DBoxOptions\",\n \"SliderBox\",\n \"SliderBoxOptions\",\n \"SlideView\",\n \"Slot\",\n \"SlotSequence\",\n \"Small\",\n \"SmallCircle\",\n \"Smaller\",\n \"SmithDecomposition\",\n \"SmithDelayCompensator\",\n \"SmithWatermanSimilarity\",\n \"SmoothDensityHistogram\",\n \"SmoothHistogram\",\n \"SmoothHistogram3D\",\n \"SmoothKernelDistribution\",\n \"SnDispersion\",\n \"Snippet\",\n \"SnubPolyhedron\",\n \"SocialMediaData\",\n \"Socket\",\n \"SocketConnect\",\n \"SocketListen\",\n \"SocketListener\",\n \"SocketObject\",\n \"SocketOpen\",\n \"SocketReadMessage\",\n \"SocketReadyQ\",\n \"Sockets\",\n \"SocketWaitAll\",\n \"SocketWaitNext\",\n \"SoftmaxLayer\",\n \"SokalSneathDissimilarity\",\n \"SolarEclipse\",\n \"SolarSystemFeatureData\",\n \"SolidAngle\",\n \"SolidData\",\n \"SolidRegionQ\",\n \"Solve\",\n \"SolveAlways\",\n \"SolveDelayed\",\n \"Sort\",\n \"SortBy\",\n \"SortedBy\",\n \"SortedEntityClass\",\n \"Sound\",\n \"SoundAndGraphics\",\n \"SoundNote\",\n \"SoundVolume\",\n \"SourceLink\",\n \"Sow\",\n \"Space\",\n \"SpaceCurveData\",\n \"SpaceForm\",\n \"Spacer\",\n \"Spacings\",\n \"Span\",\n \"SpanAdjustments\",\n \"SpanCharacterRounding\",\n \"SpanFromAbove\",\n \"SpanFromBoth\",\n \"SpanFromLeft\",\n \"SpanLineThickness\",\n \"SpanMaxSize\",\n \"SpanMinSize\",\n \"SpanningCharacters\",\n \"SpanSymmetric\",\n \"SparseArray\",\n \"SpatialGraphDistribution\",\n \"SpatialMedian\",\n \"SpatialTransformationLayer\",\n \"Speak\",\n \"SpeakerMatchQ\",\n \"SpeakTextPacket\",\n \"SpearmanRankTest\",\n \"SpearmanRho\",\n \"SpeciesData\",\n \"SpecificityGoal\",\n \"SpectralLineData\",\n \"Spectrogram\",\n \"SpectrogramArray\",\n \"Specularity\",\n \"SpeechCases\",\n \"SpeechInterpreter\",\n \"SpeechRecognize\",\n \"SpeechSynthesize\",\n \"SpellingCorrection\",\n \"SpellingCorrectionList\",\n \"SpellingDictionaries\",\n \"SpellingDictionariesPath\",\n \"SpellingOptions\",\n \"SpellingSuggestionsPacket\",\n \"Sphere\",\n \"SphereBox\",\n \"SpherePoints\",\n \"SphericalBesselJ\",\n \"SphericalBesselY\",\n \"SphericalHankelH1\",\n \"SphericalHankelH2\",\n \"SphericalHarmonicY\",\n \"SphericalPlot3D\",\n \"SphericalRegion\",\n \"SphericalShell\",\n \"SpheroidalEigenvalue\",\n \"SpheroidalJoiningFactor\",\n \"SpheroidalPS\",\n \"SpheroidalPSPrime\",\n \"SpheroidalQS\",\n \"SpheroidalQSPrime\",\n \"SpheroidalRadialFactor\",\n \"SpheroidalS1\",\n \"SpheroidalS1Prime\",\n \"SpheroidalS2\",\n \"SpheroidalS2Prime\",\n \"Splice\",\n \"SplicedDistribution\",\n \"SplineClosed\",\n \"SplineDegree\",\n \"SplineKnots\",\n \"SplineWeights\",\n \"Split\",\n \"SplitBy\",\n \"SpokenString\",\n \"Sqrt\",\n \"SqrtBox\",\n \"SqrtBoxOptions\",\n \"Square\",\n \"SquaredEuclideanDistance\",\n \"SquareFreeQ\",\n \"SquareIntersection\",\n \"SquareMatrixQ\",\n \"SquareRepeatingElement\",\n \"SquaresR\",\n \"SquareSubset\",\n \"SquareSubsetEqual\",\n \"SquareSuperset\",\n \"SquareSupersetEqual\",\n \"SquareUnion\",\n \"SquareWave\",\n \"SSSTriangle\",\n \"StabilityMargins\",\n \"StabilityMarginsStyle\",\n \"StableDistribution\",\n \"Stack\",\n \"StackBegin\",\n \"StackComplete\",\n \"StackedDateListPlot\",\n \"StackedListPlot\",\n \"StackInhibit\",\n \"StadiumShape\",\n \"StandardAtmosphereData\",\n \"StandardDeviation\",\n \"StandardDeviationFilter\",\n \"StandardForm\",\n \"Standardize\",\n \"Standardized\",\n \"StandardOceanData\",\n \"StandbyDistribution\",\n \"Star\",\n \"StarClusterData\",\n \"StarData\",\n \"StarGraph\",\n \"StartAsynchronousTask\",\n \"StartExternalSession\",\n \"StartingStepSize\",\n \"StartOfLine\",\n \"StartOfString\",\n \"StartProcess\",\n \"StartScheduledTask\",\n \"StartupSound\",\n \"StartWebSession\",\n \"StateDimensions\",\n \"StateFeedbackGains\",\n \"StateOutputEstimator\",\n \"StateResponse\",\n \"StateSpaceModel\",\n \"StateSpaceRealization\",\n \"StateSpaceTransform\",\n \"StateTransformationLinearize\",\n \"StationaryDistribution\",\n \"StationaryWaveletPacketTransform\",\n \"StationaryWaveletTransform\",\n \"StatusArea\",\n \"StatusCentrality\",\n \"StepMonitor\",\n \"StereochemistryElements\",\n \"StieltjesGamma\",\n \"StippleShading\",\n \"StirlingS1\",\n \"StirlingS2\",\n \"StopAsynchronousTask\",\n \"StoppingPowerData\",\n \"StopScheduledTask\",\n \"StrataVariables\",\n \"StratonovichProcess\",\n \"StreamColorFunction\",\n \"StreamColorFunctionScaling\",\n \"StreamDensityPlot\",\n \"StreamMarkers\",\n \"StreamPlot\",\n \"StreamPoints\",\n \"StreamPosition\",\n \"Streams\",\n \"StreamScale\",\n \"StreamStyle\",\n \"String\",\n \"StringBreak\",\n \"StringByteCount\",\n \"StringCases\",\n \"StringContainsQ\",\n \"StringCount\",\n \"StringDelete\",\n \"StringDrop\",\n \"StringEndsQ\",\n \"StringExpression\",\n \"StringExtract\",\n \"StringForm\",\n \"StringFormat\",\n \"StringFreeQ\",\n \"StringInsert\",\n \"StringJoin\",\n \"StringLength\",\n \"StringMatchQ\",\n \"StringPadLeft\",\n \"StringPadRight\",\n \"StringPart\",\n \"StringPartition\",\n \"StringPosition\",\n \"StringQ\",\n \"StringRepeat\",\n \"StringReplace\",\n \"StringReplaceList\",\n \"StringReplacePart\",\n \"StringReverse\",\n \"StringRiffle\",\n \"StringRotateLeft\",\n \"StringRotateRight\",\n \"StringSkeleton\",\n \"StringSplit\",\n \"StringStartsQ\",\n \"StringTake\",\n \"StringTemplate\",\n \"StringToByteArray\",\n \"StringToStream\",\n \"StringTrim\",\n \"StripBoxes\",\n \"StripOnInput\",\n \"StripWrapperBoxes\",\n \"StrokeForm\",\n \"StructuralImportance\",\n \"StructuredArray\",\n \"StructuredArrayHeadQ\",\n \"StructuredSelection\",\n \"StruveH\",\n \"StruveL\",\n \"Stub\",\n \"StudentTDistribution\",\n \"Style\",\n \"StyleBox\",\n \"StyleBoxAutoDelete\",\n \"StyleData\",\n \"StyleDefinitions\",\n \"StyleForm\",\n \"StyleHints\",\n \"StyleKeyMapping\",\n \"StyleMenuListing\",\n \"StyleNameDialogSettings\",\n \"StyleNames\",\n \"StylePrint\",\n \"StyleSheetPath\",\n \"Subdivide\",\n \"Subfactorial\",\n \"Subgraph\",\n \"SubMinus\",\n \"SubPlus\",\n \"SubresultantPolynomialRemainders\",\n \"SubresultantPolynomials\",\n \"Subresultants\",\n \"Subscript\",\n \"SubscriptBox\",\n \"SubscriptBoxOptions\",\n \"Subscripted\",\n \"Subsequences\",\n \"Subset\",\n \"SubsetCases\",\n \"SubsetCount\",\n \"SubsetEqual\",\n \"SubsetMap\",\n \"SubsetPosition\",\n \"SubsetQ\",\n \"SubsetReplace\",\n \"Subsets\",\n \"SubStar\",\n \"SubstitutionSystem\",\n \"Subsuperscript\",\n \"SubsuperscriptBox\",\n \"SubsuperscriptBoxOptions\",\n \"SubtitleEncoding\",\n \"SubtitleTracks\",\n \"Subtract\",\n \"SubtractFrom\",\n \"SubtractSides\",\n \"SubValues\",\n \"Succeeds\",\n \"SucceedsEqual\",\n \"SucceedsSlantEqual\",\n \"SucceedsTilde\",\n \"Success\",\n \"SuchThat\",\n \"Sum\",\n \"SumConvergence\",\n \"SummationLayer\",\n \"Sunday\",\n \"SunPosition\",\n \"Sunrise\",\n \"Sunset\",\n \"SuperDagger\",\n \"SuperMinus\",\n \"SupernovaData\",\n \"SuperPlus\",\n \"Superscript\",\n \"SuperscriptBox\",\n \"SuperscriptBoxOptions\",\n \"Superset\",\n \"SupersetEqual\",\n \"SuperStar\",\n \"Surd\",\n \"SurdForm\",\n \"SurfaceAppearance\",\n \"SurfaceArea\",\n \"SurfaceColor\",\n \"SurfaceData\",\n \"SurfaceGraphics\",\n \"SurvivalDistribution\",\n \"SurvivalFunction\",\n \"SurvivalModel\",\n \"SurvivalModelFit\",\n \"SuspendPacket\",\n \"SuzukiDistribution\",\n \"SuzukiGroupSuz\",\n \"SwatchLegend\",\n \"Switch\",\n \"Symbol\",\n \"SymbolName\",\n \"SymletWavelet\",\n \"Symmetric\",\n \"SymmetricGroup\",\n \"SymmetricKey\",\n \"SymmetricMatrixQ\",\n \"SymmetricPolynomial\",\n \"SymmetricReduction\",\n \"Symmetrize\",\n \"SymmetrizedArray\",\n \"SymmetrizedArrayRules\",\n \"SymmetrizedDependentComponents\",\n \"SymmetrizedIndependentComponents\",\n \"SymmetrizedReplacePart\",\n \"SynchronousInitialization\",\n \"SynchronousUpdating\",\n \"Synonyms\",\n \"Syntax\",\n \"SyntaxForm\",\n \"SyntaxInformation\",\n \"SyntaxLength\",\n \"SyntaxPacket\",\n \"SyntaxQ\",\n \"SynthesizeMissingValues\",\n \"SystemCredential\",\n \"SystemCredentialData\",\n \"SystemCredentialKey\",\n \"SystemCredentialKeys\",\n \"SystemCredentialStoreObject\",\n \"SystemDialogInput\",\n \"SystemException\",\n \"SystemGet\",\n \"SystemHelpPath\",\n \"SystemInformation\",\n \"SystemInformationData\",\n \"SystemInstall\",\n \"SystemModel\",\n \"SystemModeler\",\n \"SystemModelExamples\",\n \"SystemModelLinearize\",\n \"SystemModelParametricSimulate\",\n \"SystemModelPlot\",\n \"SystemModelProgressReporting\",\n \"SystemModelReliability\",\n \"SystemModels\",\n \"SystemModelSimulate\",\n \"SystemModelSimulateSensitivity\",\n \"SystemModelSimulationData\",\n \"SystemOpen\",\n \"SystemOptions\",\n \"SystemProcessData\",\n \"SystemProcesses\",\n \"SystemsConnectionsModel\",\n \"SystemsModelDelay\",\n \"SystemsModelDelayApproximate\",\n \"SystemsModelDelete\",\n \"SystemsModelDimensions\",\n \"SystemsModelExtract\",\n \"SystemsModelFeedbackConnect\",\n \"SystemsModelLabels\",\n \"SystemsModelLinearity\",\n \"SystemsModelMerge\",\n \"SystemsModelOrder\",\n \"SystemsModelParallelConnect\",\n \"SystemsModelSeriesConnect\",\n \"SystemsModelStateFeedbackConnect\",\n \"SystemsModelVectorRelativeOrders\",\n \"SystemStub\",\n \"SystemTest\",\n \"Tab\",\n \"TabFilling\",\n \"Table\",\n \"TableAlignments\",\n \"TableDepth\",\n \"TableDirections\",\n \"TableForm\",\n \"TableHeadings\",\n \"TableSpacing\",\n \"TableView\",\n \"TableViewBox\",\n \"TableViewBoxBackground\",\n \"TableViewBoxItemSize\",\n \"TableViewBoxOptions\",\n \"TabSpacings\",\n \"TabView\",\n \"TabViewBox\",\n \"TabViewBoxOptions\",\n \"TagBox\",\n \"TagBoxNote\",\n \"TagBoxOptions\",\n \"TaggingRules\",\n \"TagSet\",\n \"TagSetDelayed\",\n \"TagStyle\",\n \"TagUnset\",\n \"Take\",\n \"TakeDrop\",\n \"TakeLargest\",\n \"TakeLargestBy\",\n \"TakeList\",\n \"TakeSmallest\",\n \"TakeSmallestBy\",\n \"TakeWhile\",\n \"Tally\",\n \"Tan\",\n \"Tanh\",\n \"TargetDevice\",\n \"TargetFunctions\",\n \"TargetSystem\",\n \"TargetUnits\",\n \"TaskAbort\",\n \"TaskExecute\",\n \"TaskObject\",\n \"TaskRemove\",\n \"TaskResume\",\n \"Tasks\",\n \"TaskSuspend\",\n \"TaskWait\",\n \"TautologyQ\",\n \"TelegraphProcess\",\n \"TemplateApply\",\n \"TemplateArgBox\",\n \"TemplateBox\",\n \"TemplateBoxOptions\",\n \"TemplateEvaluate\",\n \"TemplateExpression\",\n \"TemplateIf\",\n \"TemplateObject\",\n \"TemplateSequence\",\n \"TemplateSlot\",\n \"TemplateSlotSequence\",\n \"TemplateUnevaluated\",\n \"TemplateVerbatim\",\n \"TemplateWith\",\n \"TemporalData\",\n \"TemporalRegularity\",\n \"Temporary\",\n \"TemporaryVariable\",\n \"TensorContract\",\n \"TensorDimensions\",\n \"TensorExpand\",\n \"TensorProduct\",\n \"TensorQ\",\n \"TensorRank\",\n \"TensorReduce\",\n \"TensorSymmetry\",\n \"TensorTranspose\",\n \"TensorWedge\",\n \"TestID\",\n \"TestReport\",\n \"TestReportObject\",\n \"TestResultObject\",\n \"Tetrahedron\",\n \"TetrahedronBox\",\n \"TetrahedronBoxOptions\",\n \"TeXForm\",\n \"TeXSave\",\n \"Text\",\n \"Text3DBox\",\n \"Text3DBoxOptions\",\n \"TextAlignment\",\n \"TextBand\",\n \"TextBoundingBox\",\n \"TextBox\",\n \"TextCases\",\n \"TextCell\",\n \"TextClipboardType\",\n \"TextContents\",\n \"TextData\",\n \"TextElement\",\n \"TextForm\",\n \"TextGrid\",\n \"TextJustification\",\n \"TextLine\",\n \"TextPacket\",\n \"TextParagraph\",\n \"TextPosition\",\n \"TextRecognize\",\n \"TextSearch\",\n \"TextSearchReport\",\n \"TextSentences\",\n \"TextString\",\n \"TextStructure\",\n \"TextStyle\",\n \"TextTranslation\",\n \"Texture\",\n \"TextureCoordinateFunction\",\n \"TextureCoordinateScaling\",\n \"TextWords\",\n \"Therefore\",\n \"ThermodynamicData\",\n \"ThermometerGauge\",\n \"Thick\",\n \"Thickness\",\n \"Thin\",\n \"Thinning\",\n \"ThisLink\",\n \"ThompsonGroupTh\",\n \"Thread\",\n \"ThreadingLayer\",\n \"ThreeJSymbol\",\n \"Threshold\",\n \"Through\",\n \"Throw\",\n \"ThueMorse\",\n \"Thumbnail\",\n \"Thursday\",\n \"Ticks\",\n \"TicksStyle\",\n \"TideData\",\n \"Tilde\",\n \"TildeEqual\",\n \"TildeFullEqual\",\n \"TildeTilde\",\n \"TimeConstrained\",\n \"TimeConstraint\",\n \"TimeDirection\",\n \"TimeFormat\",\n \"TimeGoal\",\n \"TimelinePlot\",\n \"TimeObject\",\n \"TimeObjectQ\",\n \"TimeRemaining\",\n \"Times\",\n \"TimesBy\",\n \"TimeSeries\",\n \"TimeSeriesAggregate\",\n \"TimeSeriesForecast\",\n \"TimeSeriesInsert\",\n \"TimeSeriesInvertibility\",\n \"TimeSeriesMap\",\n \"TimeSeriesMapThread\",\n \"TimeSeriesModel\",\n \"TimeSeriesModelFit\",\n \"TimeSeriesResample\",\n \"TimeSeriesRescale\",\n \"TimeSeriesShift\",\n \"TimeSeriesThread\",\n \"TimeSeriesWindow\",\n \"TimeUsed\",\n \"TimeValue\",\n \"TimeWarpingCorrespondence\",\n \"TimeWarpingDistance\",\n \"TimeZone\",\n \"TimeZoneConvert\",\n \"TimeZoneOffset\",\n \"Timing\",\n \"Tiny\",\n \"TitleGrouping\",\n \"TitsGroupT\",\n \"ToBoxes\",\n \"ToCharacterCode\",\n \"ToColor\",\n \"ToContinuousTimeModel\",\n \"ToDate\",\n \"Today\",\n \"ToDiscreteTimeModel\",\n \"ToEntity\",\n \"ToeplitzMatrix\",\n \"ToExpression\",\n \"ToFileName\",\n \"Together\",\n \"Toggle\",\n \"ToggleFalse\",\n \"Toggler\",\n \"TogglerBar\",\n \"TogglerBox\",\n \"TogglerBoxOptions\",\n \"ToHeldExpression\",\n \"ToInvertibleTimeSeries\",\n \"TokenWords\",\n \"Tolerance\",\n \"ToLowerCase\",\n \"Tomorrow\",\n \"ToNumberField\",\n \"TooBig\",\n \"Tooltip\",\n \"TooltipBox\",\n \"TooltipBoxOptions\",\n \"TooltipDelay\",\n \"TooltipStyle\",\n \"ToonShading\",\n \"Top\",\n \"TopHatTransform\",\n \"ToPolarCoordinates\",\n \"TopologicalSort\",\n \"ToRadicals\",\n \"ToRules\",\n \"ToSphericalCoordinates\",\n \"ToString\",\n \"Total\",\n \"TotalHeight\",\n \"TotalLayer\",\n \"TotalVariationFilter\",\n \"TotalWidth\",\n \"TouchPosition\",\n \"TouchscreenAutoZoom\",\n \"TouchscreenControlPlacement\",\n \"ToUpperCase\",\n \"Tr\",\n \"Trace\",\n \"TraceAbove\",\n \"TraceAction\",\n \"TraceBackward\",\n \"TraceDepth\",\n \"TraceDialog\",\n \"TraceForward\",\n \"TraceInternal\",\n \"TraceLevel\",\n \"TraceOff\",\n \"TraceOn\",\n \"TraceOriginal\",\n \"TracePrint\",\n \"TraceScan\",\n \"TrackedSymbols\",\n \"TrackingFunction\",\n \"TracyWidomDistribution\",\n \"TradingChart\",\n \"TraditionalForm\",\n \"TraditionalFunctionNotation\",\n \"TraditionalNotation\",\n \"TraditionalOrder\",\n \"TrainingProgressCheckpointing\",\n \"TrainingProgressFunction\",\n \"TrainingProgressMeasurements\",\n \"TrainingProgressReporting\",\n \"TrainingStoppingCriterion\",\n \"TrainingUpdateSchedule\",\n \"TransferFunctionCancel\",\n \"TransferFunctionExpand\",\n \"TransferFunctionFactor\",\n \"TransferFunctionModel\",\n \"TransferFunctionPoles\",\n \"TransferFunctionTransform\",\n \"TransferFunctionZeros\",\n \"TransformationClass\",\n \"TransformationFunction\",\n \"TransformationFunctions\",\n \"TransformationMatrix\",\n \"TransformedDistribution\",\n \"TransformedField\",\n \"TransformedProcess\",\n \"TransformedRegion\",\n \"TransitionDirection\",\n \"TransitionDuration\",\n \"TransitionEffect\",\n \"TransitiveClosureGraph\",\n \"TransitiveReductionGraph\",\n \"Translate\",\n \"TranslationOptions\",\n \"TranslationTransform\",\n \"Transliterate\",\n \"Transparent\",\n \"TransparentColor\",\n \"Transpose\",\n \"TransposeLayer\",\n \"TrapSelection\",\n \"TravelDirections\",\n \"TravelDirectionsData\",\n \"TravelDistance\",\n \"TravelDistanceList\",\n \"TravelMethod\",\n \"TravelTime\",\n \"TreeForm\",\n \"TreeGraph\",\n \"TreeGraphQ\",\n \"TreePlot\",\n \"TrendStyle\",\n \"Triangle\",\n \"TriangleCenter\",\n \"TriangleConstruct\",\n \"TriangleMeasurement\",\n \"TriangleWave\",\n \"TriangularDistribution\",\n \"TriangulateMesh\",\n \"Trig\",\n \"TrigExpand\",\n \"TrigFactor\",\n \"TrigFactorList\",\n \"Trigger\",\n \"TrigReduce\",\n \"TrigToExp\",\n \"TrimmedMean\",\n \"TrimmedVariance\",\n \"TropicalStormData\",\n \"True\",\n \"TrueQ\",\n \"TruncatedDistribution\",\n \"TruncatedPolyhedron\",\n \"TsallisQExponentialDistribution\",\n \"TsallisQGaussianDistribution\",\n \"TTest\",\n \"Tube\",\n \"TubeBezierCurveBox\",\n \"TubeBezierCurveBoxOptions\",\n \"TubeBox\",\n \"TubeBoxOptions\",\n \"TubeBSplineCurveBox\",\n \"TubeBSplineCurveBoxOptions\",\n \"Tuesday\",\n \"TukeyLambdaDistribution\",\n \"TukeyWindow\",\n \"TunnelData\",\n \"Tuples\",\n \"TuranGraph\",\n \"TuringMachine\",\n \"TuttePolynomial\",\n \"TwoWayRule\",\n \"Typed\",\n \"TypeSpecifier\",\n \"UnateQ\",\n \"Uncompress\",\n \"UnconstrainedParameters\",\n \"Undefined\",\n \"UnderBar\",\n \"Underflow\",\n \"Underlined\",\n \"Underoverscript\",\n \"UnderoverscriptBox\",\n \"UnderoverscriptBoxOptions\",\n \"Underscript\",\n \"UnderscriptBox\",\n \"UnderscriptBoxOptions\",\n \"UnderseaFeatureData\",\n \"UndirectedEdge\",\n \"UndirectedGraph\",\n \"UndirectedGraphQ\",\n \"UndoOptions\",\n \"UndoTrackedVariables\",\n \"Unequal\",\n \"UnequalTo\",\n \"Unevaluated\",\n \"UniformDistribution\",\n \"UniformGraphDistribution\",\n \"UniformPolyhedron\",\n \"UniformSumDistribution\",\n \"Uninstall\",\n \"Union\",\n \"UnionedEntityClass\",\n \"UnionPlus\",\n \"Unique\",\n \"UnitaryMatrixQ\",\n \"UnitBox\",\n \"UnitConvert\",\n \"UnitDimensions\",\n \"Unitize\",\n \"UnitRootTest\",\n \"UnitSimplify\",\n \"UnitStep\",\n \"UnitSystem\",\n \"UnitTriangle\",\n \"UnitVector\",\n \"UnitVectorLayer\",\n \"UnityDimensions\",\n \"UniverseModelData\",\n \"UniversityData\",\n \"UnixTime\",\n \"Unprotect\",\n \"UnregisterExternalEvaluator\",\n \"UnsameQ\",\n \"UnsavedVariables\",\n \"Unset\",\n \"UnsetShared\",\n \"UntrackedVariables\",\n \"Up\",\n \"UpArrow\",\n \"UpArrowBar\",\n \"UpArrowDownArrow\",\n \"Update\",\n \"UpdateDynamicObjects\",\n \"UpdateDynamicObjectsSynchronous\",\n \"UpdateInterval\",\n \"UpdatePacletSites\",\n \"UpdateSearchIndex\",\n \"UpDownArrow\",\n \"UpEquilibrium\",\n \"UpperCaseQ\",\n \"UpperLeftArrow\",\n \"UpperRightArrow\",\n \"UpperTriangularize\",\n \"UpperTriangularMatrixQ\",\n \"Upsample\",\n \"UpSet\",\n \"UpSetDelayed\",\n \"UpTee\",\n \"UpTeeArrow\",\n \"UpTo\",\n \"UpValues\",\n \"URL\",\n \"URLBuild\",\n \"URLDecode\",\n \"URLDispatcher\",\n \"URLDownload\",\n \"URLDownloadSubmit\",\n \"URLEncode\",\n \"URLExecute\",\n \"URLExpand\",\n \"URLFetch\",\n \"URLFetchAsynchronous\",\n \"URLParse\",\n \"URLQueryDecode\",\n \"URLQueryEncode\",\n \"URLRead\",\n \"URLResponseTime\",\n \"URLSave\",\n \"URLSaveAsynchronous\",\n \"URLShorten\",\n \"URLSubmit\",\n \"UseGraphicsRange\",\n \"UserDefinedWavelet\",\n \"Using\",\n \"UsingFrontEnd\",\n \"UtilityFunction\",\n \"V2Get\",\n \"ValenceErrorHandling\",\n \"ValidationLength\",\n \"ValidationSet\",\n \"Value\",\n \"ValueBox\",\n \"ValueBoxOptions\",\n \"ValueDimensions\",\n \"ValueForm\",\n \"ValuePreprocessingFunction\",\n \"ValueQ\",\n \"Values\",\n \"ValuesData\",\n \"Variables\",\n \"Variance\",\n \"VarianceEquivalenceTest\",\n \"VarianceEstimatorFunction\",\n \"VarianceGammaDistribution\",\n \"VarianceTest\",\n \"VectorAngle\",\n \"VectorAround\",\n \"VectorAspectRatio\",\n \"VectorColorFunction\",\n \"VectorColorFunctionScaling\",\n \"VectorDensityPlot\",\n \"VectorGlyphData\",\n \"VectorGreater\",\n \"VectorGreaterEqual\",\n \"VectorLess\",\n \"VectorLessEqual\",\n \"VectorMarkers\",\n \"VectorPlot\",\n \"VectorPlot3D\",\n \"VectorPoints\",\n \"VectorQ\",\n \"VectorRange\",\n \"Vectors\",\n \"VectorScale\",\n \"VectorScaling\",\n \"VectorSizes\",\n \"VectorStyle\",\n \"Vee\",\n \"Verbatim\",\n \"Verbose\",\n \"VerboseConvertToPostScriptPacket\",\n \"VerificationTest\",\n \"VerifyConvergence\",\n \"VerifyDerivedKey\",\n \"VerifyDigitalSignature\",\n \"VerifyFileSignature\",\n \"VerifyInterpretation\",\n \"VerifySecurityCertificates\",\n \"VerifySolutions\",\n \"VerifyTestAssumptions\",\n \"Version\",\n \"VersionedPreferences\",\n \"VersionNumber\",\n \"VertexAdd\",\n \"VertexCapacity\",\n \"VertexColors\",\n \"VertexComponent\",\n \"VertexConnectivity\",\n \"VertexContract\",\n \"VertexCoordinateRules\",\n \"VertexCoordinates\",\n \"VertexCorrelationSimilarity\",\n \"VertexCosineSimilarity\",\n \"VertexCount\",\n \"VertexCoverQ\",\n \"VertexDataCoordinates\",\n \"VertexDegree\",\n \"VertexDelete\",\n \"VertexDiceSimilarity\",\n \"VertexEccentricity\",\n \"VertexInComponent\",\n \"VertexInDegree\",\n \"VertexIndex\",\n \"VertexJaccardSimilarity\",\n \"VertexLabeling\",\n \"VertexLabels\",\n \"VertexLabelStyle\",\n \"VertexList\",\n \"VertexNormals\",\n \"VertexOutComponent\",\n \"VertexOutDegree\",\n \"VertexQ\",\n \"VertexRenderingFunction\",\n \"VertexReplace\",\n \"VertexShape\",\n \"VertexShapeFunction\",\n \"VertexSize\",\n \"VertexStyle\",\n \"VertexTextureCoordinates\",\n \"VertexWeight\",\n \"VertexWeightedGraphQ\",\n \"Vertical\",\n \"VerticalBar\",\n \"VerticalForm\",\n \"VerticalGauge\",\n \"VerticalSeparator\",\n \"VerticalSlider\",\n \"VerticalTilde\",\n \"Video\",\n \"VideoEncoding\",\n \"VideoExtractFrames\",\n \"VideoFrameList\",\n \"VideoFrameMap\",\n \"VideoPause\",\n \"VideoPlay\",\n \"VideoQ\",\n \"VideoStop\",\n \"VideoStream\",\n \"VideoStreams\",\n \"VideoTimeSeries\",\n \"VideoTracks\",\n \"VideoTrim\",\n \"ViewAngle\",\n \"ViewCenter\",\n \"ViewMatrix\",\n \"ViewPoint\",\n \"ViewPointSelectorSettings\",\n \"ViewPort\",\n \"ViewProjection\",\n \"ViewRange\",\n \"ViewVector\",\n \"ViewVertical\",\n \"VirtualGroupData\",\n \"Visible\",\n \"VisibleCell\",\n \"VoiceStyleData\",\n \"VoigtDistribution\",\n \"VolcanoData\",\n \"Volume\",\n \"VonMisesDistribution\",\n \"VoronoiMesh\",\n \"WaitAll\",\n \"WaitAsynchronousTask\",\n \"WaitNext\",\n \"WaitUntil\",\n \"WakebyDistribution\",\n \"WalleniusHypergeometricDistribution\",\n \"WaringYuleDistribution\",\n \"WarpingCorrespondence\",\n \"WarpingDistance\",\n \"WatershedComponents\",\n \"WatsonUSquareTest\",\n \"WattsStrogatzGraphDistribution\",\n \"WaveletBestBasis\",\n \"WaveletFilterCoefficients\",\n \"WaveletImagePlot\",\n \"WaveletListPlot\",\n \"WaveletMapIndexed\",\n \"WaveletMatrixPlot\",\n \"WaveletPhi\",\n \"WaveletPsi\",\n \"WaveletScale\",\n \"WaveletScalogram\",\n \"WaveletThreshold\",\n \"WeaklyConnectedComponents\",\n \"WeaklyConnectedGraphComponents\",\n \"WeaklyConnectedGraphQ\",\n \"WeakStationarity\",\n \"WeatherData\",\n \"WeatherForecastData\",\n \"WebAudioSearch\",\n \"WebElementObject\",\n \"WeberE\",\n \"WebExecute\",\n \"WebImage\",\n \"WebImageSearch\",\n \"WebSearch\",\n \"WebSessionObject\",\n \"WebSessions\",\n \"WebWindowObject\",\n \"Wedge\",\n \"Wednesday\",\n \"WeibullDistribution\",\n \"WeierstrassE1\",\n \"WeierstrassE2\",\n \"WeierstrassE3\",\n \"WeierstrassEta1\",\n \"WeierstrassEta2\",\n \"WeierstrassEta3\",\n \"WeierstrassHalfPeriods\",\n \"WeierstrassHalfPeriodW1\",\n \"WeierstrassHalfPeriodW2\",\n \"WeierstrassHalfPeriodW3\",\n \"WeierstrassInvariantG2\",\n \"WeierstrassInvariantG3\",\n \"WeierstrassInvariants\",\n \"WeierstrassP\",\n \"WeierstrassPPrime\",\n \"WeierstrassSigma\",\n \"WeierstrassZeta\",\n \"WeightedAdjacencyGraph\",\n \"WeightedAdjacencyMatrix\",\n \"WeightedData\",\n \"WeightedGraphQ\",\n \"Weights\",\n \"WelchWindow\",\n \"WheelGraph\",\n \"WhenEvent\",\n \"Which\",\n \"While\",\n \"White\",\n \"WhiteNoiseProcess\",\n \"WhitePoint\",\n \"Whitespace\",\n \"WhitespaceCharacter\",\n \"WhittakerM\",\n \"WhittakerW\",\n \"WienerFilter\",\n \"WienerProcess\",\n \"WignerD\",\n \"WignerSemicircleDistribution\",\n \"WikidataData\",\n \"WikidataSearch\",\n \"WikipediaData\",\n \"WikipediaSearch\",\n \"WilksW\",\n \"WilksWTest\",\n \"WindDirectionData\",\n \"WindingCount\",\n \"WindingPolygon\",\n \"WindowClickSelect\",\n \"WindowElements\",\n \"WindowFloating\",\n \"WindowFrame\",\n \"WindowFrameElements\",\n \"WindowMargins\",\n \"WindowMovable\",\n \"WindowOpacity\",\n \"WindowPersistentStyles\",\n \"WindowSelected\",\n \"WindowSize\",\n \"WindowStatusArea\",\n \"WindowTitle\",\n \"WindowToolbars\",\n \"WindowWidth\",\n \"WindSpeedData\",\n \"WindVectorData\",\n \"WinsorizedMean\",\n \"WinsorizedVariance\",\n \"WishartMatrixDistribution\",\n \"With\",\n \"WolframAlpha\",\n \"WolframAlphaDate\",\n \"WolframAlphaQuantity\",\n \"WolframAlphaResult\",\n \"WolframLanguageData\",\n \"Word\",\n \"WordBoundary\",\n \"WordCharacter\",\n \"WordCloud\",\n \"WordCount\",\n \"WordCounts\",\n \"WordData\",\n \"WordDefinition\",\n \"WordFrequency\",\n \"WordFrequencyData\",\n \"WordList\",\n \"WordOrientation\",\n \"WordSearch\",\n \"WordSelectionFunction\",\n \"WordSeparators\",\n \"WordSpacings\",\n \"WordStem\",\n \"WordTranslation\",\n \"WorkingPrecision\",\n \"WrapAround\",\n \"Write\",\n \"WriteLine\",\n \"WriteString\",\n \"Wronskian\",\n \"XMLElement\",\n \"XMLObject\",\n \"XMLTemplate\",\n \"Xnor\",\n \"Xor\",\n \"XYZColor\",\n \"Yellow\",\n \"Yesterday\",\n \"YuleDissimilarity\",\n \"ZernikeR\",\n \"ZeroSymmetric\",\n \"ZeroTest\",\n \"ZeroWidthTimes\",\n \"Zeta\",\n \"ZetaZero\",\n \"ZIPCodeData\",\n \"ZipfDistribution\",\n \"ZoomCenter\",\n \"ZoomFactor\",\n \"ZTest\",\n \"ZTransform\",\n \"$Aborted\",\n \"$ActivationGroupID\",\n \"$ActivationKey\",\n \"$ActivationUserRegistered\",\n \"$AddOnsDirectory\",\n \"$AllowDataUpdates\",\n \"$AllowExternalChannelFunctions\",\n \"$AllowInternet\",\n \"$AssertFunction\",\n \"$Assumptions\",\n \"$AsynchronousTask\",\n \"$AudioDecoders\",\n \"$AudioEncoders\",\n \"$AudioInputDevices\",\n \"$AudioOutputDevices\",\n \"$BaseDirectory\",\n \"$BasePacletsDirectory\",\n \"$BatchInput\",\n \"$BatchOutput\",\n \"$BlockchainBase\",\n \"$BoxForms\",\n \"$ByteOrdering\",\n \"$CacheBaseDirectory\",\n \"$Canceled\",\n \"$ChannelBase\",\n \"$CharacterEncoding\",\n \"$CharacterEncodings\",\n \"$CloudAccountName\",\n \"$CloudBase\",\n \"$CloudConnected\",\n \"$CloudConnection\",\n \"$CloudCreditsAvailable\",\n \"$CloudEvaluation\",\n \"$CloudExpressionBase\",\n \"$CloudObjectNameFormat\",\n \"$CloudObjectURLType\",\n \"$CloudRootDirectory\",\n \"$CloudSymbolBase\",\n \"$CloudUserID\",\n \"$CloudUserUUID\",\n \"$CloudVersion\",\n \"$CloudVersionNumber\",\n \"$CloudWolframEngineVersionNumber\",\n \"$CommandLine\",\n \"$CompilationTarget\",\n \"$ConditionHold\",\n \"$ConfiguredKernels\",\n \"$Context\",\n \"$ContextPath\",\n \"$ControlActiveSetting\",\n \"$Cookies\",\n \"$CookieStore\",\n \"$CreationDate\",\n \"$CurrentLink\",\n \"$CurrentTask\",\n \"$CurrentWebSession\",\n \"$DataStructures\",\n \"$DateStringFormat\",\n \"$DefaultAudioInputDevice\",\n \"$DefaultAudioOutputDevice\",\n \"$DefaultFont\",\n \"$DefaultFrontEnd\",\n \"$DefaultImagingDevice\",\n \"$DefaultLocalBase\",\n \"$DefaultMailbox\",\n \"$DefaultNetworkInterface\",\n \"$DefaultPath\",\n \"$DefaultProxyRules\",\n \"$DefaultSystemCredentialStore\",\n \"$Display\",\n \"$DisplayFunction\",\n \"$DistributedContexts\",\n \"$DynamicEvaluation\",\n \"$Echo\",\n \"$EmbedCodeEnvironments\",\n \"$EmbeddableServices\",\n \"$EntityStores\",\n \"$Epilog\",\n \"$EvaluationCloudBase\",\n \"$EvaluationCloudObject\",\n \"$EvaluationEnvironment\",\n \"$ExportFormats\",\n \"$ExternalIdentifierTypes\",\n \"$ExternalStorageBase\",\n \"$Failed\",\n \"$FinancialDataSource\",\n \"$FontFamilies\",\n \"$FormatType\",\n \"$FrontEnd\",\n \"$FrontEndSession\",\n \"$GeoEntityTypes\",\n \"$GeoLocation\",\n \"$GeoLocationCity\",\n \"$GeoLocationCountry\",\n \"$GeoLocationPrecision\",\n \"$GeoLocationSource\",\n \"$HistoryLength\",\n \"$HomeDirectory\",\n \"$HTMLExportRules\",\n \"$HTTPCookies\",\n \"$HTTPRequest\",\n \"$IgnoreEOF\",\n \"$ImageFormattingWidth\",\n \"$ImageResolution\",\n \"$ImagingDevice\",\n \"$ImagingDevices\",\n \"$ImportFormats\",\n \"$IncomingMailSettings\",\n \"$InitialDirectory\",\n \"$Initialization\",\n \"$InitializationContexts\",\n \"$Input\",\n \"$InputFileName\",\n \"$InputStreamMethods\",\n \"$Inspector\",\n \"$InstallationDate\",\n \"$InstallationDirectory\",\n \"$InterfaceEnvironment\",\n \"$InterpreterTypes\",\n \"$IterationLimit\",\n \"$KernelCount\",\n \"$KernelID\",\n \"$Language\",\n \"$LaunchDirectory\",\n \"$LibraryPath\",\n \"$LicenseExpirationDate\",\n \"$LicenseID\",\n \"$LicenseProcesses\",\n \"$LicenseServer\",\n \"$LicenseSubprocesses\",\n \"$LicenseType\",\n \"$Line\",\n \"$Linked\",\n \"$LinkSupported\",\n \"$LoadedFiles\",\n \"$LocalBase\",\n \"$LocalSymbolBase\",\n \"$MachineAddresses\",\n \"$MachineDomain\",\n \"$MachineDomains\",\n \"$MachineEpsilon\",\n \"$MachineID\",\n \"$MachineName\",\n \"$MachinePrecision\",\n \"$MachineType\",\n \"$MaxExtraPrecision\",\n \"$MaxLicenseProcesses\",\n \"$MaxLicenseSubprocesses\",\n \"$MaxMachineNumber\",\n \"$MaxNumber\",\n \"$MaxPiecewiseCases\",\n \"$MaxPrecision\",\n \"$MaxRootDegree\",\n \"$MessageGroups\",\n \"$MessageList\",\n \"$MessagePrePrint\",\n \"$Messages\",\n \"$MinMachineNumber\",\n \"$MinNumber\",\n \"$MinorReleaseNumber\",\n \"$MinPrecision\",\n \"$MobilePhone\",\n \"$ModuleNumber\",\n \"$NetworkConnected\",\n \"$NetworkInterfaces\",\n \"$NetworkLicense\",\n \"$NewMessage\",\n \"$NewSymbol\",\n \"$NotebookInlineStorageLimit\",\n \"$Notebooks\",\n \"$NoValue\",\n \"$NumberMarks\",\n \"$Off\",\n \"$OperatingSystem\",\n \"$Output\",\n \"$OutputForms\",\n \"$OutputSizeLimit\",\n \"$OutputStreamMethods\",\n \"$Packages\",\n \"$ParentLink\",\n \"$ParentProcessID\",\n \"$PasswordFile\",\n \"$PatchLevelID\",\n \"$Path\",\n \"$PathnameSeparator\",\n \"$PerformanceGoal\",\n \"$Permissions\",\n \"$PermissionsGroupBase\",\n \"$PersistenceBase\",\n \"$PersistencePath\",\n \"$PipeSupported\",\n \"$PlotTheme\",\n \"$Post\",\n \"$Pre\",\n \"$PreferencesDirectory\",\n \"$PreInitialization\",\n \"$PrePrint\",\n \"$PreRead\",\n \"$PrintForms\",\n \"$PrintLiteral\",\n \"$Printout3DPreviewer\",\n \"$ProcessID\",\n \"$ProcessorCount\",\n \"$ProcessorType\",\n \"$ProductInformation\",\n \"$ProgramName\",\n \"$PublisherID\",\n \"$RandomState\",\n \"$RecursionLimit\",\n \"$RegisteredDeviceClasses\",\n \"$RegisteredUserName\",\n \"$ReleaseNumber\",\n \"$RequesterAddress\",\n \"$RequesterWolframID\",\n \"$RequesterWolframUUID\",\n \"$RootDirectory\",\n \"$ScheduledTask\",\n \"$ScriptCommandLine\",\n \"$ScriptInputString\",\n \"$SecuredAuthenticationKeyTokens\",\n \"$ServiceCreditsAvailable\",\n \"$Services\",\n \"$SessionID\",\n \"$SetParentLink\",\n \"$SharedFunctions\",\n \"$SharedVariables\",\n \"$SoundDisplay\",\n \"$SoundDisplayFunction\",\n \"$SourceLink\",\n \"$SSHAuthentication\",\n \"$SubtitleDecoders\",\n \"$SubtitleEncoders\",\n \"$SummaryBoxDataSizeLimit\",\n \"$SuppressInputFormHeads\",\n \"$SynchronousEvaluation\",\n \"$SyntaxHandler\",\n \"$System\",\n \"$SystemCharacterEncoding\",\n \"$SystemCredentialStore\",\n \"$SystemID\",\n \"$SystemMemory\",\n \"$SystemShell\",\n \"$SystemTimeZone\",\n \"$SystemWordLength\",\n \"$TemplatePath\",\n \"$TemporaryDirectory\",\n \"$TemporaryPrefix\",\n \"$TestFileName\",\n \"$TextStyle\",\n \"$TimedOut\",\n \"$TimeUnit\",\n \"$TimeZone\",\n \"$TimeZoneEntity\",\n \"$TopDirectory\",\n \"$TraceOff\",\n \"$TraceOn\",\n \"$TracePattern\",\n \"$TracePostAction\",\n \"$TracePreAction\",\n \"$UnitSystem\",\n \"$Urgent\",\n \"$UserAddOnsDirectory\",\n \"$UserAgentLanguages\",\n \"$UserAgentMachine\",\n \"$UserAgentName\",\n \"$UserAgentOperatingSystem\",\n \"$UserAgentString\",\n \"$UserAgentVersion\",\n \"$UserBaseDirectory\",\n \"$UserBasePacletsDirectory\",\n \"$UserDocumentsDirectory\",\n \"$Username\",\n \"$UserName\",\n \"$UserURLBase\",\n \"$Version\",\n \"$VersionNumber\",\n \"$VideoDecoders\",\n \"$VideoEncoders\",\n \"$VoiceStyles\",\n \"$WolframDocumentsDirectory\",\n \"$WolframID\",\n \"$WolframUUID\"\n];\n\n/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction optional(re) {\n return concat('(', re, ')?');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] } args\n * @returns {string}\n */\nfunction either(...args) {\n const joined = '(' + args.map((x) => source(x)).join(\"|\") + \")\";\n return joined;\n}\n\n/*\nLanguage: Wolfram Language\nDescription: The Wolfram Language is the programming language used in Wolfram Mathematica, a modern technical computing system spanning most areas of technical computing.\nAuthors: Patrick Scheibe <patrick@halirutan.de>, Robert Jacobson <robertjacobson@acm.org>\nWebsite: https://www.wolfram.com/mathematica/\nCategory: scientific\n*/\n\n/** @type LanguageFn */\nfunction mathematica(hljs) {\n /*\n This rather scary looking matching of Mathematica numbers is carefully explained by Robert Jacobson here:\n https://wltools.github.io/LanguageSpec/Specification/Syntax/Number-representations/\n */\n const BASE_RE = /([2-9]|[1-2]\\d|[3][0-5])\\^\\^/;\n const BASE_DIGITS_RE = /(\\w*\\.\\w+|\\w+\\.\\w*|\\w+)/;\n const NUMBER_RE = /(\\d*\\.\\d+|\\d+\\.\\d*|\\d+)/;\n const BASE_NUMBER_RE = either(concat(BASE_RE, BASE_DIGITS_RE), NUMBER_RE);\n\n const ACCURACY_RE = /``[+-]?(\\d*\\.\\d+|\\d+\\.\\d*|\\d+)/;\n const PRECISION_RE = /`([+-]?(\\d*\\.\\d+|\\d+\\.\\d*|\\d+))?/;\n const APPROXIMATE_NUMBER_RE = either(ACCURACY_RE, PRECISION_RE);\n\n const SCIENTIFIC_NOTATION_RE = /\\*\\^[+-]?\\d+/;\n\n const MATHEMATICA_NUMBER_RE = concat(\n BASE_NUMBER_RE,\n optional(APPROXIMATE_NUMBER_RE),\n optional(SCIENTIFIC_NOTATION_RE)\n );\n\n const NUMBERS = {\n className: 'number',\n relevance: 0,\n begin: MATHEMATICA_NUMBER_RE\n };\n\n const SYMBOL_RE = /[a-zA-Z$][a-zA-Z0-9$]*/;\n const SYSTEM_SYMBOLS_SET = new Set(SYSTEM_SYMBOLS);\n /** @type {Mode} */\n const SYMBOLS = {\n variants: [\n {\n className: 'builtin-symbol',\n begin: SYMBOL_RE,\n // for performance out of fear of regex.either(...Mathematica.SYSTEM_SYMBOLS)\n \"on:begin\": (match, response) => {\n if (!SYSTEM_SYMBOLS_SET.has(match[0])) response.ignoreMatch();\n }\n },\n {\n className: 'symbol',\n relevance: 0,\n begin: SYMBOL_RE\n }\n ]\n };\n\n const NAMED_CHARACTER = {\n className: 'named-character',\n begin: /\\\\\\[[$a-zA-Z][$a-zA-Z0-9]+\\]/\n };\n\n const OPERATORS = {\n className: 'operator',\n relevance: 0,\n begin: /[+\\-*/,;.:@~=><&|_`'^?!%]+/\n };\n const PATTERNS = {\n className: 'pattern',\n relevance: 0,\n begin: /([a-zA-Z$][a-zA-Z0-9$]*)?_+([a-zA-Z$][a-zA-Z0-9$]*)?/\n };\n\n const SLOTS = {\n className: 'slot',\n relevance: 0,\n begin: /#[a-zA-Z$][a-zA-Z0-9$]*|#+[0-9]?/\n };\n\n const BRACES = {\n className: 'brace',\n relevance: 0,\n begin: /[[\\](){}]/\n };\n\n const MESSAGES = {\n className: 'message-name',\n relevance: 0,\n begin: concat(\"::\", SYMBOL_RE)\n };\n\n return {\n name: 'Mathematica',\n aliases: [\n 'mma',\n 'wl'\n ],\n classNameAliases: {\n brace: 'punctuation',\n pattern: 'type',\n slot: 'type',\n symbol: 'variable',\n 'named-character': 'variable',\n 'builtin-symbol': 'built_in',\n 'message-name': 'string'\n },\n contains: [\n hljs.COMMENT(/\\(\\*/, /\\*\\)/, {\n contains: [ 'self' ]\n }),\n PATTERNS,\n SLOTS,\n MESSAGES,\n SYMBOLS,\n NAMED_CHARACTER,\n hljs.QUOTE_STRING_MODE,\n NUMBERS,\n OPERATORS,\n BRACES\n ]\n };\n}\n\nmodule.exports = mathematica;\n","/*\nLanguage: Matlab\nAuthor: Denis Bardadym <bardadymchik@gmail.com>\nContributors: Eugene Nizhibitsky <nizhibitsky@ya.ru>, Egor Rogov <e.rogov@postgrespro.ru>\nWebsite: https://www.mathworks.com/products/matlab.html\nCategory: scientific\n*/\n\n/*\n Formal syntax is not published, helpful link:\n https://github.com/kornilova-l/matlab-IntelliJ-plugin/blob/master/src/main/grammar/Matlab.bnf\n*/\nfunction matlab(hljs) {\n\n var TRANSPOSE_RE = '(\\'|\\\\.\\')+';\n var TRANSPOSE = {\n relevance: 0,\n contains: [\n { begin: TRANSPOSE_RE }\n ]\n };\n\n return {\n name: 'Matlab',\n keywords: {\n keyword:\n 'arguments break case catch classdef continue else elseif end enumeration events for function ' +\n 'global if methods otherwise parfor persistent properties return spmd switch try while',\n built_in:\n 'sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan ' +\n 'atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot ' +\n 'cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog ' +\n 'realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal ' +\n 'cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli ' +\n 'besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma ' +\n 'gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms ' +\n 'nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones ' +\n 'eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ' +\n 'ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril ' +\n 'triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute ' +\n 'shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan ' +\n 'isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal ' +\n 'rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table ' +\n 'readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun ' +\n 'legend intersect ismember procrustes hold num2cell '\n },\n illegal: '(//|\"|#|/\\\\*|\\\\s+/\\\\w+)',\n contains: [\n {\n className: 'function',\n beginKeywords: 'function', end: '$',\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n {\n className: 'params',\n variants: [\n {begin: '\\\\(', end: '\\\\)'},\n {begin: '\\\\[', end: '\\\\]'}\n ]\n }\n ]\n },\n {\n className: 'built_in',\n begin: /true|false/,\n relevance: 0,\n starts: TRANSPOSE\n },\n {\n begin: '[a-zA-Z][a-zA-Z_0-9]*' + TRANSPOSE_RE,\n relevance: 0\n },\n {\n className: 'number',\n begin: hljs.C_NUMBER_RE,\n relevance: 0,\n starts: TRANSPOSE\n },\n {\n className: 'string',\n begin: '\\'', end: '\\'',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n {begin: '\\'\\''}]\n },\n {\n begin: /\\]|\\}|\\)/,\n relevance: 0,\n starts: TRANSPOSE\n },\n {\n className: 'string',\n begin: '\"', end: '\"',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n {begin: '\"\"'}\n ],\n starts: TRANSPOSE\n },\n hljs.COMMENT('^\\\\s*%\\\\{\\\\s*$', '^\\\\s*%\\\\}\\\\s*$'),\n hljs.COMMENT('%', '$')\n ]\n };\n}\n\nmodule.exports = matlab;\n","/*\nLanguage: Maxima\nAuthor: Robert Dodier <robert.dodier@gmail.com>\nWebsite: http://maxima.sourceforge.net\nCategory: scientific\n*/\n\nfunction maxima(hljs) {\n const KEYWORDS =\n 'if then else elseif for thru do while unless step in and or not';\n const LITERALS =\n 'true false unknown inf minf ind und %e %i %pi %phi %gamma';\n const BUILTIN_FUNCTIONS =\n ' abasep abs absint absolute_real_time acos acosh acot acoth acsc acsch activate' +\n ' addcol add_edge add_edges addmatrices addrow add_vertex add_vertices adjacency_matrix' +\n ' adjoin adjoint af agd airy airy_ai airy_bi airy_dai airy_dbi algsys alg_type' +\n ' alias allroots alphacharp alphanumericp amortization %and annuity_fv' +\n ' annuity_pv antid antidiff AntiDifference append appendfile apply apply1 apply2' +\n ' applyb1 apropos args arit_amortization arithmetic arithsum array arrayapply' +\n ' arrayinfo arraymake arraysetapply ascii asec asech asin asinh askinteger' +\n ' asksign assoc assoc_legendre_p assoc_legendre_q assume assume_external_byte_order' +\n ' asympa at atan atan2 atanh atensimp atom atvalue augcoefmatrix augmented_lagrangian_method' +\n ' av average_degree backtrace bars barsplot barsplot_description base64 base64_decode' +\n ' bashindices batch batchload bc2 bdvac belln benefit_cost bern bernpoly bernstein_approx' +\n ' bernstein_expand bernstein_poly bessel bessel_i bessel_j bessel_k bessel_simplify' +\n ' bessel_y beta beta_incomplete beta_incomplete_generalized beta_incomplete_regularized' +\n ' bezout bfallroots bffac bf_find_root bf_fmin_cobyla bfhzeta bfloat bfloatp' +\n ' bfpsi bfpsi0 bfzeta biconnected_components bimetric binomial bipartition' +\n ' block blockmatrixp bode_gain bode_phase bothcoef box boxplot boxplot_description' +\n ' break bug_report build_info|10 buildq build_sample burn cabs canform canten' +\n ' cardinality carg cartan cartesian_product catch cauchy_matrix cbffac cdf_bernoulli' +\n ' cdf_beta cdf_binomial cdf_cauchy cdf_chi2 cdf_continuous_uniform cdf_discrete_uniform' +\n ' cdf_exp cdf_f cdf_gamma cdf_general_finite_discrete cdf_geometric cdf_gumbel' +\n ' cdf_hypergeometric cdf_laplace cdf_logistic cdf_lognormal cdf_negative_binomial' +\n ' cdf_noncentral_chi2 cdf_noncentral_student_t cdf_normal cdf_pareto cdf_poisson' +\n ' cdf_rank_sum cdf_rayleigh cdf_signed_rank cdf_student_t cdf_weibull cdisplay' +\n ' ceiling central_moment cequal cequalignore cf cfdisrep cfexpand cgeodesic' +\n ' cgreaterp cgreaterpignore changename changevar chaosgame charat charfun charfun2' +\n ' charlist charp charpoly chdir chebyshev_t chebyshev_u checkdiv check_overlaps' +\n ' chinese cholesky christof chromatic_index chromatic_number cint circulant_graph' +\n ' clear_edge_weight clear_rules clear_vertex_label clebsch_gordan clebsch_graph' +\n ' clessp clesspignore close closefile cmetric coeff coefmatrix cograd col collapse' +\n ' collectterms columnop columnspace columnswap columnvector combination combine' +\n ' comp2pui compare compfile compile compile_file complement_graph complete_bipartite_graph' +\n ' complete_graph complex_number_p components compose_functions concan concat' +\n ' conjugate conmetderiv connected_components connect_vertices cons constant' +\n ' constantp constituent constvalue cont2part content continuous_freq contortion' +\n ' contour_plot contract contract_edge contragrad contrib_ode convert coord' +\n ' copy copy_file copy_graph copylist copymatrix cor cos cosh cot coth cov cov1' +\n ' covdiff covect covers crc24sum create_graph create_list csc csch csetup cspline' +\n ' ctaylor ct_coordsys ctransform ctranspose cube_graph cuboctahedron_graph' +\n ' cunlisp cv cycle_digraph cycle_graph cylindrical days360 dblint deactivate' +\n ' declare declare_constvalue declare_dimensions declare_fundamental_dimensions' +\n ' declare_fundamental_units declare_qty declare_translated declare_unit_conversion' +\n ' declare_units declare_weights decsym defcon define define_alt_display define_variable' +\n ' defint defmatch defrule defstruct deftaylor degree_sequence del delete deleten' +\n ' delta demo demoivre denom depends derivdegree derivlist describe desolve' +\n ' determinant dfloat dgauss_a dgauss_b dgeev dgemm dgeqrf dgesv dgesvd diag' +\n ' diagmatrix diag_matrix diagmatrixp diameter diff digitcharp dimacs_export' +\n ' dimacs_import dimension dimensionless dimensions dimensions_as_list direct' +\n ' directory discrete_freq disjoin disjointp disolate disp dispcon dispform' +\n ' dispfun dispJordan display disprule dispterms distrib divide divisors divsum' +\n ' dkummer_m dkummer_u dlange dodecahedron_graph dotproduct dotsimp dpart' +\n ' draw draw2d draw3d drawdf draw_file draw_graph dscalar echelon edge_coloring' +\n ' edge_connectivity edges eigens_by_jacobi eigenvalues eigenvectors eighth' +\n ' einstein eivals eivects elapsed_real_time elapsed_run_time ele2comp ele2polynome' +\n ' ele2pui elem elementp elevation_grid elim elim_allbut eliminate eliminate_using' +\n ' ellipse elliptic_e elliptic_ec elliptic_eu elliptic_f elliptic_kc elliptic_pi' +\n ' ematrix empty_graph emptyp endcons entermatrix entertensor entier equal equalp' +\n ' equiv_classes erf erfc erf_generalized erfi errcatch error errormsg errors' +\n ' euler ev eval_string evenp every evolution evolution2d evundiff example exp' +\n ' expand expandwrt expandwrt_factored expint expintegral_chi expintegral_ci' +\n ' expintegral_e expintegral_e1 expintegral_ei expintegral_e_simplify expintegral_li' +\n ' expintegral_shi expintegral_si explicit explose exponentialize express expt' +\n ' exsec extdiff extract_linear_equations extremal_subset ezgcd %f f90 facsum' +\n ' factcomb factor factorfacsum factorial factorout factorsum facts fast_central_elements' +\n ' fast_linsolve fasttimes featurep fernfale fft fib fibtophi fifth filename_merge' +\n ' file_search file_type fillarray findde find_root find_root_abs find_root_error' +\n ' find_root_rel first fix flatten flength float floatnump floor flower_snark' +\n ' flush flush1deriv flushd flushnd flush_output fmin_cobyla forget fortran' +\n ' fourcos fourexpand fourier fourier_elim fourint fourintcos fourintsin foursimp' +\n ' foursin fourth fposition frame_bracket freeof freshline fresnel_c fresnel_s' +\n ' from_adjacency_matrix frucht_graph full_listify fullmap fullmapl fullratsimp' +\n ' fullratsubst fullsetify funcsolve fundamental_dimensions fundamental_units' +\n ' fundef funmake funp fv g0 g1 gamma gamma_greek gamma_incomplete gamma_incomplete_generalized' +\n ' gamma_incomplete_regularized gauss gauss_a gauss_b gaussprob gcd gcdex gcdivide' +\n ' gcfac gcfactor gd generalized_lambert_w genfact gen_laguerre genmatrix gensym' +\n ' geo_amortization geo_annuity_fv geo_annuity_pv geomap geometric geometric_mean' +\n ' geosum get getcurrentdirectory get_edge_weight getenv get_lu_factors get_output_stream_string' +\n ' get_pixel get_plot_option get_tex_environment get_tex_environment_default' +\n ' get_vertex_label gfactor gfactorsum ggf girth global_variances gn gnuplot_close' +\n ' gnuplot_replot gnuplot_reset gnuplot_restart gnuplot_start go Gosper GosperSum' +\n ' gr2d gr3d gradef gramschmidt graph6_decode graph6_encode graph6_export graph6_import' +\n ' graph_center graph_charpoly graph_eigenvalues graph_flow graph_order graph_periphery' +\n ' graph_product graph_size graph_union great_rhombicosidodecahedron_graph great_rhombicuboctahedron_graph' +\n ' grid_graph grind grobner_basis grotzch_graph hamilton_cycle hamilton_path' +\n ' hankel hankel_1 hankel_2 harmonic harmonic_mean hav heawood_graph hermite' +\n ' hessian hgfred hilbertmap hilbert_matrix hipow histogram histogram_description' +\n ' hodge horner hypergeometric i0 i1 %ibes ic1 ic2 ic_convert ichr1 ichr2 icosahedron_graph' +\n ' icosidodecahedron_graph icurvature ident identfor identity idiff idim idummy' +\n ' ieqn %if ifactors iframes ifs igcdex igeodesic_coords ilt image imagpart' +\n ' imetric implicit implicit_derivative implicit_plot indexed_tensor indices' +\n ' induced_subgraph inferencep inference_result infix info_display init_atensor' +\n ' init_ctensor in_neighbors innerproduct inpart inprod inrt integerp integer_partitions' +\n ' integrate intersect intersection intervalp intopois intosum invariant1 invariant2' +\n ' inverse_fft inverse_jacobi_cd inverse_jacobi_cn inverse_jacobi_cs inverse_jacobi_dc' +\n ' inverse_jacobi_dn inverse_jacobi_ds inverse_jacobi_nc inverse_jacobi_nd inverse_jacobi_ns' +\n ' inverse_jacobi_sc inverse_jacobi_sd inverse_jacobi_sn invert invert_by_adjoint' +\n ' invert_by_lu inv_mod irr is is_biconnected is_bipartite is_connected is_digraph' +\n ' is_edge_in_graph is_graph is_graph_or_digraph ishow is_isomorphic isolate' +\n ' isomorphism is_planar isqrt isreal_p is_sconnected is_tree is_vertex_in_graph' +\n ' items_inference %j j0 j1 jacobi jacobian jacobi_cd jacobi_cn jacobi_cs jacobi_dc' +\n ' jacobi_dn jacobi_ds jacobi_nc jacobi_nd jacobi_ns jacobi_p jacobi_sc jacobi_sd' +\n ' jacobi_sn JF jn join jordan julia julia_set julia_sin %k kdels kdelta kill' +\n ' killcontext kostka kron_delta kronecker_product kummer_m kummer_u kurtosis' +\n ' kurtosis_bernoulli kurtosis_beta kurtosis_binomial kurtosis_chi2 kurtosis_continuous_uniform' +\n ' kurtosis_discrete_uniform kurtosis_exp kurtosis_f kurtosis_gamma kurtosis_general_finite_discrete' +\n ' kurtosis_geometric kurtosis_gumbel kurtosis_hypergeometric kurtosis_laplace' +\n ' kurtosis_logistic kurtosis_lognormal kurtosis_negative_binomial kurtosis_noncentral_chi2' +\n ' kurtosis_noncentral_student_t kurtosis_normal kurtosis_pareto kurtosis_poisson' +\n ' kurtosis_rayleigh kurtosis_student_t kurtosis_weibull label labels lagrange' +\n ' laguerre lambda lambert_w laplace laplacian_matrix last lbfgs lc2kdt lcharp' +\n ' lc_l lcm lc_u ldefint ldisp ldisplay legendre_p legendre_q leinstein length' +\n ' let letrules letsimp levi_civita lfreeof lgtreillis lhs li liediff limit' +\n ' Lindstedt linear linearinterpol linear_program linear_regression line_graph' +\n ' linsolve listarray list_correlations listify list_matrix_entries list_nc_monomials' +\n ' listoftens listofvars listp lmax lmin load loadfile local locate_matrix_entry' +\n ' log logcontract log_gamma lopow lorentz_gauge lowercasep lpart lratsubst' +\n ' lreduce lriemann lsquares_estimates lsquares_estimates_approximate lsquares_estimates_exact' +\n ' lsquares_mse lsquares_residual_mse lsquares_residuals lsum ltreillis lu_backsub' +\n ' lucas lu_factor %m macroexpand macroexpand1 make_array makebox makefact makegamma' +\n ' make_graph make_level_picture makelist makeOrders make_poly_continent make_poly_country' +\n ' make_polygon make_random_state make_rgb_picture makeset make_string_input_stream' +\n ' make_string_output_stream make_transform mandelbrot mandelbrot_set map mapatom' +\n ' maplist matchdeclare matchfix mat_cond mat_fullunblocker mat_function mathml_display' +\n ' mat_norm matrix matrixmap matrixp matrix_size mattrace mat_trace mat_unblocker' +\n ' max max_clique max_degree max_flow maximize_lp max_independent_set max_matching' +\n ' maybe md5sum mean mean_bernoulli mean_beta mean_binomial mean_chi2 mean_continuous_uniform' +\n ' mean_deviation mean_discrete_uniform mean_exp mean_f mean_gamma mean_general_finite_discrete' +\n ' mean_geometric mean_gumbel mean_hypergeometric mean_laplace mean_logistic' +\n ' mean_lognormal mean_negative_binomial mean_noncentral_chi2 mean_noncentral_student_t' +\n ' mean_normal mean_pareto mean_poisson mean_rayleigh mean_student_t mean_weibull' +\n ' median median_deviation member mesh metricexpandall mgf1_sha1 min min_degree' +\n ' min_edge_cut minfactorial minimalPoly minimize_lp minimum_spanning_tree minor' +\n ' minpack_lsquares minpack_solve min_vertex_cover min_vertex_cut mkdir mnewton' +\n ' mod mode_declare mode_identity ModeMatrix moebius mon2schur mono monomial_dimensions' +\n ' multibernstein_poly multi_display_for_texinfo multi_elem multinomial multinomial_coeff' +\n ' multi_orbit multiplot_mode multi_pui multsym multthru mycielski_graph nary' +\n ' natural_unit nc_degree ncexpt ncharpoly negative_picture neighbors new newcontext' +\n ' newdet new_graph newline newton new_variable next_prime nicedummies niceindices' +\n ' ninth nofix nonarray noncentral_moment nonmetricity nonnegintegerp nonscalarp' +\n ' nonzeroandfreeof notequal nounify nptetrad npv nroots nterms ntermst' +\n ' nthroot nullity nullspace num numbered_boundaries numberp number_to_octets' +\n ' num_distinct_partitions numerval numfactor num_partitions nusum nzeta nzetai' +\n ' nzetar octets_to_number octets_to_oid odd_girth oddp ode2 ode_check odelin' +\n ' oid_to_octets op opena opena_binary openr openr_binary openw openw_binary' +\n ' operatorp opsubst optimize %or orbit orbits ordergreat ordergreatp orderless' +\n ' orderlessp orthogonal_complement orthopoly_recur orthopoly_weight outermap' +\n ' out_neighbors outofpois pade parabolic_cylinder_d parametric parametric_surface' +\n ' parg parGosper parse_string parse_timedate part part2cont partfrac partition' +\n ' partition_set partpol path_digraph path_graph pathname_directory pathname_name' +\n ' pathname_type pdf_bernoulli pdf_beta pdf_binomial pdf_cauchy pdf_chi2 pdf_continuous_uniform' +\n ' pdf_discrete_uniform pdf_exp pdf_f pdf_gamma pdf_general_finite_discrete' +\n ' pdf_geometric pdf_gumbel pdf_hypergeometric pdf_laplace pdf_logistic pdf_lognormal' +\n ' pdf_negative_binomial pdf_noncentral_chi2 pdf_noncentral_student_t pdf_normal' +\n ' pdf_pareto pdf_poisson pdf_rank_sum pdf_rayleigh pdf_signed_rank pdf_student_t' +\n ' pdf_weibull pearson_skewness permanent permut permutation permutations petersen_graph' +\n ' petrov pickapart picture_equalp picturep piechart piechart_description planar_embedding' +\n ' playback plog plot2d plot3d plotdf ploteq plsquares pochhammer points poisdiff' +\n ' poisexpt poisint poismap poisplus poissimp poissubst poistimes poistrim polar' +\n ' polarform polartorect polar_to_xy poly_add poly_buchberger poly_buchberger_criterion' +\n ' poly_colon_ideal poly_content polydecomp poly_depends_p poly_elimination_ideal' +\n ' poly_exact_divide poly_expand poly_expt poly_gcd polygon poly_grobner poly_grobner_equal' +\n ' poly_grobner_member poly_grobner_subsetp poly_ideal_intersection poly_ideal_polysaturation' +\n ' poly_ideal_polysaturation1 poly_ideal_saturation poly_ideal_saturation1 poly_lcm' +\n ' poly_minimization polymod poly_multiply polynome2ele polynomialp poly_normal_form' +\n ' poly_normalize poly_normalize_list poly_polysaturation_extension poly_primitive_part' +\n ' poly_pseudo_divide poly_reduced_grobner poly_reduction poly_saturation_extension' +\n ' poly_s_polynomial poly_subtract polytocompanion pop postfix potential power_mod' +\n ' powerseries powerset prefix prev_prime primep primes principal_components' +\n ' print printf printfile print_graph printpois printprops prodrac product properties' +\n ' propvars psi psubst ptriangularize pui pui2comp pui2ele pui2polynome pui_direct' +\n ' puireduc push put pv qput qrange qty quad_control quad_qag quad_qagi quad_qagp' +\n ' quad_qags quad_qawc quad_qawf quad_qawo quad_qaws quadrilateral quantile' +\n ' quantile_bernoulli quantile_beta quantile_binomial quantile_cauchy quantile_chi2' +\n ' quantile_continuous_uniform quantile_discrete_uniform quantile_exp quantile_f' +\n ' quantile_gamma quantile_general_finite_discrete quantile_geometric quantile_gumbel' +\n ' quantile_hypergeometric quantile_laplace quantile_logistic quantile_lognormal' +\n ' quantile_negative_binomial quantile_noncentral_chi2 quantile_noncentral_student_t' +\n ' quantile_normal quantile_pareto quantile_poisson quantile_rayleigh quantile_student_t' +\n ' quantile_weibull quartile_skewness quit qunit quotient racah_v racah_w radcan' +\n ' radius random random_bernoulli random_beta random_binomial random_bipartite_graph' +\n ' random_cauchy random_chi2 random_continuous_uniform random_digraph random_discrete_uniform' +\n ' random_exp random_f random_gamma random_general_finite_discrete random_geometric' +\n ' random_graph random_graph1 random_gumbel random_hypergeometric random_laplace' +\n ' random_logistic random_lognormal random_negative_binomial random_network' +\n ' random_noncentral_chi2 random_noncentral_student_t random_normal random_pareto' +\n ' random_permutation random_poisson random_rayleigh random_regular_graph random_student_t' +\n ' random_tournament random_tree random_weibull range rank rat ratcoef ratdenom' +\n ' ratdiff ratdisrep ratexpand ratinterpol rational rationalize ratnumer ratnump' +\n ' ratp ratsimp ratsubst ratvars ratweight read read_array read_binary_array' +\n ' read_binary_list read_binary_matrix readbyte readchar read_hashed_array readline' +\n ' read_list read_matrix read_nested_list readonly read_xpm real_imagpart_to_conjugate' +\n ' realpart realroots rearray rectangle rectform rectform_log_if_constant recttopolar' +\n ' rediff reduce_consts reduce_order region region_boundaries region_boundaries_plus' +\n ' rem remainder remarray rembox remcomps remcon remcoord remfun remfunction' +\n ' remlet remove remove_constvalue remove_dimensions remove_edge remove_fundamental_dimensions' +\n ' remove_fundamental_units remove_plot_option remove_vertex rempart remrule' +\n ' remsym remvalue rename rename_file reset reset_displays residue resolvante' +\n ' resolvante_alternee1 resolvante_bipartite resolvante_diedrale resolvante_klein' +\n ' resolvante_klein3 resolvante_produit_sym resolvante_unitaire resolvante_vierer' +\n ' rest resultant return reveal reverse revert revert2 rgb2level rhs ricci riemann' +\n ' rinvariant risch rk rmdir rncombine romberg room rootscontract round row' +\n ' rowop rowswap rreduce run_testsuite %s save saving scalarp scaled_bessel_i' +\n ' scaled_bessel_i0 scaled_bessel_i1 scalefactors scanmap scatterplot scatterplot_description' +\n ' scene schur2comp sconcat scopy scsimp scurvature sdowncase sec sech second' +\n ' sequal sequalignore set_alt_display setdifference set_draw_defaults set_edge_weight' +\n ' setelmx setequalp setify setp set_partitions set_plot_option set_prompt set_random_state' +\n ' set_tex_environment set_tex_environment_default setunits setup_autoload set_up_dot_simplifications' +\n ' set_vertex_label seventh sexplode sf sha1sum sha256sum shortest_path shortest_weighted_path' +\n ' show showcomps showratvars sierpinskiale sierpinskimap sign signum similaritytransform' +\n ' simp_inequality simplify_sum simplode simpmetderiv simtran sin sinh sinsert' +\n ' sinvertcase sixth skewness skewness_bernoulli skewness_beta skewness_binomial' +\n ' skewness_chi2 skewness_continuous_uniform skewness_discrete_uniform skewness_exp' +\n ' skewness_f skewness_gamma skewness_general_finite_discrete skewness_geometric' +\n ' skewness_gumbel skewness_hypergeometric skewness_laplace skewness_logistic' +\n ' skewness_lognormal skewness_negative_binomial skewness_noncentral_chi2 skewness_noncentral_student_t' +\n ' skewness_normal skewness_pareto skewness_poisson skewness_rayleigh skewness_student_t' +\n ' skewness_weibull slength smake small_rhombicosidodecahedron_graph small_rhombicuboctahedron_graph' +\n ' smax smin smismatch snowmap snub_cube_graph snub_dodecahedron_graph solve' +\n ' solve_rec solve_rec_rat some somrac sort sparse6_decode sparse6_encode sparse6_export' +\n ' sparse6_import specint spherical spherical_bessel_j spherical_bessel_y spherical_hankel1' +\n ' spherical_hankel2 spherical_harmonic spherical_to_xyz splice split sposition' +\n ' sprint sqfr sqrt sqrtdenest sremove sremovefirst sreverse ssearch ssort sstatus' +\n ' ssubst ssubstfirst staircase standardize standardize_inverse_trig starplot' +\n ' starplot_description status std std1 std_bernoulli std_beta std_binomial' +\n ' std_chi2 std_continuous_uniform std_discrete_uniform std_exp std_f std_gamma' +\n ' std_general_finite_discrete std_geometric std_gumbel std_hypergeometric std_laplace' +\n ' std_logistic std_lognormal std_negative_binomial std_noncentral_chi2 std_noncentral_student_t' +\n ' std_normal std_pareto std_poisson std_rayleigh std_student_t std_weibull' +\n ' stemplot stirling stirling1 stirling2 strim striml strimr string stringout' +\n ' stringp strong_components struve_h struve_l sublis sublist sublist_indices' +\n ' submatrix subsample subset subsetp subst substinpart subst_parallel substpart' +\n ' substring subvar subvarp sum sumcontract summand_to_rec supcase supcontext' +\n ' symbolp symmdifference symmetricp system take_channel take_inference tan' +\n ' tanh taylor taylorinfo taylorp taylor_simplifier taytorat tcl_output tcontract' +\n ' tellrat tellsimp tellsimpafter tentex tenth test_mean test_means_difference' +\n ' test_normality test_proportion test_proportions_difference test_rank_sum' +\n ' test_sign test_signed_rank test_variance test_variance_ratio tex tex1 tex_display' +\n ' texput %th third throw time timedate timer timer_info tldefint tlimit todd_coxeter' +\n ' toeplitz tokens to_lisp topological_sort to_poly to_poly_solve totaldisrep' +\n ' totalfourier totient tpartpol trace tracematrix trace_options transform_sample' +\n ' translate translate_file transpose treefale tree_reduce treillis treinat' +\n ' triangle triangularize trigexpand trigrat trigreduce trigsimp trunc truncate' +\n ' truncated_cube_graph truncated_dodecahedron_graph truncated_icosahedron_graph' +\n ' truncated_tetrahedron_graph tr_warnings_get tube tutte_graph ueivects uforget' +\n ' ultraspherical underlying_graph undiff union unique uniteigenvectors unitp' +\n ' units unit_step unitvector unorder unsum untellrat untimer' +\n ' untrace uppercasep uricci uriemann uvect vandermonde_matrix var var1 var_bernoulli' +\n ' var_beta var_binomial var_chi2 var_continuous_uniform var_discrete_uniform' +\n ' var_exp var_f var_gamma var_general_finite_discrete var_geometric var_gumbel' +\n ' var_hypergeometric var_laplace var_logistic var_lognormal var_negative_binomial' +\n ' var_noncentral_chi2 var_noncentral_student_t var_normal var_pareto var_poisson' +\n ' var_rayleigh var_student_t var_weibull vector vectorpotential vectorsimp' +\n ' verbify vers vertex_coloring vertex_connectivity vertex_degree vertex_distance' +\n ' vertex_eccentricity vertex_in_degree vertex_out_degree vertices vertices_to_cycle' +\n ' vertices_to_path %w weyl wheel_graph wiener_index wigner_3j wigner_6j' +\n ' wigner_9j with_stdout write_binary_data writebyte write_data writefile wronskian' +\n ' xreduce xthru %y Zeilberger zeroequiv zerofor zeromatrix zeromatrixp zeta' +\n ' zgeev zheev zlange zn_add_table zn_carmichael_lambda zn_characteristic_factors' +\n ' zn_determinant zn_factor_generators zn_invert_by_lu zn_log zn_mult_table' +\n ' absboxchar activecontexts adapt_depth additive adim aform algebraic' +\n ' algepsilon algexact aliases allbut all_dotsimp_denoms allocation allsym alphabetic' +\n ' animation antisymmetric arrays askexp assume_pos assume_pos_pred assumescalar' +\n ' asymbol atomgrad atrig1 axes axis_3d axis_bottom axis_left axis_right axis_top' +\n ' azimuth background background_color backsubst berlefact bernstein_explicit' +\n ' besselexpand beta_args_sum_to_integer beta_expand bftorat bftrunc bindtest' +\n ' border boundaries_array box boxchar breakup %c capping cauchysum cbrange' +\n ' cbtics center cflength cframe_flag cnonmet_flag color color_bar color_bar_tics' +\n ' colorbox columns commutative complex cone context contexts contour contour_levels' +\n ' cosnpiflag ctaypov ctaypt ctayswitch ctayvar ct_coords ctorsion_flag ctrgsimp' +\n ' cube current_let_rule_package cylinder data_file_name debugmode decreasing' +\n ' default_let_rule_package delay dependencies derivabbrev derivsubst detout' +\n ' diagmetric diff dim dimensions dispflag display2d|10 display_format_internal' +\n ' distribute_over doallmxops domain domxexpt domxmxops domxnctimes dontfactor' +\n ' doscmxops doscmxplus dot0nscsimp dot0simp dot1simp dotassoc dotconstrules' +\n ' dotdistrib dotexptsimp dotident dotscrules draw_graph_program draw_realpart' +\n ' edge_color edge_coloring edge_partition edge_type edge_width %edispflag' +\n ' elevation %emode endphi endtheta engineering_format_floats enhanced3d %enumer' +\n ' epsilon_lp erfflag erf_representation errormsg error_size error_syms error_type' +\n ' %e_to_numlog eval even evenfun evflag evfun ev_point expandwrt_denom expintexpand' +\n ' expintrep expon expop exptdispflag exptisolate exptsubst facexpand facsum_combine' +\n ' factlim factorflag factorial_expand factors_only fb feature features' +\n ' file_name file_output_append file_search_demo file_search_lisp file_search_maxima|10' +\n ' file_search_tests file_search_usage file_type_lisp file_type_maxima|10 fill_color' +\n ' fill_density filled_func fixed_vertices flipflag float2bf font font_size' +\n ' fortindent fortspaces fpprec fpprintprec functions gamma_expand gammalim' +\n ' gdet genindex gensumnum GGFCFMAX GGFINFINITY globalsolve gnuplot_command' +\n ' gnuplot_curve_styles gnuplot_curve_titles gnuplot_default_term_command gnuplot_dumb_term_command' +\n ' gnuplot_file_args gnuplot_file_name gnuplot_out_file gnuplot_pdf_term_command' +\n ' gnuplot_pm3d gnuplot_png_term_command gnuplot_postamble gnuplot_preamble' +\n ' gnuplot_ps_term_command gnuplot_svg_term_command gnuplot_term gnuplot_view_args' +\n ' Gosper_in_Zeilberger gradefs grid grid2d grind halfangles head_angle head_both' +\n ' head_length head_type height hypergeometric_representation %iargs ibase' +\n ' icc1 icc2 icounter idummyx ieqnprint ifb ifc1 ifc2 ifg ifgi ifr iframe_bracket_form' +\n ' ifri igeowedge_flag ikt1 ikt2 imaginary inchar increasing infeval' +\n ' infinity inflag infolists inm inmc1 inmc2 intanalysis integer integervalued' +\n ' integrate_use_rootsof integration_constant integration_constant_counter interpolate_color' +\n ' intfaclim ip_grid ip_grid_in irrational isolate_wrt_times iterations itr' +\n ' julia_parameter %k1 %k2 keepfloat key key_pos kinvariant kt label label_alignment' +\n ' label_orientation labels lassociative lbfgs_ncorrections lbfgs_nfeval_max' +\n ' leftjust legend letrat let_rule_packages lfg lg lhospitallim limsubst linear' +\n ' linear_solver linechar linel|10 linenum line_type linewidth line_width linsolve_params' +\n ' linsolvewarn lispdisp listarith listconstvars listdummyvars lmxchar load_pathname' +\n ' loadprint logabs logarc logcb logconcoeffp logexpand lognegint logsimp logx' +\n ' logx_secondary logy logy_secondary logz lriem m1pbranch macroexpansion macros' +\n ' mainvar manual_demo maperror mapprint matrix_element_add matrix_element_mult' +\n ' matrix_element_transpose maxapplydepth maxapplyheight maxima_tempdir|10 maxima_userdir|10' +\n ' maxnegex MAX_ORD maxposex maxpsifracdenom maxpsifracnum maxpsinegint maxpsiposint' +\n ' maxtayorder mesh_lines_color method mod_big_prime mode_check_errorp' +\n ' mode_checkp mode_check_warnp mod_test mod_threshold modular_linear_solver' +\n ' modulus multiplicative multiplicities myoptions nary negdistrib negsumdispflag' +\n ' newline newtonepsilon newtonmaxiter nextlayerfactor niceindicespref nm nmc' +\n ' noeval nolabels nonegative_lp noninteger nonscalar noun noundisp nouns np' +\n ' npi nticks ntrig numer numer_pbranch obase odd oddfun opacity opproperties' +\n ' opsubst optimprefix optionset orientation origin orthopoly_returns_intervals' +\n ' outative outchar packagefile palette partswitch pdf_file pfeformat phiresolution' +\n ' %piargs piece pivot_count_sx pivot_max_sx plot_format plot_options plot_realpart' +\n ' png_file pochhammer_max_index points pointsize point_size points_joined point_type' +\n ' poislim poisson poly_coefficient_ring poly_elimination_order polyfactor poly_grobner_algorithm' +\n ' poly_grobner_debug poly_monomial_order poly_primary_elimination_order poly_return_term_list' +\n ' poly_secondary_elimination_order poly_top_reduction_only posfun position' +\n ' powerdisp pred prederror primep_number_of_tests product_use_gamma program' +\n ' programmode promote_float_to_bigfloat prompt proportional_axes props psexpand' +\n ' ps_file radexpand radius radsubstflag rassociative ratalgdenom ratchristof' +\n ' ratdenomdivide rateinstein ratepsilon ratfac rational ratmx ratprint ratriemann' +\n ' ratsimpexpons ratvarswitch ratweights ratweyl ratwtlvl real realonly redraw' +\n ' refcheck resolution restart resultant ric riem rmxchar %rnum_list rombergabs' +\n ' rombergit rombergmin rombergtol rootsconmode rootsepsilon run_viewer same_xy' +\n ' same_xyz savedef savefactors scalar scalarmatrixp scale scale_lp setcheck' +\n ' setcheckbreak setval show_edge_color show_edges show_edge_type show_edge_width' +\n ' show_id show_label showtime show_vertex_color show_vertex_size show_vertex_type' +\n ' show_vertices show_weight simp simplified_output simplify_products simpproduct' +\n ' simpsum sinnpiflag solvedecomposes solveexplicit solvefactors solvenullwarn' +\n ' solveradcan solvetrigwarn space sparse sphere spring_embedding_depth sqrtdispflag' +\n ' stardisp startphi starttheta stats_numer stringdisp structures style sublis_apply_lambda' +\n ' subnumsimp sumexpand sumsplitfact surface surface_hide svg_file symmetric' +\n ' tab taylordepth taylor_logexpand taylor_order_coefficients taylor_truncate_polynomials' +\n ' tensorkill terminal testsuite_files thetaresolution timer_devalue title tlimswitch' +\n ' tr track transcompile transform transform_xy translate_fast_arrays transparent' +\n ' transrun tr_array_as_ref tr_bound_function_applyp tr_file_tty_messagesp tr_float_can_branch_complex' +\n ' tr_function_call_default trigexpandplus trigexpandtimes triginverses trigsign' +\n ' trivial_solutions tr_numer tr_optimize_max_loop tr_semicompile tr_state_vars' +\n ' tr_warn_bad_function_calls tr_warn_fexpr tr_warn_meval tr_warn_mode' +\n ' tr_warn_undeclared tr_warn_undefined_variable tstep ttyoff tube_extremes' +\n ' ufg ug %unitexpand unit_vectors uric uriem use_fast_arrays user_preamble' +\n ' usersetunits values vect_cross verbose vertex_color vertex_coloring vertex_partition' +\n ' vertex_size vertex_type view warnings weyl width windowname windowtitle wired_surface' +\n ' wireframe xaxis xaxis_color xaxis_secondary xaxis_type xaxis_width xlabel' +\n ' xlabel_secondary xlength xrange xrange_secondary xtics xtics_axis xtics_rotate' +\n ' xtics_rotate_secondary xtics_secondary xtics_secondary_axis xu_grid x_voxel' +\n ' xy_file xyplane xy_scale yaxis yaxis_color yaxis_secondary yaxis_type yaxis_width' +\n ' ylabel ylabel_secondary ylength yrange yrange_secondary ytics ytics_axis' +\n ' ytics_rotate ytics_rotate_secondary ytics_secondary ytics_secondary_axis' +\n ' yv_grid y_voxel yx_ratio zaxis zaxis_color zaxis_type zaxis_width zeroa zerob' +\n ' zerobern zeta%pi zlabel zlabel_rotate zlength zmin zn_primroot_limit zn_primroot_pretest';\n const SYMBOLS = '_ __ %|0 %%|0';\n\n return {\n name: 'Maxima',\n keywords: {\n $pattern: '[A-Za-z_%][0-9A-Za-z_%]*',\n keyword: KEYWORDS,\n literal: LITERALS,\n built_in: BUILTIN_FUNCTIONS,\n symbol: SYMBOLS\n },\n contains: [\n {\n className: 'comment',\n begin: '/\\\\*',\n end: '\\\\*/',\n contains: [ 'self' ]\n },\n hljs.QUOTE_STRING_MODE,\n {\n className: 'number',\n relevance: 0,\n variants: [\n {\n // float number w/ exponent\n // hmm, I wonder if we ought to include other exponent markers?\n begin: '\\\\b(\\\\d+|\\\\d+\\\\.|\\\\.\\\\d+|\\\\d+\\\\.\\\\d+)[Ee][-+]?\\\\d+\\\\b'\n },\n {\n // bigfloat number\n begin: '\\\\b(\\\\d+|\\\\d+\\\\.|\\\\.\\\\d+|\\\\d+\\\\.\\\\d+)[Bb][-+]?\\\\d+\\\\b',\n relevance: 10\n },\n {\n // float number w/out exponent\n // Doesn't seem to recognize floats which start with '.'\n begin: '\\\\b(\\\\.\\\\d+|\\\\d+\\\\.\\\\d+)\\\\b'\n },\n {\n // integer in base up to 36\n // Doesn't seem to recognize integers which end with '.'\n begin: '\\\\b(\\\\d+|0[0-9A-Za-z]+)\\\\.?\\\\b'\n }\n ]\n }\n ],\n illegal: /@/\n };\n}\n\nmodule.exports = maxima;\n","/*\nLanguage: MEL\nDescription: Maya Embedded Language\nAuthor: Shuen-Huei Guan <drake.guan@gmail.com>\nWebsite: http://www.autodesk.com/products/autodesk-maya/overview\nCategory: graphics\n*/\n\nfunction mel(hljs) {\n return {\n name: 'MEL',\n keywords:\n 'int float string vector matrix if else switch case default while do for in break ' +\n 'continue global proc return about abs addAttr addAttributeEditorNodeHelp addDynamic ' +\n 'addNewShelfTab addPP addPanelCategory addPrefixToName advanceToNextDrivenKey ' +\n 'affectedNet affects aimConstraint air alias aliasAttr align alignCtx alignCurve ' +\n 'alignSurface allViewFit ambientLight angle angleBetween animCone animCurveEditor ' +\n 'animDisplay animView annotate appendStringArray applicationName applyAttrPreset ' +\n 'applyTake arcLenDimContext arcLengthDimension arclen arrayMapper art3dPaintCtx ' +\n 'artAttrCtx artAttrPaintVertexCtx artAttrSkinPaintCtx artAttrTool artBuildPaintMenu ' +\n 'artFluidAttrCtx artPuttyCtx artSelectCtx artSetPaintCtx artUserPaintCtx assignCommand ' +\n 'assignInputDevice assignViewportFactories attachCurve attachDeviceAttr attachSurface ' +\n 'attrColorSliderGrp attrCompatibility attrControlGrp attrEnumOptionMenu ' +\n 'attrEnumOptionMenuGrp attrFieldGrp attrFieldSliderGrp attrNavigationControlGrp ' +\n 'attrPresetEditWin attributeExists attributeInfo attributeMenu attributeQuery ' +\n 'autoKeyframe autoPlace bakeClip bakeFluidShading bakePartialHistory bakeResults ' +\n 'bakeSimulation basename basenameEx batchRender bessel bevel bevelPlus binMembership ' +\n 'bindSkin blend2 blendShape blendShapeEditor blendShapePanel blendTwoAttr blindDataType ' +\n 'boneLattice boundary boxDollyCtx boxZoomCtx bufferCurve buildBookmarkMenu ' +\n 'buildKeyframeMenu button buttonManip CBG cacheFile cacheFileCombine cacheFileMerge ' +\n 'cacheFileTrack camera cameraView canCreateManip canvas capitalizeString catch ' +\n 'catchQuiet ceil changeSubdivComponentDisplayLevel changeSubdivRegion channelBox ' +\n 'character characterMap characterOutlineEditor characterize chdir checkBox checkBoxGrp ' +\n 'checkDefaultRenderGlobals choice circle circularFillet clamp clear clearCache clip ' +\n 'clipEditor clipEditorCurrentTimeCtx clipSchedule clipSchedulerOutliner clipTrimBefore ' +\n 'closeCurve closeSurface cluster cmdFileOutput cmdScrollFieldExecuter ' +\n 'cmdScrollFieldReporter cmdShell coarsenSubdivSelectionList collision color ' +\n 'colorAtPoint colorEditor colorIndex colorIndexSliderGrp colorSliderButtonGrp ' +\n 'colorSliderGrp columnLayout commandEcho commandLine commandPort compactHairSystem ' +\n 'componentEditor compositingInterop computePolysetVolume condition cone confirmDialog ' +\n 'connectAttr connectControl connectDynamic connectJoint connectionInfo constrain ' +\n 'constrainValue constructionHistory container containsMultibyte contextInfo control ' +\n 'convertFromOldLayers convertIffToPsd convertLightmap convertSolidTx convertTessellation ' +\n 'convertUnit copyArray copyFlexor copyKey copySkinWeights cos cpButton cpCache ' +\n 'cpClothSet cpCollision cpConstraint cpConvClothToMesh cpForces cpGetSolverAttr cpPanel ' +\n 'cpProperty cpRigidCollisionFilter cpSeam cpSetEdit cpSetSolverAttr cpSolver ' +\n 'cpSolverTypes cpTool cpUpdateClothUVs createDisplayLayer createDrawCtx createEditor ' +\n 'createLayeredPsdFile createMotionField createNewShelf createNode createRenderLayer ' +\n 'createSubdivRegion cross crossProduct ctxAbort ctxCompletion ctxEditMode ctxTraverse ' +\n 'currentCtx currentTime currentTimeCtx currentUnit curve curveAddPtCtx ' +\n 'curveCVCtx curveEPCtx curveEditorCtx curveIntersect curveMoveEPCtx curveOnSurface ' +\n 'curveSketchCtx cutKey cycleCheck cylinder dagPose date defaultLightListCheckBox ' +\n 'defaultNavigation defineDataServer defineVirtualDevice deformer deg_to_rad delete ' +\n 'deleteAttr deleteShadingGroupsAndMaterials deleteShelfTab deleteUI deleteUnusedBrushes ' +\n 'delrandstr detachCurve detachDeviceAttr detachSurface deviceEditor devicePanel dgInfo ' +\n 'dgdirty dgeval dgtimer dimWhen directKeyCtx directionalLight dirmap dirname disable ' +\n 'disconnectAttr disconnectJoint diskCache displacementToPoly displayAffected ' +\n 'displayColor displayCull displayLevelOfDetail displayPref displayRGBColor ' +\n 'displaySmoothness displayStats displayString displaySurface distanceDimContext ' +\n 'distanceDimension doBlur dolly dollyCtx dopeSheetEditor dot dotProduct ' +\n 'doubleProfileBirailSurface drag dragAttrContext draggerContext dropoffLocator ' +\n 'duplicate duplicateCurve duplicateSurface dynCache dynControl dynExport dynExpression ' +\n 'dynGlobals dynPaintEditor dynParticleCtx dynPref dynRelEdPanel dynRelEditor ' +\n 'dynamicLoad editAttrLimits editDisplayLayerGlobals editDisplayLayerMembers ' +\n 'editRenderLayerAdjustment editRenderLayerGlobals editRenderLayerMembers editor ' +\n 'editorTemplate effector emit emitter enableDevice encodeString endString endsWith env ' +\n 'equivalent equivalentTol erf error eval evalDeferred evalEcho event ' +\n 'exactWorldBoundingBox exclusiveLightCheckBox exec executeForEachObject exists exp ' +\n 'expression expressionEditorListen extendCurve extendSurface extrude fcheck fclose feof ' +\n 'fflush fgetline fgetword file fileBrowserDialog fileDialog fileExtension fileInfo ' +\n 'filetest filletCurve filter filterCurve filterExpand filterStudioImport ' +\n 'findAllIntersections findAnimCurves findKeyframe findMenuItem findRelatedSkinCluster ' +\n 'finder firstParentOf fitBspline flexor floatEq floatField floatFieldGrp floatScrollBar ' +\n 'floatSlider floatSlider2 floatSliderButtonGrp floatSliderGrp floor flow fluidCacheInfo ' +\n 'fluidEmitter fluidVoxelInfo flushUndo fmod fontDialog fopen formLayout format fprint ' +\n 'frameLayout fread freeFormFillet frewind fromNativePath fwrite gamma gauss ' +\n 'geometryConstraint getApplicationVersionAsFloat getAttr getClassification ' +\n 'getDefaultBrush getFileList getFluidAttr getInputDeviceRange getMayaPanelTypes ' +\n 'getModifiers getPanel getParticleAttr getPluginResource getenv getpid glRender ' +\n 'glRenderEditor globalStitch gmatch goal gotoBindPose grabColor gradientControl ' +\n 'gradientControlNoAttr graphDollyCtx graphSelectContext graphTrackCtx gravity grid ' +\n 'gridLayout group groupObjectsByName HfAddAttractorToAS HfAssignAS HfBuildEqualMap ' +\n 'HfBuildFurFiles HfBuildFurImages HfCancelAFR HfConnectASToHF HfCreateAttractor ' +\n 'HfDeleteAS HfEditAS HfPerformCreateAS HfRemoveAttractorFromAS HfSelectAttached ' +\n 'HfSelectAttractors HfUnAssignAS hardenPointCurve hardware hardwareRenderPanel ' +\n 'headsUpDisplay headsUpMessage help helpLine hermite hide hilite hitTest hotBox hotkey ' +\n 'hotkeyCheck hsv_to_rgb hudButton hudSlider hudSliderButton hwReflectionMap hwRender ' +\n 'hwRenderLoad hyperGraph hyperPanel hyperShade hypot iconTextButton iconTextCheckBox ' +\n 'iconTextRadioButton iconTextRadioCollection iconTextScrollList iconTextStaticLabel ' +\n 'ikHandle ikHandleCtx ikHandleDisplayScale ikSolver ikSplineHandleCtx ikSystem ' +\n 'ikSystemInfo ikfkDisplayMethod illustratorCurves image imfPlugins inheritTransform ' +\n 'insertJoint insertJointCtx insertKeyCtx insertKnotCurve insertKnotSurface instance ' +\n 'instanceable instancer intField intFieldGrp intScrollBar intSlider intSliderGrp ' +\n 'interToUI internalVar intersect iprEngine isAnimCurve isConnected isDirty isParentOf ' +\n 'isSameObject isTrue isValidObjectName isValidString isValidUiName isolateSelect ' +\n 'itemFilter itemFilterAttr itemFilterRender itemFilterType joint jointCluster jointCtx ' +\n 'jointDisplayScale jointLattice keyTangent keyframe keyframeOutliner ' +\n 'keyframeRegionCurrentTimeCtx keyframeRegionDirectKeyCtx keyframeRegionDollyCtx ' +\n 'keyframeRegionInsertKeyCtx keyframeRegionMoveKeyCtx keyframeRegionScaleKeyCtx ' +\n 'keyframeRegionSelectKeyCtx keyframeRegionSetKeyCtx keyframeRegionTrackCtx ' +\n 'keyframeStats lassoContext lattice latticeDeformKeyCtx launch launchImageEditor ' +\n 'layerButton layeredShaderPort layeredTexturePort layout layoutDialog lightList ' +\n 'lightListEditor lightListPanel lightlink lineIntersection linearPrecision linstep ' +\n 'listAnimatable listAttr listCameras listConnections listDeviceAttachments listHistory ' +\n 'listInputDeviceAxes listInputDeviceButtons listInputDevices listMenuAnnotation ' +\n 'listNodeTypes listPanelCategories listRelatives listSets listTransforms ' +\n 'listUnselected listerEditor loadFluid loadNewShelf loadPlugin ' +\n 'loadPluginLanguageResources loadPrefObjects localizedPanelLabel lockNode loft log ' +\n 'longNameOf lookThru ls lsThroughFilter lsType lsUI Mayatomr mag makeIdentity makeLive ' +\n 'makePaintable makeRoll makeSingleSurface makeTubeOn makebot manipMoveContext ' +\n 'manipMoveLimitsCtx manipOptions manipRotateContext manipRotateLimitsCtx ' +\n 'manipScaleContext manipScaleLimitsCtx marker match max memory menu menuBarLayout ' +\n 'menuEditor menuItem menuItemToShelf menuSet menuSetPref messageLine min minimizeApp ' +\n 'mirrorJoint modelCurrentTimeCtx modelEditor modelPanel mouse movIn movOut move ' +\n 'moveIKtoFK moveKeyCtx moveVertexAlongDirection multiProfileBirailSurface mute ' +\n 'nParticle nameCommand nameField namespace namespaceInfo newPanelItems newton nodeCast ' +\n 'nodeIconButton nodeOutliner nodePreset nodeType noise nonLinear normalConstraint ' +\n 'normalize nurbsBoolean nurbsCopyUVSet nurbsCube nurbsEditUV nurbsPlane nurbsSelect ' +\n 'nurbsSquare nurbsToPoly nurbsToPolygonsPref nurbsToSubdiv nurbsToSubdivPref ' +\n 'nurbsUVSet nurbsViewDirectionVector objExists objectCenter objectLayer objectType ' +\n 'objectTypeUI obsoleteProc oceanNurbsPreviewPlane offsetCurve offsetCurveOnSurface ' +\n 'offsetSurface openGLExtension openMayaPref optionMenu optionMenuGrp optionVar orbit ' +\n 'orbitCtx orientConstraint outlinerEditor outlinerPanel overrideModifier ' +\n 'paintEffectsDisplay pairBlend palettePort paneLayout panel panelConfiguration ' +\n 'panelHistory paramDimContext paramDimension paramLocator parent parentConstraint ' +\n 'particle particleExists particleInstancer particleRenderInfo partition pasteKey ' +\n 'pathAnimation pause pclose percent performanceOptions pfxstrokes pickWalk picture ' +\n 'pixelMove planarSrf plane play playbackOptions playblast plugAttr plugNode pluginInfo ' +\n 'pluginResourceUtil pointConstraint pointCurveConstraint pointLight pointMatrixMult ' +\n 'pointOnCurve pointOnSurface pointPosition poleVectorConstraint polyAppend ' +\n 'polyAppendFacetCtx polyAppendVertex polyAutoProjection polyAverageNormal ' +\n 'polyAverageVertex polyBevel polyBlendColor polyBlindData polyBoolOp polyBridgeEdge ' +\n 'polyCacheMonitor polyCheck polyChipOff polyClipboard polyCloseBorder polyCollapseEdge ' +\n 'polyCollapseFacet polyColorBlindData polyColorDel polyColorPerVertex polyColorSet ' +\n 'polyCompare polyCone polyCopyUV polyCrease polyCreaseCtx polyCreateFacet ' +\n 'polyCreateFacetCtx polyCube polyCut polyCutCtx polyCylinder polyCylindricalProjection ' +\n 'polyDelEdge polyDelFacet polyDelVertex polyDuplicateAndConnect polyDuplicateEdge ' +\n 'polyEditUV polyEditUVShell polyEvaluate polyExtrudeEdge polyExtrudeFacet ' +\n 'polyExtrudeVertex polyFlipEdge polyFlipUV polyForceUV polyGeoSampler polyHelix ' +\n 'polyInfo polyInstallAction polyLayoutUV polyListComponentConversion polyMapCut ' +\n 'polyMapDel polyMapSew polyMapSewMove polyMergeEdge polyMergeEdgeCtx polyMergeFacet ' +\n 'polyMergeFacetCtx polyMergeUV polyMergeVertex polyMirrorFace polyMoveEdge ' +\n 'polyMoveFacet polyMoveFacetUV polyMoveUV polyMoveVertex polyNormal polyNormalPerVertex ' +\n 'polyNormalizeUV polyOptUvs polyOptions polyOutput polyPipe polyPlanarProjection ' +\n 'polyPlane polyPlatonicSolid polyPoke polyPrimitive polyPrism polyProjection ' +\n 'polyPyramid polyQuad polyQueryBlindData polyReduce polySelect polySelectConstraint ' +\n 'polySelectConstraintMonitor polySelectCtx polySelectEditCtx polySeparate ' +\n 'polySetToFaceNormal polySewEdge polyShortestPathCtx polySmooth polySoftEdge ' +\n 'polySphere polySphericalProjection polySplit polySplitCtx polySplitEdge polySplitRing ' +\n 'polySplitVertex polyStraightenUVBorder polySubdivideEdge polySubdivideFacet ' +\n 'polyToSubdiv polyTorus polyTransfer polyTriangulate polyUVSet polyUnite polyWedgeFace ' +\n 'popen popupMenu pose pow preloadRefEd print progressBar progressWindow projFileViewer ' +\n 'projectCurve projectTangent projectionContext projectionManip promptDialog propModCtx ' +\n 'propMove psdChannelOutliner psdEditTextureFile psdExport psdTextureFile putenv pwd ' +\n 'python querySubdiv quit rad_to_deg radial radioButton radioButtonGrp radioCollection ' +\n 'radioMenuItemCollection rampColorPort rand randomizeFollicles randstate rangeControl ' +\n 'readTake rebuildCurve rebuildSurface recordAttr recordDevice redo reference ' +\n 'referenceEdit referenceQuery refineSubdivSelectionList refresh refreshAE ' +\n 'registerPluginResource rehash reloadImage removeJoint removeMultiInstance ' +\n 'removePanelCategory rename renameAttr renameSelectionList renameUI render ' +\n 'renderGlobalsNode renderInfo renderLayerButton renderLayerParent ' +\n 'renderLayerPostProcess renderLayerUnparent renderManip renderPartition ' +\n 'renderQualityNode renderSettings renderThumbnailUpdate renderWindowEditor ' +\n 'renderWindowSelectContext renderer reorder reorderDeformers requires reroot ' +\n 'resampleFluid resetAE resetPfxToPolyCamera resetTool resolutionNode retarget ' +\n 'reverseCurve reverseSurface revolve rgb_to_hsv rigidBody rigidSolver roll rollCtx ' +\n 'rootOf rot rotate rotationInterpolation roundConstantRadius rowColumnLayout rowLayout ' +\n 'runTimeCommand runup sampleImage saveAllShelves saveAttrPreset saveFluid saveImage ' +\n 'saveInitialState saveMenu savePrefObjects savePrefs saveShelf saveToolSettings scale ' +\n 'scaleBrushBrightness scaleComponents scaleConstraint scaleKey scaleKeyCtx sceneEditor ' +\n 'sceneUIReplacement scmh scriptCtx scriptEditorInfo scriptJob scriptNode scriptTable ' +\n 'scriptToShelf scriptedPanel scriptedPanelType scrollField scrollLayout sculpt ' +\n 'searchPathArray seed selLoadSettings select selectContext selectCurveCV selectKey ' +\n 'selectKeyCtx selectKeyframeRegionCtx selectMode selectPref selectPriority selectType ' +\n 'selectedNodes selectionConnection separator setAttr setAttrEnumResource ' +\n 'setAttrMapping setAttrNiceNameResource setConstraintRestPosition ' +\n 'setDefaultShadingGroup setDrivenKeyframe setDynamic setEditCtx setEditor setFluidAttr ' +\n 'setFocus setInfinity setInputDeviceMapping setKeyCtx setKeyPath setKeyframe ' +\n 'setKeyframeBlendshapeTargetWts setMenuMode setNodeNiceNameResource setNodeTypeFlag ' +\n 'setParent setParticleAttr setPfxToPolyCamera setPluginResource setProject ' +\n 'setStampDensity setStartupMessage setState setToolTo setUITemplate setXformManip sets ' +\n 'shadingConnection shadingGeometryRelCtx shadingLightRelCtx shadingNetworkCompare ' +\n 'shadingNode shapeCompare shelfButton shelfLayout shelfTabLayout shellField ' +\n 'shortNameOf showHelp showHidden showManipCtx showSelectionInTitle ' +\n 'showShadingGroupAttrEditor showWindow sign simplify sin singleProfileBirailSurface ' +\n 'size sizeBytes skinCluster skinPercent smoothCurve smoothTangentSurface smoothstep ' +\n 'snap2to2 snapKey snapMode snapTogetherCtx snapshot soft softMod softModCtx sort sound ' +\n 'soundControl source spaceLocator sphere sphrand spotLight spotLightPreviewPort ' +\n 'spreadSheetEditor spring sqrt squareSurface srtContext stackTrace startString ' +\n 'startsWith stitchAndExplodeShell stitchSurface stitchSurfacePoints strcmp ' +\n 'stringArrayCatenate stringArrayContains stringArrayCount stringArrayInsertAtIndex ' +\n 'stringArrayIntersector stringArrayRemove stringArrayRemoveAtIndex ' +\n 'stringArrayRemoveDuplicates stringArrayRemoveExact stringArrayToString ' +\n 'stringToStringArray strip stripPrefixFromName stroke subdAutoProjection ' +\n 'subdCleanTopology subdCollapse subdDuplicateAndConnect subdEditUV ' +\n 'subdListComponentConversion subdMapCut subdMapSewMove subdMatchTopology subdMirror ' +\n 'subdToBlind subdToPoly subdTransferUVsToCache subdiv subdivCrease ' +\n 'subdivDisplaySmoothness substitute substituteAllString substituteGeometry substring ' +\n 'surface surfaceSampler surfaceShaderList swatchDisplayPort switchTable symbolButton ' +\n 'symbolCheckBox sysFile system tabLayout tan tangentConstraint texLatticeDeformContext ' +\n 'texManipContext texMoveContext texMoveUVShellContext texRotateContext texScaleContext ' +\n 'texSelectContext texSelectShortestPathCtx texSmudgeUVContext texWinToolCtx text ' +\n 'textCurves textField textFieldButtonGrp textFieldGrp textManip textScrollList ' +\n 'textToShelf textureDisplacePlane textureHairColor texturePlacementContext ' +\n 'textureWindow threadCount threePointArcCtx timeControl timePort timerX toNativePath ' +\n 'toggle toggleAxis toggleWindowVisibility tokenize tokenizeList tolerance tolower ' +\n 'toolButton toolCollection toolDropped toolHasOptions toolPropertyWindow torus toupper ' +\n 'trace track trackCtx transferAttributes transformCompare transformLimits translator ' +\n 'trim trunc truncateFluidCache truncateHairCache tumble tumbleCtx turbulence ' +\n 'twoPointArcCtx uiRes uiTemplate unassignInputDevice undo undoInfo ungroup uniform unit ' +\n 'unloadPlugin untangleUV untitledFileName untrim upAxis updateAE userCtx uvLink ' +\n 'uvSnapshot validateShelfName vectorize view2dToolCtx viewCamera viewClipPlane ' +\n 'viewFit viewHeadOn viewLookAt viewManip viewPlace viewSet visor volumeAxis vortex ' +\n 'waitCursor warning webBrowser webBrowserPrefs whatIs window windowPref wire ' +\n 'wireContext workspace wrinkle wrinkleContext writeTake xbmLangPathList xform',\n illegal: '</',\n contains: [\n hljs.C_NUMBER_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: '`',\n end: '`',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n { // eats variables\n begin: /[$%@](\\^\\w\\b|#\\w+|[^\\s\\w{]|\\{\\w+\\}|\\w+)/\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n}\n\nmodule.exports = mel;\n","/*\nLanguage: Mercury\nAuthor: mucaho <mkucko@gmail.com>\nDescription: Mercury is a logic/functional programming language which combines the clarity and expressiveness of declarative programming with advanced static analysis and error detection features.\nWebsite: https://www.mercurylang.org\n*/\n\nfunction mercury(hljs) {\n const KEYWORDS = {\n keyword:\n 'module use_module import_module include_module end_module initialise ' +\n 'mutable initialize finalize finalise interface implementation pred ' +\n 'mode func type inst solver any_pred any_func is semidet det nondet ' +\n 'multi erroneous failure cc_nondet cc_multi typeclass instance where ' +\n 'pragma promise external trace atomic or_else require_complete_switch ' +\n 'require_det require_semidet require_multi require_nondet ' +\n 'require_cc_multi require_cc_nondet require_erroneous require_failure',\n meta:\n // pragma\n 'inline no_inline type_spec source_file fact_table obsolete memo ' +\n 'loop_check minimal_model terminates does_not_terminate ' +\n 'check_termination promise_equivalent_clauses ' +\n // preprocessor\n 'foreign_proc foreign_decl foreign_code foreign_type ' +\n 'foreign_import_module foreign_export_enum foreign_export ' +\n 'foreign_enum may_call_mercury will_not_call_mercury thread_safe ' +\n 'not_thread_safe maybe_thread_safe promise_pure promise_semipure ' +\n 'tabled_for_io local untrailed trailed attach_to_io_state ' +\n 'can_pass_as_mercury_type stable will_not_throw_exception ' +\n 'may_modify_trail will_not_modify_trail may_duplicate ' +\n 'may_not_duplicate affects_liveness does_not_affect_liveness ' +\n 'doesnt_affect_liveness no_sharing unknown_sharing sharing',\n built_in:\n 'some all not if then else true fail false try catch catch_any ' +\n 'semidet_true semidet_false semidet_fail impure_true impure semipure'\n };\n\n const COMMENT = hljs.COMMENT('%', '$');\n\n const NUMCODE = {\n className: 'number',\n begin: \"0'.\\\\|0[box][0-9a-fA-F]*\"\n };\n\n const ATOM = hljs.inherit(hljs.APOS_STRING_MODE, {\n relevance: 0\n });\n const STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {\n relevance: 0\n });\n const STRING_FMT = {\n className: 'subst',\n begin: '\\\\\\\\[abfnrtv]\\\\|\\\\\\\\x[0-9a-fA-F]*\\\\\\\\\\\\|%[-+# *.0-9]*[dioxXucsfeEgGp]',\n relevance: 0\n };\n STRING.contains = STRING.contains.slice(); // we need our own copy of contains\n STRING.contains.push(STRING_FMT);\n\n const IMPLICATION = {\n className: 'built_in',\n variants: [\n {\n begin: '<=>'\n },\n {\n begin: '<=',\n relevance: 0\n },\n {\n begin: '=>',\n relevance: 0\n },\n {\n begin: '/\\\\\\\\'\n },\n {\n begin: '\\\\\\\\/'\n }\n ]\n };\n\n const HEAD_BODY_CONJUNCTION = {\n className: 'built_in',\n variants: [\n {\n begin: ':-\\\\|-->'\n },\n {\n begin: '=',\n relevance: 0\n }\n ]\n };\n\n return {\n name: 'Mercury',\n aliases: [\n 'm',\n 'moo'\n ],\n keywords: KEYWORDS,\n contains: [\n IMPLICATION,\n HEAD_BODY_CONJUNCTION,\n COMMENT,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMCODE,\n hljs.NUMBER_MODE,\n ATOM,\n STRING,\n { // relevance booster\n begin: /:-/\n },\n { // relevance booster\n begin: /\\.$/\n }\n ]\n };\n}\n\nmodule.exports = mercury;\n","/*\nLanguage: MIPS Assembly\nAuthor: Nebuleon Fumika <nebuleon.fumika@gmail.com>\nDescription: MIPS Assembly (up to MIPS32R2)\nWebsite: https://en.wikipedia.org/wiki/MIPS_architecture\nCategory: assembler\n*/\n\nfunction mipsasm(hljs) {\n // local labels: %?[FB]?[AT]?\\d{1,2}\\w+\n return {\n name: 'MIPS Assembly',\n case_insensitive: true,\n aliases: [ 'mips' ],\n keywords: {\n $pattern: '\\\\.?' + hljs.IDENT_RE,\n meta:\n // GNU preprocs\n '.2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .ltorg ',\n built_in:\n '$0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 ' + // integer registers\n '$16 $17 $18 $19 $20 $21 $22 $23 $24 $25 $26 $27 $28 $29 $30 $31 ' + // integer registers\n 'zero at v0 v1 a0 a1 a2 a3 a4 a5 a6 a7 ' + // integer register aliases\n 't0 t1 t2 t3 t4 t5 t6 t7 t8 t9 s0 s1 s2 s3 s4 s5 s6 s7 s8 ' + // integer register aliases\n 'k0 k1 gp sp fp ra ' + // integer register aliases\n '$f0 $f1 $f2 $f2 $f4 $f5 $f6 $f7 $f8 $f9 $f10 $f11 $f12 $f13 $f14 $f15 ' + // floating-point registers\n '$f16 $f17 $f18 $f19 $f20 $f21 $f22 $f23 $f24 $f25 $f26 $f27 $f28 $f29 $f30 $f31 ' + // floating-point registers\n 'Context Random EntryLo0 EntryLo1 Context PageMask Wired EntryHi ' + // Coprocessor 0 registers\n 'HWREna BadVAddr Count Compare SR IntCtl SRSCtl SRSMap Cause EPC PRId ' + // Coprocessor 0 registers\n 'EBase Config Config1 Config2 Config3 LLAddr Debug DEPC DESAVE CacheErr ' + // Coprocessor 0 registers\n 'ECC ErrorEPC TagLo DataLo TagHi DataHi WatchLo WatchHi PerfCtl PerfCnt ' // Coprocessor 0 registers\n },\n contains: [\n {\n className: 'keyword',\n begin: '\\\\b(' + // mnemonics\n // 32-bit integer instructions\n 'addi?u?|andi?|b(al)?|beql?|bgez(al)?l?|bgtzl?|blezl?|bltz(al)?l?|' +\n 'bnel?|cl[oz]|divu?|ext|ins|j(al)?|jalr(\\\\.hb)?|jr(\\\\.hb)?|lbu?|lhu?|' +\n 'll|lui|lw[lr]?|maddu?|mfhi|mflo|movn|movz|move|msubu?|mthi|mtlo|mul|' +\n 'multu?|nop|nor|ori?|rotrv?|sb|sc|se[bh]|sh|sllv?|slti?u?|srav?|' +\n 'srlv?|subu?|sw[lr]?|xori?|wsbh|' +\n // floating-point instructions\n 'abs\\\\.[sd]|add\\\\.[sd]|alnv.ps|bc1[ft]l?|' +\n 'c\\\\.(s?f|un|u?eq|[ou]lt|[ou]le|ngle?|seq|l[et]|ng[et])\\\\.[sd]|' +\n '(ceil|floor|round|trunc)\\\\.[lw]\\\\.[sd]|cfc1|cvt\\\\.d\\\\.[lsw]|' +\n 'cvt\\\\.l\\\\.[dsw]|cvt\\\\.ps\\\\.s|cvt\\\\.s\\\\.[dlw]|cvt\\\\.s\\\\.p[lu]|cvt\\\\.w\\\\.[dls]|' +\n 'div\\\\.[ds]|ldx?c1|luxc1|lwx?c1|madd\\\\.[sd]|mfc1|mov[fntz]?\\\\.[ds]|' +\n 'msub\\\\.[sd]|mth?c1|mul\\\\.[ds]|neg\\\\.[ds]|nmadd\\\\.[ds]|nmsub\\\\.[ds]|' +\n 'p[lu][lu]\\\\.ps|recip\\\\.fmt|r?sqrt\\\\.[ds]|sdx?c1|sub\\\\.[ds]|suxc1|' +\n 'swx?c1|' +\n // system control instructions\n 'break|cache|d?eret|[de]i|ehb|mfc0|mtc0|pause|prefx?|rdhwr|' +\n 'rdpgpr|sdbbp|ssnop|synci?|syscall|teqi?|tgei?u?|tlb(p|r|w[ir])|' +\n 'tlti?u?|tnei?|wait|wrpgpr' +\n ')',\n end: '\\\\s'\n },\n // lines ending with ; or # aren't really comments, probably auto-detect fail\n hljs.COMMENT('[;#](?!\\\\s*$)', '$'),\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: '\\'',\n end: '[^\\\\\\\\]\\'',\n relevance: 0\n },\n {\n className: 'title',\n begin: '\\\\|',\n end: '\\\\|',\n illegal: '\\\\n',\n relevance: 0\n },\n {\n className: 'number',\n variants: [\n { // hex\n begin: '0x[0-9a-f]+'\n },\n { // bare number\n begin: '\\\\b-?\\\\d+'\n }\n ],\n relevance: 0\n },\n {\n className: 'symbol',\n variants: [\n { // GNU MIPS syntax\n begin: '^\\\\s*[a-z_\\\\.\\\\$][a-z0-9_\\\\.\\\\$]+:'\n },\n { // numbered local labels\n begin: '^\\\\s*[0-9]+:'\n },\n { // number local label reference (backwards, forwards)\n begin: '[0-9]+[bf]'\n }\n ],\n relevance: 0\n }\n ],\n // forward slashes are not allowed\n illegal: /\\//\n };\n}\n\nmodule.exports = mipsasm;\n","/*\nLanguage: Mizar\nDescription: The Mizar Language is a formal language derived from the mathematical vernacular.\nAuthor: Kelley van Evert <kelleyvanevert@gmail.com>\nWebsite: http://mizar.org/language/\nCategory: scientific\n*/\n\nfunction mizar(hljs) {\n return {\n name: 'Mizar',\n keywords:\n 'environ vocabularies notations constructors definitions ' +\n 'registrations theorems schemes requirements begin end definition ' +\n 'registration cluster existence pred func defpred deffunc theorem ' +\n 'proof let take assume then thus hence ex for st holds consider ' +\n 'reconsider such that and in provided of as from be being by means ' +\n 'equals implies iff redefine define now not or attr is mode ' +\n 'suppose per cases set thesis contradiction scheme reserve struct ' +\n 'correctness compatibility coherence symmetry assymetry ' +\n 'reflexivity irreflexivity connectedness uniqueness commutativity ' +\n 'idempotence involutiveness projectivity',\n contains: [\n hljs.COMMENT('::', '$')\n ]\n };\n}\n\nmodule.exports = mizar;\n","/*\nLanguage: Mojolicious\nRequires: xml.js, perl.js\nAuthor: Dotan Dimet <dotan@corky.net>\nDescription: Mojolicious .ep (Embedded Perl) templates\nWebsite: https://mojolicious.org\nCategory: template\n*/\nfunction mojolicious(hljs) {\n return {\n name: 'Mojolicious',\n subLanguage: 'xml',\n contains: [\n {\n className: 'meta',\n begin: '^__(END|DATA)__$'\n },\n // mojolicious line\n {\n begin: \"^\\\\s*%{1,2}={0,2}\",\n end: '$',\n subLanguage: 'perl'\n },\n // mojolicious block\n {\n begin: \"<%{1,2}={0,2}\",\n end: \"={0,1}%>\",\n subLanguage: 'perl',\n excludeBegin: true,\n excludeEnd: true\n }\n ]\n };\n}\n\nmodule.exports = mojolicious;\n","/*\nLanguage: Monkey\nDescription: Monkey2 is an easy to use, cross platform, games oriented programming language from Blitz Research.\nAuthor: Arthur Bikmullin <devolonter@gmail.com>\nWebsite: https://blitzresearch.itch.io/monkey2\n*/\n\nfunction monkey(hljs) {\n const NUMBER = {\n className: 'number',\n relevance: 0,\n variants: [\n {\n begin: '[$][a-fA-F0-9]+'\n },\n hljs.NUMBER_MODE\n ]\n };\n\n return {\n name: 'Monkey',\n case_insensitive: true,\n keywords: {\n keyword: 'public private property continue exit extern new try catch ' +\n 'eachin not abstract final select case default const local global field ' +\n 'end if then else elseif endif while wend repeat until forever for ' +\n 'to step next return module inline throw import',\n\n built_in: 'DebugLog DebugStop Error Print ACos ACosr ASin ASinr ATan ATan2 ATan2r ATanr Abs Abs Ceil ' +\n 'Clamp Clamp Cos Cosr Exp Floor Log Max Max Min Min Pow Sgn Sgn Sin Sinr Sqrt Tan Tanr Seed PI HALFPI TWOPI',\n\n literal: 'true false null and or shl shr mod'\n },\n illegal: /\\/\\*/,\n contains: [\n hljs.COMMENT('#rem', '#end'),\n hljs.COMMENT(\n \"'\",\n '$',\n {\n relevance: 0\n }\n ),\n {\n className: 'function',\n beginKeywords: 'function method',\n end: '[(=:]|$',\n illegal: /\\n/,\n contains: [ hljs.UNDERSCORE_TITLE_MODE ]\n },\n {\n className: 'class',\n beginKeywords: 'class interface',\n end: '$',\n contains: [\n {\n beginKeywords: 'extends implements'\n },\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n className: 'built_in',\n begin: '\\\\b(self|super)\\\\b'\n },\n {\n className: 'meta',\n begin: '\\\\s*#',\n end: '$',\n keywords: {\n 'meta-keyword': 'if else elseif endif end then'\n }\n },\n {\n className: 'meta',\n begin: '^\\\\s*strict\\\\b'\n },\n {\n beginKeywords: 'alias',\n end: '=',\n contains: [ hljs.UNDERSCORE_TITLE_MODE ]\n },\n hljs.QUOTE_STRING_MODE,\n NUMBER\n ]\n };\n}\n\nmodule.exports = monkey;\n","/*\nLanguage: MoonScript\nAuthor: Billy Quith <chinbillybilbo@gmail.com>\nDescription: MoonScript is a programming language that transcompiles to Lua.\nOrigin: coffeescript.js\nWebsite: http://moonscript.org/\nCategory: scripting\n*/\n\nfunction moonscript(hljs) {\n const KEYWORDS = {\n keyword:\n // Moonscript keywords\n 'if then not for in while do return else elseif break continue switch and or ' +\n 'unless when class extends super local import export from using',\n literal:\n 'true false nil',\n built_in:\n '_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load ' +\n 'loadfile loadstring module next pairs pcall print rawequal rawget rawset require ' +\n 'select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug ' +\n 'io math os package string table'\n };\n const JS_IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\n const SUBST = {\n className: 'subst',\n begin: /#\\{/,\n end: /\\}/,\n keywords: KEYWORDS\n };\n const EXPRESSIONS = [\n hljs.inherit(hljs.C_NUMBER_MODE,\n {\n starts: {\n end: '(\\\\s*/)?',\n relevance: 0\n }\n }), // a number tries to eat the following slash to prevent treating it as a regexp\n {\n className: 'string',\n variants: [\n {\n begin: /'/,\n end: /'/,\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: /\"/,\n end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n }\n ]\n },\n {\n className: 'built_in',\n begin: '@__' + hljs.IDENT_RE\n },\n {\n begin: '@' + hljs.IDENT_RE // relevance booster on par with CoffeeScript\n },\n {\n begin: hljs.IDENT_RE + '\\\\\\\\' + hljs.IDENT_RE // inst\\method\n }\n ];\n SUBST.contains = EXPRESSIONS;\n\n const TITLE = hljs.inherit(hljs.TITLE_MODE, {\n begin: JS_IDENT_RE\n });\n const POSSIBLE_PARAMS_RE = '(\\\\(.*\\\\)\\\\s*)?\\\\B[-=]>';\n const PARAMS = {\n className: 'params',\n begin: '\\\\([^\\\\(]',\n returnBegin: true,\n /* We need another contained nameless mode to not have every nested\n pair of parens to be called \"params\" */\n contains: [\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n contains: [ 'self' ].concat(EXPRESSIONS)\n }\n ]\n };\n\n return {\n name: 'MoonScript',\n aliases: [ 'moon' ],\n keywords: KEYWORDS,\n illegal: /\\/\\*/,\n contains: EXPRESSIONS.concat([\n hljs.COMMENT('--', '$'),\n {\n className: 'function', // function: -> =>\n begin: '^\\\\s*' + JS_IDENT_RE + '\\\\s*=\\\\s*' + POSSIBLE_PARAMS_RE,\n end: '[-=]>',\n returnBegin: true,\n contains: [\n TITLE,\n PARAMS\n ]\n },\n {\n begin: /[\\(,:=]\\s*/, // anonymous function start\n relevance: 0,\n contains: [\n {\n className: 'function',\n begin: POSSIBLE_PARAMS_RE,\n end: '[-=]>',\n returnBegin: true,\n contains: [ PARAMS ]\n }\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class',\n end: '$',\n illegal: /[:=\"\\[\\]]/,\n contains: [\n {\n beginKeywords: 'extends',\n endsWithParent: true,\n illegal: /[:=\"\\[\\]]/,\n contains: [ TITLE ]\n },\n TITLE\n ]\n },\n {\n className: 'name', // table\n begin: JS_IDENT_RE + ':',\n end: ':',\n returnBegin: true,\n returnEnd: true,\n relevance: 0\n }\n ])\n };\n}\n\nmodule.exports = moonscript;\n","/*\n Language: N1QL\n Author: Andres Täht <andres.taht@gmail.com>\n Contributors: Rene Saarsoo <nene@triin.net>\n Description: Couchbase query language\n Website: https://www.couchbase.com/products/n1ql\n */\n\nfunction n1ql(hljs) {\n return {\n name: 'N1QL',\n case_insensitive: true,\n contains: [\n {\n beginKeywords:\n 'build create index delete drop explain infer|10 insert merge prepare select update upsert|10',\n end: /;/, endsWithParent: true,\n keywords: {\n // Taken from http://developer.couchbase.com/documentation/server/current/n1ql/n1ql-language-reference/reservedwords.html\n keyword:\n 'all alter analyze and any array as asc begin between binary boolean break bucket build by call ' +\n 'case cast cluster collate collection commit connect continue correlate cover create database ' +\n 'dataset datastore declare decrement delete derived desc describe distinct do drop each element ' +\n 'else end every except exclude execute exists explain fetch first flatten for force from ' +\n 'function grant group gsi having if ignore ilike in include increment index infer inline inner ' +\n 'insert intersect into is join key keys keyspace known last left let letting like limit lsm map ' +\n 'mapping matched materialized merge minus namespace nest not number object offset on ' +\n 'option or order outer over parse partition password path pool prepare primary private privilege ' +\n 'procedure public raw realm reduce rename return returning revoke right role rollback satisfies ' +\n 'schema select self semi set show some start statistics string system then to transaction trigger ' +\n 'truncate under union unique unknown unnest unset update upsert use user using validate value ' +\n 'valued values via view when where while with within work xor',\n // Taken from http://developer.couchbase.com/documentation/server/4.5/n1ql/n1ql-language-reference/literals.html\n literal:\n 'true false null missing|5',\n // Taken from http://developer.couchbase.com/documentation/server/4.5/n1ql/n1ql-language-reference/functions.html\n built_in:\n 'array_agg array_append array_concat array_contains array_count array_distinct array_ifnull array_length ' +\n 'array_max array_min array_position array_prepend array_put array_range array_remove array_repeat array_replace ' +\n 'array_reverse array_sort array_sum avg count max min sum greatest least ifmissing ifmissingornull ifnull ' +\n 'missingif nullif ifinf ifnan ifnanorinf naninf neginfif posinfif clock_millis clock_str date_add_millis ' +\n 'date_add_str date_diff_millis date_diff_str date_part_millis date_part_str date_trunc_millis date_trunc_str ' +\n 'duration_to_str millis str_to_millis millis_to_str millis_to_utc millis_to_zone_name now_millis now_str ' +\n 'str_to_duration str_to_utc str_to_zone_name decode_json encode_json encoded_size poly_length base64 base64_encode ' +\n 'base64_decode meta uuid abs acos asin atan atan2 ceil cos degrees e exp ln log floor pi power radians random ' +\n 'round sign sin sqrt tan trunc object_length object_names object_pairs object_inner_pairs object_values ' +\n 'object_inner_values object_add object_put object_remove object_unwrap regexp_contains regexp_like regexp_position ' +\n 'regexp_replace contains initcap length lower ltrim position repeat replace rtrim split substr title trim upper ' +\n 'isarray isatom isboolean isnumber isobject isstring type toarray toatom toboolean tonumber toobject tostring'\n },\n contains: [\n {\n className: 'string',\n begin: '\\'', end: '\\'',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n className: 'string',\n begin: '\"', end: '\"',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n className: 'symbol',\n begin: '`', end: '`',\n contains: [hljs.BACKSLASH_ESCAPE],\n relevance: 2\n },\n hljs.C_NUMBER_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n}\n\nmodule.exports = n1ql;\n","/*\nLanguage: Nginx config\nAuthor: Peter Leonov <gojpeg@yandex.ru>\nContributors: Ivan Sagalaev <maniac@softwaremaniacs.org>\nCategory: common, config\nWebsite: https://www.nginx.com\n*/\n\nfunction nginx(hljs) {\n const VAR = {\n className: 'variable',\n variants: [\n {\n begin: /\\$\\d+/\n },\n {\n begin: /\\$\\{/,\n end: /\\}/\n },\n {\n begin: /[$@]/ + hljs.UNDERSCORE_IDENT_RE\n }\n ]\n };\n const DEFAULT = {\n endsWithParent: true,\n keywords: {\n $pattern: '[a-z/_]+',\n literal:\n 'on off yes no true false none blocked debug info notice warn error crit ' +\n 'select break last permanent redirect kqueue rtsig epoll poll /dev/poll'\n },\n relevance: 0,\n illegal: '=>',\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n className: 'string',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VAR\n ],\n variants: [\n {\n begin: /\"/,\n end: /\"/\n },\n {\n begin: /'/,\n end: /'/\n }\n ]\n },\n // this swallows entire URLs to avoid detecting numbers within\n {\n begin: '([a-z]+):/',\n end: '\\\\s',\n endsWithParent: true,\n excludeEnd: true,\n contains: [ VAR ]\n },\n {\n className: 'regexp',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VAR\n ],\n variants: [\n {\n begin: \"\\\\s\\\\^\",\n end: \"\\\\s|\\\\{|;\",\n returnEnd: true\n },\n // regexp locations (~, ~*)\n {\n begin: \"~\\\\*?\\\\s+\",\n end: \"\\\\s|\\\\{|;\",\n returnEnd: true\n },\n // *.example.com\n {\n begin: \"\\\\*(\\\\.[a-z\\\\-]+)+\"\n },\n // sub.example.*\n {\n begin: \"([a-z\\\\-]+\\\\.)+\\\\*\"\n }\n ]\n },\n // IP\n {\n className: 'number',\n begin: '\\\\b\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}(:\\\\d{1,5})?\\\\b'\n },\n // units\n {\n className: 'number',\n begin: '\\\\b\\\\d+[kKmMgGdshdwy]*\\\\b',\n relevance: 0\n },\n VAR\n ]\n };\n\n return {\n name: 'Nginx config',\n aliases: [ 'nginxconf' ],\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s+\\\\{',\n returnBegin: true,\n end: /\\{/,\n contains: [\n {\n className: 'section',\n begin: hljs.UNDERSCORE_IDENT_RE\n }\n ],\n relevance: 0\n },\n {\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s',\n end: ';|\\\\{',\n returnBegin: true,\n contains: [\n {\n className: 'attribute',\n begin: hljs.UNDERSCORE_IDENT_RE,\n starts: DEFAULT\n }\n ],\n relevance: 0\n }\n ],\n illegal: '[^\\\\s\\\\}]'\n };\n}\n\nmodule.exports = nginx;\n","/*\nLanguage: Nim\nDescription: Nim is a statically typed compiled systems programming language.\nWebsite: https://nim-lang.org\nCategory: system\n*/\n\nfunction nim(hljs) {\n return {\n name: 'Nim',\n keywords: {\n keyword:\n 'addr and as asm bind block break case cast const continue converter ' +\n 'discard distinct div do elif else end enum except export finally ' +\n 'for from func generic if import in include interface is isnot iterator ' +\n 'let macro method mixin mod nil not notin object of or out proc ptr ' +\n 'raise ref return shl shr static template try tuple type using var ' +\n 'when while with without xor yield',\n literal:\n 'shared guarded stdin stdout stderr result true false',\n built_in:\n 'int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 float ' +\n 'float32 float64 bool char string cstring pointer expr stmt void ' +\n 'auto any range array openarray varargs seq set clong culong cchar ' +\n 'cschar cshort cint csize clonglong cfloat cdouble clongdouble ' +\n 'cuchar cushort cuint culonglong cstringarray semistatic'\n },\n contains: [\n {\n className: 'meta', // Actually pragma\n begin: /\\{\\./,\n end: /\\.\\}/,\n relevance: 10\n },\n {\n className: 'string',\n begin: /[a-zA-Z]\\w*\"/,\n end: /\"/,\n contains: [\n {\n begin: /\"\"/\n }\n ]\n },\n {\n className: 'string',\n begin: /([a-zA-Z]\\w*)?\"\"\"/,\n end: /\"\"\"/\n },\n hljs.QUOTE_STRING_MODE,\n {\n className: 'type',\n begin: /\\b[A-Z]\\w+\\b/,\n relevance: 0\n },\n {\n className: 'number',\n relevance: 0,\n variants: [\n {\n begin: /\\b(0[xX][0-9a-fA-F][_0-9a-fA-F]*)('?[iIuU](8|16|32|64))?/\n },\n {\n begin: /\\b(0o[0-7][_0-7]*)('?[iIuUfF](8|16|32|64))?/\n },\n {\n begin: /\\b(0(b|B)[01][_01]*)('?[iIuUfF](8|16|32|64))?/\n },\n {\n begin: /\\b(\\d[_\\d]*)('?[iIuUfF](8|16|32|64))?/\n }\n ]\n },\n hljs.HASH_COMMENT_MODE\n ]\n };\n}\n\nmodule.exports = nim;\n","/*\nLanguage: Nix\nAuthor: Domen Kožar <domen@dev.si>\nDescription: Nix functional language\nWebsite: http://nixos.org/nix\n*/\n\nfunction nix(hljs) {\n const NIX_KEYWORDS = {\n keyword:\n 'rec with let in inherit assert if else then',\n literal:\n 'true false or and null',\n built_in:\n 'import abort baseNameOf dirOf isNull builtins map removeAttrs throw ' +\n 'toString derivation'\n };\n const ANTIQUOTE = {\n className: 'subst',\n begin: /\\$\\{/,\n end: /\\}/,\n keywords: NIX_KEYWORDS\n };\n const ATTRS = {\n begin: /[a-zA-Z0-9-_]+(\\s*=)/,\n returnBegin: true,\n relevance: 0,\n contains: [\n {\n className: 'attr',\n begin: /\\S+/\n }\n ]\n };\n const STRING = {\n className: 'string',\n contains: [ ANTIQUOTE ],\n variants: [\n {\n begin: \"''\",\n end: \"''\"\n },\n {\n begin: '\"',\n end: '\"'\n }\n ]\n };\n const EXPRESSIONS = [\n hljs.NUMBER_MODE,\n hljs.HASH_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n ATTRS\n ];\n ANTIQUOTE.contains = EXPRESSIONS;\n return {\n name: 'Nix',\n aliases: [ \"nixos\" ],\n keywords: NIX_KEYWORDS,\n contains: EXPRESSIONS\n };\n}\n\nmodule.exports = nix;\n","/*\nLanguage: Node REPL\nRequires: javascript.js\nAuthor: Marat Nagayev <nagaevmt@yandex.ru>\nCategory: scripting\n*/\n\n/** @type LanguageFn */\nfunction nodeRepl(hljs) {\n return {\n name: 'Node REPL',\n contains: [\n {\n className: 'meta',\n starts: {\n // a space separates the REPL prefix from the actual code\n // this is purely for cleaner HTML output\n end: / |$/,\n starts: {\n end: '$',\n subLanguage: 'javascript'\n }\n },\n variants: [\n {\n begin: /^>(?=[ ]|$)/\n },\n {\n begin: /^\\.\\.\\.(?=[ ]|$)/\n }\n ]\n }\n ]\n };\n}\n\nmodule.exports = nodeRepl;\n","/*\nLanguage: NSIS\nDescription: Nullsoft Scriptable Install System\nAuthor: Jan T. Sott <jan.sott@gmail.com>\nWebsite: https://nsis.sourceforge.io/Main_Page\n*/\n\nfunction nsis(hljs) {\n const CONSTANTS = {\n className: 'variable',\n begin: /\\$(ADMINTOOLS|APPDATA|CDBURN_AREA|CMDLINE|COMMONFILES32|COMMONFILES64|COMMONFILES|COOKIES|DESKTOP|DOCUMENTS|EXEDIR|EXEFILE|EXEPATH|FAVORITES|FONTS|HISTORY|HWNDPARENT|INSTDIR|INTERNET_CACHE|LANGUAGE|LOCALAPPDATA|MUSIC|NETHOOD|OUTDIR|PICTURES|PLUGINSDIR|PRINTHOOD|PROFILE|PROGRAMFILES32|PROGRAMFILES64|PROGRAMFILES|QUICKLAUNCH|RECENT|RESOURCES_LOCALIZED|RESOURCES|SENDTO|SMPROGRAMS|SMSTARTUP|STARTMENU|SYSDIR|TEMP|TEMPLATES|VIDEOS|WINDIR)/\n };\n\n const DEFINES = {\n // ${defines}\n className: 'variable',\n begin: /\\$+\\{[\\w.:-]+\\}/\n };\n\n const VARIABLES = {\n // $variables\n className: 'variable',\n begin: /\\$+\\w+/,\n illegal: /\\(\\)\\{\\}/\n };\n\n const LANGUAGES = {\n // $(language_strings)\n className: 'variable',\n begin: /\\$+\\([\\w^.:-]+\\)/\n };\n\n const PARAMETERS = {\n // command parameters\n className: 'params',\n begin: '(ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HKCR|HKCU|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM|HKPD|HKU|IDABORT|IDCANCEL|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SYSTEM|TEMPORARY)'\n };\n\n const COMPILER = {\n // !compiler_flags\n className: 'keyword',\n begin: /!(addincludedir|addplugindir|appendfile|cd|define|delfile|echo|else|endif|error|execute|finalize|getdllversion|gettlbversion|if|ifdef|ifmacrodef|ifmacrondef|ifndef|include|insertmacro|macro|macroend|makensis|packhdr|searchparse|searchreplace|system|tempfile|undef|verbose|warning)/\n };\n\n const METACHARS = {\n // $\\n, $\\r, $\\t, $$\n className: 'meta',\n begin: /\\$(\\\\[nrt]|\\$)/\n };\n\n const PLUGINS = {\n // plug::ins\n className: 'class',\n begin: /\\w+::\\w+/\n };\n\n const STRING = {\n className: 'string',\n variants: [\n {\n begin: '\"',\n end: '\"'\n },\n {\n begin: '\\'',\n end: '\\''\n },\n {\n begin: '`',\n end: '`'\n }\n ],\n illegal: /\\n/,\n contains: [\n METACHARS,\n CONSTANTS,\n DEFINES,\n VARIABLES,\n LANGUAGES\n ]\n };\n\n return {\n name: 'NSIS',\n case_insensitive: false,\n keywords: {\n keyword:\n 'Abort AddBrandingImage AddSize AllowRootDirInstall AllowSkipFiles AutoCloseWindow BGFont BGGradient BrandingText BringToFront Call CallInstDLL Caption ChangeUI CheckBitmap ClearErrors CompletedText ComponentText CopyFiles CRCCheck CreateDirectory CreateFont CreateShortCut Delete DeleteINISec DeleteINIStr DeleteRegKey DeleteRegValue DetailPrint DetailsButtonText DirText DirVar DirVerify EnableWindow EnumRegKey EnumRegValue Exch Exec ExecShell ExecShellWait ExecWait ExpandEnvStrings File FileBufSize FileClose FileErrorText FileOpen FileRead FileReadByte FileReadUTF16LE FileReadWord FileWriteUTF16LE FileSeek FileWrite FileWriteByte FileWriteWord FindClose FindFirst FindNext FindWindow FlushINI GetCurInstType GetCurrentAddress GetDlgItem GetDLLVersion GetDLLVersionLocal GetErrorLevel GetFileTime GetFileTimeLocal GetFullPathName GetFunctionAddress GetInstDirError GetKnownFolderPath GetLabelAddress GetTempFileName Goto HideWindow Icon IfAbort IfErrors IfFileExists IfRebootFlag IfRtlLanguage IfShellVarContextAll IfSilent InitPluginsDir InstallButtonText InstallColors InstallDir InstallDirRegKey InstProgressFlags InstType InstTypeGetText InstTypeSetText Int64Cmp Int64CmpU Int64Fmt IntCmp IntCmpU IntFmt IntOp IntPtrCmp IntPtrCmpU IntPtrOp IsWindow LangString LicenseBkColor LicenseData LicenseForceSelection LicenseLangString LicenseText LoadAndSetImage LoadLanguageFile LockWindow LogSet LogText ManifestDPIAware ManifestLongPathAware ManifestMaxVersionTested ManifestSupportedOS MessageBox MiscButtonText Name Nop OutFile Page PageCallbacks PEAddResource PEDllCharacteristics PERemoveResource PESubsysVer Pop Push Quit ReadEnvStr ReadINIStr ReadRegDWORD ReadRegStr Reboot RegDLL Rename RequestExecutionLevel ReserveFile Return RMDir SearchPath SectionGetFlags SectionGetInstTypes SectionGetSize SectionGetText SectionIn SectionSetFlags SectionSetInstTypes SectionSetSize SectionSetText SendMessage SetAutoClose SetBrandingImage SetCompress SetCompressor SetCompressorDictSize SetCtlColors SetCurInstType SetDatablockOptimize SetDateSave SetDetailsPrint SetDetailsView SetErrorLevel SetErrors SetFileAttributes SetFont SetOutPath SetOverwrite SetRebootFlag SetRegView SetShellVarContext SetSilent ShowInstDetails ShowUninstDetails ShowWindow SilentInstall SilentUnInstall Sleep SpaceTexts StrCmp StrCmpS StrCpy StrLen SubCaption Unicode UninstallButtonText UninstallCaption UninstallIcon UninstallSubCaption UninstallText UninstPage UnRegDLL Var VIAddVersionKey VIFileVersion VIProductVersion WindowIcon WriteINIStr WriteRegBin WriteRegDWORD WriteRegExpandStr WriteRegMultiStr WriteRegNone WriteRegStr WriteUninstaller XPStyle',\n literal:\n 'admin all auto both bottom bzip2 colored components current custom directory false force hide highest ifdiff ifnewer instfiles lastused leave left license listonly lzma nevershow none normal notset off on open print right show silent silentlog smooth textonly top true try un.components un.custom un.directory un.instfiles un.license uninstConfirm user Win10 Win7 Win8 WinVista zlib'\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.COMMENT(\n ';',\n '$',\n {\n relevance: 0\n }\n ),\n {\n className: 'function',\n beginKeywords: 'Function PageEx Section SectionGroup',\n end: '$'\n },\n STRING,\n COMPILER,\n DEFINES,\n VARIABLES,\n LANGUAGES,\n PARAMETERS,\n PLUGINS,\n hljs.NUMBER_MODE\n ]\n };\n}\n\nmodule.exports = nsis;\n","/*\nLanguage: Objective-C\nAuthor: Valerii Hiora <valerii.hiora@gmail.com>\nContributors: Angel G. Olloqui <angelgarcia.mail@gmail.com>, Matt Diephouse <matt@diephouse.com>, Andrew Farmer <ahfarmer@gmail.com>, Minh Nguyễn <mxn@1ec5.org>\nWebsite: https://developer.apple.com/documentation/objectivec\nCategory: common\n*/\n\nfunction objectivec(hljs) {\n const API_CLASS = {\n className: 'built_in',\n begin: '\\\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\\\w+'\n };\n const IDENTIFIER_RE = /[a-zA-Z@][a-zA-Z0-9_]*/;\n const OBJC_KEYWORDS = {\n $pattern: IDENTIFIER_RE,\n keyword:\n 'int float while char export sizeof typedef const struct for union ' +\n 'unsigned long volatile static bool mutable if do return goto void ' +\n 'enum else break extern asm case short default double register explicit ' +\n 'signed typename this switch continue wchar_t inline readonly assign ' +\n 'readwrite self @synchronized id typeof ' +\n 'nonatomic super unichar IBOutlet IBAction strong weak copy ' +\n 'in out inout bycopy byref oneway __strong __weak __block __autoreleasing ' +\n '@private @protected @public @try @property @end @throw @catch @finally ' +\n '@autoreleasepool @synthesize @dynamic @selector @optional @required ' +\n '@encode @package @import @defs @compatibility_alias ' +\n '__bridge __bridge_transfer __bridge_retained __bridge_retain ' +\n '__covariant __contravariant __kindof ' +\n '_Nonnull _Nullable _Null_unspecified ' +\n '__FUNCTION__ __PRETTY_FUNCTION__ __attribute__ ' +\n 'getter setter retain unsafe_unretained ' +\n 'nonnull nullable null_unspecified null_resettable class instancetype ' +\n 'NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER ' +\n 'NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED ' +\n 'NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE ' +\n 'NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END ' +\n 'NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW ' +\n 'NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN',\n literal:\n 'false true FALSE TRUE nil YES NO NULL',\n built_in:\n 'BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once'\n };\n const CLASS_KEYWORDS = {\n $pattern: IDENTIFIER_RE,\n keyword: '@interface @class @protocol @implementation'\n };\n return {\n name: 'Objective-C',\n aliases: [\n 'mm',\n 'objc',\n 'obj-c',\n 'obj-c++',\n 'objective-c++'\n ],\n keywords: OBJC_KEYWORDS,\n illegal: '</',\n contains: [\n API_CLASS,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n {\n className: 'string',\n variants: [\n {\n begin: '@\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n }\n ]\n },\n {\n className: 'meta',\n begin: /#\\s*[a-z]+\\b/,\n end: /$/,\n keywords: {\n 'meta-keyword':\n 'if else elif endif define undef warning error line ' +\n 'pragma ifdef ifndef include'\n },\n contains: [\n {\n begin: /\\\\\\n/,\n relevance: 0\n },\n hljs.inherit(hljs.QUOTE_STRING_MODE, {\n className: 'meta-string'\n }),\n {\n className: 'meta-string',\n begin: /<.*?>/,\n end: /$/,\n illegal: '\\\\n'\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n className: 'class',\n begin: '(' + CLASS_KEYWORDS.keyword.split(' ').join('|') + ')\\\\b',\n end: /(\\{|$)/,\n excludeEnd: true,\n keywords: CLASS_KEYWORDS,\n contains: [ hljs.UNDERSCORE_TITLE_MODE ]\n },\n {\n begin: '\\\\.' + hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n }\n ]\n };\n}\n\nmodule.exports = objectivec;\n","/*\nLanguage: OCaml\nAuthor: Mehdi Dogguy <mehdi@dogguy.org>\nContributors: Nicolas Braud-Santoni <nicolas.braud-santoni@ens-cachan.fr>, Mickael Delahaye <mickael.delahaye@gmail.com>\nDescription: OCaml language definition.\nWebsite: https://ocaml.org\nCategory: functional\n*/\n\nfunction ocaml(hljs) {\n /* missing support for heredoc-like string (OCaml 4.0.2+) */\n return {\n name: 'OCaml',\n aliases: ['ml'],\n keywords: {\n $pattern: '[a-z_]\\\\w*!?',\n keyword:\n 'and as assert asr begin class constraint do done downto else end ' +\n 'exception external for fun function functor if in include ' +\n 'inherit! inherit initializer land lazy let lor lsl lsr lxor match method!|10 method ' +\n 'mod module mutable new object of open! open or private rec sig struct ' +\n 'then to try type val! val virtual when while with ' +\n /* camlp4 */\n 'parser value',\n built_in:\n /* built-in types */\n 'array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 string unit ' +\n /* (some) types in Pervasives */\n 'in_channel out_channel ref',\n literal:\n 'true false'\n },\n illegal: /\\/\\/|>>/,\n contains: [\n {\n className: 'literal',\n begin: '\\\\[(\\\\|\\\\|)?\\\\]|\\\\(\\\\)',\n relevance: 0\n },\n hljs.COMMENT(\n '\\\\(\\\\*',\n '\\\\*\\\\)',\n {\n contains: ['self']\n }\n ),\n { /* type variable */\n className: 'symbol',\n begin: '\\'[A-Za-z_](?!\\')[\\\\w\\']*'\n /* the grammar is ambiguous on how 'a'b should be interpreted but not the compiler */\n },\n { /* polymorphic variant */\n className: 'type',\n begin: '`[A-Z][\\\\w\\']*'\n },\n { /* module or constructor */\n className: 'type',\n begin: '\\\\b[A-Z][\\\\w\\']*',\n relevance: 0\n },\n { /* don't color identifiers, but safely catch all identifiers with '*/\n begin: '[a-z_]\\\\w*\\'[\\\\w\\']*', relevance: 0\n },\n hljs.inherit(hljs.APOS_STRING_MODE, {className: 'string', relevance: 0}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\n {\n className: 'number',\n begin:\n '\\\\b(0[xX][a-fA-F0-9_]+[Lln]?|' +\n '0[oO][0-7_]+[Lln]?|' +\n '0[bB][01_]+[Lln]?|' +\n '[0-9][0-9_]*([Lln]|(\\\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)',\n relevance: 0\n },\n {\n begin: /->/ // relevance booster\n }\n ]\n }\n}\n\nmodule.exports = ocaml;\n","/*\nLanguage: OpenSCAD\nAuthor: Dan Panzarella <alsoelp@gmail.com>\nDescription: OpenSCAD is a language for the 3D CAD modeling software of the same name.\nWebsite: https://www.openscad.org\nCategory: scientific\n*/\n\nfunction openscad(hljs) {\n const SPECIAL_VARS = {\n className: 'keyword',\n begin: '\\\\$(f[asn]|t|vp[rtd]|children)'\n };\n const LITERALS = {\n className: 'literal',\n begin: 'false|true|PI|undef'\n };\n const NUMBERS = {\n className: 'number',\n begin: '\\\\b\\\\d+(\\\\.\\\\d+)?(e-?\\\\d+)?', // adds 1e5, 1e-10\n relevance: 0\n };\n const STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {\n illegal: null\n });\n const PREPRO = {\n className: 'meta',\n keywords: {\n 'meta-keyword': 'include use'\n },\n begin: 'include|use <',\n end: '>'\n };\n const PARAMS = {\n className: 'params',\n begin: '\\\\(',\n end: '\\\\)',\n contains: [\n 'self',\n NUMBERS,\n STRING,\n SPECIAL_VARS,\n LITERALS\n ]\n };\n const MODIFIERS = {\n begin: '[*!#%]',\n relevance: 0\n };\n const FUNCTIONS = {\n className: 'function',\n beginKeywords: 'module function',\n end: /=|\\{/,\n contains: [\n PARAMS,\n hljs.UNDERSCORE_TITLE_MODE\n ]\n };\n\n return {\n name: 'OpenSCAD',\n aliases: [ 'scad' ],\n keywords: {\n keyword: 'function module include use for intersection_for if else \\\\%',\n literal: 'false true PI undef',\n built_in: 'circle square polygon text sphere cube cylinder polyhedron translate rotate scale resize mirror multmatrix color offset hull minkowski union difference intersection abs sign sin cos tan acos asin atan atan2 floor round ceil ln log pow sqrt exp rands min max concat lookup str chr search version version_num norm cross parent_module echo import import_dxf dxf_linear_extrude linear_extrude rotate_extrude surface projection render children dxf_cross dxf_dim let assign'\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n PREPRO,\n STRING,\n SPECIAL_VARS,\n MODIFIERS,\n FUNCTIONS\n ]\n };\n}\n\nmodule.exports = openscad;\n","/*\nLanguage: Oxygene\nAuthor: Carlo Kok <ck@remobjects.com>\nDescription: Oxygene is built on the foundation of Object Pascal, revamped and extended to be a modern language for the twenty-first century.\nWebsite: https://www.elementscompiler.com/elements/default.aspx\n*/\n\nfunction oxygene(hljs) {\n const OXYGENE_KEYWORDS = {\n $pattern: /\\.?\\w+/,\n keyword:\n 'abstract add and array as asc aspect assembly async begin break block by case class concat const copy constructor continue ' +\n 'create default delegate desc distinct div do downto dynamic each else empty end ensure enum equals event except exit extension external false ' +\n 'final finalize finalizer finally flags for forward from function future global group has if implementation implements implies in index inherited ' +\n 'inline interface into invariants is iterator join locked locking loop matching method mod module namespace nested new nil not notify nullable of ' +\n 'old on operator or order out override parallel params partial pinned private procedure property protected public queryable raise read readonly ' +\n 'record reintroduce remove repeat require result reverse sealed select self sequence set shl shr skip static step soft take then to true try tuple ' +\n 'type union unit unsafe until uses using var virtual raises volatile where while with write xor yield await mapped deprecated stdcall cdecl pascal ' +\n 'register safecall overload library platform reference packed strict published autoreleasepool selector strong weak unretained'\n };\n const CURLY_COMMENT = hljs.COMMENT(\n /\\{/,\n /\\}/,\n {\n relevance: 0\n }\n );\n const PAREN_COMMENT = hljs.COMMENT(\n '\\\\(\\\\*',\n '\\\\*\\\\)',\n {\n relevance: 10\n }\n );\n const STRING = {\n className: 'string',\n begin: '\\'',\n end: '\\'',\n contains: [\n {\n begin: '\\'\\''\n }\n ]\n };\n const CHAR_STRING = {\n className: 'string',\n begin: '(#\\\\d+)+'\n };\n const FUNCTION = {\n className: 'function',\n beginKeywords: 'function constructor destructor procedure method',\n end: '[:;]',\n keywords: 'function constructor|10 destructor|10 procedure|10 method|10',\n contains: [\n hljs.TITLE_MODE,\n {\n className: 'params',\n begin: '\\\\(',\n end: '\\\\)',\n keywords: OXYGENE_KEYWORDS,\n contains: [\n STRING,\n CHAR_STRING\n ]\n },\n CURLY_COMMENT,\n PAREN_COMMENT\n ]\n };\n return {\n name: 'Oxygene',\n case_insensitive: true,\n keywords: OXYGENE_KEYWORDS,\n illegal: '(\"|\\\\$[G-Zg-z]|\\\\/\\\\*|</|=>|->)',\n contains: [\n CURLY_COMMENT,\n PAREN_COMMENT,\n hljs.C_LINE_COMMENT_MODE,\n STRING,\n CHAR_STRING,\n hljs.NUMBER_MODE,\n FUNCTION,\n {\n className: 'class',\n begin: '=\\\\bclass\\\\b',\n end: 'end;',\n keywords: OXYGENE_KEYWORDS,\n contains: [\n STRING,\n CHAR_STRING,\n CURLY_COMMENT,\n PAREN_COMMENT,\n hljs.C_LINE_COMMENT_MODE,\n FUNCTION\n ]\n }\n ]\n };\n}\n\nmodule.exports = oxygene;\n","/*\nLanguage: Parser3\nRequires: xml.js\nAuthor: Oleg Volchkov <oleg@volchkov.net>\nWebsite: https://www.parser.ru/en/\nCategory: template\n*/\n\nfunction parser3(hljs) {\n const CURLY_SUBCOMMENT = hljs.COMMENT(\n /\\{/,\n /\\}/,\n {\n contains: [ 'self' ]\n }\n );\n return {\n name: 'Parser3',\n subLanguage: 'xml',\n relevance: 0,\n contains: [\n hljs.COMMENT('^#', '$'),\n hljs.COMMENT(\n /\\^rem\\{/,\n /\\}/,\n {\n relevance: 10,\n contains: [ CURLY_SUBCOMMENT ]\n }\n ),\n {\n className: 'meta',\n begin: '^@(?:BASE|USE|CLASS|OPTIONS)$',\n relevance: 10\n },\n {\n className: 'title',\n begin: '@[\\\\w\\\\-]+\\\\[[\\\\w^;\\\\-]*\\\\](?:\\\\[[\\\\w^;\\\\-]*\\\\])?(?:.*)$'\n },\n {\n className: 'variable',\n begin: /\\$\\{?[\\w\\-.:]+\\}?/\n },\n {\n className: 'keyword',\n begin: /\\^[\\w\\-.:]+/\n },\n {\n className: 'number',\n begin: '\\\\^#[0-9a-fA-F]+'\n },\n hljs.C_NUMBER_MODE\n ]\n };\n}\n\nmodule.exports = parser3;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] } args\n * @returns {string}\n */\nfunction either(...args) {\n const joined = '(' + args.map((x) => source(x)).join(\"|\") + \")\";\n return joined;\n}\n\n/*\nLanguage: Perl\nAuthor: Peter Leonov <gojpeg@yandex.ru>\nWebsite: https://www.perl.org\nCategory: common\n*/\n\n/** @type LanguageFn */\nfunction perl(hljs) {\n const KEYWORDS = [\n 'abs',\n 'accept',\n 'alarm',\n 'and',\n 'atan2',\n 'bind',\n 'binmode',\n 'bless',\n 'break',\n 'caller',\n 'chdir',\n 'chmod',\n 'chomp',\n 'chop',\n 'chown',\n 'chr',\n 'chroot',\n 'close',\n 'closedir',\n 'connect',\n 'continue',\n 'cos',\n 'crypt',\n 'dbmclose',\n 'dbmopen',\n 'defined',\n 'delete',\n 'die',\n 'do',\n 'dump',\n 'each',\n 'else',\n 'elsif',\n 'endgrent',\n 'endhostent',\n 'endnetent',\n 'endprotoent',\n 'endpwent',\n 'endservent',\n 'eof',\n 'eval',\n 'exec',\n 'exists',\n 'exit',\n 'exp',\n 'fcntl',\n 'fileno',\n 'flock',\n 'for',\n 'foreach',\n 'fork',\n 'format',\n 'formline',\n 'getc',\n 'getgrent',\n 'getgrgid',\n 'getgrnam',\n 'gethostbyaddr',\n 'gethostbyname',\n 'gethostent',\n 'getlogin',\n 'getnetbyaddr',\n 'getnetbyname',\n 'getnetent',\n 'getpeername',\n 'getpgrp',\n 'getpriority',\n 'getprotobyname',\n 'getprotobynumber',\n 'getprotoent',\n 'getpwent',\n 'getpwnam',\n 'getpwuid',\n 'getservbyname',\n 'getservbyport',\n 'getservent',\n 'getsockname',\n 'getsockopt',\n 'given',\n 'glob',\n 'gmtime',\n 'goto',\n 'grep',\n 'gt',\n 'hex',\n 'if',\n 'index',\n 'int',\n 'ioctl',\n 'join',\n 'keys',\n 'kill',\n 'last',\n 'lc',\n 'lcfirst',\n 'length',\n 'link',\n 'listen',\n 'local',\n 'localtime',\n 'log',\n 'lstat',\n 'lt',\n 'ma',\n 'map',\n 'mkdir',\n 'msgctl',\n 'msgget',\n 'msgrcv',\n 'msgsnd',\n 'my',\n 'ne',\n 'next',\n 'no',\n 'not',\n 'oct',\n 'open',\n 'opendir',\n 'or',\n 'ord',\n 'our',\n 'pack',\n 'package',\n 'pipe',\n 'pop',\n 'pos',\n 'print',\n 'printf',\n 'prototype',\n 'push',\n 'q|0',\n 'qq',\n 'quotemeta',\n 'qw',\n 'qx',\n 'rand',\n 'read',\n 'readdir',\n 'readline',\n 'readlink',\n 'readpipe',\n 'recv',\n 'redo',\n 'ref',\n 'rename',\n 'require',\n 'reset',\n 'return',\n 'reverse',\n 'rewinddir',\n 'rindex',\n 'rmdir',\n 'say',\n 'scalar',\n 'seek',\n 'seekdir',\n 'select',\n 'semctl',\n 'semget',\n 'semop',\n 'send',\n 'setgrent',\n 'sethostent',\n 'setnetent',\n 'setpgrp',\n 'setpriority',\n 'setprotoent',\n 'setpwent',\n 'setservent',\n 'setsockopt',\n 'shift',\n 'shmctl',\n 'shmget',\n 'shmread',\n 'shmwrite',\n 'shutdown',\n 'sin',\n 'sleep',\n 'socket',\n 'socketpair',\n 'sort',\n 'splice',\n 'split',\n 'sprintf',\n 'sqrt',\n 'srand',\n 'stat',\n 'state',\n 'study',\n 'sub',\n 'substr',\n 'symlink',\n 'syscall',\n 'sysopen',\n 'sysread',\n 'sysseek',\n 'system',\n 'syswrite',\n 'tell',\n 'telldir',\n 'tie',\n 'tied',\n 'time',\n 'times',\n 'tr',\n 'truncate',\n 'uc',\n 'ucfirst',\n 'umask',\n 'undef',\n 'unless',\n 'unlink',\n 'unpack',\n 'unshift',\n 'untie',\n 'until',\n 'use',\n 'utime',\n 'values',\n 'vec',\n 'wait',\n 'waitpid',\n 'wantarray',\n 'warn',\n 'when',\n 'while',\n 'write',\n 'x|0',\n 'xor',\n 'y|0'\n ];\n\n // https://perldoc.perl.org/perlre#Modifiers\n const REGEX_MODIFIERS = /[dualxmsipngr]{0,12}/; // aa and xx are valid, making max length 12\n const PERL_KEYWORDS = {\n $pattern: /[\\w.]+/,\n keyword: KEYWORDS.join(\" \")\n };\n const SUBST = {\n className: 'subst',\n begin: '[$@]\\\\{',\n end: '\\\\}',\n keywords: PERL_KEYWORDS\n };\n const METHOD = {\n begin: /->\\{/,\n end: /\\}/\n // contains defined later\n };\n const VAR = {\n variants: [\n {\n begin: /\\$\\d/\n },\n {\n begin: concat(\n /[$%@](\\^\\w\\b|#\\w+(::\\w+)*|\\{\\w+\\}|\\w+(::\\w*)*)/,\n // negative look-ahead tries to avoid matching patterns that are not\n // Perl at all like $ident$, @ident@, etc.\n `(?![A-Za-z])(?![@$%])`\n )\n },\n {\n begin: /[$%@][^\\s\\w{]/,\n relevance: 0\n }\n ]\n };\n const STRING_CONTAINS = [\n hljs.BACKSLASH_ESCAPE,\n SUBST,\n VAR\n ];\n const REGEX_DELIMS = [\n /!/,\n /\\//,\n /\\|/,\n /\\?/,\n /'/,\n /\"/, // valid but infrequent and weird\n /#/ // valid but infrequent and weird\n ];\n /**\n * @param {string|RegExp} prefix\n * @param {string|RegExp} open\n * @param {string|RegExp} close\n */\n const PAIRED_DOUBLE_RE = (prefix, open, close = '\\\\1') => {\n const middle = (close === '\\\\1')\n ? close\n : concat(close, open);\n return concat(\n concat(\"(?:\", prefix, \")\"),\n open,\n /(?:\\\\.|[^\\\\\\/])*?/,\n middle,\n /(?:\\\\.|[^\\\\\\/])*?/,\n close,\n REGEX_MODIFIERS\n );\n };\n /**\n * @param {string|RegExp} prefix\n * @param {string|RegExp} open\n * @param {string|RegExp} close\n */\n const PAIRED_RE = (prefix, open, close) => {\n return concat(\n concat(\"(?:\", prefix, \")\"),\n open,\n /(?:\\\\.|[^\\\\\\/])*?/,\n close,\n REGEX_MODIFIERS\n );\n };\n const PERL_DEFAULT_CONTAINS = [\n VAR,\n hljs.HASH_COMMENT_MODE,\n hljs.COMMENT(\n /^=\\w/,\n /=cut/,\n {\n endsWithParent: true\n }\n ),\n METHOD,\n {\n className: 'string',\n contains: STRING_CONTAINS,\n variants: [\n {\n begin: 'q[qwxr]?\\\\s*\\\\(',\n end: '\\\\)',\n relevance: 5\n },\n {\n begin: 'q[qwxr]?\\\\s*\\\\[',\n end: '\\\\]',\n relevance: 5\n },\n {\n begin: 'q[qwxr]?\\\\s*\\\\{',\n end: '\\\\}',\n relevance: 5\n },\n {\n begin: 'q[qwxr]?\\\\s*\\\\|',\n end: '\\\\|',\n relevance: 5\n },\n {\n begin: 'q[qwxr]?\\\\s*<',\n end: '>',\n relevance: 5\n },\n {\n begin: 'qw\\\\s+q',\n end: 'q',\n relevance: 5\n },\n {\n begin: '\\'',\n end: '\\'',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: '\"',\n end: '\"'\n },\n {\n begin: '`',\n end: '`',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: /\\{\\w+\\}/,\n relevance: 0\n },\n {\n begin: '-?\\\\w+\\\\s*=>',\n relevance: 0\n }\n ]\n },\n {\n className: 'number',\n begin: '(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b',\n relevance: 0\n },\n { // regexp container\n begin: '(\\\\/\\\\/|' + hljs.RE_STARTERS_RE + '|\\\\b(split|return|print|reverse|grep)\\\\b)\\\\s*',\n keywords: 'split return print reverse grep',\n relevance: 0,\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n className: 'regexp',\n variants: [\n // allow matching common delimiters\n { begin: PAIRED_DOUBLE_RE(\"s|tr|y\", either(...REGEX_DELIMS)) },\n // and then paired delmis\n { begin: PAIRED_DOUBLE_RE(\"s|tr|y\", \"\\\\(\", \"\\\\)\") },\n { begin: PAIRED_DOUBLE_RE(\"s|tr|y\", \"\\\\[\", \"\\\\]\") },\n { begin: PAIRED_DOUBLE_RE(\"s|tr|y\", \"\\\\{\", \"\\\\}\") }\n ],\n relevance: 2\n },\n {\n className: 'regexp',\n variants: [\n {\n // could be a comment in many languages so do not count\n // as relevant\n begin: /(m|qr)\\/\\//,\n relevance: 0\n },\n // prefix is optional with /regex/\n { begin: PAIRED_RE(\"(?:m|qr)?\", /\\//, /\\//)},\n // allow matching common delimiters\n { begin: PAIRED_RE(\"m|qr\", either(...REGEX_DELIMS), /\\1/)},\n // allow common paired delmins\n { begin: PAIRED_RE(\"m|qr\", /\\(/, /\\)/)},\n { begin: PAIRED_RE(\"m|qr\", /\\[/, /\\]/)},\n { begin: PAIRED_RE(\"m|qr\", /\\{/, /\\}/)}\n ]\n }\n ]\n },\n {\n className: 'function',\n beginKeywords: 'sub',\n end: '(\\\\s*\\\\(.*?\\\\))?[;{]',\n excludeEnd: true,\n relevance: 5,\n contains: [ hljs.TITLE_MODE ]\n },\n {\n begin: '-\\\\w\\\\b',\n relevance: 0\n },\n {\n begin: \"^__DATA__$\",\n end: \"^__END__$\",\n subLanguage: 'mojolicious',\n contains: [\n {\n begin: \"^@@.*\",\n end: \"$\",\n className: \"comment\"\n }\n ]\n }\n ];\n SUBST.contains = PERL_DEFAULT_CONTAINS;\n METHOD.contains = PERL_DEFAULT_CONTAINS;\n\n return {\n name: 'Perl',\n aliases: [\n 'pl',\n 'pm'\n ],\n keywords: PERL_KEYWORDS,\n contains: PERL_DEFAULT_CONTAINS\n };\n}\n\nmodule.exports = perl;\n","/*\nLanguage: Packet Filter config\nDescription: pf.conf — packet filter configuration file (OpenBSD)\nAuthor: Peter Piwowarski <oldlaptop654@aol.com>\nWebsite: http://man.openbsd.org/pf.conf\nCategory: config\n*/\n\nfunction pf(hljs) {\n const MACRO = {\n className: 'variable',\n begin: /\\$[\\w\\d#@][\\w\\d_]*/\n };\n const TABLE = {\n className: 'variable',\n begin: /<(?!\\/)/,\n end: />/\n };\n\n return {\n name: 'Packet Filter config',\n aliases: [ 'pf.conf' ],\n keywords: {\n $pattern: /[a-z0-9_<>-]+/,\n built_in: /* block match pass are \"actions\" in pf.conf(5), the rest are\n * lexically similar top-level commands.\n */\n 'block match pass load anchor|5 antispoof|10 set table',\n keyword:\n 'in out log quick on rdomain inet inet6 proto from port os to route ' +\n 'allow-opts divert-packet divert-reply divert-to flags group icmp-type ' +\n 'icmp6-type label once probability recieved-on rtable prio queue ' +\n 'tos tag tagged user keep fragment for os drop ' +\n 'af-to|10 binat-to|10 nat-to|10 rdr-to|10 bitmask least-stats random round-robin ' +\n 'source-hash static-port ' +\n 'dup-to reply-to route-to ' +\n 'parent bandwidth default min max qlimit ' +\n 'block-policy debug fingerprints hostid limit loginterface optimization ' +\n 'reassemble ruleset-optimization basic none profile skip state-defaults ' +\n 'state-policy timeout ' +\n 'const counters persist ' +\n 'no modulate synproxy state|5 floating if-bound no-sync pflow|10 sloppy ' +\n 'source-track global rule max-src-nodes max-src-states max-src-conn ' +\n 'max-src-conn-rate overload flush ' +\n 'scrub|5 max-mss min-ttl no-df|10 random-id',\n literal:\n 'all any no-route self urpf-failed egress|5 unknown'\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n MACRO,\n TABLE\n ]\n };\n}\n\nmodule.exports = pf;\n","/*\nLanguage: PostgreSQL and PL/pgSQL\nAuthor: Egor Rogov (e.rogov@postgrespro.ru)\nWebsite: https://www.postgresql.org/docs/11/sql.html\nDescription:\n This language incorporates both PostgreSQL SQL dialect and PL/pgSQL language.\n It is based on PostgreSQL version 11. Some notes:\n - Text in double-dollar-strings is _always_ interpreted as some programming code. Text\n in ordinary quotes is _never_ interpreted that way and highlighted just as a string.\n - There are quite a bit \"special cases\". That's because many keywords are not strictly\n they are keywords in some contexts and ordinary identifiers in others. Only some\n of such cases are handled; you still can get some of your identifiers highlighted\n wrong way.\n - Function names deliberately are not highlighted. There is no way to tell function\n call from other constructs, hence we can't highlight _all_ function names. And\n some names highlighted while others not looks ugly.\n*/\n\nfunction pgsql(hljs) {\n const COMMENT_MODE = hljs.COMMENT('--', '$');\n const UNQUOTED_IDENT = '[a-zA-Z_][a-zA-Z_0-9$]*';\n const DOLLAR_STRING = '\\\\$([a-zA-Z_]?|[a-zA-Z_][a-zA-Z_0-9]*)\\\\$';\n const LABEL = '<<\\\\s*' + UNQUOTED_IDENT + '\\\\s*>>';\n\n const SQL_KW =\n // https://www.postgresql.org/docs/11/static/sql-keywords-appendix.html\n // https://www.postgresql.org/docs/11/static/sql-commands.html\n // SQL commands (starting words)\n 'ABORT ALTER ANALYZE BEGIN CALL CHECKPOINT|10 CLOSE CLUSTER COMMENT COMMIT COPY CREATE DEALLOCATE DECLARE ' +\n 'DELETE DISCARD DO DROP END EXECUTE EXPLAIN FETCH GRANT IMPORT INSERT LISTEN LOAD LOCK MOVE NOTIFY ' +\n 'PREPARE REASSIGN|10 REFRESH REINDEX RELEASE RESET REVOKE ROLLBACK SAVEPOINT SECURITY SELECT SET SHOW ' +\n 'START TRUNCATE UNLISTEN|10 UPDATE VACUUM|10 VALUES ' +\n // SQL commands (others)\n 'AGGREGATE COLLATION CONVERSION|10 DATABASE DEFAULT PRIVILEGES DOMAIN TRIGGER EXTENSION FOREIGN ' +\n 'WRAPPER|10 TABLE FUNCTION GROUP LANGUAGE LARGE OBJECT MATERIALIZED VIEW OPERATOR CLASS ' +\n 'FAMILY POLICY PUBLICATION|10 ROLE RULE SCHEMA SEQUENCE SERVER STATISTICS SUBSCRIPTION SYSTEM ' +\n 'TABLESPACE CONFIGURATION DICTIONARY PARSER TEMPLATE TYPE USER MAPPING PREPARED ACCESS ' +\n 'METHOD CAST AS TRANSFORM TRANSACTION OWNED TO INTO SESSION AUTHORIZATION ' +\n 'INDEX PROCEDURE ASSERTION ' +\n // additional reserved key words\n 'ALL ANALYSE AND ANY ARRAY ASC ASYMMETRIC|10 BOTH CASE CHECK ' +\n 'COLLATE COLUMN CONCURRENTLY|10 CONSTRAINT CROSS ' +\n 'DEFERRABLE RANGE ' +\n 'DESC DISTINCT ELSE EXCEPT FOR FREEZE|10 FROM FULL HAVING ' +\n 'ILIKE IN INITIALLY INNER INTERSECT IS ISNULL JOIN LATERAL LEADING LIKE LIMIT ' +\n 'NATURAL NOT NOTNULL NULL OFFSET ON ONLY OR ORDER OUTER OVERLAPS PLACING PRIMARY ' +\n 'REFERENCES RETURNING SIMILAR SOME SYMMETRIC TABLESAMPLE THEN ' +\n 'TRAILING UNION UNIQUE USING VARIADIC|10 VERBOSE WHEN WHERE WINDOW WITH ' +\n // some of non-reserved (which are used in clauses or as PL/pgSQL keyword)\n 'BY RETURNS INOUT OUT SETOF|10 IF STRICT CURRENT CONTINUE OWNER LOCATION OVER PARTITION WITHIN ' +\n 'BETWEEN ESCAPE EXTERNAL INVOKER DEFINER WORK RENAME VERSION CONNECTION CONNECT ' +\n 'TABLES TEMP TEMPORARY FUNCTIONS SEQUENCES TYPES SCHEMAS OPTION CASCADE RESTRICT ADD ADMIN ' +\n 'EXISTS VALID VALIDATE ENABLE DISABLE REPLICA|10 ALWAYS PASSING COLUMNS PATH ' +\n 'REF VALUE OVERRIDING IMMUTABLE STABLE VOLATILE BEFORE AFTER EACH ROW PROCEDURAL ' +\n 'ROUTINE NO HANDLER VALIDATOR OPTIONS STORAGE OIDS|10 WITHOUT INHERIT DEPENDS CALLED ' +\n 'INPUT LEAKPROOF|10 COST ROWS NOWAIT SEARCH UNTIL ENCRYPTED|10 PASSWORD CONFLICT|10 ' +\n 'INSTEAD INHERITS CHARACTERISTICS WRITE CURSOR ALSO STATEMENT SHARE EXCLUSIVE INLINE ' +\n 'ISOLATION REPEATABLE READ COMMITTED SERIALIZABLE UNCOMMITTED LOCAL GLOBAL SQL PROCEDURES ' +\n 'RECURSIVE SNAPSHOT ROLLUP CUBE TRUSTED|10 INCLUDE FOLLOWING PRECEDING UNBOUNDED RANGE GROUPS ' +\n 'UNENCRYPTED|10 SYSID FORMAT DELIMITER HEADER QUOTE ENCODING FILTER OFF ' +\n // some parameters of VACUUM/ANALYZE/EXPLAIN\n 'FORCE_QUOTE FORCE_NOT_NULL FORCE_NULL COSTS BUFFERS TIMING SUMMARY DISABLE_PAGE_SKIPPING ' +\n //\n 'RESTART CYCLE GENERATED IDENTITY DEFERRED IMMEDIATE LEVEL LOGGED UNLOGGED ' +\n 'OF NOTHING NONE EXCLUDE ATTRIBUTE ' +\n // from GRANT (not keywords actually)\n 'USAGE ROUTINES ' +\n // actually literals, but look better this way (due to IS TRUE, IS FALSE, ISNULL etc)\n 'TRUE FALSE NAN INFINITY ';\n\n const ROLE_ATTRS = // only those not in keywrods already\n 'SUPERUSER NOSUPERUSER CREATEDB NOCREATEDB CREATEROLE NOCREATEROLE INHERIT NOINHERIT ' +\n 'LOGIN NOLOGIN REPLICATION NOREPLICATION BYPASSRLS NOBYPASSRLS ';\n\n const PLPGSQL_KW =\n 'ALIAS BEGIN CONSTANT DECLARE END EXCEPTION RETURN PERFORM|10 RAISE GET DIAGNOSTICS ' +\n 'STACKED|10 FOREACH LOOP ELSIF EXIT WHILE REVERSE SLICE DEBUG LOG INFO NOTICE WARNING ASSERT ' +\n 'OPEN ';\n\n const TYPES =\n // https://www.postgresql.org/docs/11/static/datatype.html\n 'BIGINT INT8 BIGSERIAL SERIAL8 BIT VARYING VARBIT BOOLEAN BOOL BOX BYTEA CHARACTER CHAR VARCHAR ' +\n 'CIDR CIRCLE DATE DOUBLE PRECISION FLOAT8 FLOAT INET INTEGER INT INT4 INTERVAL JSON JSONB LINE LSEG|10 ' +\n 'MACADDR MACADDR8 MONEY NUMERIC DEC DECIMAL PATH POINT POLYGON REAL FLOAT4 SMALLINT INT2 ' +\n 'SMALLSERIAL|10 SERIAL2|10 SERIAL|10 SERIAL4|10 TEXT TIME ZONE TIMETZ|10 TIMESTAMP TIMESTAMPTZ|10 TSQUERY|10 TSVECTOR|10 ' +\n 'TXID_SNAPSHOT|10 UUID XML NATIONAL NCHAR ' +\n 'INT4RANGE|10 INT8RANGE|10 NUMRANGE|10 TSRANGE|10 TSTZRANGE|10 DATERANGE|10 ' +\n // pseudotypes\n 'ANYELEMENT ANYARRAY ANYNONARRAY ANYENUM ANYRANGE CSTRING INTERNAL ' +\n 'RECORD PG_DDL_COMMAND VOID UNKNOWN OPAQUE REFCURSOR ' +\n // spec. type\n 'NAME ' +\n // OID-types\n 'OID REGPROC|10 REGPROCEDURE|10 REGOPER|10 REGOPERATOR|10 REGCLASS|10 REGTYPE|10 REGROLE|10 ' +\n 'REGNAMESPACE|10 REGCONFIG|10 REGDICTIONARY|10 ';// +\n\n const TYPES_RE =\n TYPES.trim()\n .split(' ')\n .map(function(val) { return val.split('|')[0]; })\n .join('|');\n\n const SQL_BI =\n 'CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURRENT_CATALOG|10 CURRENT_DATE LOCALTIME LOCALTIMESTAMP ' +\n 'CURRENT_ROLE|10 CURRENT_SCHEMA|10 SESSION_USER PUBLIC ';\n\n const PLPGSQL_BI =\n 'FOUND NEW OLD TG_NAME|10 TG_WHEN|10 TG_LEVEL|10 TG_OP|10 TG_RELID|10 TG_RELNAME|10 ' +\n 'TG_TABLE_NAME|10 TG_TABLE_SCHEMA|10 TG_NARGS|10 TG_ARGV|10 TG_EVENT|10 TG_TAG|10 ' +\n // get diagnostics\n 'ROW_COUNT RESULT_OID|10 PG_CONTEXT|10 RETURNED_SQLSTATE COLUMN_NAME CONSTRAINT_NAME ' +\n 'PG_DATATYPE_NAME|10 MESSAGE_TEXT TABLE_NAME SCHEMA_NAME PG_EXCEPTION_DETAIL|10 ' +\n 'PG_EXCEPTION_HINT|10 PG_EXCEPTION_CONTEXT|10 ';\n\n const PLPGSQL_EXCEPTIONS =\n // exceptions https://www.postgresql.org/docs/current/static/errcodes-appendix.html\n 'SQLSTATE SQLERRM|10 ' +\n 'SUCCESSFUL_COMPLETION WARNING DYNAMIC_RESULT_SETS_RETURNED IMPLICIT_ZERO_BIT_PADDING ' +\n 'NULL_VALUE_ELIMINATED_IN_SET_FUNCTION PRIVILEGE_NOT_GRANTED PRIVILEGE_NOT_REVOKED ' +\n 'STRING_DATA_RIGHT_TRUNCATION DEPRECATED_FEATURE NO_DATA NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED ' +\n 'SQL_STATEMENT_NOT_YET_COMPLETE CONNECTION_EXCEPTION CONNECTION_DOES_NOT_EXIST CONNECTION_FAILURE ' +\n 'SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION ' +\n 'TRANSACTION_RESOLUTION_UNKNOWN PROTOCOL_VIOLATION TRIGGERED_ACTION_EXCEPTION FEATURE_NOT_SUPPORTED ' +\n 'INVALID_TRANSACTION_INITIATION LOCATOR_EXCEPTION INVALID_LOCATOR_SPECIFICATION INVALID_GRANTOR ' +\n 'INVALID_GRANT_OPERATION INVALID_ROLE_SPECIFICATION DIAGNOSTICS_EXCEPTION ' +\n 'STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER CASE_NOT_FOUND CARDINALITY_VIOLATION ' +\n 'DATA_EXCEPTION ARRAY_SUBSCRIPT_ERROR CHARACTER_NOT_IN_REPERTOIRE DATETIME_FIELD_OVERFLOW ' +\n 'DIVISION_BY_ZERO ERROR_IN_ASSIGNMENT ESCAPE_CHARACTER_CONFLICT INDICATOR_OVERFLOW ' +\n 'INTERVAL_FIELD_OVERFLOW INVALID_ARGUMENT_FOR_LOGARITHM INVALID_ARGUMENT_FOR_NTILE_FUNCTION ' +\n 'INVALID_ARGUMENT_FOR_NTH_VALUE_FUNCTION INVALID_ARGUMENT_FOR_POWER_FUNCTION ' +\n 'INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION INVALID_CHARACTER_VALUE_FOR_CAST ' +\n 'INVALID_DATETIME_FORMAT INVALID_ESCAPE_CHARACTER INVALID_ESCAPE_OCTET INVALID_ESCAPE_SEQUENCE ' +\n 'NONSTANDARD_USE_OF_ESCAPE_CHARACTER INVALID_INDICATOR_PARAMETER_VALUE INVALID_PARAMETER_VALUE ' +\n 'INVALID_REGULAR_EXPRESSION INVALID_ROW_COUNT_IN_LIMIT_CLAUSE ' +\n 'INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE INVALID_TABLESAMPLE_ARGUMENT INVALID_TABLESAMPLE_REPEAT ' +\n 'INVALID_TIME_ZONE_DISPLACEMENT_VALUE INVALID_USE_OF_ESCAPE_CHARACTER MOST_SPECIFIC_TYPE_MISMATCH ' +\n 'NULL_VALUE_NOT_ALLOWED NULL_VALUE_NO_INDICATOR_PARAMETER NUMERIC_VALUE_OUT_OF_RANGE ' +\n 'SEQUENCE_GENERATOR_LIMIT_EXCEEDED STRING_DATA_LENGTH_MISMATCH STRING_DATA_RIGHT_TRUNCATION ' +\n 'SUBSTRING_ERROR TRIM_ERROR UNTERMINATED_C_STRING ZERO_LENGTH_CHARACTER_STRING ' +\n 'FLOATING_POINT_EXCEPTION INVALID_TEXT_REPRESENTATION INVALID_BINARY_REPRESENTATION ' +\n 'BAD_COPY_FILE_FORMAT UNTRANSLATABLE_CHARACTER NOT_AN_XML_DOCUMENT INVALID_XML_DOCUMENT ' +\n 'INVALID_XML_CONTENT INVALID_XML_COMMENT INVALID_XML_PROCESSING_INSTRUCTION ' +\n 'INTEGRITY_CONSTRAINT_VIOLATION RESTRICT_VIOLATION NOT_NULL_VIOLATION FOREIGN_KEY_VIOLATION ' +\n 'UNIQUE_VIOLATION CHECK_VIOLATION EXCLUSION_VIOLATION INVALID_CURSOR_STATE ' +\n 'INVALID_TRANSACTION_STATE ACTIVE_SQL_TRANSACTION BRANCH_TRANSACTION_ALREADY_ACTIVE ' +\n 'HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION ' +\n 'INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION ' +\n 'NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION READ_ONLY_SQL_TRANSACTION ' +\n 'SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED NO_ACTIVE_SQL_TRANSACTION ' +\n 'IN_FAILED_SQL_TRANSACTION IDLE_IN_TRANSACTION_SESSION_TIMEOUT INVALID_SQL_STATEMENT_NAME ' +\n 'TRIGGERED_DATA_CHANGE_VIOLATION INVALID_AUTHORIZATION_SPECIFICATION INVALID_PASSWORD ' +\n 'DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST DEPENDENT_OBJECTS_STILL_EXIST ' +\n 'INVALID_TRANSACTION_TERMINATION SQL_ROUTINE_EXCEPTION FUNCTION_EXECUTED_NO_RETURN_STATEMENT ' +\n 'MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED ' +\n 'READING_SQL_DATA_NOT_PERMITTED INVALID_CURSOR_NAME EXTERNAL_ROUTINE_EXCEPTION ' +\n 'CONTAINING_SQL_NOT_PERMITTED MODIFYING_SQL_DATA_NOT_PERMITTED ' +\n 'PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED ' +\n 'EXTERNAL_ROUTINE_INVOCATION_EXCEPTION INVALID_SQLSTATE_RETURNED NULL_VALUE_NOT_ALLOWED ' +\n 'TRIGGER_PROTOCOL_VIOLATED SRF_PROTOCOL_VIOLATED EVENT_TRIGGER_PROTOCOL_VIOLATED ' +\n 'SAVEPOINT_EXCEPTION INVALID_SAVEPOINT_SPECIFICATION INVALID_CATALOG_NAME ' +\n 'INVALID_SCHEMA_NAME TRANSACTION_ROLLBACK TRANSACTION_INTEGRITY_CONSTRAINT_VIOLATION ' +\n 'SERIALIZATION_FAILURE STATEMENT_COMPLETION_UNKNOWN DEADLOCK_DETECTED ' +\n 'SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION SYNTAX_ERROR INSUFFICIENT_PRIVILEGE CANNOT_COERCE ' +\n 'GROUPING_ERROR WINDOWING_ERROR INVALID_RECURSION INVALID_FOREIGN_KEY INVALID_NAME ' +\n 'NAME_TOO_LONG RESERVED_NAME DATATYPE_MISMATCH INDETERMINATE_DATATYPE COLLATION_MISMATCH ' +\n 'INDETERMINATE_COLLATION WRONG_OBJECT_TYPE GENERATED_ALWAYS UNDEFINED_COLUMN ' +\n 'UNDEFINED_FUNCTION UNDEFINED_TABLE UNDEFINED_PARAMETER UNDEFINED_OBJECT ' +\n 'DUPLICATE_COLUMN DUPLICATE_CURSOR DUPLICATE_DATABASE DUPLICATE_FUNCTION ' +\n 'DUPLICATE_PREPARED_STATEMENT DUPLICATE_SCHEMA DUPLICATE_TABLE DUPLICATE_ALIAS ' +\n 'DUPLICATE_OBJECT AMBIGUOUS_COLUMN AMBIGUOUS_FUNCTION AMBIGUOUS_PARAMETER AMBIGUOUS_ALIAS ' +\n 'INVALID_COLUMN_REFERENCE INVALID_COLUMN_DEFINITION INVALID_CURSOR_DEFINITION ' +\n 'INVALID_DATABASE_DEFINITION INVALID_FUNCTION_DEFINITION ' +\n 'INVALID_PREPARED_STATEMENT_DEFINITION INVALID_SCHEMA_DEFINITION INVALID_TABLE_DEFINITION ' +\n 'INVALID_OBJECT_DEFINITION WITH_CHECK_OPTION_VIOLATION INSUFFICIENT_RESOURCES DISK_FULL ' +\n 'OUT_OF_MEMORY TOO_MANY_CONNECTIONS CONFIGURATION_LIMIT_EXCEEDED PROGRAM_LIMIT_EXCEEDED ' +\n 'STATEMENT_TOO_COMPLEX TOO_MANY_COLUMNS TOO_MANY_ARGUMENTS OBJECT_NOT_IN_PREREQUISITE_STATE ' +\n 'OBJECT_IN_USE CANT_CHANGE_RUNTIME_PARAM LOCK_NOT_AVAILABLE OPERATOR_INTERVENTION ' +\n 'QUERY_CANCELED ADMIN_SHUTDOWN CRASH_SHUTDOWN CANNOT_CONNECT_NOW DATABASE_DROPPED ' +\n 'SYSTEM_ERROR IO_ERROR UNDEFINED_FILE DUPLICATE_FILE SNAPSHOT_TOO_OLD CONFIG_FILE_ERROR ' +\n 'LOCK_FILE_EXISTS FDW_ERROR FDW_COLUMN_NAME_NOT_FOUND FDW_DYNAMIC_PARAMETER_VALUE_NEEDED ' +\n 'FDW_FUNCTION_SEQUENCE_ERROR FDW_INCONSISTENT_DESCRIPTOR_INFORMATION ' +\n 'FDW_INVALID_ATTRIBUTE_VALUE FDW_INVALID_COLUMN_NAME FDW_INVALID_COLUMN_NUMBER ' +\n 'FDW_INVALID_DATA_TYPE FDW_INVALID_DATA_TYPE_DESCRIPTORS ' +\n 'FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER FDW_INVALID_HANDLE FDW_INVALID_OPTION_INDEX ' +\n 'FDW_INVALID_OPTION_NAME FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH ' +\n 'FDW_INVALID_STRING_FORMAT FDW_INVALID_USE_OF_NULL_POINTER FDW_TOO_MANY_HANDLES ' +\n 'FDW_OUT_OF_MEMORY FDW_NO_SCHEMAS FDW_OPTION_NAME_NOT_FOUND FDW_REPLY_HANDLE ' +\n 'FDW_SCHEMA_NOT_FOUND FDW_TABLE_NOT_FOUND FDW_UNABLE_TO_CREATE_EXECUTION ' +\n 'FDW_UNABLE_TO_CREATE_REPLY FDW_UNABLE_TO_ESTABLISH_CONNECTION PLPGSQL_ERROR ' +\n 'RAISE_EXCEPTION NO_DATA_FOUND TOO_MANY_ROWS ASSERT_FAILURE INTERNAL_ERROR DATA_CORRUPTED ' +\n 'INDEX_CORRUPTED ';\n\n const FUNCTIONS =\n // https://www.postgresql.org/docs/11/static/functions-aggregate.html\n 'ARRAY_AGG AVG BIT_AND BIT_OR BOOL_AND BOOL_OR COUNT EVERY JSON_AGG JSONB_AGG JSON_OBJECT_AGG ' +\n 'JSONB_OBJECT_AGG MAX MIN MODE STRING_AGG SUM XMLAGG ' +\n 'CORR COVAR_POP COVAR_SAMP REGR_AVGX REGR_AVGY REGR_COUNT REGR_INTERCEPT REGR_R2 REGR_SLOPE ' +\n 'REGR_SXX REGR_SXY REGR_SYY STDDEV STDDEV_POP STDDEV_SAMP VARIANCE VAR_POP VAR_SAMP ' +\n 'PERCENTILE_CONT PERCENTILE_DISC ' +\n // https://www.postgresql.org/docs/11/static/functions-window.html\n 'ROW_NUMBER RANK DENSE_RANK PERCENT_RANK CUME_DIST NTILE LAG LEAD FIRST_VALUE LAST_VALUE NTH_VALUE ' +\n // https://www.postgresql.org/docs/11/static/functions-comparison.html\n 'NUM_NONNULLS NUM_NULLS ' +\n // https://www.postgresql.org/docs/11/static/functions-math.html\n 'ABS CBRT CEIL CEILING DEGREES DIV EXP FLOOR LN LOG MOD PI POWER RADIANS ROUND SCALE SIGN SQRT ' +\n 'TRUNC WIDTH_BUCKET ' +\n 'RANDOM SETSEED ' +\n 'ACOS ACOSD ASIN ASIND ATAN ATAND ATAN2 ATAN2D COS COSD COT COTD SIN SIND TAN TAND ' +\n // https://www.postgresql.org/docs/11/static/functions-string.html\n 'BIT_LENGTH CHAR_LENGTH CHARACTER_LENGTH LOWER OCTET_LENGTH OVERLAY POSITION SUBSTRING TREAT TRIM UPPER ' +\n 'ASCII BTRIM CHR CONCAT CONCAT_WS CONVERT CONVERT_FROM CONVERT_TO DECODE ENCODE INITCAP ' +\n 'LEFT LENGTH LPAD LTRIM MD5 PARSE_IDENT PG_CLIENT_ENCODING QUOTE_IDENT|10 QUOTE_LITERAL|10 ' +\n 'QUOTE_NULLABLE|10 REGEXP_MATCH REGEXP_MATCHES REGEXP_REPLACE REGEXP_SPLIT_TO_ARRAY ' +\n 'REGEXP_SPLIT_TO_TABLE REPEAT REPLACE REVERSE RIGHT RPAD RTRIM SPLIT_PART STRPOS SUBSTR ' +\n 'TO_ASCII TO_HEX TRANSLATE ' +\n // https://www.postgresql.org/docs/11/static/functions-binarystring.html\n 'OCTET_LENGTH GET_BIT GET_BYTE SET_BIT SET_BYTE ' +\n // https://www.postgresql.org/docs/11/static/functions-formatting.html\n 'TO_CHAR TO_DATE TO_NUMBER TO_TIMESTAMP ' +\n // https://www.postgresql.org/docs/11/static/functions-datetime.html\n 'AGE CLOCK_TIMESTAMP|10 DATE_PART DATE_TRUNC ISFINITE JUSTIFY_DAYS JUSTIFY_HOURS JUSTIFY_INTERVAL ' +\n 'MAKE_DATE MAKE_INTERVAL|10 MAKE_TIME MAKE_TIMESTAMP|10 MAKE_TIMESTAMPTZ|10 NOW STATEMENT_TIMESTAMP|10 ' +\n 'TIMEOFDAY TRANSACTION_TIMESTAMP|10 ' +\n // https://www.postgresql.org/docs/11/static/functions-enum.html\n 'ENUM_FIRST ENUM_LAST ENUM_RANGE ' +\n // https://www.postgresql.org/docs/11/static/functions-geometry.html\n 'AREA CENTER DIAMETER HEIGHT ISCLOSED ISOPEN NPOINTS PCLOSE POPEN RADIUS WIDTH ' +\n 'BOX BOUND_BOX CIRCLE LINE LSEG PATH POLYGON ' +\n // https://www.postgresql.org/docs/11/static/functions-net.html\n 'ABBREV BROADCAST HOST HOSTMASK MASKLEN NETMASK NETWORK SET_MASKLEN TEXT INET_SAME_FAMILY ' +\n 'INET_MERGE MACADDR8_SET7BIT ' +\n // https://www.postgresql.org/docs/11/static/functions-textsearch.html\n 'ARRAY_TO_TSVECTOR GET_CURRENT_TS_CONFIG NUMNODE PLAINTO_TSQUERY PHRASETO_TSQUERY WEBSEARCH_TO_TSQUERY ' +\n 'QUERYTREE SETWEIGHT STRIP TO_TSQUERY TO_TSVECTOR JSON_TO_TSVECTOR JSONB_TO_TSVECTOR TS_DELETE ' +\n 'TS_FILTER TS_HEADLINE TS_RANK TS_RANK_CD TS_REWRITE TSQUERY_PHRASE TSVECTOR_TO_ARRAY ' +\n 'TSVECTOR_UPDATE_TRIGGER TSVECTOR_UPDATE_TRIGGER_COLUMN ' +\n // https://www.postgresql.org/docs/11/static/functions-xml.html\n 'XMLCOMMENT XMLCONCAT XMLELEMENT XMLFOREST XMLPI XMLROOT ' +\n 'XMLEXISTS XML_IS_WELL_FORMED XML_IS_WELL_FORMED_DOCUMENT XML_IS_WELL_FORMED_CONTENT ' +\n 'XPATH XPATH_EXISTS XMLTABLE XMLNAMESPACES ' +\n 'TABLE_TO_XML TABLE_TO_XMLSCHEMA TABLE_TO_XML_AND_XMLSCHEMA ' +\n 'QUERY_TO_XML QUERY_TO_XMLSCHEMA QUERY_TO_XML_AND_XMLSCHEMA ' +\n 'CURSOR_TO_XML CURSOR_TO_XMLSCHEMA ' +\n 'SCHEMA_TO_XML SCHEMA_TO_XMLSCHEMA SCHEMA_TO_XML_AND_XMLSCHEMA ' +\n 'DATABASE_TO_XML DATABASE_TO_XMLSCHEMA DATABASE_TO_XML_AND_XMLSCHEMA ' +\n 'XMLATTRIBUTES ' +\n // https://www.postgresql.org/docs/11/static/functions-json.html\n 'TO_JSON TO_JSONB ARRAY_TO_JSON ROW_TO_JSON JSON_BUILD_ARRAY JSONB_BUILD_ARRAY JSON_BUILD_OBJECT ' +\n 'JSONB_BUILD_OBJECT JSON_OBJECT JSONB_OBJECT JSON_ARRAY_LENGTH JSONB_ARRAY_LENGTH JSON_EACH ' +\n 'JSONB_EACH JSON_EACH_TEXT JSONB_EACH_TEXT JSON_EXTRACT_PATH JSONB_EXTRACT_PATH ' +\n 'JSON_OBJECT_KEYS JSONB_OBJECT_KEYS JSON_POPULATE_RECORD JSONB_POPULATE_RECORD JSON_POPULATE_RECORDSET ' +\n 'JSONB_POPULATE_RECORDSET JSON_ARRAY_ELEMENTS JSONB_ARRAY_ELEMENTS JSON_ARRAY_ELEMENTS_TEXT ' +\n 'JSONB_ARRAY_ELEMENTS_TEXT JSON_TYPEOF JSONB_TYPEOF JSON_TO_RECORD JSONB_TO_RECORD JSON_TO_RECORDSET ' +\n 'JSONB_TO_RECORDSET JSON_STRIP_NULLS JSONB_STRIP_NULLS JSONB_SET JSONB_INSERT JSONB_PRETTY ' +\n // https://www.postgresql.org/docs/11/static/functions-sequence.html\n 'CURRVAL LASTVAL NEXTVAL SETVAL ' +\n // https://www.postgresql.org/docs/11/static/functions-conditional.html\n 'COALESCE NULLIF GREATEST LEAST ' +\n // https://www.postgresql.org/docs/11/static/functions-array.html\n 'ARRAY_APPEND ARRAY_CAT ARRAY_NDIMS ARRAY_DIMS ARRAY_FILL ARRAY_LENGTH ARRAY_LOWER ARRAY_POSITION ' +\n 'ARRAY_POSITIONS ARRAY_PREPEND ARRAY_REMOVE ARRAY_REPLACE ARRAY_TO_STRING ARRAY_UPPER CARDINALITY ' +\n 'STRING_TO_ARRAY UNNEST ' +\n // https://www.postgresql.org/docs/11/static/functions-range.html\n 'ISEMPTY LOWER_INC UPPER_INC LOWER_INF UPPER_INF RANGE_MERGE ' +\n // https://www.postgresql.org/docs/11/static/functions-srf.html\n 'GENERATE_SERIES GENERATE_SUBSCRIPTS ' +\n // https://www.postgresql.org/docs/11/static/functions-info.html\n 'CURRENT_DATABASE CURRENT_QUERY CURRENT_SCHEMA|10 CURRENT_SCHEMAS|10 INET_CLIENT_ADDR INET_CLIENT_PORT ' +\n 'INET_SERVER_ADDR INET_SERVER_PORT ROW_SECURITY_ACTIVE FORMAT_TYPE ' +\n 'TO_REGCLASS TO_REGPROC TO_REGPROCEDURE TO_REGOPER TO_REGOPERATOR TO_REGTYPE TO_REGNAMESPACE TO_REGROLE ' +\n 'COL_DESCRIPTION OBJ_DESCRIPTION SHOBJ_DESCRIPTION ' +\n 'TXID_CURRENT TXID_CURRENT_IF_ASSIGNED TXID_CURRENT_SNAPSHOT TXID_SNAPSHOT_XIP TXID_SNAPSHOT_XMAX ' +\n 'TXID_SNAPSHOT_XMIN TXID_VISIBLE_IN_SNAPSHOT TXID_STATUS ' +\n // https://www.postgresql.org/docs/11/static/functions-admin.html\n 'CURRENT_SETTING SET_CONFIG BRIN_SUMMARIZE_NEW_VALUES BRIN_SUMMARIZE_RANGE BRIN_DESUMMARIZE_RANGE ' +\n 'GIN_CLEAN_PENDING_LIST ' +\n // https://www.postgresql.org/docs/11/static/functions-trigger.html\n 'SUPPRESS_REDUNDANT_UPDATES_TRIGGER ' +\n // ihttps://www.postgresql.org/docs/devel/static/lo-funcs.html\n 'LO_FROM_BYTEA LO_PUT LO_GET LO_CREAT LO_CREATE LO_UNLINK LO_IMPORT LO_EXPORT LOREAD LOWRITE ' +\n //\n 'GROUPING CAST ';\n\n const FUNCTIONS_RE =\n FUNCTIONS.trim()\n .split(' ')\n .map(function(val) { return val.split('|')[0]; })\n .join('|');\n\n return {\n name: 'PostgreSQL',\n aliases: [\n 'postgres',\n 'postgresql'\n ],\n case_insensitive: true,\n keywords: {\n keyword:\n SQL_KW + PLPGSQL_KW + ROLE_ATTRS,\n built_in:\n SQL_BI + PLPGSQL_BI + PLPGSQL_EXCEPTIONS\n },\n // Forbid some cunstructs from other languages to improve autodetect. In fact\n // \"[a-z]:\" is legal (as part of array slice), but improbabal.\n illegal: /:==|\\W\\s*\\(\\*|(^|\\s)\\$[a-z]|\\{\\{|[a-z]:\\s*$|\\.\\.\\.|TO:|DO:/,\n contains: [\n // special handling of some words, which are reserved only in some contexts\n {\n className: 'keyword',\n variants: [\n {\n begin: /\\bTEXT\\s*SEARCH\\b/\n },\n {\n begin: /\\b(PRIMARY|FOREIGN|FOR(\\s+NO)?)\\s+KEY\\b/\n },\n {\n begin: /\\bPARALLEL\\s+(UNSAFE|RESTRICTED|SAFE)\\b/\n },\n {\n begin: /\\bSTORAGE\\s+(PLAIN|EXTERNAL|EXTENDED|MAIN)\\b/\n },\n {\n begin: /\\bMATCH\\s+(FULL|PARTIAL|SIMPLE)\\b/\n },\n {\n begin: /\\bNULLS\\s+(FIRST|LAST)\\b/\n },\n {\n begin: /\\bEVENT\\s+TRIGGER\\b/\n },\n {\n begin: /\\b(MAPPING|OR)\\s+REPLACE\\b/\n },\n {\n begin: /\\b(FROM|TO)\\s+(PROGRAM|STDIN|STDOUT)\\b/\n },\n {\n begin: /\\b(SHARE|EXCLUSIVE)\\s+MODE\\b/\n },\n {\n begin: /\\b(LEFT|RIGHT)\\s+(OUTER\\s+)?JOIN\\b/\n },\n {\n begin: /\\b(FETCH|MOVE)\\s+(NEXT|PRIOR|FIRST|LAST|ABSOLUTE|RELATIVE|FORWARD|BACKWARD)\\b/\n },\n {\n begin: /\\bPRESERVE\\s+ROWS\\b/\n },\n {\n begin: /\\bDISCARD\\s+PLANS\\b/\n },\n {\n begin: /\\bREFERENCING\\s+(OLD|NEW)\\b/\n },\n {\n begin: /\\bSKIP\\s+LOCKED\\b/\n },\n {\n begin: /\\bGROUPING\\s+SETS\\b/\n },\n {\n begin: /\\b(BINARY|INSENSITIVE|SCROLL|NO\\s+SCROLL)\\s+(CURSOR|FOR)\\b/\n },\n {\n begin: /\\b(WITH|WITHOUT)\\s+HOLD\\b/\n },\n {\n begin: /\\bWITH\\s+(CASCADED|LOCAL)\\s+CHECK\\s+OPTION\\b/\n },\n {\n begin: /\\bEXCLUDE\\s+(TIES|NO\\s+OTHERS)\\b/\n },\n {\n begin: /\\bFORMAT\\s+(TEXT|XML|JSON|YAML)\\b/\n },\n {\n begin: /\\bSET\\s+((SESSION|LOCAL)\\s+)?NAMES\\b/\n },\n {\n begin: /\\bIS\\s+(NOT\\s+)?UNKNOWN\\b/\n },\n {\n begin: /\\bSECURITY\\s+LABEL\\b/\n },\n {\n begin: /\\bSTANDALONE\\s+(YES|NO|NO\\s+VALUE)\\b/\n },\n {\n begin: /\\bWITH\\s+(NO\\s+)?DATA\\b/\n },\n {\n begin: /\\b(FOREIGN|SET)\\s+DATA\\b/\n },\n {\n begin: /\\bSET\\s+(CATALOG|CONSTRAINTS)\\b/\n },\n {\n begin: /\\b(WITH|FOR)\\s+ORDINALITY\\b/\n },\n {\n begin: /\\bIS\\s+(NOT\\s+)?DOCUMENT\\b/\n },\n {\n begin: /\\bXML\\s+OPTION\\s+(DOCUMENT|CONTENT)\\b/\n },\n {\n begin: /\\b(STRIP|PRESERVE)\\s+WHITESPACE\\b/\n },\n {\n begin: /\\bNO\\s+(ACTION|MAXVALUE|MINVALUE)\\b/\n },\n {\n begin: /\\bPARTITION\\s+BY\\s+(RANGE|LIST|HASH)\\b/\n },\n {\n begin: /\\bAT\\s+TIME\\s+ZONE\\b/\n },\n {\n begin: /\\bGRANTED\\s+BY\\b/\n },\n {\n begin: /\\bRETURN\\s+(QUERY|NEXT)\\b/\n },\n {\n begin: /\\b(ATTACH|DETACH)\\s+PARTITION\\b/\n },\n {\n begin: /\\bFORCE\\s+ROW\\s+LEVEL\\s+SECURITY\\b/\n },\n {\n begin: /\\b(INCLUDING|EXCLUDING)\\s+(COMMENTS|CONSTRAINTS|DEFAULTS|IDENTITY|INDEXES|STATISTICS|STORAGE|ALL)\\b/\n },\n {\n begin: /\\bAS\\s+(ASSIGNMENT|IMPLICIT|PERMISSIVE|RESTRICTIVE|ENUM|RANGE)\\b/\n }\n ]\n },\n // functions named as keywords, followed by '('\n {\n begin: /\\b(FORMAT|FAMILY|VERSION)\\s*\\(/\n // keywords: { built_in: 'FORMAT FAMILY VERSION' }\n },\n // INCLUDE ( ... ) in index_parameters in CREATE TABLE\n {\n begin: /\\bINCLUDE\\s*\\(/,\n keywords: 'INCLUDE'\n },\n // not highlight RANGE if not in frame_clause (not 100% correct, but seems satisfactory)\n {\n begin: /\\bRANGE(?!\\s*(BETWEEN|UNBOUNDED|CURRENT|[-0-9]+))/\n },\n // disable highlighting in commands CREATE AGGREGATE/COLLATION/DATABASE/OPERTOR/TEXT SEARCH .../TYPE\n // and in PL/pgSQL RAISE ... USING\n {\n begin: /\\b(VERSION|OWNER|TEMPLATE|TABLESPACE|CONNECTION\\s+LIMIT|PROCEDURE|RESTRICT|JOIN|PARSER|COPY|START|END|COLLATION|INPUT|ANALYZE|STORAGE|LIKE|DEFAULT|DELIMITER|ENCODING|COLUMN|CONSTRAINT|TABLE|SCHEMA)\\s*=/\n },\n // PG_smth; HAS_some_PRIVILEGE\n {\n // className: 'built_in',\n begin: /\\b(PG_\\w+?|HAS_[A-Z_]+_PRIVILEGE)\\b/,\n relevance: 10\n },\n // extract\n {\n begin: /\\bEXTRACT\\s*\\(/,\n end: /\\bFROM\\b/,\n returnEnd: true,\n keywords: {\n // built_in: 'EXTRACT',\n type: 'CENTURY DAY DECADE DOW DOY EPOCH HOUR ISODOW ISOYEAR MICROSECONDS ' +\n 'MILLENNIUM MILLISECONDS MINUTE MONTH QUARTER SECOND TIMEZONE TIMEZONE_HOUR ' +\n 'TIMEZONE_MINUTE WEEK YEAR'\n }\n },\n // xmlelement, xmlpi - special NAME\n {\n begin: /\\b(XMLELEMENT|XMLPI)\\s*\\(\\s*NAME/,\n keywords: {\n // built_in: 'XMLELEMENT XMLPI',\n keyword: 'NAME'\n }\n },\n // xmlparse, xmlserialize\n {\n begin: /\\b(XMLPARSE|XMLSERIALIZE)\\s*\\(\\s*(DOCUMENT|CONTENT)/,\n keywords: {\n // built_in: 'XMLPARSE XMLSERIALIZE',\n keyword: 'DOCUMENT CONTENT'\n }\n },\n // Sequences. We actually skip everything between CACHE|INCREMENT|MAXVALUE|MINVALUE and\n // nearest following numeric constant. Without with trick we find a lot of \"keywords\"\n // in 'avrasm' autodetection test...\n {\n beginKeywords: 'CACHE INCREMENT MAXVALUE MINVALUE',\n end: hljs.C_NUMBER_RE,\n returnEnd: true,\n keywords: 'BY CACHE INCREMENT MAXVALUE MINVALUE'\n },\n // WITH|WITHOUT TIME ZONE as part of datatype\n {\n className: 'type',\n begin: /\\b(WITH|WITHOUT)\\s+TIME\\s+ZONE\\b/\n },\n // INTERVAL optional fields\n {\n className: 'type',\n begin: /\\bINTERVAL\\s+(YEAR|MONTH|DAY|HOUR|MINUTE|SECOND)(\\s+TO\\s+(MONTH|HOUR|MINUTE|SECOND))?\\b/\n },\n // Pseudo-types which allowed only as return type\n {\n begin: /\\bRETURNS\\s+(LANGUAGE_HANDLER|TRIGGER|EVENT_TRIGGER|FDW_HANDLER|INDEX_AM_HANDLER|TSM_HANDLER)\\b/,\n keywords: {\n keyword: 'RETURNS',\n type: 'LANGUAGE_HANDLER TRIGGER EVENT_TRIGGER FDW_HANDLER INDEX_AM_HANDLER TSM_HANDLER'\n }\n },\n // Known functions - only when followed by '('\n {\n begin: '\\\\b(' + FUNCTIONS_RE + ')\\\\s*\\\\('\n // keywords: { built_in: FUNCTIONS }\n },\n // Types\n {\n begin: '\\\\.(' + TYPES_RE + ')\\\\b' // prevent highlight as type, say, 'oid' in 'pgclass.oid'\n },\n {\n begin: '\\\\b(' + TYPES_RE + ')\\\\s+PATH\\\\b', // in XMLTABLE\n keywords: {\n keyword: 'PATH', // hopefully no one would use PATH type in XMLTABLE...\n type: TYPES.replace('PATH ', '')\n }\n },\n {\n className: 'type',\n begin: '\\\\b(' + TYPES_RE + ')\\\\b'\n },\n // Strings, see https://www.postgresql.org/docs/11/static/sql-syntax-lexical.html#SQL-SYNTAX-CONSTANTS\n {\n className: 'string',\n begin: '\\'',\n end: '\\'',\n contains: [\n {\n begin: '\\'\\''\n }\n ]\n },\n {\n className: 'string',\n begin: '(e|E|u&|U&)\\'',\n end: '\\'',\n contains: [\n {\n begin: '\\\\\\\\.'\n }\n ],\n relevance: 10\n },\n hljs.END_SAME_AS_BEGIN({\n begin: DOLLAR_STRING,\n end: DOLLAR_STRING,\n contains: [\n {\n // actually we want them all except SQL; listed are those with known implementations\n // and XML + JSON just in case\n subLanguage: [\n 'pgsql',\n 'perl',\n 'python',\n 'tcl',\n 'r',\n 'lua',\n 'java',\n 'php',\n 'ruby',\n 'bash',\n 'scheme',\n 'xml',\n 'json'\n ],\n endsWithParent: true\n }\n ]\n }),\n // identifiers in quotes\n {\n begin: '\"',\n end: '\"',\n contains: [\n {\n begin: '\"\"'\n }\n ]\n },\n // numbers\n hljs.C_NUMBER_MODE,\n // comments\n hljs.C_BLOCK_COMMENT_MODE,\n COMMENT_MODE,\n // PL/pgSQL staff\n // %ROWTYPE, %TYPE, $n\n {\n className: 'meta',\n variants: [\n { // %TYPE, %ROWTYPE\n begin: '%(ROW)?TYPE',\n relevance: 10\n },\n { // $n\n begin: '\\\\$\\\\d+'\n },\n { // #compiler option\n begin: '^#\\\\w',\n end: '$'\n }\n ]\n },\n // <<labeles>>\n {\n className: 'symbol',\n begin: LABEL,\n relevance: 10\n }\n ]\n };\n}\n\nmodule.exports = pgsql;\n","/*\nLanguage: PHP Template\nRequires: xml.js, php.js\nAuthor: Josh Goebel <hello@joshgoebel.com>\nWebsite: https://www.php.net\nCategory: common\n*/\n\nfunction phpTemplate(hljs) {\n return {\n name: \"PHP template\",\n subLanguage: 'xml',\n contains: [\n {\n begin: /<\\?(php|=)?/,\n end: /\\?>/,\n subLanguage: 'php',\n contains: [\n // We don't want the php closing tag ?> to close the PHP block when\n // inside any of the following blocks:\n {\n begin: '/\\\\*',\n end: '\\\\*/',\n skip: true\n },\n {\n begin: 'b\"',\n end: '\"',\n skip: true\n },\n {\n begin: 'b\\'',\n end: '\\'',\n skip: true\n },\n hljs.inherit(hljs.APOS_STRING_MODE, {\n illegal: null,\n className: null,\n contains: null,\n skip: true\n }),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {\n illegal: null,\n className: null,\n contains: null,\n skip: true\n })\n ]\n }\n ]\n };\n}\n\nmodule.exports = phpTemplate;\n","/*\nLanguage: PHP\nAuthor: Victor Karamzin <Victor.Karamzin@enterra-inc.com>\nContributors: Evgeny Stepanischev <imbolk@gmail.com>, Ivan Sagalaev <maniac@softwaremaniacs.org>\nWebsite: https://www.php.net\nCategory: common\n*/\n\n/**\n * @param {HLJSApi} hljs\n * @returns {LanguageDetail}\n * */\nfunction php(hljs) {\n const VARIABLE = {\n className: 'variable',\n begin: '\\\\$+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*' +\n // negative look-ahead tries to avoid matching patterns that are not\n // Perl at all like $ident$, @ident@, etc.\n `(?![A-Za-z0-9])(?![$])`\n };\n const PREPROCESSOR = {\n className: 'meta',\n variants: [\n { begin: /<\\?php/, relevance: 10 }, // boost for obvious PHP\n { begin: /<\\?[=]?/ },\n { begin: /\\?>/ } // end php tag\n ]\n };\n const SUBST = {\n className: 'subst',\n variants: [\n { begin: /\\$\\w+/ },\n { begin: /\\{\\$/, end: /\\}/ }\n ]\n };\n const SINGLE_QUOTED = hljs.inherit(hljs.APOS_STRING_MODE, {\n illegal: null,\n });\n const DOUBLE_QUOTED = hljs.inherit(hljs.QUOTE_STRING_MODE, {\n illegal: null,\n contains: hljs.QUOTE_STRING_MODE.contains.concat(SUBST),\n });\n const HEREDOC = hljs.END_SAME_AS_BEGIN({\n begin: /<<<[ \\t]*(\\w+)\\n/,\n end: /[ \\t]*(\\w+)\\b/,\n contains: hljs.QUOTE_STRING_MODE.contains.concat(SUBST),\n });\n const STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, PREPROCESSOR],\n variants: [\n hljs.inherit(SINGLE_QUOTED, {\n begin: \"b'\", end: \"'\",\n }),\n hljs.inherit(DOUBLE_QUOTED, {\n begin: 'b\"', end: '\"',\n }),\n DOUBLE_QUOTED,\n SINGLE_QUOTED,\n HEREDOC\n ]\n };\n const NUMBER = {\n className: 'number',\n variants: [\n { begin: `\\\\b0b[01]+(?:_[01]+)*\\\\b` }, // Binary w/ underscore support\n { begin: `\\\\b0o[0-7]+(?:_[0-7]+)*\\\\b` }, // Octals w/ underscore support\n { begin: `\\\\b0x[\\\\da-f]+(?:_[\\\\da-f]+)*\\\\b` }, // Hex w/ underscore support\n // Decimals w/ underscore support, with optional fragments and scientific exponent (e) suffix.\n { begin: `(?:\\\\b\\\\d+(?:_\\\\d+)*(\\\\.(?:\\\\d+(?:_\\\\d+)*))?|\\\\B\\\\.\\\\d+)(?:e[+-]?\\\\d+)?` }\n ],\n relevance: 0\n };\n const KEYWORDS = {\n keyword:\n // Magic constants:\n // <https://www.php.net/manual/en/language.constants.predefined.php>\n '__CLASS__ __DIR__ __FILE__ __FUNCTION__ __LINE__ __METHOD__ __NAMESPACE__ __TRAIT__ ' +\n // Function that look like language construct or language construct that look like function:\n // List of keywords that may not require parenthesis\n 'die echo exit include include_once print require require_once ' +\n // These are not language construct (function) but operate on the currently-executing function and can access the current symbol table\n // 'compact extract func_get_arg func_get_args func_num_args get_called_class get_parent_class ' +\n // Other keywords:\n // <https://www.php.net/manual/en/reserved.php>\n // <https://www.php.net/manual/en/language.types.type-juggling.php>\n 'array abstract and as binary bool boolean break callable case catch class clone const continue declare ' +\n 'default do double else elseif empty enddeclare endfor endforeach endif endswitch endwhile enum eval extends ' +\n 'final finally float for foreach from global goto if implements instanceof insteadof int integer interface ' +\n 'isset iterable list match|0 mixed new object or private protected public real return string switch throw trait ' +\n 'try unset use var void while xor yield',\n literal: 'false null true',\n built_in:\n // Standard PHP library:\n // <https://www.php.net/manual/en/book.spl.php>\n 'Error|0 ' + // error is too common a name esp since PHP is case in-sensitive\n 'AppendIterator ArgumentCountError ArithmeticError ArrayIterator ArrayObject AssertionError BadFunctionCallException BadMethodCallException CachingIterator CallbackFilterIterator CompileError Countable DirectoryIterator DivisionByZeroError DomainException EmptyIterator ErrorException Exception FilesystemIterator FilterIterator GlobIterator InfiniteIterator InvalidArgumentException IteratorIterator LengthException LimitIterator LogicException MultipleIterator NoRewindIterator OutOfBoundsException OutOfRangeException OuterIterator OverflowException ParentIterator ParseError RangeException RecursiveArrayIterator RecursiveCachingIterator RecursiveCallbackFilterIterator RecursiveDirectoryIterator RecursiveFilterIterator RecursiveIterator RecursiveIteratorIterator RecursiveRegexIterator RecursiveTreeIterator RegexIterator RuntimeException SeekableIterator SplDoublyLinkedList SplFileInfo SplFileObject SplFixedArray SplHeap SplMaxHeap SplMinHeap SplObjectStorage SplObserver SplObserver SplPriorityQueue SplQueue SplStack SplSubject SplSubject SplTempFileObject TypeError UnderflowException UnexpectedValueException UnhandledMatchError ' +\n // Reserved interfaces:\n // <https://www.php.net/manual/en/reserved.interfaces.php>\n 'ArrayAccess Closure Generator Iterator IteratorAggregate Serializable Stringable Throwable Traversable WeakReference WeakMap ' +\n // Reserved classes:\n // <https://www.php.net/manual/en/reserved.classes.php>\n 'Directory __PHP_Incomplete_Class parent php_user_filter self static stdClass'\n };\n return {\n aliases: ['php3', 'php4', 'php5', 'php6', 'php7', 'php8'],\n case_insensitive: true,\n keywords: KEYWORDS,\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.COMMENT('//', '$', {contains: [PREPROCESSOR]}),\n hljs.COMMENT(\n '/\\\\*',\n '\\\\*/',\n {\n contains: [\n {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n }\n ]\n }\n ),\n hljs.COMMENT(\n '__halt_compiler.+?;',\n false,\n {\n endsWithParent: true,\n keywords: '__halt_compiler'\n }\n ),\n PREPROCESSOR,\n {\n className: 'keyword', begin: /\\$this\\b/\n },\n VARIABLE,\n {\n // swallow composed identifiers to avoid parsing them as keywords\n begin: /(::|->)+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*/\n },\n {\n className: 'function',\n relevance: 0,\n beginKeywords: 'fn function', end: /[;{]/, excludeEnd: true,\n illegal: '[$%\\\\[]',\n contains: [\n {\n beginKeywords: 'use',\n },\n hljs.UNDERSCORE_TITLE_MODE,\n {\n begin: '=>', // No markup, just a relevance booster\n endsParent: true\n },\n {\n className: 'params',\n begin: '\\\\(', end: '\\\\)',\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n 'self',\n VARIABLE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n NUMBER\n ]\n }\n ]\n },\n {\n className: 'class',\n variants: [\n { beginKeywords: \"enum\", illegal: /[($\"]/ },\n { beginKeywords: \"class interface trait\", illegal: /[:($\"]/ }\n ],\n relevance: 0,\n end: /\\{/,\n excludeEnd: true,\n contains: [\n {beginKeywords: 'extends implements'},\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n beginKeywords: 'namespace',\n relevance: 0,\n end: ';',\n illegal: /[.']/,\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n beginKeywords: 'use',\n relevance: 0,\n end: ';',\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n STRING,\n NUMBER\n ]\n };\n}\n\nmodule.exports = php;\n","/*\nLanguage: Plain text\nAuthor: Egor Rogov (e.rogov@postgrespro.ru)\nDescription: Plain text without any highlighting.\nCategory: common\n*/\n\nfunction plaintext(hljs) {\n return {\n name: 'Plain text',\n aliases: [\n 'text',\n 'txt'\n ],\n disableAutodetect: true\n };\n}\n\nmodule.exports = plaintext;\n","/*\nLanguage: Pony\nAuthor: Joe Eli McIlvain <joe.eli.mac@gmail.com>\nDescription: Pony is an open-source, object-oriented, actor-model,\n capabilities-secure, high performance programming language.\nWebsite: https://www.ponylang.io\n*/\n\nfunction pony(hljs) {\n const KEYWORDS = {\n keyword:\n 'actor addressof and as be break class compile_error compile_intrinsic ' +\n 'consume continue delegate digestof do else elseif embed end error ' +\n 'for fun if ifdef in interface is isnt lambda let match new not object ' +\n 'or primitive recover repeat return struct then trait try type until ' +\n 'use var where while with xor',\n meta:\n 'iso val tag trn box ref',\n literal:\n 'this false true'\n };\n\n const TRIPLE_QUOTE_STRING_MODE = {\n className: 'string',\n begin: '\"\"\"',\n end: '\"\"\"',\n relevance: 10\n };\n\n const QUOTE_STRING_MODE = {\n className: 'string',\n begin: '\"',\n end: '\"',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n };\n\n const SINGLE_QUOTE_CHAR_MODE = {\n className: 'string',\n begin: '\\'',\n end: '\\'',\n contains: [ hljs.BACKSLASH_ESCAPE ],\n relevance: 0\n };\n\n const TYPE_NAME = {\n className: 'type',\n begin: '\\\\b_?[A-Z][\\\\w]*',\n relevance: 0\n };\n\n const PRIMED_NAME = {\n begin: hljs.IDENT_RE + '\\'',\n relevance: 0\n };\n\n const NUMBER_MODE = {\n className: 'number',\n begin: '(-?)(\\\\b0[xX][a-fA-F0-9]+|\\\\b0[bB][01]+|(\\\\b\\\\d+(_\\\\d+)?(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)',\n relevance: 0\n };\n\n /**\n * The `FUNCTION` and `CLASS` modes were intentionally removed to simplify\n * highlighting and fix cases like\n * ```\n * interface Iterator[A: A]\n * fun has_next(): Bool\n * fun next(): A?\n * ```\n * where it is valid to have a function head without a body\n */\n\n return {\n name: 'Pony',\n keywords: KEYWORDS,\n contains: [\n TYPE_NAME,\n TRIPLE_QUOTE_STRING_MODE,\n QUOTE_STRING_MODE,\n SINGLE_QUOTE_CHAR_MODE,\n PRIMED_NAME,\n NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n}\n\nmodule.exports = pony;\n","/*\nLanguage: PowerShell\nDescription: PowerShell is a task-based command-line shell and scripting language built on .NET.\nAuthor: David Mohundro <david@mohundro.com>\nContributors: Nicholas Blumhardt <nblumhardt@nblumhardt.com>, Victor Zhou <OiCMudkips@users.noreply.github.com>, Nicolas Le Gall <contact@nlegall.fr>\nWebsite: https://docs.microsoft.com/en-us/powershell/\n*/\n\nfunction powershell(hljs) {\n const TYPES = [\n \"string\",\n \"char\",\n \"byte\",\n \"int\",\n \"long\",\n \"bool\",\n \"decimal\",\n \"single\",\n \"double\",\n \"DateTime\",\n \"xml\",\n \"array\",\n \"hashtable\",\n \"void\"\n ];\n\n // https://docs.microsoft.com/en-us/powershell/scripting/developer/cmdlet/approved-verbs-for-windows-powershell-commands\n const VALID_VERBS =\n 'Add|Clear|Close|Copy|Enter|Exit|Find|Format|Get|Hide|Join|Lock|' +\n 'Move|New|Open|Optimize|Pop|Push|Redo|Remove|Rename|Reset|Resize|' +\n 'Search|Select|Set|Show|Skip|Split|Step|Switch|Undo|Unlock|' +\n 'Watch|Backup|Checkpoint|Compare|Compress|Convert|ConvertFrom|' +\n 'ConvertTo|Dismount|Edit|Expand|Export|Group|Import|Initialize|' +\n 'Limit|Merge|Mount|Out|Publish|Restore|Save|Sync|Unpublish|Update|' +\n 'Approve|Assert|Build|Complete|Confirm|Deny|Deploy|Disable|Enable|Install|Invoke|' +\n 'Register|Request|Restart|Resume|Start|Stop|Submit|Suspend|Uninstall|' +\n 'Unregister|Wait|Debug|Measure|Ping|Repair|Resolve|Test|Trace|Connect|' +\n 'Disconnect|Read|Receive|Send|Write|Block|Grant|Protect|Revoke|Unblock|' +\n 'Unprotect|Use|ForEach|Sort|Tee|Where';\n\n const COMPARISON_OPERATORS =\n '-and|-as|-band|-bnot|-bor|-bxor|-casesensitive|-ccontains|-ceq|-cge|-cgt|' +\n '-cle|-clike|-clt|-cmatch|-cne|-cnotcontains|-cnotlike|-cnotmatch|-contains|' +\n '-creplace|-csplit|-eq|-exact|-f|-file|-ge|-gt|-icontains|-ieq|-ige|-igt|' +\n '-ile|-ilike|-ilt|-imatch|-in|-ine|-inotcontains|-inotlike|-inotmatch|' +\n '-ireplace|-is|-isnot|-isplit|-join|-le|-like|-lt|-match|-ne|-not|' +\n '-notcontains|-notin|-notlike|-notmatch|-or|-regex|-replace|-shl|-shr|' +\n '-split|-wildcard|-xor';\n\n const KEYWORDS = {\n $pattern: /-?[A-z\\.\\-]+\\b/,\n keyword:\n 'if else foreach return do while until elseif begin for trap data dynamicparam ' +\n 'end break throw param continue finally in switch exit filter try process catch ' +\n 'hidden static parameter',\n // \"echo\" relevance has been set to 0 to avoid auto-detect conflicts with shell transcripts\n built_in:\n 'ac asnp cat cd CFS chdir clc clear clhy cli clp cls clv cnsn compare copy cp ' +\n 'cpi cpp curl cvpa dbp del diff dir dnsn ebp echo|0 epal epcsv epsn erase etsn exsn fc fhx ' +\n 'fl ft fw gal gbp gc gcb gci gcm gcs gdr gerr ghy gi gin gjb gl gm gmo gp gps gpv group ' +\n 'gsn gsnp gsv gtz gu gv gwmi h history icm iex ihy ii ipal ipcsv ipmo ipsn irm ise iwmi ' +\n 'iwr kill lp ls man md measure mi mount move mp mv nal ndr ni nmo npssc nsn nv ogv oh ' +\n 'popd ps pushd pwd r rbp rcjb rcsn rd rdr ren ri rjb rm rmdir rmo rni rnp rp rsn rsnp ' +\n 'rujb rv rvpa rwmi sajb sal saps sasv sbp sc scb select set shcm si sl sleep sls sort sp ' +\n 'spjb spps spsv start stz sujb sv swmi tee trcm type wget where wjb write'\n // TODO: 'validate[A-Z]+' can't work in keywords\n };\n\n const TITLE_NAME_RE = /\\w[\\w\\d]*((-)[\\w\\d]+)*/;\n\n const BACKTICK_ESCAPE = {\n begin: '`[\\\\s\\\\S]',\n relevance: 0\n };\n\n const VAR = {\n className: 'variable',\n variants: [\n {\n begin: /\\$\\B/\n },\n {\n className: 'keyword',\n begin: /\\$this/\n },\n {\n begin: /\\$[\\w\\d][\\w\\d_:]*/\n }\n ]\n };\n\n const LITERAL = {\n className: 'literal',\n begin: /\\$(null|true|false)\\b/\n };\n\n const QUOTE_STRING = {\n className: \"string\",\n variants: [\n {\n begin: /\"/,\n end: /\"/\n },\n {\n begin: /@\"/,\n end: /^\"@/\n }\n ],\n contains: [\n BACKTICK_ESCAPE,\n VAR,\n {\n className: 'variable',\n begin: /\\$[A-z]/,\n end: /[^A-z]/\n }\n ]\n };\n\n const APOS_STRING = {\n className: 'string',\n variants: [\n {\n begin: /'/,\n end: /'/\n },\n {\n begin: /@'/,\n end: /^'@/\n }\n ]\n };\n\n const PS_HELPTAGS = {\n className: \"doctag\",\n variants: [\n /* no paramater help tags */\n {\n begin: /\\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/\n },\n /* one parameter help tags */\n {\n begin: /\\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\\s+\\S+/\n }\n ]\n };\n\n const PS_COMMENT = hljs.inherit(\n hljs.COMMENT(null, null),\n {\n variants: [\n /* single-line comment */\n {\n begin: /#/,\n end: /$/\n },\n /* multi-line comment */\n {\n begin: /<#/,\n end: /#>/\n }\n ],\n contains: [ PS_HELPTAGS ]\n }\n );\n\n const CMDLETS = {\n className: 'built_in',\n variants: [\n {\n begin: '('.concat(VALID_VERBS, ')+(-)[\\\\w\\\\d]+')\n }\n ]\n };\n\n const PS_CLASS = {\n className: 'class',\n beginKeywords: 'class enum',\n end: /\\s*[{]/,\n excludeEnd: true,\n relevance: 0,\n contains: [ hljs.TITLE_MODE ]\n };\n\n const PS_FUNCTION = {\n className: 'function',\n begin: /function\\s+/,\n end: /\\s*\\{|$/,\n excludeEnd: true,\n returnBegin: true,\n relevance: 0,\n contains: [\n {\n begin: \"function\",\n relevance: 0,\n className: \"keyword\"\n },\n {\n className: \"title\",\n begin: TITLE_NAME_RE,\n relevance: 0\n },\n {\n begin: /\\(/,\n end: /\\)/,\n className: \"params\",\n relevance: 0,\n contains: [ VAR ]\n }\n // CMDLETS\n ]\n };\n\n // Using statment, plus type, plus assembly name.\n const PS_USING = {\n begin: /using\\s/,\n end: /$/,\n returnBegin: true,\n contains: [\n QUOTE_STRING,\n APOS_STRING,\n {\n className: 'keyword',\n begin: /(using|assembly|command|module|namespace|type)/\n }\n ]\n };\n\n // Comperison operators & function named parameters.\n const PS_ARGUMENTS = {\n variants: [\n // PS literals are pretty verbose so it's a good idea to accent them a bit.\n {\n className: 'operator',\n begin: '('.concat(COMPARISON_OPERATORS, ')\\\\b')\n },\n {\n className: 'literal',\n begin: /(-)[\\w\\d]+/,\n relevance: 0\n }\n ]\n };\n\n const HASH_SIGNS = {\n className: 'selector-tag',\n begin: /@\\B/,\n relevance: 0\n };\n\n // It's a very general rule so I'll narrow it a bit with some strict boundaries\n // to avoid any possible false-positive collisions!\n const PS_METHODS = {\n className: 'function',\n begin: /\\[.*\\]\\s*[\\w]+[ ]??\\(/,\n end: /$/,\n returnBegin: true,\n relevance: 0,\n contains: [\n {\n className: 'keyword',\n begin: '('.concat(\n KEYWORDS.keyword.toString().replace(/\\s/g, '|'\n ), ')\\\\b'),\n endsParent: true,\n relevance: 0\n },\n hljs.inherit(hljs.TITLE_MODE, {\n endsParent: true\n })\n ]\n };\n\n const GENTLEMANS_SET = [\n // STATIC_MEMBER,\n PS_METHODS,\n PS_COMMENT,\n BACKTICK_ESCAPE,\n hljs.NUMBER_MODE,\n QUOTE_STRING,\n APOS_STRING,\n // PS_NEW_OBJECT_TYPE,\n CMDLETS,\n VAR,\n LITERAL,\n HASH_SIGNS\n ];\n\n const PS_TYPE = {\n begin: /\\[/,\n end: /\\]/,\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0,\n contains: [].concat(\n 'self',\n GENTLEMANS_SET,\n {\n begin: \"(\" + TYPES.join(\"|\") + \")\",\n className: \"built_in\",\n relevance: 0\n },\n {\n className: 'type',\n begin: /[\\.\\w\\d]+/,\n relevance: 0\n }\n )\n };\n\n PS_METHODS.contains.unshift(PS_TYPE);\n\n return {\n name: 'PowerShell',\n aliases: [\n \"ps\",\n \"ps1\"\n ],\n case_insensitive: true,\n keywords: KEYWORDS,\n contains: GENTLEMANS_SET.concat(\n PS_CLASS,\n PS_FUNCTION,\n PS_USING,\n PS_ARGUMENTS,\n PS_TYPE\n )\n };\n}\n\nmodule.exports = powershell;\n","/*\nLanguage: Processing\nDescription: Processing is a flexible software sketchbook and a language for learning how to code within the context of the visual arts.\nAuthor: Erik Paluka <erik.paluka@gmail.com>\nWebsite: https://processing.org\nCategory: graphics\n*/\n\nfunction processing(hljs) {\n return {\n name: 'Processing',\n keywords: {\n keyword: 'BufferedReader PVector PFont PImage PGraphics HashMap boolean byte char color ' +\n 'double float int long String Array FloatDict FloatList IntDict IntList JSONArray JSONObject ' +\n 'Object StringDict StringList Table TableRow XML ' +\n // Java keywords\n 'false synchronized int abstract float private char boolean static null if const ' +\n 'for true while long throw strictfp finally protected import native final return void ' +\n 'enum else break transient new catch instanceof byte super volatile case assert short ' +\n 'package default double public try this switch continue throws protected public private',\n literal: 'P2D P3D HALF_PI PI QUARTER_PI TAU TWO_PI',\n title: 'setup draw',\n built_in: 'displayHeight displayWidth mouseY mouseX mousePressed pmouseX pmouseY key ' +\n 'keyCode pixels focused frameCount frameRate height width ' +\n 'size createGraphics beginDraw createShape loadShape PShape arc ellipse line point ' +\n 'quad rect triangle bezier bezierDetail bezierPoint bezierTangent curve curveDetail curvePoint ' +\n 'curveTangent curveTightness shape shapeMode beginContour beginShape bezierVertex curveVertex ' +\n 'endContour endShape quadraticVertex vertex ellipseMode noSmooth rectMode smooth strokeCap ' +\n 'strokeJoin strokeWeight mouseClicked mouseDragged mouseMoved mousePressed mouseReleased ' +\n 'mouseWheel keyPressed keyPressedkeyReleased keyTyped print println save saveFrame day hour ' +\n 'millis minute month second year background clear colorMode fill noFill noStroke stroke alpha ' +\n 'blue brightness color green hue lerpColor red saturation modelX modelY modelZ screenX screenY ' +\n 'screenZ ambient emissive shininess specular add createImage beginCamera camera endCamera frustum ' +\n 'ortho perspective printCamera printProjection cursor frameRate noCursor exit loop noLoop popStyle ' +\n 'pushStyle redraw binary boolean byte char float hex int str unbinary unhex join match matchAll nf ' +\n 'nfc nfp nfs split splitTokens trim append arrayCopy concat expand reverse shorten sort splice subset ' +\n 'box sphere sphereDetail createInput createReader loadBytes loadJSONArray loadJSONObject loadStrings ' +\n 'loadTable loadXML open parseXML saveTable selectFolder selectInput beginRaw beginRecord createOutput ' +\n 'createWriter endRaw endRecord PrintWritersaveBytes saveJSONArray saveJSONObject saveStream saveStrings ' +\n 'saveXML selectOutput popMatrix printMatrix pushMatrix resetMatrix rotate rotateX rotateY rotateZ scale ' +\n 'shearX shearY translate ambientLight directionalLight lightFalloff lights lightSpecular noLights normal ' +\n 'pointLight spotLight image imageMode loadImage noTint requestImage tint texture textureMode textureWrap ' +\n 'blend copy filter get loadPixels set updatePixels blendMode loadShader PShaderresetShader shader createFont ' +\n 'loadFont text textFont textAlign textLeading textMode textSize textWidth textAscent textDescent abs ceil ' +\n 'constrain dist exp floor lerp log mag map max min norm pow round sq sqrt acos asin atan atan2 cos degrees ' +\n 'radians sin tan noise noiseDetail noiseSeed random randomGaussian randomSeed'\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE\n ]\n };\n}\n\nmodule.exports = processing;\n","/*\nLanguage: Python profiler\nDescription: Python profiler results\nAuthor: Brian Beck <exogen@gmail.com>\n*/\n\nfunction profile(hljs) {\n return {\n name: 'Python profiler',\n contains: [\n hljs.C_NUMBER_MODE,\n {\n begin: '[a-zA-Z_][\\\\da-zA-Z_]+\\\\.[\\\\da-zA-Z_]{1,3}',\n end: ':',\n excludeEnd: true\n },\n {\n begin: '(ncalls|tottime|cumtime)',\n end: '$',\n keywords: 'ncalls tottime|10 cumtime|10 filename',\n relevance: 10\n },\n {\n begin: 'function calls',\n end: '$',\n contains: [ hljs.C_NUMBER_MODE ],\n relevance: 10\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: '\\\\(',\n end: '\\\\)$',\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0\n }\n ]\n };\n}\n\nmodule.exports = profile;\n","/*\nLanguage: Prolog\nDescription: Prolog is a general purpose logic programming language associated with artificial intelligence and computational linguistics.\nAuthor: Raivo Laanemets <raivo@infdot.com>\nWebsite: https://en.wikipedia.org/wiki/Prolog\n*/\n\nfunction prolog(hljs) {\n const ATOM = {\n\n begin: /[a-z][A-Za-z0-9_]*/,\n relevance: 0\n };\n\n const VAR = {\n\n className: 'symbol',\n variants: [\n {\n begin: /[A-Z][a-zA-Z0-9_]*/\n },\n {\n begin: /_[A-Za-z0-9_]*/\n }\n ],\n relevance: 0\n };\n\n const PARENTED = {\n\n begin: /\\(/,\n end: /\\)/,\n relevance: 0\n };\n\n const LIST = {\n\n begin: /\\[/,\n end: /\\]/\n };\n\n const LINE_COMMENT = {\n\n className: 'comment',\n begin: /%/,\n end: /$/,\n contains: [ hljs.PHRASAL_WORDS_MODE ]\n };\n\n const BACKTICK_STRING = {\n\n className: 'string',\n begin: /`/,\n end: /`/,\n contains: [ hljs.BACKSLASH_ESCAPE ]\n };\n\n const CHAR_CODE = {\n className: 'string', // 0'a etc.\n begin: /0'(\\\\'|.)/\n };\n\n const SPACE_CODE = {\n className: 'string',\n begin: /0'\\\\s/ // 0'\\s\n };\n\n const PRED_OP = { // relevance booster\n begin: /:-/\n };\n\n const inner = [\n\n ATOM,\n VAR,\n PARENTED,\n PRED_OP,\n LIST,\n LINE_COMMENT,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n BACKTICK_STRING,\n CHAR_CODE,\n SPACE_CODE,\n hljs.C_NUMBER_MODE\n ];\n\n PARENTED.contains = inner;\n LIST.contains = inner;\n\n return {\n name: 'Prolog',\n contains: inner.concat([\n { // relevance booster\n begin: /\\.$/\n }\n ])\n };\n}\n\nmodule.exports = prolog;\n","/*\nLanguage: .properties\nContributors: Valentin Aitken <valentin@nalisbg.com>, Egor Rogov <e.rogov@postgrespro.ru>\nWebsite: https://en.wikipedia.org/wiki/.properties\nCategory: common, config\n*/\n\nfunction properties(hljs) {\n\n // whitespaces: space, tab, formfeed\n var WS0 = '[ \\\\t\\\\f]*';\n var WS1 = '[ \\\\t\\\\f]+';\n // delimiter\n var EQUAL_DELIM = WS0+'[:=]'+WS0;\n var WS_DELIM = WS1;\n var DELIM = '(' + EQUAL_DELIM + '|' + WS_DELIM + ')';\n var KEY_ALPHANUM = '([^\\\\\\\\\\\\W:= \\\\t\\\\f\\\\n]|\\\\\\\\.)+';\n var KEY_OTHER = '([^\\\\\\\\:= \\\\t\\\\f\\\\n]|\\\\\\\\.)+';\n\n var DELIM_AND_VALUE = {\n // skip DELIM\n end: DELIM,\n relevance: 0,\n starts: {\n // value: everything until end of line (again, taking into account backslashes)\n className: 'string',\n end: /$/,\n relevance: 0,\n contains: [\n { begin: '\\\\\\\\\\\\\\\\'},\n { begin: '\\\\\\\\\\\\n' }\n ]\n }\n };\n\n return {\n name: '.properties',\n case_insensitive: true,\n illegal: /\\S/,\n contains: [\n hljs.COMMENT('^\\\\s*[!#]', '$'),\n // key: everything until whitespace or = or : (taking into account backslashes)\n // case of a \"normal\" key\n {\n returnBegin: true,\n variants: [\n { begin: KEY_ALPHANUM + EQUAL_DELIM, relevance: 1 },\n { begin: KEY_ALPHANUM + WS_DELIM, relevance: 0 }\n ],\n contains: [\n {\n className: 'attr',\n begin: KEY_ALPHANUM,\n endsParent: true,\n relevance: 0\n }\n ],\n starts: DELIM_AND_VALUE\n },\n // case of key containing non-alphanumeric chars => relevance = 0\n {\n begin: KEY_OTHER + DELIM,\n returnBegin: true,\n relevance: 0,\n contains: [\n {\n className: 'meta',\n begin: KEY_OTHER,\n endsParent: true,\n relevance: 0\n }\n ],\n starts: DELIM_AND_VALUE\n },\n // case of an empty key\n {\n className: 'attr',\n relevance: 0,\n begin: KEY_OTHER + WS0 + '$'\n }\n ]\n };\n}\n\nmodule.exports = properties;\n","/*\nLanguage: Protocol Buffers\nAuthor: Dan Tao <daniel.tao@gmail.com>\nDescription: Protocol buffer message definition format\nWebsite: https://developers.google.com/protocol-buffers/docs/proto3\nCategory: protocols\n*/\n\nfunction protobuf(hljs) {\n return {\n name: 'Protocol Buffers',\n keywords: {\n keyword: 'package import option optional required repeated group oneof',\n built_in: 'double float int32 int64 uint32 uint64 sint32 sint64 ' +\n 'fixed32 fixed64 sfixed32 sfixed64 bool string bytes',\n literal: 'true false'\n },\n contains: [\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'class',\n beginKeywords: 'message enum service', end: /\\{/,\n illegal: /\\n/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n starts: {endsWithParent: true, excludeEnd: true} // hack: eating everything after the first title\n })\n ]\n },\n {\n className: 'function',\n beginKeywords: 'rpc',\n end: /[{;]/, excludeEnd: true,\n keywords: 'rpc returns'\n },\n { // match enum items (relevance)\n // BLAH = ...;\n begin: /^\\s*[A-Z_]+(?=\\s*=[^\\n]+;$)/\n }\n ]\n };\n}\n\nmodule.exports = protobuf;\n","/*\nLanguage: Puppet\nAuthor: Jose Molina Colmenero <gaudy41@gmail.com>\nWebsite: https://puppet.com/docs\nCategory: config\n*/\n\nfunction puppet(hljs) {\n const PUPPET_KEYWORDS = {\n keyword:\n /* language keywords */\n 'and case default else elsif false if in import enherits node or true undef unless main settings $string ',\n literal:\n /* metaparameters */\n 'alias audit before loglevel noop require subscribe tag ' +\n /* normal attributes */\n 'owner ensure group mode name|0 changes context force incl lens load_path onlyif provider returns root show_diff type_check ' +\n 'en_address ip_address realname command environment hour monute month monthday special target weekday ' +\n 'creates cwd ogoutput refresh refreshonly tries try_sleep umask backup checksum content ctime force ignore ' +\n 'links mtime purge recurse recurselimit replace selinux_ignore_defaults selrange selrole seltype seluser source ' +\n 'souirce_permissions sourceselect validate_cmd validate_replacement allowdupe attribute_membership auth_membership forcelocal gid ' +\n 'ia_load_module members system host_aliases ip allowed_trunk_vlans description device_url duplex encapsulation etherchannel ' +\n 'native_vlan speed principals allow_root auth_class auth_type authenticate_user k_of_n mechanisms rule session_owner shared options ' +\n 'device fstype enable hasrestart directory present absent link atboot blockdevice device dump pass remounts poller_tag use ' +\n 'message withpath adminfile allow_virtual allowcdrom category configfiles flavor install_options instance package_settings platform ' +\n 'responsefile status uninstall_options vendor unless_system_user unless_uid binary control flags hasstatus manifest pattern restart running ' +\n 'start stop allowdupe auths expiry gid groups home iterations key_membership keys managehome membership password password_max_age ' +\n 'password_min_age profile_membership profiles project purge_ssh_keys role_membership roles salt shell uid baseurl cost descr enabled ' +\n 'enablegroups exclude failovermethod gpgcheck gpgkey http_caching include includepkgs keepalive metadata_expire metalink mirrorlist ' +\n 'priority protect proxy proxy_password proxy_username repo_gpgcheck s3_enabled skip_if_unavailable sslcacert sslclientcert sslclientkey ' +\n 'sslverify mounted',\n built_in:\n /* core facts */\n 'architecture augeasversion blockdevices boardmanufacturer boardproductname boardserialnumber cfkey dhcp_servers ' +\n 'domain ec2_ ec2_userdata facterversion filesystems ldom fqdn gid hardwareisa hardwaremodel hostname id|0 interfaces ' +\n 'ipaddress ipaddress_ ipaddress6 ipaddress6_ iphostnumber is_virtual kernel kernelmajversion kernelrelease kernelversion ' +\n 'kernelrelease kernelversion lsbdistcodename lsbdistdescription lsbdistid lsbdistrelease lsbmajdistrelease lsbminordistrelease ' +\n 'lsbrelease macaddress macaddress_ macosx_buildversion macosx_productname macosx_productversion macosx_productverson_major ' +\n 'macosx_productversion_minor manufacturer memoryfree memorysize netmask metmask_ network_ operatingsystem operatingsystemmajrelease ' +\n 'operatingsystemrelease osfamily partitions path physicalprocessorcount processor processorcount productname ps puppetversion ' +\n 'rubysitedir rubyversion selinux selinux_config_mode selinux_config_policy selinux_current_mode selinux_current_mode selinux_enforced ' +\n 'selinux_policyversion serialnumber sp_ sshdsakey sshecdsakey sshrsakey swapencrypted swapfree swapsize timezone type uniqueid uptime ' +\n 'uptime_days uptime_hours uptime_seconds uuid virtual vlans xendomains zfs_version zonenae zones zpool_version'\n };\n\n const COMMENT = hljs.COMMENT('#', '$');\n\n const IDENT_RE = '([A-Za-z_]|::)(\\\\w|::)*';\n\n const TITLE = hljs.inherit(hljs.TITLE_MODE, {\n begin: IDENT_RE\n });\n\n const VARIABLE = {\n className: 'variable',\n begin: '\\\\$' + IDENT_RE\n };\n\n const STRING = {\n className: 'string',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VARIABLE\n ],\n variants: [\n {\n begin: /'/,\n end: /'/\n },\n {\n begin: /\"/,\n end: /\"/\n }\n ]\n };\n\n return {\n name: 'Puppet',\n aliases: [ 'pp' ],\n contains: [\n COMMENT,\n VARIABLE,\n STRING,\n {\n beginKeywords: 'class',\n end: '\\\\{|;',\n illegal: /=/,\n contains: [\n TITLE,\n COMMENT\n ]\n },\n {\n beginKeywords: 'define',\n end: /\\{/,\n contains: [\n {\n className: 'section',\n begin: hljs.IDENT_RE,\n endsParent: true\n }\n ]\n },\n {\n begin: hljs.IDENT_RE + '\\\\s+\\\\{',\n returnBegin: true,\n end: /\\S/,\n contains: [\n {\n className: 'keyword',\n begin: hljs.IDENT_RE\n },\n {\n begin: /\\{/,\n end: /\\}/,\n keywords: PUPPET_KEYWORDS,\n relevance: 0,\n contains: [\n STRING,\n COMMENT,\n {\n begin: '[a-zA-Z_]+\\\\s*=>',\n returnBegin: true,\n end: '=>',\n contains: [\n {\n className: 'attr',\n begin: hljs.IDENT_RE\n }\n ]\n },\n {\n className: 'number',\n begin: '(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b',\n relevance: 0\n },\n VARIABLE\n ]\n }\n ],\n relevance: 0\n }\n ]\n };\n}\n\nmodule.exports = puppet;\n","/*\nLanguage: PureBASIC\nAuthor: Tristano Ajmone <tajmone@gmail.com>\nDescription: Syntax highlighting for PureBASIC (v.5.00-5.60). No inline ASM highlighting. (v.1.2, May 2017)\nCredits: I've taken inspiration from the PureBasic language file for GeSHi, created by Gustavo Julio Fiorenza (GuShH).\nWebsite: https://www.purebasic.com\n*/\n\n// Base deafult colors in PB IDE: background: #FFFFDF; foreground: #000000;\n\nfunction purebasic(hljs) {\n const STRINGS = { // PB IDE color: #0080FF (Azure Radiance)\n className: 'string',\n begin: '(~)?\"',\n end: '\"',\n illegal: '\\\\n'\n };\n const CONSTANTS = { // PB IDE color: #924B72 (Cannon Pink)\n // \"#\" + a letter or underscore + letters, digits or underscores + (optional) \"$\"\n className: 'symbol',\n begin: '#[a-zA-Z_]\\\\w*\\\\$?'\n };\n\n return {\n name: 'PureBASIC',\n aliases: [\n 'pb',\n 'pbi'\n ],\n keywords: // PB IDE color: #006666 (Blue Stone) + Bold\n // Keywords from all version of PureBASIC 5.00 upward ...\n 'Align And Array As Break CallDebugger Case CompilerCase CompilerDefault ' +\n 'CompilerElse CompilerElseIf CompilerEndIf CompilerEndSelect CompilerError ' +\n 'CompilerIf CompilerSelect CompilerWarning Continue Data DataSection Debug ' +\n 'DebugLevel Declare DeclareC DeclareCDLL DeclareDLL DeclareModule Default ' +\n 'Define Dim DisableASM DisableDebugger DisableExplicit Else ElseIf EnableASM ' +\n 'EnableDebugger EnableExplicit End EndDataSection EndDeclareModule EndEnumeration ' +\n 'EndIf EndImport EndInterface EndMacro EndModule EndProcedure EndSelect ' +\n 'EndStructure EndStructureUnion EndWith Enumeration EnumerationBinary Extends ' +\n 'FakeReturn For ForEach ForEver Global Gosub Goto If Import ImportC ' +\n 'IncludeBinary IncludeFile IncludePath Interface List Macro MacroExpandedCount ' +\n 'Map Module NewList NewMap Next Not Or Procedure ProcedureC ' +\n 'ProcedureCDLL ProcedureDLL ProcedureReturn Protected Prototype PrototypeC ReDim ' +\n 'Read Repeat Restore Return Runtime Select Shared Static Step Structure ' +\n 'StructureUnion Swap Threaded To UndefineMacro Until Until UnuseModule ' +\n 'UseModule Wend While With XIncludeFile XOr',\n contains: [\n // COMMENTS | PB IDE color: #00AAAA (Persian Green)\n hljs.COMMENT(';', '$', {\n relevance: 0\n }),\n\n { // PROCEDURES DEFINITIONS\n className: 'function',\n begin: '\\\\b(Procedure|Declare)(C|CDLL|DLL)?\\\\b',\n end: '\\\\(',\n excludeEnd: true,\n returnBegin: true,\n contains: [\n { // PROCEDURE KEYWORDS | PB IDE color: #006666 (Blue Stone) + Bold\n className: 'keyword',\n begin: '(Procedure|Declare)(C|CDLL|DLL)?',\n excludeEnd: true\n },\n { // PROCEDURE RETURN TYPE SETTING | PB IDE color: #000000 (Black)\n className: 'type',\n begin: '\\\\.\\\\w*'\n // end: ' ',\n },\n hljs.UNDERSCORE_TITLE_MODE // PROCEDURE NAME | PB IDE color: #006666 (Blue Stone)\n ]\n },\n STRINGS,\n CONSTANTS\n ]\n };\n}\n\n/* ==============================================================================\n CHANGELOG\n ==============================================================================\n - v.1.2 (2017-05-12)\n -- BUG-FIX: Some keywords were accidentally joyned together. Now fixed.\n - v.1.1 (2017-04-30)\n -- Updated to PureBASIC 5.60.\n -- Keywords list now built by extracting them from the PureBASIC SDK's\n \"SyntaxHilighting.dll\" (from each PureBASIC version). Tokens from each\n version are added to the list, and renamed or removed tokens are kept\n for the sake of covering all versions of the language from PureBASIC\n v5.00 upward. (NOTE: currently, there are no renamed or deprecated\n tokens in the keywords list). For more info, see:\n -- http://www.purebasic.fr/english/viewtopic.php?&p=506269\n -- https://github.com/tajmone/purebasic-archives/tree/master/syntax-highlighting/guidelines\n - v.1.0 (April 2016)\n -- First release\n -- Keywords list taken and adapted from GuShH's (Gustavo Julio Fiorenza)\n PureBasic language file for GeSHi:\n -- https://github.com/easybook/geshi/blob/master/geshi/purebasic.php\n*/\n\nmodule.exports = purebasic;\n","/*\nLanguage: Python REPL\nRequires: python.js\nAuthor: Josh Goebel <hello@joshgoebel.com>\nCategory: common\n*/\n\nfunction pythonRepl(hljs) {\n return {\n aliases: [ 'pycon' ],\n contains: [\n {\n className: 'meta',\n starts: {\n // a space separates the REPL prefix from the actual code\n // this is purely for cleaner HTML output\n end: / |$/,\n starts: {\n end: '$',\n subLanguage: 'python'\n }\n },\n variants: [\n {\n begin: /^>>>(?=[ ]|$)/\n },\n {\n begin: /^\\.\\.\\.(?=[ ]|$)/\n }\n ]\n }\n ]\n };\n}\n\nmodule.exports = pythonRepl;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n return concat('(?=', re, ')');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/*\nLanguage: Python\nDescription: Python is an interpreted, object-oriented, high-level programming language with dynamic semantics.\nWebsite: https://www.python.org\nCategory: common\n*/\n\nfunction python(hljs) {\n const RESERVED_WORDS = [\n 'and',\n 'as',\n 'assert',\n 'async',\n 'await',\n 'break',\n 'class',\n 'continue',\n 'def',\n 'del',\n 'elif',\n 'else',\n 'except',\n 'finally',\n 'for',\n 'from',\n 'global',\n 'if',\n 'import',\n 'in',\n 'is',\n 'lambda',\n 'nonlocal|10',\n 'not',\n 'or',\n 'pass',\n 'raise',\n 'return',\n 'try',\n 'while',\n 'with',\n 'yield'\n ];\n\n const BUILT_INS = [\n '__import__',\n 'abs',\n 'all',\n 'any',\n 'ascii',\n 'bin',\n 'bool',\n 'breakpoint',\n 'bytearray',\n 'bytes',\n 'callable',\n 'chr',\n 'classmethod',\n 'compile',\n 'complex',\n 'delattr',\n 'dict',\n 'dir',\n 'divmod',\n 'enumerate',\n 'eval',\n 'exec',\n 'filter',\n 'float',\n 'format',\n 'frozenset',\n 'getattr',\n 'globals',\n 'hasattr',\n 'hash',\n 'help',\n 'hex',\n 'id',\n 'input',\n 'int',\n 'isinstance',\n 'issubclass',\n 'iter',\n 'len',\n 'list',\n 'locals',\n 'map',\n 'max',\n 'memoryview',\n 'min',\n 'next',\n 'object',\n 'oct',\n 'open',\n 'ord',\n 'pow',\n 'print',\n 'property',\n 'range',\n 'repr',\n 'reversed',\n 'round',\n 'set',\n 'setattr',\n 'slice',\n 'sorted',\n 'staticmethod',\n 'str',\n 'sum',\n 'super',\n 'tuple',\n 'type',\n 'vars',\n 'zip'\n ];\n\n const LITERALS = [\n '__debug__',\n 'Ellipsis',\n 'False',\n 'None',\n 'NotImplemented',\n 'True'\n ];\n\n // https://docs.python.org/3/library/typing.html\n // TODO: Could these be supplemented by a CamelCase matcher in certain\n // contexts, leaving these remaining only for relevance hinting?\n const TYPES = [\n \"Any\",\n \"Callable\",\n \"Coroutine\",\n \"Dict\",\n \"List\",\n \"Literal\",\n \"Generic\",\n \"Optional\",\n \"Sequence\",\n \"Set\",\n \"Tuple\",\n \"Type\",\n \"Union\"\n ];\n\n const KEYWORDS = {\n $pattern: /[A-Za-z]\\w+|__\\w+__/,\n keyword: RESERVED_WORDS,\n built_in: BUILT_INS,\n literal: LITERALS,\n type: TYPES\n };\n\n const PROMPT = {\n className: 'meta',\n begin: /^(>>>|\\.\\.\\.) /\n };\n\n const SUBST = {\n className: 'subst',\n begin: /\\{/,\n end: /\\}/,\n keywords: KEYWORDS,\n illegal: /#/\n };\n\n const LITERAL_BRACKET = {\n begin: /\\{\\{/,\n relevance: 0\n };\n\n const STRING = {\n className: 'string',\n contains: [ hljs.BACKSLASH_ESCAPE ],\n variants: [\n {\n begin: /([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,\n end: /'''/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n PROMPT\n ],\n relevance: 10\n },\n {\n begin: /([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?\"\"\"/,\n end: /\"\"\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n PROMPT\n ],\n relevance: 10\n },\n {\n begin: /([fF][rR]|[rR][fF]|[fF])'''/,\n end: /'''/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n PROMPT,\n LITERAL_BRACKET,\n SUBST\n ]\n },\n {\n begin: /([fF][rR]|[rR][fF]|[fF])\"\"\"/,\n end: /\"\"\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n PROMPT,\n LITERAL_BRACKET,\n SUBST\n ]\n },\n {\n begin: /([uU]|[rR])'/,\n end: /'/,\n relevance: 10\n },\n {\n begin: /([uU]|[rR])\"/,\n end: /\"/,\n relevance: 10\n },\n {\n begin: /([bB]|[bB][rR]|[rR][bB])'/,\n end: /'/\n },\n {\n begin: /([bB]|[bB][rR]|[rR][bB])\"/,\n end: /\"/\n },\n {\n begin: /([fF][rR]|[rR][fF]|[fF])'/,\n end: /'/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n LITERAL_BRACKET,\n SUBST\n ]\n },\n {\n begin: /([fF][rR]|[rR][fF]|[fF])\"/,\n end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n LITERAL_BRACKET,\n SUBST\n ]\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n };\n\n // https://docs.python.org/3.9/reference/lexical_analysis.html#numeric-literals\n const digitpart = '[0-9](_?[0-9])*';\n const pointfloat = `(\\\\b(${digitpart}))?\\\\.(${digitpart})|\\\\b(${digitpart})\\\\.`;\n const NUMBER = {\n className: 'number',\n relevance: 0,\n variants: [\n // exponentfloat, pointfloat\n // https://docs.python.org/3.9/reference/lexical_analysis.html#floating-point-literals\n // optionally imaginary\n // https://docs.python.org/3.9/reference/lexical_analysis.html#imaginary-literals\n // Note: no leading \\b because floats can start with a decimal point\n // and we don't want to mishandle e.g. `fn(.5)`,\n // no trailing \\b for pointfloat because it can end with a decimal point\n // and we don't want to mishandle e.g. `0..hex()`; this should be safe\n // because both MUST contain a decimal point and so cannot be confused with\n // the interior part of an identifier\n {\n begin: `(\\\\b(${digitpart})|(${pointfloat}))[eE][+-]?(${digitpart})[jJ]?\\\\b`\n },\n {\n begin: `(${pointfloat})[jJ]?`\n },\n\n // decinteger, bininteger, octinteger, hexinteger\n // https://docs.python.org/3.9/reference/lexical_analysis.html#integer-literals\n // optionally \"long\" in Python 2\n // https://docs.python.org/2.7/reference/lexical_analysis.html#integer-and-long-integer-literals\n // decinteger is optionally imaginary\n // https://docs.python.org/3.9/reference/lexical_analysis.html#imaginary-literals\n {\n begin: '\\\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\\\b'\n },\n {\n begin: '\\\\b0[bB](_?[01])+[lL]?\\\\b'\n },\n {\n begin: '\\\\b0[oO](_?[0-7])+[lL]?\\\\b'\n },\n {\n begin: '\\\\b0[xX](_?[0-9a-fA-F])+[lL]?\\\\b'\n },\n\n // imagnumber (digitpart-based)\n // https://docs.python.org/3.9/reference/lexical_analysis.html#imaginary-literals\n {\n begin: `\\\\b(${digitpart})[jJ]\\\\b`\n }\n ]\n };\n const COMMENT_TYPE = {\n className: \"comment\",\n begin: lookahead(/# type:/),\n end: /$/,\n keywords: KEYWORDS,\n contains: [\n { // prevent keywords from coloring `type`\n begin: /# type:/\n },\n // comment within a datatype comment includes no keywords\n {\n begin: /#/,\n end: /\\b\\B/,\n endsWithParent: true\n }\n ]\n };\n const PARAMS = {\n className: 'params',\n variants: [\n // Exclude params in functions without params\n {\n className: \"\",\n begin: /\\(\\s*\\)/,\n skip: true\n },\n {\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n 'self',\n PROMPT,\n NUMBER,\n STRING,\n hljs.HASH_COMMENT_MODE\n ]\n }\n ]\n };\n SUBST.contains = [\n STRING,\n NUMBER,\n PROMPT\n ];\n\n return {\n name: 'Python',\n aliases: [\n 'py',\n 'gyp',\n 'ipython'\n ],\n keywords: KEYWORDS,\n illegal: /(<\\/|->|\\?)|=>/,\n contains: [\n PROMPT,\n NUMBER,\n {\n // very common convention\n begin: /\\bself\\b/\n },\n {\n // eat \"if\" prior to string so that it won't accidentally be\n // labeled as an f-string\n beginKeywords: \"if\",\n relevance: 0\n },\n STRING,\n COMMENT_TYPE,\n hljs.HASH_COMMENT_MODE,\n {\n variants: [\n {\n className: 'function',\n beginKeywords: 'def'\n },\n {\n className: 'class',\n beginKeywords: 'class'\n }\n ],\n end: /:/,\n illegal: /[${=;\\n,]/,\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n PARAMS,\n {\n begin: /->/,\n endsWithParent: true,\n keywords: KEYWORDS\n }\n ]\n },\n {\n className: 'meta',\n begin: /^[\\t ]*@/,\n end: /(?=#)|$/,\n contains: [\n NUMBER,\n PARAMS,\n STRING\n ]\n }\n ]\n };\n}\n\nmodule.exports = python;\n","/*\nLanguage: Q\nDescription: Q is a vector-based functional paradigm programming language built into the kdb+ database.\n (K/Q/Kdb+ from Kx Systems)\nAuthor: Sergey Vidyuk <svidyuk@gmail.com>\nWebsite: https://kx.com/connect-with-us/developers/\n*/\n\nfunction q(hljs) {\n const KEYWORDS = {\n $pattern: /(`?)[A-Za-z0-9_]+\\b/,\n keyword:\n 'do while select delete by update from',\n literal:\n '0b 1b',\n built_in:\n 'neg not null string reciprocal floor ceiling signum mod xbar xlog and or each scan over prior mmu lsq inv md5 ltime gtime count first var dev med cov cor all any rand sums prds mins maxs fills deltas ratios avgs differ prev next rank reverse iasc idesc asc desc msum mcount mavg mdev xrank mmin mmax xprev rotate distinct group where flip type key til get value attr cut set upsert raze union inter except cross sv vs sublist enlist read0 read1 hopen hclose hdel hsym hcount peach system ltrim rtrim trim lower upper ssr view tables views cols xcols keys xkey xcol xasc xdesc fkeys meta lj aj aj0 ij pj asof uj ww wj wj1 fby xgroup ungroup ej save load rsave rload show csv parse eval min max avg wavg wsum sin cos tan sum',\n type:\n '`float `double int `timestamp `timespan `datetime `time `boolean `symbol `char `byte `short `long `real `month `date `minute `second `guid'\n };\n\n return {\n name: 'Q',\n aliases: [\n 'k',\n 'kdb'\n ],\n keywords: KEYWORDS,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE\n ]\n };\n}\n\nmodule.exports = q;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/*\nLanguage: QML\nRequires: javascript.js, xml.js\nAuthor: John Foster <jfoster@esri.com>\nDescription: Syntax highlighting for the Qt Quick QML scripting language, based mostly off\n the JavaScript parser.\nWebsite: https://doc.qt.io/qt-5/qmlapplications.html\nCategory: scripting\n*/\n\nfunction qml(hljs) {\n const KEYWORDS = {\n keyword:\n 'in of on if for while finally var new function do return void else break catch ' +\n 'instanceof with throw case default try this switch continue typeof delete ' +\n 'let yield const export super debugger as async await import',\n literal:\n 'true false null undefined NaN Infinity',\n built_in:\n 'eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent ' +\n 'encodeURI encodeURIComponent escape unescape Object Function Boolean Error ' +\n 'EvalError InternalError RangeError ReferenceError StopIteration SyntaxError ' +\n 'TypeError URIError Number Math Date String RegExp Array Float32Array ' +\n 'Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array ' +\n 'Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require ' +\n 'module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect ' +\n 'Behavior bool color coordinate date double enumeration font geocircle georectangle ' +\n 'geoshape int list matrix4x4 parent point quaternion real rect ' +\n 'size string url variant vector2d vector3d vector4d ' +\n 'Promise'\n };\n\n const QML_IDENT_RE = '[a-zA-Z_][a-zA-Z0-9\\\\._]*';\n\n // Isolate property statements. Ends at a :, =, ;, ,, a comment or end of line.\n // Use property class.\n const PROPERTY = {\n className: 'keyword',\n begin: '\\\\bproperty\\\\b',\n starts: {\n className: 'string',\n end: '(:|=|;|,|//|/\\\\*|$)',\n returnEnd: true\n }\n };\n\n // Isolate signal statements. Ends at a ) a comment or end of line.\n // Use property class.\n const SIGNAL = {\n className: 'keyword',\n begin: '\\\\bsignal\\\\b',\n starts: {\n className: 'string',\n end: '(\\\\(|:|=|;|,|//|/\\\\*|$)',\n returnEnd: true\n }\n };\n\n // id: is special in QML. When we see id: we want to mark the id: as attribute and\n // emphasize the token following.\n const ID_ID = {\n className: 'attribute',\n begin: '\\\\bid\\\\s*:',\n starts: {\n className: 'string',\n end: QML_IDENT_RE,\n returnEnd: false\n }\n };\n\n // Find QML object attribute. An attribute is a QML identifier followed by :.\n // Unfortunately it's hard to know where it ends, as it may contain scalars,\n // objects, object definitions, or javascript. The true end is either when the parent\n // ends or the next attribute is detected.\n const QML_ATTRIBUTE = {\n begin: QML_IDENT_RE + '\\\\s*:',\n returnBegin: true,\n contains: [\n {\n className: 'attribute',\n begin: QML_IDENT_RE,\n end: '\\\\s*:',\n excludeEnd: true,\n relevance: 0\n }\n ],\n relevance: 0\n };\n\n // Find QML object. A QML object is a QML identifier followed by { and ends at the matching }.\n // All we really care about is finding IDENT followed by { and just mark up the IDENT and ignore the {.\n const QML_OBJECT = {\n begin: concat(QML_IDENT_RE, /\\s*\\{/),\n end: /\\{/,\n returnBegin: true,\n relevance: 0,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n begin: QML_IDENT_RE\n })\n ]\n };\n\n return {\n name: 'QML',\n aliases: [ 'qt' ],\n case_insensitive: false,\n keywords: KEYWORDS,\n contains: [\n {\n className: 'meta',\n begin: /^\\s*['\"]use (strict|asm)['\"]/\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n { // template string\n className: 'string',\n begin: '`',\n end: '`',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n {\n className: 'subst',\n begin: '\\\\$\\\\{',\n end: '\\\\}'\n }\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'number',\n variants: [\n {\n begin: '\\\\b(0[bB][01]+)'\n },\n {\n begin: '\\\\b(0[oO][0-7]+)'\n },\n {\n begin: hljs.C_NUMBER_RE\n }\n ],\n relevance: 0\n },\n { // \"value\" container\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n keywords: 'return throw case',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.REGEXP_MODE,\n { // E4X / JSX\n begin: /</,\n end: />\\s*[);\\]]/,\n relevance: 0,\n subLanguage: 'xml'\n }\n ],\n relevance: 0\n },\n SIGNAL,\n PROPERTY,\n {\n className: 'function',\n beginKeywords: 'function',\n end: /\\{/,\n excludeEnd: true,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n begin: /[A-Za-z$_][0-9A-Za-z$_]*/\n }),\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n }\n ],\n illegal: /\\[|%/\n },\n {\n // hack: prevents detection of keywords after dots\n begin: '\\\\.' + hljs.IDENT_RE,\n relevance: 0\n },\n ID_ID,\n QML_ATTRIBUTE,\n QML_OBJECT\n ],\n illegal: /#/\n };\n}\n\nmodule.exports = qml;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n return concat('(?=', re, ')');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/*\nLanguage: R\nDescription: R is a free software environment for statistical computing and graphics.\nAuthor: Joe Cheng <joe@rstudio.org>\nContributors: Konrad Rudolph <konrad.rudolph@gmail.com>\nWebsite: https://www.r-project.org\nCategory: common,scientific\n*/\n\n/** @type LanguageFn */\nfunction r(hljs) {\n // Identifiers in R cannot start with `_`, but they can start with `.` if it\n // is not immediately followed by a digit.\n // R also supports quoted identifiers, which are near-arbitrary sequences\n // delimited by backticks (`…`), which may contain escape sequences. These are\n // handled in a separate mode. See `test/markup/r/names.txt` for examples.\n // FIXME: Support Unicode identifiers.\n const IDENT_RE = /(?:(?:[a-zA-Z]|\\.[._a-zA-Z])[._a-zA-Z0-9]*)|\\.(?!\\d)/;\n const SIMPLE_IDENT = /[a-zA-Z][a-zA-Z_0-9]*/;\n\n return {\n name: 'R',\n\n // only in Haskell, not R\n illegal: /->/,\n keywords: {\n $pattern: IDENT_RE,\n keyword:\n 'function if in break next repeat else for while',\n literal:\n 'NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 ' +\n 'NA_character_|10 NA_complex_|10',\n built_in:\n // Builtin constants\n 'LETTERS letters month.abb month.name pi T F ' +\n // Primitive functions\n // These are all the functions in `base` that are implemented as a\n // `.Primitive`, minus those functions that are also keywords.\n 'abs acos acosh all any anyNA Arg as.call as.character ' +\n 'as.complex as.double as.environment as.integer as.logical ' +\n 'as.null.default as.numeric as.raw asin asinh atan atanh attr ' +\n 'attributes baseenv browser c call ceiling class Conj cos cosh ' +\n 'cospi cummax cummin cumprod cumsum digamma dim dimnames ' +\n 'emptyenv exp expression floor forceAndCall gamma gc.time ' +\n 'globalenv Im interactive invisible is.array is.atomic is.call ' +\n 'is.character is.complex is.double is.environment is.expression ' +\n 'is.finite is.function is.infinite is.integer is.language ' +\n 'is.list is.logical is.matrix is.na is.name is.nan is.null ' +\n 'is.numeric is.object is.pairlist is.raw is.recursive is.single ' +\n 'is.symbol lazyLoadDBfetch length lgamma list log max min ' +\n 'missing Mod names nargs nzchar oldClass on.exit pos.to.env ' +\n 'proc.time prod quote range Re rep retracemem return round ' +\n 'seq_along seq_len seq.int sign signif sin sinh sinpi sqrt ' +\n 'standardGeneric substitute sum switch tan tanh tanpi tracemem ' +\n 'trigamma trunc unclass untracemem UseMethod xtfrm',\n },\n compilerExtensions: [\n // allow beforeMatch to act as a \"qualifier\" for the match\n // the full match begin must be [beforeMatch][begin]\n (mode, parent) => {\n if (!mode.beforeMatch) return;\n // starts conflicts with endsParent which we need to make sure the child\n // rule is not matched multiple times\n if (mode.starts) throw new Error(\"beforeMatch cannot be used with starts\");\n\n const originalMode = Object.assign({}, mode);\n Object.keys(mode).forEach((key) => { delete mode[key]; });\n\n mode.begin = concat(originalMode.beforeMatch, lookahead(originalMode.begin));\n mode.starts = {\n relevance: 0,\n contains: [\n Object.assign(originalMode, { endsParent: true })\n ]\n };\n mode.relevance = 0;\n\n delete originalMode.beforeMatch;\n }\n ],\n contains: [\n // Roxygen comments\n hljs.COMMENT(\n /#'/,\n /$/,\n {\n contains: [\n {\n // Handle `@examples` separately to cause all subsequent code\n // until the next `@`-tag on its own line to be kept as-is,\n // preventing highlighting. This code is example R code, so nested\n // doctags shouldn’t be treated as such. See\n // `test/markup/r/roxygen.txt` for an example.\n className: 'doctag',\n begin: '@examples',\n starts: {\n contains: [\n { begin: /\\n/ },\n {\n begin: /#'\\s*(?=@[a-zA-Z]+)/,\n endsParent: true,\n },\n {\n begin: /#'/,\n end: /$/,\n excludeBegin: true,\n }\n ]\n }\n },\n {\n // Handle `@param` to highlight the parameter name following\n // after.\n className: 'doctag',\n begin: '@param',\n end: /$/,\n contains: [\n {\n className: 'variable',\n variants: [\n { begin: IDENT_RE },\n { begin: /`(?:\\\\.|[^`\\\\])+`/ }\n ],\n endsParent: true\n }\n ]\n },\n {\n className: 'doctag',\n begin: /@[a-zA-Z]+/\n },\n {\n className: 'meta-keyword',\n begin: /\\\\[a-zA-Z]+/,\n }\n ]\n }\n ),\n\n hljs.HASH_COMMENT_MODE,\n\n {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE],\n variants: [\n hljs.END_SAME_AS_BEGIN({ begin: /[rR]\"(-*)\\(/, end: /\\)(-*)\"/ }),\n hljs.END_SAME_AS_BEGIN({ begin: /[rR]\"(-*)\\{/, end: /\\}(-*)\"/ }),\n hljs.END_SAME_AS_BEGIN({ begin: /[rR]\"(-*)\\[/, end: /\\](-*)\"/ }),\n hljs.END_SAME_AS_BEGIN({ begin: /[rR]'(-*)\\(/, end: /\\)(-*)'/ }),\n hljs.END_SAME_AS_BEGIN({ begin: /[rR]'(-*)\\{/, end: /\\}(-*)'/ }),\n hljs.END_SAME_AS_BEGIN({ begin: /[rR]'(-*)\\[/, end: /\\](-*)'/ }),\n {begin: '\"', end: '\"', relevance: 0},\n {begin: \"'\", end: \"'\", relevance: 0}\n ],\n },\n {\n className: 'number',\n relevance: 0,\n beforeMatch: /([^a-zA-Z0-9._])/, // not part of an identifier\n variants: [\n // TODO: replace with negative look-behind when available\n // { begin: /(?<![a-zA-Z0-9._])0[xX][0-9a-fA-F]+\\.[0-9a-fA-F]*[pP][+-]?\\d+i?/ },\n // { begin: /(?<![a-zA-Z0-9._])0[xX][0-9a-fA-F]+([pP][+-]?\\d+)?[Li]?/ },\n // { begin: /(?<![a-zA-Z0-9._])(\\d+(\\.\\d*)?|\\.\\d+)([eE][+-]?\\d+)?[Li]?/ }\n {\n // Special case: only hexadecimal binary powers can contain fractions.\n match: /0[xX][0-9a-fA-F]+\\.[0-9a-fA-F]*[pP][+-]?\\d+i?/,\n },\n {\n match: /0[xX][0-9a-fA-F]+([pP][+-]?\\d+)?[Li]?/\n },\n {\n match: /(\\d+(\\.\\d*)?|\\.\\d+)([eE][+-]?\\d+)?[Li]?/,\n }\n ],\n },\n {\n // infix operator\n begin: '%',\n end: '%'\n },\n // relevance boost for assignment\n {\n begin: concat(SIMPLE_IDENT, \"\\\\s+<-\\\\s+\")\n },\n {\n // escaped identifier\n begin: '`',\n end: '`',\n contains: [\n { begin: /\\\\./ }\n ]\n }\n ]\n };\n}\n\nmodule.exports = r;\n","/*\nLanguage: ReasonML\nDescription: Reason lets you write simple, fast and quality type safe code while leveraging both the JavaScript & OCaml ecosystems.\nWebsite: https://reasonml.github.io\nAuthor: Gidi Meir Morris <oss@gidi.io>\nCategory: functional\n*/\nfunction reasonml(hljs) {\n function orReValues(ops) {\n return ops\n .map(function(op) {\n return op\n .split('')\n .map(function(char) {\n return '\\\\' + char;\n })\n .join('');\n })\n .join('|');\n }\n\n const RE_IDENT = '~?[a-z$_][0-9a-zA-Z$_]*';\n const RE_MODULE_IDENT = '`?[A-Z$_][0-9a-zA-Z$_]*';\n\n const RE_PARAM_TYPEPARAM = '\\'?[a-z$_][0-9a-z$_]*';\n const RE_PARAM_TYPE = '\\\\s*:\\\\s*[a-z$_][0-9a-z$_]*(\\\\(\\\\s*(' + RE_PARAM_TYPEPARAM + '\\\\s*(,' + RE_PARAM_TYPEPARAM + '\\\\s*)*)?\\\\))?';\n const RE_PARAM = RE_IDENT + '(' + RE_PARAM_TYPE + '){0,2}';\n const RE_OPERATOR = \"(\" + orReValues([\n '||',\n '++',\n '**',\n '+.',\n '*',\n '/',\n '*.',\n '/.',\n '...'\n ]) + \"|\\\\|>|&&|==|===)\";\n const RE_OPERATOR_SPACED = \"\\\\s+\" + RE_OPERATOR + \"\\\\s+\";\n\n const KEYWORDS = {\n keyword:\n 'and as asr assert begin class constraint do done downto else end exception external ' +\n 'for fun function functor if in include inherit initializer ' +\n 'land lazy let lor lsl lsr lxor match method mod module mutable new nonrec ' +\n 'object of open or private rec sig struct then to try type val virtual when while with',\n built_in:\n 'array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 ref string unit ',\n literal:\n 'true false'\n };\n\n const RE_NUMBER = '\\\\b(0[xX][a-fA-F0-9_]+[Lln]?|' +\n '0[oO][0-7_]+[Lln]?|' +\n '0[bB][01_]+[Lln]?|' +\n '[0-9][0-9_]*([Lln]|(\\\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)';\n\n const NUMBER_MODE = {\n className: 'number',\n relevance: 0,\n variants: [\n {\n begin: RE_NUMBER\n },\n {\n begin: '\\\\(-' + RE_NUMBER + '\\\\)'\n }\n ]\n };\n\n const OPERATOR_MODE = {\n className: 'operator',\n relevance: 0,\n begin: RE_OPERATOR\n };\n const LIST_CONTENTS_MODES = [\n {\n className: 'identifier',\n relevance: 0,\n begin: RE_IDENT\n },\n OPERATOR_MODE,\n NUMBER_MODE\n ];\n\n const MODULE_ACCESS_CONTENTS = [\n hljs.QUOTE_STRING_MODE,\n OPERATOR_MODE,\n {\n className: 'module',\n begin: \"\\\\b\" + RE_MODULE_IDENT,\n returnBegin: true,\n end: \"\\.\",\n contains: [\n {\n className: 'identifier',\n begin: RE_MODULE_IDENT,\n relevance: 0\n }\n ]\n }\n ];\n\n const PARAMS_CONTENTS = [\n {\n className: 'module',\n begin: \"\\\\b\" + RE_MODULE_IDENT,\n returnBegin: true,\n end: \"\\.\",\n relevance: 0,\n contains: [\n {\n className: 'identifier',\n begin: RE_MODULE_IDENT,\n relevance: 0\n }\n ]\n }\n ];\n\n const PARAMS_MODE = {\n begin: RE_IDENT,\n end: '(,|\\\\n|\\\\))',\n relevance: 0,\n contains: [\n OPERATOR_MODE,\n {\n className: 'typing',\n begin: ':',\n end: '(,|\\\\n)',\n returnBegin: true,\n relevance: 0,\n contains: PARAMS_CONTENTS\n }\n ]\n };\n\n const FUNCTION_BLOCK_MODE = {\n className: 'function',\n relevance: 0,\n keywords: KEYWORDS,\n variants: [\n {\n begin: '\\\\s(\\\\(\\\\.?.*?\\\\)|' + RE_IDENT + ')\\\\s*=>',\n end: '\\\\s*=>',\n returnBegin: true,\n relevance: 0,\n contains: [\n {\n className: 'params',\n variants: [\n {\n begin: RE_IDENT\n },\n {\n begin: RE_PARAM\n },\n {\n begin: /\\(\\s*\\)/\n }\n ]\n }\n ]\n },\n {\n begin: '\\\\s\\\\(\\\\.?[^;\\\\|]*\\\\)\\\\s*=>',\n end: '\\\\s=>',\n returnBegin: true,\n relevance: 0,\n contains: [\n {\n className: 'params',\n relevance: 0,\n variants: [ PARAMS_MODE ]\n }\n ]\n },\n {\n begin: '\\\\(\\\\.\\\\s' + RE_IDENT + '\\\\)\\\\s*=>'\n }\n ]\n };\n MODULE_ACCESS_CONTENTS.push(FUNCTION_BLOCK_MODE);\n\n const CONSTRUCTOR_MODE = {\n className: 'constructor',\n begin: RE_MODULE_IDENT + '\\\\(',\n end: '\\\\)',\n illegal: '\\\\n',\n keywords: KEYWORDS,\n contains: [\n hljs.QUOTE_STRING_MODE,\n OPERATOR_MODE,\n {\n className: 'params',\n begin: '\\\\b' + RE_IDENT\n }\n ]\n };\n\n const PATTERN_MATCH_BLOCK_MODE = {\n className: 'pattern-match',\n begin: '\\\\|',\n returnBegin: true,\n keywords: KEYWORDS,\n end: '=>',\n relevance: 0,\n contains: [\n CONSTRUCTOR_MODE,\n OPERATOR_MODE,\n {\n relevance: 0,\n className: 'constructor',\n begin: RE_MODULE_IDENT\n }\n ]\n };\n\n const MODULE_ACCESS_MODE = {\n className: 'module-access',\n keywords: KEYWORDS,\n returnBegin: true,\n variants: [\n {\n begin: \"\\\\b(\" + RE_MODULE_IDENT + \"\\\\.)+\" + RE_IDENT\n },\n {\n begin: \"\\\\b(\" + RE_MODULE_IDENT + \"\\\\.)+\\\\(\",\n end: \"\\\\)\",\n returnBegin: true,\n contains: [\n FUNCTION_BLOCK_MODE,\n {\n begin: '\\\\(',\n end: '\\\\)',\n skip: true\n }\n ].concat(MODULE_ACCESS_CONTENTS)\n },\n {\n begin: \"\\\\b(\" + RE_MODULE_IDENT + \"\\\\.)+\\\\{\",\n end: /\\}/\n }\n ],\n contains: MODULE_ACCESS_CONTENTS\n };\n\n PARAMS_CONTENTS.push(MODULE_ACCESS_MODE);\n\n return {\n name: 'ReasonML',\n aliases: [ 're' ],\n keywords: KEYWORDS,\n illegal: '(:-|:=|\\\\$\\\\{|\\\\+=)',\n contains: [\n hljs.COMMENT('/\\\\*', '\\\\*/', {\n illegal: '^(#,\\\\/\\\\/)'\n }),\n {\n className: 'character',\n begin: '\\'(\\\\\\\\[^\\']+|[^\\'])\\'',\n illegal: '\\\\n',\n relevance: 0\n },\n hljs.QUOTE_STRING_MODE,\n {\n className: 'literal',\n begin: '\\\\(\\\\)',\n relevance: 0\n },\n {\n className: 'literal',\n begin: '\\\\[\\\\|',\n end: '\\\\|\\\\]',\n relevance: 0,\n contains: LIST_CONTENTS_MODES\n },\n {\n className: 'literal',\n begin: '\\\\[',\n end: '\\\\]',\n relevance: 0,\n contains: LIST_CONTENTS_MODES\n },\n CONSTRUCTOR_MODE,\n {\n className: 'operator',\n begin: RE_OPERATOR_SPACED,\n illegal: '-->',\n relevance: 0\n },\n NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n PATTERN_MATCH_BLOCK_MODE,\n FUNCTION_BLOCK_MODE,\n {\n className: 'module-def',\n begin: \"\\\\bmodule\\\\s+\" + RE_IDENT + \"\\\\s+\" + RE_MODULE_IDENT + \"\\\\s+=\\\\s+\\\\{\",\n end: /\\}/,\n returnBegin: true,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n {\n className: 'module',\n relevance: 0,\n begin: RE_MODULE_IDENT\n },\n {\n begin: /\\{/,\n end: /\\}/,\n skip: true\n }\n ].concat(MODULE_ACCESS_CONTENTS)\n },\n MODULE_ACCESS_MODE\n ]\n };\n}\n\nmodule.exports = reasonml;\n","/*\nLanguage: RenderMan RIB\nAuthor: Konstantin Evdokimenko <qewerty@gmail.com>\nContributors: Shuen-Huei Guan <drake.guan@gmail.com>\nWebsite: https://renderman.pixar.com/resources/RenderMan_20/ribBinding.html\nCategory: graphics\n*/\n\nfunction rib(hljs) {\n return {\n name: 'RenderMan RIB',\n keywords:\n 'ArchiveRecord AreaLightSource Atmosphere Attribute AttributeBegin AttributeEnd Basis ' +\n 'Begin Blobby Bound Clipping ClippingPlane Color ColorSamples ConcatTransform Cone ' +\n 'CoordinateSystem CoordSysTransform CropWindow Curves Cylinder DepthOfField Detail ' +\n 'DetailRange Disk Displacement Display End ErrorHandler Exposure Exterior Format ' +\n 'FrameAspectRatio FrameBegin FrameEnd GeneralPolygon GeometricApproximation Geometry ' +\n 'Hider Hyperboloid Identity Illuminate Imager Interior LightSource ' +\n 'MakeCubeFaceEnvironment MakeLatLongEnvironment MakeShadow MakeTexture Matte ' +\n 'MotionBegin MotionEnd NuPatch ObjectBegin ObjectEnd ObjectInstance Opacity Option ' +\n 'Orientation Paraboloid Patch PatchMesh Perspective PixelFilter PixelSamples ' +\n 'PixelVariance Points PointsGeneralPolygons PointsPolygons Polygon Procedural Projection ' +\n 'Quantize ReadArchive RelativeDetail ReverseOrientation Rotate Scale ScreenWindow ' +\n 'ShadingInterpolation ShadingRate Shutter Sides Skew SolidBegin SolidEnd Sphere ' +\n 'SubdivisionMesh Surface TextureCoordinates Torus Transform TransformBegin TransformEnd ' +\n 'TransformPoints Translate TrimCurve WorldBegin WorldEnd',\n illegal: '</',\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.C_NUMBER_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n };\n}\n\nmodule.exports = rib;\n","/*\nLanguage: Roboconf\nAuthor: Vincent Zurczak <vzurczak@linagora.com>\nDescription: Syntax highlighting for Roboconf's DSL\nWebsite: http://roboconf.net\nCategory: config\n*/\n\nfunction roboconf(hljs) {\n const IDENTIFIER = '[a-zA-Z-_][^\\\\n{]+\\\\{';\n\n const PROPERTY = {\n className: 'attribute',\n begin: /[a-zA-Z-_]+/,\n end: /\\s*:/,\n excludeEnd: true,\n starts: {\n end: ';',\n relevance: 0,\n contains: [\n {\n className: 'variable',\n begin: /\\.[a-zA-Z-_]+/\n },\n {\n className: 'keyword',\n begin: /\\(optional\\)/\n }\n ]\n }\n };\n\n return {\n name: 'Roboconf',\n aliases: [\n 'graph',\n 'instances'\n ],\n case_insensitive: true,\n keywords: 'import',\n contains: [\n // Facet sections\n {\n begin: '^facet ' + IDENTIFIER,\n end: /\\}/,\n keywords: 'facet',\n contains: [\n PROPERTY,\n hljs.HASH_COMMENT_MODE\n ]\n },\n\n // Instance sections\n {\n begin: '^\\\\s*instance of ' + IDENTIFIER,\n end: /\\}/,\n keywords: 'name count channels instance-data instance-state instance of',\n illegal: /\\S/,\n contains: [\n 'self',\n PROPERTY,\n hljs.HASH_COMMENT_MODE\n ]\n },\n\n // Component sections\n {\n begin: '^' + IDENTIFIER,\n end: /\\}/,\n contains: [\n PROPERTY,\n hljs.HASH_COMMENT_MODE\n ]\n },\n\n // Comments\n hljs.HASH_COMMENT_MODE\n ]\n };\n}\n\nmodule.exports = roboconf;\n","/*\nLanguage: Microtik RouterOS script\nAuthor: Ivan Dementev <ivan_div@mail.ru>\nDescription: Scripting host provides a way to automate some router maintenance tasks by means of executing user-defined scripts bounded to some event occurrence\nWebsite: https://wiki.mikrotik.com/wiki/Manual:Scripting\n*/\n\n// Colors from RouterOS terminal:\n// green - #0E9A00\n// teal - #0C9A9A\n// purple - #99069A\n// light-brown - #9A9900\n\nfunction routeros(hljs) {\n const STATEMENTS = 'foreach do while for if from to step else on-error and or not in';\n\n // Global commands: Every global command should start with \":\" token, otherwise it will be treated as variable.\n const GLOBAL_COMMANDS = 'global local beep delay put len typeof pick log time set find environment terminal error execute parse resolve toarray tobool toid toip toip6 tonum tostr totime';\n\n // Common commands: Following commands available from most sub-menus:\n const COMMON_COMMANDS = 'add remove enable disable set get print export edit find run debug error info warning';\n\n const LITERALS = 'true false yes no nothing nil null';\n\n const OBJECTS = 'traffic-flow traffic-generator firewall scheduler aaa accounting address-list address align area bandwidth-server bfd bgp bridge client clock community config connection console customer default dhcp-client dhcp-server discovery dns e-mail ethernet filter firmware gps graphing group hardware health hotspot identity igmp-proxy incoming instance interface ip ipsec ipv6 irq l2tp-server lcd ldp logging mac-server mac-winbox mangle manual mirror mme mpls nat nd neighbor network note ntp ospf ospf-v3 ovpn-server page peer pim ping policy pool port ppp pppoe-client pptp-server prefix profile proposal proxy queue radius resource rip ripng route routing screen script security-profiles server service service-port settings shares smb sms sniffer snmp snooper socks sstp-server system tool tracking type upgrade upnp user-manager users user vlan secret vrrp watchdog web-access wireless pptp pppoe lan wan layer7-protocol lease simple raw';\n\n const VAR = {\n className: 'variable',\n variants: [\n {\n begin: /\\$[\\w\\d#@][\\w\\d_]*/\n },\n {\n begin: /\\$\\{(.*?)\\}/\n }\n ]\n };\n\n const QUOTE_STRING = {\n className: 'string',\n begin: /\"/,\n end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VAR,\n {\n className: 'variable',\n begin: /\\$\\(/,\n end: /\\)/,\n contains: [ hljs.BACKSLASH_ESCAPE ]\n }\n ]\n };\n\n const APOS_STRING = {\n className: 'string',\n begin: /'/,\n end: /'/\n };\n\n return {\n name: 'Microtik RouterOS script',\n aliases: [\n 'mikrotik'\n ],\n case_insensitive: true,\n keywords: {\n $pattern: /:?[\\w-]+/,\n literal: LITERALS,\n keyword: STATEMENTS + ' :' + STATEMENTS.split(' ').join(' :') + ' :' + GLOBAL_COMMANDS.split(' ').join(' :')\n },\n contains: [\n { // illegal syntax\n variants: [\n { // -- comment\n begin: /\\/\\*/,\n end: /\\*\\//\n },\n { // Stan comment\n begin: /\\/\\//,\n end: /$/\n },\n { // HTML tags\n begin: /<\\//,\n end: />/\n }\n ],\n illegal: /./\n },\n hljs.COMMENT('^#', '$'),\n QUOTE_STRING,\n APOS_STRING,\n VAR,\n // attribute=value\n {\n // > is to avoid matches with => in other grammars\n begin: /[\\w-]+=([^\\s{}[\\]()>]+)/,\n relevance: 0,\n returnBegin: true,\n contains: [\n {\n className: 'attribute',\n begin: /[^=]+/\n },\n {\n begin: /=/,\n endsWithParent: true,\n relevance: 0,\n contains: [\n QUOTE_STRING,\n APOS_STRING,\n VAR,\n {\n className: 'literal',\n begin: '\\\\b(' + LITERALS.split(' ').join('|') + ')\\\\b'\n },\n {\n // Do not format unclassified values. Needed to exclude highlighting of values as built_in.\n begin: /(\"[^\"]*\"|[^\\s{}[\\]]+)/\n }\n /*\n {\n // IPv4 addresses and subnets\n className: 'number',\n variants: [\n {begin: IPADDR_wBITMASK+'(,'+IPADDR_wBITMASK+')*'}, //192.168.0.0/24,1.2.3.0/24\n {begin: IPADDR+'-'+IPADDR}, // 192.168.0.1-192.168.0.3\n {begin: IPADDR+'(,'+IPADDR+')*'}, // 192.168.0.1,192.168.0.34,192.168.24.1,192.168.0.1\n ]\n },\n {\n // MAC addresses and DHCP Client IDs\n className: 'number',\n begin: /\\b(1:)?([0-9A-Fa-f]{1,2}[:-]){5}([0-9A-Fa-f]){1,2}\\b/,\n },\n */\n ]\n }\n ]\n },\n {\n // HEX values\n className: 'number',\n begin: /\\*[0-9a-fA-F]+/\n },\n {\n begin: '\\\\b(' + COMMON_COMMANDS.split(' ').join('|') + ')([\\\\s[(\\\\]|])',\n returnBegin: true,\n contains: [\n {\n className: 'builtin-name', // 'function',\n begin: /\\w+/\n }\n ]\n },\n {\n className: 'built_in',\n variants: [\n {\n begin: '(\\\\.\\\\./|/|\\\\s)((' + OBJECTS.split(' ').join('|') + ');?\\\\s)+'\n },\n {\n begin: /\\.\\./,\n relevance: 0\n }\n ]\n }\n ]\n };\n}\n\nmodule.exports = routeros;\n","/*\nLanguage: RenderMan RSL\nAuthor: Konstantin Evdokimenko <qewerty@gmail.com>\nContributors: Shuen-Huei Guan <drake.guan@gmail.com>\nWebsite: https://renderman.pixar.com/resources/RenderMan_20/shadingLanguage.html\nCategory: graphics\n*/\n\nfunction rsl(hljs) {\n return {\n name: 'RenderMan RSL',\n keywords: {\n keyword:\n 'float color point normal vector matrix while for if do return else break extern continue',\n built_in:\n 'abs acos ambient area asin atan atmosphere attribute calculatenormal ceil cellnoise ' +\n 'clamp comp concat cos degrees depth Deriv diffuse distance Du Dv environment exp ' +\n 'faceforward filterstep floor format fresnel incident length lightsource log match ' +\n 'max min mod noise normalize ntransform opposite option phong pnoise pow printf ' +\n 'ptlined radians random reflect refract renderinfo round setcomp setxcomp setycomp ' +\n 'setzcomp shadow sign sin smoothstep specular specularbrdf spline sqrt step tan ' +\n 'texture textureinfo trace transform vtransform xcomp ycomp zcomp'\n },\n illegal: '</',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'meta',\n begin: '#',\n end: '$'\n },\n {\n className: 'class',\n beginKeywords: 'surface displacement light volume imager',\n end: '\\\\('\n },\n {\n beginKeywords: 'illuminate illuminance gather',\n end: '\\\\('\n }\n ]\n };\n}\n\nmodule.exports = rsl;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n return concat('(?=', re, ')');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/*\nLanguage: Ruby\nDescription: Ruby is a dynamic, open source programming language with a focus on simplicity and productivity.\nWebsite: https://www.ruby-lang.org/\nAuthor: Anton Kovalyov <anton@kovalyov.net>\nContributors: Peter Leonov <gojpeg@yandex.ru>, Vasily Polovnyov <vast@whiteants.net>, Loren Segal <lsegal@soen.ca>, Pascal Hurni <phi@ruby-reactive.org>, Cedric Sohrauer <sohrauer@googlemail.com>\nCategory: common\n*/\n\nfunction ruby(hljs) {\n const RUBY_METHOD_RE = '([a-zA-Z_]\\\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-/+%^&*~`|]|\\\\[\\\\]=?)';\n const RUBY_KEYWORDS = {\n keyword:\n 'and then defined module in return redo if BEGIN retry end for self when ' +\n 'next until do begin unless END rescue else break undef not super class case ' +\n 'require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor ' +\n '__FILE__',\n built_in: 'proc lambda',\n literal:\n 'true false nil'\n };\n const YARDOCTAG = {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n };\n const IRB_OBJECT = {\n begin: '#<',\n end: '>'\n };\n const COMMENT_MODES = [\n hljs.COMMENT(\n '#',\n '$',\n {\n contains: [ YARDOCTAG ]\n }\n ),\n hljs.COMMENT(\n '^=begin',\n '^=end',\n {\n contains: [ YARDOCTAG ],\n relevance: 10\n }\n ),\n hljs.COMMENT('^__END__', '\\\\n$')\n ];\n const SUBST = {\n className: 'subst',\n begin: /#\\{/,\n end: /\\}/,\n keywords: RUBY_KEYWORDS\n };\n const STRING = {\n className: 'string',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n variants: [\n {\n begin: /'/,\n end: /'/\n },\n {\n begin: /\"/,\n end: /\"/\n },\n {\n begin: /`/,\n end: /`/\n },\n {\n begin: /%[qQwWx]?\\(/,\n end: /\\)/\n },\n {\n begin: /%[qQwWx]?\\[/,\n end: /\\]/\n },\n {\n begin: /%[qQwWx]?\\{/,\n end: /\\}/\n },\n {\n begin: /%[qQwWx]?</,\n end: />/\n },\n {\n begin: /%[qQwWx]?\\//,\n end: /\\//\n },\n {\n begin: /%[qQwWx]?%/,\n end: /%/\n },\n {\n begin: /%[qQwWx]?-/,\n end: /-/\n },\n {\n begin: /%[qQwWx]?\\|/,\n end: /\\|/\n },\n // in the following expressions, \\B in the beginning suppresses recognition of ?-sequences\n // where ? is the last character of a preceding identifier, as in: `func?4`\n {\n begin: /\\B\\?(\\\\\\d{1,3})/\n },\n {\n begin: /\\B\\?(\\\\x[A-Fa-f0-9]{1,2})/\n },\n {\n begin: /\\B\\?(\\\\u\\{?[A-Fa-f0-9]{1,6}\\}?)/\n },\n {\n begin: /\\B\\?(\\\\M-\\\\C-|\\\\M-\\\\c|\\\\c\\\\M-|\\\\M-|\\\\C-\\\\M-)[\\x20-\\x7e]/\n },\n {\n begin: /\\B\\?\\\\(c|C-)[\\x20-\\x7e]/\n },\n {\n begin: /\\B\\?\\\\?\\S/\n },\n { // heredocs\n begin: /<<[-~]?'?(\\w+)\\n(?:[^\\n]*\\n)*?\\s*\\1\\b/,\n returnBegin: true,\n contains: [\n {\n begin: /<<[-~]?'?/\n },\n hljs.END_SAME_AS_BEGIN({\n begin: /(\\w+)/,\n end: /(\\w+)/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n })\n ]\n }\n ]\n };\n\n // Ruby syntax is underdocumented, but this grammar seems to be accurate\n // as of version 2.7.2 (confirmed with (irb and `Ripper.sexp(...)`)\n // https://docs.ruby-lang.org/en/2.7.0/doc/syntax/literals_rdoc.html#label-Numbers\n const decimal = '[1-9](_?[0-9])*|0';\n const digits = '[0-9](_?[0-9])*';\n const NUMBER = {\n className: 'number',\n relevance: 0,\n variants: [\n // decimal integer/float, optionally exponential or rational, optionally imaginary\n {\n begin: `\\\\b(${decimal})(\\\\.(${digits}))?([eE][+-]?(${digits})|r)?i?\\\\b`\n },\n\n // explicit decimal/binary/octal/hexadecimal integer,\n // optionally rational and/or imaginary\n {\n begin: \"\\\\b0[dD][0-9](_?[0-9])*r?i?\\\\b\"\n },\n {\n begin: \"\\\\b0[bB][0-1](_?[0-1])*r?i?\\\\b\"\n },\n {\n begin: \"\\\\b0[oO][0-7](_?[0-7])*r?i?\\\\b\"\n },\n {\n begin: \"\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\\\b\"\n },\n\n // 0-prefixed implicit octal integer, optionally rational and/or imaginary\n {\n begin: \"\\\\b0(_?[0-7])+r?i?\\\\b\"\n }\n ]\n };\n\n const PARAMS = {\n className: 'params',\n begin: '\\\\(',\n end: '\\\\)',\n endsParent: true,\n keywords: RUBY_KEYWORDS\n };\n\n const RUBY_DEFAULT_CONTAINS = [\n STRING,\n {\n className: 'class',\n beginKeywords: 'class module',\n end: '$|;',\n illegal: /=/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n begin: '[A-Za-z_]\\\\w*(::\\\\w+)*(\\\\?|!)?'\n }),\n {\n begin: '<\\\\s*',\n contains: [\n {\n begin: '(' + hljs.IDENT_RE + '::)?' + hljs.IDENT_RE,\n // we already get points for <, we don't need poitns\n // for the name also\n relevance: 0\n }\n ]\n }\n ].concat(COMMENT_MODES)\n },\n {\n className: 'function',\n // def method_name(\n // def method_name;\n // def method_name (end of line)\n begin: concat(/def\\s+/, lookahead(RUBY_METHOD_RE + \"\\\\s*(\\\\(|;|$)\")),\n relevance: 0, // relevance comes from kewords\n keywords: \"def\",\n end: '$|;',\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n begin: RUBY_METHOD_RE\n }),\n PARAMS\n ].concat(COMMENT_MODES)\n },\n {\n // swallow namespace qualifiers before symbols\n begin: hljs.IDENT_RE + '::'\n },\n {\n className: 'symbol',\n begin: hljs.UNDERSCORE_IDENT_RE + '(!|\\\\?)?:',\n relevance: 0\n },\n {\n className: 'symbol',\n begin: ':(?!\\\\s)',\n contains: [\n STRING,\n {\n begin: RUBY_METHOD_RE\n }\n ],\n relevance: 0\n },\n NUMBER,\n {\n // negative-look forward attemps to prevent false matches like:\n // @ident@ or $ident$ that might indicate this is not ruby at all\n className: \"variable\",\n begin: '(\\\\$\\\\W)|((\\\\$|@@?)(\\\\w+))(?=[^@$?])' + `(?![A-Za-z])(?![@$?'])`\n },\n {\n className: 'params',\n begin: /\\|/,\n end: /\\|/,\n relevance: 0, // this could be a lot of things (in other languages) other than params\n keywords: RUBY_KEYWORDS\n },\n { // regexp container\n begin: '(' + hljs.RE_STARTERS_RE + '|unless)\\\\s*',\n keywords: 'unless',\n contains: [\n {\n className: 'regexp',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n illegal: /\\n/,\n variants: [\n {\n begin: '/',\n end: '/[a-z]*'\n },\n {\n begin: /%r\\{/,\n end: /\\}[a-z]*/\n },\n {\n begin: '%r\\\\(',\n end: '\\\\)[a-z]*'\n },\n {\n begin: '%r!',\n end: '![a-z]*'\n },\n {\n begin: '%r\\\\[',\n end: '\\\\][a-z]*'\n }\n ]\n }\n ].concat(IRB_OBJECT, COMMENT_MODES),\n relevance: 0\n }\n ].concat(IRB_OBJECT, COMMENT_MODES);\n\n SUBST.contains = RUBY_DEFAULT_CONTAINS;\n PARAMS.contains = RUBY_DEFAULT_CONTAINS;\n\n // >>\n // ?>\n const SIMPLE_PROMPT = \"[>?]>\";\n // irb(main):001:0>\n const DEFAULT_PROMPT = \"[\\\\w#]+\\\\(\\\\w+\\\\):\\\\d+:\\\\d+>\";\n const RVM_PROMPT = \"(\\\\w+-)?\\\\d+\\\\.\\\\d+\\\\.\\\\d+(p\\\\d+)?[^\\\\d][^>]+>\";\n\n const IRB_DEFAULT = [\n {\n begin: /^\\s*=>/,\n starts: {\n end: '$',\n contains: RUBY_DEFAULT_CONTAINS\n }\n },\n {\n className: 'meta',\n begin: '^(' + SIMPLE_PROMPT + \"|\" + DEFAULT_PROMPT + '|' + RVM_PROMPT + ')(?=[ ])',\n starts: {\n end: '$',\n contains: RUBY_DEFAULT_CONTAINS\n }\n }\n ];\n\n COMMENT_MODES.unshift(IRB_OBJECT);\n\n return {\n name: 'Ruby',\n aliases: [\n 'rb',\n 'gemspec',\n 'podspec',\n 'thor',\n 'irb'\n ],\n keywords: RUBY_KEYWORDS,\n illegal: /\\/\\*/,\n contains: [\n hljs.SHEBANG({\n binary: \"ruby\"\n })\n ]\n .concat(IRB_DEFAULT)\n .concat(COMMENT_MODES)\n .concat(RUBY_DEFAULT_CONTAINS)\n };\n}\n\nmodule.exports = ruby;\n","/*\nLanguage: Oracle Rules Language\nAuthor: Jason Jacobson <jason.a.jacobson@gmail.com>\nDescription: The Oracle Utilities Rules Language is used to program the Oracle Utilities Applications acquired from LODESTAR Corporation. The products include Billing Component, LPSS, Pricing Component etc. through version 1.6.1.\nWebsite: https://docs.oracle.com/cd/E17904_01/dev.1111/e10227/rlref.htm\nCategory: enterprise\n*/\n\nfunction ruleslanguage(hljs) {\n return {\n name: 'Oracle Rules Language',\n keywords: {\n keyword:\n 'BILL_PERIOD BILL_START BILL_STOP RS_EFFECTIVE_START RS_EFFECTIVE_STOP RS_JURIS_CODE RS_OPCO_CODE ' +\n 'INTDADDATTRIBUTE|5 INTDADDVMSG|5 INTDBLOCKOP|5 INTDBLOCKOPNA|5 INTDCLOSE|5 INTDCOUNT|5 ' +\n 'INTDCOUNTSTATUSCODE|5 INTDCREATEMASK|5 INTDCREATEDAYMASK|5 INTDCREATEFACTORMASK|5 ' +\n 'INTDCREATEHANDLE|5 INTDCREATEOVERRIDEDAYMASK|5 INTDCREATEOVERRIDEMASK|5 ' +\n 'INTDCREATESTATUSCODEMASK|5 INTDCREATETOUPERIOD|5 INTDDELETE|5 INTDDIPTEST|5 INTDEXPORT|5 ' +\n 'INTDGETERRORCODE|5 INTDGETERRORMESSAGE|5 INTDISEQUAL|5 INTDJOIN|5 INTDLOAD|5 INTDLOADACTUALCUT|5 ' +\n 'INTDLOADDATES|5 INTDLOADHIST|5 INTDLOADLIST|5 INTDLOADLISTDATES|5 INTDLOADLISTENERGY|5 ' +\n 'INTDLOADLISTHIST|5 INTDLOADRELATEDCHANNEL|5 INTDLOADSP|5 INTDLOADSTAGING|5 INTDLOADUOM|5 ' +\n 'INTDLOADUOMDATES|5 INTDLOADUOMHIST|5 INTDLOADVERSION|5 INTDOPEN|5 INTDREADFIRST|5 INTDREADNEXT|5 ' +\n 'INTDRECCOUNT|5 INTDRELEASE|5 INTDREPLACE|5 INTDROLLAVG|5 INTDROLLPEAK|5 INTDSCALAROP|5 INTDSCALE|5 ' +\n 'INTDSETATTRIBUTE|5 INTDSETDSTPARTICIPANT|5 INTDSETSTRING|5 INTDSETVALUE|5 INTDSETVALUESTATUS|5 ' +\n 'INTDSHIFTSTARTTIME|5 INTDSMOOTH|5 INTDSORT|5 INTDSPIKETEST|5 INTDSUBSET|5 INTDTOU|5 ' +\n 'INTDTOURELEASE|5 INTDTOUVALUE|5 INTDUPDATESTATS|5 INTDVALUE|5 STDEV INTDDELETEEX|5 ' +\n 'INTDLOADEXACTUAL|5 INTDLOADEXCUT|5 INTDLOADEXDATES|5 INTDLOADEX|5 INTDLOADEXRELATEDCHANNEL|5 ' +\n 'INTDSAVEEX|5 MVLOAD|5 MVLOADACCT|5 MVLOADACCTDATES|5 MVLOADACCTHIST|5 MVLOADDATES|5 MVLOADHIST|5 ' +\n 'MVLOADLIST|5 MVLOADLISTDATES|5 MVLOADLISTHIST|5 IF FOR NEXT DONE SELECT END CALL ABORT CLEAR CHANNEL FACTOR LIST NUMBER ' +\n 'OVERRIDE SET WEEK DISTRIBUTIONNODE ELSE WHEN THEN OTHERWISE IENUM CSV INCLUDE LEAVE RIDER SAVE DELETE ' +\n 'NOVALUE SECTION WARN SAVE_UPDATE DETERMINANT LABEL REPORT REVENUE EACH ' +\n 'IN FROM TOTAL CHARGE BLOCK AND OR CSV_FILE RATE_CODE AUXILIARY_DEMAND ' +\n 'UIDACCOUNT RS BILL_PERIOD_SELECT HOURS_PER_MONTH INTD_ERROR_STOP SEASON_SCHEDULE_NAME ' +\n 'ACCOUNTFACTOR ARRAYUPPERBOUND CALLSTOREDPROC GETADOCONNECTION GETCONNECT GETDATASOURCE ' +\n 'GETQUALIFIER GETUSERID HASVALUE LISTCOUNT LISTOP LISTUPDATE LISTVALUE PRORATEFACTOR RSPRORATE ' +\n 'SETBINPATH SETDBMONITOR WQ_OPEN BILLINGHOURS DATE DATEFROMFLOAT DATETIMEFROMSTRING ' +\n 'DATETIMETOSTRING DATETOFLOAT DAY DAYDIFF DAYNAME DBDATETIME HOUR MINUTE MONTH MONTHDIFF ' +\n 'MONTHHOURS MONTHNAME ROUNDDATE SAMEWEEKDAYLASTYEAR SECOND WEEKDAY WEEKDIFF YEAR YEARDAY ' +\n 'YEARSTR COMPSUM HISTCOUNT HISTMAX HISTMIN HISTMINNZ HISTVALUE MAXNRANGE MAXRANGE MINRANGE ' +\n 'COMPIKVA COMPKVA COMPKVARFROMKQKW COMPLF IDATTR FLAG LF2KW LF2KWH MAXKW POWERFACTOR ' +\n 'READING2USAGE AVGSEASON MAXSEASON MONTHLYMERGE SEASONVALUE SUMSEASON ACCTREADDATES ' +\n 'ACCTTABLELOAD CONFIGADD CONFIGGET CREATEOBJECT CREATEREPORT EMAILCLIENT EXPBLKMDMUSAGE ' +\n 'EXPMDMUSAGE EXPORT_USAGE FACTORINEFFECT GETUSERSPECIFIEDSTOP INEFFECT ISHOLIDAY RUNRATE ' +\n 'SAVE_PROFILE SETREPORTTITLE USEREXIT WATFORRUNRATE TO TABLE ACOS ASIN ATAN ATAN2 BITAND CEIL ' +\n 'COS COSECANT COSH COTANGENT DIVQUOT DIVREM EXP FABS FLOOR FMOD FREPM FREXPN LOG LOG10 MAX MAXN ' +\n 'MIN MINNZ MODF POW ROUND ROUND2VALUE ROUNDINT SECANT SIN SINH SQROOT TAN TANH FLOAT2STRING ' +\n 'FLOAT2STRINGNC INSTR LEFT LEN LTRIM MID RIGHT RTRIM STRING STRINGNC TOLOWER TOUPPER TRIM ' +\n 'NUMDAYS READ_DATE STAGING',\n built_in:\n 'IDENTIFIER OPTIONS XML_ELEMENT XML_OP XML_ELEMENT_OF DOMDOCCREATE DOMDOCLOADFILE DOMDOCLOADXML ' +\n 'DOMDOCSAVEFILE DOMDOCGETROOT DOMDOCADDPI DOMNODEGETNAME DOMNODEGETTYPE DOMNODEGETVALUE DOMNODEGETCHILDCT ' +\n 'DOMNODEGETFIRSTCHILD DOMNODEGETSIBLING DOMNODECREATECHILDELEMENT DOMNODESETATTRIBUTE ' +\n 'DOMNODEGETCHILDELEMENTCT DOMNODEGETFIRSTCHILDELEMENT DOMNODEGETSIBLINGELEMENT DOMNODEGETATTRIBUTECT ' +\n 'DOMNODEGETATTRIBUTEI DOMNODEGETATTRIBUTEBYNAME DOMNODEGETBYNAME'\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'literal',\n variants: [\n { // looks like #-comment\n begin: '#\\\\s+',\n relevance: 0\n },\n {\n begin: '#[a-zA-Z .]+'\n }\n ]\n }\n ]\n };\n}\n\nmodule.exports = ruleslanguage;\n","/*\nLanguage: Rust\nAuthor: Andrey Vlasovskikh <andrey.vlasovskikh@gmail.com>\nContributors: Roman Shmatov <romanshmatov@gmail.com>, Kasper Andersen <kma_untrusted@protonmail.com>\nWebsite: https://www.rust-lang.org\nCategory: common, system\n*/\n\nfunction rust(hljs) {\n const NUM_SUFFIX = '([ui](8|16|32|64|128|size)|f(32|64))\\?';\n const KEYWORDS =\n 'abstract as async await become box break const continue crate do dyn ' +\n 'else enum extern false final fn for if impl in let loop macro match mod ' +\n 'move mut override priv pub ref return self Self static struct super ' +\n 'trait true try type typeof unsafe unsized use virtual where while yield';\n const BUILTINS =\n // functions\n 'drop ' +\n // types\n 'i8 i16 i32 i64 i128 isize ' +\n 'u8 u16 u32 u64 u128 usize ' +\n 'f32 f64 ' +\n 'str char bool ' +\n 'Box Option Result String Vec ' +\n // traits\n 'Copy Send Sized Sync Drop Fn FnMut FnOnce ToOwned Clone Debug ' +\n 'PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator ' +\n 'Extend IntoIterator DoubleEndedIterator ExactSizeIterator ' +\n 'SliceConcatExt ToString ' +\n // macros\n 'assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! ' +\n 'debug_assert! debug_assert_eq! env! panic! file! format! format_args! ' +\n 'include_bin! include_str! line! local_data_key! module_path! ' +\n 'option_env! print! println! select! stringify! try! unimplemented! ' +\n 'unreachable! vec! write! writeln! macro_rules! assert_ne! debug_assert_ne!';\n return {\n name: 'Rust',\n aliases: [ 'rs' ],\n keywords: {\n $pattern: hljs.IDENT_RE + '!?',\n keyword:\n KEYWORDS,\n literal:\n 'true false Some None Ok Err',\n built_in:\n BUILTINS\n },\n illegal: '</',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.COMMENT('/\\\\*', '\\\\*/', {\n contains: [ 'self' ]\n }),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {\n begin: /b?\"/,\n illegal: null\n }),\n {\n className: 'string',\n variants: [\n {\n begin: /r(#*)\"(.|\\n)*?\"\\1(?!#)/\n },\n {\n begin: /b?'\\\\?(x\\w{2}|u\\w{4}|U\\w{8}|.)'/\n }\n ]\n },\n {\n className: 'symbol',\n begin: /'[a-zA-Z_][a-zA-Z0-9_]*/\n },\n {\n className: 'number',\n variants: [\n {\n begin: '\\\\b0b([01_]+)' + NUM_SUFFIX\n },\n {\n begin: '\\\\b0o([0-7_]+)' + NUM_SUFFIX\n },\n {\n begin: '\\\\b0x([A-Fa-f0-9_]+)' + NUM_SUFFIX\n },\n {\n begin: '\\\\b(\\\\d[\\\\d_]*(\\\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)' +\n NUM_SUFFIX\n }\n ],\n relevance: 0\n },\n {\n className: 'function',\n beginKeywords: 'fn',\n end: '(\\\\(|<)',\n excludeEnd: true,\n contains: [ hljs.UNDERSCORE_TITLE_MODE ]\n },\n {\n className: 'meta',\n begin: '#!?\\\\[',\n end: '\\\\]',\n contains: [\n {\n className: 'meta-string',\n begin: /\"/,\n end: /\"/\n }\n ]\n },\n {\n className: 'class',\n beginKeywords: 'type',\n end: ';',\n contains: [\n hljs.inherit(hljs.UNDERSCORE_TITLE_MODE, {\n endsParent: true\n })\n ],\n illegal: '\\\\S'\n },\n {\n className: 'class',\n beginKeywords: 'trait enum struct union',\n end: /\\{/,\n contains: [\n hljs.inherit(hljs.UNDERSCORE_TITLE_MODE, {\n endsParent: true\n })\n ],\n illegal: '[\\\\w\\\\d]'\n },\n {\n begin: hljs.IDENT_RE + '::',\n keywords: {\n built_in: BUILTINS\n }\n },\n {\n begin: '->'\n }\n ]\n };\n}\n\nmodule.exports = rust;\n","/*\nLanguage: SAS\nAuthor: Mauricio Caceres <mauricio.caceres.bravo@gmail.com>\nDescription: Syntax Highlighting for SAS\n*/\n\nfunction sas(hljs) {\n // Data step and PROC SQL statements\n const SAS_KEYWORDS =\n 'do if then else end until while ' +\n '' +\n 'abort array attrib by call cards cards4 catname continue ' +\n 'datalines datalines4 delete delim delimiter display dm drop ' +\n 'endsas error file filename footnote format goto in infile ' +\n 'informat input keep label leave length libname link list ' +\n 'lostcard merge missing modify options output out page put ' +\n 'redirect remove rename replace retain return select set skip ' +\n 'startsas stop title update waitsas where window x systask ' +\n '' +\n 'add and alter as cascade check create delete describe ' +\n 'distinct drop foreign from group having index insert into in ' +\n 'key like message modify msgtype not null on or order primary ' +\n 'references reset restrict select set table unique update ' +\n 'validate view where';\n\n // Built-in SAS functions\n const SAS_FUN =\n 'abs|addr|airy|arcos|arsin|atan|attrc|attrn|band|' +\n 'betainv|blshift|bnot|bor|brshift|bxor|byte|cdf|ceil|' +\n 'cexist|cinv|close|cnonct|collate|compbl|compound|' +\n 'compress|cos|cosh|css|curobs|cv|daccdb|daccdbsl|' +\n 'daccsl|daccsyd|dacctab|dairy|date|datejul|datepart|' +\n 'datetime|day|dclose|depdb|depdbsl|depdbsl|depsl|' +\n 'depsl|depsyd|depsyd|deptab|deptab|dequote|dhms|dif|' +\n 'digamma|dim|dinfo|dnum|dopen|doptname|doptnum|dread|' +\n 'dropnote|dsname|erf|erfc|exist|exp|fappend|fclose|' +\n 'fcol|fdelete|fetch|fetchobs|fexist|fget|fileexist|' +\n 'filename|fileref|finfo|finv|fipname|fipnamel|' +\n 'fipstate|floor|fnonct|fnote|fopen|foptname|foptnum|' +\n 'fpoint|fpos|fput|fread|frewind|frlen|fsep|fuzz|' +\n 'fwrite|gaminv|gamma|getoption|getvarc|getvarn|hbound|' +\n 'hms|hosthelp|hour|ibessel|index|indexc|indexw|input|' +\n 'inputc|inputn|int|intck|intnx|intrr|irr|jbessel|' +\n 'juldate|kurtosis|lag|lbound|left|length|lgamma|' +\n 'libname|libref|log|log10|log2|logpdf|logpmf|logsdf|' +\n 'lowcase|max|mdy|mean|min|minute|mod|month|mopen|' +\n 'mort|n|netpv|nmiss|normal|note|npv|open|ordinal|' +\n 'pathname|pdf|peek|peekc|pmf|point|poisson|poke|' +\n 'probbeta|probbnml|probchi|probf|probgam|probhypr|' +\n 'probit|probnegb|probnorm|probt|put|putc|putn|qtr|' +\n 'quote|ranbin|rancau|ranexp|rangam|range|rank|rannor|' +\n 'ranpoi|rantbl|rantri|ranuni|repeat|resolve|reverse|' +\n 'rewind|right|round|saving|scan|sdf|second|sign|' +\n 'sin|sinh|skewness|soundex|spedis|sqrt|std|stderr|' +\n 'stfips|stname|stnamel|substr|sum|symget|sysget|' +\n 'sysmsg|sysprod|sysrc|system|tan|tanh|time|timepart|' +\n 'tinv|tnonct|today|translate|tranwrd|trigamma|' +\n 'trim|trimn|trunc|uniform|upcase|uss|var|varfmt|' +\n 'varinfmt|varlabel|varlen|varname|varnum|varray|' +\n 'varrayx|vartype|verify|vformat|vformatd|vformatdx|' +\n 'vformatn|vformatnx|vformatw|vformatwx|vformatx|' +\n 'vinarray|vinarrayx|vinformat|vinformatd|vinformatdx|' +\n 'vinformatn|vinformatnx|vinformatw|vinformatwx|' +\n 'vinformatx|vlabel|vlabelx|vlength|vlengthx|vname|' +\n 'vnamex|vtype|vtypex|weekday|year|yyq|zipfips|zipname|' +\n 'zipnamel|zipstate';\n\n // Built-in macro functions\n const SAS_MACRO_FUN =\n 'bquote|nrbquote|cmpres|qcmpres|compstor|' +\n 'datatyp|display|do|else|end|eval|global|goto|' +\n 'if|index|input|keydef|label|left|length|let|' +\n 'local|lowcase|macro|mend|nrbquote|nrquote|' +\n 'nrstr|put|qcmpres|qleft|qlowcase|qscan|' +\n 'qsubstr|qsysfunc|qtrim|quote|qupcase|scan|str|' +\n 'substr|superq|syscall|sysevalf|sysexec|sysfunc|' +\n 'sysget|syslput|sysprod|sysrc|sysrput|then|to|' +\n 'trim|unquote|until|upcase|verify|while|window';\n\n return {\n name: 'SAS',\n case_insensitive: true, // SAS is case-insensitive\n keywords: {\n literal:\n 'null missing _all_ _automatic_ _character_ _infile_ ' +\n '_n_ _name_ _null_ _numeric_ _user_ _webout_',\n meta:\n SAS_KEYWORDS\n },\n contains: [\n {\n // Distinct highlight for proc <proc>, data, run, quit\n className: 'keyword',\n begin: /^\\s*(proc [\\w\\d_]+|data|run|quit)[\\s;]/\n },\n {\n // Macro variables\n className: 'variable',\n begin: /&[a-zA-Z_&][a-zA-Z0-9_]*\\.?/\n },\n {\n // Special emphasis for datalines|cards\n className: 'emphasis',\n begin: /^\\s*datalines|cards.*;/,\n end: /^\\s*;\\s*$/\n },\n { // Built-in macro variables take precedence\n className: 'built_in',\n begin: '%(' + SAS_MACRO_FUN + ')'\n },\n {\n // User-defined macro functions highlighted after\n className: 'name',\n begin: /%[a-zA-Z_][a-zA-Z_0-9]*/\n },\n {\n className: 'meta',\n begin: '[^%](' + SAS_FUN + ')[\\(]'\n },\n {\n className: 'string',\n variants: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n },\n hljs.COMMENT('\\\\*', ';'),\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n}\n\nmodule.exports = sas;\n","/*\nLanguage: Scala\nCategory: functional\nAuthor: Jan Berkel <jan.berkel@gmail.com>\nContributors: Erik Osheim <d_m@plastic-idolatry.com>\nWebsite: https://www.scala-lang.org\n*/\n\nfunction scala(hljs) {\n const ANNOTATION = {\n className: 'meta',\n begin: '@[A-Za-z]+'\n };\n\n // used in strings for escaping/interpolation/substitution\n const SUBST = {\n className: 'subst',\n variants: [\n {\n begin: '\\\\$[A-Za-z0-9_]+'\n },\n {\n begin: /\\$\\{/,\n end: /\\}/\n }\n ]\n };\n\n const STRING = {\n className: 'string',\n variants: [\n {\n begin: '\"\"\"',\n end: '\"\"\"'\n },\n {\n begin: '\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: '[a-z]+\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n },\n {\n className: 'string',\n begin: '[a-z]+\"\"\"',\n end: '\"\"\"',\n contains: [ SUBST ],\n relevance: 10\n }\n ]\n\n };\n\n const SYMBOL = {\n className: 'symbol',\n begin: '\\'\\\\w[\\\\w\\\\d_]*(?!\\')'\n };\n\n const TYPE = {\n className: 'type',\n begin: '\\\\b[A-Z][A-Za-z0-9_]*',\n relevance: 0\n };\n\n const NAME = {\n className: 'title',\n begin: /[^0-9\\n\\t \"'(),.`{}\\[\\]:;][^\\n\\t \"'(),.`{}\\[\\]:;]+|[^0-9\\n\\t \"'(),.`{}\\[\\]:;=]/,\n relevance: 0\n };\n\n const CLASS = {\n className: 'class',\n beginKeywords: 'class object trait type',\n end: /[:={\\[\\n;]/,\n excludeEnd: true,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n beginKeywords: 'extends with',\n relevance: 10\n },\n {\n begin: /\\[/,\n end: /\\]/,\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0,\n contains: [ TYPE ]\n },\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0,\n contains: [ TYPE ]\n },\n NAME\n ]\n };\n\n const METHOD = {\n className: 'function',\n beginKeywords: 'def',\n end: /[:={\\[(\\n;]/,\n excludeEnd: true,\n contains: [ NAME ]\n };\n\n return {\n name: 'Scala',\n keywords: {\n literal: 'true false null',\n keyword: 'type yield lazy override def with val var sealed abstract private trait object if forSome for while throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit'\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n SYMBOL,\n TYPE,\n METHOD,\n CLASS,\n hljs.C_NUMBER_MODE,\n ANNOTATION\n ]\n };\n}\n\nmodule.exports = scala;\n","/*\nLanguage: Scheme\nDescription: Scheme is a programming language in the Lisp family.\n (keywords based on http://community.schemewiki.org/?scheme-keywords)\nAuthor: JP Verkamp <me@jverkamp.com>\nContributors: Ivan Sagalaev <maniac@softwaremaniacs.org>\nOrigin: clojure.js\nWebsite: http://community.schemewiki.org/?what-is-scheme\nCategory: lisp\n*/\n\nfunction scheme(hljs) {\n const SCHEME_IDENT_RE = '[^\\\\(\\\\)\\\\[\\\\]\\\\{\\\\}\",\\'`;#|\\\\\\\\\\\\s]+';\n const SCHEME_SIMPLE_NUMBER_RE = '(-|\\\\+)?\\\\d+([./]\\\\d+)?';\n const SCHEME_COMPLEX_NUMBER_RE = SCHEME_SIMPLE_NUMBER_RE + '[+\\\\-]' + SCHEME_SIMPLE_NUMBER_RE + 'i';\n const KEYWORDS = {\n $pattern: SCHEME_IDENT_RE,\n 'builtin-name':\n 'case-lambda call/cc class define-class exit-handler field import ' +\n 'inherit init-field interface let*-values let-values let/ec mixin ' +\n 'opt-lambda override protect provide public rename require ' +\n 'require-for-syntax syntax syntax-case syntax-error unit/sig unless ' +\n 'when with-syntax and begin call-with-current-continuation ' +\n 'call-with-input-file call-with-output-file case cond define ' +\n 'define-syntax delay do dynamic-wind else for-each if lambda let let* ' +\n 'let-syntax letrec letrec-syntax map or syntax-rules \\' * + , ,@ - ... / ' +\n '; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan ' +\n 'boolean? caar cadr call-with-input-file call-with-output-file ' +\n 'call-with-values car cdddar cddddr cdr ceiling char->integer ' +\n 'char-alphabetic? char-ci<=? char-ci<? char-ci=? char-ci>=? char-ci>? ' +\n 'char-downcase char-lower-case? char-numeric? char-ready? char-upcase ' +\n 'char-upper-case? char-whitespace? char<=? char<? char=? char>=? char>? ' +\n 'char? close-input-port close-output-port complex? cons cos ' +\n 'current-input-port current-output-port denominator display eof-object? ' +\n 'eq? equal? eqv? eval even? exact->inexact exact? exp expt floor ' +\n 'force gcd imag-part inexact->exact inexact? input-port? integer->char ' +\n 'integer? interaction-environment lcm length list list->string ' +\n 'list->vector list-ref list-tail list? load log magnitude make-polar ' +\n 'make-rectangular make-string make-vector max member memq memv min ' +\n 'modulo negative? newline not null-environment null? number->string ' +\n 'number? numerator odd? open-input-file open-output-file output-port? ' +\n 'pair? peek-char port? positive? procedure? quasiquote quote quotient ' +\n 'rational? rationalize read read-char real-part real? remainder reverse ' +\n 'round scheme-report-environment set! set-car! set-cdr! sin sqrt string ' +\n 'string->list string->number string->symbol string-append string-ci<=? ' +\n 'string-ci<? string-ci=? string-ci>=? string-ci>? string-copy ' +\n 'string-fill! string-length string-ref string-set! string<=? string<? ' +\n 'string=? string>=? string>? string? substring symbol->string symbol? ' +\n 'tan transcript-off transcript-on truncate values vector ' +\n 'vector->list vector-fill! vector-length vector-ref vector-set! ' +\n 'with-input-from-file with-output-to-file write write-char zero?'\n };\n\n const LITERAL = {\n className: 'literal',\n begin: '(#t|#f|#\\\\\\\\' + SCHEME_IDENT_RE + '|#\\\\\\\\.)'\n };\n\n const NUMBER = {\n className: 'number',\n variants: [\n {\n begin: SCHEME_SIMPLE_NUMBER_RE,\n relevance: 0\n },\n {\n begin: SCHEME_COMPLEX_NUMBER_RE,\n relevance: 0\n },\n {\n begin: '#b[0-1]+(/[0-1]+)?'\n },\n {\n begin: '#o[0-7]+(/[0-7]+)?'\n },\n {\n begin: '#x[0-9a-f]+(/[0-9a-f]+)?'\n }\n ]\n };\n\n const STRING = hljs.QUOTE_STRING_MODE;\n\n const COMMENT_MODES = [\n hljs.COMMENT(\n ';',\n '$',\n {\n relevance: 0\n }\n ),\n hljs.COMMENT('#\\\\|', '\\\\|#')\n ];\n\n const IDENT = {\n begin: SCHEME_IDENT_RE,\n relevance: 0\n };\n\n const QUOTED_IDENT = {\n className: 'symbol',\n begin: '\\'' + SCHEME_IDENT_RE\n };\n\n const BODY = {\n endsWithParent: true,\n relevance: 0\n };\n\n const QUOTED_LIST = {\n variants: [\n {\n begin: /'/\n },\n {\n begin: '`'\n }\n ],\n contains: [\n {\n begin: '\\\\(',\n end: '\\\\)',\n contains: [\n 'self',\n LITERAL,\n STRING,\n NUMBER,\n IDENT,\n QUOTED_IDENT\n ]\n }\n ]\n };\n\n const NAME = {\n className: 'name',\n relevance: 0,\n begin: SCHEME_IDENT_RE,\n keywords: KEYWORDS\n };\n\n const LAMBDA = {\n begin: /lambda/,\n endsWithParent: true,\n returnBegin: true,\n contains: [\n NAME,\n {\n endsParent: true,\n variants: [\n {\n begin: /\\(/,\n end: /\\)/\n },\n {\n begin: /\\[/,\n end: /\\]/\n }\n ],\n contains: [ IDENT ]\n }\n ]\n };\n\n const LIST = {\n variants: [\n {\n begin: '\\\\(',\n end: '\\\\)'\n },\n {\n begin: '\\\\[',\n end: '\\\\]'\n }\n ],\n contains: [\n LAMBDA,\n NAME,\n BODY\n ]\n };\n\n BODY.contains = [\n LITERAL,\n NUMBER,\n STRING,\n IDENT,\n QUOTED_IDENT,\n QUOTED_LIST,\n LIST\n ].concat(COMMENT_MODES);\n\n return {\n name: 'Scheme',\n illegal: /\\S/,\n contains: [\n hljs.SHEBANG(),\n NUMBER,\n STRING,\n QUOTED_IDENT,\n QUOTED_LIST,\n LIST\n ].concat(COMMENT_MODES)\n };\n}\n\nmodule.exports = scheme;\n","/*\nLanguage: Scilab\nAuthor: Sylvestre Ledru <sylvestre.ledru@scilab-enterprises.com>\nOrigin: matlab.js\nDescription: Scilab is a port from Matlab\nWebsite: https://www.scilab.org\nCategory: scientific\n*/\n\nfunction scilab(hljs) {\n const COMMON_CONTAINS = [\n hljs.C_NUMBER_MODE,\n {\n className: 'string',\n begin: '\\'|\\\"',\n end: '\\'|\\\"',\n contains: [ hljs.BACKSLASH_ESCAPE,\n {\n begin: '\\'\\''\n } ]\n }\n ];\n\n return {\n name: 'Scilab',\n aliases: [ 'sci' ],\n keywords: {\n $pattern: /%?\\w+/,\n keyword: 'abort break case clear catch continue do elseif else endfunction end for function ' +\n 'global if pause return resume select try then while',\n literal:\n '%f %F %t %T %pi %eps %inf %nan %e %i %z %s',\n built_in: // Scilab has more than 2000 functions. Just list the most commons\n 'abs and acos asin atan ceil cd chdir clearglobal cosh cos cumprod deff disp error ' +\n 'exec execstr exists exp eye gettext floor fprintf fread fsolve imag isdef isempty ' +\n 'isinfisnan isvector lasterror length load linspace list listfiles log10 log2 log ' +\n 'max min msprintf mclose mopen ones or pathconvert poly printf prod pwd rand real ' +\n 'round sinh sin size gsort sprintf sqrt strcat strcmps tring sum system tanh tan ' +\n 'type typename warning zeros matrix'\n },\n illegal: '(\"|#|/\\\\*|\\\\s+/\\\\w+)',\n contains: [\n {\n className: 'function',\n beginKeywords: 'function',\n end: '$',\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n {\n className: 'params',\n begin: '\\\\(',\n end: '\\\\)'\n }\n ]\n },\n // seems to be a guard against [ident]' or [ident].\n // perhaps to prevent attributes from flagging as keywords?\n {\n begin: '[a-zA-Z_][a-zA-Z_0-9]*[\\\\.\\']+',\n relevance: 0\n },\n {\n begin: '\\\\[',\n end: '\\\\][\\\\.\\']*',\n relevance: 0,\n contains: COMMON_CONTAINS\n },\n hljs.COMMENT('//', '$')\n ].concat(COMMON_CONTAINS)\n };\n}\n\nmodule.exports = scilab;\n","const MODES = (hljs) => {\n return {\n IMPORTANT: {\n className: 'meta',\n begin: '!important'\n },\n HEXCOLOR: {\n className: 'number',\n begin: '#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})'\n },\n ATTRIBUTE_SELECTOR_MODE: {\n className: 'selector-attr',\n begin: /\\[/,\n end: /\\]/,\n illegal: '$',\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n }\n };\n};\n\nconst TAGS = [\n 'a',\n 'abbr',\n 'address',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'blockquote',\n 'body',\n 'button',\n 'canvas',\n 'caption',\n 'cite',\n 'code',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'header',\n 'hgroup',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'mark',\n 'menu',\n 'nav',\n 'object',\n 'ol',\n 'p',\n 'q',\n 'quote',\n 'samp',\n 'section',\n 'span',\n 'strong',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'ul',\n 'var',\n 'video'\n];\n\nconst MEDIA_FEATURES = [\n 'any-hover',\n 'any-pointer',\n 'aspect-ratio',\n 'color',\n 'color-gamut',\n 'color-index',\n 'device-aspect-ratio',\n 'device-height',\n 'device-width',\n 'display-mode',\n 'forced-colors',\n 'grid',\n 'height',\n 'hover',\n 'inverted-colors',\n 'monochrome',\n 'orientation',\n 'overflow-block',\n 'overflow-inline',\n 'pointer',\n 'prefers-color-scheme',\n 'prefers-contrast',\n 'prefers-reduced-motion',\n 'prefers-reduced-transparency',\n 'resolution',\n 'scan',\n 'scripting',\n 'update',\n 'width',\n // TODO: find a better solution?\n 'min-width',\n 'max-width',\n 'min-height',\n 'max-height'\n];\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes\nconst PSEUDO_CLASSES = [\n 'active',\n 'any-link',\n 'blank',\n 'checked',\n 'current',\n 'default',\n 'defined',\n 'dir', // dir()\n 'disabled',\n 'drop',\n 'empty',\n 'enabled',\n 'first',\n 'first-child',\n 'first-of-type',\n 'fullscreen',\n 'future',\n 'focus',\n 'focus-visible',\n 'focus-within',\n 'has', // has()\n 'host', // host or host()\n 'host-context', // host-context()\n 'hover',\n 'indeterminate',\n 'in-range',\n 'invalid',\n 'is', // is()\n 'lang', // lang()\n 'last-child',\n 'last-of-type',\n 'left',\n 'link',\n 'local-link',\n 'not', // not()\n 'nth-child', // nth-child()\n 'nth-col', // nth-col()\n 'nth-last-child', // nth-last-child()\n 'nth-last-col', // nth-last-col()\n 'nth-last-of-type', //nth-last-of-type()\n 'nth-of-type', //nth-of-type()\n 'only-child',\n 'only-of-type',\n 'optional',\n 'out-of-range',\n 'past',\n 'placeholder-shown',\n 'read-only',\n 'read-write',\n 'required',\n 'right',\n 'root',\n 'scope',\n 'target',\n 'target-within',\n 'user-invalid',\n 'valid',\n 'visited',\n 'where' // where()\n];\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements\nconst PSEUDO_ELEMENTS = [\n 'after',\n 'backdrop',\n 'before',\n 'cue',\n 'cue-region',\n 'first-letter',\n 'first-line',\n 'grammar-error',\n 'marker',\n 'part',\n 'placeholder',\n 'selection',\n 'slotted',\n 'spelling-error'\n];\n\nconst ATTRIBUTES = [\n 'align-content',\n 'align-items',\n 'align-self',\n 'animation',\n 'animation-delay',\n 'animation-direction',\n 'animation-duration',\n 'animation-fill-mode',\n 'animation-iteration-count',\n 'animation-name',\n 'animation-play-state',\n 'animation-timing-function',\n 'auto',\n 'backface-visibility',\n 'background',\n 'background-attachment',\n 'background-clip',\n 'background-color',\n 'background-image',\n 'background-origin',\n 'background-position',\n 'background-repeat',\n 'background-size',\n 'border',\n 'border-bottom',\n 'border-bottom-color',\n 'border-bottom-left-radius',\n 'border-bottom-right-radius',\n 'border-bottom-style',\n 'border-bottom-width',\n 'border-collapse',\n 'border-color',\n 'border-image',\n 'border-image-outset',\n 'border-image-repeat',\n 'border-image-slice',\n 'border-image-source',\n 'border-image-width',\n 'border-left',\n 'border-left-color',\n 'border-left-style',\n 'border-left-width',\n 'border-radius',\n 'border-right',\n 'border-right-color',\n 'border-right-style',\n 'border-right-width',\n 'border-spacing',\n 'border-style',\n 'border-top',\n 'border-top-color',\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-top-style',\n 'border-top-width',\n 'border-width',\n 'bottom',\n 'box-decoration-break',\n 'box-shadow',\n 'box-sizing',\n 'break-after',\n 'break-before',\n 'break-inside',\n 'caption-side',\n 'clear',\n 'clip',\n 'clip-path',\n 'color',\n 'column-count',\n 'column-fill',\n 'column-gap',\n 'column-rule',\n 'column-rule-color',\n 'column-rule-style',\n 'column-rule-width',\n 'column-span',\n 'column-width',\n 'columns',\n 'content',\n 'counter-increment',\n 'counter-reset',\n 'cursor',\n 'direction',\n 'display',\n 'empty-cells',\n 'filter',\n 'flex',\n 'flex-basis',\n 'flex-direction',\n 'flex-flow',\n 'flex-grow',\n 'flex-shrink',\n 'flex-wrap',\n 'float',\n 'font',\n 'font-display',\n 'font-family',\n 'font-feature-settings',\n 'font-kerning',\n 'font-language-override',\n 'font-size',\n 'font-size-adjust',\n 'font-smoothing',\n 'font-stretch',\n 'font-style',\n 'font-variant',\n 'font-variant-ligatures',\n 'font-variation-settings',\n 'font-weight',\n 'height',\n 'hyphens',\n 'icon',\n 'image-orientation',\n 'image-rendering',\n 'image-resolution',\n 'ime-mode',\n 'inherit',\n 'initial',\n 'justify-content',\n 'left',\n 'letter-spacing',\n 'line-height',\n 'list-style',\n 'list-style-image',\n 'list-style-position',\n 'list-style-type',\n 'margin',\n 'margin-bottom',\n 'margin-left',\n 'margin-right',\n 'margin-top',\n 'marks',\n 'mask',\n 'max-height',\n 'max-width',\n 'min-height',\n 'min-width',\n 'nav-down',\n 'nav-index',\n 'nav-left',\n 'nav-right',\n 'nav-up',\n 'none',\n 'normal',\n 'object-fit',\n 'object-position',\n 'opacity',\n 'order',\n 'orphans',\n 'outline',\n 'outline-color',\n 'outline-offset',\n 'outline-style',\n 'outline-width',\n 'overflow',\n 'overflow-wrap',\n 'overflow-x',\n 'overflow-y',\n 'padding',\n 'padding-bottom',\n 'padding-left',\n 'padding-right',\n 'padding-top',\n 'page-break-after',\n 'page-break-before',\n 'page-break-inside',\n 'perspective',\n 'perspective-origin',\n 'pointer-events',\n 'position',\n 'quotes',\n 'resize',\n 'right',\n 'src', // @font-face\n 'tab-size',\n 'table-layout',\n 'text-align',\n 'text-align-last',\n 'text-decoration',\n 'text-decoration-color',\n 'text-decoration-line',\n 'text-decoration-style',\n 'text-indent',\n 'text-overflow',\n 'text-rendering',\n 'text-shadow',\n 'text-transform',\n 'text-underline-position',\n 'top',\n 'transform',\n 'transform-origin',\n 'transform-style',\n 'transition',\n 'transition-delay',\n 'transition-duration',\n 'transition-property',\n 'transition-timing-function',\n 'unicode-bidi',\n 'vertical-align',\n 'visibility',\n 'white-space',\n 'widows',\n 'width',\n 'word-break',\n 'word-spacing',\n 'word-wrap',\n 'z-index'\n // reverse makes sure longer attributes `font-weight` are matched fully\n // instead of getting false positives on say `font`\n].reverse();\n\n/*\nLanguage: SCSS\nDescription: Scss is an extension of the syntax of CSS.\nAuthor: Kurt Emch <kurt@kurtemch.com>\nWebsite: https://sass-lang.com\nCategory: common, css\n*/\n\n/** @type LanguageFn */\nfunction scss(hljs) {\n const modes = MODES(hljs);\n const PSEUDO_ELEMENTS$1 = PSEUDO_ELEMENTS;\n const PSEUDO_CLASSES$1 = PSEUDO_CLASSES;\n\n const AT_IDENTIFIER = '@[a-z-]+'; // @font-face\n const AT_MODIFIERS = \"and or not only\";\n const IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*';\n const VARIABLE = {\n className: 'variable',\n begin: '(\\\\$' + IDENT_RE + ')\\\\b'\n };\n\n return {\n name: 'SCSS',\n case_insensitive: true,\n illegal: '[=/|\\']',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'selector-id',\n begin: '#[A-Za-z0-9_-]+',\n relevance: 0\n },\n {\n className: 'selector-class',\n begin: '\\\\.[A-Za-z0-9_-]+',\n relevance: 0\n },\n modes.ATTRIBUTE_SELECTOR_MODE,\n {\n className: 'selector-tag',\n begin: '\\\\b(' + TAGS.join('|') + ')\\\\b',\n // was there, before, but why?\n relevance: 0\n },\n {\n className: 'selector-pseudo',\n begin: ':(' + PSEUDO_CLASSES$1.join('|') + ')'\n },\n {\n className: 'selector-pseudo',\n begin: '::(' + PSEUDO_ELEMENTS$1.join('|') + ')'\n },\n VARIABLE,\n { // pseudo-selector params\n begin: /\\(/,\n end: /\\)/,\n contains: [ hljs.CSS_NUMBER_MODE ]\n },\n {\n className: 'attribute',\n begin: '\\\\b(' + ATTRIBUTES.join('|') + ')\\\\b'\n },\n {\n begin: '\\\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\\\b'\n },\n {\n begin: ':',\n end: ';',\n contains: [\n VARIABLE,\n modes.HEXCOLOR,\n hljs.CSS_NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n modes.IMPORTANT\n ]\n },\n // matching these here allows us to treat them more like regular CSS\n // rules so everything between the {} gets regular rule highlighting,\n // which is what we want for page and font-face\n {\n begin: '@(page|font-face)',\n lexemes: AT_IDENTIFIER,\n keywords: '@page @font-face'\n },\n {\n begin: '@',\n end: '[{;]',\n returnBegin: true,\n keywords: {\n $pattern: /[a-z-]+/,\n keyword: AT_MODIFIERS,\n attribute: MEDIA_FEATURES.join(\" \")\n },\n contains: [\n {\n begin: AT_IDENTIFIER,\n className: \"keyword\"\n },\n {\n begin: /[a-z-]+(?=:)/,\n className: \"attribute\"\n },\n VARIABLE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n modes.HEXCOLOR,\n hljs.CSS_NUMBER_MODE\n ]\n }\n ]\n };\n}\n\nmodule.exports = scss;\n","/*\nLanguage: Shell Session\nRequires: bash.js\nAuthor: TSUYUSATO Kitsune <make.just.on@gmail.com>\nCategory: common\nAudit: 2020\n*/\n\n/** @type LanguageFn */\nfunction shell(hljs) {\n return {\n name: 'Shell Session',\n aliases: [ 'console' ],\n contains: [\n {\n className: 'meta',\n // We cannot add \\s (spaces) in the regular expression otherwise it will be too broad and produce unexpected result.\n // For instance, in the following example, it would match \"echo /path/to/home >\" as a prompt:\n // echo /path/to/home > t.exe\n begin: /^\\s{0,3}[/~\\w\\d[\\]()@-]*[>%$#]/,\n starts: {\n end: /[^\\\\](?=\\s*$)/,\n subLanguage: 'bash'\n }\n }\n ]\n };\n}\n\nmodule.exports = shell;\n","/*\nLanguage: Smali\nAuthor: Dennis Titze <dennis.titze@gmail.com>\nDescription: Basic Smali highlighting\nWebsite: https://github.com/JesusFreke/smali\n*/\n\nfunction smali(hljs) {\n const smali_instr_low_prio = [\n 'add',\n 'and',\n 'cmp',\n 'cmpg',\n 'cmpl',\n 'const',\n 'div',\n 'double',\n 'float',\n 'goto',\n 'if',\n 'int',\n 'long',\n 'move',\n 'mul',\n 'neg',\n 'new',\n 'nop',\n 'not',\n 'or',\n 'rem',\n 'return',\n 'shl',\n 'shr',\n 'sput',\n 'sub',\n 'throw',\n 'ushr',\n 'xor'\n ];\n const smali_instr_high_prio = [\n 'aget',\n 'aput',\n 'array',\n 'check',\n 'execute',\n 'fill',\n 'filled',\n 'goto/16',\n 'goto/32',\n 'iget',\n 'instance',\n 'invoke',\n 'iput',\n 'monitor',\n 'packed',\n 'sget',\n 'sparse'\n ];\n const smali_keywords = [\n 'transient',\n 'constructor',\n 'abstract',\n 'final',\n 'synthetic',\n 'public',\n 'private',\n 'protected',\n 'static',\n 'bridge',\n 'system'\n ];\n return {\n name: 'Smali',\n contains: [\n {\n className: 'string',\n begin: '\"',\n end: '\"',\n relevance: 0\n },\n hljs.COMMENT(\n '#',\n '$',\n {\n relevance: 0\n }\n ),\n {\n className: 'keyword',\n variants: [\n {\n begin: '\\\\s*\\\\.end\\\\s[a-zA-Z0-9]*'\n },\n {\n begin: '^[ ]*\\\\.[a-zA-Z]*',\n relevance: 0\n },\n {\n begin: '\\\\s:[a-zA-Z_0-9]*',\n relevance: 0\n },\n {\n begin: '\\\\s(' + smali_keywords.join('|') + ')'\n }\n ]\n },\n {\n className: 'built_in',\n variants: [\n {\n begin: '\\\\s(' + smali_instr_low_prio.join('|') + ')\\\\s'\n },\n {\n begin: '\\\\s(' + smali_instr_low_prio.join('|') + ')((-|/)[a-zA-Z0-9]+)+\\\\s',\n relevance: 10\n },\n {\n begin: '\\\\s(' + smali_instr_high_prio.join('|') + ')((-|/)[a-zA-Z0-9]+)*\\\\s',\n relevance: 10\n }\n ]\n },\n {\n className: 'class',\n begin: 'L[^\\(;:\\n]*;',\n relevance: 0\n },\n {\n begin: '[vp][0-9]+'\n }\n ]\n };\n}\n\nmodule.exports = smali;\n","/*\nLanguage: Smalltalk\nDescription: Smalltalk is an object-oriented, dynamically typed reflective programming language.\nAuthor: Vladimir Gubarkov <xonixx@gmail.com>\nWebsite: https://en.wikipedia.org/wiki/Smalltalk\n*/\n\nfunction smalltalk(hljs) {\n const VAR_IDENT_RE = '[a-z][a-zA-Z0-9_]*';\n const CHAR = {\n className: 'string',\n begin: '\\\\$.{1}'\n };\n const SYMBOL = {\n className: 'symbol',\n begin: '#' + hljs.UNDERSCORE_IDENT_RE\n };\n return {\n name: 'Smalltalk',\n aliases: [ 'st' ],\n keywords: 'self super nil true false thisContext', // only 6\n contains: [\n hljs.COMMENT('\"', '\"'),\n hljs.APOS_STRING_MODE,\n {\n className: 'type',\n begin: '\\\\b[A-Z][A-Za-z0-9_]*',\n relevance: 0\n },\n {\n begin: VAR_IDENT_RE + ':',\n relevance: 0\n },\n hljs.C_NUMBER_MODE,\n SYMBOL,\n CHAR,\n {\n // This looks more complicated than needed to avoid combinatorial\n // explosion under V8. It effectively means `| var1 var2 ... |` with\n // whitespace adjacent to `|` being optional.\n begin: '\\\\|[ ]*' + VAR_IDENT_RE + '([ ]+' + VAR_IDENT_RE + ')*[ ]*\\\\|',\n returnBegin: true,\n end: /\\|/,\n illegal: /\\S/,\n contains: [ {\n begin: '(\\\\|[ ]*)?' + VAR_IDENT_RE\n } ]\n },\n {\n begin: '#\\\\(',\n end: '\\\\)',\n contains: [\n hljs.APOS_STRING_MODE,\n CHAR,\n hljs.C_NUMBER_MODE,\n SYMBOL\n ]\n }\n ]\n };\n}\n\nmodule.exports = smalltalk;\n","/*\nLanguage: SML (Standard ML)\nAuthor: Edwin Dalorzo <edwin@dalorzo.org>\nDescription: SML language definition.\nWebsite: https://www.smlnj.org\nOrigin: ocaml.js\nCategory: functional\n*/\nfunction sml(hljs) {\n return {\n name: 'SML (Standard ML)',\n aliases: [ 'ml' ],\n keywords: {\n $pattern: '[a-z_]\\\\w*!?',\n keyword:\n /* according to Definition of Standard ML 97 */\n 'abstype and andalso as case datatype do else end eqtype ' +\n 'exception fn fun functor handle if in include infix infixr ' +\n 'let local nonfix of op open orelse raise rec sharing sig ' +\n 'signature struct structure then type val with withtype where while',\n built_in:\n /* built-in types according to basis library */\n 'array bool char exn int list option order real ref string substring vector unit word',\n literal:\n 'true false NONE SOME LESS EQUAL GREATER nil'\n },\n illegal: /\\/\\/|>>/,\n contains: [\n {\n className: 'literal',\n begin: /\\[(\\|\\|)?\\]|\\(\\)/,\n relevance: 0\n },\n hljs.COMMENT(\n '\\\\(\\\\*',\n '\\\\*\\\\)',\n {\n contains: [ 'self' ]\n }\n ),\n { /* type variable */\n className: 'symbol',\n begin: '\\'[A-Za-z_](?!\\')[\\\\w\\']*'\n /* the grammar is ambiguous on how 'a'b should be interpreted but not the compiler */\n },\n { /* polymorphic variant */\n className: 'type',\n begin: '`[A-Z][\\\\w\\']*'\n },\n { /* module or constructor */\n className: 'type',\n begin: '\\\\b[A-Z][\\\\w\\']*',\n relevance: 0\n },\n { /* don't color identifiers, but safely catch all identifiers with ' */\n begin: '[a-z_]\\\\w*\\'[\\\\w\\']*'\n },\n hljs.inherit(hljs.APOS_STRING_MODE, {\n className: 'string',\n relevance: 0\n }),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {\n illegal: null\n }),\n {\n className: 'number',\n begin:\n '\\\\b(0[xX][a-fA-F0-9_]+[Lln]?|' +\n '0[oO][0-7_]+[Lln]?|' +\n '0[bB][01_]+[Lln]?|' +\n '[0-9][0-9_]*([Lln]|(\\\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)',\n relevance: 0\n },\n {\n begin: /[-=]>/ // relevance booster\n }\n ]\n };\n}\n\nmodule.exports = sml;\n","/*\nLanguage: SQF\nAuthor: Søren Enevoldsen <senevoldsen90@gmail.com>\nContributors: Marvin Saignat <contact@zgmrvn.com>, Dedmen Miller <dedmen@dedmen.de>\nDescription: Scripting language for the Arma game series\nWebsite: https://community.bistudio.com/wiki/SQF_syntax\nCategory: scripting\n*/\n\nfunction sqf(hljs) {\n // In SQF, a variable start with _\n const VARIABLE = {\n className: 'variable',\n begin: /\\b_+[a-zA-Z]\\w*/\n };\n\n // In SQF, a function should fit myTag_fnc_myFunction pattern\n // https://community.bistudio.com/wiki/Functions_Library_(Arma_3)#Adding_a_Function\n const FUNCTION = {\n className: 'title',\n begin: /[a-zA-Z][a-zA-Z0-9]+_fnc_\\w*/\n };\n\n // In SQF strings, quotes matching the start are escaped by adding a consecutive.\n // Example of single escaped quotes: \" \"\" \" and ' '' '.\n const STRINGS = {\n className: 'string',\n variants: [\n {\n begin: '\"',\n end: '\"',\n contains: [ {\n begin: '\"\"',\n relevance: 0\n } ]\n },\n {\n begin: '\\'',\n end: '\\'',\n contains: [ {\n begin: '\\'\\'',\n relevance: 0\n } ]\n }\n ]\n };\n\n // list of keywords from:\n // https://community.bistudio.com/wiki/PreProcessor_Commands\n const PREPROCESSOR = {\n className: 'meta',\n begin: /#\\s*[a-z]+\\b/,\n end: /$/,\n keywords: {\n 'meta-keyword':\n 'define undef ifdef ifndef else endif include'\n },\n contains: [\n {\n begin: /\\\\\\n/,\n relevance: 0\n },\n hljs.inherit(STRINGS, {\n className: 'meta-string'\n }),\n {\n className: 'meta-string',\n begin: /<[^\\n>]*>/,\n end: /$/,\n illegal: '\\\\n'\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n\n return {\n name: 'SQF',\n case_insensitive: true,\n keywords: {\n keyword:\n 'case catch default do else exit exitWith for forEach from if ' +\n 'private switch then throw to try waitUntil while with',\n built_in:\n 'abs accTime acos action actionIDs actionKeys actionKeysImages actionKeysNames ' +\n 'actionKeysNamesArray actionName actionParams activateAddons activatedAddons activateKey ' +\n 'add3DENConnection add3DENEventHandler add3DENLayer addAction addBackpack addBackpackCargo ' +\n 'addBackpackCargoGlobal addBackpackGlobal addCamShake addCuratorAddons addCuratorCameraArea ' +\n 'addCuratorEditableObjects addCuratorEditingArea addCuratorPoints addEditorObject addEventHandler ' +\n 'addForce addGoggles addGroupIcon addHandgunItem addHeadgear addItem addItemCargo ' +\n 'addItemCargoGlobal addItemPool addItemToBackpack addItemToUniform addItemToVest addLiveStats ' +\n 'addMagazine addMagazineAmmoCargo addMagazineCargo addMagazineCargoGlobal addMagazineGlobal ' +\n 'addMagazinePool addMagazines addMagazineTurret addMenu addMenuItem addMissionEventHandler ' +\n 'addMPEventHandler addMusicEventHandler addOwnedMine addPlayerScores addPrimaryWeaponItem ' +\n 'addPublicVariableEventHandler addRating addResources addScore addScoreSide addSecondaryWeaponItem ' +\n 'addSwitchableUnit addTeamMember addToRemainsCollector addTorque addUniform addVehicle addVest ' +\n 'addWaypoint addWeapon addWeaponCargo addWeaponCargoGlobal addWeaponGlobal addWeaponItem ' +\n 'addWeaponPool addWeaponTurret admin agent agents AGLToASL aimedAtTarget aimPos airDensityRTD ' +\n 'airplaneThrottle airportSide AISFinishHeal alive all3DENEntities allAirports allControls ' +\n 'allCurators allCutLayers allDead allDeadMen allDisplays allGroups allMapMarkers allMines ' +\n 'allMissionObjects allow3DMode allowCrewInImmobile allowCuratorLogicIgnoreAreas allowDamage ' +\n 'allowDammage allowFileOperations allowFleeing allowGetIn allowSprint allPlayers allSimpleObjects ' +\n 'allSites allTurrets allUnits allUnitsUAV allVariables ammo ammoOnPylon and animate animateBay ' +\n 'animateDoor animatePylon animateSource animationNames animationPhase animationSourcePhase ' +\n 'animationState append apply armoryPoints arrayIntersect asin ASLToAGL ASLToATL assert ' +\n 'assignAsCargo assignAsCargoIndex assignAsCommander assignAsDriver assignAsGunner assignAsTurret ' +\n 'assignCurator assignedCargo assignedCommander assignedDriver assignedGunner assignedItems ' +\n 'assignedTarget assignedTeam assignedVehicle assignedVehicleRole assignItem assignTeam ' +\n 'assignToAirport atan atan2 atg ATLToASL attachedObject attachedObjects attachedTo attachObject ' +\n 'attachTo attackEnabled backpack backpackCargo backpackContainer backpackItems backpackMagazines ' +\n 'backpackSpaceFor behaviour benchmark binocular boundingBox boundingBoxReal boundingCenter ' +\n 'breakOut breakTo briefingName buildingExit buildingPos buttonAction buttonSetAction cadetMode ' +\n 'call callExtension camCommand camCommit camCommitPrepared camCommitted camConstuctionSetParams ' +\n 'camCreate camDestroy cameraEffect cameraEffectEnableHUD cameraInterest cameraOn cameraView ' +\n 'campaignConfigFile camPreload camPreloaded camPrepareBank camPrepareDir camPrepareDive ' +\n 'camPrepareFocus camPrepareFov camPrepareFovRange camPreparePos camPrepareRelPos camPrepareTarget ' +\n 'camSetBank camSetDir camSetDive camSetFocus camSetFov camSetFovRange camSetPos camSetRelPos ' +\n 'camSetTarget camTarget camUseNVG canAdd canAddItemToBackpack canAddItemToUniform canAddItemToVest ' +\n 'cancelSimpleTaskDestination canFire canMove canSlingLoad canStand canSuspend ' +\n 'canTriggerDynamicSimulation canUnloadInCombat canVehicleCargo captive captiveNum cbChecked ' +\n 'cbSetChecked ceil channelEnabled cheatsEnabled checkAIFeature checkVisibility className ' +\n 'clearAllItemsFromBackpack clearBackpackCargo clearBackpackCargoGlobal clearGroupIcons ' +\n 'clearItemCargo clearItemCargoGlobal clearItemPool clearMagazineCargo clearMagazineCargoGlobal ' +\n 'clearMagazinePool clearOverlay clearRadio clearWeaponCargo clearWeaponCargoGlobal clearWeaponPool ' +\n 'clientOwner closeDialog closeDisplay closeOverlay collapseObjectTree collect3DENHistory ' +\n 'collectiveRTD combatMode commandArtilleryFire commandChat commander commandFire commandFollow ' +\n 'commandFSM commandGetOut commandingMenu commandMove commandRadio commandStop ' +\n 'commandSuppressiveFire commandTarget commandWatch comment commitOverlay compile compileFinal ' +\n 'completedFSM composeText configClasses configFile configHierarchy configName configProperties ' +\n 'configSourceAddonList configSourceMod configSourceModList confirmSensorTarget ' +\n 'connectTerminalToUAV controlsGroupCtrl copyFromClipboard copyToClipboard copyWaypoints cos count ' +\n 'countEnemy countFriendly countSide countType countUnknown create3DENComposition create3DENEntity ' +\n 'createAgent createCenter createDialog createDiaryLink createDiaryRecord createDiarySubject ' +\n 'createDisplay createGearDialog createGroup createGuardedPoint createLocation createMarker ' +\n 'createMarkerLocal createMenu createMine createMissionDisplay createMPCampaignDisplay ' +\n 'createSimpleObject createSimpleTask createSite createSoundSource createTask createTeam ' +\n 'createTrigger createUnit createVehicle createVehicleCrew createVehicleLocal crew ctAddHeader ' +\n 'ctAddRow ctClear ctCurSel ctData ctFindHeaderRows ctFindRowHeader ctHeaderControls ctHeaderCount ' +\n 'ctRemoveHeaders ctRemoveRows ctrlActivate ctrlAddEventHandler ctrlAngle ctrlAutoScrollDelay ' +\n 'ctrlAutoScrollRewind ctrlAutoScrollSpeed ctrlChecked ctrlClassName ctrlCommit ctrlCommitted ' +\n 'ctrlCreate ctrlDelete ctrlEnable ctrlEnabled ctrlFade ctrlHTMLLoaded ctrlIDC ctrlIDD ' +\n 'ctrlMapAnimAdd ctrlMapAnimClear ctrlMapAnimCommit ctrlMapAnimDone ctrlMapCursor ctrlMapMouseOver ' +\n 'ctrlMapScale ctrlMapScreenToWorld ctrlMapWorldToScreen ctrlModel ctrlModelDirAndUp ctrlModelScale ' +\n 'ctrlParent ctrlParentControlsGroup ctrlPosition ctrlRemoveAllEventHandlers ctrlRemoveEventHandler ' +\n 'ctrlScale ctrlSetActiveColor ctrlSetAngle ctrlSetAutoScrollDelay ctrlSetAutoScrollRewind ' +\n 'ctrlSetAutoScrollSpeed ctrlSetBackgroundColor ctrlSetChecked ctrlSetEventHandler ctrlSetFade ' +\n 'ctrlSetFocus ctrlSetFont ctrlSetFontH1 ctrlSetFontH1B ctrlSetFontH2 ctrlSetFontH2B ctrlSetFontH3 ' +\n 'ctrlSetFontH3B ctrlSetFontH4 ctrlSetFontH4B ctrlSetFontH5 ctrlSetFontH5B ctrlSetFontH6 ' +\n 'ctrlSetFontH6B ctrlSetFontHeight ctrlSetFontHeightH1 ctrlSetFontHeightH2 ctrlSetFontHeightH3 ' +\n 'ctrlSetFontHeightH4 ctrlSetFontHeightH5 ctrlSetFontHeightH6 ctrlSetFontHeightSecondary ' +\n 'ctrlSetFontP ctrlSetFontPB ctrlSetFontSecondary ctrlSetForegroundColor ctrlSetModel ' +\n 'ctrlSetModelDirAndUp ctrlSetModelScale ctrlSetPixelPrecision ctrlSetPosition ctrlSetScale ' +\n 'ctrlSetStructuredText ctrlSetText ctrlSetTextColor ctrlSetTooltip ctrlSetTooltipColorBox ' +\n 'ctrlSetTooltipColorShade ctrlSetTooltipColorText ctrlShow ctrlShown ctrlText ctrlTextHeight ' +\n 'ctrlTextWidth ctrlType ctrlVisible ctRowControls ctRowCount ctSetCurSel ctSetData ' +\n 'ctSetHeaderTemplate ctSetRowTemplate ctSetValue ctValue curatorAddons curatorCamera ' +\n 'curatorCameraArea curatorCameraAreaCeiling curatorCoef curatorEditableObjects curatorEditingArea ' +\n 'curatorEditingAreaType curatorMouseOver curatorPoints curatorRegisteredObjects curatorSelected ' +\n 'curatorWaypointCost current3DENOperation currentChannel currentCommand currentMagazine ' +\n 'currentMagazineDetail currentMagazineDetailTurret currentMagazineTurret currentMuzzle ' +\n 'currentNamespace currentTask currentTasks currentThrowable currentVisionMode currentWaypoint ' +\n 'currentWeapon currentWeaponMode currentWeaponTurret currentZeroing cursorObject cursorTarget ' +\n 'customChat customRadio cutFadeOut cutObj cutRsc cutText damage date dateToNumber daytime ' +\n 'deActivateKey debriefingText debugFSM debugLog deg delete3DENEntities deleteAt deleteCenter ' +\n 'deleteCollection deleteEditorObject deleteGroup deleteGroupWhenEmpty deleteIdentity ' +\n 'deleteLocation deleteMarker deleteMarkerLocal deleteRange deleteResources deleteSite deleteStatus ' +\n 'deleteTeam deleteVehicle deleteVehicleCrew deleteWaypoint detach detectedMines ' +\n 'diag_activeMissionFSMs diag_activeScripts diag_activeSQFScripts diag_activeSQSScripts ' +\n 'diag_captureFrame diag_captureFrameToFile diag_captureSlowFrame diag_codePerformance ' +\n 'diag_drawMode diag_enable diag_enabled diag_fps diag_fpsMin diag_frameNo diag_lightNewLoad ' +\n 'diag_list diag_log diag_logSlowFrame diag_mergeConfigFile diag_recordTurretLimits ' +\n 'diag_setLightNew diag_tickTime diag_toggle dialog diarySubjectExists didJIP didJIPOwner ' +\n 'difficulty difficultyEnabled difficultyEnabledRTD difficultyOption direction directSay disableAI ' +\n 'disableCollisionWith disableConversation disableDebriefingStats disableMapIndicators ' +\n 'disableNVGEquipment disableRemoteSensors disableSerialization disableTIEquipment ' +\n 'disableUAVConnectability disableUserInput displayAddEventHandler displayCtrl displayParent ' +\n 'displayRemoveAllEventHandlers displayRemoveEventHandler displaySetEventHandler dissolveTeam ' +\n 'distance distance2D distanceSqr distributionRegion do3DENAction doArtilleryFire doFire doFollow ' +\n 'doFSM doGetOut doMove doorPhase doStop doSuppressiveFire doTarget doWatch drawArrow drawEllipse ' +\n 'drawIcon drawIcon3D drawLine drawLine3D drawLink drawLocation drawPolygon drawRectangle ' +\n 'drawTriangle driver drop dynamicSimulationDistance dynamicSimulationDistanceCoef ' +\n 'dynamicSimulationEnabled dynamicSimulationSystemEnabled echo edit3DENMissionAttributes editObject ' +\n 'editorSetEventHandler effectiveCommander emptyPositions enableAI enableAIFeature ' +\n 'enableAimPrecision enableAttack enableAudioFeature enableAutoStartUpRTD enableAutoTrimRTD ' +\n 'enableCamShake enableCaustics enableChannel enableCollisionWith enableCopilot ' +\n 'enableDebriefingStats enableDiagLegend enableDynamicSimulation enableDynamicSimulationSystem ' +\n 'enableEndDialog enableEngineArtillery enableEnvironment enableFatigue enableGunLights ' +\n 'enableInfoPanelComponent enableIRLasers enableMimics enablePersonTurret enableRadio enableReload ' +\n 'enableRopeAttach enableSatNormalOnDetail enableSaving enableSentences enableSimulation ' +\n 'enableSimulationGlobal enableStamina enableTeamSwitch enableTraffic enableUAVConnectability ' +\n 'enableUAVWaypoints enableVehicleCargo enableVehicleSensor enableWeaponDisassembly ' +\n 'endLoadingScreen endMission engineOn enginesIsOnRTD enginesRpmRTD enginesTorqueRTD entities ' +\n 'environmentEnabled estimatedEndServerTime estimatedTimeLeft evalObjectArgument everyBackpack ' +\n 'everyContainer exec execEditorScript execFSM execVM exp expectedDestination exportJIPMessages ' +\n 'eyeDirection eyePos face faction fadeMusic fadeRadio fadeSound fadeSpeech failMission ' +\n 'fillWeaponsFromPool find findCover findDisplay findEditorObject findEmptyPosition ' +\n 'findEmptyPositionReady findIf findNearestEnemy finishMissionInit finite fire fireAtTarget ' +\n 'firstBackpack flag flagAnimationPhase flagOwner flagSide flagTexture fleeing floor flyInHeight ' +\n 'flyInHeightASL fog fogForecast fogParams forceAddUniform forcedMap forceEnd forceFlagTexture ' +\n 'forceFollowRoad forceMap forceRespawn forceSpeed forceWalk forceWeaponFire forceWeatherChange ' +\n 'forEachMember forEachMemberAgent forEachMemberTeam forgetTarget format formation ' +\n 'formationDirection formationLeader formationMembers formationPosition formationTask formatText ' +\n 'formLeader freeLook fromEditor fuel fullCrew gearIDCAmmoCount gearSlotAmmoCount gearSlotData ' +\n 'get3DENActionState get3DENAttribute get3DENCamera get3DENConnections get3DENEntity ' +\n 'get3DENEntityID get3DENGrid get3DENIconsVisible get3DENLayerEntities get3DENLinesVisible ' +\n 'get3DENMissionAttribute get3DENMouseOver get3DENSelected getAimingCoef getAllEnvSoundControllers ' +\n 'getAllHitPointsDamage getAllOwnedMines getAllSoundControllers getAmmoCargo getAnimAimPrecision ' +\n 'getAnimSpeedCoef getArray getArtilleryAmmo getArtilleryComputerSettings getArtilleryETA ' +\n 'getAssignedCuratorLogic getAssignedCuratorUnit getBackpackCargo getBleedingRemaining ' +\n 'getBurningValue getCameraViewDirection getCargoIndex getCenterOfMass getClientState ' +\n 'getClientStateNumber getCompatiblePylonMagazines getConnectedUAV getContainerMaxLoad ' +\n 'getCursorObjectParams getCustomAimCoef getDammage getDescription getDir getDirVisual ' +\n 'getDLCAssetsUsage getDLCAssetsUsageByName getDLCs getEditorCamera getEditorMode ' +\n 'getEditorObjectScope getElevationOffset getEnvSoundController getFatigue getForcedFlagTexture ' +\n 'getFriend getFSMVariable getFuelCargo getGroupIcon getGroupIconParams getGroupIcons getHideFrom ' +\n 'getHit getHitIndex getHitPointDamage getItemCargo getMagazineCargo getMarkerColor getMarkerPos ' +\n 'getMarkerSize getMarkerType getMass getMissionConfig getMissionConfigValue getMissionDLCs ' +\n 'getMissionLayerEntities getModelInfo getMousePosition getMusicPlayedTime getNumber ' +\n 'getObjectArgument getObjectChildren getObjectDLC getObjectMaterials getObjectProxy ' +\n 'getObjectTextures getObjectType getObjectViewDistance getOxygenRemaining getPersonUsedDLCs ' +\n 'getPilotCameraDirection getPilotCameraPosition getPilotCameraRotation getPilotCameraTarget ' +\n 'getPlateNumber getPlayerChannel getPlayerScores getPlayerUID getPos getPosASL getPosASLVisual ' +\n 'getPosASLW getPosATL getPosATLVisual getPosVisual getPosWorld getPylonMagazines getRelDir ' +\n 'getRelPos getRemoteSensorsDisabled getRepairCargo getResolution getShadowDistance getShotParents ' +\n 'getSlingLoad getSoundController getSoundControllerResult getSpeed getStamina getStatValue ' +\n 'getSuppression getTerrainGrid getTerrainHeightASL getText getTotalDLCUsageTime getUnitLoadout ' +\n 'getUnitTrait getUserMFDText getUserMFDvalue getVariable getVehicleCargo getWeaponCargo ' +\n 'getWeaponSway getWingsOrientationRTD getWingsPositionRTD getWPPos glanceAt globalChat globalRadio ' +\n 'goggles goto group groupChat groupFromNetId groupIconSelectable groupIconsVisible groupId ' +\n 'groupOwner groupRadio groupSelectedUnits groupSelectUnit gunner gusts halt handgunItems ' +\n 'handgunMagazine handgunWeapon handsHit hasInterface hasPilotCamera hasWeapon hcAllGroups ' +\n 'hcGroupParams hcLeader hcRemoveAllGroups hcRemoveGroup hcSelected hcSelectGroup hcSetGroup ' +\n 'hcShowBar hcShownBar headgear hideBody hideObject hideObjectGlobal hideSelection hint hintC ' +\n 'hintCadet hintSilent hmd hostMission htmlLoad HUDMovementLevels humidity image importAllGroups ' +\n 'importance in inArea inAreaArray incapacitatedState inflame inflamed infoPanel ' +\n 'infoPanelComponentEnabled infoPanelComponents infoPanels inGameUISetEventHandler inheritsFrom ' +\n 'initAmbientLife inPolygon inputAction inRangeOfArtillery insertEditorObject intersect is3DEN ' +\n 'is3DENMultiplayer isAbleToBreathe isAgent isArray isAutoHoverOn isAutonomous isAutotest ' +\n 'isBleeding isBurning isClass isCollisionLightOn isCopilotEnabled isDamageAllowed isDedicated ' +\n 'isDLCAvailable isEngineOn isEqualTo isEqualType isEqualTypeAll isEqualTypeAny isEqualTypeArray ' +\n 'isEqualTypeParams isFilePatchingEnabled isFlashlightOn isFlatEmpty isForcedWalk isFormationLeader ' +\n 'isGroupDeletedWhenEmpty isHidden isInRemainsCollector isInstructorFigureEnabled isIRLaserOn ' +\n 'isKeyActive isKindOf isLaserOn isLightOn isLocalized isManualFire isMarkedForCollection ' +\n 'isMultiplayer isMultiplayerSolo isNil isNull isNumber isObjectHidden isObjectRTD isOnRoad ' +\n 'isPipEnabled isPlayer isRealTime isRemoteExecuted isRemoteExecutedJIP isServer isShowing3DIcons ' +\n 'isSimpleObject isSprintAllowed isStaminaEnabled isSteamMission isStreamFriendlyUIEnabled isText ' +\n 'isTouchingGround isTurnedOut isTutHintsEnabled isUAVConnectable isUAVConnected isUIContext ' +\n 'isUniformAllowed isVehicleCargo isVehicleRadarOn isVehicleSensorEnabled isWalking ' +\n 'isWeaponDeployed isWeaponRested itemCargo items itemsWithMagazines join joinAs joinAsSilent ' +\n 'joinSilent joinString kbAddDatabase kbAddDatabaseTargets kbAddTopic kbHasTopic kbReact ' +\n 'kbRemoveTopic kbTell kbWasSaid keyImage keyName knowsAbout land landAt landResult language ' +\n 'laserTarget lbAdd lbClear lbColor lbColorRight lbCurSel lbData lbDelete lbIsSelected lbPicture ' +\n 'lbPictureRight lbSelection lbSetColor lbSetColorRight lbSetCurSel lbSetData lbSetPicture ' +\n 'lbSetPictureColor lbSetPictureColorDisabled lbSetPictureColorSelected lbSetPictureRight ' +\n 'lbSetPictureRightColor lbSetPictureRightColorDisabled lbSetPictureRightColorSelected ' +\n 'lbSetSelectColor lbSetSelectColorRight lbSetSelected lbSetText lbSetTextRight lbSetTooltip ' +\n 'lbSetValue lbSize lbSort lbSortByValue lbText lbTextRight lbValue leader leaderboardDeInit ' +\n 'leaderboardGetRows leaderboardInit leaderboardRequestRowsFriends leaderboardsRequestUploadScore ' +\n 'leaderboardsRequestUploadScoreKeepBest leaderboardState leaveVehicle libraryCredits ' +\n 'libraryDisclaimers lifeState lightAttachObject lightDetachObject lightIsOn lightnings limitSpeed ' +\n 'linearConversion lineIntersects lineIntersectsObjs lineIntersectsSurfaces lineIntersectsWith ' +\n 'linkItem list listObjects listRemoteTargets listVehicleSensors ln lnbAddArray lnbAddColumn ' +\n 'lnbAddRow lnbClear lnbColor lnbCurSelRow lnbData lnbDeleteColumn lnbDeleteRow ' +\n 'lnbGetColumnsPosition lnbPicture lnbSetColor lnbSetColumnsPos lnbSetCurSelRow lnbSetData ' +\n 'lnbSetPicture lnbSetText lnbSetValue lnbSize lnbSort lnbSortByValue lnbText lnbValue load loadAbs ' +\n 'loadBackpack loadFile loadGame loadIdentity loadMagazine loadOverlay loadStatus loadUniform ' +\n 'loadVest local localize locationPosition lock lockCameraTo lockCargo lockDriver locked ' +\n 'lockedCargo lockedDriver lockedTurret lockIdentity lockTurret lockWP log logEntities logNetwork ' +\n 'logNetworkTerminate lookAt lookAtPos magazineCargo magazines magazinesAllTurrets magazinesAmmo ' +\n 'magazinesAmmoCargo magazinesAmmoFull magazinesDetail magazinesDetailBackpack ' +\n 'magazinesDetailUniform magazinesDetailVest magazinesTurret magazineTurretAmmo mapAnimAdd ' +\n 'mapAnimClear mapAnimCommit mapAnimDone mapCenterOnCamera mapGridPosition markAsFinishedOnSteam ' +\n 'markerAlpha markerBrush markerColor markerDir markerPos markerShape markerSize markerText ' +\n 'markerType max members menuAction menuAdd menuChecked menuClear menuCollapse menuData menuDelete ' +\n 'menuEnable menuEnabled menuExpand menuHover menuPicture menuSetAction menuSetCheck menuSetData ' +\n 'menuSetPicture menuSetValue menuShortcut menuShortcutText menuSize menuSort menuText menuURL ' +\n 'menuValue min mineActive mineDetectedBy missionConfigFile missionDifficulty missionName ' +\n 'missionNamespace missionStart missionVersion mod modelToWorld modelToWorldVisual ' +\n 'modelToWorldVisualWorld modelToWorldWorld modParams moonIntensity moonPhase morale move ' +\n 'move3DENCamera moveInAny moveInCargo moveInCommander moveInDriver moveInGunner moveInTurret ' +\n 'moveObjectToEnd moveOut moveTime moveTo moveToCompleted moveToFailed musicVolume name nameSound ' +\n 'nearEntities nearestBuilding nearestLocation nearestLocations nearestLocationWithDubbing ' +\n 'nearestObject nearestObjects nearestTerrainObjects nearObjects nearObjectsReady nearRoads ' +\n 'nearSupplies nearTargets needReload netId netObjNull newOverlay nextMenuItemIndex ' +\n 'nextWeatherChange nMenuItems not numberOfEnginesRTD numberToDate objectCurators objectFromNetId ' +\n 'objectParent objStatus onBriefingGroup onBriefingNotes onBriefingPlan onBriefingTeamSwitch ' +\n 'onCommandModeChanged onDoubleClick onEachFrame onGroupIconClick onGroupIconOverEnter ' +\n 'onGroupIconOverLeave onHCGroupSelectionChanged onMapSingleClick onPlayerConnected ' +\n 'onPlayerDisconnected onPreloadFinished onPreloadStarted onShowNewObject onTeamSwitch ' +\n 'openCuratorInterface openDLCPage openMap openSteamApp openYoutubeVideo or orderGetIn overcast ' +\n 'overcastForecast owner param params parseNumber parseSimpleArray parseText parsingNamespace ' +\n 'particlesQuality pickWeaponPool pitch pixelGrid pixelGridBase pixelGridNoUIScale pixelH pixelW ' +\n 'playableSlotsNumber playableUnits playAction playActionNow player playerRespawnTime playerSide ' +\n 'playersNumber playGesture playMission playMove playMoveNow playMusic playScriptedMission ' +\n 'playSound playSound3D position positionCameraToWorld posScreenToWorld posWorldToScreen ' +\n 'ppEffectAdjust ppEffectCommit ppEffectCommitted ppEffectCreate ppEffectDestroy ppEffectEnable ' +\n 'ppEffectEnabled ppEffectForceInNVG precision preloadCamera preloadObject preloadSound ' +\n 'preloadTitleObj preloadTitleRsc preprocessFile preprocessFileLineNumbers primaryWeapon ' +\n 'primaryWeaponItems primaryWeaponMagazine priority processDiaryLink productVersion profileName ' +\n 'profileNamespace profileNameSteam progressLoadingScreen progressPosition progressSetPosition ' +\n 'publicVariable publicVariableClient publicVariableServer pushBack pushBackUnique putWeaponPool ' +\n 'queryItemsPool queryMagazinePool queryWeaponPool rad radioChannelAdd radioChannelCreate ' +\n 'radioChannelRemove radioChannelSetCallSign radioChannelSetLabel radioVolume rain rainbow random ' +\n 'rank rankId rating rectangular registeredTasks registerTask reload reloadEnabled remoteControl ' +\n 'remoteExec remoteExecCall remoteExecutedOwner remove3DENConnection remove3DENEventHandler ' +\n 'remove3DENLayer removeAction removeAll3DENEventHandlers removeAllActions removeAllAssignedItems ' +\n 'removeAllContainers removeAllCuratorAddons removeAllCuratorCameraAreas ' +\n 'removeAllCuratorEditingAreas removeAllEventHandlers removeAllHandgunItems removeAllItems ' +\n 'removeAllItemsWithMagazines removeAllMissionEventHandlers removeAllMPEventHandlers ' +\n 'removeAllMusicEventHandlers removeAllOwnedMines removeAllPrimaryWeaponItems removeAllWeapons ' +\n 'removeBackpack removeBackpackGlobal removeCuratorAddons removeCuratorCameraArea ' +\n 'removeCuratorEditableObjects removeCuratorEditingArea removeDrawIcon removeDrawLinks ' +\n 'removeEventHandler removeFromRemainsCollector removeGoggles removeGroupIcon removeHandgunItem ' +\n 'removeHeadgear removeItem removeItemFromBackpack removeItemFromUniform removeItemFromVest ' +\n 'removeItems removeMagazine removeMagazineGlobal removeMagazines removeMagazinesTurret ' +\n 'removeMagazineTurret removeMenuItem removeMissionEventHandler removeMPEventHandler ' +\n 'removeMusicEventHandler removeOwnedMine removePrimaryWeaponItem removeSecondaryWeaponItem ' +\n 'removeSimpleTask removeSwitchableUnit removeTeamMember removeUniform removeVest removeWeapon ' +\n 'removeWeaponAttachmentCargo removeWeaponCargo removeWeaponGlobal removeWeaponTurret ' +\n 'reportRemoteTarget requiredVersion resetCamShake resetSubgroupDirection resize resources ' +\n 'respawnVehicle restartEditorCamera reveal revealMine reverse reversedMouseY roadAt ' +\n 'roadsConnectedTo roleDescription ropeAttachedObjects ropeAttachedTo ropeAttachEnabled ' +\n 'ropeAttachTo ropeCreate ropeCut ropeDestroy ropeDetach ropeEndPosition ropeLength ropes ' +\n 'ropeUnwind ropeUnwound rotorsForcesRTD rotorsRpmRTD round runInitScript safeZoneH safeZoneW ' +\n 'safeZoneWAbs safeZoneX safeZoneXAbs safeZoneY save3DENInventory saveGame saveIdentity ' +\n 'saveJoysticks saveOverlay saveProfileNamespace saveStatus saveVar savingEnabled say say2D say3D ' +\n 'scopeName score scoreSide screenshot screenToWorld scriptDone scriptName scudState ' +\n 'secondaryWeapon secondaryWeaponItems secondaryWeaponMagazine select selectBestPlaces ' +\n 'selectDiarySubject selectedEditorObjects selectEditorObject selectionNames selectionPosition ' +\n 'selectLeader selectMax selectMin selectNoPlayer selectPlayer selectRandom selectRandomWeighted ' +\n 'selectWeapon selectWeaponTurret sendAUMessage sendSimpleCommand sendTask sendTaskResult ' +\n 'sendUDPMessage serverCommand serverCommandAvailable serverCommandExecutable serverName serverTime ' +\n 'set set3DENAttribute set3DENAttributes set3DENGrid set3DENIconsVisible set3DENLayer ' +\n 'set3DENLinesVisible set3DENLogicType set3DENMissionAttribute set3DENMissionAttributes ' +\n 'set3DENModelsVisible set3DENObjectType set3DENSelected setAccTime setActualCollectiveRTD ' +\n 'setAirplaneThrottle setAirportSide setAmmo setAmmoCargo setAmmoOnPylon setAnimSpeedCoef ' +\n 'setAperture setApertureNew setArmoryPoints setAttributes setAutonomous setBehaviour ' +\n 'setBleedingRemaining setBrakesRTD setCameraInterest setCamShakeDefParams setCamShakeParams ' +\n 'setCamUseTI setCaptive setCenterOfMass setCollisionLight setCombatMode setCompassOscillation ' +\n 'setConvoySeparation setCuratorCameraAreaCeiling setCuratorCoef setCuratorEditingAreaType ' +\n 'setCuratorWaypointCost setCurrentChannel setCurrentTask setCurrentWaypoint setCustomAimCoef ' +\n 'setCustomWeightRTD setDamage setDammage setDate setDebriefingText setDefaultCamera setDestination ' +\n 'setDetailMapBlendPars setDir setDirection setDrawIcon setDriveOnPath setDropInterval ' +\n 'setDynamicSimulationDistance setDynamicSimulationDistanceCoef setEditorMode setEditorObjectScope ' +\n 'setEffectCondition setEngineRPMRTD setFace setFaceAnimation setFatigue setFeatureType ' +\n 'setFlagAnimationPhase setFlagOwner setFlagSide setFlagTexture setFog setFormation ' +\n 'setFormationTask setFormDir setFriend setFromEditor setFSMVariable setFuel setFuelCargo ' +\n 'setGroupIcon setGroupIconParams setGroupIconsSelectable setGroupIconsVisible setGroupId ' +\n 'setGroupIdGlobal setGroupOwner setGusts setHideBehind setHit setHitIndex setHitPointDamage ' +\n 'setHorizonParallaxCoef setHUDMovementLevels setIdentity setImportance setInfoPanel setLeader ' +\n 'setLightAmbient setLightAttenuation setLightBrightness setLightColor setLightDayLight ' +\n 'setLightFlareMaxDistance setLightFlareSize setLightIntensity setLightnings setLightUseFlare ' +\n 'setLocalWindParams setMagazineTurretAmmo setMarkerAlpha setMarkerAlphaLocal setMarkerBrush ' +\n 'setMarkerBrushLocal setMarkerColor setMarkerColorLocal setMarkerDir setMarkerDirLocal ' +\n 'setMarkerPos setMarkerPosLocal setMarkerShape setMarkerShapeLocal setMarkerSize ' +\n 'setMarkerSizeLocal setMarkerText setMarkerTextLocal setMarkerType setMarkerTypeLocal setMass ' +\n 'setMimic setMousePosition setMusicEffect setMusicEventHandler setName setNameSound ' +\n 'setObjectArguments setObjectMaterial setObjectMaterialGlobal setObjectProxy setObjectTexture ' +\n 'setObjectTextureGlobal setObjectViewDistance setOvercast setOwner setOxygenRemaining ' +\n 'setParticleCircle setParticleClass setParticleFire setParticleParams setParticleRandom ' +\n 'setPilotCameraDirection setPilotCameraRotation setPilotCameraTarget setPilotLight setPiPEffect ' +\n 'setPitch setPlateNumber setPlayable setPlayerRespawnTime setPos setPosASL setPosASL2 setPosASLW ' +\n 'setPosATL setPosition setPosWorld setPylonLoadOut setPylonsPriority setRadioMsg setRain ' +\n 'setRainbow setRandomLip setRank setRectangular setRepairCargo setRotorBrakeRTD setShadowDistance ' +\n 'setShotParents setSide setSimpleTaskAlwaysVisible setSimpleTaskCustomData ' +\n 'setSimpleTaskDescription setSimpleTaskDestination setSimpleTaskTarget setSimpleTaskType ' +\n 'setSimulWeatherLayers setSize setSkill setSlingLoad setSoundEffect setSpeaker setSpeech ' +\n 'setSpeedMode setStamina setStaminaScheme setStatValue setSuppression setSystemOfUnits ' +\n 'setTargetAge setTaskMarkerOffset setTaskResult setTaskState setTerrainGrid setText ' +\n 'setTimeMultiplier setTitleEffect setTrafficDensity setTrafficDistance setTrafficGap ' +\n 'setTrafficSpeed setTriggerActivation setTriggerArea setTriggerStatements setTriggerText ' +\n 'setTriggerTimeout setTriggerType setType setUnconscious setUnitAbility setUnitLoadout setUnitPos ' +\n 'setUnitPosWeak setUnitRank setUnitRecoilCoefficient setUnitTrait setUnloadInCombat ' +\n 'setUserActionText setUserMFDText setUserMFDvalue setVariable setVectorDir setVectorDirAndUp ' +\n 'setVectorUp setVehicleAmmo setVehicleAmmoDef setVehicleArmor setVehicleCargo setVehicleId ' +\n 'setVehicleLock setVehiclePosition setVehicleRadar setVehicleReceiveRemoteTargets ' +\n 'setVehicleReportOwnPosition setVehicleReportRemoteTargets setVehicleTIPars setVehicleVarName ' +\n 'setVelocity setVelocityModelSpace setVelocityTransformation setViewDistance ' +\n 'setVisibleIfTreeCollapsed setWantedRPMRTD setWaves setWaypointBehaviour setWaypointCombatMode ' +\n 'setWaypointCompletionRadius setWaypointDescription setWaypointForceBehaviour setWaypointFormation ' +\n 'setWaypointHousePosition setWaypointLoiterRadius setWaypointLoiterType setWaypointName ' +\n 'setWaypointPosition setWaypointScript setWaypointSpeed setWaypointStatements setWaypointTimeout ' +\n 'setWaypointType setWaypointVisible setWeaponReloadingTime setWind setWindDir setWindForce ' +\n 'setWindStr setWingForceScaleRTD setWPPos show3DIcons showChat showCinemaBorder showCommandingMenu ' +\n 'showCompass showCuratorCompass showGPS showHUD showLegend showMap shownArtilleryComputer ' +\n 'shownChat shownCompass shownCuratorCompass showNewEditorObject shownGPS shownHUD shownMap ' +\n 'shownPad shownRadio shownScoretable shownUAVFeed shownWarrant shownWatch showPad showRadio ' +\n 'showScoretable showSubtitles showUAVFeed showWarrant showWatch showWaypoint showWaypoints side ' +\n 'sideChat sideEnemy sideFriendly sideRadio simpleTasks simulationEnabled simulCloudDensity ' +\n 'simulCloudOcclusion simulInClouds simulWeatherSync sin size sizeOf skill skillFinal skipTime ' +\n 'sleep sliderPosition sliderRange sliderSetPosition sliderSetRange sliderSetSpeed sliderSpeed ' +\n 'slingLoadAssistantShown soldierMagazines someAmmo sort soundVolume spawn speaker speed speedMode ' +\n 'splitString sqrt squadParams stance startLoadingScreen step stop stopEngineRTD stopped str ' +\n 'sunOrMoon supportInfo suppressFor surfaceIsWater surfaceNormal surfaceType swimInDepth ' +\n 'switchableUnits switchAction switchCamera switchGesture switchLight switchMove ' +\n 'synchronizedObjects synchronizedTriggers synchronizedWaypoints synchronizeObjectsAdd ' +\n 'synchronizeObjectsRemove synchronizeTrigger synchronizeWaypoint systemChat systemOfUnits tan ' +\n 'targetKnowledge targets targetsAggregate targetsQuery taskAlwaysVisible taskChildren ' +\n 'taskCompleted taskCustomData taskDescription taskDestination taskHint taskMarkerOffset taskParent ' +\n 'taskResult taskState taskType teamMember teamName teams teamSwitch teamSwitchEnabled teamType ' +\n 'terminate terrainIntersect terrainIntersectASL terrainIntersectAtASL text textLog textLogFormat ' +\n 'tg time timeMultiplier titleCut titleFadeOut titleObj titleRsc titleText toArray toFixed toLower ' +\n 'toString toUpper triggerActivated triggerActivation triggerArea triggerAttachedVehicle ' +\n 'triggerAttachObject triggerAttachVehicle triggerDynamicSimulation triggerStatements triggerText ' +\n 'triggerTimeout triggerTimeoutCurrent triggerType turretLocal turretOwner turretUnit tvAdd tvClear ' +\n 'tvCollapse tvCollapseAll tvCount tvCurSel tvData tvDelete tvExpand tvExpandAll tvPicture ' +\n 'tvSetColor tvSetCurSel tvSetData tvSetPicture tvSetPictureColor tvSetPictureColorDisabled ' +\n 'tvSetPictureColorSelected tvSetPictureRight tvSetPictureRightColor tvSetPictureRightColorDisabled ' +\n 'tvSetPictureRightColorSelected tvSetText tvSetTooltip tvSetValue tvSort tvSortByValue tvText ' +\n 'tvTooltip tvValue type typeName typeOf UAVControl uiNamespace uiSleep unassignCurator ' +\n 'unassignItem unassignTeam unassignVehicle underwater uniform uniformContainer uniformItems ' +\n 'uniformMagazines unitAddons unitAimPosition unitAimPositionVisual unitBackpack unitIsUAV unitPos ' +\n 'unitReady unitRecoilCoefficient units unitsBelowHeight unlinkItem unlockAchievement ' +\n 'unregisterTask updateDrawIcon updateMenuItem updateObjectTree useAISteeringComponent ' +\n 'useAudioTimeForMoves userInputDisabled vectorAdd vectorCos vectorCrossProduct vectorDiff ' +\n 'vectorDir vectorDirVisual vectorDistance vectorDistanceSqr vectorDotProduct vectorFromTo ' +\n 'vectorMagnitude vectorMagnitudeSqr vectorModelToWorld vectorModelToWorldVisual vectorMultiply ' +\n 'vectorNormalized vectorUp vectorUpVisual vectorWorldToModel vectorWorldToModelVisual vehicle ' +\n 'vehicleCargoEnabled vehicleChat vehicleRadio vehicleReceiveRemoteTargets vehicleReportOwnPosition ' +\n 'vehicleReportRemoteTargets vehicles vehicleVarName velocity velocityModelSpace verifySignature ' +\n 'vest vestContainer vestItems vestMagazines viewDistance visibleCompass visibleGPS visibleMap ' +\n 'visiblePosition visiblePositionASL visibleScoretable visibleWatch waves waypointAttachedObject ' +\n 'waypointAttachedVehicle waypointAttachObject waypointAttachVehicle waypointBehaviour ' +\n 'waypointCombatMode waypointCompletionRadius waypointDescription waypointForceBehaviour ' +\n 'waypointFormation waypointHousePosition waypointLoiterRadius waypointLoiterType waypointName ' +\n 'waypointPosition waypoints waypointScript waypointsEnabledUAV waypointShow waypointSpeed ' +\n 'waypointStatements waypointTimeout waypointTimeoutCurrent waypointType waypointVisible ' +\n 'weaponAccessories weaponAccessoriesCargo weaponCargo weaponDirection weaponInertia weaponLowered ' +\n 'weapons weaponsItems weaponsItemsCargo weaponState weaponsTurret weightRTD WFSideText wind ',\n literal:\n 'blufor civilian configNull controlNull displayNull east endl false grpNull independent lineBreak ' +\n 'locationNull nil objNull opfor pi resistance scriptNull sideAmbientLife sideEmpty sideLogic ' +\n 'sideUnknown taskNull teamMemberNull true west'\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.NUMBER_MODE,\n VARIABLE,\n FUNCTION,\n STRINGS,\n PREPROCESSOR\n ],\n illegal: /#|^\\$ /\n };\n}\n\nmodule.exports = sqf;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] } args\n * @returns {string}\n */\nfunction either(...args) {\n const joined = '(' + args.map((x) => source(x)).join(\"|\") + \")\";\n return joined;\n}\n\n/*\n Language: SQL\n Website: https://en.wikipedia.org/wiki/SQL\n Category: common, database\n */\n\nfunction sql(hljs) {\n const COMMENT_MODE = hljs.COMMENT('--', '$');\n const STRING = {\n className: 'string',\n variants: [\n {\n begin: /'/,\n end: /'/,\n contains: [\n {begin: /''/ }\n ]\n }\n ]\n };\n const QUOTED_IDENTIFIER = {\n begin: /\"/,\n end: /\"/,\n contains: [ { begin: /\"\"/ } ]\n };\n\n const LITERALS = [\n \"true\",\n \"false\",\n // Not sure it's correct to call NULL literal, and clauses like IS [NOT] NULL look strange that way.\n // \"null\",\n \"unknown\"\n ];\n\n const MULTI_WORD_TYPES = [\n \"double precision\",\n \"large object\",\n \"with timezone\",\n \"without timezone\"\n ];\n\n const TYPES = [\n 'bigint',\n 'binary',\n 'blob',\n 'boolean',\n 'char',\n 'character',\n 'clob',\n 'date',\n 'dec',\n 'decfloat',\n 'decimal',\n 'float',\n 'int',\n 'integer',\n 'interval',\n 'nchar',\n 'nclob',\n 'national',\n 'numeric',\n 'real',\n 'row',\n 'smallint',\n 'time',\n 'timestamp',\n 'varchar',\n 'varying', // modifier (character varying)\n 'varbinary'\n ];\n\n const NON_RESERVED_WORDS = [\n \"add\",\n \"asc\",\n \"collation\",\n \"desc\",\n \"final\",\n \"first\",\n \"last\",\n \"view\"\n ];\n\n // https://jakewheat.github.io/sql-overview/sql-2016-foundation-grammar.html#reserved-word\n const RESERVED_WORDS = [\n \"abs\",\n \"acos\",\n \"all\",\n \"allocate\",\n \"alter\",\n \"and\",\n \"any\",\n \"are\",\n \"array\",\n \"array_agg\",\n \"array_max_cardinality\",\n \"as\",\n \"asensitive\",\n \"asin\",\n \"asymmetric\",\n \"at\",\n \"atan\",\n \"atomic\",\n \"authorization\",\n \"avg\",\n \"begin\",\n \"begin_frame\",\n \"begin_partition\",\n \"between\",\n \"bigint\",\n \"binary\",\n \"blob\",\n \"boolean\",\n \"both\",\n \"by\",\n \"call\",\n \"called\",\n \"cardinality\",\n \"cascaded\",\n \"case\",\n \"cast\",\n \"ceil\",\n \"ceiling\",\n \"char\",\n \"char_length\",\n \"character\",\n \"character_length\",\n \"check\",\n \"classifier\",\n \"clob\",\n \"close\",\n \"coalesce\",\n \"collate\",\n \"collect\",\n \"column\",\n \"commit\",\n \"condition\",\n \"connect\",\n \"constraint\",\n \"contains\",\n \"convert\",\n \"copy\",\n \"corr\",\n \"corresponding\",\n \"cos\",\n \"cosh\",\n \"count\",\n \"covar_pop\",\n \"covar_samp\",\n \"create\",\n \"cross\",\n \"cube\",\n \"cume_dist\",\n \"current\",\n \"current_catalog\",\n \"current_date\",\n \"current_default_transform_group\",\n \"current_path\",\n \"current_role\",\n \"current_row\",\n \"current_schema\",\n \"current_time\",\n \"current_timestamp\",\n \"current_path\",\n \"current_role\",\n \"current_transform_group_for_type\",\n \"current_user\",\n \"cursor\",\n \"cycle\",\n \"date\",\n \"day\",\n \"deallocate\",\n \"dec\",\n \"decimal\",\n \"decfloat\",\n \"declare\",\n \"default\",\n \"define\",\n \"delete\",\n \"dense_rank\",\n \"deref\",\n \"describe\",\n \"deterministic\",\n \"disconnect\",\n \"distinct\",\n \"double\",\n \"drop\",\n \"dynamic\",\n \"each\",\n \"element\",\n \"else\",\n \"empty\",\n \"end\",\n \"end_frame\",\n \"end_partition\",\n \"end-exec\",\n \"equals\",\n \"escape\",\n \"every\",\n \"except\",\n \"exec\",\n \"execute\",\n \"exists\",\n \"exp\",\n \"external\",\n \"extract\",\n \"false\",\n \"fetch\",\n \"filter\",\n \"first_value\",\n \"float\",\n \"floor\",\n \"for\",\n \"foreign\",\n \"frame_row\",\n \"free\",\n \"from\",\n \"full\",\n \"function\",\n \"fusion\",\n \"get\",\n \"global\",\n \"grant\",\n \"group\",\n \"grouping\",\n \"groups\",\n \"having\",\n \"hold\",\n \"hour\",\n \"identity\",\n \"in\",\n \"indicator\",\n \"initial\",\n \"inner\",\n \"inout\",\n \"insensitive\",\n \"insert\",\n \"int\",\n \"integer\",\n \"intersect\",\n \"intersection\",\n \"interval\",\n \"into\",\n \"is\",\n \"join\",\n \"json_array\",\n \"json_arrayagg\",\n \"json_exists\",\n \"json_object\",\n \"json_objectagg\",\n \"json_query\",\n \"json_table\",\n \"json_table_primitive\",\n \"json_value\",\n \"lag\",\n \"language\",\n \"large\",\n \"last_value\",\n \"lateral\",\n \"lead\",\n \"leading\",\n \"left\",\n \"like\",\n \"like_regex\",\n \"listagg\",\n \"ln\",\n \"local\",\n \"localtime\",\n \"localtimestamp\",\n \"log\",\n \"log10\",\n \"lower\",\n \"match\",\n \"match_number\",\n \"match_recognize\",\n \"matches\",\n \"max\",\n \"member\",\n \"merge\",\n \"method\",\n \"min\",\n \"minute\",\n \"mod\",\n \"modifies\",\n \"module\",\n \"month\",\n \"multiset\",\n \"national\",\n \"natural\",\n \"nchar\",\n \"nclob\",\n \"new\",\n \"no\",\n \"none\",\n \"normalize\",\n \"not\",\n \"nth_value\",\n \"ntile\",\n \"null\",\n \"nullif\",\n \"numeric\",\n \"octet_length\",\n \"occurrences_regex\",\n \"of\",\n \"offset\",\n \"old\",\n \"omit\",\n \"on\",\n \"one\",\n \"only\",\n \"open\",\n \"or\",\n \"order\",\n \"out\",\n \"outer\",\n \"over\",\n \"overlaps\",\n \"overlay\",\n \"parameter\",\n \"partition\",\n \"pattern\",\n \"per\",\n \"percent\",\n \"percent_rank\",\n \"percentile_cont\",\n \"percentile_disc\",\n \"period\",\n \"portion\",\n \"position\",\n \"position_regex\",\n \"power\",\n \"precedes\",\n \"precision\",\n \"prepare\",\n \"primary\",\n \"procedure\",\n \"ptf\",\n \"range\",\n \"rank\",\n \"reads\",\n \"real\",\n \"recursive\",\n \"ref\",\n \"references\",\n \"referencing\",\n \"regr_avgx\",\n \"regr_avgy\",\n \"regr_count\",\n \"regr_intercept\",\n \"regr_r2\",\n \"regr_slope\",\n \"regr_sxx\",\n \"regr_sxy\",\n \"regr_syy\",\n \"release\",\n \"result\",\n \"return\",\n \"returns\",\n \"revoke\",\n \"right\",\n \"rollback\",\n \"rollup\",\n \"row\",\n \"row_number\",\n \"rows\",\n \"running\",\n \"savepoint\",\n \"scope\",\n \"scroll\",\n \"search\",\n \"second\",\n \"seek\",\n \"select\",\n \"sensitive\",\n \"session_user\",\n \"set\",\n \"show\",\n \"similar\",\n \"sin\",\n \"sinh\",\n \"skip\",\n \"smallint\",\n \"some\",\n \"specific\",\n \"specifictype\",\n \"sql\",\n \"sqlexception\",\n \"sqlstate\",\n \"sqlwarning\",\n \"sqrt\",\n \"start\",\n \"static\",\n \"stddev_pop\",\n \"stddev_samp\",\n \"submultiset\",\n \"subset\",\n \"substring\",\n \"substring_regex\",\n \"succeeds\",\n \"sum\",\n \"symmetric\",\n \"system\",\n \"system_time\",\n \"system_user\",\n \"table\",\n \"tablesample\",\n \"tan\",\n \"tanh\",\n \"then\",\n \"time\",\n \"timestamp\",\n \"timezone_hour\",\n \"timezone_minute\",\n \"to\",\n \"trailing\",\n \"translate\",\n \"translate_regex\",\n \"translation\",\n \"treat\",\n \"trigger\",\n \"trim\",\n \"trim_array\",\n \"true\",\n \"truncate\",\n \"uescape\",\n \"union\",\n \"unique\",\n \"unknown\",\n \"unnest\",\n \"update \",\n \"upper\",\n \"user\",\n \"using\",\n \"value\",\n \"values\",\n \"value_of\",\n \"var_pop\",\n \"var_samp\",\n \"varbinary\",\n \"varchar\",\n \"varying\",\n \"versioning\",\n \"when\",\n \"whenever\",\n \"where\",\n \"width_bucket\",\n \"window\",\n \"with\",\n \"within\",\n \"without\",\n \"year\",\n ];\n\n // these are reserved words we have identified to be functions\n // and should only be highlighted in a dispatch-like context\n // ie, array_agg(...), etc.\n const RESERVED_FUNCTIONS = [\n \"abs\",\n \"acos\",\n \"array_agg\",\n \"asin\",\n \"atan\",\n \"avg\",\n \"cast\",\n \"ceil\",\n \"ceiling\",\n \"coalesce\",\n \"corr\",\n \"cos\",\n \"cosh\",\n \"count\",\n \"covar_pop\",\n \"covar_samp\",\n \"cume_dist\",\n \"dense_rank\",\n \"deref\",\n \"element\",\n \"exp\",\n \"extract\",\n \"first_value\",\n \"floor\",\n \"json_array\",\n \"json_arrayagg\",\n \"json_exists\",\n \"json_object\",\n \"json_objectagg\",\n \"json_query\",\n \"json_table\",\n \"json_table_primitive\",\n \"json_value\",\n \"lag\",\n \"last_value\",\n \"lead\",\n \"listagg\",\n \"ln\",\n \"log\",\n \"log10\",\n \"lower\",\n \"max\",\n \"min\",\n \"mod\",\n \"nth_value\",\n \"ntile\",\n \"nullif\",\n \"percent_rank\",\n \"percentile_cont\",\n \"percentile_disc\",\n \"position\",\n \"position_regex\",\n \"power\",\n \"rank\",\n \"regr_avgx\",\n \"regr_avgy\",\n \"regr_count\",\n \"regr_intercept\",\n \"regr_r2\",\n \"regr_slope\",\n \"regr_sxx\",\n \"regr_sxy\",\n \"regr_syy\",\n \"row_number\",\n \"sin\",\n \"sinh\",\n \"sqrt\",\n \"stddev_pop\",\n \"stddev_samp\",\n \"substring\",\n \"substring_regex\",\n \"sum\",\n \"tan\",\n \"tanh\",\n \"translate\",\n \"translate_regex\",\n \"treat\",\n \"trim\",\n \"trim_array\",\n \"unnest\",\n \"upper\",\n \"value_of\",\n \"var_pop\",\n \"var_samp\",\n \"width_bucket\",\n ];\n\n // these functions can\n const POSSIBLE_WITHOUT_PARENS = [\n \"current_catalog\",\n \"current_date\",\n \"current_default_transform_group\",\n \"current_path\",\n \"current_role\",\n \"current_schema\",\n \"current_transform_group_for_type\",\n \"current_user\",\n \"session_user\",\n \"system_time\",\n \"system_user\",\n \"current_time\",\n \"localtime\",\n \"current_timestamp\",\n \"localtimestamp\"\n ];\n\n // those exist to boost relevance making these very\n // \"SQL like\" keyword combos worth +1 extra relevance\n const COMBOS = [\n \"create table\",\n \"insert into\",\n \"primary key\",\n \"foreign key\",\n \"not null\",\n \"alter table\",\n \"add constraint\",\n \"grouping sets\",\n \"on overflow\",\n \"character set\",\n \"respect nulls\",\n \"ignore nulls\",\n \"nulls first\",\n \"nulls last\",\n \"depth first\",\n \"breadth first\"\n ];\n\n const FUNCTIONS = RESERVED_FUNCTIONS;\n\n const KEYWORDS = [...RESERVED_WORDS, ...NON_RESERVED_WORDS].filter((keyword) => {\n return !RESERVED_FUNCTIONS.includes(keyword);\n });\n\n const VARIABLE = {\n className: \"variable\",\n begin: /@[a-z0-9]+/,\n };\n\n const OPERATOR = {\n className: \"operator\",\n begin: /[-+*/=%^~]|&&?|\\|\\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,\n relevance: 0,\n };\n\n const FUNCTION_CALL = {\n begin: concat(/\\b/, either(...FUNCTIONS), /\\s*\\(/),\n keywords: {\n built_in: FUNCTIONS\n }\n };\n\n // keywords with less than 3 letters are reduced in relevancy\n function reduceRelevancy(list, {exceptions, when} = {}) {\n const qualifyFn = when;\n exceptions = exceptions || [];\n return list.map((item) => {\n if (item.match(/\\|\\d+$/) || exceptions.includes(item)) {\n return item;\n } else if (qualifyFn(item)) {\n return `${item}|0`;\n } else {\n return item;\n }\n });\n }\n\n return {\n name: 'SQL',\n case_insensitive: true,\n // does not include {} or HTML tags `</`\n illegal: /[{}]|<\\//,\n keywords: {\n $pattern: /\\b[\\w\\.]+/,\n keyword:\n reduceRelevancy(KEYWORDS, { when: (x) => x.length < 3 }),\n literal: LITERALS,\n type: TYPES,\n built_in: POSSIBLE_WITHOUT_PARENS\n },\n contains: [\n {\n begin: either(...COMBOS),\n keywords: {\n $pattern: /[\\w\\.]+/,\n keyword: KEYWORDS.concat(COMBOS),\n literal: LITERALS,\n type: TYPES\n },\n },\n {\n className: \"type\",\n begin: either(...MULTI_WORD_TYPES)\n },\n FUNCTION_CALL,\n VARIABLE,\n STRING,\n QUOTED_IDENTIFIER,\n hljs.C_NUMBER_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n COMMENT_MODE,\n OPERATOR\n ]\n };\n}\n\nmodule.exports = sql;\n","/*\n Language: SQL More (mix of MySQL, Oracle, etc)\n Contributors: Nikolay Lisienko <info@neor.ru>, Heiko August <post@auge8472.de>, Travis Odom <travis.a.odom@gmail.com>, Vadimtro <vadimtro@yahoo.com>, Benjamin Auder <benjamin.auder@gmail.com>\n Website: https://en.wikipedia.org/wiki/SQL\n Category: database\n */\n\n/*\n\nThis is a preservation of the old bloated SQL grammar which includes pretty much\nthe kitchen sink because no one was keeping track of which keywords belong to\nwhich databases. This is likely to be removed in the future.\n\n- Oracle SQL should be factored into it's own 3rd party grammar.\n- MySQL should be factored out into it's own 3rd party grammar.\n\n*/\n\nfunction sql_more(hljs) {\n var COMMENT_MODE = hljs.COMMENT('--', '$');\n return {\n name: 'SQL (more)',\n aliases: [\"mysql\", \"oracle\"],\n disableAutodetect: true,\n case_insensitive: true,\n illegal: /[<>{}*]/,\n contains: [\n {\n beginKeywords:\n 'begin end start commit rollback savepoint lock alter create drop rename call ' +\n 'delete do handler insert load replace select truncate update set show pragma grant ' +\n 'merge describe use explain help declare prepare execute deallocate release ' +\n 'unlock purge reset change stop analyze cache flush optimize repair kill ' +\n 'install uninstall checksum restore check backup revoke comment values with',\n end: /;/, endsWithParent: true,\n keywords: {\n $pattern: /[\\w\\.]+/,\n keyword:\n 'as abort abs absolute acc acce accep accept access accessed accessible account acos action activate add ' +\n 'addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias ' +\n 'all allocate allow alter always analyze ancillary and anti any anydata anydataset anyschema anytype apply ' +\n 'archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan ' +\n 'atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid ' +\n 'authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile ' +\n 'before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float ' +\n 'binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound ' +\n 'bucket buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel ' +\n 'capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base ' +\n 'char_length character_length characters characterset charindex charset charsetform charsetid check ' +\n 'checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close ' +\n 'cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation ' +\n 'collect colu colum column column_value columns columns_updated comment commit compact compatibility ' +\n 'compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn ' +\n 'connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection ' +\n 'consider consistent constant constraint constraints constructor container content contents context ' +\n 'contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost ' +\n 'count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation ' +\n 'critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user ' +\n 'cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add ' +\n 'date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts ' +\n 'day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate ' +\n 'declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults ' +\n 'deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank ' +\n 'depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor ' +\n 'deterministic diagnostics difference dimension direct_load directory disable disable_all ' +\n 'disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div ' +\n 'do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable ' +\n 'editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt ' +\n 'end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors ' +\n 'escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding ' +\n 'execu execut execute exempt exists exit exp expire explain explode export export_set extended extent external ' +\n 'external_1 external_2 externally extract failed failed_login_attempts failover failure far fast ' +\n 'feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final ' +\n 'finish first first_value fixed flash_cache flashback floor flush following follows for forall force foreign ' +\n 'form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ' +\n 'ftp full function general generated get get_format get_lock getdate getutcdate global global_name ' +\n 'globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups ' +\n 'gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex ' +\n 'hierarchy high high_priority hosts hour hours http id ident_current ident_incr ident_seed identified ' +\n 'identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment ' +\n 'index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile ' +\n 'initial initialized initially initrans inmemory inner innodb input insert install instance instantiable ' +\n 'instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat ' +\n 'is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists ' +\n 'keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lateral lax lcase ' +\n 'lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit ' +\n 'lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate ' +\n 'locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call ' +\n 'logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime ' +\n 'managed management manual map mapping mask master master_pos_wait match matched materialized max ' +\n 'maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans ' +\n 'md5 measures median medium member memcompress memory merge microsecond mid migration min minextents ' +\n 'minimum mining minus minute minutes minvalue missing mod mode model modification modify module monitoring month ' +\n 'months mount move movement multiset mutex name name_const names nan national native natural nav nchar ' +\n 'nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile ' +\n 'nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile ' +\n 'nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder ' +\n 'nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck ' +\n 'noswitch not nothing notice notnull notrim novalidate now nowait nth_value nullif nulls num numb numbe ' +\n 'nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ' +\n 'ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old ' +\n 'on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date ' +\n 'oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary ' +\n 'out outer outfile outline output over overflow overriding package pad parallel parallel_enable ' +\n 'parameters parent parse partial partition partitions pascal passing password password_grace_time ' +\n 'password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex ' +\n 'pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc ' +\n 'performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin ' +\n 'policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction ' +\n 'prediction_cost prediction_details prediction_probability prediction_set prepare present preserve ' +\n 'prior priority private private_sga privileges procedural procedure procedure_analyze processlist ' +\n 'profiles project prompt protection public publishingservername purge quarter query quick quiesce quota ' +\n 'quotename radians raise rand range rank raw read reads readsize rebuild record records ' +\n 'recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh ' +\n 'regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy ' +\n 'reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename ' +\n 'repair repeat replace replicate replication required reset resetlogs resize resource respect restore ' +\n 'restricted result result_cache resumable resume retention return returning returns reuse reverse revoke ' +\n 'right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows ' +\n 'rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll ' +\n 'sdo_georaster sdo_topo_geometry search sec_to_time second seconds section securefile security seed segment select ' +\n 'self semi sequence sequential serializable server servererror session session_user sessions_per_user set ' +\n 'sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor ' +\n 'si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin ' +\n 'size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex ' +\n 'source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows ' +\n 'sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone ' +\n 'standby start starting startup statement static statistics stats_binomial_test stats_crosstab ' +\n 'stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep ' +\n 'stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev ' +\n 'stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate ' +\n 'subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum ' +\n 'suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate ' +\n 'sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tablesample tan tdo ' +\n 'template temporary terminated tertiary_weights test than then thread through tier ties time time_format ' +\n 'time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr ' +\n 'timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking ' +\n 'transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate ' +\n 'try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress ' +\n 'under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unnest unpivot ' +\n 'unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert ' +\n 'url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date ' +\n 'utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var ' +\n 'var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray ' +\n 'verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear ' +\n 'wellformed when whene whenev wheneve whenever where while whitespace window with within without work wrapped ' +\n 'xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces ' +\n 'xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek',\n literal:\n 'true false null unknown',\n built_in:\n 'array bigint binary bit blob bool boolean char character date dec decimal float int int8 integer interval number ' +\n 'numeric real record serial serial8 smallint text time timestamp tinyint varchar varchar2 varying void'\n },\n contains: [\n {\n className: 'string',\n begin: '\\'', end: '\\'',\n contains: [{begin: '\\'\\''}]\n },\n {\n className: 'string',\n begin: '\"', end: '\"',\n contains: [{begin: '\"\"'}]\n },\n {\n className: 'string',\n begin: '`', end: '`'\n },\n hljs.C_NUMBER_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n COMMENT_MODE,\n hljs.HASH_COMMENT_MODE\n ]\n },\n hljs.C_BLOCK_COMMENT_MODE,\n COMMENT_MODE,\n hljs.HASH_COMMENT_MODE\n ]\n };\n}\n\nmodule.exports = sql_more;\n","/*\nLanguage: Stan\nDescription: The Stan probabilistic programming language\nAuthor: Jeffrey B. Arnold <jeffrey.arnold@gmail.com>\nWebsite: http://mc-stan.org/\nCategory: scientific\n*/\n\nfunction stan(hljs) {\n // variable names cannot conflict with block identifiers\n const BLOCKS = [\n 'functions',\n 'model',\n 'data',\n 'parameters',\n 'quantities',\n 'transformed',\n 'generated'\n ];\n const STATEMENTS = [\n 'for',\n 'in',\n 'if',\n 'else',\n 'while',\n 'break',\n 'continue',\n 'return'\n ];\n const SPECIAL_FUNCTIONS = [\n 'print',\n 'reject',\n 'increment_log_prob|10',\n 'integrate_ode|10',\n 'integrate_ode_rk45|10',\n 'integrate_ode_bdf|10',\n 'algebra_solver'\n ];\n const VAR_TYPES = [\n 'int',\n 'real',\n 'vector',\n 'ordered',\n 'positive_ordered',\n 'simplex',\n 'unit_vector',\n 'row_vector',\n 'matrix',\n 'cholesky_factor_corr|10',\n 'cholesky_factor_cov|10',\n 'corr_matrix|10',\n 'cov_matrix|10',\n 'void'\n ];\n const FUNCTIONS = [\n 'Phi',\n 'Phi_approx',\n 'abs',\n 'acos',\n 'acosh',\n 'algebra_solver',\n 'append_array',\n 'append_col',\n 'append_row',\n 'asin',\n 'asinh',\n 'atan',\n 'atan2',\n 'atanh',\n 'bernoulli_cdf',\n 'bernoulli_lccdf',\n 'bernoulli_lcdf',\n 'bernoulli_logit_lpmf',\n 'bernoulli_logit_rng',\n 'bernoulli_lpmf',\n 'bernoulli_rng',\n 'bessel_first_kind',\n 'bessel_second_kind',\n 'beta_binomial_cdf',\n 'beta_binomial_lccdf',\n 'beta_binomial_lcdf',\n 'beta_binomial_lpmf',\n 'beta_binomial_rng',\n 'beta_cdf',\n 'beta_lccdf',\n 'beta_lcdf',\n 'beta_lpdf',\n 'beta_rng',\n 'binary_log_loss',\n 'binomial_cdf',\n 'binomial_coefficient_log',\n 'binomial_lccdf',\n 'binomial_lcdf',\n 'binomial_logit_lpmf',\n 'binomial_lpmf',\n 'binomial_rng',\n 'block',\n 'categorical_logit_lpmf',\n 'categorical_logit_rng',\n 'categorical_lpmf',\n 'categorical_rng',\n 'cauchy_cdf',\n 'cauchy_lccdf',\n 'cauchy_lcdf',\n 'cauchy_lpdf',\n 'cauchy_rng',\n 'cbrt',\n 'ceil',\n 'chi_square_cdf',\n 'chi_square_lccdf',\n 'chi_square_lcdf',\n 'chi_square_lpdf',\n 'chi_square_rng',\n 'cholesky_decompose',\n 'choose',\n 'col',\n 'cols',\n 'columns_dot_product',\n 'columns_dot_self',\n 'cos',\n 'cosh',\n 'cov_exp_quad',\n 'crossprod',\n 'csr_extract_u',\n 'csr_extract_v',\n 'csr_extract_w',\n 'csr_matrix_times_vector',\n 'csr_to_dense_matrix',\n 'cumulative_sum',\n 'determinant',\n 'diag_matrix',\n 'diag_post_multiply',\n 'diag_pre_multiply',\n 'diagonal',\n 'digamma',\n 'dims',\n 'dirichlet_lpdf',\n 'dirichlet_rng',\n 'distance',\n 'dot_product',\n 'dot_self',\n 'double_exponential_cdf',\n 'double_exponential_lccdf',\n 'double_exponential_lcdf',\n 'double_exponential_lpdf',\n 'double_exponential_rng',\n 'e',\n 'eigenvalues_sym',\n 'eigenvectors_sym',\n 'erf',\n 'erfc',\n 'exp',\n 'exp2',\n 'exp_mod_normal_cdf',\n 'exp_mod_normal_lccdf',\n 'exp_mod_normal_lcdf',\n 'exp_mod_normal_lpdf',\n 'exp_mod_normal_rng',\n 'expm1',\n 'exponential_cdf',\n 'exponential_lccdf',\n 'exponential_lcdf',\n 'exponential_lpdf',\n 'exponential_rng',\n 'fabs',\n 'falling_factorial',\n 'fdim',\n 'floor',\n 'fma',\n 'fmax',\n 'fmin',\n 'fmod',\n 'frechet_cdf',\n 'frechet_lccdf',\n 'frechet_lcdf',\n 'frechet_lpdf',\n 'frechet_rng',\n 'gamma_cdf',\n 'gamma_lccdf',\n 'gamma_lcdf',\n 'gamma_lpdf',\n 'gamma_p',\n 'gamma_q',\n 'gamma_rng',\n 'gaussian_dlm_obs_lpdf',\n 'get_lp',\n 'gumbel_cdf',\n 'gumbel_lccdf',\n 'gumbel_lcdf',\n 'gumbel_lpdf',\n 'gumbel_rng',\n 'head',\n 'hypergeometric_lpmf',\n 'hypergeometric_rng',\n 'hypot',\n 'inc_beta',\n 'int_step',\n 'integrate_ode',\n 'integrate_ode_bdf',\n 'integrate_ode_rk45',\n 'inv',\n 'inv_Phi',\n 'inv_chi_square_cdf',\n 'inv_chi_square_lccdf',\n 'inv_chi_square_lcdf',\n 'inv_chi_square_lpdf',\n 'inv_chi_square_rng',\n 'inv_cloglog',\n 'inv_gamma_cdf',\n 'inv_gamma_lccdf',\n 'inv_gamma_lcdf',\n 'inv_gamma_lpdf',\n 'inv_gamma_rng',\n 'inv_logit',\n 'inv_sqrt',\n 'inv_square',\n 'inv_wishart_lpdf',\n 'inv_wishart_rng',\n 'inverse',\n 'inverse_spd',\n 'is_inf',\n 'is_nan',\n 'lbeta',\n 'lchoose',\n 'lgamma',\n 'lkj_corr_cholesky_lpdf',\n 'lkj_corr_cholesky_rng',\n 'lkj_corr_lpdf',\n 'lkj_corr_rng',\n 'lmgamma',\n 'lmultiply',\n 'log',\n 'log10',\n 'log1m',\n 'log1m_exp',\n 'log1m_inv_logit',\n 'log1p',\n 'log1p_exp',\n 'log2',\n 'log_determinant',\n 'log_diff_exp',\n 'log_falling_factorial',\n 'log_inv_logit',\n 'log_mix',\n 'log_rising_factorial',\n 'log_softmax',\n 'log_sum_exp',\n 'logistic_cdf',\n 'logistic_lccdf',\n 'logistic_lcdf',\n 'logistic_lpdf',\n 'logistic_rng',\n 'logit',\n 'lognormal_cdf',\n 'lognormal_lccdf',\n 'lognormal_lcdf',\n 'lognormal_lpdf',\n 'lognormal_rng',\n 'machine_precision',\n 'matrix_exp',\n 'max',\n 'mdivide_left_spd',\n 'mdivide_left_tri_low',\n 'mdivide_right_spd',\n 'mdivide_right_tri_low',\n 'mean',\n 'min',\n 'modified_bessel_first_kind',\n 'modified_bessel_second_kind',\n 'multi_gp_cholesky_lpdf',\n 'multi_gp_lpdf',\n 'multi_normal_cholesky_lpdf',\n 'multi_normal_cholesky_rng',\n 'multi_normal_lpdf',\n 'multi_normal_prec_lpdf',\n 'multi_normal_rng',\n 'multi_student_t_lpdf',\n 'multi_student_t_rng',\n 'multinomial_lpmf',\n 'multinomial_rng',\n 'multiply_log',\n 'multiply_lower_tri_self_transpose',\n 'neg_binomial_2_cdf',\n 'neg_binomial_2_lccdf',\n 'neg_binomial_2_lcdf',\n 'neg_binomial_2_log_lpmf',\n 'neg_binomial_2_log_rng',\n 'neg_binomial_2_lpmf',\n 'neg_binomial_2_rng',\n 'neg_binomial_cdf',\n 'neg_binomial_lccdf',\n 'neg_binomial_lcdf',\n 'neg_binomial_lpmf',\n 'neg_binomial_rng',\n 'negative_infinity',\n 'normal_cdf',\n 'normal_lccdf',\n 'normal_lcdf',\n 'normal_lpdf',\n 'normal_rng',\n 'not_a_number',\n 'num_elements',\n 'ordered_logistic_lpmf',\n 'ordered_logistic_rng',\n 'owens_t',\n 'pareto_cdf',\n 'pareto_lccdf',\n 'pareto_lcdf',\n 'pareto_lpdf',\n 'pareto_rng',\n 'pareto_type_2_cdf',\n 'pareto_type_2_lccdf',\n 'pareto_type_2_lcdf',\n 'pareto_type_2_lpdf',\n 'pareto_type_2_rng',\n 'pi',\n 'poisson_cdf',\n 'poisson_lccdf',\n 'poisson_lcdf',\n 'poisson_log_lpmf',\n 'poisson_log_rng',\n 'poisson_lpmf',\n 'poisson_rng',\n 'positive_infinity',\n 'pow',\n 'print',\n 'prod',\n 'qr_Q',\n 'qr_R',\n 'quad_form',\n 'quad_form_diag',\n 'quad_form_sym',\n 'rank',\n 'rayleigh_cdf',\n 'rayleigh_lccdf',\n 'rayleigh_lcdf',\n 'rayleigh_lpdf',\n 'rayleigh_rng',\n 'reject',\n 'rep_array',\n 'rep_matrix',\n 'rep_row_vector',\n 'rep_vector',\n 'rising_factorial',\n 'round',\n 'row',\n 'rows',\n 'rows_dot_product',\n 'rows_dot_self',\n 'scaled_inv_chi_square_cdf',\n 'scaled_inv_chi_square_lccdf',\n 'scaled_inv_chi_square_lcdf',\n 'scaled_inv_chi_square_lpdf',\n 'scaled_inv_chi_square_rng',\n 'sd',\n 'segment',\n 'sin',\n 'singular_values',\n 'sinh',\n 'size',\n 'skew_normal_cdf',\n 'skew_normal_lccdf',\n 'skew_normal_lcdf',\n 'skew_normal_lpdf',\n 'skew_normal_rng',\n 'softmax',\n 'sort_asc',\n 'sort_desc',\n 'sort_indices_asc',\n 'sort_indices_desc',\n 'sqrt',\n 'sqrt2',\n 'square',\n 'squared_distance',\n 'step',\n 'student_t_cdf',\n 'student_t_lccdf',\n 'student_t_lcdf',\n 'student_t_lpdf',\n 'student_t_rng',\n 'sub_col',\n 'sub_row',\n 'sum',\n 'tail',\n 'tan',\n 'tanh',\n 'target',\n 'tcrossprod',\n 'tgamma',\n 'to_array_1d',\n 'to_array_2d',\n 'to_matrix',\n 'to_row_vector',\n 'to_vector',\n 'trace',\n 'trace_gen_quad_form',\n 'trace_quad_form',\n 'trigamma',\n 'trunc',\n 'uniform_cdf',\n 'uniform_lccdf',\n 'uniform_lcdf',\n 'uniform_lpdf',\n 'uniform_rng',\n 'variance',\n 'von_mises_lpdf',\n 'von_mises_rng',\n 'weibull_cdf',\n 'weibull_lccdf',\n 'weibull_lcdf',\n 'weibull_lpdf',\n 'weibull_rng',\n 'wiener_lpdf',\n 'wishart_lpdf',\n 'wishart_rng'\n ];\n const DISTRIBUTIONS = [\n 'bernoulli',\n 'bernoulli_logit',\n 'beta',\n 'beta_binomial',\n 'binomial',\n 'binomial_logit',\n 'categorical',\n 'categorical_logit',\n 'cauchy',\n 'chi_square',\n 'dirichlet',\n 'double_exponential',\n 'exp_mod_normal',\n 'exponential',\n 'frechet',\n 'gamma',\n 'gaussian_dlm_obs',\n 'gumbel',\n 'hypergeometric',\n 'inv_chi_square',\n 'inv_gamma',\n 'inv_wishart',\n 'lkj_corr',\n 'lkj_corr_cholesky',\n 'logistic',\n 'lognormal',\n 'multi_gp',\n 'multi_gp_cholesky',\n 'multi_normal',\n 'multi_normal_cholesky',\n 'multi_normal_prec',\n 'multi_student_t',\n 'multinomial',\n 'neg_binomial',\n 'neg_binomial_2',\n 'neg_binomial_2_log',\n 'normal',\n 'ordered_logistic',\n 'pareto',\n 'pareto_type_2',\n 'poisson',\n 'poisson_log',\n 'rayleigh',\n 'scaled_inv_chi_square',\n 'skew_normal',\n 'student_t',\n 'uniform',\n 'von_mises',\n 'weibull',\n 'wiener',\n 'wishart'\n ];\n\n return {\n name: 'Stan',\n aliases: [ 'stanfuncs' ],\n keywords: {\n $pattern: hljs.IDENT_RE,\n title: BLOCKS,\n keyword: STATEMENTS.concat(VAR_TYPES).concat(SPECIAL_FUNCTIONS),\n built_in: FUNCTIONS\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.COMMENT(\n /#/,\n /$/,\n {\n relevance: 0,\n keywords: {\n 'meta-keyword': 'include'\n }\n }\n ),\n hljs.COMMENT(\n /\\/\\*/,\n /\\*\\//,\n {\n relevance: 0,\n // highlight doc strings mentioned in Stan reference\n contains: [\n {\n className: 'doctag',\n begin: /@(return|param)/\n }\n ]\n }\n ),\n {\n // hack: in range constraints, lower must follow \"<\"\n begin: /<\\s*lower\\s*=/,\n keywords: 'lower'\n },\n {\n // hack: in range constraints, upper must follow either , or <\n // <lower = ..., upper = ...> or <upper = ...>\n begin: /[<,]\\s*upper\\s*=/,\n keywords: 'upper'\n },\n {\n className: 'keyword',\n begin: /\\btarget\\s*\\+=/,\n relevance: 10\n },\n {\n begin: '~\\\\s*(' + hljs.IDENT_RE + ')\\\\s*\\\\(',\n keywords: DISTRIBUTIONS\n },\n {\n className: 'number',\n variants: [\n {\n begin: /\\b\\d+(?:\\.\\d*)?(?:[eE][+-]?\\d+)?/\n },\n {\n begin: /\\.\\d+(?:[eE][+-]?\\d+)?\\b/\n }\n ],\n relevance: 0\n },\n {\n className: 'string',\n begin: '\"',\n end: '\"',\n relevance: 0\n }\n ]\n };\n}\n\nmodule.exports = stan;\n","/*\nLanguage: Stata\nAuthor: Brian Quistorff <bquistorff@gmail.com>\nContributors: Drew McDonald <drewmcdo@gmail.com>\nDescription: Stata is a general-purpose statistical software package created in 1985 by StataCorp.\nWebsite: https://en.wikipedia.org/wiki/Stata\nCategory: scientific\n*/\n\n/*\n This is a fork and modification of Drew McDonald's file (https://github.com/drewmcdonald/stata-highlighting). I have also included a list of builtin commands from https://bugs.kde.org/show_bug.cgi?id=135646.\n*/\n\nfunction stata(hljs) {\n return {\n name: 'Stata',\n aliases: [\n 'do',\n 'ado'\n ],\n case_insensitive: true,\n keywords: 'if else in foreach for forv forva forval forvalu forvalue forvalues by bys bysort xi quietly qui capture about ac ac_7 acprplot acprplot_7 adjust ado adopath adoupdate alpha ameans an ano anov anova anova_estat anova_terms anovadef aorder ap app appe appen append arch arch_dr arch_estat arch_p archlm areg areg_p args arima arima_dr arima_estat arima_p as asmprobit asmprobit_estat asmprobit_lf asmprobit_mfx__dlg asmprobit_p ass asse asser assert avplot avplot_7 avplots avplots_7 bcskew0 bgodfrey bias binreg bip0_lf biplot bipp_lf bipr_lf bipr_p biprobit bitest bitesti bitowt blogit bmemsize boot bootsamp bootstrap bootstrap_8 boxco_l boxco_p boxcox boxcox_6 boxcox_p bprobit br break brier bro brow brows browse brr brrstat bs bs_7 bsampl_w bsample bsample_7 bsqreg bstat bstat_7 bstat_8 bstrap bstrap_7 bubble bubbleplot ca ca_estat ca_p cabiplot camat canon canon_8 canon_8_p canon_estat canon_p cap caprojection capt captu captur capture cat cc cchart cchart_7 cci cd censobs_table centile cf char chdir checkdlgfiles checkestimationsample checkhlpfiles checksum chelp ci cii cl class classutil clear cli clis clist clo clog clog_lf clog_p clogi clogi_sw clogit clogit_lf clogit_p clogitp clogl_sw cloglog clonevar clslistarray cluster cluster_measures cluster_stop cluster_tree cluster_tree_8 clustermat cmdlog cnr cnre cnreg cnreg_p cnreg_sw cnsreg codebook collaps4 collapse colormult_nb colormult_nw compare compress conf confi confir confirm conren cons const constr constra constrai constrain constraint continue contract copy copyright copysource cor corc corr corr2data corr_anti corr_kmo corr_smc corre correl correla correlat correlate corrgram cou coun count cox cox_p cox_sw coxbase coxhaz coxvar cprplot cprplot_7 crc cret cretu cretur creturn cross cs cscript cscript_log csi ct ct_is ctset ctst_5 ctst_st cttost cumsp cumsp_7 cumul cusum cusum_7 cutil d|0 datasig datasign datasigna datasignat datasignatu datasignatur datasignature datetof db dbeta de dec deco decod decode deff des desc descr descri describ describe destring dfbeta dfgls dfuller di di_g dir dirstats dis discard disp disp_res disp_s displ displa display distinct do doe doed doedi doedit dotplot dotplot_7 dprobit drawnorm drop ds ds_util dstdize duplicates durbina dwstat dydx e|0 ed edi edit egen eivreg emdef en enc enco encod encode eq erase ereg ereg_lf ereg_p ereg_sw ereghet ereghet_glf ereghet_glf_sh ereghet_gp ereghet_ilf ereghet_ilf_sh ereghet_ip eret eretu eretur ereturn err erro error esize est est_cfexist est_cfname est_clickable est_expand est_hold est_table est_unhold est_unholdok estat estat_default estat_summ estat_vce_only esti estimates etodow etof etomdy ex exi exit expand expandcl fac fact facto factor factor_estat factor_p factor_pca_rotated factor_rotate factormat fcast fcast_compute fcast_graph fdades fdadesc fdadescr fdadescri fdadescrib fdadescribe fdasav fdasave fdause fh_st file open file read file close file filefilter fillin find_hlp_file findfile findit findit_7 fit fl fli flis flist for5_0 forest forestplot form forma format fpredict frac_154 frac_adj frac_chk frac_cox frac_ddp frac_dis frac_dv frac_in frac_mun frac_pp frac_pq frac_pv frac_wgt frac_xo fracgen fracplot fracplot_7 fracpoly fracpred fron_ex fron_hn fron_p fron_tn fron_tn2 frontier ftodate ftoe ftomdy ftowdate funnel funnelplot g|0 gamhet_glf gamhet_gp gamhet_ilf gamhet_ip gamma gamma_d2 gamma_p gamma_sw gammahet gdi_hexagon gdi_spokes ge gen gene gener genera generat generate genrank genstd genvmean gettoken gl gladder gladder_7 glim_l01 glim_l02 glim_l03 glim_l04 glim_l05 glim_l06 glim_l07 glim_l08 glim_l09 glim_l10 glim_l11 glim_l12 glim_lf glim_mu glim_nw1 glim_nw2 glim_nw3 glim_p glim_v1 glim_v2 glim_v3 glim_v4 glim_v5 glim_v6 glim_v7 glm glm_6 glm_p glm_sw glmpred glo glob globa global glogit glogit_8 glogit_p gmeans gnbre_lf gnbreg gnbreg_5 gnbreg_p gomp_lf gompe_sw gomper_p gompertz gompertzhet gomphet_glf gomphet_glf_sh gomphet_gp gomphet_ilf gomphet_ilf_sh gomphet_ip gphdot gphpen gphprint gprefs gprobi_p gprobit gprobit_8 gr gr7 gr_copy gr_current gr_db gr_describe gr_dir gr_draw gr_draw_replay gr_drop gr_edit gr_editviewopts gr_example gr_example2 gr_export gr_print gr_qscheme gr_query gr_read gr_rename gr_replay gr_save gr_set gr_setscheme gr_table gr_undo gr_use graph graph7 grebar greigen greigen_7 greigen_8 grmeanby grmeanby_7 gs_fileinfo gs_filetype gs_graphinfo gs_stat gsort gwood h|0 hadimvo hareg hausman haver he heck_d2 heckma_p heckman heckp_lf heckpr_p heckprob hel help hereg hetpr_lf hetpr_p hetprob hettest hexdump hilite hist hist_7 histogram hlogit hlu hmeans hotel hotelling hprobit hreg hsearch icd9 icd9_ff icd9p iis impute imtest inbase include inf infi infil infile infix inp inpu input ins insheet insp inspe inspec inspect integ inten intreg intreg_7 intreg_p intrg2_ll intrg_ll intrg_ll2 ipolate iqreg ir irf irf_create irfm iri is_svy is_svysum isid istdize ivprob_1_lf ivprob_lf ivprobit ivprobit_p ivreg ivreg_footnote ivtob_1_lf ivtob_lf ivtobit ivtobit_p jackknife jacknife jknife jknife_6 jknife_8 jkstat joinby kalarma1 kap kap_3 kapmeier kappa kapwgt kdensity kdensity_7 keep ksm ksmirnov ktau kwallis l|0 la lab labbe labbeplot labe label labelbook ladder levels levelsof leverage lfit lfit_p li lincom line linktest lis list lloghet_glf lloghet_glf_sh lloghet_gp lloghet_ilf lloghet_ilf_sh lloghet_ip llogi_sw llogis_p llogist llogistic llogistichet lnorm_lf lnorm_sw lnorma_p lnormal lnormalhet lnormhet_glf lnormhet_glf_sh lnormhet_gp lnormhet_ilf lnormhet_ilf_sh lnormhet_ip lnskew0 loadingplot loc loca local log logi logis_lf logistic logistic_p logit logit_estat logit_p loglogs logrank loneway lookfor lookup lowess lowess_7 lpredict lrecomp lroc lroc_7 lrtest ls lsens lsens_7 lsens_x lstat ltable ltable_7 ltriang lv lvr2plot lvr2plot_7 m|0 ma mac macr macro makecns man manova manova_estat manova_p manovatest mantel mark markin markout marksample mat mat_capp mat_order mat_put_rr mat_rapp mata mata_clear mata_describe mata_drop mata_matdescribe mata_matsave mata_matuse mata_memory mata_mlib mata_mosave mata_rename mata_which matalabel matcproc matlist matname matr matri matrix matrix_input__dlg matstrik mcc mcci md0_ md1_ md1debug_ md2_ md2debug_ mds mds_estat mds_p mdsconfig mdslong mdsmat mdsshepard mdytoe mdytof me_derd mean means median memory memsize menl meqparse mer merg merge meta mfp mfx mhelp mhodds minbound mixed_ll mixed_ll_reparm mkassert mkdir mkmat mkspline ml ml_5 ml_adjs ml_bhhhs ml_c_d ml_check ml_clear ml_cnt ml_debug ml_defd ml_e0 ml_e0_bfgs ml_e0_cycle ml_e0_dfp ml_e0i ml_e1 ml_e1_bfgs ml_e1_bhhh ml_e1_cycle ml_e1_dfp ml_e2 ml_e2_cycle ml_ebfg0 ml_ebfr0 ml_ebfr1 ml_ebh0q ml_ebhh0 ml_ebhr0 ml_ebr0i ml_ecr0i ml_edfp0 ml_edfr0 ml_edfr1 ml_edr0i ml_eds ml_eer0i ml_egr0i ml_elf ml_elf_bfgs ml_elf_bhhh ml_elf_cycle ml_elf_dfp ml_elfi ml_elfs ml_enr0i ml_enrr0 ml_erdu0 ml_erdu0_bfgs ml_erdu0_bhhh ml_erdu0_bhhhq ml_erdu0_cycle ml_erdu0_dfp ml_erdu0_nrbfgs ml_exde ml_footnote ml_geqnr ml_grad0 ml_graph ml_hbhhh ml_hd0 ml_hold ml_init ml_inv ml_log ml_max ml_mlout ml_mlout_8 ml_model ml_nb0 ml_opt ml_p ml_plot ml_query ml_rdgrd ml_repor ml_s_e ml_score ml_searc ml_technique ml_unhold mleval mlf_ mlmatbysum mlmatsum mlog mlogi mlogit mlogit_footnote mlogit_p mlopts mlsum mlvecsum mnl0_ mor more mov move mprobit mprobit_lf mprobit_p mrdu0_ mrdu1_ mvdecode mvencode mvreg mvreg_estat n|0 nbreg nbreg_al nbreg_lf nbreg_p nbreg_sw nestreg net newey newey_7 newey_p news nl nl_7 nl_9 nl_9_p nl_p nl_p_7 nlcom nlcom_p nlexp2 nlexp2_7 nlexp2a nlexp2a_7 nlexp3 nlexp3_7 nlgom3 nlgom3_7 nlgom4 nlgom4_7 nlinit nllog3 nllog3_7 nllog4 nllog4_7 nlog_rd nlogit nlogit_p nlogitgen nlogittree nlpred no nobreak noi nois noisi noisil noisily note notes notes_dlg nptrend numlabel numlist odbc old_ver olo olog ologi ologi_sw ologit ologit_p ologitp on one onew onewa oneway op_colnm op_comp op_diff op_inv op_str opr opro oprob oprob_sw oprobi oprobi_p oprobit oprobitp opts_exclusive order orthog orthpoly ou out outf outfi outfil outfile outs outsh outshe outshee outsheet ovtest pac pac_7 palette parse parse_dissim pause pca pca_8 pca_display pca_estat pca_p pca_rotate pcamat pchart pchart_7 pchi pchi_7 pcorr pctile pentium pergram pergram_7 permute permute_8 personal peto_st pkcollapse pkcross pkequiv pkexamine pkexamine_7 pkshape pksumm pksumm_7 pl plo plot plugin pnorm pnorm_7 poisgof poiss_lf poiss_sw poisso_p poisson poisson_estat post postclose postfile postutil pperron pr prais prais_e prais_e2 prais_p predict predictnl preserve print pro prob probi probit probit_estat probit_p proc_time procoverlay procrustes procrustes_estat procrustes_p profiler prog progr progra program prop proportion prtest prtesti pwcorr pwd q\\\\s qby qbys qchi qchi_7 qladder qladder_7 qnorm qnorm_7 qqplot qqplot_7 qreg qreg_c qreg_p qreg_sw qu quadchk quantile quantile_7 que quer query range ranksum ratio rchart rchart_7 rcof recast reclink recode reg reg3 reg3_p regdw regr regre regre_p2 regres regres_p regress regress_estat regriv_p remap ren rena renam rename renpfix repeat replace report reshape restore ret retu retur return rm rmdir robvar roccomp roccomp_7 roccomp_8 rocf_lf rocfit rocfit_8 rocgold rocplot rocplot_7 roctab roctab_7 rolling rologit rologit_p rot rota rotat rotate rotatemat rreg rreg_p ru run runtest rvfplot rvfplot_7 rvpplot rvpplot_7 sa safesum sample sampsi sav save savedresults saveold sc sca scal scala scalar scatter scm_mine sco scob_lf scob_p scobi_sw scobit scor score scoreplot scoreplot_help scree screeplot screeplot_help sdtest sdtesti se search separate seperate serrbar serrbar_7 serset set set_defaults sfrancia sh she shel shell shewhart shewhart_7 signestimationsample signrank signtest simul simul_7 simulate simulate_8 sktest sleep slogit slogit_d2 slogit_p smooth snapspan so sor sort spearman spikeplot spikeplot_7 spikeplt spline_x split sqreg sqreg_p sret sretu sretur sreturn ssc st st_ct st_hc st_hcd st_hcd_sh st_is st_issys st_note st_promo st_set st_show st_smpl st_subid stack statsby statsby_8 stbase stci stci_7 stcox stcox_estat stcox_fr stcox_fr_ll stcox_p stcox_sw stcoxkm stcoxkm_7 stcstat stcurv stcurve stcurve_7 stdes stem stepwise stereg stfill stgen stir stjoin stmc stmh stphplot stphplot_7 stphtest stphtest_7 stptime strate strate_7 streg streg_sw streset sts sts_7 stset stsplit stsum sttocc sttoct stvary stweib su suest suest_8 sum summ summa summar summari summariz summarize sunflower sureg survcurv survsum svar svar_p svmat svy svy_disp svy_dreg svy_est svy_est_7 svy_estat svy_get svy_gnbreg_p svy_head svy_header svy_heckman_p svy_heckprob_p svy_intreg_p svy_ivreg_p svy_logistic_p svy_logit_p svy_mlogit_p svy_nbreg_p svy_ologit_p svy_oprobit_p svy_poisson_p svy_probit_p svy_regress_p svy_sub svy_sub_7 svy_x svy_x_7 svy_x_p svydes svydes_8 svygen svygnbreg svyheckman svyheckprob svyintreg svyintreg_7 svyintrg svyivreg svylc svylog_p svylogit svymarkout svymarkout_8 svymean svymlog svymlogit svynbreg svyolog svyologit svyoprob svyoprobit svyopts svypois svypois_7 svypoisson svyprobit svyprobt svyprop svyprop_7 svyratio svyreg svyreg_p svyregress svyset svyset_7 svyset_8 svytab svytab_7 svytest svytotal sw sw_8 swcnreg swcox swereg swilk swlogis swlogit swologit swoprbt swpois swprobit swqreg swtobit swweib symmetry symmi symplot symplot_7 syntax sysdescribe sysdir sysuse szroeter ta tab tab1 tab2 tab_or tabd tabdi tabdis tabdisp tabi table tabodds tabodds_7 tabstat tabu tabul tabula tabulat tabulate te tempfile tempname tempvar tes test testnl testparm teststd tetrachoric time_it timer tis tob tobi tobit tobit_p tobit_sw token tokeni tokeniz tokenize tostring total translate translator transmap treat_ll treatr_p treatreg trim trimfill trnb_cons trnb_mean trpoiss_d2 trunc_ll truncr_p truncreg tsappend tset tsfill tsline tsline_ex tsreport tsrevar tsrline tsset tssmooth tsunab ttest ttesti tut_chk tut_wait tutorial tw tware_st two twoway twoway__fpfit_serset twoway__function_gen twoway__histogram_gen twoway__ipoint_serset twoway__ipoints_serset twoway__kdensity_gen twoway__lfit_serset twoway__normgen_gen twoway__pci_serset twoway__qfit_serset twoway__scatteri_serset twoway__sunflower_gen twoway_ksm_serset ty typ type typeof u|0 unab unabbrev unabcmd update us use uselabel var var_mkcompanion var_p varbasic varfcast vargranger varirf varirf_add varirf_cgraph varirf_create varirf_ctable varirf_describe varirf_dir varirf_drop varirf_erase varirf_graph varirf_ograph varirf_rename varirf_set varirf_table varlist varlmar varnorm varsoc varstable varstable_w varstable_w2 varwle vce vec vec_fevd vec_mkphi vec_p vec_p_w vecirf_create veclmar veclmar_w vecnorm vecnorm_w vecrank vecstable verinst vers versi versio version view viewsource vif vwls wdatetof webdescribe webseek webuse weib1_lf weib2_lf weib_lf weib_lf0 weibhet_glf weibhet_glf_sh weibhet_glfa weibhet_glfa_sh weibhet_gp weibhet_ilf weibhet_ilf_sh weibhet_ilfa weibhet_ilfa_sh weibhet_ip weibu_sw weibul_p weibull weibull_c weibull_s weibullhet wh whelp whi which whil while wilc_st wilcoxon win wind windo window winexec wntestb wntestb_7 wntestq xchart xchart_7 xcorr xcorr_7 xi xi_6 xmlsav xmlsave xmluse xpose xsh xshe xshel xshell xt_iis xt_tis xtab_p xtabond xtbin_p xtclog xtcloglog xtcloglog_8 xtcloglog_d2 xtcloglog_pa_p xtcloglog_re_p xtcnt_p xtcorr xtdata xtdes xtfront_p xtfrontier xtgee xtgee_elink xtgee_estat xtgee_makeivar xtgee_p xtgee_plink xtgls xtgls_p xthaus xthausman xtht_p xthtaylor xtile xtint_p xtintreg xtintreg_8 xtintreg_d2 xtintreg_p xtivp_1 xtivp_2 xtivreg xtline xtline_ex xtlogit xtlogit_8 xtlogit_d2 xtlogit_fe_p xtlogit_pa_p xtlogit_re_p xtmixed xtmixed_estat xtmixed_p xtnb_fe xtnb_lf xtnbreg xtnbreg_pa_p xtnbreg_refe_p xtpcse xtpcse_p xtpois xtpoisson xtpoisson_d2 xtpoisson_pa_p xtpoisson_refe_p xtpred xtprobit xtprobit_8 xtprobit_d2 xtprobit_re_p xtps_fe xtps_lf xtps_ren xtps_ren_8 xtrar_p xtrc xtrc_p xtrchh xtrefe_p xtreg xtreg_be xtreg_fe xtreg_ml xtreg_pa_p xtreg_re xtregar xtrere_p xtset xtsf_ll xtsf_llti xtsum xttab xttest0 xttobit xttobit_8 xttobit_p xttrans yx yxview__barlike_draw yxview_area_draw yxview_bar_draw yxview_dot_draw yxview_dropline_draw yxview_function_draw yxview_iarrow_draw yxview_ilabels_draw yxview_normal_draw yxview_pcarrow_draw yxview_pcbarrow_draw yxview_pccapsym_draw yxview_pcscatter_draw yxview_pcspike_draw yxview_rarea_draw yxview_rbar_draw yxview_rbarm_draw yxview_rcap_draw yxview_rcapsym_draw yxview_rconnected_draw yxview_rline_draw yxview_rscatter_draw yxview_rspike_draw yxview_spike_draw yxview_sunflower_draw zap_s zinb zinb_llf zinb_plf zip zip_llf zip_p zip_plf zt_ct_5 zt_hc_5 zt_hcd_5 zt_is_5 zt_iss_5 zt_sho_5 zt_smp_5 ztbase_5 ztcox_5 ztdes_5 ztereg_5 ztfill_5 ztgen_5 ztir_5 ztjoin_5 ztnb ztnb_p ztp ztp_p zts_5 ztset_5 ztspli_5 ztsum_5 zttoct_5 ztvary_5 ztweib_5',\n contains: [\n {\n className: 'symbol',\n begin: /`[a-zA-Z0-9_]+'/\n },\n {\n className: 'variable',\n begin: /\\$\\{?[a-zA-Z0-9_]+\\}?/\n },\n {\n className: 'string',\n variants: [\n {\n begin: '`\"[^\\r\\n]*?\"\\''\n },\n {\n begin: '\"[^\\r\\n\"]*\"'\n }\n ]\n },\n\n {\n className: 'built_in',\n variants: [\n {\n begin: '\\\\b(abs|acos|asin|atan|atan2|atanh|ceil|cloglog|comb|cos|digamma|exp|floor|invcloglog|invlogit|ln|lnfact|lnfactorial|lngamma|log|log10|max|min|mod|reldif|round|sign|sin|sqrt|sum|tan|tanh|trigamma|trunc|betaden|Binomial|binorm|binormal|chi2|chi2tail|dgammapda|dgammapdada|dgammapdadx|dgammapdx|dgammapdxdx|F|Fden|Ftail|gammaden|gammap|ibeta|invbinomial|invchi2|invchi2tail|invF|invFtail|invgammap|invibeta|invnchi2|invnFtail|invnibeta|invnorm|invnormal|invttail|nbetaden|nchi2|nFden|nFtail|nibeta|norm|normal|normalden|normd|npnchi2|tden|ttail|uniform|abbrev|char|index|indexnot|length|lower|ltrim|match|plural|proper|real|regexm|regexr|regexs|reverse|rtrim|string|strlen|strlower|strltrim|strmatch|strofreal|strpos|strproper|strreverse|strrtrim|strtrim|strupper|subinstr|subinword|substr|trim|upper|word|wordcount|_caller|autocode|byteorder|chop|clip|cond|e|epsdouble|epsfloat|group|inlist|inrange|irecode|matrix|maxbyte|maxdouble|maxfloat|maxint|maxlong|mi|minbyte|mindouble|minfloat|minint|minlong|missing|r|recode|replay|return|s|scalar|d|date|day|dow|doy|halfyear|mdy|month|quarter|week|year|d|daily|dofd|dofh|dofm|dofq|dofw|dofy|h|halfyearly|hofd|m|mofd|monthly|q|qofd|quarterly|tin|twithin|w|weekly|wofd|y|yearly|yh|ym|yofd|yq|yw|cholesky|colnumb|colsof|corr|det|diag|diag0cnt|el|get|hadamard|I|inv|invsym|issym|issymmetric|J|matmissing|matuniform|mreldif|nullmat|rownumb|rowsof|sweep|syminv|trace|vec|vecdiag)(?=\\\\()'\n }\n ]\n },\n\n hljs.COMMENT('^[ \\t]*\\\\*.*$', false),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n}\n\nmodule.exports = stata;\n","/*\nLanguage: STEP Part 21\nContributors: Adam Joseph Cook <adam.joseph.cook@gmail.com>\nDescription: Syntax highlighter for STEP Part 21 files (ISO 10303-21).\nWebsite: https://en.wikipedia.org/wiki/ISO_10303-21\n*/\n\nfunction step21(hljs) {\n const STEP21_IDENT_RE = '[A-Z_][A-Z0-9_.]*';\n const STEP21_KEYWORDS = {\n $pattern: STEP21_IDENT_RE,\n keyword: 'HEADER ENDSEC DATA'\n };\n const STEP21_START = {\n className: 'meta',\n begin: 'ISO-10303-21;',\n relevance: 10\n };\n const STEP21_CLOSE = {\n className: 'meta',\n begin: 'END-ISO-10303-21;',\n relevance: 10\n };\n\n return {\n name: 'STEP Part 21',\n aliases: [\n 'p21',\n 'step',\n 'stp'\n ],\n case_insensitive: true, // STEP 21 is case insensitive in theory, in practice all non-comments are capitalized.\n keywords: STEP21_KEYWORDS,\n contains: [\n STEP21_START,\n STEP21_CLOSE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.COMMENT('/\\\\*\\\\*!', '\\\\*/'),\n hljs.C_NUMBER_MODE,\n hljs.inherit(hljs.APOS_STRING_MODE, {\n illegal: null\n }),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {\n illegal: null\n }),\n {\n className: 'string',\n begin: \"'\",\n end: \"'\"\n },\n {\n className: 'symbol',\n variants: [\n {\n begin: '#',\n end: '\\\\d+',\n illegal: '\\\\W'\n }\n ]\n }\n ]\n };\n}\n\nmodule.exports = step21;\n","const MODES = (hljs) => {\n return {\n IMPORTANT: {\n className: 'meta',\n begin: '!important'\n },\n HEXCOLOR: {\n className: 'number',\n begin: '#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})'\n },\n ATTRIBUTE_SELECTOR_MODE: {\n className: 'selector-attr',\n begin: /\\[/,\n end: /\\]/,\n illegal: '$',\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n }\n };\n};\n\nconst TAGS = [\n 'a',\n 'abbr',\n 'address',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'blockquote',\n 'body',\n 'button',\n 'canvas',\n 'caption',\n 'cite',\n 'code',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'header',\n 'hgroup',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'mark',\n 'menu',\n 'nav',\n 'object',\n 'ol',\n 'p',\n 'q',\n 'quote',\n 'samp',\n 'section',\n 'span',\n 'strong',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'ul',\n 'var',\n 'video'\n];\n\nconst MEDIA_FEATURES = [\n 'any-hover',\n 'any-pointer',\n 'aspect-ratio',\n 'color',\n 'color-gamut',\n 'color-index',\n 'device-aspect-ratio',\n 'device-height',\n 'device-width',\n 'display-mode',\n 'forced-colors',\n 'grid',\n 'height',\n 'hover',\n 'inverted-colors',\n 'monochrome',\n 'orientation',\n 'overflow-block',\n 'overflow-inline',\n 'pointer',\n 'prefers-color-scheme',\n 'prefers-contrast',\n 'prefers-reduced-motion',\n 'prefers-reduced-transparency',\n 'resolution',\n 'scan',\n 'scripting',\n 'update',\n 'width',\n // TODO: find a better solution?\n 'min-width',\n 'max-width',\n 'min-height',\n 'max-height'\n];\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes\nconst PSEUDO_CLASSES = [\n 'active',\n 'any-link',\n 'blank',\n 'checked',\n 'current',\n 'default',\n 'defined',\n 'dir', // dir()\n 'disabled',\n 'drop',\n 'empty',\n 'enabled',\n 'first',\n 'first-child',\n 'first-of-type',\n 'fullscreen',\n 'future',\n 'focus',\n 'focus-visible',\n 'focus-within',\n 'has', // has()\n 'host', // host or host()\n 'host-context', // host-context()\n 'hover',\n 'indeterminate',\n 'in-range',\n 'invalid',\n 'is', // is()\n 'lang', // lang()\n 'last-child',\n 'last-of-type',\n 'left',\n 'link',\n 'local-link',\n 'not', // not()\n 'nth-child', // nth-child()\n 'nth-col', // nth-col()\n 'nth-last-child', // nth-last-child()\n 'nth-last-col', // nth-last-col()\n 'nth-last-of-type', //nth-last-of-type()\n 'nth-of-type', //nth-of-type()\n 'only-child',\n 'only-of-type',\n 'optional',\n 'out-of-range',\n 'past',\n 'placeholder-shown',\n 'read-only',\n 'read-write',\n 'required',\n 'right',\n 'root',\n 'scope',\n 'target',\n 'target-within',\n 'user-invalid',\n 'valid',\n 'visited',\n 'where' // where()\n];\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements\nconst PSEUDO_ELEMENTS = [\n 'after',\n 'backdrop',\n 'before',\n 'cue',\n 'cue-region',\n 'first-letter',\n 'first-line',\n 'grammar-error',\n 'marker',\n 'part',\n 'placeholder',\n 'selection',\n 'slotted',\n 'spelling-error'\n];\n\nconst ATTRIBUTES = [\n 'align-content',\n 'align-items',\n 'align-self',\n 'animation',\n 'animation-delay',\n 'animation-direction',\n 'animation-duration',\n 'animation-fill-mode',\n 'animation-iteration-count',\n 'animation-name',\n 'animation-play-state',\n 'animation-timing-function',\n 'auto',\n 'backface-visibility',\n 'background',\n 'background-attachment',\n 'background-clip',\n 'background-color',\n 'background-image',\n 'background-origin',\n 'background-position',\n 'background-repeat',\n 'background-size',\n 'border',\n 'border-bottom',\n 'border-bottom-color',\n 'border-bottom-left-radius',\n 'border-bottom-right-radius',\n 'border-bottom-style',\n 'border-bottom-width',\n 'border-collapse',\n 'border-color',\n 'border-image',\n 'border-image-outset',\n 'border-image-repeat',\n 'border-image-slice',\n 'border-image-source',\n 'border-image-width',\n 'border-left',\n 'border-left-color',\n 'border-left-style',\n 'border-left-width',\n 'border-radius',\n 'border-right',\n 'border-right-color',\n 'border-right-style',\n 'border-right-width',\n 'border-spacing',\n 'border-style',\n 'border-top',\n 'border-top-color',\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-top-style',\n 'border-top-width',\n 'border-width',\n 'bottom',\n 'box-decoration-break',\n 'box-shadow',\n 'box-sizing',\n 'break-after',\n 'break-before',\n 'break-inside',\n 'caption-side',\n 'clear',\n 'clip',\n 'clip-path',\n 'color',\n 'column-count',\n 'column-fill',\n 'column-gap',\n 'column-rule',\n 'column-rule-color',\n 'column-rule-style',\n 'column-rule-width',\n 'column-span',\n 'column-width',\n 'columns',\n 'content',\n 'counter-increment',\n 'counter-reset',\n 'cursor',\n 'direction',\n 'display',\n 'empty-cells',\n 'filter',\n 'flex',\n 'flex-basis',\n 'flex-direction',\n 'flex-flow',\n 'flex-grow',\n 'flex-shrink',\n 'flex-wrap',\n 'float',\n 'font',\n 'font-display',\n 'font-family',\n 'font-feature-settings',\n 'font-kerning',\n 'font-language-override',\n 'font-size',\n 'font-size-adjust',\n 'font-smoothing',\n 'font-stretch',\n 'font-style',\n 'font-variant',\n 'font-variant-ligatures',\n 'font-variation-settings',\n 'font-weight',\n 'height',\n 'hyphens',\n 'icon',\n 'image-orientation',\n 'image-rendering',\n 'image-resolution',\n 'ime-mode',\n 'inherit',\n 'initial',\n 'justify-content',\n 'left',\n 'letter-spacing',\n 'line-height',\n 'list-style',\n 'list-style-image',\n 'list-style-position',\n 'list-style-type',\n 'margin',\n 'margin-bottom',\n 'margin-left',\n 'margin-right',\n 'margin-top',\n 'marks',\n 'mask',\n 'max-height',\n 'max-width',\n 'min-height',\n 'min-width',\n 'nav-down',\n 'nav-index',\n 'nav-left',\n 'nav-right',\n 'nav-up',\n 'none',\n 'normal',\n 'object-fit',\n 'object-position',\n 'opacity',\n 'order',\n 'orphans',\n 'outline',\n 'outline-color',\n 'outline-offset',\n 'outline-style',\n 'outline-width',\n 'overflow',\n 'overflow-wrap',\n 'overflow-x',\n 'overflow-y',\n 'padding',\n 'padding-bottom',\n 'padding-left',\n 'padding-right',\n 'padding-top',\n 'page-break-after',\n 'page-break-before',\n 'page-break-inside',\n 'perspective',\n 'perspective-origin',\n 'pointer-events',\n 'position',\n 'quotes',\n 'resize',\n 'right',\n 'src', // @font-face\n 'tab-size',\n 'table-layout',\n 'text-align',\n 'text-align-last',\n 'text-decoration',\n 'text-decoration-color',\n 'text-decoration-line',\n 'text-decoration-style',\n 'text-indent',\n 'text-overflow',\n 'text-rendering',\n 'text-shadow',\n 'text-transform',\n 'text-underline-position',\n 'top',\n 'transform',\n 'transform-origin',\n 'transform-style',\n 'transition',\n 'transition-delay',\n 'transition-duration',\n 'transition-property',\n 'transition-timing-function',\n 'unicode-bidi',\n 'vertical-align',\n 'visibility',\n 'white-space',\n 'widows',\n 'width',\n 'word-break',\n 'word-spacing',\n 'word-wrap',\n 'z-index'\n // reverse makes sure longer attributes `font-weight` are matched fully\n // instead of getting false positives on say `font`\n].reverse();\n\n/*\nLanguage: Stylus\nAuthor: Bryant Williams <b.n.williams@gmail.com>\nDescription: Stylus is an expressive, robust, feature-rich CSS language built for nodejs.\nWebsite: https://github.com/stylus/stylus\nCategory: css\n*/\n\n/** @type LanguageFn */\nfunction stylus(hljs) {\n const modes = MODES(hljs);\n\n const AT_MODIFIERS = \"and or not only\";\n const VARIABLE = {\n className: 'variable',\n begin: '\\\\$' + hljs.IDENT_RE\n };\n\n const AT_KEYWORDS = [\n 'charset',\n 'css',\n 'debug',\n 'extend',\n 'font-face',\n 'for',\n 'import',\n 'include',\n 'keyframes',\n 'media',\n 'mixin',\n 'page',\n 'warn',\n 'while'\n ];\n\n const LOOKAHEAD_TAG_END = '(?=[.\\\\s\\\\n[:,(])';\n\n // illegals\n const ILLEGAL = [\n '\\\\?',\n '(\\\\bReturn\\\\b)', // monkey\n '(\\\\bEnd\\\\b)', // monkey\n '(\\\\bend\\\\b)', // vbscript\n '(\\\\bdef\\\\b)', // gradle\n ';', // a whole lot of languages\n '#\\\\s', // markdown\n '\\\\*\\\\s', // markdown\n '===\\\\s', // markdown\n '\\\\|',\n '%' // prolog\n ];\n\n return {\n name: 'Stylus',\n aliases: [ 'styl' ],\n case_insensitive: false,\n keywords: 'if else for in',\n illegal: '(' + ILLEGAL.join('|') + ')',\n contains: [\n\n // strings\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n\n // comments\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n\n // hex colors\n modes.HEXCOLOR,\n\n // class tag\n {\n begin: '\\\\.[a-zA-Z][a-zA-Z0-9_-]*' + LOOKAHEAD_TAG_END,\n className: 'selector-class'\n },\n\n // id tag\n {\n begin: '#[a-zA-Z][a-zA-Z0-9_-]*' + LOOKAHEAD_TAG_END,\n className: 'selector-id'\n },\n\n // tags\n {\n begin: '\\\\b(' + TAGS.join('|') + ')' + LOOKAHEAD_TAG_END,\n className: 'selector-tag'\n },\n\n // psuedo selectors\n {\n className: 'selector-pseudo',\n begin: '&?:(' + PSEUDO_CLASSES.join('|') + ')' + LOOKAHEAD_TAG_END\n },\n {\n className: 'selector-pseudo',\n begin: '&?::(' + PSEUDO_ELEMENTS.join('|') + ')' + LOOKAHEAD_TAG_END\n },\n\n modes.ATTRIBUTE_SELECTOR_MODE,\n\n {\n className: \"keyword\",\n begin: /@media/,\n starts: {\n end: /[{;}]/,\n keywords: {\n $pattern: /[a-z-]+/,\n keyword: AT_MODIFIERS,\n attribute: MEDIA_FEATURES.join(\" \")\n },\n contains: [ hljs.CSS_NUMBER_MODE ]\n }\n },\n\n // @ keywords\n {\n className: 'keyword',\n begin: '\\@((-(o|moz|ms|webkit)-)?(' + AT_KEYWORDS.join('|') + '))\\\\b'\n },\n\n // variables\n VARIABLE,\n\n // dimension\n hljs.CSS_NUMBER_MODE,\n\n // functions\n // - only from beginning of line + whitespace\n {\n className: 'function',\n begin: '^[a-zA-Z][a-zA-Z0-9_\\-]*\\\\(.*\\\\)',\n illegal: '[\\\\n]',\n returnBegin: true,\n contains: [\n {\n className: 'title',\n begin: '\\\\b[a-zA-Z][a-zA-Z0-9_\\-]*'\n },\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n contains: [\n modes.HEXCOLOR,\n VARIABLE,\n hljs.APOS_STRING_MODE,\n hljs.CSS_NUMBER_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n }\n ]\n },\n\n // attributes\n // - only from beginning of line + whitespace\n // - must have whitespace after it\n {\n className: 'attribute',\n begin: '\\\\b(' + ATTRIBUTES.join('|') + ')\\\\b',\n starts: {\n // value container\n end: /;|$/,\n contains: [\n modes.HEXCOLOR,\n VARIABLE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.CSS_NUMBER_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n modes.IMPORTANT\n ],\n illegal: /\\./,\n relevance: 0\n }\n }\n ]\n };\n}\n\nmodule.exports = stylus;\n","/*\nLanguage: SubUnit\nAuthor: Sergey Bronnikov <sergeyb@bronevichok.ru>\nWebsite: https://pypi.org/project/python-subunit/\n*/\n\nfunction subunit(hljs) {\n const DETAILS = {\n className: 'string',\n begin: '\\\\[\\n(multipart)?',\n end: '\\\\]\\n'\n };\n const TIME = {\n className: 'string',\n begin: '\\\\d{4}-\\\\d{2}-\\\\d{2}(\\\\s+)\\\\d{2}:\\\\d{2}:\\\\d{2}\\.\\\\d+Z'\n };\n const PROGRESSVALUE = {\n className: 'string',\n begin: '(\\\\+|-)\\\\d+'\n };\n const KEYWORDS = {\n className: 'keyword',\n relevance: 10,\n variants: [\n {\n begin: '^(test|testing|success|successful|failure|error|skip|xfail|uxsuccess)(:?)\\\\s+(test)?'\n },\n {\n begin: '^progress(:?)(\\\\s+)?(pop|push)?'\n },\n {\n begin: '^tags:'\n },\n {\n begin: '^time:'\n }\n ]\n };\n return {\n name: 'SubUnit',\n case_insensitive: true,\n contains: [\n DETAILS,\n TIME,\n PROGRESSVALUE,\n KEYWORDS\n ]\n };\n}\n\nmodule.exports = subunit;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n return concat('(?=', re, ')');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] } args\n * @returns {string}\n */\nfunction either(...args) {\n const joined = '(' + args.map((x) => source(x)).join(\"|\") + \")\";\n return joined;\n}\n\nconst keywordWrapper = keyword => concat(\n /\\b/,\n keyword,\n /\\w$/.test(keyword) ? /\\b/ : /\\B/\n);\n\n// Keywords that require a leading dot.\nconst dotKeywords = [\n 'Protocol', // contextual\n 'Type' // contextual\n].map(keywordWrapper);\n\n// Keywords that may have a leading dot.\nconst optionalDotKeywords = [\n 'init',\n 'self'\n].map(keywordWrapper);\n\n// should register as keyword, not type\nconst keywordTypes = [\n 'Any',\n 'Self'\n];\n\n// Regular keywords and literals.\nconst keywords = [\n // strings below will be fed into the regular `keywords` engine while regex\n // will result in additional modes being created to scan for those keywords to\n // avoid conflicts with other rules\n 'associatedtype',\n 'async',\n 'await',\n /as\\?/, // operator\n /as!/, // operator\n 'as', // operator\n 'break',\n 'case',\n 'catch',\n 'class',\n 'continue',\n 'convenience', // contextual\n 'default',\n 'defer',\n 'deinit',\n 'didSet', // contextual\n 'do',\n 'dynamic', // contextual\n 'else',\n 'enum',\n 'extension',\n 'fallthrough',\n /fileprivate\\(set\\)/,\n 'fileprivate',\n 'final', // contextual\n 'for',\n 'func',\n 'get', // contextual\n 'guard',\n 'if',\n 'import',\n 'indirect', // contextual\n 'infix', // contextual\n /init\\?/,\n /init!/,\n 'inout',\n /internal\\(set\\)/,\n 'internal',\n 'in',\n 'is', // operator\n 'lazy', // contextual\n 'let',\n 'mutating', // contextual\n 'nonmutating', // contextual\n /open\\(set\\)/, // contextual\n 'open', // contextual\n 'operator',\n 'optional', // contextual\n 'override', // contextual\n 'postfix', // contextual\n 'precedencegroup',\n 'prefix', // contextual\n /private\\(set\\)/,\n 'private',\n 'protocol',\n /public\\(set\\)/,\n 'public',\n 'repeat',\n 'required', // contextual\n 'rethrows',\n 'return',\n 'set', // contextual\n 'some', // contextual\n 'static',\n 'struct',\n 'subscript',\n 'super',\n 'switch',\n 'throws',\n 'throw',\n /try\\?/, // operator\n /try!/, // operator\n 'try', // operator\n 'typealias',\n /unowned\\(safe\\)/, // contextual\n /unowned\\(unsafe\\)/, // contextual\n 'unowned', // contextual\n 'var',\n 'weak', // contextual\n 'where',\n 'while',\n 'willSet' // contextual\n];\n\n// NOTE: Contextual keywords are reserved only in specific contexts.\n// Ideally, these should be matched using modes to avoid false positives.\n\n// Literals.\nconst literals = [\n 'false',\n 'nil',\n 'true'\n];\n\n// Keywords used in precedence groups.\nconst precedencegroupKeywords = [\n 'assignment',\n 'associativity',\n 'higherThan',\n 'left',\n 'lowerThan',\n 'none',\n 'right'\n];\n\n// Keywords that start with a number sign (#).\n// #available is handled separately.\nconst numberSignKeywords = [\n '#colorLiteral',\n '#column',\n '#dsohandle',\n '#else',\n '#elseif',\n '#endif',\n '#error',\n '#file',\n '#fileID',\n '#fileLiteral',\n '#filePath',\n '#function',\n '#if',\n '#imageLiteral',\n '#keyPath',\n '#line',\n '#selector',\n '#sourceLocation',\n '#warn_unqualified_access',\n '#warning'\n];\n\n// Global functions in the Standard Library.\nconst builtIns = [\n 'abs',\n 'all',\n 'any',\n 'assert',\n 'assertionFailure',\n 'debugPrint',\n 'dump',\n 'fatalError',\n 'getVaList',\n 'isKnownUniquelyReferenced',\n 'max',\n 'min',\n 'numericCast',\n 'pointwiseMax',\n 'pointwiseMin',\n 'precondition',\n 'preconditionFailure',\n 'print',\n 'readLine',\n 'repeatElement',\n 'sequence',\n 'stride',\n 'swap',\n 'swift_unboxFromSwiftValueWithType',\n 'transcode',\n 'type',\n 'unsafeBitCast',\n 'unsafeDowncast',\n 'withExtendedLifetime',\n 'withUnsafeMutablePointer',\n 'withUnsafePointer',\n 'withVaList',\n 'withoutActuallyEscaping',\n 'zip'\n];\n\n// Valid first characters for operators.\nconst operatorHead = either(\n /[/=\\-+!*%<>&|^~?]/,\n /[\\u00A1-\\u00A7]/,\n /[\\u00A9\\u00AB]/,\n /[\\u00AC\\u00AE]/,\n /[\\u00B0\\u00B1]/,\n /[\\u00B6\\u00BB\\u00BF\\u00D7\\u00F7]/,\n /[\\u2016-\\u2017]/,\n /[\\u2020-\\u2027]/,\n /[\\u2030-\\u203E]/,\n /[\\u2041-\\u2053]/,\n /[\\u2055-\\u205E]/,\n /[\\u2190-\\u23FF]/,\n /[\\u2500-\\u2775]/,\n /[\\u2794-\\u2BFF]/,\n /[\\u2E00-\\u2E7F]/,\n /[\\u3001-\\u3003]/,\n /[\\u3008-\\u3020]/,\n /[\\u3030]/\n);\n\n// Valid characters for operators.\nconst operatorCharacter = either(\n operatorHead,\n /[\\u0300-\\u036F]/,\n /[\\u1DC0-\\u1DFF]/,\n /[\\u20D0-\\u20FF]/,\n /[\\uFE00-\\uFE0F]/,\n /[\\uFE20-\\uFE2F]/\n // TODO: The following characters are also allowed, but the regex isn't supported yet.\n // /[\\u{E0100}-\\u{E01EF}]/u\n);\n\n// Valid operator.\nconst operator = concat(operatorHead, operatorCharacter, '*');\n\n// Valid first characters for identifiers.\nconst identifierHead = either(\n /[a-zA-Z_]/,\n /[\\u00A8\\u00AA\\u00AD\\u00AF\\u00B2-\\u00B5\\u00B7-\\u00BA]/,\n /[\\u00BC-\\u00BE\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u00FF]/,\n /[\\u0100-\\u02FF\\u0370-\\u167F\\u1681-\\u180D\\u180F-\\u1DBF]/,\n /[\\u1E00-\\u1FFF]/,\n /[\\u200B-\\u200D\\u202A-\\u202E\\u203F-\\u2040\\u2054\\u2060-\\u206F]/,\n /[\\u2070-\\u20CF\\u2100-\\u218F\\u2460-\\u24FF\\u2776-\\u2793]/,\n /[\\u2C00-\\u2DFF\\u2E80-\\u2FFF]/,\n /[\\u3004-\\u3007\\u3021-\\u302F\\u3031-\\u303F\\u3040-\\uD7FF]/,\n /[\\uF900-\\uFD3D\\uFD40-\\uFDCF\\uFDF0-\\uFE1F\\uFE30-\\uFE44]/,\n /[\\uFE47-\\uFEFE\\uFF00-\\uFFFD]/ // Should be /[\\uFE47-\\uFFFD]/, but we have to exclude FEFF.\n // The following characters are also allowed, but the regexes aren't supported yet.\n // /[\\u{10000}-\\u{1FFFD}\\u{20000-\\u{2FFFD}\\u{30000}-\\u{3FFFD}\\u{40000}-\\u{4FFFD}]/u,\n // /[\\u{50000}-\\u{5FFFD}\\u{60000-\\u{6FFFD}\\u{70000}-\\u{7FFFD}\\u{80000}-\\u{8FFFD}]/u,\n // /[\\u{90000}-\\u{9FFFD}\\u{A0000-\\u{AFFFD}\\u{B0000}-\\u{BFFFD}\\u{C0000}-\\u{CFFFD}]/u,\n // /[\\u{D0000}-\\u{DFFFD}\\u{E0000-\\u{EFFFD}]/u\n);\n\n// Valid characters for identifiers.\nconst identifierCharacter = either(\n identifierHead,\n /\\d/,\n /[\\u0300-\\u036F\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F]/\n);\n\n// Valid identifier.\nconst identifier = concat(identifierHead, identifierCharacter, '*');\n\n// Valid type identifier.\nconst typeIdentifier = concat(/[A-Z]/, identifierCharacter, '*');\n\n// Built-in attributes, which are highlighted as keywords.\n// @available is handled separately.\nconst keywordAttributes = [\n 'autoclosure',\n concat(/convention\\(/, either('swift', 'block', 'c'), /\\)/),\n 'discardableResult',\n 'dynamicCallable',\n 'dynamicMemberLookup',\n 'escaping',\n 'frozen',\n 'GKInspectable',\n 'IBAction',\n 'IBDesignable',\n 'IBInspectable',\n 'IBOutlet',\n 'IBSegueAction',\n 'inlinable',\n 'main',\n 'nonobjc',\n 'NSApplicationMain',\n 'NSCopying',\n 'NSManaged',\n concat(/objc\\(/, identifier, /\\)/),\n 'objc',\n 'objcMembers',\n 'propertyWrapper',\n 'requires_stored_property_inits',\n 'testable',\n 'UIApplicationMain',\n 'unknown',\n 'usableFromInline'\n];\n\n// Contextual keywords used in @available and #available.\nconst availabilityKeywords = [\n 'iOS',\n 'iOSApplicationExtension',\n 'macOS',\n 'macOSApplicationExtension',\n 'macCatalyst',\n 'macCatalystApplicationExtension',\n 'watchOS',\n 'watchOSApplicationExtension',\n 'tvOS',\n 'tvOSApplicationExtension',\n 'swift'\n];\n\n/*\nLanguage: Swift\nDescription: Swift is a general-purpose programming language built using a modern approach to safety, performance, and software design patterns.\nAuthor: Steven Van Impe <steven.vanimpe@icloud.com>\nContributors: Chris Eidhof <chris@eidhof.nl>, Nate Cook <natecook@gmail.com>, Alexander Lichter <manniL@gmx.net>, Richard Gibson <gibson042@github>\nWebsite: https://swift.org\nCategory: common, system\n*/\n\n/** @type LanguageFn */\nfunction swift(hljs) {\n const WHITESPACE = {\n match: /\\s+/,\n relevance: 0\n };\n // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID411\n const BLOCK_COMMENT = hljs.COMMENT(\n '/\\\\*',\n '\\\\*/',\n {\n contains: [ 'self' ]\n }\n );\n const COMMENTS = [\n hljs.C_LINE_COMMENT_MODE,\n BLOCK_COMMENT\n ];\n\n // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID413\n // https://docs.swift.org/swift-book/ReferenceManual/zzSummaryOfTheGrammar.html\n const DOT_KEYWORD = {\n className: 'keyword',\n begin: concat(/\\./, lookahead(either(...dotKeywords, ...optionalDotKeywords))),\n end: either(...dotKeywords, ...optionalDotKeywords),\n excludeBegin: true\n };\n const KEYWORD_GUARD = {\n // Consume .keyword to prevent highlighting properties and methods as keywords.\n match: concat(/\\./, either(...keywords)),\n relevance: 0\n };\n const PLAIN_KEYWORDS = keywords\n .filter(kw => typeof kw === 'string')\n .concat([ \"_|0\" ]); // seems common, so 0 relevance\n const REGEX_KEYWORDS = keywords\n .filter(kw => typeof kw !== 'string') // find regex\n .concat(keywordTypes)\n .map(keywordWrapper);\n const KEYWORD = {\n variants: [\n {\n className: 'keyword',\n match: either(...REGEX_KEYWORDS, ...optionalDotKeywords)\n }\n ]\n };\n // find all the regular keywords\n const KEYWORDS = {\n $pattern: either(\n /\\b\\w+/, // regular keywords\n /#\\w+/ // number keywords\n ),\n keyword: PLAIN_KEYWORDS\n .concat(numberSignKeywords),\n literal: literals\n };\n const KEYWORD_MODES = [\n DOT_KEYWORD,\n KEYWORD_GUARD,\n KEYWORD\n ];\n\n // https://github.com/apple/swift/tree/main/stdlib/public/core\n const BUILT_IN_GUARD = {\n // Consume .built_in to prevent highlighting properties and methods.\n match: concat(/\\./, either(...builtIns)),\n relevance: 0\n };\n const BUILT_IN = {\n className: 'built_in',\n match: concat(/\\b/, either(...builtIns), /(?=\\()/)\n };\n const BUILT_INS = [\n BUILT_IN_GUARD,\n BUILT_IN\n ];\n\n // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID418\n const OPERATOR_GUARD = {\n // Prevent -> from being highlighting as an operator.\n match: /->/,\n relevance: 0\n };\n const OPERATOR = {\n className: 'operator',\n relevance: 0,\n variants: [\n {\n match: operator\n },\n {\n // dot-operator: only operators that start with a dot are allowed to use dots as\n // characters (..., ...<, .*, etc). So there rule here is: a dot followed by one or more\n // characters that may also include dots.\n match: `\\\\.(\\\\.|${operatorCharacter})+`\n }\n ]\n };\n const OPERATORS = [\n OPERATOR_GUARD,\n OPERATOR\n ];\n\n // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#grammar_numeric-literal\n // TODO: Update for leading `-` after lookbehind is supported everywhere\n const decimalDigits = '([0-9]_*)+';\n const hexDigits = '([0-9a-fA-F]_*)+';\n const NUMBER = {\n className: 'number',\n relevance: 0,\n variants: [\n // decimal floating-point-literal (subsumes decimal-literal)\n {\n match: `\\\\b(${decimalDigits})(\\\\.(${decimalDigits}))?` + `([eE][+-]?(${decimalDigits}))?\\\\b`\n },\n // hexadecimal floating-point-literal (subsumes hexadecimal-literal)\n {\n match: `\\\\b0x(${hexDigits})(\\\\.(${hexDigits}))?` + `([pP][+-]?(${decimalDigits}))?\\\\b`\n },\n // octal-literal\n {\n match: /\\b0o([0-7]_*)+\\b/\n },\n // binary-literal\n {\n match: /\\b0b([01]_*)+\\b/\n }\n ]\n };\n\n // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#grammar_string-literal\n const ESCAPED_CHARACTER = (rawDelimiter = \"\") => ({\n className: 'subst',\n variants: [\n {\n match: concat(/\\\\/, rawDelimiter, /[0\\\\tnr\"']/)\n },\n {\n match: concat(/\\\\/, rawDelimiter, /u\\{[0-9a-fA-F]{1,8}\\}/)\n }\n ]\n });\n const ESCAPED_NEWLINE = (rawDelimiter = \"\") => ({\n className: 'subst',\n match: concat(/\\\\/, rawDelimiter, /[\\t ]*(?:[\\r\\n]|\\r\\n)/)\n });\n const INTERPOLATION = (rawDelimiter = \"\") => ({\n className: 'subst',\n label: \"interpol\",\n begin: concat(/\\\\/, rawDelimiter, /\\(/),\n end: /\\)/\n });\n const MULTILINE_STRING = (rawDelimiter = \"\") => ({\n begin: concat(rawDelimiter, /\"\"\"/),\n end: concat(/\"\"\"/, rawDelimiter),\n contains: [\n ESCAPED_CHARACTER(rawDelimiter),\n ESCAPED_NEWLINE(rawDelimiter),\n INTERPOLATION(rawDelimiter)\n ]\n });\n const SINGLE_LINE_STRING = (rawDelimiter = \"\") => ({\n begin: concat(rawDelimiter, /\"/),\n end: concat(/\"/, rawDelimiter),\n contains: [\n ESCAPED_CHARACTER(rawDelimiter),\n INTERPOLATION(rawDelimiter)\n ]\n });\n const STRING = {\n className: 'string',\n variants: [\n MULTILINE_STRING(),\n MULTILINE_STRING(\"#\"),\n MULTILINE_STRING(\"##\"),\n MULTILINE_STRING(\"###\"),\n SINGLE_LINE_STRING(),\n SINGLE_LINE_STRING(\"#\"),\n SINGLE_LINE_STRING(\"##\"),\n SINGLE_LINE_STRING(\"###\")\n ]\n };\n\n // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID412\n const QUOTED_IDENTIFIER = {\n match: concat(/`/, identifier, /`/)\n };\n const IMPLICIT_PARAMETER = {\n className: 'variable',\n match: /\\$\\d+/\n };\n const PROPERTY_WRAPPER_PROJECTION = {\n className: 'variable',\n match: `\\\\$${identifierCharacter}+`\n };\n const IDENTIFIERS = [\n QUOTED_IDENTIFIER,\n IMPLICIT_PARAMETER,\n PROPERTY_WRAPPER_PROJECTION\n ];\n\n // https://docs.swift.org/swift-book/ReferenceManual/Attributes.html\n const AVAILABLE_ATTRIBUTE = {\n match: /(@|#)available/,\n className: \"keyword\",\n starts: {\n contains: [\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: availabilityKeywords,\n contains: [\n ...OPERATORS,\n NUMBER,\n STRING\n ]\n }\n ]\n }\n };\n const KEYWORD_ATTRIBUTE = {\n className: 'keyword',\n match: concat(/@/, either(...keywordAttributes))\n };\n const USER_DEFINED_ATTRIBUTE = {\n className: 'meta',\n match: concat(/@/, identifier)\n };\n const ATTRIBUTES = [\n AVAILABLE_ATTRIBUTE,\n KEYWORD_ATTRIBUTE,\n USER_DEFINED_ATTRIBUTE\n ];\n\n // https://docs.swift.org/swift-book/ReferenceManual/Types.html\n const TYPE = {\n match: lookahead(/\\b[A-Z]/),\n relevance: 0,\n contains: [\n { // Common Apple frameworks, for relevance boost\n className: 'type',\n match: concat(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/, identifierCharacter, '+')\n },\n { // Type identifier\n className: 'type',\n match: typeIdentifier,\n relevance: 0\n },\n { // Optional type\n match: /[?!]+/,\n relevance: 0\n },\n { // Variadic parameter\n match: /\\.\\.\\./,\n relevance: 0\n },\n { // Protocol composition\n match: concat(/\\s+&\\s+/, lookahead(typeIdentifier)),\n relevance: 0\n }\n ]\n };\n const GENERIC_ARGUMENTS = {\n begin: /</,\n end: />/,\n keywords: KEYWORDS,\n contains: [\n ...COMMENTS,\n ...KEYWORD_MODES,\n ...ATTRIBUTES,\n OPERATOR_GUARD,\n TYPE\n ]\n };\n TYPE.contains.push(GENERIC_ARGUMENTS);\n\n // https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID552\n // Prevents element names from being highlighted as keywords.\n const TUPLE_ELEMENT_NAME = {\n match: concat(identifier, /\\s*:/),\n keywords: \"_|0\",\n relevance: 0\n };\n // Matches tuples as well as the parameter list of a function type.\n const TUPLE = {\n begin: /\\(/,\n end: /\\)/,\n relevance: 0,\n keywords: KEYWORDS,\n contains: [\n 'self',\n TUPLE_ELEMENT_NAME,\n ...COMMENTS,\n ...KEYWORD_MODES,\n ...BUILT_INS,\n ...OPERATORS,\n NUMBER,\n STRING,\n ...IDENTIFIERS,\n ...ATTRIBUTES,\n TYPE\n ]\n };\n\n // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID362\n // Matches both the keyword func and the function title.\n // Grouping these lets us differentiate between the operator function <\n // and the start of the generic parameter clause (also <).\n const FUNC_PLUS_TITLE = {\n beginKeywords: 'func',\n contains: [\n {\n className: 'title',\n match: either(QUOTED_IDENTIFIER.match, identifier, operator),\n // Required to make sure the opening < of the generic parameter clause\n // isn't parsed as a second title.\n endsParent: true,\n relevance: 0\n },\n WHITESPACE\n ]\n };\n const GENERIC_PARAMETERS = {\n begin: /</,\n end: />/,\n contains: [\n ...COMMENTS,\n TYPE\n ]\n };\n const FUNCTION_PARAMETER_NAME = {\n begin: either(\n lookahead(concat(identifier, /\\s*:/)),\n lookahead(concat(identifier, /\\s+/, identifier, /\\s*:/))\n ),\n end: /:/,\n relevance: 0,\n contains: [\n {\n className: 'keyword',\n match: /\\b_\\b/\n },\n {\n className: 'params',\n match: identifier\n }\n ]\n };\n const FUNCTION_PARAMETERS = {\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n contains: [\n FUNCTION_PARAMETER_NAME,\n ...COMMENTS,\n ...KEYWORD_MODES,\n ...OPERATORS,\n NUMBER,\n STRING,\n ...ATTRIBUTES,\n TYPE,\n TUPLE\n ],\n endsParent: true,\n illegal: /[\"']/\n };\n const FUNCTION = {\n className: 'function',\n match: lookahead(/\\bfunc\\b/),\n contains: [\n FUNC_PLUS_TITLE,\n GENERIC_PARAMETERS,\n FUNCTION_PARAMETERS,\n WHITESPACE\n ],\n illegal: [\n /\\[/,\n /%/\n ]\n };\n\n // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID375\n // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID379\n const INIT_SUBSCRIPT = {\n className: 'function',\n match: /\\b(subscript|init[?!]?)\\s*(?=[<(])/,\n keywords: {\n keyword: \"subscript init init? init!\",\n $pattern: /\\w+[?!]?/\n },\n contains: [\n GENERIC_PARAMETERS,\n FUNCTION_PARAMETERS,\n WHITESPACE\n ],\n illegal: /\\[|%/\n };\n // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID380\n const OPERATOR_DECLARATION = {\n beginKeywords: 'operator',\n end: hljs.MATCH_NOTHING_RE,\n contains: [\n {\n className: 'title',\n match: operator,\n endsParent: true,\n relevance: 0\n }\n ]\n };\n\n // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID550\n const PRECEDENCEGROUP = {\n beginKeywords: 'precedencegroup',\n end: hljs.MATCH_NOTHING_RE,\n contains: [\n {\n className: 'title',\n match: typeIdentifier,\n relevance: 0\n },\n {\n begin: /{/,\n end: /}/,\n relevance: 0,\n endsParent: true,\n keywords: [\n ...precedencegroupKeywords,\n ...literals\n ],\n contains: [ TYPE ]\n }\n ]\n };\n\n // Add supported submodes to string interpolation.\n for (const variant of STRING.variants) {\n const interpolation = variant.contains.find(mode => mode.label === \"interpol\");\n // TODO: Interpolation can contain any expression, so there's room for improvement here.\n interpolation.keywords = KEYWORDS;\n const submodes = [\n ...KEYWORD_MODES,\n ...BUILT_INS,\n ...OPERATORS,\n NUMBER,\n STRING,\n ...IDENTIFIERS\n ];\n interpolation.contains = [\n ...submodes,\n {\n begin: /\\(/,\n end: /\\)/,\n contains: [\n 'self',\n ...submodes\n ]\n }\n ];\n }\n\n return {\n name: 'Swift',\n keywords: KEYWORDS,\n contains: [\n ...COMMENTS,\n FUNCTION,\n INIT_SUBSCRIPT,\n {\n className: 'class',\n beginKeywords: 'struct protocol class extension enum',\n end: '\\\\{',\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n begin: /[A-Za-z$_][\\u00C0-\\u02B80-9A-Za-z$_]*/\n }),\n ...KEYWORD_MODES\n ]\n },\n OPERATOR_DECLARATION,\n PRECEDENCEGROUP,\n {\n beginKeywords: 'import',\n end: /$/,\n contains: [ ...COMMENTS ],\n relevance: 0\n },\n ...KEYWORD_MODES,\n ...BUILT_INS,\n ...OPERATORS,\n NUMBER,\n STRING,\n ...IDENTIFIERS,\n ...ATTRIBUTES,\n TYPE,\n TUPLE\n ]\n };\n}\n\nmodule.exports = swift;\n","/*\nLanguage: Tagger Script\nAuthor: Philipp Wolfer <ph.wolfer@gmail.com>\nDescription: Syntax Highlighting for the Tagger Script as used by MusicBrainz Picard.\nWebsite: https://picard.musicbrainz.org\n */\nfunction taggerscript(hljs) {\n const COMMENT = {\n className: 'comment',\n begin: /\\$noop\\(/,\n end: /\\)/,\n contains: [ {\n begin: /\\(/,\n end: /\\)/,\n contains: [ 'self',\n {\n begin: /\\\\./\n } ]\n } ],\n relevance: 10\n };\n\n const FUNCTION = {\n className: 'keyword',\n begin: /\\$(?!noop)[a-zA-Z][_a-zA-Z0-9]*/,\n end: /\\(/,\n excludeEnd: true\n };\n\n const VARIABLE = {\n className: 'variable',\n begin: /%[_a-zA-Z0-9:]*/,\n end: '%'\n };\n\n const ESCAPE_SEQUENCE = {\n className: 'symbol',\n begin: /\\\\./\n };\n\n return {\n name: 'Tagger Script',\n contains: [\n COMMENT,\n FUNCTION,\n VARIABLE,\n ESCAPE_SEQUENCE\n ]\n };\n}\n\nmodule.exports = taggerscript;\n","/*\nLanguage: Test Anything Protocol\nDescription: TAP, the Test Anything Protocol, is a simple text-based interface between testing modules in a test harness.\nRequires: yaml.js\nAuthor: Sergey Bronnikov <sergeyb@bronevichok.ru>\nWebsite: https://testanything.org\n*/\n\nfunction tap(hljs) {\n return {\n name: 'Test Anything Protocol',\n case_insensitive: true,\n contains: [\n hljs.HASH_COMMENT_MODE,\n // version of format and total amount of testcases\n {\n className: 'meta',\n variants: [\n {\n begin: '^TAP version (\\\\d+)$'\n },\n {\n begin: '^1\\\\.\\\\.(\\\\d+)$'\n }\n ]\n },\n // YAML block\n {\n begin: /---$/,\n end: '\\\\.\\\\.\\\\.$',\n subLanguage: 'yaml',\n relevance: 0\n },\n // testcase number\n {\n className: 'number',\n begin: ' (\\\\d+) '\n },\n // testcase status and description\n {\n className: 'symbol',\n variants: [\n {\n begin: '^ok'\n },\n {\n begin: '^not ok'\n }\n ]\n }\n ]\n };\n}\n\nmodule.exports = tap;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction optional(re) {\n return concat('(', re, ')?');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/*\nLanguage: Tcl\nDescription: Tcl is a very simple programming language.\nAuthor: Radek Liska <radekliska@gmail.com>\nWebsite: https://www.tcl.tk/about/language.html\n*/\n\nfunction tcl(hljs) {\n const TCL_IDENT = /[a-zA-Z_][a-zA-Z0-9_]*/;\n\n const NUMBER = {\n className: 'number',\n variants: [hljs.BINARY_NUMBER_MODE, hljs.C_NUMBER_MODE]\n };\n\n return {\n name: 'Tcl',\n aliases: ['tk'],\n keywords: 'after append apply array auto_execok auto_import auto_load auto_mkindex ' +\n 'auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock ' +\n 'close concat continue dde dict encoding eof error eval exec exit expr fblocked ' +\n 'fconfigure fcopy file fileevent filename flush for foreach format gets glob global ' +\n 'history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list ' +\n 'llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 '+\n 'mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex '+\n 'platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename '+\n 'return safe scan seek set socket source split string subst switch tcl_endOfWord '+\n 'tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter '+\n 'tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update '+\n 'uplevel upvar variable vwait while',\n contains: [\n hljs.COMMENT(';[ \\\\t]*#', '$'),\n hljs.COMMENT('^[ \\\\t]*#', '$'),\n {\n beginKeywords: 'proc',\n end: '[\\\\{]',\n excludeEnd: true,\n contains: [\n {\n className: 'title',\n begin: '[ \\\\t\\\\n\\\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*',\n end: '[ \\\\t\\\\n\\\\r]',\n endsWithParent: true,\n excludeEnd: true\n }\n ]\n },\n {\n className: \"variable\",\n variants: [\n {\n begin: concat(\n /\\$/,\n optional(/::/),\n TCL_IDENT,\n '(::',\n TCL_IDENT,\n ')*'\n )\n },\n {\n begin: '\\\\$\\\\{(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*',\n end: '\\\\}',\n contains: [\n NUMBER\n ]\n }\n ]\n },\n {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE],\n variants: [\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null})\n ]\n },\n NUMBER\n ]\n }\n}\n\nmodule.exports = tcl;\n","/*\nLanguage: Thrift\nAuthor: Oleg Efimov <efimovov@gmail.com>\nDescription: Thrift message definition format\nWebsite: https://thrift.apache.org\nCategory: protocols\n*/\n\nfunction thrift(hljs) {\n const BUILT_IN_TYPES = 'bool byte i16 i32 i64 double string binary';\n return {\n name: 'Thrift',\n keywords: {\n keyword:\n 'namespace const typedef struct enum service exception void oneway set list map required optional',\n built_in:\n BUILT_IN_TYPES,\n literal:\n 'true false'\n },\n contains: [\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'class',\n beginKeywords: 'struct enum service exception',\n end: /\\{/,\n illegal: /\\n/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n // hack: eating everything after the first title\n starts: {\n endsWithParent: true,\n excludeEnd: true\n }\n })\n ]\n },\n {\n begin: '\\\\b(set|list|map)\\\\s*<',\n end: '>',\n keywords: BUILT_IN_TYPES,\n contains: [ 'self' ]\n }\n ]\n };\n}\n\nmodule.exports = thrift;\n","/*\nLanguage: TP\nAuthor: Jay Strybis <jay.strybis@gmail.com>\nDescription: FANUC TP programming language (TPP).\n*/\n\nfunction tp(hljs) {\n const TPID = {\n className: 'number',\n begin: '[1-9][0-9]*', /* no leading zeros */\n relevance: 0\n };\n const TPLABEL = {\n className: 'symbol',\n begin: ':[^\\\\]]+'\n };\n const TPDATA = {\n className: 'built_in',\n begin: '(AR|P|PAYLOAD|PR|R|SR|RSR|LBL|VR|UALM|MESSAGE|UTOOL|UFRAME|TIMER|' +\n 'TIMER_OVERFLOW|JOINT_MAX_SPEED|RESUME_PROG|DIAG_REC)\\\\[',\n end: '\\\\]',\n contains: [\n 'self',\n TPID,\n TPLABEL\n ]\n };\n const TPIO = {\n className: 'built_in',\n begin: '(AI|AO|DI|DO|F|RI|RO|UI|UO|GI|GO|SI|SO)\\\\[',\n end: '\\\\]',\n contains: [\n 'self',\n TPID,\n hljs.QUOTE_STRING_MODE, /* for pos section at bottom */\n TPLABEL\n ]\n };\n\n return {\n name: 'TP',\n keywords: {\n keyword:\n 'ABORT ACC ADJUST AND AP_LD BREAK CALL CNT COL CONDITION CONFIG DA DB ' +\n 'DIV DETECT ELSE END ENDFOR ERR_NUM ERROR_PROG FINE FOR GP GUARD INC ' +\n 'IF JMP LINEAR_MAX_SPEED LOCK MOD MONITOR OFFSET Offset OR OVERRIDE ' +\n 'PAUSE PREG PTH RT_LD RUN SELECT SKIP Skip TA TB TO TOOL_OFFSET ' +\n 'Tool_Offset UF UT UFRAME_NUM UTOOL_NUM UNLOCK WAIT X Y Z W P R STRLEN ' +\n 'SUBSTR FINDSTR VOFFSET PROG ATTR MN POS',\n literal:\n 'ON OFF max_speed LPOS JPOS ENABLE DISABLE START STOP RESET'\n },\n contains: [\n TPDATA,\n TPIO,\n {\n className: 'keyword',\n begin: '/(PROG|ATTR|MN|POS|END)\\\\b'\n },\n {\n /* this is for cases like ,CALL */\n className: 'keyword',\n begin: '(CALL|RUN|POINT_LOGIC|LBL)\\\\b'\n },\n {\n /* this is for cases like CNT100 where the default lexemes do not\n * separate the keyword and the number */\n className: 'keyword',\n begin: '\\\\b(ACC|CNT|Skip|Offset|PSPD|RT_LD|AP_LD|Tool_Offset)'\n },\n {\n /* to catch numbers that do not have a word boundary on the left */\n className: 'number',\n begin: '\\\\d+(sec|msec|mm/sec|cm/min|inch/min|deg/sec|mm|in|cm)?\\\\b',\n relevance: 0\n },\n hljs.COMMENT('//', '[;$]'),\n hljs.COMMENT('!', '[;$]'),\n hljs.COMMENT('--eg:', '$'),\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: '\\'',\n end: '\\''\n },\n hljs.C_NUMBER_MODE,\n {\n className: 'variable',\n begin: '\\\\$[A-Za-z0-9_]+'\n }\n ]\n };\n}\n\nmodule.exports = tp;\n","/*\nLanguage: Twig\nRequires: xml.js\nAuthor: Luke Holder <lukemh@gmail.com>\nDescription: Twig is a templating language for PHP\nWebsite: https://twig.symfony.com\nCategory: template\n*/\n\nfunction twig(hljs) {\n var PARAMS = {\n className: 'params',\n begin: '\\\\(', end: '\\\\)'\n };\n\n var FUNCTION_NAMES = 'attribute block constant cycle date dump include ' +\n 'max min parent random range source template_from_string';\n\n var FUNCTIONS = {\n beginKeywords: FUNCTION_NAMES,\n keywords: {name: FUNCTION_NAMES},\n relevance: 0,\n contains: [\n PARAMS\n ]\n };\n\n var FILTER = {\n begin: /\\|[A-Za-z_]+:?/,\n keywords:\n 'abs batch capitalize column convert_encoding date date_modify default ' +\n 'escape filter first format inky_to_html inline_css join json_encode keys last ' +\n 'length lower map markdown merge nl2br number_format raw reduce replace ' +\n 'reverse round slice sort spaceless split striptags title trim upper url_encode',\n contains: [\n FUNCTIONS\n ]\n };\n\n var TAGS = 'apply autoescape block deprecated do embed extends filter flush for from ' +\n 'if import include macro sandbox set use verbatim with';\n\n TAGS = TAGS + ' ' + TAGS.split(' ').map(function(t){return 'end' + t}).join(' ');\n\n return {\n name: 'Twig',\n aliases: ['craftcms'],\n case_insensitive: true,\n subLanguage: 'xml',\n contains: [\n hljs.COMMENT(/\\{#/, /#\\}/),\n {\n className: 'template-tag',\n begin: /\\{%/, end: /%\\}/,\n contains: [\n {\n className: 'name',\n begin: /\\w+/,\n keywords: TAGS,\n starts: {\n endsWithParent: true,\n contains: [FILTER, FUNCTIONS],\n relevance: 0\n }\n }\n ]\n },\n {\n className: 'template-variable',\n begin: /\\{\\{/, end: /\\}\\}/,\n contains: ['self', FILTER, FUNCTIONS]\n }\n ]\n };\n}\n\nmodule.exports = twig;\n","const IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\nconst KEYWORDS = [\n \"as\", // for exports\n \"in\",\n \"of\",\n \"if\",\n \"for\",\n \"while\",\n \"finally\",\n \"var\",\n \"new\",\n \"function\",\n \"do\",\n \"return\",\n \"void\",\n \"else\",\n \"break\",\n \"catch\",\n \"instanceof\",\n \"with\",\n \"throw\",\n \"case\",\n \"default\",\n \"try\",\n \"switch\",\n \"continue\",\n \"typeof\",\n \"delete\",\n \"let\",\n \"yield\",\n \"const\",\n \"class\",\n // JS handles these with a special rule\n // \"get\",\n // \"set\",\n \"debugger\",\n \"async\",\n \"await\",\n \"static\",\n \"import\",\n \"from\",\n \"export\",\n \"extends\"\n];\nconst LITERALS = [\n \"true\",\n \"false\",\n \"null\",\n \"undefined\",\n \"NaN\",\n \"Infinity\"\n];\n\nconst TYPES = [\n \"Intl\",\n \"DataView\",\n \"Number\",\n \"Math\",\n \"Date\",\n \"String\",\n \"RegExp\",\n \"Object\",\n \"Function\",\n \"Boolean\",\n \"Error\",\n \"Symbol\",\n \"Set\",\n \"Map\",\n \"WeakSet\",\n \"WeakMap\",\n \"Proxy\",\n \"Reflect\",\n \"JSON\",\n \"Promise\",\n \"Float64Array\",\n \"Int16Array\",\n \"Int32Array\",\n \"Int8Array\",\n \"Uint16Array\",\n \"Uint32Array\",\n \"Float32Array\",\n \"Array\",\n \"Uint8Array\",\n \"Uint8ClampedArray\",\n \"ArrayBuffer\",\n \"BigInt64Array\",\n \"BigUint64Array\",\n \"BigInt\"\n];\n\nconst ERROR_TYPES = [\n \"EvalError\",\n \"InternalError\",\n \"RangeError\",\n \"ReferenceError\",\n \"SyntaxError\",\n \"TypeError\",\n \"URIError\"\n];\n\nconst BUILT_IN_GLOBALS = [\n \"setInterval\",\n \"setTimeout\",\n \"clearInterval\",\n \"clearTimeout\",\n\n \"require\",\n \"exports\",\n\n \"eval\",\n \"isFinite\",\n \"isNaN\",\n \"parseFloat\",\n \"parseInt\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"escape\",\n \"unescape\"\n];\n\nconst BUILT_IN_VARIABLES = [\n \"arguments\",\n \"this\",\n \"super\",\n \"console\",\n \"window\",\n \"document\",\n \"localStorage\",\n \"module\",\n \"global\" // Node.js\n];\n\nconst BUILT_INS = [].concat(\n BUILT_IN_GLOBALS,\n BUILT_IN_VARIABLES,\n TYPES,\n ERROR_TYPES\n);\n\n/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n return concat('(?=', re, ')');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/*\nLanguage: JavaScript\nDescription: JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with first-class functions.\nCategory: common, scripting\nWebsite: https://developer.mozilla.org/en-US/docs/Web/JavaScript\n*/\n\n/** @type LanguageFn */\nfunction javascript(hljs) {\n /**\n * Takes a string like \"<Booger\" and checks to see\n * if we can find a matching \"</Booger\" later in the\n * content.\n * @param {RegExpMatchArray} match\n * @param {{after:number}} param1\n */\n const hasClosingTag = (match, { after }) => {\n const tag = \"</\" + match[0].slice(1);\n const pos = match.input.indexOf(tag, after);\n return pos !== -1;\n };\n\n const IDENT_RE$1 = IDENT_RE;\n const FRAGMENT = {\n begin: '<>',\n end: '</>'\n };\n const XML_TAG = {\n begin: /<[A-Za-z0-9\\\\._:-]+/,\n end: /\\/[A-Za-z0-9\\\\._:-]+>|\\/>/,\n /**\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\n isTrulyOpeningTag: (match, response) => {\n const afterMatchIndex = match[0].length + match.index;\n const nextChar = match.input[afterMatchIndex];\n // nested type?\n // HTML should not include another raw `<` inside a tag\n // But a type might: `<Array<Array<number>>`, etc.\n if (nextChar === \"<\") {\n response.ignoreMatch();\n return;\n }\n // <something>\n // This is now either a tag or a type.\n if (nextChar === \">\") {\n // if we cannot find a matching closing tag, then we\n // will ignore it\n if (!hasClosingTag(match, { after: afterMatchIndex })) {\n response.ignoreMatch();\n }\n }\n }\n };\n const KEYWORDS$1 = {\n $pattern: IDENT_RE,\n keyword: KEYWORDS,\n literal: LITERALS,\n built_in: BUILT_INS\n };\n\n // https://tc39.es/ecma262/#sec-literals-numeric-literals\n const decimalDigits = '[0-9](_?[0-9])*';\n const frac = `\\\\.(${decimalDigits})`;\n // DecimalIntegerLiteral, including Annex B NonOctalDecimalIntegerLiteral\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n const decimalInteger = `0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`;\n const NUMBER = {\n className: 'number',\n variants: [\n // DecimalLiteral\n { begin: `(\\\\b(${decimalInteger})((${frac})|\\\\.)?|(${frac}))` +\n `[eE][+-]?(${decimalDigits})\\\\b` },\n { begin: `\\\\b(${decimalInteger})\\\\b((${frac})\\\\b|\\\\.)?|(${frac})\\\\b` },\n\n // DecimalBigIntegerLiteral\n { begin: `\\\\b(0|[1-9](_?[0-9])*)n\\\\b` },\n\n // NonDecimalIntegerLiteral\n { begin: \"\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\\\b\" },\n { begin: \"\\\\b0[bB][0-1](_?[0-1])*n?\\\\b\" },\n { begin: \"\\\\b0[oO][0-7](_?[0-7])*n?\\\\b\" },\n\n // LegacyOctalIntegerLiteral (does not include underscore separators)\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n { begin: \"\\\\b0[0-7]+n?\\\\b\" },\n ],\n relevance: 0\n };\n\n const SUBST = {\n className: 'subst',\n begin: '\\\\$\\\\{',\n end: '\\\\}',\n keywords: KEYWORDS$1,\n contains: [] // defined later\n };\n const HTML_TEMPLATE = {\n begin: 'html`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'xml'\n }\n };\n const CSS_TEMPLATE = {\n begin: 'css`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'css'\n }\n };\n const TEMPLATE_STRING = {\n className: 'string',\n begin: '`',\n end: '`',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n };\n const JSDOC_COMMENT = hljs.COMMENT(\n /\\/\\*\\*(?!\\/)/,\n '\\\\*/',\n {\n relevance: 0,\n contains: [\n {\n className: 'doctag',\n begin: '@[A-Za-z]+',\n contains: [\n {\n className: 'type',\n begin: '\\\\{',\n end: '\\\\}',\n relevance: 0\n },\n {\n className: 'variable',\n begin: IDENT_RE$1 + '(?=\\\\s*(-)|$)',\n endsParent: true,\n relevance: 0\n },\n // eat spaces (not newlines) so we can find\n // types or variables\n {\n begin: /(?=[^\\n])\\s/,\n relevance: 0\n }\n ]\n }\n ]\n }\n );\n const COMMENT = {\n className: \"comment\",\n variants: [\n JSDOC_COMMENT,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE\n ]\n };\n const SUBST_INTERNALS = [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n TEMPLATE_STRING,\n NUMBER,\n hljs.REGEXP_MODE\n ];\n SUBST.contains = SUBST_INTERNALS\n .concat({\n // we need to pair up {} inside our subst to prevent\n // it from ending too early by matching another }\n begin: /\\{/,\n end: /\\}/,\n keywords: KEYWORDS$1,\n contains: [\n \"self\"\n ].concat(SUBST_INTERNALS)\n });\n const SUBST_AND_COMMENTS = [].concat(COMMENT, SUBST.contains);\n const PARAMS_CONTAINS = SUBST_AND_COMMENTS.concat([\n // eat recursive parens in sub expressions\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS$1,\n contains: [\"self\"].concat(SUBST_AND_COMMENTS)\n }\n ]);\n const PARAMS = {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n };\n\n return {\n name: 'Javascript',\n aliases: ['js', 'jsx', 'mjs', 'cjs'],\n keywords: KEYWORDS$1,\n // this will be extended by TypeScript\n exports: { PARAMS_CONTAINS },\n illegal: /#(?![$_A-z])/,\n contains: [\n hljs.SHEBANG({\n label: \"shebang\",\n binary: \"node\",\n relevance: 5\n }),\n {\n label: \"use_strict\",\n className: 'meta',\n relevance: 10,\n begin: /^\\s*['\"]use (strict|asm)['\"]/\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n TEMPLATE_STRING,\n COMMENT,\n NUMBER,\n { // object attr container\n begin: concat(/[{,\\n]\\s*/,\n // we need to look ahead to make sure that we actually have an\n // attribute coming up so we don't steal a comma from a potential\n // \"value\" container\n //\n // NOTE: this might not work how you think. We don't actually always\n // enter this mode and stay. Instead it might merely match `,\n // <comments up next>` and then immediately end after the , because it\n // fails to find any actual attrs. But this still does the job because\n // it prevents the value contain rule from grabbing this instead and\n // prevening this rule from firing when we actually DO have keys.\n lookahead(concat(\n // we also need to allow for multiple possible comments inbetween\n // the first key:value pairing\n /(((\\/\\/.*$)|(\\/\\*(\\*[^/]|[^*])*\\*\\/))\\s*)*/,\n IDENT_RE$1 + '\\\\s*:'))),\n relevance: 0,\n contains: [\n {\n className: 'attr',\n begin: IDENT_RE$1 + lookahead('\\\\s*:'),\n relevance: 0\n }\n ]\n },\n { // \"value\" container\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n keywords: 'return throw case',\n contains: [\n COMMENT,\n hljs.REGEXP_MODE,\n {\n className: 'function',\n // we have to count the parens to make sure we actually have the\n // correct bounding ( ) before the =>. There could be any number of\n // sub-expressions inside also surrounded by parens.\n begin: '(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*' +\n '\\\\)[^()]*)*' +\n '\\\\)[^()]*)*' +\n '\\\\)|' + hljs.UNDERSCORE_IDENT_RE + ')\\\\s*=>',\n returnBegin: true,\n end: '\\\\s*=>',\n contains: [\n {\n className: 'params',\n variants: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n },\n {\n className: null,\n begin: /\\(\\s*\\)/,\n skip: true\n },\n {\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n }\n ]\n }\n ]\n },\n { // could be a comma delimited list of params to a function call\n begin: /,/, relevance: 0\n },\n {\n className: '',\n begin: /\\s/,\n end: /\\s*/,\n skip: true\n },\n { // JSX\n variants: [\n { begin: FRAGMENT.begin, end: FRAGMENT.end },\n {\n begin: XML_TAG.begin,\n // we carefully check the opening tag to see if it truly\n // is a tag and not a false positive\n 'on:begin': XML_TAG.isTrulyOpeningTag,\n end: XML_TAG.end\n }\n ],\n subLanguage: 'xml',\n contains: [\n {\n begin: XML_TAG.begin,\n end: XML_TAG.end,\n skip: true,\n contains: ['self']\n }\n ]\n }\n ],\n relevance: 0\n },\n {\n className: 'function',\n beginKeywords: 'function',\n end: /[{;]/,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: [\n 'self',\n hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1 }),\n PARAMS\n ],\n illegal: /%/\n },\n {\n // prevent this from getting swallowed up by function\n // since they appear \"function like\"\n beginKeywords: \"while if switch catch for\"\n },\n {\n className: 'function',\n // we have to count the parens to make sure we actually have the correct\n // bounding ( ). There could be any number of sub-expressions inside\n // also surrounded by parens.\n begin: hljs.UNDERSCORE_IDENT_RE +\n '\\\\(' + // first parens\n '[^()]*(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*' +\n '\\\\)[^()]*)*' +\n '\\\\)[^()]*)*' +\n '\\\\)\\\\s*\\\\{', // end parens\n returnBegin:true,\n contains: [\n PARAMS,\n hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1 }),\n ]\n },\n // hack: prevents detection of keywords in some circumstances\n // .keyword()\n // $keyword = x\n {\n variants: [\n { begin: '\\\\.' + IDENT_RE$1 },\n { begin: '\\\\$' + IDENT_RE$1 }\n ],\n relevance: 0\n },\n { // ES6 class\n className: 'class',\n beginKeywords: 'class',\n end: /[{;=]/,\n excludeEnd: true,\n illegal: /[:\"[\\]]/,\n contains: [\n { beginKeywords: 'extends' },\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n begin: /\\b(?=constructor)/,\n end: /[{;]/,\n excludeEnd: true,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1 }),\n 'self',\n PARAMS\n ]\n },\n {\n begin: '(get|set)\\\\s+(?=' + IDENT_RE$1 + '\\\\()',\n end: /\\{/,\n keywords: \"get set\",\n contains: [\n hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1 }),\n { begin: /\\(\\)/ }, // eat to avoid empty params\n PARAMS\n ]\n },\n {\n begin: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\n }\n ]\n };\n}\n\n/*\nLanguage: TypeScript\nAuthor: Panu Horsmalahti <panu.horsmalahti@iki.fi>\nContributors: Ike Ku <dempfi@yahoo.com>\nDescription: TypeScript is a strict superset of JavaScript\nWebsite: https://www.typescriptlang.org\nCategory: common, scripting\n*/\n\n/** @type LanguageFn */\nfunction typescript(hljs) {\n const IDENT_RE$1 = IDENT_RE;\n const NAMESPACE = {\n beginKeywords: 'namespace', end: /\\{/, excludeEnd: true\n };\n const INTERFACE = {\n beginKeywords: 'interface', end: /\\{/, excludeEnd: true,\n keywords: 'interface extends'\n };\n const USE_STRICT = {\n className: 'meta',\n relevance: 10,\n begin: /^\\s*['\"]use strict['\"]/\n };\n const TYPES = [\n \"any\",\n \"void\",\n \"number\",\n \"boolean\",\n \"string\",\n \"object\",\n \"never\",\n \"enum\"\n ];\n const TS_SPECIFIC_KEYWORDS = [\n \"type\",\n \"namespace\",\n \"typedef\",\n \"interface\",\n \"public\",\n \"private\",\n \"protected\",\n \"implements\",\n \"declare\",\n \"abstract\",\n \"readonly\"\n ];\n const KEYWORDS$1 = {\n $pattern: IDENT_RE,\n keyword: KEYWORDS.concat(TS_SPECIFIC_KEYWORDS),\n literal: LITERALS,\n built_in: BUILT_INS.concat(TYPES)\n };\n const DECORATOR = {\n className: 'meta',\n begin: '@' + IDENT_RE$1,\n };\n\n const swapMode = (mode, label, replacement) => {\n const indx = mode.contains.findIndex(m => m.label === label);\n if (indx === -1) { throw new Error(\"can not find mode to replace\"); }\n mode.contains.splice(indx, 1, replacement);\n };\n\n const tsLanguage = javascript(hljs);\n\n // this should update anywhere keywords is used since\n // it will be the same actual JS object\n Object.assign(tsLanguage.keywords, KEYWORDS$1);\n\n tsLanguage.exports.PARAMS_CONTAINS.push(DECORATOR);\n tsLanguage.contains = tsLanguage.contains.concat([\n DECORATOR,\n NAMESPACE,\n INTERFACE,\n ]);\n\n // TS gets a simpler shebang rule than JS\n swapMode(tsLanguage, \"shebang\", hljs.SHEBANG());\n // JS use strict rule purposely excludes `asm` which makes no sense\n swapMode(tsLanguage, \"use_strict\", USE_STRICT);\n\n const functionDeclaration = tsLanguage.contains.find(m => m.className === \"function\");\n functionDeclaration.relevance = 0; // () => {} is more typical in TypeScript\n\n Object.assign(tsLanguage, {\n name: 'TypeScript',\n aliases: ['ts', 'tsx']\n });\n\n return tsLanguage;\n}\n\nmodule.exports = typescript;\n","/*\nLanguage: Vala\nAuthor: Antono Vasiljev <antono.vasiljev@gmail.com>\nDescription: Vala is a new programming language that aims to bring modern programming language features to GNOME developers without imposing any additional runtime requirements and without using a different ABI compared to applications and libraries written in C.\nWebsite: https://wiki.gnome.org/Projects/Vala\n*/\n\nfunction vala(hljs) {\n return {\n name: 'Vala',\n keywords: {\n keyword:\n // Value types\n 'char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 ' +\n 'uint16 uint32 uint64 float double bool struct enum string void ' +\n // Reference types\n 'weak unowned owned ' +\n // Modifiers\n 'async signal static abstract interface override virtual delegate ' +\n // Control Structures\n 'if while do for foreach else switch case break default return try catch ' +\n // Visibility\n 'public private protected internal ' +\n // Other\n 'using new this get set const stdout stdin stderr var',\n built_in:\n 'DBus GLib CCode Gee Object Gtk Posix',\n literal:\n 'false true null'\n },\n contains: [\n {\n className: 'class',\n beginKeywords: 'class interface namespace',\n end: /\\{/,\n excludeEnd: true,\n illegal: '[^,:\\\\n\\\\s\\\\.]',\n contains: [ hljs.UNDERSCORE_TITLE_MODE ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'string',\n begin: '\"\"\"',\n end: '\"\"\"',\n relevance: 5\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'meta',\n begin: '^#',\n end: '$',\n relevance: 2\n }\n ]\n };\n}\n\nmodule.exports = vala;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] } args\n * @returns {string}\n */\nfunction either(...args) {\n const joined = '(' + args.map((x) => source(x)).join(\"|\") + \")\";\n return joined;\n}\n\n/*\nLanguage: Visual Basic .NET\nDescription: Visual Basic .NET (VB.NET) is a multi-paradigm, object-oriented programming language, implemented on the .NET Framework.\nAuthors: Poren Chiang <ren.chiang@gmail.com>, Jan Pilzer\nWebsite: https://docs.microsoft.com/dotnet/visual-basic/getting-started\nCategory: common\n*/\n\n/** @type LanguageFn */\nfunction vbnet(hljs) {\n /**\n * Character Literal\n * Either a single character (\"a\"C) or an escaped double quote (\"\"\"\"C).\n */\n const CHARACTER = {\n className: 'string',\n begin: /\"(\"\"|[^/n])\"C\\b/\n };\n\n const STRING = {\n className: 'string',\n begin: /\"/,\n end: /\"/,\n illegal: /\\n/,\n contains: [\n {\n // double quote escape\n begin: /\"\"/\n }\n ]\n };\n\n /** Date Literals consist of a date, a time, or both separated by whitespace, surrounded by # */\n const MM_DD_YYYY = /\\d{1,2}\\/\\d{1,2}\\/\\d{4}/;\n const YYYY_MM_DD = /\\d{4}-\\d{1,2}-\\d{1,2}/;\n const TIME_12H = /(\\d|1[012])(:\\d+){0,2} *(AM|PM)/;\n const TIME_24H = /\\d{1,2}(:\\d{1,2}){1,2}/;\n const DATE = {\n className: 'literal',\n variants: [\n {\n // #YYYY-MM-DD# (ISO-Date) or #M/D/YYYY# (US-Date)\n begin: concat(/# */, either(YYYY_MM_DD, MM_DD_YYYY), / *#/)\n },\n {\n // #H:mm[:ss]# (24h Time)\n begin: concat(/# */, TIME_24H, / *#/)\n },\n {\n // #h[:mm[:ss]] A# (12h Time)\n begin: concat(/# */, TIME_12H, / *#/)\n },\n {\n // date plus time\n begin: concat(\n /# */,\n either(YYYY_MM_DD, MM_DD_YYYY),\n / +/,\n either(TIME_12H, TIME_24H),\n / *#/\n )\n }\n ]\n };\n\n const NUMBER = {\n className: 'number',\n relevance: 0,\n variants: [\n {\n // Float\n begin: /\\b\\d[\\d_]*((\\.[\\d_]+(E[+-]?[\\d_]+)?)|(E[+-]?[\\d_]+))[RFD@!#]?/\n },\n {\n // Integer (base 10)\n begin: /\\b\\d[\\d_]*((U?[SIL])|[%&])?/\n },\n {\n // Integer (base 16)\n begin: /&H[\\dA-F_]+((U?[SIL])|[%&])?/\n },\n {\n // Integer (base 8)\n begin: /&O[0-7_]+((U?[SIL])|[%&])?/\n },\n {\n // Integer (base 2)\n begin: /&B[01_]+((U?[SIL])|[%&])?/\n }\n ]\n };\n\n const LABEL = {\n className: 'label',\n begin: /^\\w+:/\n };\n\n const DOC_COMMENT = hljs.COMMENT(/'''/, /$/, {\n contains: [\n {\n className: 'doctag',\n begin: /<\\/?/,\n end: />/\n }\n ]\n });\n\n const COMMENT = hljs.COMMENT(null, /$/, {\n variants: [\n {\n begin: /'/\n },\n {\n // TODO: Use `beforeMatch:` for leading spaces\n begin: /([\\t ]|^)REM(?=\\s)/\n }\n ]\n });\n\n const DIRECTIVES = {\n className: 'meta',\n // TODO: Use `beforeMatch:` for indentation once available\n begin: /[\\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\\b/,\n end: /$/,\n keywords: {\n 'meta-keyword':\n 'const disable else elseif enable end externalsource if region then'\n },\n contains: [ COMMENT ]\n };\n\n return {\n name: 'Visual Basic .NET',\n aliases: [ 'vb' ],\n case_insensitive: true,\n classNameAliases: {\n label: 'symbol'\n },\n keywords: {\n keyword:\n 'addhandler alias aggregate ansi as async assembly auto binary by byref byval ' + /* a-b */\n 'call case catch class compare const continue custom declare default delegate dim distinct do ' + /* c-d */\n 'each equals else elseif end enum erase error event exit explicit finally for friend from function ' + /* e-f */\n 'get global goto group handles if implements imports in inherits interface into iterator ' + /* g-i */\n 'join key let lib loop me mid module mustinherit mustoverride mybase myclass ' + /* j-m */\n 'namespace narrowing new next notinheritable notoverridable ' + /* n */\n 'of off on operator option optional order overloads overridable overrides ' + /* o */\n 'paramarray partial preserve private property protected public ' + /* p */\n 'raiseevent readonly redim removehandler resume return ' + /* r */\n 'select set shadows shared skip static step stop structure strict sub synclock ' + /* s */\n 'take text then throw to try unicode until using when where while widening with withevents writeonly yield' /* t-y */,\n built_in:\n // Operators https://docs.microsoft.com/dotnet/visual-basic/language-reference/operators\n 'addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor ' +\n // Type Conversion Functions https://docs.microsoft.com/dotnet/visual-basic/language-reference/functions/type-conversion-functions\n 'cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort',\n type:\n // Data types https://docs.microsoft.com/dotnet/visual-basic/language-reference/data-types\n 'boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort',\n literal: 'true false nothing'\n },\n illegal:\n '//|\\\\{|\\\\}|endif|gosub|variant|wend|^\\\\$ ' /* reserved deprecated keywords */,\n contains: [\n CHARACTER,\n STRING,\n DATE,\n NUMBER,\n LABEL,\n DOC_COMMENT,\n COMMENT,\n DIRECTIVES\n ]\n };\n}\n\nmodule.exports = vbnet;\n","/*\nLanguage: VBScript in HTML\nRequires: xml.js, vbscript.js\nAuthor: Ivan Sagalaev <maniac@softwaremaniacs.org>\nDescription: \"Bridge\" language defining fragments of VBScript in HTML within <% .. %>\nWebsite: https://en.wikipedia.org/wiki/VBScript\nCategory: scripting\n*/\n\nfunction vbscriptHtml(hljs) {\n return {\n name: 'VBScript in HTML',\n subLanguage: 'xml',\n contains: [\n {\n begin: '<%',\n end: '%>',\n subLanguage: 'vbscript'\n }\n ]\n };\n}\n\nmodule.exports = vbscriptHtml;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] } args\n * @returns {string}\n */\nfunction either(...args) {\n const joined = '(' + args.map((x) => source(x)).join(\"|\") + \")\";\n return joined;\n}\n\n/*\nLanguage: VBScript\nDescription: VBScript (\"Microsoft Visual Basic Scripting Edition\") is an Active Scripting language developed by Microsoft that is modeled on Visual Basic.\nAuthor: Nikita Ledyaev <lenikita@yandex.ru>\nContributors: Michal Gabrukiewicz <mgabru@gmail.com>\nWebsite: https://en.wikipedia.org/wiki/VBScript\nCategory: scripting\n*/\n\n/** @type LanguageFn */\nfunction vbscript(hljs) {\n const BUILT_IN_FUNCTIONS = ('lcase month vartype instrrev ubound setlocale getobject rgb getref string ' +\n 'weekdayname rnd dateadd monthname now day minute isarray cbool round formatcurrency ' +\n 'conversions csng timevalue second year space abs clng timeserial fixs len asc ' +\n 'isempty maths dateserial atn timer isobject filter weekday datevalue ccur isdate ' +\n 'instr datediff formatdatetime replace isnull right sgn array snumeric log cdbl hex ' +\n 'chr lbound msgbox ucase getlocale cos cdate cbyte rtrim join hour oct typename trim ' +\n 'strcomp int createobject loadpicture tan formatnumber mid ' +\n 'split cint sin datepart ltrim sqr ' +\n 'time derived eval date formatpercent exp inputbox left ascw ' +\n 'chrw regexp cstr err').split(\" \");\n const BUILT_IN_OBJECTS = [\n \"server\",\n \"response\",\n \"request\",\n // take no arguments so can be called without ()\n \"scriptengine\",\n \"scriptenginebuildversion\",\n \"scriptengineminorversion\",\n \"scriptenginemajorversion\"\n ];\n\n const BUILT_IN_CALL = {\n begin: concat(either(...BUILT_IN_FUNCTIONS), \"\\\\s*\\\\(\"),\n // relevance 0 because this is acting as a beginKeywords really\n relevance:0,\n keywords: {\n built_in: BUILT_IN_FUNCTIONS\n }\n };\n\n return {\n name: 'VBScript',\n aliases: ['vbs'],\n case_insensitive: true,\n keywords: {\n keyword:\n 'call class const dim do loop erase execute executeglobal exit for each next function ' +\n 'if then else on error option explicit new private property let get public randomize ' +\n 'redim rem select case set stop sub while wend with end to elseif is or xor and not ' +\n 'class_initialize class_terminate default preserve in me byval byref step resume goto',\n built_in: BUILT_IN_OBJECTS,\n literal:\n 'true false null nothing empty'\n },\n illegal: '//',\n contains: [\n BUILT_IN_CALL,\n hljs.inherit(hljs.QUOTE_STRING_MODE, {contains: [{begin: '\"\"'}]}),\n hljs.COMMENT(\n /'/,\n /$/,\n {\n relevance: 0\n }\n ),\n hljs.C_NUMBER_MODE\n ]\n };\n}\n\nmodule.exports = vbscript;\n","/*\nLanguage: Verilog\nAuthor: Jon Evans <jon@craftyjon.com>\nContributors: Boone Severson <boone.severson@gmail.com>\nDescription: Verilog is a hardware description language used in electronic design automation to describe digital and mixed-signal systems. This highlighter supports Verilog and SystemVerilog through IEEE 1800-2012.\nWebsite: http://www.verilog.com\n*/\n\nfunction verilog(hljs) {\n const SV_KEYWORDS = {\n $pattern: /[\\w\\$]+/,\n keyword:\n 'accept_on alias always always_comb always_ff always_latch and assert assign ' +\n 'assume automatic before begin bind bins binsof bit break buf|0 bufif0 bufif1 ' +\n 'byte case casex casez cell chandle checker class clocking cmos config const ' +\n 'constraint context continue cover covergroup coverpoint cross deassign default ' +\n 'defparam design disable dist do edge else end endcase endchecker endclass ' +\n 'endclocking endconfig endfunction endgenerate endgroup endinterface endmodule ' +\n 'endpackage endprimitive endprogram endproperty endspecify endsequence endtable ' +\n 'endtask enum event eventually expect export extends extern final first_match for ' +\n 'force foreach forever fork forkjoin function generate|5 genvar global highz0 highz1 ' +\n 'if iff ifnone ignore_bins illegal_bins implements implies import incdir include ' +\n 'initial inout input inside instance int integer interconnect interface intersect ' +\n 'join join_any join_none large let liblist library local localparam logic longint ' +\n 'macromodule matches medium modport module nand negedge nettype new nexttime nmos ' +\n 'nor noshowcancelled not notif0 notif1 or output package packed parameter pmos ' +\n 'posedge primitive priority program property protected pull0 pull1 pulldown pullup ' +\n 'pulsestyle_ondetect pulsestyle_onevent pure rand randc randcase randsequence rcmos ' +\n 'real realtime ref reg reject_on release repeat restrict return rnmos rpmos rtran ' +\n 'rtranif0 rtranif1 s_always s_eventually s_nexttime s_until s_until_with scalared ' +\n 'sequence shortint shortreal showcancelled signed small soft solve specify specparam ' +\n 'static string strong strong0 strong1 struct super supply0 supply1 sync_accept_on ' +\n 'sync_reject_on table tagged task this throughout time timeprecision timeunit tran ' +\n 'tranif0 tranif1 tri tri0 tri1 triand trior trireg type typedef union unique unique0 ' +\n 'unsigned until until_with untyped use uwire var vectored virtual void wait wait_order ' +\n 'wand weak weak0 weak1 while wildcard wire with within wor xnor xor',\n literal:\n 'null',\n built_in:\n '$finish $stop $exit $fatal $error $warning $info $realtime $time $printtimescale ' +\n '$bitstoreal $bitstoshortreal $itor $signed $cast $bits $stime $timeformat ' +\n '$realtobits $shortrealtobits $rtoi $unsigned $asserton $assertkill $assertpasson ' +\n '$assertfailon $assertnonvacuouson $assertoff $assertcontrol $assertpassoff ' +\n '$assertfailoff $assertvacuousoff $isunbounded $sampled $fell $changed $past_gclk ' +\n '$fell_gclk $changed_gclk $rising_gclk $steady_gclk $coverage_control ' +\n '$coverage_get $coverage_save $set_coverage_db_name $rose $stable $past ' +\n '$rose_gclk $stable_gclk $future_gclk $falling_gclk $changing_gclk $display ' +\n '$coverage_get_max $coverage_merge $get_coverage $load_coverage_db $typename ' +\n '$unpacked_dimensions $left $low $increment $clog2 $ln $log10 $exp $sqrt $pow ' +\n '$floor $ceil $sin $cos $tan $countbits $onehot $isunknown $fatal $warning ' +\n '$dimensions $right $high $size $asin $acos $atan $atan2 $hypot $sinh $cosh ' +\n '$tanh $asinh $acosh $atanh $countones $onehot0 $error $info $random ' +\n '$dist_chi_square $dist_erlang $dist_exponential $dist_normal $dist_poisson ' +\n '$dist_t $dist_uniform $q_initialize $q_remove $q_exam $async$and$array ' +\n '$async$nand$array $async$or$array $async$nor$array $sync$and$array ' +\n '$sync$nand$array $sync$or$array $sync$nor$array $q_add $q_full $psprintf ' +\n '$async$and$plane $async$nand$plane $async$or$plane $async$nor$plane ' +\n '$sync$and$plane $sync$nand$plane $sync$or$plane $sync$nor$plane $system ' +\n '$display $displayb $displayh $displayo $strobe $strobeb $strobeh $strobeo ' +\n '$write $readmemb $readmemh $writememh $value$plusargs ' +\n '$dumpvars $dumpon $dumplimit $dumpports $dumpportson $dumpportslimit ' +\n '$writeb $writeh $writeo $monitor $monitorb $monitorh $monitoro $writememb ' +\n '$dumpfile $dumpoff $dumpall $dumpflush $dumpportsoff $dumpportsall ' +\n '$dumpportsflush $fclose $fdisplay $fdisplayb $fdisplayh $fdisplayo ' +\n '$fstrobe $fstrobeb $fstrobeh $fstrobeo $swrite $swriteb $swriteh ' +\n '$swriteo $fscanf $fread $fseek $fflush $feof $fopen $fwrite $fwriteb ' +\n '$fwriteh $fwriteo $fmonitor $fmonitorb $fmonitorh $fmonitoro $sformat ' +\n '$sformatf $fgetc $ungetc $fgets $sscanf $rewind $ftell $ferror'\n };\n\n return {\n name: 'Verilog',\n aliases: [\n 'v',\n 'sv',\n 'svh'\n ],\n case_insensitive: false,\n keywords: SV_KEYWORDS,\n contains: [\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'number',\n contains: [ hljs.BACKSLASH_ESCAPE ],\n variants: [\n {\n begin: '\\\\b((\\\\d+\\'(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)'\n },\n {\n begin: '\\\\B((\\'(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)'\n },\n {\n begin: '\\\\b([0-9_])+',\n relevance: 0\n }\n ]\n },\n /* parameters to instances */\n {\n className: 'variable',\n variants: [\n {\n begin: '#\\\\((?!parameter).+\\\\)'\n },\n {\n begin: '\\\\.\\\\w+',\n relevance: 0\n }\n ]\n },\n {\n className: 'meta',\n begin: '`',\n end: '$',\n keywords: {\n 'meta-keyword':\n 'define __FILE__ ' +\n '__LINE__ begin_keywords celldefine default_nettype define ' +\n 'else elsif end_keywords endcelldefine endif ifdef ifndef ' +\n 'include line nounconnected_drive pragma resetall timescale ' +\n 'unconnected_drive undef undefineall'\n },\n relevance: 0\n }\n ]\n };\n}\n\nmodule.exports = verilog;\n","/*\nLanguage: VHDL\nAuthor: Igor Kalnitsky <igor@kalnitsky.org>\nContributors: Daniel C.K. Kho <daniel.kho@tauhop.com>, Guillaume Savaton <guillaume.savaton@eseo.fr>\nDescription: VHDL is a hardware description language used in electronic design automation to describe digital and mixed-signal systems.\nWebsite: https://en.wikipedia.org/wiki/VHDL\n*/\n\nfunction vhdl(hljs) {\n // Regular expression for VHDL numeric literals.\n\n // Decimal literal:\n const INTEGER_RE = '\\\\d(_|\\\\d)*';\n const EXPONENT_RE = '[eE][-+]?' + INTEGER_RE;\n const DECIMAL_LITERAL_RE = INTEGER_RE + '(\\\\.' + INTEGER_RE + ')?' + '(' + EXPONENT_RE + ')?';\n // Based literal:\n const BASED_INTEGER_RE = '\\\\w+';\n const BASED_LITERAL_RE = INTEGER_RE + '#' + BASED_INTEGER_RE + '(\\\\.' + BASED_INTEGER_RE + ')?' + '#' + '(' + EXPONENT_RE + ')?';\n\n const NUMBER_RE = '\\\\b(' + BASED_LITERAL_RE + '|' + DECIMAL_LITERAL_RE + ')';\n\n return {\n name: 'VHDL',\n case_insensitive: true,\n keywords: {\n keyword:\n 'abs access after alias all and architecture array assert assume assume_guarantee attribute ' +\n 'begin block body buffer bus case component configuration constant context cover disconnect ' +\n 'downto default else elsif end entity exit fairness file for force function generate ' +\n 'generic group guarded if impure in inertial inout is label library linkage literal ' +\n 'loop map mod nand new next nor not null of on open or others out package parameter port ' +\n 'postponed procedure process property protected pure range record register reject ' +\n 'release rem report restrict restrict_guarantee return rol ror select sequence ' +\n 'severity shared signal sla sll sra srl strong subtype then to transport type ' +\n 'unaffected units until use variable view vmode vprop vunit wait when while with xnor xor',\n built_in:\n 'boolean bit character ' +\n 'integer time delay_length natural positive ' +\n 'string bit_vector file_open_kind file_open_status ' +\n 'std_logic std_logic_vector unsigned signed boolean_vector integer_vector ' +\n 'std_ulogic std_ulogic_vector unresolved_unsigned u_unsigned unresolved_signed u_signed ' +\n 'real_vector time_vector',\n literal:\n 'false true note warning error failure ' + // severity_level\n 'line text side width' // textio\n },\n illegal: /\\{/,\n contains: [\n hljs.C_BLOCK_COMMENT_MODE, // VHDL-2008 block commenting.\n hljs.COMMENT('--', '$'),\n hljs.QUOTE_STRING_MODE,\n {\n className: 'number',\n begin: NUMBER_RE,\n relevance: 0\n },\n {\n className: 'string',\n begin: '\\'(U|X|0|1|Z|W|L|H|-)\\'',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n className: 'symbol',\n begin: '\\'[A-Za-z](_?[A-Za-z0-9])*',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n }\n ]\n };\n}\n\nmodule.exports = vhdl;\n","/*\nLanguage: Vim Script\nAuthor: Jun Yang <yangjvn@126.com>\nDescription: full keyword and built-in from http://vimdoc.sourceforge.net/htmldoc/\nWebsite: https://www.vim.org\nCategory: scripting\n*/\n\nfunction vim(hljs) {\n return {\n name: 'Vim Script',\n keywords: {\n $pattern: /[!#@\\w]+/,\n keyword:\n // express version except: ! & * < = > !! # @ @@\n 'N|0 P|0 X|0 a|0 ab abc abo al am an|0 ar arga argd arge argdo argg argl argu as au aug aun b|0 bN ba bad bd be bel bf bl bm bn bo bp br brea breaka breakd breakl bro bufdo buffers bun bw c|0 cN cNf ca cabc caddb cad caddf cal cat cb cc ccl cd ce cex cf cfir cgetb cgete cg changes chd che checkt cl cla clo cm cmapc cme cn cnew cnf cno cnorea cnoreme co col colo com comc comp con conf cope ' +\n 'cp cpf cq cr cs cst cu cuna cunme cw delm deb debugg delc delf dif diffg diffo diffp diffpu diffs diffthis dig di dl dell dj dli do doautoa dp dr ds dsp e|0 ea ec echoe echoh echom echon el elsei em en endfo endf endt endw ene ex exe exi exu f|0 files filet fin fina fini fir fix fo foldc foldd folddoc foldo for fu go gr grepa gu gv ha helpf helpg helpt hi hid his ia iabc if ij il im imapc ' +\n 'ime ino inorea inoreme int is isp iu iuna iunme j|0 ju k|0 keepa kee keepj lN lNf l|0 lad laddb laddf la lan lat lb lc lch lcl lcs le lefta let lex lf lfir lgetb lgete lg lgr lgrepa lh ll lla lli lmak lm lmapc lne lnew lnf ln loadk lo loc lockv lol lope lp lpf lr ls lt lu lua luad luaf lv lvimgrepa lw m|0 ma mak map mapc marks mat me menut mes mk mks mksp mkv mkvie mod mz mzf nbc nb nbs new nm nmapc nme nn nnoreme noa no noh norea noreme norm nu nun nunme ol o|0 om omapc ome on ono onoreme opt ou ounme ow p|0 ' +\n 'profd prof pro promptr pc ped pe perld po popu pp pre prev ps pt ptN ptf ptj ptl ptn ptp ptr pts pu pw py3 python3 py3d py3f py pyd pyf quita qa rec red redi redr redraws reg res ret retu rew ri rightb rub rubyd rubyf rund ru rv sN san sa sal sav sb sbN sba sbf sbl sbm sbn sbp sbr scrip scripte scs se setf setg setl sf sfir sh sim sig sil sl sla sm smap smapc sme sn sni sno snor snoreme sor ' +\n 'so spelld spe spelli spellr spellu spellw sp spr sre st sta startg startr star stopi stj sts sun sunm sunme sus sv sw sy synti sync tN tabN tabc tabdo tabe tabf tabfir tabl tabm tabnew ' +\n 'tabn tabo tabp tabr tabs tab ta tags tc tcld tclf te tf th tj tl tm tn to tp tr try ts tu u|0 undoj undol una unh unl unlo unm unme uns up ve verb vert vim vimgrepa vi viu vie vm vmapc vme vne vn vnoreme vs vu vunme windo w|0 wN wa wh wi winc winp wn wp wq wqa ws wu wv x|0 xa xmapc xm xme xn xnoreme xu xunme y|0 z|0 ~ ' +\n // full version\n 'Next Print append abbreviate abclear aboveleft all amenu anoremenu args argadd argdelete argedit argglobal arglocal argument ascii autocmd augroup aunmenu buffer bNext ball badd bdelete behave belowright bfirst blast bmodified bnext botright bprevious brewind break breakadd breakdel breaklist browse bunload ' +\n 'bwipeout change cNext cNfile cabbrev cabclear caddbuffer caddexpr caddfile call catch cbuffer cclose center cexpr cfile cfirst cgetbuffer cgetexpr cgetfile chdir checkpath checktime clist clast close cmap cmapclear cmenu cnext cnewer cnfile cnoremap cnoreabbrev cnoremenu copy colder colorscheme command comclear compiler continue confirm copen cprevious cpfile cquit crewind cscope cstag cunmap ' +\n 'cunabbrev cunmenu cwindow delete delmarks debug debuggreedy delcommand delfunction diffupdate diffget diffoff diffpatch diffput diffsplit digraphs display deletel djump dlist doautocmd doautoall deletep drop dsearch dsplit edit earlier echo echoerr echohl echomsg else elseif emenu endif endfor ' +\n 'endfunction endtry endwhile enew execute exit exusage file filetype find finally finish first fixdel fold foldclose folddoopen folddoclosed foldopen function global goto grep grepadd gui gvim hardcopy help helpfind helpgrep helptags highlight hide history insert iabbrev iabclear ijump ilist imap ' +\n 'imapclear imenu inoremap inoreabbrev inoremenu intro isearch isplit iunmap iunabbrev iunmenu join jumps keepalt keepmarks keepjumps lNext lNfile list laddexpr laddbuffer laddfile last language later lbuffer lcd lchdir lclose lcscope left leftabove lexpr lfile lfirst lgetbuffer lgetexpr lgetfile lgrep lgrepadd lhelpgrep llast llist lmake lmap lmapclear lnext lnewer lnfile lnoremap loadkeymap loadview ' +\n 'lockmarks lockvar lolder lopen lprevious lpfile lrewind ltag lunmap luado luafile lvimgrep lvimgrepadd lwindow move mark make mapclear match menu menutranslate messages mkexrc mksession mkspell mkvimrc mkview mode mzscheme mzfile nbclose nbkey nbsart next nmap nmapclear nmenu nnoremap ' +\n 'nnoremenu noautocmd noremap nohlsearch noreabbrev noremenu normal number nunmap nunmenu oldfiles open omap omapclear omenu only onoremap onoremenu options ounmap ounmenu ownsyntax print profdel profile promptfind promptrepl pclose pedit perl perldo pop popup ppop preserve previous psearch ptag ptNext ' +\n 'ptfirst ptjump ptlast ptnext ptprevious ptrewind ptselect put pwd py3do py3file python pydo pyfile quit quitall qall read recover redo redir redraw redrawstatus registers resize retab return rewind right rightbelow ruby rubydo rubyfile rundo runtime rviminfo substitute sNext sandbox sargument sall saveas sbuffer sbNext sball sbfirst sblast sbmodified sbnext sbprevious sbrewind scriptnames scriptencoding ' +\n 'scscope set setfiletype setglobal setlocal sfind sfirst shell simalt sign silent sleep slast smagic smapclear smenu snext sniff snomagic snoremap snoremenu sort source spelldump spellgood spellinfo spellrepall spellundo spellwrong split sprevious srewind stop stag startgreplace startreplace ' +\n 'startinsert stopinsert stjump stselect sunhide sunmap sunmenu suspend sview swapname syntax syntime syncbind tNext tabNext tabclose tabedit tabfind tabfirst tablast tabmove tabnext tabonly tabprevious tabrewind tag tcl tcldo tclfile tearoff tfirst throw tjump tlast tmenu tnext topleft tprevious ' + 'trewind tselect tunmenu undo undojoin undolist unabbreviate unhide unlet unlockvar unmap unmenu unsilent update vglobal version verbose vertical vimgrep vimgrepadd visual viusage view vmap vmapclear vmenu vnew ' +\n 'vnoremap vnoremenu vsplit vunmap vunmenu write wNext wall while winsize wincmd winpos wnext wprevious wqall wsverb wundo wviminfo xit xall xmapclear xmap xmenu xnoremap xnoremenu xunmap xunmenu yank',\n built_in: // built in func\n 'synIDtrans atan2 range matcharg did_filetype asin feedkeys xor argv ' +\n 'complete_check add getwinposx getqflist getwinposy screencol ' +\n 'clearmatches empty extend getcmdpos mzeval garbagecollect setreg ' +\n 'ceil sqrt diff_hlID inputsecret get getfperm getpid filewritable ' +\n 'shiftwidth max sinh isdirectory synID system inputrestore winline ' +\n 'atan visualmode inputlist tabpagewinnr round getregtype mapcheck ' +\n 'hasmapto histdel argidx findfile sha256 exists toupper getcmdline ' +\n 'taglist string getmatches bufnr strftime winwidth bufexists ' +\n 'strtrans tabpagebuflist setcmdpos remote_read printf setloclist ' +\n 'getpos getline bufwinnr float2nr len getcmdtype diff_filler luaeval ' +\n 'resolve libcallnr foldclosedend reverse filter has_key bufname ' +\n 'str2float strlen setline getcharmod setbufvar index searchpos ' +\n 'shellescape undofile foldclosed setqflist buflisted strchars str2nr ' +\n 'virtcol floor remove undotree remote_expr winheight gettabwinvar ' +\n 'reltime cursor tabpagenr finddir localtime acos getloclist search ' +\n 'tanh matchend rename gettabvar strdisplaywidth type abs py3eval ' +\n 'setwinvar tolower wildmenumode log10 spellsuggest bufloaded ' +\n 'synconcealed nextnonblank server2client complete settabwinvar ' +\n 'executable input wincol setmatches getftype hlID inputsave ' +\n 'searchpair or screenrow line settabvar histadd deepcopy strpart ' +\n 'remote_peek and eval getftime submatch screenchar winsaveview ' +\n 'matchadd mkdir screenattr getfontname libcall reltimestr getfsize ' +\n 'winnr invert pow getbufline byte2line soundfold repeat fnameescape ' +\n 'tagfiles sin strwidth spellbadword trunc maparg log lispindent ' +\n 'hostname setpos globpath remote_foreground getchar synIDattr ' +\n 'fnamemodify cscope_connection stridx winbufnr indent min ' +\n 'complete_add nr2char searchpairpos inputdialog values matchlist ' +\n 'items hlexists strridx browsedir expand fmod pathshorten line2byte ' +\n 'argc count getwinvar glob foldtextresult getreg foreground cosh ' +\n 'matchdelete has char2nr simplify histget searchdecl iconv ' +\n 'winrestcmd pumvisible writefile foldlevel haslocaldir keys cos ' +\n 'matchstr foldtext histnr tan tempname getcwd byteidx getbufvar ' +\n 'islocked escape eventhandler remote_send serverlist winrestview ' +\n 'synstack pyeval prevnonblank readfile cindent filereadable changenr ' +\n 'exp'\n },\n illegal: /;/,\n contains: [\n hljs.NUMBER_MODE,\n {\n className: 'string',\n begin: '\\'',\n end: '\\'',\n illegal: '\\\\n'\n },\n\n /*\n A double quote can start either a string or a line comment. Strings are\n ended before the end of a line by another double quote and can contain\n escaped double-quotes and post-escaped line breaks.\n\n Also, any double quote at the beginning of a line is a comment but we\n don't handle that properly at the moment: any double quote inside will\n turn them into a string. Handling it properly will require a smarter\n parser.\n */\n {\n className: 'string',\n begin: /\"(\\\\\"|\\n\\\\|[^\"\\n])*\"/\n },\n hljs.COMMENT('\"', '$'),\n\n {\n className: 'variable',\n begin: /[bwtglsav]:[\\w\\d_]*/\n },\n {\n className: 'function',\n beginKeywords: 'function function!',\n end: '$',\n relevance: 0,\n contains: [\n hljs.TITLE_MODE,\n {\n className: 'params',\n begin: '\\\\(',\n end: '\\\\)'\n }\n ]\n },\n {\n className: 'symbol',\n begin: /<[\\w-]+>/\n }\n ]\n };\n}\n\nmodule.exports = vim;\n","/*\nLanguage: Intel x86 Assembly\nAuthor: innocenat <innocenat@gmail.com>\nDescription: x86 assembly language using Intel's mnemonic and NASM syntax\nWebsite: https://en.wikipedia.org/wiki/X86_assembly_language\nCategory: assembler\n*/\n\nfunction x86asm(hljs) {\n return {\n name: 'Intel x86 Assembly',\n case_insensitive: true,\n keywords: {\n $pattern: '[.%]?' + hljs.IDENT_RE,\n keyword:\n 'lock rep repe repz repne repnz xaquire xrelease bnd nobnd ' +\n 'aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg cmpxchg486 cmpxchg8b cmpxchg16b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip fucomp fucompp fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc incbin insb insd insw int int01 int1 int03 int3 into invd invpcid invlpg invlpga iret iretd iretq iretw jcxz jecxz jrcxz jmp jmpe lahf lar lds lea leave les lfence lfs lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne loopnz loopz lsl lss ltr mfence monitor mov movd movq movsb movsd movsq movsw movsx movsxd movzx mul mwait neg nop not or out outsb outsd outsw packssdw packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdshr rdmsr rdpmc rdtsc rdtscp ret retf retn rol ror rdm rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd scasq scasw sfence sgdt shl shld shr shrd sidt sldt skinit smi smint smintold smsw stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter sysexit sysret test ud0 ud1 ud2b ud2 ud2a umov verr verw fwait wbinvd wrshr wrmsr xadd xbts xchg xlatb xlat xor cmove cmovz cmovne cmovnz cmova cmovnbe cmovae cmovnb cmovb cmovnae cmovbe cmovna cmovg cmovnle cmovge cmovnl cmovl cmovnge cmovle cmovng cmovc cmovnc cmovo cmovno cmovs cmovns cmovp cmovpe cmovnp cmovpo je jz jne jnz ja jnbe jae jnb jb jnae jbe jna jg jnle jge jnl jl jnge jle jng jc jnc jo jno js jns jpo jnp jpe jp sete setz setne setnz seta setnbe setae setnb setnc setb setnae setcset setbe setna setg setnle setge setnl setl setnge setle setng sets setns seto setno setpe setp setpo setnp addps addss andnps andps cmpeqps cmpeqss cmpleps cmpless cmpltps cmpltss cmpneqps cmpneqss cmpnleps cmpnless cmpnltps cmpnltss cmpordps cmpordss cmpunordps cmpunordss cmpps cmpss comiss cvtpi2ps cvtps2pi cvtsi2ss cvtss2si cvttps2pi cvttss2si divps divss ldmxcsr maxps maxss minps minss movaps movhps movlhps movlps movhlps movmskps movntps movss movups mulps mulss orps rcpps rcpss rsqrtps rsqrtss shufps sqrtps sqrtss stmxcsr subps subss ucomiss unpckhps unpcklps xorps fxrstor fxrstor64 fxsave fxsave64 xgetbv xsetbv xsave xsave64 xsaveopt xsaveopt64 xrstor xrstor64 prefetchnta prefetcht0 prefetcht1 prefetcht2 maskmovq movntq pavgb pavgw pextrw pinsrw pmaxsw pmaxub pminsw pminub pmovmskb pmulhuw psadbw pshufw pf2iw pfnacc pfpnacc pi2fw pswapd maskmovdqu clflush movntdq movnti movntpd movdqa movdqu movdq2q movq2dq paddq pmuludq pshufd pshufhw pshuflw pslldq psrldq psubq punpckhqdq punpcklqdq addpd addsd andnpd andpd cmpeqpd cmpeqsd cmplepd cmplesd cmpltpd cmpltsd cmpneqpd cmpneqsd cmpnlepd cmpnlesd cmpnltpd cmpnltsd cmpordpd cmpordsd cmpunordpd cmpunordsd cmppd comisd cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps cvtpi2pd cvtps2dq cvtps2pd cvtsd2si cvtsd2ss cvtsi2sd cvtss2sd cvttpd2pi cvttpd2dq cvttps2dq cvttsd2si divpd divsd maxpd maxsd minpd minsd movapd movhpd movlpd movmskpd movupd mulpd mulsd orpd shufpd sqrtpd sqrtsd subpd subsd ucomisd unpckhpd unpcklpd xorpd addsubpd addsubps haddpd haddps hsubpd hsubps lddqu movddup movshdup movsldup clgi stgi vmcall vmclear vmfunc vmlaunch vmload vmmcall vmptrld vmptrst vmread vmresume vmrun vmsave vmwrite vmxoff vmxon invept invvpid pabsb pabsw pabsd palignr phaddw phaddd phaddsw phsubw phsubd phsubsw pmaddubsw pmulhrsw pshufb psignb psignw psignd extrq insertq movntsd movntss lzcnt blendpd blendps blendvpd blendvps dppd dpps extractps insertps movntdqa mpsadbw packusdw pblendvb pblendw pcmpeqq pextrb pextrd pextrq phminposuw pinsrb pinsrd pinsrq pmaxsb pmaxsd pmaxud pmaxuw pminsb pminsd pminud pminuw pmovsxbw pmovsxbd pmovsxbq pmovsxwd pmovsxwq pmovsxdq pmovzxbw pmovzxbd pmovzxbq pmovzxwd pmovzxwq pmovzxdq pmuldq pmulld ptest roundpd roundps roundsd roundss crc32 pcmpestri pcmpestrm pcmpistri pcmpistrm pcmpgtq popcnt getsec pfrcpv pfrsqrtv movbe aesenc aesenclast aesdec aesdeclast aesimc aeskeygenassist vaesenc vaesenclast vaesdec vaesdeclast vaesimc vaeskeygenassist vaddpd vaddps vaddsd vaddss vaddsubpd vaddsubps vandpd vandps vandnpd vandnps vblendpd vblendps vblendvpd vblendvps vbroadcastss vbroadcastsd vbroadcastf128 vcmpeq_ospd vcmpeqpd vcmplt_ospd vcmpltpd vcmple_ospd vcmplepd vcmpunord_qpd vcmpunordpd vcmpneq_uqpd vcmpneqpd vcmpnlt_uspd vcmpnltpd vcmpnle_uspd vcmpnlepd vcmpord_qpd vcmpordpd vcmpeq_uqpd vcmpnge_uspd vcmpngepd vcmpngt_uspd vcmpngtpd vcmpfalse_oqpd vcmpfalsepd vcmpneq_oqpd vcmpge_ospd vcmpgepd vcmpgt_ospd vcmpgtpd vcmptrue_uqpd vcmptruepd vcmplt_oqpd vcmple_oqpd vcmpunord_spd vcmpneq_uspd vcmpnlt_uqpd vcmpnle_uqpd vcmpord_spd vcmpeq_uspd vcmpnge_uqpd vcmpngt_uqpd vcmpfalse_ospd vcmpneq_ospd vcmpge_oqpd vcmpgt_oqpd vcmptrue_uspd vcmppd vcmpeq_osps vcmpeqps vcmplt_osps vcmpltps vcmple_osps vcmpleps vcmpunord_qps vcmpunordps vcmpneq_uqps vcmpneqps vcmpnlt_usps vcmpnltps vcmpnle_usps vcmpnleps vcmpord_qps vcmpordps vcmpeq_uqps vcmpnge_usps vcmpngeps vcmpngt_usps vcmpngtps vcmpfalse_oqps vcmpfalseps vcmpneq_oqps vcmpge_osps vcmpgeps vcmpgt_osps vcmpgtps vcmptrue_uqps vcmptrueps vcmplt_oqps vcmple_oqps vcmpunord_sps vcmpneq_usps vcmpnlt_uqps vcmpnle_uqps vcmpord_sps vcmpeq_usps vcmpnge_uqps vcmpngt_uqps vcmpfalse_osps vcmpneq_osps vcmpge_oqps vcmpgt_oqps vcmptrue_usps vcmpps vcmpeq_ossd vcmpeqsd vcmplt_ossd vcmpltsd vcmple_ossd vcmplesd vcmpunord_qsd vcmpunordsd vcmpneq_uqsd vcmpneqsd vcmpnlt_ussd vcmpnltsd vcmpnle_ussd vcmpnlesd vcmpord_qsd vcmpordsd vcmpeq_uqsd vcmpnge_ussd vcmpngesd vcmpngt_ussd vcmpngtsd vcmpfalse_oqsd vcmpfalsesd vcmpneq_oqsd vcmpge_ossd vcmpgesd vcmpgt_ossd vcmpgtsd vcmptrue_uqsd vcmptruesd vcmplt_oqsd vcmple_oqsd vcmpunord_ssd vcmpneq_ussd vcmpnlt_uqsd vcmpnle_uqsd vcmpord_ssd vcmpeq_ussd vcmpnge_uqsd vcmpngt_uqsd vcmpfalse_ossd vcmpneq_ossd vcmpge_oqsd vcmpgt_oqsd vcmptrue_ussd vcmpsd vcmpeq_osss vcmpeqss vcmplt_osss vcmpltss vcmple_osss vcmpless vcmpunord_qss vcmpunordss vcmpneq_uqss vcmpneqss vcmpnlt_usss vcmpnltss vcmpnle_usss vcmpnless vcmpord_qss vcmpordss vcmpeq_uqss vcmpnge_usss vcmpngess vcmpngt_usss vcmpngtss vcmpfalse_oqss vcmpfalsess vcmpneq_oqss vcmpge_osss vcmpgess vcmpgt_osss vcmpgtss vcmptrue_uqss vcmptruess vcmplt_oqss vcmple_oqss vcmpunord_sss vcmpneq_usss vcmpnlt_uqss vcmpnle_uqss vcmpord_sss vcmpeq_usss vcmpnge_uqss vcmpngt_uqss vcmpfalse_osss vcmpneq_osss vcmpge_oqss vcmpgt_oqss vcmptrue_usss vcmpss vcomisd vcomiss vcvtdq2pd vcvtdq2ps vcvtpd2dq vcvtpd2ps vcvtps2dq vcvtps2pd vcvtsd2si vcvtsd2ss vcvtsi2sd vcvtsi2ss vcvtss2sd vcvtss2si vcvttpd2dq vcvttps2dq vcvttsd2si vcvttss2si vdivpd vdivps vdivsd vdivss vdppd vdpps vextractf128 vextractps vhaddpd vhaddps vhsubpd vhsubps vinsertf128 vinsertps vlddqu vldqqu vldmxcsr vmaskmovdqu vmaskmovps vmaskmovpd vmaxpd vmaxps vmaxsd vmaxss vminpd vminps vminsd vminss vmovapd vmovaps vmovd vmovq vmovddup vmovdqa vmovqqa vmovdqu vmovqqu vmovhlps vmovhpd vmovhps vmovlhps vmovlpd vmovlps vmovmskpd vmovmskps vmovntdq vmovntqq vmovntdqa vmovntpd vmovntps vmovsd vmovshdup vmovsldup vmovss vmovupd vmovups vmpsadbw vmulpd vmulps vmulsd vmulss vorpd vorps vpabsb vpabsw vpabsd vpacksswb vpackssdw vpackuswb vpackusdw vpaddb vpaddw vpaddd vpaddq vpaddsb vpaddsw vpaddusb vpaddusw vpalignr vpand vpandn vpavgb vpavgw vpblendvb vpblendw vpcmpestri vpcmpestrm vpcmpistri vpcmpistrm vpcmpeqb vpcmpeqw vpcmpeqd vpcmpeqq vpcmpgtb vpcmpgtw vpcmpgtd vpcmpgtq vpermilpd vpermilps vperm2f128 vpextrb vpextrw vpextrd vpextrq vphaddw vphaddd vphaddsw vphminposuw vphsubw vphsubd vphsubsw vpinsrb vpinsrw vpinsrd vpinsrq vpmaddwd vpmaddubsw vpmaxsb vpmaxsw vpmaxsd vpmaxub vpmaxuw vpmaxud vpminsb vpminsw vpminsd vpminub vpminuw vpminud vpmovmskb vpmovsxbw vpmovsxbd vpmovsxbq vpmovsxwd vpmovsxwq vpmovsxdq vpmovzxbw vpmovzxbd vpmovzxbq vpmovzxwd vpmovzxwq vpmovzxdq vpmulhuw vpmulhrsw vpmulhw vpmullw vpmulld vpmuludq vpmuldq vpor vpsadbw vpshufb vpshufd vpshufhw vpshuflw vpsignb vpsignw vpsignd vpslldq vpsrldq vpsllw vpslld vpsllq vpsraw vpsrad vpsrlw vpsrld vpsrlq vptest vpsubb vpsubw vpsubd vpsubq vpsubsb vpsubsw vpsubusb vpsubusw vpunpckhbw vpunpckhwd vpunpckhdq vpunpckhqdq vpunpcklbw vpunpcklwd vpunpckldq vpunpcklqdq vpxor vrcpps vrcpss vrsqrtps vrsqrtss vroundpd vroundps vroundsd vroundss vshufpd vshufps vsqrtpd vsqrtps vsqrtsd vsqrtss vstmxcsr vsubpd vsubps vsubsd vsubss vtestps vtestpd vucomisd vucomiss vunpckhpd vunpckhps vunpcklpd vunpcklps vxorpd vxorps vzeroall vzeroupper pclmullqlqdq pclmulhqlqdq pclmullqhqdq pclmulhqhqdq pclmulqdq vpclmullqlqdq vpclmulhqlqdq vpclmullqhqdq vpclmulhqhqdq vpclmulqdq vfmadd132ps vfmadd132pd vfmadd312ps vfmadd312pd vfmadd213ps vfmadd213pd vfmadd123ps vfmadd123pd vfmadd231ps vfmadd231pd vfmadd321ps vfmadd321pd vfmaddsub132ps vfmaddsub132pd vfmaddsub312ps vfmaddsub312pd vfmaddsub213ps vfmaddsub213pd vfmaddsub123ps vfmaddsub123pd vfmaddsub231ps vfmaddsub231pd vfmaddsub321ps vfmaddsub321pd vfmsub132ps vfmsub132pd vfmsub312ps vfmsub312pd vfmsub213ps vfmsub213pd vfmsub123ps vfmsub123pd vfmsub231ps vfmsub231pd vfmsub321ps vfmsub321pd vfmsubadd132ps vfmsubadd132pd vfmsubadd312ps vfmsubadd312pd vfmsubadd213ps vfmsubadd213pd vfmsubadd123ps vfmsubadd123pd vfmsubadd231ps vfmsubadd231pd vfmsubadd321ps vfmsubadd321pd vfnmadd132ps vfnmadd132pd vfnmadd312ps vfnmadd312pd vfnmadd213ps vfnmadd213pd vfnmadd123ps vfnmadd123pd vfnmadd231ps vfnmadd231pd vfnmadd321ps vfnmadd321pd vfnmsub132ps vfnmsub132pd vfnmsub312ps vfnmsub312pd vfnmsub213ps vfnmsub213pd vfnmsub123ps vfnmsub123pd vfnmsub231ps vfnmsub231pd vfnmsub321ps vfnmsub321pd vfmadd132ss vfmadd132sd vfmadd312ss vfmadd312sd vfmadd213ss vfmadd213sd vfmadd123ss vfmadd123sd vfmadd231ss vfmadd231sd vfmadd321ss vfmadd321sd vfmsub132ss vfmsub132sd vfmsub312ss vfmsub312sd vfmsub213ss vfmsub213sd vfmsub123ss vfmsub123sd vfmsub231ss vfmsub231sd vfmsub321ss vfmsub321sd vfnmadd132ss vfnmadd132sd vfnmadd312ss vfnmadd312sd vfnmadd213ss vfnmadd213sd vfnmadd123ss vfnmadd123sd vfnmadd231ss vfnmadd231sd vfnmadd321ss vfnmadd321sd vfnmsub132ss vfnmsub132sd vfnmsub312ss vfnmsub312sd vfnmsub213ss vfnmsub213sd vfnmsub123ss vfnmsub123sd vfnmsub231ss vfnmsub231sd vfnmsub321ss vfnmsub321sd rdfsbase rdgsbase rdrand wrfsbase wrgsbase vcvtph2ps vcvtps2ph adcx adox rdseed clac stac xstore xcryptecb xcryptcbc xcryptctr xcryptcfb xcryptofb montmul xsha1 xsha256 llwpcb slwpcb lwpval lwpins vfmaddpd vfmaddps vfmaddsd vfmaddss vfmaddsubpd vfmaddsubps vfmsubaddpd vfmsubaddps vfmsubpd vfmsubps vfmsubsd vfmsubss vfnmaddpd vfnmaddps vfnmaddsd vfnmaddss vfnmsubpd vfnmsubps vfnmsubsd vfnmsubss vfrczpd vfrczps vfrczsd vfrczss vpcmov vpcomb vpcomd vpcomq vpcomub vpcomud vpcomuq vpcomuw vpcomw vphaddbd vphaddbq vphaddbw vphadddq vphaddubd vphaddubq vphaddubw vphaddudq vphadduwd vphadduwq vphaddwd vphaddwq vphsubbw vphsubdq vphsubwd vpmacsdd vpmacsdqh vpmacsdql vpmacssdd vpmacssdqh vpmacssdql vpmacsswd vpmacssww vpmacswd vpmacsww vpmadcsswd vpmadcswd vpperm vprotb vprotd vprotq vprotw vpshab vpshad vpshaq vpshaw vpshlb vpshld vpshlq vpshlw vbroadcasti128 vpblendd vpbroadcastb vpbroadcastw vpbroadcastd vpbroadcastq vpermd vpermpd vpermps vpermq vperm2i128 vextracti128 vinserti128 vpmaskmovd vpmaskmovq vpsllvd vpsllvq vpsravd vpsrlvd vpsrlvq vgatherdpd vgatherqpd vgatherdps vgatherqps vpgatherdd vpgatherqd vpgatherdq vpgatherqq xabort xbegin xend xtest andn bextr blci blcic blsi blsic blcfill blsfill blcmsk blsmsk blsr blcs bzhi mulx pdep pext rorx sarx shlx shrx tzcnt tzmsk t1mskc valignd valignq vblendmpd vblendmps vbroadcastf32x4 vbroadcastf64x4 vbroadcasti32x4 vbroadcasti64x4 vcompresspd vcompressps vcvtpd2udq vcvtps2udq vcvtsd2usi vcvtss2usi vcvttpd2udq vcvttps2udq vcvttsd2usi vcvttss2usi vcvtudq2pd vcvtudq2ps vcvtusi2sd vcvtusi2ss vexpandpd vexpandps vextractf32x4 vextractf64x4 vextracti32x4 vextracti64x4 vfixupimmpd vfixupimmps vfixupimmsd vfixupimmss vgetexppd vgetexpps vgetexpsd vgetexpss vgetmantpd vgetmantps vgetmantsd vgetmantss vinsertf32x4 vinsertf64x4 vinserti32x4 vinserti64x4 vmovdqa32 vmovdqa64 vmovdqu32 vmovdqu64 vpabsq vpandd vpandnd vpandnq vpandq vpblendmd vpblendmq vpcmpltd vpcmpled vpcmpneqd vpcmpnltd vpcmpnled vpcmpd vpcmpltq vpcmpleq vpcmpneqq vpcmpnltq vpcmpnleq vpcmpq vpcmpequd vpcmpltud vpcmpleud vpcmpnequd vpcmpnltud vpcmpnleud vpcmpud vpcmpequq vpcmpltuq vpcmpleuq vpcmpnequq vpcmpnltuq vpcmpnleuq vpcmpuq vpcompressd vpcompressq vpermi2d vpermi2pd vpermi2ps vpermi2q vpermt2d vpermt2pd vpermt2ps vpermt2q vpexpandd vpexpandq vpmaxsq vpmaxuq vpminsq vpminuq vpmovdb vpmovdw vpmovqb vpmovqd vpmovqw vpmovsdb vpmovsdw vpmovsqb vpmovsqd vpmovsqw vpmovusdb vpmovusdw vpmovusqb vpmovusqd vpmovusqw vpord vporq vprold vprolq vprolvd vprolvq vprord vprorq vprorvd vprorvq vpscatterdd vpscatterdq vpscatterqd vpscatterqq vpsraq vpsravq vpternlogd vpternlogq vptestmd vptestmq vptestnmd vptestnmq vpxord vpxorq vrcp14pd vrcp14ps vrcp14sd vrcp14ss vrndscalepd vrndscaleps vrndscalesd vrndscaless vrsqrt14pd vrsqrt14ps vrsqrt14sd vrsqrt14ss vscalefpd vscalefps vscalefsd vscalefss vscatterdpd vscatterdps vscatterqpd vscatterqps vshuff32x4 vshuff64x2 vshufi32x4 vshufi64x2 kandnw kandw kmovw knotw kortestw korw kshiftlw kshiftrw kunpckbw kxnorw kxorw vpbroadcastmb2q vpbroadcastmw2d vpconflictd vpconflictq vplzcntd vplzcntq vexp2pd vexp2ps vrcp28pd vrcp28ps vrcp28sd vrcp28ss vrsqrt28pd vrsqrt28ps vrsqrt28sd vrsqrt28ss vgatherpf0dpd vgatherpf0dps vgatherpf0qpd vgatherpf0qps vgatherpf1dpd vgatherpf1dps vgatherpf1qpd vgatherpf1qps vscatterpf0dpd vscatterpf0dps vscatterpf0qpd vscatterpf0qps vscatterpf1dpd vscatterpf1dps vscatterpf1qpd vscatterpf1qps prefetchwt1 bndmk bndcl bndcu bndcn bndmov bndldx bndstx sha1rnds4 sha1nexte sha1msg1 sha1msg2 sha256rnds2 sha256msg1 sha256msg2 hint_nop0 hint_nop1 hint_nop2 hint_nop3 hint_nop4 hint_nop5 hint_nop6 hint_nop7 hint_nop8 hint_nop9 hint_nop10 hint_nop11 hint_nop12 hint_nop13 hint_nop14 hint_nop15 hint_nop16 hint_nop17 hint_nop18 hint_nop19 hint_nop20 hint_nop21 hint_nop22 hint_nop23 hint_nop24 hint_nop25 hint_nop26 hint_nop27 hint_nop28 hint_nop29 hint_nop30 hint_nop31 hint_nop32 hint_nop33 hint_nop34 hint_nop35 hint_nop36 hint_nop37 hint_nop38 hint_nop39 hint_nop40 hint_nop41 hint_nop42 hint_nop43 hint_nop44 hint_nop45 hint_nop46 hint_nop47 hint_nop48 hint_nop49 hint_nop50 hint_nop51 hint_nop52 hint_nop53 hint_nop54 hint_nop55 hint_nop56 hint_nop57 hint_nop58 hint_nop59 hint_nop60 hint_nop61 hint_nop62 hint_nop63',\n built_in:\n // Instruction pointer\n 'ip eip rip ' +\n // 8-bit registers\n 'al ah bl bh cl ch dl dh sil dil bpl spl r8b r9b r10b r11b r12b r13b r14b r15b ' +\n // 16-bit registers\n 'ax bx cx dx si di bp sp r8w r9w r10w r11w r12w r13w r14w r15w ' +\n // 32-bit registers\n 'eax ebx ecx edx esi edi ebp esp eip r8d r9d r10d r11d r12d r13d r14d r15d ' +\n // 64-bit registers\n 'rax rbx rcx rdx rsi rdi rbp rsp r8 r9 r10 r11 r12 r13 r14 r15 ' +\n // Segment registers\n 'cs ds es fs gs ss ' +\n // Floating point stack registers\n 'st st0 st1 st2 st3 st4 st5 st6 st7 ' +\n // MMX Registers\n 'mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 ' +\n // SSE registers\n 'xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7 xmm8 xmm9 xmm10 xmm11 xmm12 xmm13 xmm14 xmm15 ' +\n 'xmm16 xmm17 xmm18 xmm19 xmm20 xmm21 xmm22 xmm23 xmm24 xmm25 xmm26 xmm27 xmm28 xmm29 xmm30 xmm31 ' +\n // AVX registers\n 'ymm0 ymm1 ymm2 ymm3 ymm4 ymm5 ymm6 ymm7 ymm8 ymm9 ymm10 ymm11 ymm12 ymm13 ymm14 ymm15 ' +\n 'ymm16 ymm17 ymm18 ymm19 ymm20 ymm21 ymm22 ymm23 ymm24 ymm25 ymm26 ymm27 ymm28 ymm29 ymm30 ymm31 ' +\n // AVX-512F registers\n 'zmm0 zmm1 zmm2 zmm3 zmm4 zmm5 zmm6 zmm7 zmm8 zmm9 zmm10 zmm11 zmm12 zmm13 zmm14 zmm15 ' +\n 'zmm16 zmm17 zmm18 zmm19 zmm20 zmm21 zmm22 zmm23 zmm24 zmm25 zmm26 zmm27 zmm28 zmm29 zmm30 zmm31 ' +\n // AVX-512F mask registers\n 'k0 k1 k2 k3 k4 k5 k6 k7 ' +\n // Bound (MPX) register\n 'bnd0 bnd1 bnd2 bnd3 ' +\n // Special register\n 'cr0 cr1 cr2 cr3 cr4 cr8 dr0 dr1 dr2 dr3 dr8 tr3 tr4 tr5 tr6 tr7 ' +\n // NASM altreg package\n 'r0 r1 r2 r3 r4 r5 r6 r7 r0b r1b r2b r3b r4b r5b r6b r7b ' +\n 'r0w r1w r2w r3w r4w r5w r6w r7w r0d r1d r2d r3d r4d r5d r6d r7d ' +\n 'r0h r1h r2h r3h ' +\n 'r0l r1l r2l r3l r4l r5l r6l r7l r8l r9l r10l r11l r12l r13l r14l r15l ' +\n\n 'db dw dd dq dt ddq do dy dz ' +\n 'resb resw resd resq rest resdq reso resy resz ' +\n 'incbin equ times ' +\n 'byte word dword qword nosplit rel abs seg wrt strict near far a32 ptr',\n\n meta:\n '%define %xdefine %+ %undef %defstr %deftok %assign %strcat %strlen %substr %rotate %elif %else %endif ' +\n '%if %ifmacro %ifctx %ifidn %ifidni %ifid %ifnum %ifstr %iftoken %ifempty %ifenv %error %warning %fatal %rep ' +\n '%endrep %include %push %pop %repl %pathsearch %depend %use %arg %stacksize %local %line %comment %endcomment ' +\n '.nolist ' +\n '__FILE__ __LINE__ __SECT__ __BITS__ __OUTPUT_FORMAT__ __DATE__ __TIME__ __DATE_NUM__ __TIME_NUM__ ' +\n '__UTC_DATE__ __UTC_TIME__ __UTC_DATE_NUM__ __UTC_TIME_NUM__ __PASS__ struc endstruc istruc at iend ' +\n 'align alignb sectalign daz nodaz up down zero default option assume public ' +\n\n 'bits use16 use32 use64 default section segment absolute extern global common cpu float ' +\n '__utf16__ __utf16le__ __utf16be__ __utf32__ __utf32le__ __utf32be__ ' +\n '__float8__ __float16__ __float32__ __float64__ __float80m__ __float80e__ __float128l__ __float128h__ ' +\n '__Infinity__ __QNaN__ __SNaN__ Inf NaN QNaN SNaN float8 float16 float32 float64 float80m float80e ' +\n 'float128l float128h __FLOAT_DAZ__ __FLOAT_ROUND__ __FLOAT__'\n },\n contains: [\n hljs.COMMENT(\n ';',\n '$',\n {\n relevance: 0\n }\n ),\n {\n className: 'number',\n variants: [\n // Float number and x87 BCD\n {\n begin: '\\\\b(?:([0-9][0-9_]*)?\\\\.[0-9_]*(?:[eE][+-]?[0-9_]+)?|' +\n '(0[Xx])?[0-9][0-9_]*(\\\\.[0-9_]*)?(?:[pP](?:[+-]?[0-9_]+)?)?)\\\\b',\n relevance: 0\n },\n\n // Hex number in $\n {\n begin: '\\\\$[0-9][0-9A-Fa-f]*',\n relevance: 0\n },\n\n // Number in H,D,T,Q,O,B,Y suffix\n {\n begin: '\\\\b(?:[0-9A-Fa-f][0-9A-Fa-f_]*[Hh]|[0-9][0-9_]*[DdTt]?|[0-7][0-7_]*[QqOo]|[0-1][0-1_]*[BbYy])\\\\b'\n },\n\n // Number in X,D,T,Q,O,B,Y prefix\n {\n begin: '\\\\b(?:0[Xx][0-9A-Fa-f_]+|0[DdTt][0-9_]+|0[QqOo][0-7_]+|0[BbYy][0-1_]+)\\\\b'\n }\n ]\n },\n // Double quote string\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n variants: [\n // Single-quoted string\n {\n begin: '\\'',\n end: '[^\\\\\\\\]\\''\n },\n // Backquoted string\n {\n begin: '`',\n end: '[^\\\\\\\\]`'\n }\n ],\n relevance: 0\n },\n {\n className: 'symbol',\n variants: [\n // Global label and local label\n {\n begin: '^\\\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\\\s+label)'\n },\n // Macro-local label\n {\n begin: '^\\\\s*%%[A-Za-z0-9_$#@~.?]*:'\n }\n ],\n relevance: 0\n },\n // Macro parameter\n {\n className: 'subst',\n begin: '%[0-9]+',\n relevance: 0\n },\n // Macro parameter\n {\n className: 'subst',\n begin: '%!\\S+',\n relevance: 0\n },\n {\n className: 'meta',\n begin: /^\\s*\\.[\\w_-]+/\n }\n ]\n };\n}\n\nmodule.exports = x86asm;\n","/*\nLanguage: XL\nAuthor: Christophe de Dinechin <christophe@taodyne.com>\nDescription: An extensible programming language, based on parse tree rewriting\nWebsite: http://xlr.sf.net\n*/\n\nfunction xl(hljs) {\n const BUILTIN_MODULES =\n 'ObjectLoader Animate MovieCredits Slides Filters Shading Materials LensFlare Mapping VLCAudioVideo ' +\n 'StereoDecoder PointCloud NetworkAccess RemoteControl RegExp ChromaKey Snowfall NodeJS Speech Charts';\n\n const XL_KEYWORDS = {\n $pattern: /[a-zA-Z][a-zA-Z0-9_?]*/,\n keyword:\n 'if then else do while until for loop import with is as where when by data constant ' +\n 'integer real text name boolean symbol infix prefix postfix block tree',\n literal:\n 'true false nil',\n built_in:\n 'in mod rem and or xor not abs sign floor ceil sqrt sin cos tan asin ' +\n 'acos atan exp expm1 log log2 log10 log1p pi at text_length text_range ' +\n 'text_find text_replace contains page slide basic_slide title_slide ' +\n 'title subtitle fade_in fade_out fade_at clear_color color line_color ' +\n 'line_width texture_wrap texture_transform texture scale_?x scale_?y ' +\n 'scale_?z? translate_?x translate_?y translate_?z? rotate_?x rotate_?y ' +\n 'rotate_?z? rectangle circle ellipse sphere path line_to move_to ' +\n 'quad_to curve_to theme background contents locally time mouse_?x ' +\n 'mouse_?y mouse_buttons ' +\n BUILTIN_MODULES\n };\n\n const DOUBLE_QUOTE_TEXT = {\n className: 'string',\n begin: '\"',\n end: '\"',\n illegal: '\\\\n'\n };\n const SINGLE_QUOTE_TEXT = {\n className: 'string',\n begin: '\\'',\n end: '\\'',\n illegal: '\\\\n'\n };\n const LONG_TEXT = {\n className: 'string',\n begin: '<<',\n end: '>>'\n };\n const BASED_NUMBER = {\n className: 'number',\n begin: '[0-9]+#[0-9A-Z_]+(\\\\.[0-9-A-Z_]+)?#?([Ee][+-]?[0-9]+)?'\n };\n const IMPORT = {\n beginKeywords: 'import',\n end: '$',\n keywords: XL_KEYWORDS,\n contains: [ DOUBLE_QUOTE_TEXT ]\n };\n const FUNCTION_DEFINITION = {\n className: 'function',\n begin: /[a-z][^\\n]*->/,\n returnBegin: true,\n end: /->/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n starts: {\n endsWithParent: true,\n keywords: XL_KEYWORDS\n }\n })\n ]\n };\n return {\n name: 'XL',\n aliases: [ 'tao' ],\n keywords: XL_KEYWORDS,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n DOUBLE_QUOTE_TEXT,\n SINGLE_QUOTE_TEXT,\n LONG_TEXT,\n FUNCTION_DEFINITION,\n IMPORT,\n BASED_NUMBER,\n hljs.NUMBER_MODE\n ]\n };\n}\n\nmodule.exports = xl;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n return concat('(?=', re, ')');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction optional(re) {\n return concat('(', re, ')?');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] } args\n * @returns {string}\n */\nfunction either(...args) {\n const joined = '(' + args.map((x) => source(x)).join(\"|\") + \")\";\n return joined;\n}\n\n/*\nLanguage: HTML, XML\nWebsite: https://www.w3.org/XML/\nCategory: common\nAudit: 2020\n*/\n\n/** @type LanguageFn */\nfunction xml(hljs) {\n // Element names can contain letters, digits, hyphens, underscores, and periods\n const TAG_NAME_RE = concat(/[A-Z_]/, optional(/[A-Z0-9_.-]*:/), /[A-Z0-9_.-]*/);\n const XML_IDENT_RE = /[A-Za-z0-9._:-]+/;\n const XML_ENTITIES = {\n className: 'symbol',\n begin: /&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/\n };\n const XML_META_KEYWORDS = {\n begin: /\\s/,\n contains: [\n {\n className: 'meta-keyword',\n begin: /#?[a-z_][a-z1-9_-]+/,\n illegal: /\\n/\n }\n ]\n };\n const XML_META_PAR_KEYWORDS = hljs.inherit(XML_META_KEYWORDS, {\n begin: /\\(/,\n end: /\\)/\n });\n const APOS_META_STRING_MODE = hljs.inherit(hljs.APOS_STRING_MODE, {\n className: 'meta-string'\n });\n const QUOTE_META_STRING_MODE = hljs.inherit(hljs.QUOTE_STRING_MODE, {\n className: 'meta-string'\n });\n const TAG_INTERNALS = {\n endsWithParent: true,\n illegal: /</,\n relevance: 0,\n contains: [\n {\n className: 'attr',\n begin: XML_IDENT_RE,\n relevance: 0\n },\n {\n begin: /=\\s*/,\n relevance: 0,\n contains: [\n {\n className: 'string',\n endsParent: true,\n variants: [\n {\n begin: /\"/,\n end: /\"/,\n contains: [ XML_ENTITIES ]\n },\n {\n begin: /'/,\n end: /'/,\n contains: [ XML_ENTITIES ]\n },\n {\n begin: /[^\\s\"'=<>`]+/\n }\n ]\n }\n ]\n }\n ]\n };\n return {\n name: 'HTML, XML',\n aliases: [\n 'html',\n 'xhtml',\n 'rss',\n 'atom',\n 'xjb',\n 'xsd',\n 'xsl',\n 'plist',\n 'wsf',\n 'svg'\n ],\n case_insensitive: true,\n contains: [\n {\n className: 'meta',\n begin: /<![a-z]/,\n end: />/,\n relevance: 10,\n contains: [\n XML_META_KEYWORDS,\n QUOTE_META_STRING_MODE,\n APOS_META_STRING_MODE,\n XML_META_PAR_KEYWORDS,\n {\n begin: /\\[/,\n end: /\\]/,\n contains: [\n {\n className: 'meta',\n begin: /<![a-z]/,\n end: />/,\n contains: [\n XML_META_KEYWORDS,\n XML_META_PAR_KEYWORDS,\n QUOTE_META_STRING_MODE,\n APOS_META_STRING_MODE\n ]\n }\n ]\n }\n ]\n },\n hljs.COMMENT(\n /<!--/,\n /-->/,\n {\n relevance: 10\n }\n ),\n {\n begin: /<!\\[CDATA\\[/,\n end: /\\]\\]>/,\n relevance: 10\n },\n XML_ENTITIES,\n {\n className: 'meta',\n begin: /<\\?xml/,\n end: /\\?>/,\n relevance: 10\n },\n {\n className: 'tag',\n /*\n The lookahead pattern (?=...) ensures that 'begin' only matches\n '<style' as a single word, followed by a whitespace or an\n ending braket. The '$' is needed for the lexeme to be recognized\n by hljs.subMode() that tests lexemes outside the stream.\n */\n begin: /<style(?=\\s|>)/,\n end: />/,\n keywords: {\n name: 'style'\n },\n contains: [ TAG_INTERNALS ],\n starts: {\n end: /<\\/style>/,\n returnEnd: true,\n subLanguage: [\n 'css',\n 'xml'\n ]\n }\n },\n {\n className: 'tag',\n // See the comment in the <style tag about the lookahead pattern\n begin: /<script(?=\\s|>)/,\n end: />/,\n keywords: {\n name: 'script'\n },\n contains: [ TAG_INTERNALS ],\n starts: {\n end: /<\\/script>/,\n returnEnd: true,\n subLanguage: [\n 'javascript',\n 'handlebars',\n 'xml'\n ]\n }\n },\n // we need this for now for jSX\n {\n className: 'tag',\n begin: /<>|<\\/>/\n },\n // open tag\n {\n className: 'tag',\n begin: concat(\n /</,\n lookahead(concat(\n TAG_NAME_RE,\n // <tag/>\n // <tag>\n // <tag ...\n either(/\\/>/, />/, /\\s/)\n ))\n ),\n end: /\\/?>/,\n contains: [\n {\n className: 'name',\n begin: TAG_NAME_RE,\n relevance: 0,\n starts: TAG_INTERNALS\n }\n ]\n },\n // close tag\n {\n className: 'tag',\n begin: concat(\n /<\\//,\n lookahead(concat(\n TAG_NAME_RE, />/\n ))\n ),\n contains: [\n {\n className: 'name',\n begin: TAG_NAME_RE,\n relevance: 0\n },\n {\n begin: />/,\n relevance: 0,\n endsParent: true\n }\n ]\n }\n ]\n };\n}\n\nmodule.exports = xml;\n","/*\nLanguage: XQuery\nAuthor: Dirk Kirsten <dk@basex.org>\nContributor: Duncan Paterson\nDescription: Supports XQuery 3.1 including XQuery Update 3, so also XPath (as it is a superset)\nRefactored to process xml constructor syntax and function-bodies. Added missing data-types, xpath operands, inbuilt functions, and query prologs\nWebsite: https://www.w3.org/XML/Query/\nCategory: functional\nAudit: 2020\n*/\n\n/** @type LanguageFn */\nfunction xquery(_hljs) {\n // see https://www.w3.org/TR/xquery/#id-terminal-delimitation\n const KEYWORDS =\n 'module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit ' +\n 'declare import option function validate variable ' +\n 'for at in let where order group by return if then else ' +\n 'tumbling sliding window start when only end previous next stable ' +\n 'ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch ' +\n 'and or to union intersect instance of treat as castable cast map array ' +\n 'delete insert into replace value rename copy modify update';\n\n // Node Types (sorted by inheritance)\n // atomic types (sorted by inheritance)\n const TYPE =\n 'item document-node node attribute document element comment namespace namespace-node processing-instruction text construction ' +\n 'xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration';\n\n const LITERAL =\n 'eq ne lt le gt ge is ' +\n 'self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: ' +\n 'NaN';\n\n // functions (TODO: find regex for op: without breaking build)\n const BUILT_IN = {\n className: 'built_in',\n variants: [\n {\n begin: /\\barray:/,\n end: /(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\\b/\n },\n {\n begin: /\\bmap:/,\n end: /(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\\b/\n },\n {\n begin: /\\bmath:/,\n end: /(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\\b/\n },\n {\n begin: /\\bop:/,\n end: /\\(/,\n excludeEnd: true\n },\n {\n begin: /\\bfn:/,\n end: /\\(/,\n excludeEnd: true\n },\n // do not highlight inbuilt strings as variable or xml element names\n {\n begin: /[^</$:'\"-]\\b(?:abs|accumulator-(?:after|before)|adjust-(?:date(?:Time)?|time)-to-timezone|analyze-string|apply|available-(?:environment-variables|system-properties)|avg|base-uri|boolean|ceiling|codepoints?-(?:equal|to-string)|collation-key|collection|compare|concat|contains(?:-token)?|copy-of|count|current(?:-)?(?:date(?:Time)?|time|group(?:ing-key)?|output-uri|merge-(?:group|key))?data|dateTime|days?-from-(?:date(?:Time)?|duration)|deep-equal|default-(?:collation|language)|distinct-values|document(?:-uri)?|doc(?:-available)?|element-(?:available|with-id)|empty|encode-for-uri|ends-with|environment-variable|error|escape-html-uri|exactly-one|exists|false|filter|floor|fold-(?:left|right)|for-each(?:-pair)?|format-(?:date(?:Time)?|time|integer|number)|function-(?:arity|available|lookup|name)|generate-id|has-children|head|hours-from-(?:dateTime|duration|time)|id(?:ref)?|implicit-timezone|in-scope-prefixes|index-of|innermost|insert-before|iri-to-uri|json-(?:doc|to-xml)|key|lang|last|load-xquery-module|local-name(?:-from-QName)?|(?:lower|upper)-case|matches|max|minutes-from-(?:dateTime|duration|time)|min|months?-from-(?:date(?:Time)?|duration)|name(?:space-uri-?(?:for-prefix|from-QName)?)?|nilled|node-name|normalize-(?:space|unicode)|not|number|one-or-more|outermost|parse-(?:ietf-date|json)|path|position|(?:prefix-from-)?QName|random-number-generator|regex-group|remove|replace|resolve-(?:QName|uri)|reverse|root|round(?:-half-to-even)?|seconds-from-(?:dateTime|duration|time)|snapshot|sort|starts-with|static-base-uri|stream-available|string-?(?:join|length|to-codepoints)?|subsequence|substring-?(?:after|before)?|sum|system-property|tail|timezone-from-(?:date(?:Time)?|time)|tokenize|trace|trans(?:form|late)|true|type-available|unordered|unparsed-(?:entity|text)?-?(?:public-id|uri|available|lines)?|uri-collection|xml-to-json|years?-from-(?:date(?:Time)?|duration)|zero-or-one)\\b/\n },\n {\n begin: /\\blocal:/,\n end: /\\(/,\n excludeEnd: true\n },\n {\n begin: /\\bzip:/,\n end: /(?:zip-file|(?:xml|html|text|binary)-entry| (?:update-)?entries)\\b/\n },\n {\n begin: /\\b(?:util|db|functx|app|xdmp|xmldb):/,\n end: /\\(/,\n excludeEnd: true\n }\n ]\n };\n\n const TITLE = {\n className: 'title',\n begin: /\\bxquery version \"[13]\\.[01]\"\\s?(?:encoding \".+\")?/,\n end: /;/\n };\n\n const VAR = {\n className: 'variable',\n begin: /[$][\\w\\-:]+/\n };\n\n const NUMBER = {\n className: 'number',\n begin: /(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b/,\n relevance: 0\n };\n\n const STRING = {\n className: 'string',\n variants: [\n {\n begin: /\"/,\n end: /\"/,\n contains: [\n {\n begin: /\"\"/,\n relevance: 0\n }\n ]\n },\n {\n begin: /'/,\n end: /'/,\n contains: [\n {\n begin: /''/,\n relevance: 0\n }\n ]\n }\n ]\n };\n\n const ANNOTATION = {\n className: 'meta',\n begin: /%[\\w\\-:]+/\n };\n\n const COMMENT = {\n className: 'comment',\n begin: /\\(:/,\n end: /:\\)/,\n relevance: 10,\n contains: [\n {\n className: 'doctag',\n begin: /@\\w+/\n }\n ]\n };\n\n // see https://www.w3.org/TR/xquery/#id-computedConstructors\n // mocha: computed_inbuilt\n // see https://www.regexpal.com/?fam=99749\n const COMPUTED = {\n beginKeywords: 'element attribute comment document processing-instruction',\n end: /\\{/,\n excludeEnd: true\n };\n\n // mocha: direct_method\n const DIRECT = {\n begin: /<([\\w._:-]+)(\\s+\\S*=('|\").*('|\"))?>/,\n end: /(\\/[\\w._:-]+>)/,\n subLanguage: 'xml',\n contains: [\n {\n begin: /\\{/,\n end: /\\}/,\n subLanguage: 'xquery'\n },\n 'self'\n ]\n };\n\n const CONTAINS = [\n VAR,\n BUILT_IN,\n STRING,\n NUMBER,\n COMMENT,\n ANNOTATION,\n TITLE,\n COMPUTED,\n DIRECT\n ];\n\n return {\n name: 'XQuery',\n aliases: [\n 'xpath',\n 'xq'\n ],\n case_insensitive: false,\n illegal: /(proc)|(abstract)|(extends)|(until)|(#)/,\n keywords: {\n $pattern: /[a-zA-Z$][a-zA-Z0-9_:-]*/,\n keyword: KEYWORDS,\n type: TYPE,\n literal: LITERAL\n },\n contains: CONTAINS\n };\n}\n\nmodule.exports = xquery;\n","/*\nLanguage: YAML\nDescription: Yet Another Markdown Language\nAuthor: Stefan Wienert <stwienert@gmail.com>\nContributors: Carl Baxter <carl@cbax.tech>\nRequires: ruby.js\nWebsite: https://yaml.org\nCategory: common, config\n*/\nfunction yaml(hljs) {\n var LITERALS = 'true false yes no null';\n\n // YAML spec allows non-reserved URI characters in tags.\n var URI_CHARACTERS = '[\\\\w#;/?:@&=+$,.~*\\'()[\\\\]]+';\n\n // Define keys as starting with a word character\n // ...containing word chars, spaces, colons, forward-slashes, hyphens and periods\n // ...and ending with a colon followed immediately by a space, tab or newline.\n // The YAML spec allows for much more than this, but this covers most use-cases.\n var KEY = {\n className: 'attr',\n variants: [\n { begin: '\\\\w[\\\\w :\\\\/.-]*:(?=[ \\t]|$)' },\n { begin: '\"\\\\w[\\\\w :\\\\/.-]*\":(?=[ \\t]|$)' }, // double quoted keys\n { begin: '\\'\\\\w[\\\\w :\\\\/.-]*\\':(?=[ \\t]|$)' } // single quoted keys\n ]\n };\n\n var TEMPLATE_VARIABLES = {\n className: 'template-variable',\n variants: [\n { begin: /\\{\\{/, end: /\\}\\}/ }, // jinja templates Ansible\n { begin: /%\\{/, end: /\\}/ } // Ruby i18n\n ]\n };\n var STRING = {\n className: 'string',\n relevance: 0,\n variants: [\n { begin: /'/, end: /'/ },\n { begin: /\"/, end: /\"/ },\n { begin: /\\S+/ }\n ],\n contains: [\n hljs.BACKSLASH_ESCAPE,\n TEMPLATE_VARIABLES\n ]\n };\n\n // Strings inside of value containers (objects) can't contain braces,\n // brackets, or commas\n var CONTAINER_STRING = hljs.inherit(STRING, {\n variants: [\n { begin: /'/, end: /'/ },\n { begin: /\"/, end: /\"/ },\n { begin: /[^\\s,{}[\\]]+/ }\n ]\n });\n\n var DATE_RE = '[0-9]{4}(-[0-9][0-9]){0,2}';\n var TIME_RE = '([Tt \\\\t][0-9][0-9]?(:[0-9][0-9]){2})?';\n var FRACTION_RE = '(\\\\.[0-9]*)?';\n var ZONE_RE = '([ \\\\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?';\n var TIMESTAMP = {\n className: 'number',\n begin: '\\\\b' + DATE_RE + TIME_RE + FRACTION_RE + ZONE_RE + '\\\\b'\n };\n\n var VALUE_CONTAINER = {\n end: ',',\n endsWithParent: true,\n excludeEnd: true,\n keywords: LITERALS,\n relevance: 0\n };\n var OBJECT = {\n begin: /\\{/,\n end: /\\}/,\n contains: [VALUE_CONTAINER],\n illegal: '\\\\n',\n relevance: 0\n };\n var ARRAY = {\n begin: '\\\\[',\n end: '\\\\]',\n contains: [VALUE_CONTAINER],\n illegal: '\\\\n',\n relevance: 0\n };\n\n var MODES = [\n KEY,\n {\n className: 'meta',\n begin: '^---\\\\s*$',\n relevance: 10\n },\n { // multi line string\n // Blocks start with a | or > followed by a newline\n //\n // Indentation of subsequent lines must be the same to\n // be considered part of the block\n className: 'string',\n begin: '[\\\\|>]([1-9]?[+-])?[ ]*\\\\n( +)[^ ][^\\\\n]*\\\\n(\\\\2[^\\\\n]+\\\\n?)*'\n },\n { // Ruby/Rails erb\n begin: '<%[%=-]?',\n end: '[%-]?%>',\n subLanguage: 'ruby',\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0\n },\n { // named tags\n className: 'type',\n begin: '!\\\\w+!' + URI_CHARACTERS\n },\n // https://yaml.org/spec/1.2/spec.html#id2784064\n { // verbatim tags\n className: 'type',\n begin: '!<' + URI_CHARACTERS + \">\"\n },\n { // primary tags\n className: 'type',\n begin: '!' + URI_CHARACTERS\n },\n { // secondary tags\n className: 'type',\n begin: '!!' + URI_CHARACTERS\n },\n { // fragment id &ref\n className: 'meta',\n begin: '&' + hljs.UNDERSCORE_IDENT_RE + '$'\n },\n { // fragment reference *ref\n className: 'meta',\n begin: '\\\\*' + hljs.UNDERSCORE_IDENT_RE + '$'\n },\n { // array listing\n className: 'bullet',\n // TODO: remove |$ hack when we have proper look-ahead support\n begin: '-(?=[ ]|$)',\n relevance: 0\n },\n hljs.HASH_COMMENT_MODE,\n {\n beginKeywords: LITERALS,\n keywords: { literal: LITERALS }\n },\n TIMESTAMP,\n // numbers are any valid C-style number that\n // sit isolated from other words\n {\n className: 'number',\n begin: hljs.C_NUMBER_RE + '\\\\b',\n relevance: 0\n },\n OBJECT,\n ARRAY,\n STRING\n ];\n\n var VALUE_MODES = [...MODES];\n VALUE_MODES.pop();\n VALUE_MODES.push(CONTAINER_STRING);\n VALUE_CONTAINER.contains = VALUE_MODES;\n\n return {\n name: 'YAML',\n case_insensitive: true,\n aliases: [ 'yml' ],\n contains: MODES\n };\n}\n\nmodule.exports = yaml;\n","/*\n Language: Zephir\n Description: Zephir, an open source, high-level language designed to ease the creation and maintainability of extensions for PHP with a focus on type and memory safety.\n Author: Oleg Efimov <efimovov@gmail.com>\n Website: https://zephir-lang.com/en\n Audit: 2020\n */\n\n/** @type LanguageFn */\nfunction zephir(hljs) {\n const STRING = {\n className: 'string',\n contains: [ hljs.BACKSLASH_ESCAPE ],\n variants: [\n hljs.inherit(hljs.APOS_STRING_MODE, {\n illegal: null\n }),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {\n illegal: null\n })\n ]\n };\n const TITLE_MODE = hljs.UNDERSCORE_TITLE_MODE;\n const NUMBER = {\n variants: [\n hljs.BINARY_NUMBER_MODE,\n hljs.C_NUMBER_MODE\n ]\n };\n const KEYWORDS =\n // classes and objects\n 'namespace class interface use extends ' +\n 'function return ' +\n 'abstract final public protected private static deprecated ' +\n // error handling\n 'throw try catch Exception ' +\n // keyword-ish things their website does NOT seem to highlight (in their own snippets)\n // 'typeof fetch in ' +\n // operators/helpers\n 'echo empty isset instanceof unset ' +\n // assignment/variables\n 'let var new const self ' +\n // control\n 'require ' +\n 'if else elseif switch case default ' +\n 'do while loop for continue break ' +\n 'likely unlikely ' +\n // magic constants\n // https://github.com/phalcon/zephir/blob/master/Library/Expression/Constants.php\n '__LINE__ __FILE__ __DIR__ __FUNCTION__ __CLASS__ __TRAIT__ __METHOD__ __NAMESPACE__ ' +\n // types - https://docs.zephir-lang.com/0.12/en/types\n 'array boolean float double integer object resource string ' +\n 'char long unsigned bool int uint ulong uchar ' +\n // built-ins\n 'true false null undefined';\n\n return {\n name: 'Zephir',\n aliases: [ 'zep' ],\n keywords: KEYWORDS,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.COMMENT(\n /\\/\\*/,\n /\\*\\//,\n {\n contains: [\n {\n className: 'doctag',\n begin: /@[A-Za-z]+/\n }\n ]\n }\n ),\n {\n className: 'string',\n begin: /<<<['\"]?\\w+['\"]?$/,\n end: /^\\w+;/,\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n // swallow composed identifiers to avoid parsing them as keywords\n begin: /(::|->)+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*/\n },\n {\n className: 'function',\n beginKeywords: 'function fn',\n end: /[;{]/,\n excludeEnd: true,\n illegal: /\\$|\\[|%/,\n contains: [\n TITLE_MODE,\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n contains: [\n 'self',\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n NUMBER\n ]\n }\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class interface',\n end: /\\{/,\n excludeEnd: true,\n illegal: /[:($\"]/,\n contains: [\n {\n beginKeywords: 'extends implements'\n },\n TITLE_MODE\n ]\n },\n {\n beginKeywords: 'namespace',\n end: /;/,\n illegal: /[.']/,\n contains: [ TITLE_MODE ]\n },\n {\n beginKeywords: 'use',\n end: /;/,\n contains: [ TITLE_MODE ]\n },\n {\n begin: /=>/ // No markup, just a relevance booster\n },\n STRING,\n NUMBER\n ]\n };\n}\n\nmodule.exports = zephir;\n","var camel2hyphen = require('string-convert/camel2hyphen');\n\nvar isDimension = function (feature) {\n var re = /[height|width]$/;\n return re.test(feature);\n};\n\nvar obj2mq = function (obj) {\n var mq = '';\n var features = Object.keys(obj);\n features.forEach(function (feature, index) {\n var value = obj[feature];\n feature = camel2hyphen(feature);\n // Add px to dimension features\n if (isDimension(feature) && typeof value === 'number') {\n value = value + 'px';\n }\n if (value === true) {\n mq += feature;\n } else if (value === false) {\n mq += 'not ' + feature;\n } else {\n mq += '(' + feature + ': ' + value + ')';\n }\n if (index < features.length-1) {\n mq += ' and '\n }\n });\n return mq;\n};\n\nvar json2mq = function (query) {\n var mq = '';\n if (typeof query === 'string') {\n return query;\n }\n // Handling array of media queries\n if (query instanceof Array) {\n query.forEach(function (q, index) {\n mq += obj2mq(q);\n if (index < query.length-1) {\n mq += ', '\n }\n });\n return mq;\n }\n // Handling single media query\n return obj2mq(query);\n};\n\nmodule.exports = json2mq;","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 1);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar DEVICE_TYPES = {\n MOBILE: \"mobile\",\n TABLET: \"tablet\",\n SMART_TV: \"smarttv\",\n CONSOLE: \"console\",\n WEARABLE: \"wearable\",\n BROWSER: undefined\n};\n\nvar BROWSER_TYPES = {\n CHROME: \"Chrome\",\n FIREFOX: \"Firefox\",\n OPERA: \"Opera\",\n YANDEX: \"Yandex\",\n SAFARI: \"Safari\",\n INTERNET_EXPLORER: \"Internet Explorer\",\n EDGE: \"Edge\",\n CHROMIUM: \"Chromium\",\n IE: \"IE\",\n MOBILE_SAFARI: \"Mobile Safari\",\n EDGE_CHROMIUM: \"Edge Chromium\"\n};\n\nvar OS_TYPES = {\n IOS: \"iOS\",\n ANDROID: \"Android\",\n WINDOWS_PHONE: \"Windows Phone\",\n WINDOWS: \"Windows\",\n MAC_OS: \"Mac OS\"\n};\n\nvar defaultData = {\n isMobile: false,\n isTablet: false,\n isBrowser: false,\n isSmartTV: false,\n isConsole: false,\n isWearable: false\n};\n\nmodule.exports = { BROWSER_TYPES: BROWSER_TYPES, DEVICE_TYPES: DEVICE_TYPES, OS_TYPES: OS_TYPES, defaultData: defaultData };\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar UAParser = __webpack_require__(2);\n\nvar _require = __webpack_require__(0),\n BROWSER_TYPES = _require.BROWSER_TYPES,\n OS_TYPES = _require.OS_TYPES,\n DEVICE_TYPES = _require.DEVICE_TYPES;\n\nvar _require2 = __webpack_require__(4),\n checkType = _require2.checkType,\n broPayload = _require2.broPayload,\n mobilePayload = _require2.mobilePayload,\n wearPayload = _require2.wearPayload,\n consolePayload = _require2.consolePayload,\n stvPayload = _require2.stvPayload,\n getNavigatorInstance = _require2.getNavigatorInstance,\n isIOS13Check = _require2.isIOS13Check;\n\nvar UA = new UAParser();\n\nvar browser = UA.getBrowser();\nvar device = UA.getDevice();\nvar engine = UA.getEngine();\nvar os = UA.getOS();\nvar ua = UA.getUA();\n\nvar CHROME = BROWSER_TYPES.CHROME,\n CHROMIUM = BROWSER_TYPES.CHROMIUM,\n IE = BROWSER_TYPES.IE,\n INTERNET_EXPLORER = BROWSER_TYPES.INTERNET_EXPLORER,\n OPERA = BROWSER_TYPES.OPERA,\n FIREFOX = BROWSER_TYPES.FIREFOX,\n SAFARI = BROWSER_TYPES.SAFARI,\n EDGE = BROWSER_TYPES.EDGE,\n YANDEX = BROWSER_TYPES.YANDEX,\n MOBILE_SAFARI = BROWSER_TYPES.MOBILE_SAFARI;\nvar MOBILE = DEVICE_TYPES.MOBILE,\n TABLET = DEVICE_TYPES.TABLET,\n SMART_TV = DEVICE_TYPES.SMART_TV,\n BROWSER = DEVICE_TYPES.BROWSER,\n WEARABLE = DEVICE_TYPES.WEARABLE,\n CONSOLE = DEVICE_TYPES.CONSOLE;\nvar ANDROID = OS_TYPES.ANDROID,\n WINDOWS_PHONE = OS_TYPES.WINDOWS_PHONE,\n IOS = OS_TYPES.IOS,\n WINDOWS = OS_TYPES.WINDOWS,\n MAC_OS = OS_TYPES.MAC_OS;\n\n\nvar isMobileType = function isMobileType() {\n return device.type === MOBILE;\n};\nvar isTabletType = function isTabletType() {\n return device.type === TABLET;\n};\n\nvar isMobileAndTabletType = function isMobileAndTabletType() {\n switch (device.type) {\n case MOBILE:\n case TABLET:\n return true;\n default:\n return false;\n }\n};\n\nvar isEdgeChromiumType = function isEdgeChromiumType() {\n if (os.name === OS_TYPES.WINDOWS && os.version === '10') {\n return typeof ua === 'string' && ua.indexOf('Edg/') !== -1;\n }\n\n return false;\n};\n\nvar isSmartTVType = function isSmartTVType() {\n return device.type === SMART_TV;\n};\nvar isBrowserType = function isBrowserType() {\n return device.type === BROWSER;\n};\nvar isWearableType = function isWearableType() {\n return device.type === WEARABLE;\n};\nvar isConsoleType = function isConsoleType() {\n return device.type === CONSOLE;\n};\nvar isAndroidType = function isAndroidType() {\n return os.name === ANDROID;\n};\nvar isWindowsType = function isWindowsType() {\n return os.name === WINDOWS;\n};\nvar isMacOsType = function isMacOsType() {\n return os.name === MAC_OS;\n};\nvar isWinPhoneType = function isWinPhoneType() {\n return os.name === WINDOWS_PHONE;\n};\nvar isIOSType = function isIOSType() {\n return os.name === IOS;\n};\nvar isChromeType = function isChromeType() {\n return browser.name === CHROME;\n};\nvar isFirefoxType = function isFirefoxType() {\n return browser.name === FIREFOX;\n};\nvar isChromiumType = function isChromiumType() {\n return browser.name === CHROMIUM;\n};\nvar isEdgeType = function isEdgeType() {\n return browser.name === EDGE;\n};\nvar isYandexType = function isYandexType() {\n return browser.name === YANDEX;\n};\nvar isSafariType = function isSafariType() {\n return browser.name === SAFARI || browser.name === MOBILE_SAFARI;\n};\n\nvar isMobileSafariType = function isMobileSafariType() {\n return browser.name === MOBILE_SAFARI;\n};\nvar isOperaType = function isOperaType() {\n return browser.name === OPERA;\n};\nvar isIEType = function isIEType() {\n return browser.name === INTERNET_EXPLORER || browser.name === IE;\n};\n\nvar isElectronType = function isElectronType() {\n var nav = getNavigatorInstance();\n var ua = nav && nav.userAgent.toLowerCase();\n\n return typeof ua === 'string' ? /electron/.test(ua) : false;\n};\n\nvar getIOS13 = function getIOS13() {\n var nav = getNavigatorInstance();\n return nav && (/iPad|iPhone|iPod/.test(nav.platform) || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1) && !window.MSStream;\n};\n\nvar getIPad13 = function getIPad13() {\n return isIOS13Check('iPad');\n};\nvar getIphone13 = function getIphone13() {\n return isIOS13Check('iPhone');\n};\nvar getIPod13 = function getIPod13() {\n return isIOS13Check('iPod');\n};\n\nvar getBrowserFullVersion = function getBrowserFullVersion() {\n return browser.major;\n};\nvar getBrowserVersion = function getBrowserVersion() {\n return browser.version;\n};\nvar getOsVersion = function getOsVersion() {\n return os.version ? os.version : \"none\";\n};\nvar getOsName = function getOsName() {\n return os.name ? os.name : \"none\";\n};\nvar getBrowserName = function getBrowserName() {\n return browser.name;\n};\nvar getMobileVendor = function getMobileVendor() {\n return device.vendor ? device.vendor : \"none\";\n};\nvar getMobileModel = function getMobileModel() {\n return device.model ? device.model : \"none\";\n};\nvar getEngineName = function getEngineName() {\n return engine.name;\n};\nvar getEngineVersion = function getEngineVersion() {\n return engine.version;\n};\nvar getUseragent = function getUseragent() {\n return ua;\n};\nvar getDeviceType = function getDeviceType() {\n return device.type;\n};\n\nvar isSmartTV = isSmartTVType();\nvar isConsole = isConsoleType();\nvar isWearable = isWearableType();\nvar isMobileSafari = isMobileSafariType() || getIPad13();\nvar isChromium = isChromiumType();\nvar isMobile = isMobileAndTabletType() || getIPad13();\nvar isMobileOnly = isMobileType();\nvar isTablet = isTabletType() || getIPad13();\nvar isBrowser = isBrowserType();\nvar isAndroid = isAndroidType();\nvar isWinPhone = isWinPhoneType();\nvar isIOS = isIOSType() || getIPad13();\nvar isChrome = isChromeType();\nvar isFirefox = isFirefoxType();\nvar isSafari = isSafariType();\nvar isOpera = isOperaType();\nvar isIE = isIEType();\nvar osVersion = getOsVersion();\nvar osName = getOsName();\nvar fullBrowserVersion = getBrowserFullVersion();\nvar browserVersion = getBrowserVersion();\nvar browserName = getBrowserName();\nvar mobileVendor = getMobileVendor();\nvar mobileModel = getMobileModel();\nvar engineName = getEngineName();\nvar engineVersion = getEngineVersion();\nvar getUA = getUseragent();\nvar isEdge = isEdgeType() || isEdgeChromiumType();\nvar isYandex = isYandexType();\nvar deviceType = getDeviceType();\nvar isIOS13 = getIOS13();\nvar isIPad13 = getIPad13();\nvar isIPhone13 = getIphone13();\nvar isIPod13 = getIPod13();\nvar isElectron = isElectronType();\nvar isEdgeChromium = isEdgeChromiumType();\nvar isLegacyEdge = isEdgeType();\nvar isWindows = isWindowsType();\nvar isMacOs = isMacOsType();\n\nvar type = checkType(device.type);\n\nfunction deviceDetect() {\n var isBrowser = type.isBrowser,\n isMobile = type.isMobile,\n isTablet = type.isTablet,\n isSmartTV = type.isSmartTV,\n isConsole = type.isConsole,\n isWearable = type.isWearable;\n\n if (isBrowser) {\n return broPayload(isBrowser, browser, engine, os, ua);\n }\n\n if (isSmartTV) {\n return stvPayload(isSmartTV, engine, os, ua);\n }\n\n if (isConsole) {\n return consolePayload(isConsole, engine, os, ua);\n }\n\n if (isMobile) {\n return mobilePayload(type, device, os, ua);\n }\n\n if (isTablet) {\n return mobilePayload(type, device, os, ua);\n }\n\n if (isWearable) {\n return wearPayload(isWearable, engine, os, ua);\n }\n};\n\nmodule.exports = {\n deviceDetect: deviceDetect,\n isSmartTV: isSmartTV,\n isConsole: isConsole,\n isWearable: isWearable,\n isMobileSafari: isMobileSafari,\n isChromium: isChromium,\n isMobile: isMobile,\n isMobileOnly: isMobileOnly,\n isTablet: isTablet,\n isBrowser: isBrowser,\n isAndroid: isAndroid,\n isWinPhone: isWinPhone,\n isIOS: isIOS,\n isChrome: isChrome,\n isFirefox: isFirefox,\n isSafari: isSafari,\n isOpera: isOpera,\n isIE: isIE,\n osVersion: osVersion,\n osName: osName,\n fullBrowserVersion: fullBrowserVersion,\n browserVersion: browserVersion,\n browserName: browserName,\n mobileVendor: mobileVendor,\n mobileModel: mobileModel,\n engineName: engineName,\n engineVersion: engineVersion,\n getUA: getUA,\n isEdge: isEdge,\n isYandex: isYandex,\n deviceType: deviceType,\n isIOS13: isIOS13,\n isIPad13: isIPad13,\n isIPhone13: isIPhone13,\n isIPod13: isIPod13,\n isElectron: isElectron,\n isEdgeChromium: isEdgeChromium,\n isLegacyEdge: isLegacyEdge,\n isWindows: isWindows,\n isMacOs: isMacOs\n};\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_RESULT__;/*!\n * UAParser.js v0.7.18\n * Lightweight JavaScript-based User-Agent string parser\n * https://github.com/faisalman/ua-parser-js\n *\n * Copyright © 2012-2016 Faisal Salman <fyzlman@gmail.com>\n * Dual licensed under GPLv2 or MIT\n */\n(function(window,undefined){\"use strict\";var LIBVERSION=\"0.7.18\",EMPTY=\"\",UNKNOWN=\"?\",FUNC_TYPE=\"function\",UNDEF_TYPE=\"undefined\",OBJ_TYPE=\"object\",STR_TYPE=\"string\",MAJOR=\"major\",MODEL=\"model\",NAME=\"name\",TYPE=\"type\",VENDOR=\"vendor\",VERSION=\"version\",ARCHITECTURE=\"architecture\",CONSOLE=\"console\",MOBILE=\"mobile\",TABLET=\"tablet\",SMARTTV=\"smarttv\",WEARABLE=\"wearable\",EMBEDDED=\"embedded\";var util={extend:function(regexes,extensions){var margedRegexes={};for(var i in regexes){if(extensions[i]&&extensions[i].length%2===0){margedRegexes[i]=extensions[i].concat(regexes[i])}else{margedRegexes[i]=regexes[i]}}return margedRegexes},has:function(str1,str2){if(typeof str1===\"string\"){return str2.toLowerCase().indexOf(str1.toLowerCase())!==-1}else{return false}},lowerize:function(str){return str.toLowerCase()},major:function(version){return typeof version===STR_TYPE?version.replace(/[^\\d\\.]/g,\"\").split(\".\")[0]:undefined},trim:function(str){return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\"\")}};var mapper={rgx:function(ua,arrays){var i=0,j,k,p,q,matches,match;while(i<arrays.length&&!matches){var regex=arrays[i],props=arrays[i+1];j=k=0;while(j<regex.length&&!matches){matches=regex[j++].exec(ua);if(!!matches){for(p=0;p<props.length;p++){match=matches[++k];q=props[p];if(typeof q===OBJ_TYPE&&q.length>0){if(q.length==2){if(typeof q[1]==FUNC_TYPE){this[q[0]]=q[1].call(this,match)}else{this[q[0]]=q[1]}}else if(q.length==3){if(typeof q[1]===FUNC_TYPE&&!(q[1].exec&&q[1].test)){this[q[0]]=match?q[1].call(this,match,q[2]):undefined}else{this[q[0]]=match?match.replace(q[1],q[2]):undefined}}else if(q.length==4){this[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined}}else{this[q]=match?match:undefined}}}}i+=2}},str:function(str,map){for(var i in map){if(typeof map[i]===OBJ_TYPE&&map[i].length>0){for(var j=0;j<map[i].length;j++){if(util.has(map[i][j],str)){return i===UNKNOWN?undefined:i}}}else if(util.has(map[i],str)){return i===UNKNOWN?undefined:i}}return str}};var maps={browser:{oldsafari:{version:{\"1.0\":\"/8\",1.2:\"/1\",1.3:\"/3\",\"2.0\":\"/412\",\"2.0.2\":\"/416\",\"2.0.3\":\"/417\",\"2.0.4\":\"/419\",\"?\":\"/\"}}},device:{amazon:{model:{\"Fire Phone\":[\"SD\",\"KF\"]}},sprint:{model:{\"Evo Shift 4G\":\"7373KT\"},vendor:{HTC:\"APA\",Sprint:\"Sprint\"}}},os:{windows:{version:{ME:\"4.90\",\"NT 3.11\":\"NT3.51\",\"NT 4.0\":\"NT4.0\",2000:\"NT 5.0\",XP:[\"NT 5.1\",\"NT 5.2\"],Vista:\"NT 6.0\",7:\"NT 6.1\",8:\"NT 6.2\",8.1:\"NT 6.3\",10:[\"NT 6.4\",\"NT 10.0\"],RT:\"ARM\"}}}};var regexes={browser:[[/(opera\\smini)\\/([\\w\\.-]+)/i,/(opera\\s[mobiletab]+).+version\\/([\\w\\.-]+)/i,/(opera).+version\\/([\\w\\.]+)/i,/(opera)[\\/\\s]+([\\w\\.]+)/i],[NAME,VERSION],[/(opios)[\\/\\s]+([\\w\\.]+)/i],[[NAME,\"Opera Mini\"],VERSION],[/\\s(opr)\\/([\\w\\.]+)/i],[[NAME,\"Opera\"],VERSION],[/(kindle)\\/([\\w\\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\\/\\s]?([\\w\\.]*)/i,/(avant\\s|iemobile|slim|baidu)(?:browser)?[\\/\\s]?([\\w\\.]*)/i,/(?:ms|\\()(ie)\\s([\\w\\.]+)/i,/(rekonq)\\/([\\w\\.]*)/i,/(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark)\\/([\\w\\.-]+)/i],[NAME,VERSION],[/(trident).+rv[:\\s]([\\w\\.]+).+like\\sgecko/i],[[NAME,\"IE\"],VERSION],[/(edge|edgios|edgea)\\/((\\d+)?[\\w\\.]+)/i],[[NAME,\"Edge\"],VERSION],[/(yabrowser)\\/([\\w\\.]+)/i],[[NAME,\"Yandex\"],VERSION],[/(puffin)\\/([\\w\\.]+)/i],[[NAME,\"Puffin\"],VERSION],[/((?:[\\s\\/])uc?\\s?browser|(?:juc.+)ucweb)[\\/\\s]?([\\w\\.]+)/i],[[NAME,\"UCBrowser\"],VERSION],[/(comodo_dragon)\\/([\\w\\.]+)/i],[[NAME,/_/g,\" \"],VERSION],[/(micromessenger)\\/([\\w\\.]+)/i],[[NAME,\"WeChat\"],VERSION],[/(qqbrowserlite)\\/([\\w\\.]+)/i],[NAME,VERSION],[/(QQ)\\/([\\d\\.]+)/i],[NAME,VERSION],[/m?(qqbrowser)[\\/\\s]?([\\w\\.]+)/i],[NAME,VERSION],[/(BIDUBrowser)[\\/\\s]?([\\w\\.]+)/i],[NAME,VERSION],[/(2345Explorer)[\\/\\s]?([\\w\\.]+)/i],[NAME,VERSION],[/(MetaSr)[\\/\\s]?([\\w\\.]+)/i],[NAME],[/(LBBROWSER)/i],[NAME],[/xiaomi\\/miuibrowser\\/([\\w\\.]+)/i],[VERSION,[NAME,\"MIUI Browser\"]],[/;fbav\\/([\\w\\.]+);/i],[VERSION,[NAME,\"Facebook\"]],[/headlesschrome(?:\\/([\\w\\.]+)|\\s)/i],[VERSION,[NAME,\"Chrome Headless\"]],[/\\swv\\).+(chrome)\\/([\\w\\.]+)/i],[[NAME,/(.+)/,\"$1 WebView\"],VERSION],[/((?:oculus|samsung)browser)\\/([\\w\\.]+)/i],[[NAME,/(.+(?:g|us))(.+)/,\"$1 $2\"],VERSION],[/android.+version\\/([\\w\\.]+)\\s+(?:mobile\\s?safari|safari)*/i],[VERSION,[NAME,\"Android Browser\"]],[/(chrome|omniweb|arora|[tizenoka]{5}\\s?browser)\\/v?([\\w\\.]+)/i],[NAME,VERSION],[/(dolfin)\\/([\\w\\.]+)/i],[[NAME,\"Dolphin\"],VERSION],[/((?:android.+)crmo|crios)\\/([\\w\\.]+)/i],[[NAME,\"Chrome\"],VERSION],[/(coast)\\/([\\w\\.]+)/i],[[NAME,\"Opera Coast\"],VERSION],[/fxios\\/([\\w\\.-]+)/i],[VERSION,[NAME,\"Firefox\"]],[/version\\/([\\w\\.]+).+?mobile\\/\\w+\\s(safari)/i],[VERSION,[NAME,\"Mobile Safari\"]],[/version\\/([\\w\\.]+).+?(mobile\\s?safari|safari)/i],[VERSION,NAME],[/webkit.+?(gsa)\\/([\\w\\.]+).+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i],[[NAME,\"GSA\"],VERSION],[/webkit.+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i],[NAME,[VERSION,mapper.str,maps.browser.oldsafari.version]],[/(konqueror)\\/([\\w\\.]+)/i,/(webkit|khtml)\\/([\\w\\.]+)/i],[NAME,VERSION],[/(navigator|netscape)\\/([\\w\\.-]+)/i],[[NAME,\"Netscape\"],VERSION],[/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo\\sbrowser|minimo|conkeror)[\\/\\s]?([\\w\\.\\+]+)/i,/(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([\\w\\.-]+)$/i,/(mozilla)\\/([\\w\\.]+).+rv\\:.+gecko\\/\\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\\/\\s]?([\\w\\.]+)/i,/(links)\\s\\(([\\w\\.]+)/i,/(gobrowser)\\/?([\\w\\.]*)/i,/(ice\\s?browser)\\/v?([\\w\\._]+)/i,/(mosaic)[\\/\\s]([\\w\\.]+)/i],[NAME,VERSION]],cpu:[[/(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\\)]/i],[[ARCHITECTURE,\"amd64\"]],[/(ia32(?=;))/i],[[ARCHITECTURE,util.lowerize]],[/((?:i[346]|x)86)[;\\)]/i],[[ARCHITECTURE,\"ia32\"]],[/windows\\s(ce|mobile);\\sppc;/i],[[ARCHITECTURE,\"arm\"]],[/((?:ppc|powerpc)(?:64)?)(?:\\smac|;|\\))/i],[[ARCHITECTURE,/ower/,\"\",util.lowerize]],[/(sun4\\w)[;\\)]/i],[[ARCHITECTURE,\"sparc\"]],[/((?:avr32|ia64(?=;))|68k(?=\\))|arm(?:64|(?=v\\d+;))|(?=atmel\\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i],[[ARCHITECTURE,util.lowerize]]],device:[[/\\((ipad|playbook);[\\w\\s\\);-]+(rim|apple)/i],[MODEL,VENDOR,[TYPE,TABLET]],[/applecoremedia\\/[\\w\\.]+ \\((ipad)/],[MODEL,[VENDOR,\"Apple\"],[TYPE,TABLET]],[/(apple\\s{0,1}tv)/i],[[MODEL,\"Apple TV\"],[VENDOR,\"Apple\"]],[/(archos)\\s(gamepad2?)/i,/(hp).+(touchpad)/i,/(hp).+(tablet)/i,/(kindle)\\/([\\w\\.]+)/i,/\\s(nook)[\\w\\s]+build\\/(\\w+)/i,/(dell)\\s(strea[kpr\\s\\d]*[\\dko])/i],[VENDOR,MODEL,[TYPE,TABLET]],[/(kf[A-z]+)\\sbuild\\/.+silk\\//i],[MODEL,[VENDOR,\"Amazon\"],[TYPE,TABLET]],[/(sd|kf)[0349hijorstuw]+\\sbuild\\/.+silk\\//i],[[MODEL,mapper.str,maps.device.amazon.model],[VENDOR,\"Amazon\"],[TYPE,MOBILE]],[/\\((ip[honed|\\s\\w*]+);.+(apple)/i],[MODEL,VENDOR,[TYPE,MOBILE]],[/\\((ip[honed|\\s\\w*]+);/i],[MODEL,[VENDOR,\"Apple\"],[TYPE,MOBILE]],[/(blackberry)[\\s-]?(\\w+)/i,/(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\\s_-]?([\\w-]*)/i,/(hp)\\s([\\w\\s]+\\w)/i,/(asus)-?(\\w+)/i],[VENDOR,MODEL,[TYPE,MOBILE]],[/\\(bb10;\\s(\\w+)/i],[MODEL,[VENDOR,\"BlackBerry\"],[TYPE,MOBILE]],[/android.+(transfo[prime\\s]{4,10}\\s\\w+|eeepc|slider\\s\\w+|nexus 7|padfone)/i],[MODEL,[VENDOR,\"Asus\"],[TYPE,TABLET]],[/(sony)\\s(tablet\\s[ps])\\sbuild\\//i,/(sony)?(?:sgp.+)\\sbuild\\//i],[[VENDOR,\"Sony\"],[MODEL,\"Xperia Tablet\"],[TYPE,TABLET]],[/android.+\\s([c-g]\\d{4}|so[-l]\\w+)\\sbuild\\//i],[MODEL,[VENDOR,\"Sony\"],[TYPE,MOBILE]],[/\\s(ouya)\\s/i,/(nintendo)\\s([wids3u]+)/i],[VENDOR,MODEL,[TYPE,CONSOLE]],[/android.+;\\s(shield)\\sbuild/i],[MODEL,[VENDOR,\"Nvidia\"],[TYPE,CONSOLE]],[/(playstation\\s[34portablevi]+)/i],[MODEL,[VENDOR,\"Sony\"],[TYPE,CONSOLE]],[/(sprint\\s(\\w+))/i],[[VENDOR,mapper.str,maps.device.sprint.vendor],[MODEL,mapper.str,maps.device.sprint.model],[TYPE,MOBILE]],[/(lenovo)\\s?(S(?:5000|6000)+(?:[-][\\w+]))/i],[VENDOR,MODEL,[TYPE,TABLET]],[/(htc)[;_\\s-]+([\\w\\s]+(?=\\))|\\w+)*/i,/(zte)-(\\w*)/i,/(alcatel|geeksphone|lenovo|nexian|panasonic|(?=;\\s)sony)[_\\s-]?([\\w-]*)/i],[VENDOR,[MODEL,/_/g,\" \"],[TYPE,MOBILE]],[/(nexus\\s9)/i],[MODEL,[VENDOR,\"HTC\"],[TYPE,TABLET]],[/d\\/huawei([\\w\\s-]+)[;\\)]/i,/(nexus\\s6p)/i],[MODEL,[VENDOR,\"Huawei\"],[TYPE,MOBILE]],[/(microsoft);\\s(lumia[\\s\\w]+)/i],[VENDOR,MODEL,[TYPE,MOBILE]],[/[\\s\\(;](xbox(?:\\sone)?)[\\s\\);]/i],[MODEL,[VENDOR,\"Microsoft\"],[TYPE,CONSOLE]],[/(kin\\.[onetw]{3})/i],[[MODEL,/\\./g,\" \"],[VENDOR,\"Microsoft\"],[TYPE,MOBILE]],[/\\s(milestone|droid(?:[2-4x]|\\s(?:bionic|x2|pro|razr))?:?(\\s4g)?)[\\w\\s]+build\\//i,/mot[\\s-]?(\\w*)/i,/(XT\\d{3,4}) build\\//i,/(nexus\\s6)/i],[MODEL,[VENDOR,\"Motorola\"],[TYPE,MOBILE]],[/android.+\\s(mz60\\d|xoom[\\s2]{0,2})\\sbuild\\//i],[MODEL,[VENDOR,\"Motorola\"],[TYPE,TABLET]],[/hbbtv\\/\\d+\\.\\d+\\.\\d+\\s+\\([\\w\\s]*;\\s*(\\w[^;]*);([^;]*)/i],[[VENDOR,util.trim],[MODEL,util.trim],[TYPE,SMARTTV]],[/hbbtv.+maple;(\\d+)/i],[[MODEL,/^/,\"SmartTV\"],[VENDOR,\"Samsung\"],[TYPE,SMARTTV]],[/\\(dtv[\\);].+(aquos)/i],[MODEL,[VENDOR,\"Sharp\"],[TYPE,SMARTTV]],[/android.+((sch-i[89]0\\d|shw-m380s|gt-p\\d{4}|gt-n\\d+|sgh-t8[56]9|nexus 10))/i,/((SM-T\\w+))/i],[[VENDOR,\"Samsung\"],MODEL,[TYPE,TABLET]],[/smart-tv.+(samsung)/i],[VENDOR,[TYPE,SMARTTV],MODEL],[/((s[cgp]h-\\w+|gt-\\w+|galaxy\\snexus|sm-\\w[\\w\\d]+))/i,/(sam[sung]*)[\\s-]*(\\w+-?[\\w-]*)/i,/sec-((sgh\\w+))/i],[[VENDOR,\"Samsung\"],MODEL,[TYPE,MOBILE]],[/sie-(\\w*)/i],[MODEL,[VENDOR,\"Siemens\"],[TYPE,MOBILE]],[/(maemo|nokia).*(n900|lumia\\s\\d+)/i,/(nokia)[\\s_-]?([\\w-]*)/i],[[VENDOR,\"Nokia\"],MODEL,[TYPE,MOBILE]],[/android\\s3\\.[\\s\\w;-]{10}(a\\d{3})/i],[MODEL,[VENDOR,\"Acer\"],[TYPE,TABLET]],[/android.+([vl]k\\-?\\d{3})\\s+build/i],[MODEL,[VENDOR,\"LG\"],[TYPE,TABLET]],[/android\\s3\\.[\\s\\w;-]{10}(lg?)-([06cv9]{3,4})/i],[[VENDOR,\"LG\"],MODEL,[TYPE,TABLET]],[/(lg) netcast\\.tv/i],[VENDOR,MODEL,[TYPE,SMARTTV]],[/(nexus\\s[45])/i,/lg[e;\\s\\/-]+(\\w*)/i,/android.+lg(\\-?[\\d\\w]+)\\s+build/i],[MODEL,[VENDOR,\"LG\"],[TYPE,MOBILE]],[/android.+(ideatab[a-z0-9\\-\\s]+)/i],[MODEL,[VENDOR,\"Lenovo\"],[TYPE,TABLET]],[/linux;.+((jolla));/i],[VENDOR,MODEL,[TYPE,MOBILE]],[/((pebble))app\\/[\\d\\.]+\\s/i],[VENDOR,MODEL,[TYPE,WEARABLE]],[/android.+;\\s(oppo)\\s?([\\w\\s]+)\\sbuild/i],[VENDOR,MODEL,[TYPE,MOBILE]],[/crkey/i],[[MODEL,\"Chromecast\"],[VENDOR,\"Google\"]],[/android.+;\\s(glass)\\s\\d/i],[MODEL,[VENDOR,\"Google\"],[TYPE,WEARABLE]],[/android.+;\\s(pixel c)\\s/i],[MODEL,[VENDOR,\"Google\"],[TYPE,TABLET]],[/android.+;\\s(pixel xl|pixel)\\s/i],[MODEL,[VENDOR,\"Google\"],[TYPE,MOBILE]],[/android.+;\\s(\\w+)\\s+build\\/hm\\1/i,/android.+(hm[\\s\\-_]*note?[\\s_]*(?:\\d\\w)?)\\s+build/i,/android.+(mi[\\s\\-_]*(?:one|one[\\s_]plus|note lte)?[\\s_]*(?:\\d?\\w?)[\\s_]*(?:plus)?)\\s+build/i,/android.+(redmi[\\s\\-_]*(?:note)?(?:[\\s_]*[\\w\\s]+))\\s+build/i],[[MODEL,/_/g,\" \"],[VENDOR,\"Xiaomi\"],[TYPE,MOBILE]],[/android.+(mi[\\s\\-_]*(?:pad)(?:[\\s_]*[\\w\\s]+))\\s+build/i],[[MODEL,/_/g,\" \"],[VENDOR,\"Xiaomi\"],[TYPE,TABLET]],[/android.+;\\s(m[1-5]\\snote)\\sbuild/i],[MODEL,[VENDOR,\"Meizu\"],[TYPE,TABLET]],[/android.+a000(1)\\s+build/i,/android.+oneplus\\s(a\\d{4})\\s+build/i],[MODEL,[VENDOR,\"OnePlus\"],[TYPE,MOBILE]],[/android.+[;\\/]\\s*(RCT[\\d\\w]+)\\s+build/i],[MODEL,[VENDOR,\"RCA\"],[TYPE,TABLET]],[/android.+[;\\/\\s]+(Venue[\\d\\s]{2,7})\\s+build/i],[MODEL,[VENDOR,\"Dell\"],[TYPE,TABLET]],[/android.+[;\\/]\\s*(Q[T|M][\\d\\w]+)\\s+build/i],[MODEL,[VENDOR,\"Verizon\"],[TYPE,TABLET]],[/android.+[;\\/]\\s+(Barnes[&\\s]+Noble\\s+|BN[RT])(V?.*)\\s+build/i],[[VENDOR,\"Barnes & Noble\"],MODEL,[TYPE,TABLET]],[/android.+[;\\/]\\s+(TM\\d{3}.*\\b)\\s+build/i],[MODEL,[VENDOR,\"NuVision\"],[TYPE,TABLET]],[/android.+;\\s(k88)\\sbuild/i],[MODEL,[VENDOR,\"ZTE\"],[TYPE,TABLET]],[/android.+[;\\/]\\s*(gen\\d{3})\\s+build.*49h/i],[MODEL,[VENDOR,\"Swiss\"],[TYPE,MOBILE]],[/android.+[;\\/]\\s*(zur\\d{3})\\s+build/i],[MODEL,[VENDOR,\"Swiss\"],[TYPE,TABLET]],[/android.+[;\\/]\\s*((Zeki)?TB.*\\b)\\s+build/i],[MODEL,[VENDOR,\"Zeki\"],[TYPE,TABLET]],[/(android).+[;\\/]\\s+([YR]\\d{2})\\s+build/i,/android.+[;\\/]\\s+(Dragon[\\-\\s]+Touch\\s+|DT)(\\w{5})\\sbuild/i],[[VENDOR,\"Dragon Touch\"],MODEL,[TYPE,TABLET]],[/android.+[;\\/]\\s*(NS-?\\w{0,9})\\sbuild/i],[MODEL,[VENDOR,\"Insignia\"],[TYPE,TABLET]],[/android.+[;\\/]\\s*((NX|Next)-?\\w{0,9})\\s+build/i],[MODEL,[VENDOR,\"NextBook\"],[TYPE,TABLET]],[/android.+[;\\/]\\s*(Xtreme\\_)?(V(1[045]|2[015]|30|40|60|7[05]|90))\\s+build/i],[[VENDOR,\"Voice\"],MODEL,[TYPE,MOBILE]],[/android.+[;\\/]\\s*(LVTEL\\-)?(V1[12])\\s+build/i],[[VENDOR,\"LvTel\"],MODEL,[TYPE,MOBILE]],[/android.+[;\\/]\\s*(V(100MD|700NA|7011|917G).*\\b)\\s+build/i],[MODEL,[VENDOR,\"Envizen\"],[TYPE,TABLET]],[/android.+[;\\/]\\s*(Le[\\s\\-]+Pan)[\\s\\-]+(\\w{1,9})\\s+build/i],[VENDOR,MODEL,[TYPE,TABLET]],[/android.+[;\\/]\\s*(Trio[\\s\\-]*.*)\\s+build/i],[MODEL,[VENDOR,\"MachSpeed\"],[TYPE,TABLET]],[/android.+[;\\/]\\s*(Trinity)[\\-\\s]*(T\\d{3})\\s+build/i],[VENDOR,MODEL,[TYPE,TABLET]],[/android.+[;\\/]\\s*TU_(1491)\\s+build/i],[MODEL,[VENDOR,\"Rotor\"],[TYPE,TABLET]],[/android.+(KS(.+))\\s+build/i],[MODEL,[VENDOR,\"Amazon\"],[TYPE,TABLET]],[/android.+(Gigaset)[\\s\\-]+(Q\\w{1,9})\\s+build/i],[VENDOR,MODEL,[TYPE,TABLET]],[/\\s(tablet|tab)[;\\/]/i,/\\s(mobile)(?:[;\\/]|\\ssafari)/i],[[TYPE,util.lowerize],VENDOR,MODEL],[/(android[\\w\\.\\s\\-]{0,9});.+build/i],[MODEL,[VENDOR,\"Generic\"]]],engine:[[/windows.+\\sedge\\/([\\w\\.]+)/i],[VERSION,[NAME,\"EdgeHTML\"]],[/(presto)\\/([\\w\\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\\/([\\w\\.]+)/i,/(khtml|tasman|links)[\\/\\s]\\(?([\\w\\.]+)/i,/(icab)[\\/\\s]([23]\\.[\\d\\.]+)/i],[NAME,VERSION],[/rv\\:([\\w\\.]{1,9}).+(gecko)/i],[VERSION,NAME]],os:[[/microsoft\\s(windows)\\s(vista|xp)/i],[NAME,VERSION],[/(windows)\\snt\\s6\\.2;\\s(arm)/i,/(windows\\sphone(?:\\sos)*)[\\s\\/]?([\\d\\.\\s\\w]*)/i,/(windows\\smobile|windows)[\\s\\/]?([ntce\\d\\.\\s]+\\w)/i],[NAME,[VERSION,mapper.str,maps.os.windows.version]],[/(win(?=3|9|n)|win\\s9x\\s)([nt\\d\\.]+)/i],[[NAME,\"Windows\"],[VERSION,mapper.str,maps.os.windows.version]],[/\\((bb)(10);/i],[[NAME,\"BlackBerry\"],VERSION],[/(blackberry)\\w*\\/?([\\w\\.]*)/i,/(tizen)[\\/\\s]([\\w\\.]+)/i,/(android|webos|palm\\sos|qnx|bada|rim\\stablet\\sos|meego|contiki)[\\/\\s-]?([\\w\\.]*)/i,/linux;.+(sailfish);/i],[NAME,VERSION],[/(symbian\\s?os|symbos|s60(?=;))[\\/\\s-]?([\\w\\.]*)/i],[[NAME,\"Symbian\"],VERSION],[/\\((series40);/i],[NAME],[/mozilla.+\\(mobile;.+gecko.+firefox/i],[[NAME,\"Firefox OS\"],VERSION],[/(nintendo|playstation)\\s([wids34portablevu]+)/i,/(mint)[\\/\\s\\(]?(\\w*)/i,/(mageia|vectorlinux)[;\\s]/i,/(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|(?=\\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\\/\\s-]?(?!chrom)([\\w\\.-]*)/i,/(hurd|linux)\\s?([\\w\\.]*)/i,/(gnu)\\s?([\\w\\.]*)/i],[NAME,VERSION],[/(cros)\\s[\\w]+\\s([\\w\\.]+\\w)/i],[[NAME,\"Chromium OS\"],VERSION],[/(sunos)\\s?([\\w\\.\\d]*)/i],[[NAME,\"Solaris\"],VERSION],[/\\s([frentopc-]{0,4}bsd|dragonfly)\\s?([\\w\\.]*)/i],[NAME,VERSION],[/(haiku)\\s(\\w+)/i],[NAME,VERSION],[/cfnetwork\\/.+darwin/i,/ip[honead]{2,4}(?:.*os\\s([\\w]+)\\slike\\smac|;\\sopera)/i],[[VERSION,/_/g,\".\"],[NAME,\"iOS\"]],[/(mac\\sos\\sx)\\s?([\\w\\s\\.]*)/i,/(macintosh|mac(?=_powerpc)\\s)/i],[[NAME,\"Mac OS\"],[VERSION,/_/g,\".\"]],[/((?:open)?solaris)[\\/\\s-]?([\\w\\.]*)/i,/(aix)\\s((\\d)(?=\\.|\\)|\\s)[\\w\\.])*/i,/(plan\\s9|minix|beos|os\\/2|amigaos|morphos|risc\\sos|openvms)/i,/(unix)\\s?([\\w\\.]*)/i],[NAME,VERSION]]};var UAParser=function(uastring,extensions){if(typeof uastring===\"object\"){extensions=uastring;uastring=undefined}if(!(this instanceof UAParser)){return new UAParser(uastring,extensions).getResult()}var ua=uastring||(window&&window.navigator&&window.navigator.userAgent?window.navigator.userAgent:EMPTY);var rgxmap=extensions?util.extend(regexes,extensions):regexes;this.getBrowser=function(){var browser={name:undefined,version:undefined};mapper.rgx.call(browser,ua,rgxmap.browser);browser.major=util.major(browser.version);return browser};this.getCPU=function(){var cpu={architecture:undefined};mapper.rgx.call(cpu,ua,rgxmap.cpu);return cpu};this.getDevice=function(){var device={vendor:undefined,model:undefined,type:undefined};mapper.rgx.call(device,ua,rgxmap.device);return device};this.getEngine=function(){var engine={name:undefined,version:undefined};mapper.rgx.call(engine,ua,rgxmap.engine);return engine};this.getOS=function(){var os={name:undefined,version:undefined};mapper.rgx.call(os,ua,rgxmap.os);return os};this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}};this.getUA=function(){return ua};this.setUA=function(uastring){ua=uastring;return this};return this};UAParser.VERSION=LIBVERSION;UAParser.BROWSER={NAME:NAME,MAJOR:MAJOR,VERSION:VERSION};UAParser.CPU={ARCHITECTURE:ARCHITECTURE};UAParser.DEVICE={MODEL:MODEL,VENDOR:VENDOR,TYPE:TYPE,CONSOLE:CONSOLE,MOBILE:MOBILE,SMARTTV:SMARTTV,TABLET:TABLET,WEARABLE:WEARABLE,EMBEDDED:EMBEDDED};UAParser.ENGINE={NAME:NAME,VERSION:VERSION};UAParser.OS={NAME:NAME,VERSION:VERSION};if(typeof exports!==UNDEF_TYPE){if(typeof module!==UNDEF_TYPE&&module.exports){exports=module.exports=UAParser}exports.UAParser=UAParser}else{if(\"function\"===FUNC_TYPE&&__webpack_require__(3)){!(__WEBPACK_AMD_DEFINE_RESULT__ = (function(){return UAParser}).call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))}else if(window){window.UAParser=UAParser}}var $=window&&(window.jQuery||window.Zepto);if(typeof $!==UNDEF_TYPE){var parser=new UAParser;$.ua=parser.getResult();$.ua.get=function(){return parser.getUA()};$.ua.set=function(uastring){parser.setUA(uastring);var result=parser.getResult();for(var prop in result){$.ua[prop]=result[prop]}}}})(typeof window===\"object\"?window:this);\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n/* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {/* globals __webpack_amd_options__ */\r\nmodule.exports = __webpack_amd_options__;\r\n\n/* WEBPACK VAR INJECTION */}.call(exports, {}))\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _require = __webpack_require__(0),\n DEVICE_TYPES = _require.DEVICE_TYPES,\n defaultData = _require.defaultData;\n\nvar checkType = function checkType(type) {\n switch (type) {\n case DEVICE_TYPES.MOBILE:\n return { isMobile: true };\n case DEVICE_TYPES.TABLET:\n return { isTablet: true };\n case DEVICE_TYPES.SMART_TV:\n return { isSmartTV: true };\n case DEVICE_TYPES.CONSOLE:\n return { isConsole: true };\n case DEVICE_TYPES.WEARABLE:\n return { isWearable: true };\n case DEVICE_TYPES.BROWSER:\n return { isBrowser: true };\n default:\n return defaultData;\n }\n};\n\nvar broPayload = function broPayload(isBrowser, browser, engine, os, ua) {\n return {\n isBrowser: isBrowser,\n browserMajorVersion: browser.major,\n browserFullVersion: browser.version,\n browserName: browser.name,\n engineName: engine.name || false,\n engineVersion: engine.version,\n osName: os.name,\n osVersion: os.version,\n userAgent: ua\n };\n};\n\nvar mobilePayload = function mobilePayload(type, device, os, ua) {\n return _extends({}, type, {\n vendor: device.vendor,\n model: device.model,\n os: os.name,\n osVersion: os.version,\n ua: ua\n });\n};\n\nvar stvPayload = function stvPayload(isSmartTV, engine, os, ua) {\n return {\n isSmartTV: isSmartTV,\n engineName: engine.name,\n engineVersion: engine.version,\n osName: os.name,\n osVersion: os.version,\n userAgent: ua\n };\n};\n\nvar consolePayload = function consolePayload(isConsole, engine, os, ua) {\n return {\n isConsole: isConsole,\n engineName: engine.name,\n engineVersion: engine.version,\n osName: os.name,\n osVersion: os.version,\n userAgent: ua\n };\n};\n\nvar wearPayload = function wearPayload(isWearable, engine, os, ua) {\n return {\n isWearable: isWearable,\n engineName: engine.name,\n engineVersion: engine.version,\n osName: os.name,\n osVersion: os.version,\n userAgent: ua\n };\n};\n\nvar getNavigatorInstance = exports.getNavigatorInstance = function getNavigatorInstance() {\n if (typeof window !== 'undefined') {\n if (window.navigator || navigator) {\n return window.navigator || navigator;\n }\n }\n\n return false;\n};\n\nvar isIOS13Check = exports.isIOS13Check = function isIOS13Check(type) {\n var nav = getNavigatorInstance();\n return nav && nav.platform && (nav.platform.indexOf(type) !== -1 || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1 && !window.MSStream);\n};\n\nmodule.exports = {\n checkType: checkType,\n broPayload: broPayload,\n mobilePayload: mobilePayload,\n stvPayload: stvPayload,\n consolePayload: consolePayload,\n wearPayload: wearPayload,\n getNavigatorInstance: getNavigatorInstance,\n isIOS13Check: isIOS13Check\n};\n\n/***/ })\n/******/ ]);","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n '_'\n ),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n ); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1, // Maandag is die eerste dag van die week.\n doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n },\n });\n\n return af;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'جانفي',\n 'فيفري',\n 'مارس',\n 'أفريل',\n 'ماي',\n 'جوان',\n 'جويلية',\n 'أوت',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arDz = moment.defineLocale('ar-dz', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arKw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Libya) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 0: '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arLy = moment.defineLocale('ar-ly', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arLy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arMa = moment.defineLocale('ar-ma', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arMa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n var arSa = moment.defineLocale('ar-sa', {\n months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return arSa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort:\n 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arTn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var ar = moment.defineLocale('ar', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı',\n };\n\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n '_'\n ),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays:\n 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n '_'\n ),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gələn həftə] dddd [saat] LT',\n lastDay: '[dünən] LT',\n lastWeek: '[keçən həftə] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s əvvəl',\n s: 'bir neçə saniyə',\n ss: '%d saniyə',\n m: 'bir dəqiqə',\n mm: '%d dəqiqə',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il',\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM: function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return az;\n\n})));\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'месяц_месяцы_месяцаў',\n yy: 'год_гады_гадоў',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var be = moment.defineLocale('be', {\n months: {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n '_'\n ),\n standalone:\n 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n '_'\n ),\n },\n monthsShort:\n 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),\n weekdays: {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n '_'\n ),\n standalone:\n 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n '_'\n ),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n },\n weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n },\n calendar: {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі секунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM: function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) &&\n number % 100 !== 12 &&\n number % 100 !== 13\n ? number + '-і'\n : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bg = moment.defineLocale('bg', {\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Миналия] dddd [в] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дена',\n w: 'седмица',\n ww: '%d седмици',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bm = moment.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n '_'\n ),\n monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n },\n calendar: {\n sameDay: '[Bi lɛrɛ] LT',\n nextDay: '[Sini lɛrɛ] LT',\n nextWeek: 'dddd [don lɛrɛ] LT',\n lastDay: '[Kunu lɛrɛ] LT',\n lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s kɔnɔ',\n past: 'a bɛ %s bɔ',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lɛrɛ kelen',\n hh: 'lɛrɛ %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return bm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali (Bangladesh) [bn-bd]\n//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bnBd = moment.defineLocale('bn-bd', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort:\n 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n\n meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'রাত') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ভোর') {\n return hour;\n } else if (meridiem === 'সকাল') {\n return hour;\n } else if (meridiem === 'দুপুর') {\n return hour >= 3 ? hour : hour + 12;\n } else if (meridiem === 'বিকাল') {\n return hour + 12;\n } else if (meridiem === 'সন্ধ্যা') {\n return hour + 12;\n }\n },\n\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 6) {\n return 'ভোর';\n } else if (hour < 12) {\n return 'সকাল';\n } else if (hour < 15) {\n return 'দুপুর';\n } else if (hour < 18) {\n return 'বিকাল';\n } else if (hour < 20) {\n return 'সন্ধ্যা';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bnBd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bn = moment.defineLocale('bn', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort:\n 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '༡',\n 2: '༢',\n 3: '༣',\n 4: '༤',\n 5: '༥',\n 6: '༦',\n 7: '༧',\n 8: '༨',\n 9: '༩',\n 0: '༠',\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0',\n };\n\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n '_'\n ),\n monthsShort:\n 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n '_'\n ),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays:\n 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n '_'\n ),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n '_'\n ),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[ཁ་སང] LT',\n lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སྐར་ཆ།',\n m: 'སྐར་མ་གཅིག',\n mm: '%d སྐར་མ',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ',\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh',\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z',\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var monthsParse = [\n /^gen/i,\n /^c[ʼ\\']hwe/i,\n /^meu/i,\n /^ebr/i,\n /^mae/i,\n /^(mez|eve)/i,\n /^gou/i,\n /^eos/i,\n /^gwe/i,\n /^her/i,\n /^du/i,\n /^ker/i,\n ],\n monthsRegex =\n /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex =\n /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex =\n /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [\n /^sul/i,\n /^lun/i,\n /^meurzh/i,\n /^merc[ʼ\\']her/i,\n /^yaou/i,\n /^gwener/i,\n /^sadorn/i,\n ],\n shortWeekdaysParse = [\n /^Sul/i,\n /^Lun/i,\n /^Meu/i,\n /^Mer/i,\n /^Yao/i,\n /^Gwe/i,\n /^Sad/i,\n ],\n minWeekdaysParse = [\n /^Su/i,\n /^Lu/i,\n /^Me([^r]|$)/i,\n /^Mer/i,\n /^Ya/i,\n /^Gw/i,\n /^Sa/i,\n ];\n\n var br = moment.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n '_'\n ),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n },\n });\n\n return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ca = moment.defineLocale('ca', {\n months: {\n standalone:\n 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n '_'\n ),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort:\n 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [passat a ' +\n (this.hours() !== 1 ? 'les' : 'la') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ca;\n\n})));\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = {\n format: 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n '_'\n ),\n standalone:\n 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split(\n '_'\n ),\n },\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n monthsParse = [\n /^led/i,\n /^úno/i,\n /^bře/i,\n /^dub/i,\n /^kvě/i,\n /^(čvn|červen$|června)/i,\n /^(čvc|červenec|července)/i,\n /^srp/i,\n /^zář/i,\n /^říj/i,\n /^lis/i,\n /^pro/i,\n ],\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsRegex =\n /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex:\n /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex:\n /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY',\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n '_'\n ),\n monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays:\n 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n '_'\n ),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n },\n calendar: {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (output) {\n var affix = /сехет$/i.exec(output)\n ? 'рен'\n : /ҫул$/i.exec(output)\n ? 'тан'\n : 'ран';\n return output + affix;\n },\n past: '%s каялла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр сехет',\n hh: '%d сехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n '_'\n ),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n '_'\n ),\n weekdays:\n 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n '_'\n ),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '',\n 'af',\n 'il',\n 'ydd',\n 'ydd',\n 'ed',\n 'ed',\n 'ed',\n 'fed',\n 'fed',\n 'fed', // 1af to 10fed\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'fed', // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'på dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'få sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en måned',\n MM: '%d måneder',\n y: 'et år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return da;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deAt = moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު',\n ],\n weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު',\n ];\n\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /މކ|މފ/,\n isPM: function (input) {\n return 'މފ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar: {\n sameDay: '[މިއަދު] LT',\n nextDay: '[މާދަމާ] LT',\n nextWeek: 'dddd LT',\n lastDay: '[އިއްޔެ] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ތެރޭގައި %s',\n past: 'ކުރިން %s',\n s: 'ސިކުންތުކޮޅެއް',\n ss: 'd% ސިކުންތު',\n m: 'މިނިޓެއް',\n mm: 'މިނިޓު %d',\n h: 'ގަޑިއިރެއް',\n hh: 'ގަޑިއިރު %d',\n d: 'ދުވަހެއް',\n dd: 'ދުވަސް %d',\n M: 'މަހެއް',\n MM: 'މަސް %d',\n y: 'އަހަރެއް',\n yy: 'އަހަރު %d',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 7, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n var el = moment.defineLocale('el', {\n monthsNominativeEl:\n 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n '_'\n ),\n monthsGenitiveEl:\n 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n '_'\n ),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (\n typeof format === 'string' &&\n /D/.test(format.substring(0, format.indexOf('MMMM')))\n ) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n '_'\n ),\n weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendarEl: {\n sameDay: '[Σήμερα {}] LT',\n nextDay: '[Αύριο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L',\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s πριν',\n s: 'λίγα δευτερόλεπτα',\n ss: '%d δευτερόλεπτα',\n m: 'ένα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ώρα',\n hh: '%d ώρες',\n d: 'μία μέρα',\n dd: '%d μέρες',\n M: 'ένας μήνας',\n MM: '%d μήνες',\n y: 'ένας χρόνος',\n yy: '%d χρόνια',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4st is the first week of the year.\n },\n });\n\n return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enIe;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enIl;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return enIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enSg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[Hodiaŭ je] LT',\n nextDay: '[Morgaŭ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[Hieraŭ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaŭ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esMx = moment.defineLocale('es-mx', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return esMx;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return esUs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat'],\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n '_'\n ),\n monthsShort:\n 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n weekdays:\n 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n '_'\n ),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d päeva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return et;\n\n})));\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n '_'\n ),\n monthsShort:\n 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n '_'\n ),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '۱',\n 2: '۲',\n 3: '۳',\n 4: '۴',\n 5: '۵',\n 6: '۶',\n 7: '۷',\n 8: '۸',\n 9: '۹',\n 0: '۰',\n },\n numberMap = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0',\n };\n\n var fa = moment.defineLocale('fa', {\n months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n monthsShort:\n 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n weekdays:\n 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysShort:\n 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[فردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string\n .replace(/[۰-۹]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal: '%dم',\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return fa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersPast =\n 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n ' '\n ),\n numbersFuture = [\n 'nolla',\n 'yhden',\n 'kahden',\n 'kolmen',\n 'neljän',\n 'viiden',\n 'kuuden',\n numbersPast[7],\n numbersPast[8],\n numbersPast[9],\n ];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n result = isFuture ? 'sekunnin' : 'sekuntia';\n break;\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10\n ? isFuture\n ? numbersFuture[number]\n : numbersPast[number]\n : number;\n }\n\n var fi = moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n '_'\n ),\n monthsShort:\n 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n '_'\n ),\n weekdays:\n 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n '_'\n ),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays:\n 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Í dag kl.] LT',\n nextDay: '[Í morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[Í gjár kl.] LT',\n lastWeek: '[síðstu] dddd [kl] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'um %s',\n past: '%s síðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tími',\n hh: '%d tímar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fo;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsStrictRegex =\n /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsParse = [\n /^janv/i,\n /^févr/i,\n /^mars/i,\n /^avr/i,\n /^mai/i,\n /^juin/i,\n /^juil/i,\n /^août/i,\n /^sept/i,\n /^oct/i,\n /^nov/i,\n /^déc/i,\n ];\n\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n '_'\n ),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Eanáir',\n 'Feabhra',\n 'Márta',\n 'Aibreán',\n 'Bealtaine',\n 'Meitheamh',\n 'Iúil',\n 'Lúnasa',\n 'Meán Fómhair',\n 'Deireadh Fómhair',\n 'Samhain',\n 'Nollaig',\n ],\n monthsShort = [\n 'Ean',\n 'Feabh',\n 'Márt',\n 'Aib',\n 'Beal',\n 'Meith',\n 'Iúil',\n 'Lún',\n 'M.F.',\n 'D.F.',\n 'Samh',\n 'Noll',\n ],\n weekdays = [\n 'Dé Domhnaigh',\n 'Dé Luain',\n 'Dé Máirt',\n 'Dé Céadaoin',\n 'Déardaoin',\n 'Dé hAoine',\n 'Dé Sathairn',\n ],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d míonna',\n y: 'bliain',\n yy: '%d bliain',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ga;\n\n})));\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Am Faoilleach',\n 'An Gearran',\n 'Am Màrt',\n 'An Giblean',\n 'An Cèitean',\n 'An t-Ògmhios',\n 'An t-Iuchar',\n 'An Lùnastal',\n 'An t-Sultain',\n 'An Dàmhair',\n 'An t-Samhain',\n 'An Dùbhlachd',\n ],\n monthsShort = [\n 'Faoi',\n 'Gear',\n 'Màrt',\n 'Gibl',\n 'Cèit',\n 'Ògmh',\n 'Iuch',\n 'Lùn',\n 'Sult',\n 'Dàmh',\n 'Samh',\n 'Dùbh',\n ],\n weekdays = [\n 'Didòmhnaich',\n 'Diluain',\n 'Dimàirt',\n 'Diciadain',\n 'Diardaoin',\n 'Dihaoine',\n 'Disathairne',\n ],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n var gd = moment.defineLocale('gd', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-màireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n '_'\n ),\n monthsShort:\n 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return (\n '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['एका मिणटान', 'एक मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['एका वरान', 'एक वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['एका दिसान', 'एक दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['एका म्हयन्यान', 'एक म्हयनो'],\n MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n y: ['एका वर्सान', 'एक वर्स'],\n yy: [number + ' वर्सांनी', number + ' वर्सां'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone:\n 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort:\n 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फाल्यां] LT',\n nextWeek: '[फुडलो] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n },\n });\n\n return gomDeva;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone:\n 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n '_'\n ),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort:\n 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n },\n });\n\n return gomLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '૧',\n 2: '૨',\n 3: '૩',\n 4: '૪',\n 5: '૫',\n 6: '૬',\n 7: '૭',\n 8: '૮',\n 9: '૯',\n 0: '૦',\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0',\n };\n\n var gu = moment.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n '_'\n ),\n monthsShort:\n 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n '_'\n ),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પહેલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ',\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return gu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var he = moment.defineLocale('he', {\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n '_'\n ),\n monthsShort:\n 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d: 'יום',\n dd: function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M: 'חודש',\n MM: function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y: 'שנה',\n yy: function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n },\n },\n meridiemParse:\n /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM: function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n },\n });\n\n return he;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n },\n monthsParse = [\n /^जन/i,\n /^फ़र|फर/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सितं|सित/i,\n /^अक्टू/i,\n /^नव|नवं/i,\n /^दिसं|दिस/i,\n ],\n shortMonthsParse = [\n /^जन/i,\n /^फ़र/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सित/i,\n /^अक्टू/i,\n /^नव/i,\n /^दिस/i,\n ];\n\n var hi = moment.defineLocale('hi', {\n months: {\n format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n '_'\n ),\n standalone:\n 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(\n '_'\n ),\n },\n monthsShort:\n 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n },\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: shortMonthsParse,\n\n monthsRegex:\n /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsShortRegex:\n /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsStrictRegex:\n /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n\n monthsShortStrictRegex:\n /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return hi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n '_'\n ),\n standalone:\n 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n '_'\n ),\n },\n monthsShort:\n 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prošlu] [nedjelju] [u] LT';\n case 3:\n return '[prošlu] [srijedu] [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n//! author : Peter Viszt : https://github.com/passatgt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var weekEndings =\n 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix\n ? 'néhány másodperc'\n : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix)\n ? ' másodperc'\n : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (\n (isFuture ? '' : '[múlt] ') +\n '[' +\n weekEndings[this.day()] +\n '] LT[-kor]'\n );\n }\n\n var hu = moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm',\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n '_'\n ),\n standalone:\n 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n '_'\n ),\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays:\n 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n '_'\n ),\n weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY թ.',\n LLL: 'D MMMM YYYY թ., HH:mm',\n LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n },\n calendar: {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s հետո',\n past: '%s առաջ',\n s: 'մի քանի վայրկյան',\n ss: '%d վայրկյան',\n m: 'րոպե',\n mm: '%d րոպե',\n h: 'ժամ',\n hh: '%d ժամ',\n d: 'օր',\n dd: '%d օր',\n M: 'ամիս',\n MM: '%d ամիս',\n y: 'տարի',\n yy: '%d տարի',\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return id;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nokkrar sekúndur'\n : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n );\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural(number)) {\n return (\n result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n );\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture\n ? 'klukkustundir'\n : 'klukkustundum')\n );\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n var is = moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays:\n 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n },\n calendar: {\n sameDay: '[í dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[í gær kl.] LT',\n lastWeek: '[síðasta] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s síðan',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return itCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n w: 'una settimana',\n ww: '%d settimane',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ja = moment.defineLocale('ja', {\n eras: [\n {\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: '㋿',\n abbr: 'R',\n },\n {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '平成',\n narrow: '㍻',\n abbr: 'H',\n },\n {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '昭和',\n narrow: '㍼',\n abbr: 'S',\n },\n {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大正',\n narrow: '㍽',\n abbr: 'T',\n },\n {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: '㍾',\n abbr: 'M',\n },\n {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元前',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n eraYearOrdinalRegex: /(元|\\d+)年/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日(ddd) HH:mm',\n },\n meridiemParse: /午前|午後/i,\n isPM: function (input) {\n return input === '午後';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + '年';\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年',\n },\n });\n\n return ja;\n\n})));\n","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var jv = moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return jv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ka = moment.defineLocale('ka', {\n months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n '_'\n ),\n monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays: {\n standalone:\n 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n '_'\n ),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n '_'\n ),\n isFormat: /(წინა|შემდეგ)/,\n },\n weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვალ] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინა] dddd LT-ზე',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return s.replace(\n /(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,\n function ($0, $1, $2) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n }\n );\n },\n past: function (s) {\n if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n return s;\n },\n s: 'რამდენიმე წამი',\n ss: '%d წამი',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'საათი',\n hh: '%d საათი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი',\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if (\n number < 20 ||\n (number <= 100 && number % 20 === 0) ||\n number % 100 === 0\n ) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7,\n },\n });\n\n return ka;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші',\n };\n\n var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n '_'\n ),\n monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n '_'\n ),\n weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгін сағат] LT',\n nextDay: '[Ертең сағат] LT',\n nextWeek: 'dddd [сағат] LT',\n lastDay: '[Кеше сағат] LT',\n lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше секунд',\n ss: '%d секунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір сағат',\n hh: '%d сағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '១',\n 2: '២',\n 3: '៣',\n 4: '៤',\n 5: '៥',\n 6: '៦',\n 7: '៧',\n 8: '៨',\n 9: '៩',\n 0: '០',\n },\n numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0',\n };\n\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort:\n 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ',\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return km;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '೧',\n 2: '೨',\n 3: '೩',\n 4: '೪',\n 5: '೫',\n 6: '೬',\n 7: '೭',\n 8: '೮',\n 9: '೯',\n 0: '೦',\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0',\n };\n\n var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n '_'\n ),\n monthsShort:\n 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n '_'\n ),\n weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[ಇಂದು] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನ್ನೆ] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss: '%d ಸೆಕೆಂಡುಗಳು',\n m: 'ಒಂದು ನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದು ಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದು ದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದು ತಿಂಗಳು',\n MM: '%d ತಿಂಗಳು',\n y: 'ಒಂದು ವರ್ಷ',\n yy: '%d ವರ್ಷ',\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return kn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee <jeeeyul@gmail.com>\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ko = moment.defineLocale('ko', {\n months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n '_'\n ),\n weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY년 MMMM D일',\n LLL: 'YYYY년 MMMM D일 A h:mm',\n LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYY년 MMMM D일',\n lll: 'YYYY년 MMMM D일 A h:mm',\n llll: 'YYYY년 MMMM D일 dddd A h:mm',\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: '내일 LT',\n nextWeek: 'dddd LT',\n lastDay: '어제 LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s 후',\n past: '%s 전',\n s: '몇 초',\n ss: '%d초',\n m: '1분',\n mm: '%d분',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%d일',\n M: '한 달',\n MM: '%d달',\n y: '일 년',\n yy: '%d년',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n case 'M':\n return number + '월';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse: /오전|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n },\n });\n\n return ko;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n months = [\n 'کانونی دووەم',\n 'شوبات',\n 'ئازار',\n 'نیسان',\n 'ئایار',\n 'حوزەیران',\n 'تەمموز',\n 'ئاب',\n 'ئەیلوول',\n 'تشرینی یەكەم',\n 'تشرینی دووەم',\n 'كانونی یەکەم',\n ];\n\n var ku = moment.defineLocale('ku', {\n months: months,\n monthsShort: months,\n weekdays:\n 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysShort:\n 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),\n weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ئێواره‌|به‌یانی/,\n isPM: function (input) {\n return /ئێواره‌/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'به‌یانی';\n } else {\n return 'ئێواره‌';\n }\n },\n calendar: {\n sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n nextDay: '[به‌یانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'له‌ %s',\n past: '%s',\n s: 'چه‌ند چركه‌یه‌ك',\n ss: 'چركه‌ %d',\n m: 'یه‌ك خوله‌ك',\n mm: '%d خوله‌ك',\n h: 'یه‌ك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یه‌ك ڕۆژ',\n dd: '%d ڕۆژ',\n M: 'یه‌ك مانگ',\n MM: '%d مانگ',\n y: 'یه‌ك ساڵ',\n yy: '%d ساڵ',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ku;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү',\n };\n\n var ky = moment.defineLocale('ky', {\n months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n '_'\n ),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n '_'\n ),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгүн саат] LT',\n nextDay: '[Эртең саат] LT',\n nextWeek: 'dddd [саат] LT',\n lastDay: '[Кечээ саат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече секунд',\n ss: '%d секунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир саат',\n hh: '%d саат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ky;\n\n})));\n","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n '_'\n ),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n },\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d Méint',\n y: processRelativeTime,\n yy: '%d Joer',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var lo = moment.defineLocale('lo', {\n months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n monthsShort:\n 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້ອື່ນເວລາ] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ອີກ %s',\n past: '%sຜ່ານມາ',\n s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືອນ',\n MM: '%d ເດືອນ',\n y: '1 ປີ',\n yy: '%d ປີ',\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function (number) {\n return 'ທີ່' + number;\n },\n });\n\n return lo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundė_sekundžių_sekundes',\n m: 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h: 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M: 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus',\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix\n ? forms(key)[0]\n : isFuture\n ? forms(key)[1]\n : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return (\n result + translateSingular(number, withoutSuffix, key[0], isFuture)\n );\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n '_'\n ),\n standalone:\n 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n '_'\n ),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n '_'\n ),\n standalone:\n 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n '_'\n ),\n isFormat: /dddd HH:mm/,\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n },\n calendar: {\n sameDay: '[Šiandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[Praėjusį] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieš %s',\n s: translateSeconds,\n ss: translate,\n m: translateSingular,\n mm: translate,\n h: translateSingular,\n hh: translate,\n d: translateSingular,\n dd: translate,\n M: translateSingular,\n MM: translate,\n y: translateSingular,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n h: 'stundas_stundām_stunda_stundas'.split('_'),\n hh: 'stundas_stundām_stunda_stundas'.split('_'),\n d: 'dienas_dienām_diena_dienas'.split('_'),\n dd: 'dienas_dienām_diena_dienas'.split('_'),\n M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_'),\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n }\n\n var lv = moment.defineLocale('lv', {\n months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays:\n 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n '_'\n ),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n },\n calendar: {\n sameDay: '[Šodien pulksten] LT',\n nextDay: '[Rīt pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[Pagājušā] dddd [pulksten] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'pēc %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač <miodrag@restartit.me> : https://github.com/miodragnikac\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return me;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan <robbiecloset@gmail.com> : https://github.com/johnideal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n '_'\n ),\n monthsShort:\n 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n '_'\n ),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Денес во] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку секунди',\n ss: '%d секунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден час',\n hh: '%d часа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден месец',\n MM: '%d месеци',\n y: 'една година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return mk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ml = moment.defineLocale('ml', {\n months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n '_'\n ),\n monthsShort:\n 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n '_'\n ),\n weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -നു',\n LTS: 'A h:mm:ss -നു',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -നു',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n },\n calendar: {\n sameDay: '[ഇന്ന്] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇന്നലെ] LT',\n lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s കഴിഞ്ഞ്',\n past: '%s മുൻപ്',\n s: 'അൽപ നിമിഷങ്ങൾ',\n ss: '%d സെക്കൻഡ്',\n m: 'ഒരു മിനിറ്റ്',\n mm: '%d മിനിറ്റ്',\n h: 'ഒരു മണിക്കൂർ',\n hh: '%d മണിക്കൂർ',\n d: 'ഒരു ദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരു മാസം',\n MM: '%d മാസം',\n y: 'ഒരു വർഷം',\n yy: '%d വർഷം',\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n },\n });\n\n return ml;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n '_'\n ),\n monthsShort:\n '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n },\n });\n\n return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n case 'ss':\n output = '%d सेकंद';\n break;\n case 'm':\n output = 'एक मिनिट';\n break;\n case 'mm':\n output = '%d मिनिटे';\n break;\n case 'h':\n output = 'एक तास';\n break;\n case 'hh':\n output = '%d तास';\n break;\n case 'd':\n output = 'एक दिवस';\n break;\n case 'dd':\n output = '%d दिवस';\n break;\n case 'M':\n output = 'एक महिना';\n break;\n case 'MM':\n output = '%d महिने';\n break;\n case 'y':\n output = 'एक वर्ष';\n break;\n case 'yy':\n output = '%d वर्षे';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n case 'ss':\n output = '%d सेकंदां';\n break;\n case 'm':\n output = 'एका मिनिटा';\n break;\n case 'mm':\n output = '%d मिनिटां';\n break;\n case 'h':\n output = 'एका तासा';\n break;\n case 'hh':\n output = '%d तासां';\n break;\n case 'd':\n output = 'एका दिवसा';\n break;\n case 'dd':\n output = '%d दिवसां';\n break;\n case 'M':\n output = 'एका महिन्या';\n break;\n case 'MM':\n output = '%d महिन्यां';\n break;\n case 'y':\n output = 'एका वर्षा';\n break;\n case 'yy':\n output = '%d वर्षां';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n var mr = moment.defineLocale('mr', {\n months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n monthsShort:\n 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उद्या] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr,\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (\n meridiem === 'दुपारी' ||\n meridiem === 'सायंकाळी' ||\n meridiem === 'रात्री'\n ) {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return msMy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays:\n 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n '_'\n ),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'ġurnata',\n dd: '%d ġranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '၁',\n 2: '၂',\n 3: '၃',\n 4: '၄',\n 5: '၅',\n 6: '၆',\n 7: '၇',\n 8: '၈',\n 9: '၉',\n 0: '၀',\n },\n numberMap = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0',\n };\n\n var my = moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n '_'\n ),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n '_'\n ),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်',\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return my;\n\n})));\n","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dager',\n w: 'en uke',\n ww: '%d uker',\n M: 'en måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var ne = moment.defineLocale('ne', {\n months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n '_'\n ),\n monthsShort:\n 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n '_'\n ),\n weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[भोलि] LT',\n nextWeek: '[आउँदो] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गएको] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही क्षण',\n ss: '%d सेकेण्ड',\n m: 'एक मिनेट',\n mm: '%d मिनेट',\n h: 'एक घण्टा',\n hh: '%d घण्टा',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महिना',\n MM: '%d महिना',\n y: 'एक बर्ष',\n yy: '%d बर्ष',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex =\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex =\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n w: 'één week',\n ww: '%d weken',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nn = moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n w: 'ei veke',\n ww: '%d veker',\n M: 'ein månad',\n MM: '%d månader',\n y: 'eit år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone:\n 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n '_'\n ),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort:\n 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4,\n },\n });\n\n return ocLnc;\n\n})));\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '੧',\n 2: '੨',\n 3: '੩',\n 4: '੪',\n 5: '੫',\n 6: '੬',\n 7: '੭',\n 8: '੮',\n 9: '੯',\n 0: '੦',\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0',\n };\n\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n monthsShort:\n 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n '_'\n ),\n weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕੁਝ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ',\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return paIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsNominative =\n 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n '_'\n ),\n monthsSubjective =\n 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n '_'\n ),\n monthsParse = [\n /^sty/i,\n /^lut/i,\n /^mar/i,\n /^kwi/i,\n /^maj/i,\n /^cze/i,\n /^lip/i,\n /^sie/i,\n /^wrz/i,\n /^paź/i,\n /^lis/i,\n /^gru/i,\n ];\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'ww':\n return result + (plural(number) ? 'tygodnie' : 'tygodni');\n case 'MM':\n return result + (plural(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays:\n 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzień',\n dd: '%d dni',\n w: 'tydzień',\n ww: translate,\n M: 'miesiąc',\n MM: translate,\n y: 'rok',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays:\n 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n invalidDate: 'Data inválida',\n });\n\n return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays:\n 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n '_'\n ),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n w: 'uma semana',\n ww: '%d semanas',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n ww: 'săptămâni',\n MM: 'luni',\n yy: 'ani',\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n '_'\n ),\n monthsShort:\n 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n w: 'o săptămână',\n ww: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural,\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n ww: 'неделя_недели_недель',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет',\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [\n /^янв/i,\n /^фев/i,\n /^мар/i,\n /^апр/i,\n /^ма[йя]/i,\n /^июн/i,\n /^июл/i,\n /^авг/i,\n /^сен/i,\n /^окт/i,\n /^ноя/i,\n /^дек/i,\n ];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n '_'\n ),\n standalone:\n 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n standalone:\n 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n },\n weekdays: {\n standalone:\n 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n '_'\n ),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n '_'\n ),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex:\n /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex:\n /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex:\n /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соответствует только сокращённым формам\n monthsShortStrictRegex:\n /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm',\n },\n calendar: {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'час',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n w: 'неделя',\n ww: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM: function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر',\n ],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين هفتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل هفتي] dddd [تي] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'هڪ منٽ',\n mm: '%d منٽ',\n h: 'هڪ ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'هڪ ڏينهن',\n dd: '%d ڏينهن',\n M: 'هڪ مهينو',\n MM: '%d مهينا',\n y: 'هڪ سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var se = moment.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n '_'\n ),\n monthsShort:\n 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n weekdays:\n 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n '_'\n ),\n weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maŋit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return se;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n '_'\n ),\n monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n '_'\n ),\n weekdays:\n 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n '_'\n ),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'තත්පර කිහිපය',\n ss: 'තත්පර %d',\n m: 'මිනිත්තුව',\n mm: 'මිනිත්තු %d',\n h: 'පැය',\n hh: 'පැය %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මාසය',\n MM: 'මාස %d',\n y: 'වසර',\n yy: 'වසර %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal: function (number) {\n return number + ' වැනි';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM: function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n },\n });\n\n return si;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months =\n 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n '_'\n ),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return n > 1 && n < 5;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nekaj sekund'\n : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n '_'\n ),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n '_'\n ),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sq;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j\n//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једног минута'],\n mm: ['минут', 'минута', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n d: ['један дан', 'једног дана'],\n dd: ['дан', 'дана', 'дана'],\n M: ['један месец', 'једног месеца'],\n MM: ['месец', 'месеца', 'месеци'],\n y: ['једну годину', 'једне године'],\n yy: ['годину', 'године', 'година'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (\n number % 10 >= 1 &&\n number % 10 <= 4 &&\n (number % 100 < 10 || number % 100 >= 20)\n ) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator.words[key],\n word;\n\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'једна година';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n\n word = translator.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'годину') {\n return number + ' година';\n }\n\n return number + ' ' + word;\n },\n };\n\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n '_'\n ),\n monthsShort:\n 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико секунди',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: translator.translate,\n dd: translator.translate,\n M: translator.translate,\n MM: translator.translate,\n y: translator.translate,\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return srCyrl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j\n//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n d: ['jedan dan', 'jednog dana'],\n dd: ['dan', 'dana', 'dana'],\n M: ['jedan mesec', 'jednog meseca'],\n MM: ['mesec', 'meseca', 'meseci'],\n y: ['jednu godinu', 'jedne godine'],\n yy: ['godinu', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (\n number % 10 >= 1 &&\n number % 10 <= 4 &&\n (number % 100 < 10 || number % 100 >= 20)\n ) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator.words[key],\n word;\n\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'jedna godina';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n\n word = translator.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'godinu') {\n return number + ' godina';\n }\n\n return number + ' ' + word;\n },\n };\n\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: translator.translate,\n dd: translator.translate,\n M: translator.translate,\n MM: translator.translate,\n y: translator.translate,\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sr;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies<mail@nicolai.io> : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n '_'\n ),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays:\n 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n '_'\n ),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka',\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? ':e'\n : b === 1\n ? ':a'\n : b === 2\n ? ':a'\n : b === 3\n ? ':e'\n : ':e';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays:\n 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n '_'\n ),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'hh:mm A',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '௧',\n 2: '௨',\n 3: '௩',\n 4: '௪',\n 5: '௫',\n 6: '௬',\n 7: '௭',\n 8: '௮',\n 9: '௯',\n 0: '௦',\n },\n numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0',\n };\n\n var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n monthsShort:\n 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n weekdays:\n 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n '_'\n ),\n weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n '_'\n ),\n weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm',\n },\n calendar: {\n sameDay: '[இன்று] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேற்று] LT',\n lastWeek: '[கடந்த வாரம்] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s இல்',\n past: '%s முன்',\n s: 'ஒரு சில விநாடிகள்',\n ss: '%d விநாடிகள்',\n m: 'ஒரு நிமிடம்',\n mm: '%d நிமிடங்கள்',\n h: 'ஒரு மணி நேரம்',\n hh: '%d மணி நேரம்',\n d: 'ஒரு நாள்',\n dd: '%d நாட்கள்',\n M: 'ஒரு மாதம்',\n MM: '%d மாதங்கள்',\n y: 'ஒரு வருடம்',\n yy: '%d ஆண்டுகள்',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal: function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var te = moment.defineLocale('te', {\n months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n '_'\n ),\n monthsShort:\n 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n '_'\n ),\n weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[నేడు] LT',\n nextDay: '[రేపు] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నిన్న] LT',\n lastWeek: '[గత] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s లో',\n past: '%s క్రితం',\n s: 'కొన్ని క్షణాలు',\n ss: '%d సెకన్లు',\n m: 'ఒక నిమిషం',\n mm: '%d నిమిషాలు',\n h: 'ఒక గంట',\n hh: '%d గంటలు',\n d: 'ఒక రోజు',\n dd: '%d రోజులు',\n M: 'ఒక నెల',\n MM: '%d నెలలు',\n y: 'ఒక సంవత్సరం',\n yy: '%d సంవత్సరాలు',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n ordinal: '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return te;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум',\n };\n\n var tg = moment.defineLocale('tg', {\n months: {\n format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(\n '_'\n ),\n standalone:\n 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n },\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n '_'\n ),\n weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Имрӯз соати] LT',\n nextDay: '[Фардо соати] LT',\n lastDay: '[Дирӯз соати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'якчанд сония',\n m: 'як дақиқа',\n mm: '%d дақиқа',\n h: 'як соат',\n hh: '%d соат',\n d: 'як рӯз',\n dd: '%d рӯз',\n M: 'як моҳ',\n MM: '%d моҳ',\n y: 'як сол',\n yy: '%d сол',\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1th is the first week of the year.\n },\n });\n\n return tg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var th = moment.defineLocale('th', {\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n '_'\n ),\n monthsShort:\n 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n w: '1 สัปดาห์',\n ww: '%d สัปดาห์',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี',\n },\n });\n\n return th;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inji\",\n 5: \"'inji\",\n 8: \"'inji\",\n 70: \"'inji\",\n 80: \"'inji\",\n 2: \"'nji\",\n 7: \"'nji\",\n 20: \"'nji\",\n 50: \"'nji\",\n 3: \"'ünji\",\n 4: \"'ünji\",\n 100: \"'ünji\",\n 6: \"'njy\",\n 9: \"'unjy\",\n 10: \"'unjy\",\n 30: \"'unjy\",\n 60: \"'ynjy\",\n 90: \"'ynjy\",\n };\n\n var tk = moment.defineLocale('tk', {\n months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(\n '_'\n ),\n weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün sagat] LT',\n nextDay: '[ertir sagat] LT',\n nextWeek: '[indiki] dddd [sagat] LT',\n lastDay: '[düýn] LT',\n lastWeek: '[geçen] dddd [sagat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s soň',\n past: '%s öň',\n s: 'birnäçe sekunt',\n m: 'bir minut',\n mm: '%d minut',\n h: 'bir sagat',\n hh: '%d sagat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir aý',\n MM: '%d aý',\n y: 'bir ýyl',\n yy: '%d ýyl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'unjy\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlPh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'leS'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'waQ'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'nem'\n : time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'Hu’'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'wen'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'ben'\n : time + ' ret';\n return time;\n }\n\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n\n var tlh = moment.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n '_'\n ),\n monthsShort:\n 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysShort:\n 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysMin:\n 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L',\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate,\n m: 'wa’ tup',\n mm: translate,\n h: 'wa’ rep',\n hh: translate,\n d: 'wa’ jaj',\n dd: translate,\n M: 'wa’ jar',\n MM: translate,\n y: 'wa’ DIS',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\",\n };\n\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n '_'\n ),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n '_'\n ),\n weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function (input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n w: 'bir hafta',\n ww: '%d hafta',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à] LT',\n nextDay: '[demà à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[ieiri à] LT',\n lastWeek: '[sür el] dddd [lasteu à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n míut\", \"'iens míut\"],\n mm: [number + ' míuts', '' + number + ' míuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars'],\n };\n return isFuture\n ? format[key][0]\n : withoutSuffix\n ? format[key][0]\n : format[key][1];\n }\n\n return tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n monthsShort:\n 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuḍ',\n mm: '%d minuḍ',\n h: 'saɛa',\n hh: '%d tassaɛin',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzmLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzm = moment.defineLocale('tzm', {\n months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n monthsShort:\n 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past: 'ⵢⴰⵏ %s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉⵏⵓⴺ',\n mm: '%d ⵎⵉⵏⵓⴺ',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰⵏ',\n M: 'ⴰⵢoⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔⵏ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙⵏ',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n monthsShort:\n 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'يېرىم كېچە' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل',\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return ugCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative:\n 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n '_'\n ),\n accusative:\n 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n '_'\n ),\n genitive:\n 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n '_'\n ),\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative']\n .slice(1, 7)\n .concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n ? 'accusative'\n : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n ? 'genitive'\n : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n var uk = moment.defineLocale('uk', {\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n '_'\n ),\n standalone:\n 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n '_'\n ),\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n '_'\n ),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'місяць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural,\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر',\n ],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[کل بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[گذشتہ روز بوقت] LT',\n lastWeek: '[گذشتہ] dddd [بوقت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹہ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماہ',\n MM: '%d ماہ',\n y: 'ایک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays:\n 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n '_'\n ),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uz = moment.defineLocale('uz', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Бугун соат] LT [да]',\n nextDay: '[Эртага] LT [да]',\n nextWeek: 'dddd [куни соат] LT [да]',\n lastDay: '[Кеча соат] LT [да]',\n lastWeek: '[Утган] dddd [куни соат] LT [да]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурсат',\n ss: '%d фурсат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир соат',\n hh: '%d соат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return uz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var vi = moment.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n '_'\n ),\n monthsShort:\n 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n '_'\n ),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s tới',\n past: '%s trước',\n s: 'vài giây',\n ss: '%d giây',\n m: 'một phút',\n mm: '%d phút',\n h: 'một giờ',\n hh: '%d giờ',\n d: 'một ngày',\n dd: '%d ngày',\n w: 'một tuần',\n ww: '%d tuần',\n M: 'một tháng',\n MM: '%d tháng',\n y: 'một năm',\n yy: '%d năm',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n '_'\n ),\n monthsShort:\n 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n '_'\n ),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ý~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'í~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~míñ~úté',\n mm: '%d m~íñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return xPseudo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var yo = moment.defineLocale('yo', {\n months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n '_'\n ),\n monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Ònì ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n lastDay: '[Àna ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ní %s',\n past: '%s kọjá',\n s: 'ìsẹjú aayá die',\n ss: 'aayá %d',\n m: 'ìsẹjú kan',\n mm: 'ìsẹjú %d',\n h: 'wákati kan',\n hh: 'wákati %d',\n d: 'ọjọ́ kan',\n dd: 'ọjọ́ %d',\n M: 'osù kan',\n MM: 'osù %d',\n y: 'ọdún kan',\n yy: 'ọdún %d',\n },\n dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n ordinal: 'ọjọ́ %d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return yo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s后',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n w: '1 周',\n ww: '%d 周',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年',\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上午';\n } else if (hm === 1200) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhHk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhMo = moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s內',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhTw = moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhTw;\n\n})));\n","//! moment.js\n//! version : 2.29.3\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.3';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM', // <input type=\"month\" />\n };\n\n return hooks;\n\n})));\n","/*!\n * Pikaday\n *\n * Copyright © 2014 David Bushell | BSD & MIT license | https://github.com/Pikaday/Pikaday\n */\n\n(function (root, factory)\n{\n 'use strict';\n\n var moment;\n if (typeof exports === 'object') {\n // CommonJS module\n // Load moment.js as an optional dependency\n try { moment = require('moment'); } catch (e) {}\n module.exports = factory(moment);\n } else if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(function (req)\n {\n // Load moment.js as an optional dependency\n var id = 'moment';\n try { moment = req(id); } catch (e) {}\n return factory(moment);\n });\n } else {\n root.Pikaday = factory(root.moment);\n }\n}(this, function (moment)\n{\n 'use strict';\n\n /**\n * feature detection and helper functions\n */\n var hasMoment = typeof moment === 'function',\n\n hasEventListeners = !!window.addEventListener,\n\n document = window.document,\n\n sto = window.setTimeout,\n\n addEvent = function(el, e, callback, capture)\n {\n if (hasEventListeners) {\n el.addEventListener(e, callback, !!capture);\n } else {\n el.attachEvent('on' + e, callback);\n }\n },\n\n removeEvent = function(el, e, callback, capture)\n {\n if (hasEventListeners) {\n el.removeEventListener(e, callback, !!capture);\n } else {\n el.detachEvent('on' + e, callback);\n }\n },\n\n trim = function(str)\n {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g,'');\n },\n\n hasClass = function(el, cn)\n {\n return (' ' + el.className + ' ').indexOf(' ' + cn + ' ') !== -1;\n },\n\n addClass = function(el, cn)\n {\n if (!hasClass(el, cn)) {\n el.className = (el.className === '') ? cn : el.className + ' ' + cn;\n }\n },\n\n removeClass = function(el, cn)\n {\n el.className = trim((' ' + el.className + ' ').replace(' ' + cn + ' ', ' '));\n },\n\n isArray = function(obj)\n {\n return (/Array/).test(Object.prototype.toString.call(obj));\n },\n\n isDate = function(obj)\n {\n return (/Date/).test(Object.prototype.toString.call(obj)) && !isNaN(obj.getTime());\n },\n\n isWeekend = function(date)\n {\n var day = date.getDay();\n return day === 0 || day === 6;\n },\n\n isLeapYear = function(year)\n {\n // solution lifted from date.js (MIT license): https://github.com/datejs/Datejs\n return ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0);\n },\n\n getDaysInMonth = function(year, month)\n {\n return [31, isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];\n },\n\n setToStartOfDay = function(date)\n {\n if (isDate(date)) date.setHours(0,0,0,0);\n },\n\n compareDates = function(a,b)\n {\n // weak date comparison (use setToStartOfDay(date) to ensure correct result)\n return a.getTime() === b.getTime();\n },\n\n extend = function(to, from, overwrite)\n {\n var prop, hasProp;\n for (prop in from) {\n hasProp = to[prop] !== undefined;\n if (hasProp && typeof from[prop] === 'object' && from[prop] !== null && from[prop].nodeName === undefined) {\n if (isDate(from[prop])) {\n if (overwrite) {\n to[prop] = new Date(from[prop].getTime());\n }\n }\n else if (isArray(from[prop])) {\n if (overwrite) {\n to[prop] = from[prop].slice(0);\n }\n } else {\n to[prop] = extend({}, from[prop], overwrite);\n }\n } else if (overwrite || !hasProp) {\n to[prop] = from[prop];\n }\n }\n return to;\n },\n\n fireEvent = function(el, eventName, data)\n {\n var ev;\n\n if (document.createEvent) {\n ev = document.createEvent('HTMLEvents');\n ev.initEvent(eventName, true, false);\n ev = extend(ev, data);\n el.dispatchEvent(ev);\n } else if (document.createEventObject) {\n ev = document.createEventObject();\n ev = extend(ev, data);\n el.fireEvent('on' + eventName, ev);\n }\n },\n\n adjustCalendar = function(calendar) {\n if (calendar.month < 0) {\n calendar.year -= Math.ceil(Math.abs(calendar.month)/12);\n calendar.month += 12;\n }\n if (calendar.month > 11) {\n calendar.year += Math.floor(Math.abs(calendar.month)/12);\n calendar.month -= 12;\n }\n return calendar;\n },\n\n /**\n * defaults and localisation\n */\n defaults = {\n\n // bind the picker to a form field\n field: null,\n\n // automatically show/hide the picker on `field` focus (default `true` if `field` is set)\n bound: undefined,\n\n // data-attribute on the input field with an aria assistance text (only applied when `bound` is set)\n ariaLabel: 'Use the arrow keys to pick a date',\n\n // position of the datepicker, relative to the field (default to bottom & left)\n // ('bottom' & 'left' keywords are not used, 'top' & 'right' are modifier on the bottom/left position)\n position: 'bottom left',\n\n // automatically fit in the viewport even if it means repositioning from the position option\n reposition: true,\n\n // the default output format for `.toString()` and `field` value\n format: 'YYYY-MM-DD',\n\n // the toString function which gets passed a current date object and format\n // and returns a string\n toString: null,\n\n // used to create date object from current input string\n parse: null,\n\n // the initial date to view when first opened\n defaultDate: null,\n\n // make the `defaultDate` the initial selected value\n setDefaultDate: false,\n\n // first day of week (0: Sunday, 1: Monday etc)\n firstDay: 0,\n\n // minimum number of days in the week that gets week number one\n // default ISO 8601, week 01 is the week with the first Thursday (4)\n firstWeekOfYearMinDays: 4,\n\n // the default flag for moment's strict date parsing\n formatStrict: false,\n\n // the minimum/earliest date that can be selected\n minDate: null,\n // the maximum/latest date that can be selected\n maxDate: null,\n\n // number of years either side, or array of upper/lower range\n yearRange: 10,\n\n // show week numbers at head of row\n showWeekNumber: false,\n\n // Week picker mode\n pickWholeWeek: false,\n\n // used internally (don't config outside)\n minYear: 0,\n maxYear: 9999,\n minMonth: undefined,\n maxMonth: undefined,\n\n startRange: null,\n endRange: null,\n\n isRTL: false,\n\n // Additional text to append to the year in the calendar title\n yearSuffix: '',\n\n // Render the month after year in the calendar title\n showMonthAfterYear: false,\n\n // Render days of the calendar grid that fall in the next or previous month\n showDaysInNextAndPreviousMonths: false,\n\n // Allows user to select days that fall in the next or previous month\n enableSelectionDaysInNextAndPreviousMonths: false,\n\n // how many months are visible\n numberOfMonths: 1,\n\n // when numberOfMonths is used, this will help you to choose where the main calendar will be (default `left`, can be set to `right`)\n // only used for the first display or when a selected date is not visible\n mainCalendar: 'left',\n\n // Specify a DOM element to render the calendar in\n container: undefined,\n\n // Blur field when date is selected\n blurFieldOnSelect : true,\n\n // internationalization\n i18n: {\n previousMonth : 'Previous Month',\n nextMonth : 'Next Month',\n months : ['January','February','March','April','May','June','July','August','September','October','November','December'],\n weekdays : ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],\n weekdaysShort : ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']\n },\n\n // Theme Classname\n theme: null,\n\n // events array\n events: [],\n\n // callback function\n onSelect: null,\n onOpen: null,\n onClose: null,\n onDraw: null,\n\n // Enable keyboard input\n keyboardInput: true\n },\n\n\n /**\n * templating functions to abstract HTML rendering\n */\n renderDayName = function(opts, day, abbr)\n {\n day += opts.firstDay;\n while (day >= 7) {\n day -= 7;\n }\n return abbr ? opts.i18n.weekdaysShort[day] : opts.i18n.weekdays[day];\n },\n\n renderDay = function(opts)\n {\n var arr = [];\n var ariaSelected = 'false';\n if (opts.isEmpty) {\n if (opts.showDaysInNextAndPreviousMonths) {\n arr.push('is-outside-current-month');\n\n if(!opts.enableSelectionDaysInNextAndPreviousMonths) {\n arr.push('is-selection-disabled');\n }\n\n } else {\n return '<td class=\"is-empty\"></td>';\n }\n }\n if (opts.isDisabled) {\n arr.push('is-disabled');\n }\n if (opts.isToday) {\n arr.push('is-today');\n }\n if (opts.isSelected) {\n arr.push('is-selected');\n ariaSelected = 'true';\n }\n if (opts.hasEvent) {\n arr.push('has-event');\n }\n if (opts.isInRange) {\n arr.push('is-inrange');\n }\n if (opts.isStartRange) {\n arr.push('is-startrange');\n }\n if (opts.isEndRange) {\n arr.push('is-endrange');\n }\n return '<td data-day=\"' + opts.day + '\" class=\"' + arr.join(' ') + '\" aria-selected=\"' + ariaSelected + '\">' +\n '<button class=\"pika-button pika-day\" type=\"button\" ' +\n 'data-pika-year=\"' + opts.year + '\" data-pika-month=\"' + opts.month + '\" data-pika-day=\"' + opts.day + '\">' +\n opts.day +\n '</button>' +\n '</td>';\n },\n\n isoWeek = function(date, firstWeekOfYearMinDays) {\n // Ensure we're at the start of the day.\n date.setHours(0, 0, 0, 0);\n\n // Thursday in current week decides the year because January 4th\n // is always in the first week according to ISO8601.\n var yearDay = date.getDate(),\n weekDay = date.getDay(),\n dayInFirstWeek = firstWeekOfYearMinDays,\n dayShift = dayInFirstWeek - 1, // counting starts at 0\n daysPerWeek = 7,\n prevWeekDay = function(day) { return (day + daysPerWeek - 1) % daysPerWeek; };\n\n // Adjust to Thursday in week 1 and count number of weeks from date to week 1.\n date.setDate(yearDay + dayShift - prevWeekDay(weekDay));\n\n var jan4th = new Date(date.getFullYear(), 0, dayInFirstWeek),\n msPerDay = 24 * 60 * 60 * 1000,\n daysBetween = (date.getTime() - jan4th.getTime()) / msPerDay,\n weekNum = 1 + Math.round((daysBetween - dayShift + prevWeekDay(jan4th.getDay())) / daysPerWeek);\n\n return weekNum;\n },\n\n renderWeek = function (d, m, y, firstWeekOfYearMinDays) {\n var date = new Date(y, m, d),\n week = hasMoment ? moment(date).isoWeek() : isoWeek(date, firstWeekOfYearMinDays);\n\n return '<td class=\"pika-week\">' + week + '</td>';\n },\n\n renderRow = function(days, isRTL, pickWholeWeek, isRowSelected)\n {\n return '<tr class=\"pika-row' + (pickWholeWeek ? ' pick-whole-week' : '') + (isRowSelected ? ' is-selected' : '') + '\">' + (isRTL ? days.reverse() : days).join('') + '</tr>';\n },\n\n renderBody = function(rows)\n {\n return '<tbody>' + rows.join('') + '</tbody>';\n },\n\n renderHead = function(opts)\n {\n var i, arr = [];\n if (opts.showWeekNumber) {\n arr.push('<th></th>');\n }\n for (i = 0; i < 7; i++) {\n arr.push('<th scope=\"col\"><abbr title=\"' + renderDayName(opts, i) + '\">' + renderDayName(opts, i, true) + '</abbr></th>');\n }\n return '<thead><tr>' + (opts.isRTL ? arr.reverse() : arr).join('') + '</tr></thead>';\n },\n\n renderTitle = function(instance, c, year, month, refYear, randId)\n {\n var i, j, arr,\n opts = instance._o,\n isMinYear = year === opts.minYear,\n isMaxYear = year === opts.maxYear,\n html = '<div id=\"' + randId + '\" class=\"pika-title\" role=\"heading\" aria-live=\"assertive\">',\n monthHtml,\n yearHtml,\n prev = true,\n next = true;\n\n for (arr = [], i = 0; i < 12; i++) {\n arr.push('<option value=\"' + (year === refYear ? i - c : 12 + i - c) + '\"' +\n (i === month ? ' selected=\"selected\"': '') +\n ((isMinYear && i < opts.minMonth) || (isMaxYear && i > opts.maxMonth) ? ' disabled=\"disabled\"' : '') + '>' +\n opts.i18n.months[i] + '</option>');\n }\n\n monthHtml = '<div class=\"pika-label\">' + opts.i18n.months[month] + '<select class=\"pika-select pika-select-month\" tabindex=\"-1\">' + arr.join('') + '</select></div>';\n\n if (isArray(opts.yearRange)) {\n i = opts.yearRange[0];\n j = opts.yearRange[1] + 1;\n } else {\n i = year - opts.yearRange;\n j = 1 + year + opts.yearRange;\n }\n\n for (arr = []; i < j && i <= opts.maxYear; i++) {\n if (i >= opts.minYear) {\n arr.push('<option value=\"' + i + '\"' + (i === year ? ' selected=\"selected\"': '') + '>' + (i) + '</option>');\n }\n }\n yearHtml = '<div class=\"pika-label\">' + year + opts.yearSuffix + '<select class=\"pika-select pika-select-year\" tabindex=\"-1\">' + arr.join('') + '</select></div>';\n\n if (opts.showMonthAfterYear) {\n html += yearHtml + monthHtml;\n } else {\n html += monthHtml + yearHtml;\n }\n\n if (isMinYear && (month === 0 || opts.minMonth >= month)) {\n prev = false;\n }\n\n if (isMaxYear && (month === 11 || opts.maxMonth <= month)) {\n next = false;\n }\n\n if (c === 0) {\n html += '<button class=\"pika-prev' + (prev ? '' : ' is-disabled') + '\" type=\"button\">' + opts.i18n.previousMonth + '</button>';\n }\n if (c === (instance._o.numberOfMonths - 1) ) {\n html += '<button class=\"pika-next' + (next ? '' : ' is-disabled') + '\" type=\"button\">' + opts.i18n.nextMonth + '</button>';\n }\n\n return html += '</div>';\n },\n\n renderTable = function(opts, data, randId)\n {\n return '<table cellpadding=\"0\" cellspacing=\"0\" class=\"pika-table\" role=\"grid\" aria-labelledby=\"' + randId + '\">' + renderHead(opts) + renderBody(data) + '</table>';\n },\n\n\n /**\n * Pikaday constructor\n */\n Pikaday = function(options)\n {\n var self = this,\n opts = self.config(options);\n\n self._onMouseDown = function(e)\n {\n if (!self._v) {\n return;\n }\n e = e || window.event;\n var target = e.target || e.srcElement;\n if (!target) {\n return;\n }\n\n if (!hasClass(target, 'is-disabled')) {\n if (hasClass(target, 'pika-button') && !hasClass(target, 'is-empty') && !hasClass(target.parentNode, 'is-disabled')) {\n self.setDate(new Date(target.getAttribute('data-pika-year'), target.getAttribute('data-pika-month'), target.getAttribute('data-pika-day')));\n if (opts.bound) {\n sto(function() {\n self.hide();\n if (opts.blurFieldOnSelect && opts.field) {\n opts.field.blur();\n }\n }, 100);\n }\n }\n else if (hasClass(target, 'pika-prev')) {\n self.prevMonth();\n }\n else if (hasClass(target, 'pika-next')) {\n self.nextMonth();\n }\n }\n if (!hasClass(target, 'pika-select')) {\n // if this is touch event prevent mouse events emulation\n if (e.preventDefault) {\n e.preventDefault();\n } else {\n e.returnValue = false;\n return false;\n }\n } else {\n self._c = true;\n }\n };\n\n self._onChange = function(e)\n {\n e = e || window.event;\n var target = e.target || e.srcElement;\n if (!target) {\n return;\n }\n if (hasClass(target, 'pika-select-month')) {\n self.gotoMonth(target.value);\n }\n else if (hasClass(target, 'pika-select-year')) {\n self.gotoYear(target.value);\n }\n };\n\n self._onKeyChange = function(e)\n {\n e = e || window.event;\n\n if (self.isVisible()) {\n\n switch(e.keyCode){\n case 13:\n case 27:\n if (opts.field) {\n opts.field.blur();\n }\n break;\n case 37:\n self.adjustDate('subtract', 1);\n break;\n case 38:\n self.adjustDate('subtract', 7);\n break;\n case 39:\n self.adjustDate('add', 1);\n break;\n case 40:\n self.adjustDate('add', 7);\n break;\n case 8:\n case 46:\n self.setDate(null);\n break;\n }\n }\n };\n\n self._parseFieldValue = function()\n {\n if (opts.parse) {\n return opts.parse(opts.field.value, opts.format);\n } else if (hasMoment) {\n var date = moment(opts.field.value, opts.format, opts.formatStrict);\n return (date && date.isValid()) ? date.toDate() : null;\n } else {\n return new Date(Date.parse(opts.field.value));\n }\n };\n\n self._onInputChange = function(e)\n {\n var date;\n\n if (e.firedBy === self) {\n return;\n }\n date = self._parseFieldValue();\n if (isDate(date)) {\n self.setDate(date);\n }\n if (!self._v) {\n self.show();\n }\n };\n\n self._onInputFocus = function()\n {\n self.show();\n };\n\n self._onInputClick = function()\n {\n self.show();\n };\n\n self._onInputBlur = function()\n {\n // IE allows pika div to gain focus; catch blur the input field\n var pEl = document.activeElement;\n do {\n if (hasClass(pEl, 'pika-single')) {\n return;\n }\n }\n while ((pEl = pEl.parentNode));\n\n if (!self._c) {\n self._b = sto(function() {\n self.hide();\n }, 50);\n }\n self._c = false;\n };\n\n self._onClick = function(e)\n {\n e = e || window.event;\n var target = e.target || e.srcElement,\n pEl = target;\n if (!target) {\n return;\n }\n if (!hasEventListeners && hasClass(target, 'pika-select')) {\n if (!target.onchange) {\n target.setAttribute('onchange', 'return;');\n addEvent(target, 'change', self._onChange);\n }\n }\n do {\n if (hasClass(pEl, 'pika-single') || pEl === opts.trigger) {\n return;\n }\n }\n while ((pEl = pEl.parentNode));\n if (self._v && target !== opts.trigger && pEl !== opts.trigger) {\n self.hide();\n }\n };\n\n self.el = document.createElement('div');\n self.el.className = 'pika-single' + (opts.isRTL ? ' is-rtl' : '') + (opts.theme ? ' ' + opts.theme : '');\n\n addEvent(self.el, 'mousedown', self._onMouseDown, true);\n addEvent(self.el, 'touchend', self._onMouseDown, true);\n addEvent(self.el, 'change', self._onChange);\n\n if (opts.keyboardInput) {\n addEvent(document, 'keydown', self._onKeyChange);\n }\n\n if (opts.field) {\n if (opts.container) {\n opts.container.appendChild(self.el);\n } else if (opts.bound) {\n document.body.appendChild(self.el);\n } else {\n opts.field.parentNode.insertBefore(self.el, opts.field.nextSibling);\n }\n addEvent(opts.field, 'change', self._onInputChange);\n\n if (!opts.defaultDate) {\n opts.defaultDate = self._parseFieldValue();\n opts.setDefaultDate = true;\n }\n }\n\n var defDate = opts.defaultDate;\n\n if (isDate(defDate)) {\n if (opts.setDefaultDate) {\n self.setDate(defDate, true);\n } else {\n self.gotoDate(defDate);\n }\n } else {\n self.gotoDate(new Date());\n }\n\n if (opts.bound) {\n this.hide();\n self.el.className += ' is-bound';\n addEvent(opts.trigger, 'click', self._onInputClick);\n addEvent(opts.trigger, 'focus', self._onInputFocus);\n addEvent(opts.trigger, 'blur', self._onInputBlur);\n } else {\n this.show();\n }\n };\n\n\n /**\n * public Pikaday API\n */\n Pikaday.prototype = {\n\n\n /**\n * configure functionality\n */\n config: function(options)\n {\n if (!this._o) {\n this._o = extend({}, defaults, true);\n }\n\n var opts = extend(this._o, options, true);\n\n opts.isRTL = !!opts.isRTL;\n\n opts.field = (opts.field && opts.field.nodeName) ? opts.field : null;\n\n opts.theme = (typeof opts.theme) === 'string' && opts.theme ? opts.theme : null;\n\n opts.bound = !!(opts.bound !== undefined ? opts.field && opts.bound : opts.field);\n\n opts.trigger = (opts.trigger && opts.trigger.nodeName) ? opts.trigger : opts.field;\n\n opts.disableWeekends = !!opts.disableWeekends;\n\n opts.disableDayFn = (typeof opts.disableDayFn) === 'function' ? opts.disableDayFn : null;\n\n var nom = parseInt(opts.numberOfMonths, 10) || 1;\n opts.numberOfMonths = nom > 4 ? 4 : nom;\n\n if (!isDate(opts.minDate)) {\n opts.minDate = false;\n }\n if (!isDate(opts.maxDate)) {\n opts.maxDate = false;\n }\n if ((opts.minDate && opts.maxDate) && opts.maxDate < opts.minDate) {\n opts.maxDate = opts.minDate = false;\n }\n if (opts.minDate) {\n this.setMinDate(opts.minDate);\n }\n if (opts.maxDate) {\n this.setMaxDate(opts.maxDate);\n }\n\n if (isArray(opts.yearRange)) {\n var fallback = new Date().getFullYear() - 10;\n opts.yearRange[0] = parseInt(opts.yearRange[0], 10) || fallback;\n opts.yearRange[1] = parseInt(opts.yearRange[1], 10) || fallback;\n } else {\n opts.yearRange = Math.abs(parseInt(opts.yearRange, 10)) || defaults.yearRange;\n if (opts.yearRange > 100) {\n opts.yearRange = 100;\n }\n }\n\n return opts;\n },\n\n /**\n * return a formatted string of the current selection (using Moment.js if available)\n */\n toString: function(format)\n {\n format = format || this._o.format;\n if (!isDate(this._d)) {\n return '';\n }\n if (this._o.toString) {\n return this._o.toString(this._d, format);\n }\n if (hasMoment) {\n return moment(this._d).format(format);\n }\n return this._d.toDateString();\n },\n\n /**\n * return a Moment.js object of the current selection (if available)\n */\n getMoment: function()\n {\n return hasMoment ? moment(this._d) : null;\n },\n\n /**\n * set the current selection from a Moment.js object (if available)\n */\n setMoment: function(date, preventOnSelect)\n {\n if (hasMoment && moment.isMoment(date)) {\n this.setDate(date.toDate(), preventOnSelect);\n }\n },\n\n /**\n * return a Date object of the current selection\n */\n getDate: function()\n {\n return isDate(this._d) ? new Date(this._d.getTime()) : null;\n },\n\n /**\n * set the current selection\n */\n setDate: function(date, preventOnSelect)\n {\n if (!date) {\n this._d = null;\n\n if (this._o.field) {\n this._o.field.value = '';\n fireEvent(this._o.field, 'change', { firedBy: this });\n }\n\n return this.draw();\n }\n if (typeof date === 'string') {\n date = new Date(Date.parse(date));\n }\n if (!isDate(date)) {\n return;\n }\n\n var min = this._o.minDate,\n max = this._o.maxDate;\n\n if (isDate(min) && date < min) {\n date = min;\n } else if (isDate(max) && date > max) {\n date = max;\n }\n\n this._d = new Date(date.getTime());\n setToStartOfDay(this._d);\n this.gotoDate(this._d);\n\n if (this._o.field) {\n this._o.field.value = this.toString();\n fireEvent(this._o.field, 'change', { firedBy: this });\n }\n if (!preventOnSelect && typeof this._o.onSelect === 'function') {\n this._o.onSelect.call(this, this.getDate());\n }\n },\n\n /**\n * clear and reset the date\n */\n clear: function()\n {\n this.setDate(null);\n },\n\n /**\n * change view to a specific date\n */\n gotoDate: function(date)\n {\n var newCalendar = true;\n\n if (!isDate(date)) {\n return;\n }\n\n if (this.calendars) {\n var firstVisibleDate = new Date(this.calendars[0].year, this.calendars[0].month, 1),\n lastVisibleDate = new Date(this.calendars[this.calendars.length-1].year, this.calendars[this.calendars.length-1].month, 1),\n visibleDate = date.getTime();\n // get the end of the month\n lastVisibleDate.setMonth(lastVisibleDate.getMonth()+1);\n lastVisibleDate.setDate(lastVisibleDate.getDate()-1);\n newCalendar = (visibleDate < firstVisibleDate.getTime() || lastVisibleDate.getTime() < visibleDate);\n }\n\n if (newCalendar) {\n this.calendars = [{\n month: date.getMonth(),\n year: date.getFullYear()\n }];\n if (this._o.mainCalendar === 'right') {\n this.calendars[0].month += 1 - this._o.numberOfMonths;\n }\n }\n\n this.adjustCalendars();\n },\n\n adjustDate: function(sign, days) {\n\n var day = this.getDate() || new Date();\n var difference = parseInt(days)*24*60*60*1000;\n\n var newDay;\n\n if (sign === 'add') {\n newDay = new Date(day.valueOf() + difference);\n } else if (sign === 'subtract') {\n newDay = new Date(day.valueOf() - difference);\n }\n\n this.setDate(newDay);\n },\n\n adjustCalendars: function() {\n this.calendars[0] = adjustCalendar(this.calendars[0]);\n for (var c = 1; c < this._o.numberOfMonths; c++) {\n this.calendars[c] = adjustCalendar({\n month: this.calendars[0].month + c,\n year: this.calendars[0].year\n });\n }\n this.draw();\n },\n\n gotoToday: function()\n {\n this.gotoDate(new Date());\n },\n\n /**\n * change view to a specific month (zero-index, e.g. 0: January)\n */\n gotoMonth: function(month)\n {\n if (!isNaN(month)) {\n this.calendars[0].month = parseInt(month, 10);\n this.adjustCalendars();\n }\n },\n\n nextMonth: function()\n {\n this.calendars[0].month++;\n this.adjustCalendars();\n },\n\n prevMonth: function()\n {\n this.calendars[0].month--;\n this.adjustCalendars();\n },\n\n /**\n * change view to a specific full year (e.g. \"2012\")\n */\n gotoYear: function(year)\n {\n if (!isNaN(year)) {\n this.calendars[0].year = parseInt(year, 10);\n this.adjustCalendars();\n }\n },\n\n /**\n * change the minDate\n */\n setMinDate: function(value)\n {\n if(value instanceof Date) {\n setToStartOfDay(value);\n this._o.minDate = value;\n this._o.minYear = value.getFullYear();\n this._o.minMonth = value.getMonth();\n } else {\n this._o.minDate = defaults.minDate;\n this._o.minYear = defaults.minYear;\n this._o.minMonth = defaults.minMonth;\n this._o.startRange = defaults.startRange;\n }\n\n this.draw();\n },\n\n /**\n * change the maxDate\n */\n setMaxDate: function(value)\n {\n if(value instanceof Date) {\n setToStartOfDay(value);\n this._o.maxDate = value;\n this._o.maxYear = value.getFullYear();\n this._o.maxMonth = value.getMonth();\n } else {\n this._o.maxDate = defaults.maxDate;\n this._o.maxYear = defaults.maxYear;\n this._o.maxMonth = defaults.maxMonth;\n this._o.endRange = defaults.endRange;\n }\n\n this.draw();\n },\n\n setStartRange: function(value)\n {\n this._o.startRange = value;\n },\n\n setEndRange: function(value)\n {\n this._o.endRange = value;\n },\n\n /**\n * refresh the HTML\n */\n draw: function(force)\n {\n if (!this._v && !force) {\n return;\n }\n var opts = this._o,\n minYear = opts.minYear,\n maxYear = opts.maxYear,\n minMonth = opts.minMonth,\n maxMonth = opts.maxMonth,\n html = '',\n randId;\n\n if (this._y <= minYear) {\n this._y = minYear;\n if (!isNaN(minMonth) && this._m < minMonth) {\n this._m = minMonth;\n }\n }\n if (this._y >= maxYear) {\n this._y = maxYear;\n if (!isNaN(maxMonth) && this._m > maxMonth) {\n this._m = maxMonth;\n }\n }\n\n for (var c = 0; c < opts.numberOfMonths; c++) {\n randId = 'pika-title-' + Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 2);\n html += '<div class=\"pika-lendar\">' + renderTitle(this, c, this.calendars[c].year, this.calendars[c].month, this.calendars[0].year, randId) + this.render(this.calendars[c].year, this.calendars[c].month, randId) + '</div>';\n }\n\n this.el.innerHTML = html;\n\n if (opts.bound) {\n if(opts.field.type !== 'hidden') {\n sto(function() {\n opts.trigger.focus();\n }, 1);\n }\n }\n\n if (typeof this._o.onDraw === 'function') {\n this._o.onDraw(this);\n }\n\n if (opts.bound) {\n // let the screen reader user know to use arrow keys\n opts.field.setAttribute('aria-label', opts.ariaLabel);\n }\n },\n\n adjustPosition: function()\n {\n var field, pEl, width, height, viewportWidth, viewportHeight, scrollTop, left, top, clientRect, leftAligned, bottomAligned;\n\n if (this._o.container) return;\n\n this.el.style.position = 'absolute';\n\n field = this._o.trigger;\n pEl = field;\n width = this.el.offsetWidth;\n height = this.el.offsetHeight;\n viewportWidth = window.innerWidth || document.documentElement.clientWidth;\n viewportHeight = window.innerHeight || document.documentElement.clientHeight;\n scrollTop = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;\n leftAligned = true;\n bottomAligned = true;\n\n if (typeof field.getBoundingClientRect === 'function') {\n clientRect = field.getBoundingClientRect();\n left = clientRect.left + window.pageXOffset;\n top = clientRect.bottom + window.pageYOffset;\n } else {\n left = pEl.offsetLeft;\n top = pEl.offsetTop + pEl.offsetHeight;\n while((pEl = pEl.offsetParent)) {\n left += pEl.offsetLeft;\n top += pEl.offsetTop;\n }\n }\n\n // default position is bottom & left\n if ((this._o.reposition && left + width > viewportWidth) ||\n (\n this._o.position.indexOf('right') > -1 &&\n left - width + field.offsetWidth > 0\n )\n ) {\n left = left - width + field.offsetWidth;\n leftAligned = false;\n }\n if ((this._o.reposition && top + height > viewportHeight + scrollTop) ||\n (\n this._o.position.indexOf('top') > -1 &&\n top - height - field.offsetHeight > 0\n )\n ) {\n top = top - height - field.offsetHeight;\n bottomAligned = false;\n }\n\n this.el.style.left = left + 'px';\n this.el.style.top = top + 'px';\n\n addClass(this.el, leftAligned ? 'left-aligned' : 'right-aligned');\n addClass(this.el, bottomAligned ? 'bottom-aligned' : 'top-aligned');\n removeClass(this.el, !leftAligned ? 'left-aligned' : 'right-aligned');\n removeClass(this.el, !bottomAligned ? 'bottom-aligned' : 'top-aligned');\n },\n\n /**\n * render HTML for a particular month\n */\n render: function(year, month, randId)\n {\n var opts = this._o,\n now = new Date(),\n days = getDaysInMonth(year, month),\n before = new Date(year, month, 1).getDay(),\n data = [],\n row = [];\n setToStartOfDay(now);\n if (opts.firstDay > 0) {\n before -= opts.firstDay;\n if (before < 0) {\n before += 7;\n }\n }\n var previousMonth = month === 0 ? 11 : month - 1,\n nextMonth = month === 11 ? 0 : month + 1,\n yearOfPreviousMonth = month === 0 ? year - 1 : year,\n yearOfNextMonth = month === 11 ? year + 1 : year,\n daysInPreviousMonth = getDaysInMonth(yearOfPreviousMonth, previousMonth);\n var cells = days + before,\n after = cells;\n while(after > 7) {\n after -= 7;\n }\n cells += 7 - after;\n var isWeekSelected = false;\n for (var i = 0, r = 0; i < cells; i++)\n {\n var day = new Date(year, month, 1 + (i - before)),\n isSelected = isDate(this._d) ? compareDates(day, this._d) : false,\n isToday = compareDates(day, now),\n hasEvent = opts.events.indexOf(day.toDateString()) !== -1 ? true : false,\n isEmpty = i < before || i >= (days + before),\n dayNumber = 1 + (i - before),\n monthNumber = month,\n yearNumber = year,\n isStartRange = opts.startRange && compareDates(opts.startRange, day),\n isEndRange = opts.endRange && compareDates(opts.endRange, day),\n isInRange = opts.startRange && opts.endRange && opts.startRange < day && day < opts.endRange,\n isDisabled = (opts.minDate && day < opts.minDate) ||\n (opts.maxDate && day > opts.maxDate) ||\n (opts.disableWeekends && isWeekend(day)) ||\n (opts.disableDayFn && opts.disableDayFn(day));\n\n if (isEmpty) {\n if (i < before) {\n dayNumber = daysInPreviousMonth + dayNumber;\n monthNumber = previousMonth;\n yearNumber = yearOfPreviousMonth;\n } else {\n dayNumber = dayNumber - days;\n monthNumber = nextMonth;\n yearNumber = yearOfNextMonth;\n }\n }\n\n var dayConfig = {\n day: dayNumber,\n month: monthNumber,\n year: yearNumber,\n hasEvent: hasEvent,\n isSelected: isSelected,\n isToday: isToday,\n isDisabled: isDisabled,\n isEmpty: isEmpty,\n isStartRange: isStartRange,\n isEndRange: isEndRange,\n isInRange: isInRange,\n showDaysInNextAndPreviousMonths: opts.showDaysInNextAndPreviousMonths,\n enableSelectionDaysInNextAndPreviousMonths: opts.enableSelectionDaysInNextAndPreviousMonths\n };\n\n if (opts.pickWholeWeek && isSelected) {\n isWeekSelected = true;\n }\n\n row.push(renderDay(dayConfig));\n\n if (++r === 7) {\n if (opts.showWeekNumber) {\n row.unshift(renderWeek(i - before, month, year, opts.firstWeekOfYearMinDays));\n }\n data.push(renderRow(row, opts.isRTL, opts.pickWholeWeek, isWeekSelected));\n row = [];\n r = 0;\n isWeekSelected = false;\n }\n }\n return renderTable(opts, data, randId);\n },\n\n isVisible: function()\n {\n return this._v;\n },\n\n show: function()\n {\n if (!this.isVisible()) {\n this._v = true;\n this.draw();\n removeClass(this.el, 'is-hidden');\n if (this._o.bound) {\n addEvent(document, 'click', this._onClick);\n this.adjustPosition();\n }\n if (typeof this._o.onOpen === 'function') {\n this._o.onOpen.call(this);\n }\n }\n },\n\n hide: function()\n {\n var v = this._v;\n if (v !== false) {\n if (this._o.bound) {\n removeEvent(document, 'click', this._onClick);\n }\n\n if (!this._o.container) {\n this.el.style.position = 'static'; // reset\n this.el.style.left = 'auto';\n this.el.style.top = 'auto';\n }\n addClass(this.el, 'is-hidden');\n this._v = false;\n if (v !== undefined && typeof this._o.onClose === 'function') {\n this._o.onClose.call(this);\n }\n }\n },\n\n /**\n * GAME OVER\n */\n destroy: function()\n {\n var opts = this._o;\n\n this.hide();\n removeEvent(this.el, 'mousedown', this._onMouseDown, true);\n removeEvent(this.el, 'touchend', this._onMouseDown, true);\n removeEvent(this.el, 'change', this._onChange);\n if (opts.keyboardInput) {\n removeEvent(document, 'keydown', this._onKeyChange);\n }\n if (opts.field) {\n removeEvent(opts.field, 'change', this._onInputChange);\n if (opts.bound) {\n removeEvent(opts.trigger, 'click', this._onInputClick);\n removeEvent(opts.trigger, 'focus', this._onInputFocus);\n removeEvent(opts.trigger, 'blur', this._onInputBlur);\n }\n }\n if (this.el.parentNode) {\n this.el.parentNode.removeChild(this.el);\n }\n }\n\n };\n\n return Pikaday;\n}));\n","\n /*! \n * portal-vue © Thorsten Lünborg, 2019 \n * \n * Version: 2.1.7\n * \n * LICENCE: MIT \n * \n * https://github.com/linusborg/portal-vue\n * \n */\n\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar Vue = _interopDefault(require('vue'));\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar inBrowser = typeof window !== 'undefined';\nfunction freeze(item) {\n if (Array.isArray(item) || _typeof(item) === 'object') {\n return Object.freeze(item);\n }\n\n return item;\n}\nfunction combinePassengers(transports) {\n var slotProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return transports.reduce(function (passengers, transport) {\n var temp = transport.passengers[0];\n var newPassengers = typeof temp === 'function' ? temp(slotProps) : transport.passengers;\n return passengers.concat(newPassengers);\n }, []);\n}\nfunction stableSort(array, compareFn) {\n return array.map(function (v, idx) {\n return [idx, v];\n }).sort(function (a, b) {\n return compareFn(a[1], b[1]) || a[0] - b[0];\n }).map(function (c) {\n return c[1];\n });\n}\nfunction pick(obj, keys) {\n return keys.reduce(function (acc, key) {\n if (obj.hasOwnProperty(key)) {\n acc[key] = obj[key];\n }\n\n return acc;\n }, {});\n}\n\nvar transports = {};\nvar targets = {};\nvar sources = {};\nvar Wormhole = Vue.extend({\n data: function data() {\n return {\n transports: transports,\n targets: targets,\n sources: sources,\n trackInstances: inBrowser\n };\n },\n methods: {\n open: function open(transport) {\n if (!inBrowser) return;\n var to = transport.to,\n from = transport.from,\n passengers = transport.passengers,\n _transport$order = transport.order,\n order = _transport$order === void 0 ? Infinity : _transport$order;\n if (!to || !from || !passengers) return;\n var newTransport = {\n to: to,\n from: from,\n passengers: freeze(passengers),\n order: order\n };\n var keys = Object.keys(this.transports);\n\n if (keys.indexOf(to) === -1) {\n Vue.set(this.transports, to, []);\n }\n\n var currentIndex = this.$_getTransportIndex(newTransport); // Copying the array here so that the PortalTarget change event will actually contain two distinct arrays\n\n var newTransports = this.transports[to].slice(0);\n\n if (currentIndex === -1) {\n newTransports.push(newTransport);\n } else {\n newTransports[currentIndex] = newTransport;\n }\n\n this.transports[to] = stableSort(newTransports, function (a, b) {\n return a.order - b.order;\n });\n },\n close: function close(transport) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var to = transport.to,\n from = transport.from;\n if (!to || !from && force === false) return;\n\n if (!this.transports[to]) {\n return;\n }\n\n if (force) {\n this.transports[to] = [];\n } else {\n var index = this.$_getTransportIndex(transport);\n\n if (index >= 0) {\n // Copying the array here so that the PortalTarget change event will actually contain two distinct arrays\n var newTransports = this.transports[to].slice(0);\n newTransports.splice(index, 1);\n this.transports[to] = newTransports;\n }\n }\n },\n registerTarget: function registerTarget(target, vm, force) {\n if (!inBrowser) return;\n\n if (this.trackInstances && !force && this.targets[target]) {\n console.warn(\"[portal-vue]: Target \".concat(target, \" already exists\"));\n }\n\n this.$set(this.targets, target, Object.freeze([vm]));\n },\n unregisterTarget: function unregisterTarget(target) {\n this.$delete(this.targets, target);\n },\n registerSource: function registerSource(source, vm, force) {\n if (!inBrowser) return;\n\n if (this.trackInstances && !force && this.sources[source]) {\n console.warn(\"[portal-vue]: source \".concat(source, \" already exists\"));\n }\n\n this.$set(this.sources, source, Object.freeze([vm]));\n },\n unregisterSource: function unregisterSource(source) {\n this.$delete(this.sources, source);\n },\n hasTarget: function hasTarget(to) {\n return !!(this.targets[to] && this.targets[to][0]);\n },\n hasSource: function hasSource(to) {\n return !!(this.sources[to] && this.sources[to][0]);\n },\n hasContentFor: function hasContentFor(to) {\n return !!this.transports[to] && !!this.transports[to].length;\n },\n // Internal\n $_getTransportIndex: function $_getTransportIndex(_ref) {\n var to = _ref.to,\n from = _ref.from;\n\n for (var i in this.transports[to]) {\n if (this.transports[to][i].from === from) {\n return +i;\n }\n }\n\n return -1;\n }\n }\n});\nvar wormhole = new Wormhole(transports);\n\nvar _id = 1;\nvar Portal = Vue.extend({\n name: 'portal',\n props: {\n disabled: {\n type: Boolean\n },\n name: {\n type: String,\n default: function _default() {\n return String(_id++);\n }\n },\n order: {\n type: Number,\n default: 0\n },\n slim: {\n type: Boolean\n },\n slotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n tag: {\n type: String,\n default: 'DIV'\n },\n to: {\n type: String,\n default: function _default() {\n return String(Math.round(Math.random() * 10000000));\n }\n }\n },\n created: function created() {\n var _this = this;\n\n this.$nextTick(function () {\n wormhole.registerSource(_this.name, _this);\n });\n },\n mounted: function mounted() {\n if (!this.disabled) {\n this.sendUpdate();\n }\n },\n updated: function updated() {\n if (this.disabled) {\n this.clear();\n } else {\n this.sendUpdate();\n }\n },\n beforeDestroy: function beforeDestroy() {\n wormhole.unregisterSource(this.name);\n this.clear();\n },\n watch: {\n to: function to(newValue, oldValue) {\n oldValue && oldValue !== newValue && this.clear(oldValue);\n this.sendUpdate();\n }\n },\n methods: {\n clear: function clear(target) {\n var closer = {\n from: this.name,\n to: target || this.to\n };\n wormhole.close(closer);\n },\n normalizeSlots: function normalizeSlots() {\n return this.$scopedSlots.default ? [this.$scopedSlots.default] : this.$slots.default;\n },\n normalizeOwnChildren: function normalizeOwnChildren(children) {\n return typeof children === 'function' ? children(this.slotProps) : children;\n },\n sendUpdate: function sendUpdate() {\n var slotContent = this.normalizeSlots();\n\n if (slotContent) {\n var transport = {\n from: this.name,\n to: this.to,\n passengers: _toConsumableArray(slotContent),\n order: this.order\n };\n wormhole.open(transport);\n } else {\n this.clear();\n }\n }\n },\n render: function render(h) {\n var children = this.$slots.default || this.$scopedSlots.default || [];\n var Tag = this.tag;\n\n if (children && this.disabled) {\n return children.length <= 1 && this.slim ? this.normalizeOwnChildren(children)[0] : h(Tag, [this.normalizeOwnChildren(children)]);\n } else {\n return this.slim ? h() : h(Tag, {\n class: {\n 'v-portal': true\n },\n style: {\n display: 'none'\n },\n key: 'v-portal-placeholder'\n });\n }\n }\n});\n\nvar PortalTarget = Vue.extend({\n name: 'portalTarget',\n props: {\n multiple: {\n type: Boolean,\n default: false\n },\n name: {\n type: String,\n required: true\n },\n slim: {\n type: Boolean,\n default: false\n },\n slotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n tag: {\n type: String,\n default: 'div'\n },\n transition: {\n type: [String, Object, Function]\n }\n },\n data: function data() {\n return {\n transports: wormhole.transports,\n firstRender: true\n };\n },\n created: function created() {\n var _this = this;\n\n this.$nextTick(function () {\n wormhole.registerTarget(_this.name, _this);\n });\n },\n watch: {\n ownTransports: function ownTransports() {\n this.$emit('change', this.children().length > 0);\n },\n name: function name(newVal, oldVal) {\n /**\r\n * TODO\r\n * This should warn as well ...\r\n */\n wormhole.unregisterTarget(oldVal);\n wormhole.registerTarget(newVal, this);\n }\n },\n mounted: function mounted() {\n var _this2 = this;\n\n if (this.transition) {\n this.$nextTick(function () {\n // only when we have a transition, because it causes a re-render\n _this2.firstRender = false;\n });\n }\n },\n beforeDestroy: function beforeDestroy() {\n wormhole.unregisterTarget(this.name);\n },\n computed: {\n ownTransports: function ownTransports() {\n var transports = this.transports[this.name] || [];\n\n if (this.multiple) {\n return transports;\n }\n\n return transports.length === 0 ? [] : [transports[transports.length - 1]];\n },\n passengers: function passengers() {\n return combinePassengers(this.ownTransports, this.slotProps);\n }\n },\n methods: {\n // can't be a computed prop because it has to \"react\" to $slot changes.\n children: function children() {\n return this.passengers.length !== 0 ? this.passengers : this.$scopedSlots.default ? this.$scopedSlots.default(this.slotProps) : this.$slots.default || [];\n },\n // can't be a computed prop because it has to \"react\" to this.children().\n noWrapper: function noWrapper() {\n var noWrapper = this.slim && !this.transition;\n\n if (noWrapper && this.children().length > 1) {\n console.warn('[portal-vue]: PortalTarget with `slim` option received more than one child element.');\n }\n\n return noWrapper;\n }\n },\n render: function render(h) {\n var noWrapper = this.noWrapper();\n var children = this.children();\n var Tag = this.transition || this.tag;\n return noWrapper ? children[0] : this.slim && !Tag ? h() : h(Tag, {\n props: {\n // if we have a transition component, pass the tag if it exists\n tag: this.transition && this.tag ? this.tag : undefined\n },\n class: {\n 'vue-portal-target': true\n }\n }, children);\n }\n});\n\nvar _id$1 = 0;\nvar portalProps = ['disabled', 'name', 'order', 'slim', 'slotProps', 'tag', 'to'];\nvar targetProps = ['multiple', 'transition'];\nvar MountingPortal = Vue.extend({\n name: 'MountingPortal',\n inheritAttrs: false,\n props: {\n append: {\n type: [Boolean, String]\n },\n bail: {\n type: Boolean\n },\n mountTo: {\n type: String,\n required: true\n },\n // Portal\n disabled: {\n type: Boolean\n },\n // name for the portal\n name: {\n type: String,\n default: function _default() {\n return 'mounted_' + String(_id$1++);\n }\n },\n order: {\n type: Number,\n default: 0\n },\n slim: {\n type: Boolean\n },\n slotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n tag: {\n type: String,\n default: 'DIV'\n },\n // name for the target\n to: {\n type: String,\n default: function _default() {\n return String(Math.round(Math.random() * 10000000));\n }\n },\n // Target\n multiple: {\n type: Boolean,\n default: false\n },\n targetSlim: {\n type: Boolean\n },\n targetSlotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n targetTag: {\n type: String,\n default: 'div'\n },\n transition: {\n type: [String, Object, Function]\n }\n },\n created: function created() {\n if (typeof document === 'undefined') return;\n var el = document.querySelector(this.mountTo);\n\n if (!el) {\n console.error(\"[portal-vue]: Mount Point '\".concat(this.mountTo, \"' not found in document\"));\n return;\n }\n\n var props = this.$props; // Target already exists\n\n if (wormhole.targets[props.name]) {\n if (props.bail) {\n console.warn(\"[portal-vue]: Target \".concat(props.name, \" is already mounted.\\n Aborting because 'bail: true' is set\"));\n } else {\n this.portalTarget = wormhole.targets[props.name];\n }\n\n return;\n }\n\n var append = props.append;\n\n if (append) {\n var type = typeof append === 'string' ? append : 'DIV';\n var mountEl = document.createElement(type);\n el.appendChild(mountEl);\n el = mountEl;\n } // get props for target from $props\n // we have to rename a few of them\n\n\n var _props = pick(this.$props, targetProps);\n\n _props.slim = this.targetSlim;\n _props.tag = this.targetTag;\n _props.slotProps = this.targetSlotProps;\n _props.name = this.to;\n this.portalTarget = new PortalTarget({\n el: el,\n parent: this.$parent || this,\n propsData: _props\n });\n },\n beforeDestroy: function beforeDestroy() {\n var target = this.portalTarget;\n\n if (this.append) {\n var el = target.$el;\n el.parentNode.removeChild(el);\n }\n\n target.$destroy();\n },\n render: function render(h) {\n if (!this.portalTarget) {\n console.warn(\"[portal-vue] Target wasn't mounted\");\n return h();\n } // if there's no \"manual\" scoped slot, so we create a <Portal> ourselves\n\n\n if (!this.$scopedSlots.manual) {\n var props = pick(this.$props, portalProps);\n return h(Portal, {\n props: props,\n attrs: this.$attrs,\n on: this.$listeners,\n scopedSlots: this.$scopedSlots\n }, this.$slots.default);\n } // else, we render the scoped slot\n\n\n var content = this.$scopedSlots.manual({\n to: this.to\n }); // if user used <template> for the scoped slot\n // content will be an array\n\n if (Array.isArray(content)) {\n content = content[0];\n }\n\n if (!content) return h();\n return content;\n }\n});\n\nfunction install(Vue$$1) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Vue$$1.component(options.portalName || 'Portal', Portal);\n Vue$$1.component(options.portalTargetName || 'PortalTarget', PortalTarget);\n Vue$$1.component(options.MountingPortalName || 'MountingPortal', MountingPortal);\n}\n\nvar index = {\n install: install\n};\n\nexports.default = index;\nexports.Portal = Portal;\nexports.PortalTarget = PortalTarget;\nexports.MountingPortal = MountingPortal;\nexports.Wormhole = wormhole;\n//# sourceMappingURL=portal-vue.common.js.map\n","var camel2hyphen = function (str) {\n return str\n .replace(/[A-Z]/g, function (match) {\n return '-' + match.toLowerCase();\n })\n .toLowerCase();\n};\n\nmodule.exports = camel2hyphen;","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.is_open),expression:\"is_open\"}],class:_vm.overlay_classes,on:{\"click\":_vm._onOverlayClick}},[_c('div',{class:_vm.modal_classes,style:(_vm.modal_style)},[_c('div',{staticClass:\"sweet-box-actions\"},[_vm._t(\"box-action\"),(!_vm.hideCloseButton)?_c('div',{staticClass:\"sweet-action-close\",on:{\"click\":_vm.close}},[_c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":\"24\",\"height\":\"24\",\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\",\"fill\":\"#292c34\"}})])]):_vm._e()],2),(_vm.has_title || _vm.has_tabs)?_c('div',{staticClass:\"sweet-title\"},[(_vm.has_tabs && !_vm.has_title)?[_c('ul',{staticClass:\"sweet-modal-tabs\"},_vm._l((_vm.tabs),function(tab){return _c('li',{class:_vm._getClassesForTab(tab)},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm._changeTab(tab)}}},[_c('div',{staticClass:\"sweet-modal-valign\"},[(tab.icon)?_c('span',{staticClass:\"sweet-modal-tab-icon\",domProps:{\"innerHTML\":_vm._s(tab.icon)}}):_vm._e(),_c('span',{staticClass:\"sweet-modal-tab-title\"},[_vm._v(_vm._s(tab.title))])])])])}),0)]:_vm._e(),(_vm.has_title)?[(_vm.title)?_c('h2',{domProps:{\"innerHTML\":_vm._s(_vm.title)}}):_vm._e(),_vm._t(\"title\")]:_vm._e()],2):_vm._e(),(_vm.has_title && _vm.has_tabs)?_c('ul',{staticClass:\"sweet-modal-tabs\"},_vm._l((_vm.tabs),function(tab){return _c('li',{class:_vm._getClassesForTab(tab)},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm._changeTab(tab)}}},[_c('div',{staticClass:\"sweet-modal-valign\"},[(tab.icon)?_c('span',{staticClass:\"sweet-modal-tab-icon\",domProps:{\"innerHTML\":_vm._s(tab.icon)}}):_vm._e(),_c('span',{staticClass:\"sweet-modal-tab-title\"},[_vm._v(_vm._s(tab.title))])])])])}),0):_vm._e(),_c('div',{ref:\"content\",staticClass:\"sweet-content\"},[(_vm.icon == 'error')?_c('div',{ref:\"icon_error\",staticClass:\"sweet-modal-icon sweet-modal-error\"},[_vm._m(0)]):_vm._e(),(_vm.icon == 'warning')?_c('div',{ref:\"icon_warning\",staticClass:\"sweet-modal-icon sweet-modal-warning\"},[_c('span',{staticClass:\"sweet-modal-body\"}),_c('span',{staticClass:\"sweet-modal-dot\"})]):_vm._e(),(_vm.icon == 'info')?_c('div',{ref:\"icon_info\",staticClass:\"sweet-modal-icon sweet-modal-info\"}):_vm._e(),(_vm.icon == 'success')?_c('div',{ref:\"icon_success\",staticClass:\"sweet-modal-icon sweet-modal-success\"},[_c('span',{staticClass:\"sweet-modal-line sweet-modal-tip\"}),_c('span',{staticClass:\"sweet-modal-line sweet-modal-long\"}),_c('div',{staticClass:\"sweet-modal-placeholder\"}),_c('div',{staticClass:\"sweet-modal-fix\"})]):_vm._e(),(_vm.$slots.default)?_c('div',{staticClass:\"sweet-content-content\"},[_vm._t(\"default\")],2):_vm._e()]),(_vm.$slots.button)?_c('div',{staticClass:\"sweet-buttons\"},[_vm._t(\"button\")],2):_vm._e()])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('span',{staticClass:\"sweet-modal-x-mark\"},[_c('span',{staticClass:\"sweet-modal-line sweet-modal-left\"}),_c('span',{staticClass:\"sweet-modal-line sweet-modal-right\"})])\n}]\n\nexport { render, staticRenderFns }","<template>\n\t<!--\n\t\tSweetModal for Vue.js\n\t\tSweet, easy and powerful modals and dialogs\n\n\t\tCopyright (c) 2017 Adepto.as AS · Oslo, Norway\n\t\tDual licensed under the MIT and GPL licenses.\n\n\t\tSee LICENSE-MIT.txt and LICENSE-GPL.txt\n\t-->\n\t<div :class=\"overlay_classes\" v-show=\"is_open\" v-on:click=\"_onOverlayClick\">\n\t\t<div :class=\"modal_classes\" :style=\"modal_style\">\n\t\t\t<div class=\"sweet-box-actions\">\n\t\t\t\t<!-- Custom Actions -->\n\t\t\t\t<slot name=\"box-action\"></slot>\n\n\t\t\t\t<!-- Close Button -->\n\t\t\t\t<div class=\"sweet-action-close\" v-on:click=\"close\" v-if=\"!hideCloseButton\">\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" fill=\"#292c34\" /></svg>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<!-- Title: Housing the title and tabs, if no title is present -->\n\t\t\t<div class=\"sweet-title\" v-if=\"has_title || has_tabs\">\n\t\t\t\t<!-- Tabs but no title -->\n\t\t\t\t<template v-if=\"has_tabs && !has_title\">\n\t\t\t\t\t<ul class=\"sweet-modal-tabs\">\n\t\t\t\t\t\t<li v-for=\"tab in tabs\" :class=\"_getClassesForTab(tab)\">\n\t\t\t\t\t\t\t<a href=\"#\" v-on:click.prevent=\"_changeTab(tab)\">\n\t\t\t\t\t\t\t\t<div class=\"sweet-modal-valign\">\n\t\t\t\t\t\t\t\t\t<span v-if=\"tab.icon\" v-html=\"tab.icon\" class=\"sweet-modal-tab-icon\" />\n\t\t\t\t\t\t\t\t\t<span class=\"sweet-modal-tab-title\">{{ tab.title }}</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</template>\n\n\t\t\t\t<!-- Title -->\n\t\t\t\t<template v-if=\"has_title\">\n\t\t\t\t\t<h2 v-if=\"title\" v-html=\"title\"></h2>\n\t\t\t\t\t<slot name=\"title\"></slot>\n\t\t\t\t</template>\n\t\t\t</div>\n\n\t\t\t<!-- Tabs: If title AND tabs are present -->\n\t\t\t<ul class=\"sweet-modal-tabs\" v-if=\"has_title && has_tabs\">\n\t\t\t\t<li v-for=\"tab in tabs\" :class=\"_getClassesForTab(tab)\">\n\t\t\t\t\t<a href=\"#\" v-on:click.prevent=\"_changeTab(tab)\">\n\t\t\t\t\t\t<div class=\"sweet-modal-valign\">\n\t\t\t\t\t\t\t<span v-if=\"tab.icon\" v-html=\"tab.icon\" class=\"sweet-modal-tab-icon\" />\n\t\t\t\t\t\t\t<span class=\"sweet-modal-tab-title\">{{ tab.title }}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\n\t\t\t<!-- Content: Wrapper -->\n\t\t\t<div class=\"sweet-content\" ref=\"content\">\n\t\t\t\t<!-- Icon: Error -->\n\t\t\t\t<div class=\"sweet-modal-icon sweet-modal-error\" v-if=\"icon == 'error'\" ref=\"icon_error\">\n\t\t\t\t\t<span class=\"sweet-modal-x-mark\">\n\t\t\t\t\t\t<span class=\"sweet-modal-line sweet-modal-left\"></span>\n\t\t\t\t\t\t<span class=\"sweet-modal-line sweet-modal-right\"></span>\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Icon: Warning -->\n\t\t\t\t<div class=\"sweet-modal-icon sweet-modal-warning\" v-if=\"icon == 'warning'\" ref=\"icon_warning\">\n\t\t\t\t\t<span class=\"sweet-modal-body\"></span>\n\t\t\t\t\t<span class=\"sweet-modal-dot\"></span>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Icon: Info -->\n\t\t\t\t<div class=\"sweet-modal-icon sweet-modal-info\" v-if=\"icon == 'info'\" ref=\"icon_info\"></div>\n\n\t\t\t\t<!-- Icon: Success -->\n\t\t\t\t<div class=\"sweet-modal-icon sweet-modal-success\" v-if=\"icon == 'success'\" ref=\"icon_success\">\n\t\t\t\t\t<span class=\"sweet-modal-line sweet-modal-tip\"></span>\n\t\t\t\t\t<span class=\"sweet-modal-line sweet-modal-long\"></span>\n\t\t\t\t\t<div class=\"sweet-modal-placeholder\"></div>\n\t\t\t\t\t<div class=\"sweet-modal-fix\"></div>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Actual Content -->\n\t\t\t\t<div class=\"sweet-content-content\" v-if=\"$slots.default\">\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<!-- Buttons -->\n\t\t\t<div class=\"sweet-buttons\" v-if=\"$slots.button\">\n\t\t\t\t<slot name=\"button\"></slot>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\n\texport default {\n\t\tname: 'SweetModal',\n\n\t\tprops: {\n\t\t\ttitle: {\n\t\t\t\ttype: String,\n\t\t\t\trequired: false,\n\t\t\t\tdefault: ''\n\t\t\t},\n\n\t\t\toverlayTheme: {\n\t\t\t\ttype: String,\n\t\t\t\trequired: false,\n\t\t\t\tdefault: 'light'\n\t\t\t},\n\n\t\t\tmodalTheme: {\n\t\t\t\ttype: String,\n\t\t\t\trequired: false,\n\t\t\t\tdefault: 'light'\n\t\t\t},\n\n\t\t\tblocking: {\n\t\t\t\ttype: Boolean,\n\t\t\t\trequired: false,\n\t\t\t\tdefault: false\n\t\t\t},\n\n\t\t\tpulseOnBlock: {\n\t\t\t\ttype: Boolean,\n\t\t\t\trequired: false,\n\t\t\t\tdefault: true\n\t\t\t},\n\n\t\t\ticon: {\n\t\t\t\ttype: String,\n\t\t\t\trequired: false,\n\t\t\t\tdefault: ''\n\t\t\t},\n\n\t\t\thideCloseButton: {\n\t\t\t\ttype: Boolean,\n\t\t\t\trequired: false,\n\t\t\t\tdefault: false\n\t\t\t},\n\n\t\t\tenableMobileFullscreen: {\n\t\t\t\ttype: Boolean,\n\t\t\t\trequired: false,\n\t\t\t\tdefault: true\n\t\t\t},\n\n\t\t\twidth: {\n\t\t\t\ttype: [Number, String],\n\t\t\t\trequired: false,\n\t\t\t\tdefault: null\n\t\t\t}\n\t\t},\n\n\t\tmounted() {\n\t\t\tthis.tabs = this.$children.filter(c => c.cmpName && c.cmpName == 'tab')\n\n\t\t\tif (this.has_tabs) {\n\t\t\t\tthis.currentTab = this._changeTab(this.tabs[0])\n\t\t\t}\n\n\t\t\tdocument.addEventListener('keyup', this._onDocumentKeyup)\n\t\t},\n\n\t\tbeforeDestroy() {\n\t\t\tdocument.removeEventListener('keyup', this._onDocumentKeyup)\n\t\t},\n\n\t\tdata() {\n\t\t\treturn {\n\t\t\t\tvisible: false,\n\t\t\t\tis_open: false,\n\t\t\t\tis_bouncing: false,\n\t\t\t\ttabs: [],\n\n\t\t\t\tbackups: {\n\t\t\t\t\tbody: {\n\t\t\t\t\t\theight: null,\n\t\t\t\t\t\toverflow: null\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tcomputed: {\n\t\t\thas_title() {\n\t\t\t\treturn this.title || this.$slots.title\n\t\t\t},\n\n\t\t\thas_tabs() {\n\t\t\t\treturn this.tabs.length > 0\n\t\t\t},\n\n\t\t\thas_content() {\n\t\t\t\treturn this.$slots.default\n\t\t\t},\n\n\t\t\tcurrent_tab() {\n\t\t\t\treturn this.tabs.filter(t => t.active === true)[0]\n\t\t\t},\n\n\t\t\toverlay_classes() {\n\t\t\t\treturn [\n\t\t\t\t\t'sweet-modal-overlay',\n\t\t\t\t\t'theme-' + this.overlayTheme,\n\t\t\t\t\t'sweet-modal-clickable',\n\t\t\t\t\t{\n\t\t\t\t\t\t'is-visible': this.visible,\n\t\t\t\t\t\tblocking: this.blocking\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\n\t\t\tmodal_classes() {\n\t\t\t\treturn [\n\t\t\t\t\t'sweet-modal',\n\t\t\t\t\t'theme-' + this.modalTheme,\n\t\t\t\t\t{\n\t\t\t\t\t\t'has-title': this.has_title,\n\t\t\t\t\t\t'has-tabs': this.has_tabs,\n\t\t\t\t\t\t'has-content': this.has_content,\n\t\t\t\t\t\t'has-icon': this.icon,\n\t\t\t\t\t\t'is-mobile-fullscreen': this.enableMobileFullscreen,\n\t\t\t\t\t\t'is-visible': this.visible,\n\t\t\t\t\t\t'is-alert': (this.icon && !this.has_tabs) || (!this.icon && !this.title && !this.$slots.title),\n\t\t\t\t\t\tbounce: this.is_bouncing,\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\n\t\t\tmodal_style() {\n\t\t\t\tlet width = this.width\n\t\t\t\tlet maxWidth = null\n\n\t\t\t\tif (width !== null) {\n\t\t\t\t\tif (Number(width) == width) {\n\t\t\t\t\t\twidth = width + 'px'\n\t\t\t\t\t}\n\n\t\t\t\t\tmaxWidth = 'none'\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\twidth,\n\t\t\t\t\tmaxWidth\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tmethods: {\n\t\t\t/**\n\t\t\t * Open the dialog\n\t\t\t * Emits an event 'open'\n\t\t\t *\n\t\t\t * @param tabId string Optional id or index of initial tab element.\n\t\t\t */\n\t\t\topen(tabId = null) {\n\t\t\t\tif (tabId && this.has_tabs) {\n\t\t\t\t\t// Find tab with wanted id.\n\t\t\t\t\tlet openingTabs = this.tabs.filter((tab) => {return tab.id === tabId})\n\t\t\t\t\tif (openingTabs.length > 0) {\n\t\t\t\t\t\t// Set current tab to first match.\n\t\t\t\t\t\tthis.currentTab = this._changeTab(openingTabs[0])\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Try opening index instead of id as an alternative.\n\t\t\t\t\t\tlet openingTab = this.tabs[tabId]\n\t\t\t\t\t\tif (openingTab) {\n\t\t\t\t\t\t\tthis.currentTab = this._changeTab(openingTab)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.is_open = true\n\t\t\t\tthis._lockBody()\n\t\t\t\tthis._animateIcon()\n\n\t\t\t\tsetTimeout(() => this.visible = true, 30)\n\t\t\t\tthis.$emit('open')\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Close the dialog\n\t\t\t * Emits an event 'close'\n\t\t\t */\n\t\t\tclose() {\n\t\t\t\tthis.visible = false\n\t\t\t\tthis._unlockBody()\n\n\t\t\t\tsetTimeout(() => this.is_open = false, 300)\n\t\t\t\tthis.$emit('close')\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Bounce the modal.\n\t\t\t */\n\t\t\tbounce() {\n\t\t\t\tthis.is_bouncing = true\n\n\t\t\t\tsetTimeout(() => this.is_bouncing = false, 330)\n\t\t\t},\n\n\t\t\t/**********************\n\t\t\t INTERNAL METHODS\n\t\t\t **********************/\n\n\t\t\t_lockBody() {\n\t\t\t\tthis.backups.body.height = document.body.style.height\n\t\t\t\tthis.backups.body.overflow = document.body.style.overflow\n\n\t\t\t\tdocument.body.style.height = '100%'\n\t\t\t\tdocument.body.style.overflow = 'hidden'\n\t\t\t},\n\n\t\t\t_unlockBody() {\n\t\t\t\tdocument.body.style.height = this.backups.body.height\n\t\t\t\tdocument.body.style.overflow = this.backups.body.overflow\n\t\t\t},\n\n\t\t\t_onOverlayClick(event) {\n\t\t\t\tif (!event.target.classList || event.target.classList.contains('sweet-modal-clickable')) {\n\t\t\t\t\tif (this.blocking) {\n\t\t\t\t\t\tif (this.pulseOnBlock) this.bounce()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.close()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t_onDocumentKeyup(event) {\n\t\t\t\tif (event.keyCode == 27) {\n\t\t\t\t\tif (this.blocking) {\n\t\t\t\t\t\tif (this.pulseOnBlock) this.bounce()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.close()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t_changeTab(tab) {\n\t\t\t\tthis.tabs.map(t => t.active = t == tab)\n\t\t\t\tthis.currentTab = tab\n\t\t\t},\n\n\t\t\t_getClassesForTab(tab) {\n\t\t\t\treturn [\n\t\t\t\t\t'sweet-modal-tab',\n\n\t\t\t\t\t{\n\t\t\t\t\t\tactive: tab.active,\n\t\t\t\t\t\tdisabled: tab.disabled\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\n\t\t\t_animateIcon() {\n\t\t\t\tif (!this.icon) return\n\n\t\t\t\tswitch (this.icon) {\n\t\t\t\t\tcase 'success':\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tthis._applyClasses(this.$refs.icon_success, {\n\t\t\t\t\t\t\t\t'': [ 'animate' ],\n\t\t\t\t\t\t\t\t'.sweet-modal-tip': [ 'animateSuccessTip' ],\n\t\t\t\t\t\t\t\t'.sweet-modal-long': [ 'animateSuccessLong' ]\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}, 80)\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'warning':\n\t\t\t\t\t\tthis._applyClasses(this.$refs.icon_warning, {\n\t\t\t\t\t\t\t'': [ 'pulseWarning' ],\n\t\t\t\t\t\t\t'.sweet-modal-body': [ 'pulseWarningIns' ],\n\t\t\t\t\t\t\t'.sweet-modal-dot': [ 'pulseWarningIns' ]\n\t\t\t\t\t\t})\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tthis._applyClasses(this.$refs.icon_error, {\n\t\t\t\t\t\t\t\t'': [ 'animateErrorIcon' ],\n\t\t\t\t\t\t\t\t'.sweet-modal-x-mark': [ 'animateXMark' ]\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}, 80)\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Apply classes from the classMap to $ref or children of $ref, a native\n\t\t\t * DOMElement.\n\t\t\t *\n\t\t\t * ClassMap:\n\t\t\t * {\n\t\t\t * 'selector': [ 'class1', 'class2', ... ]\n\t\t\t * }\n\t\t\t *\n\t\t\t * Empty Selector selects $ref.\n\t\t\t *\n\t\t\t * @param DOMNode $ref Element to apply classes to or children of that element\n\t\t\t * @param Object classMap Class Map which elements get which classes (see doc)\n\t\t\t */\n\t\t\t_applyClasses($ref, classMap) {\n\t\t\t\tfor (let cl in classMap) {\n\t\t\t\t\tlet classes = classMap[cl]\n\t\t\t\t\tlet $el\n\n\t\t\t\t\tif (cl == '') {\n\t\t\t\t\t\t$el = $ref\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$el = $ref.querySelector(cl)\n\t\t\t\t\t}\n\n\t\t\t\t\t$el.classList.remove(...classes)\n\t\t\t\t\t$el.classList.add(...classes)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n</script>\n\n<style lang=\"scss\">\n\t@import '../styles/mixins';\n\t@import '../styles/colors';\n\t@import '../styles/animations';\n\t@import '../styles/icons';\n\n\t.sweet-modal-overlay {\n\t\tposition: fixed;\n\t\ttop: 0;\n\t\tleft: 0;\n\n\t\twidth: 100vw;\n\t\theight: 100vh;\n\n\t\tz-index: 9001;\n\n\t\tfont-size: 14px;\n\n\t\t-webkit-font-smoothing: antialiased;\n\n\t\t// Theming\n\t\tbackground: rgba(#fff, 0.9);\n\n\t\t&.theme-dark {\n\t\t\t$color: color(dark-overlay);\n\n\t\t\t// background: radial-gradient(ellipse at center, rgba($color, 0.9) 0%, rgba($color, 0.96) 100%);\n\t\t\tbackground: rgba($color, 0.94);\n\t\t}\n\n\t\t// Animation\n\t\topacity: 0;\n\t\ttransition: opacity 0.3s;\n\t\ttransform: translate3D(0, 0, 0);\n\t\t-webkit-perspective: 500px;\n\n\t\t&.is-visible {\n\t\t\topacity: 1;\n\t\t}\n\t}\n\n\t.sweet-modal {\n\t\t@include border-box;\n\n\t\tbackground: #fff;\n\t\tbox-shadow: 0px 8px 46px rgba(#000, 0.08),\n\t\t\t\t\t0px 2px 6px rgba(#000, 0.03);\n\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\t// transform: translate(-50%, -50%); // Done by the animation later\n\n\t\twidth: 80%;\n\t\tmax-width: 640px;\n\t\tmax-height: 100vh;\n\t\toverflow-y: auto;\n\n\t\tborder-radius: 2px;\n\n\t\t.sweet-box-actions {\n\t\t\tposition: absolute;\n\t\t\ttop: 12px;\n\t\t\tright: 12px;\n\n\t\t\t.sweet-action-close {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tcursor: pointer;\n\n\t\t\t\tcolor: color(dark);\n\t\t\t\ttext-align: center;\n\n\t\t\t\twidth: 42px;\n\t\t\t\theight: 42px;\n\t\t\t\tline-height: 42px;\n\n\t\t\t\tborder-radius: 50%;\n\n\t\t\t\tsvg {\n\t\t\t\t\twidth: 24px;\n\t\t\t\t\theight: 24px;\n\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t\tmargin-top: -2px;\n\n\t\t\t\t\t@include svg-path(true) {\n\t\t\t\t\t\tfill: currentColor;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t&:hover {\n\t\t\t\t\tbackground: color(blue);\n\t\t\t\t\tcolor: #fff;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t.sweet-title {\n\t\t\t@include ellipsis;\n\n\t\t\theight: 64px;\n\t\t\tline-height: 64px;\n\n\t\t\tborder-bottom: 1px solid color(border);\n\n\t\t\tpadding: {\n\t\t\t\tleft: 32px;\n\t\t\t\tright: 64px;\n\t\t\t}\n\n\t\t\t> h2 {\n\t\t\t\t@include ellipsis;\n\t\t\t\t@include mp0;\n\n\t\t\t\tfont-weight: 500;\n\t\t\t\tfont-size: 22px;\n\t\t\t}\n\t\t}\n\n\t\tul.sweet-modal-tabs {\n\t\t\t@include ulreset;\n\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\twidth: calc(100% + 32px);\n\t\t\theight: 100%;\n\n\t\t\tmargin-left: -32px;\n\t\t\toverflow-x: auto;\n\n\t\t\tli.sweet-modal-tab {\n\t\t\t\tdisplay: block;\n\t\t\t\theight: 100%;\n\n\t\t\t\ta {\n\t\t\t\t\t@include ellipsis;\n\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\talign-items: center;\n\n\t\t\t\t\tpadding: {\n\t\t\t\t\t\tleft: 20px;\n\t\t\t\t\t\tright: 20px;\n\t\t\t\t\t}\n\n\t\t\t\t\tcolor: color(dark);\n\t\t\t\t\ttext-decoration: none;\n\t\t\t\t\ttext-align: center;\n\n\t\t\t\t\theight: 100%;\n\n\t\t\t\t\tspan.sweet-modal-tab-title {\n\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t}\n\n\t\t\t\t\tspan.sweet-modal-tab-icon {\n\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\tline-height: 1.0;\n\n\t\t\t\t\t\tsvg, img {\n\t\t\t\t\t\t\twidth: 16px;\n\t\t\t\t\t\t\theight: 16px;\n\n\t\t\t\t\t\t\t@include svg-path(true) {\n\t\t\t\t\t\t\t\tfill: currentColor;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tspan.sweet-modal-tab-icon + span.sweet-modal-tab-title {\n\t\t\t\t\t\tline-height: 1.0;\n\t\t\t\t\t\tmargin-top: 8px;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t&:first-child a {\n\t\t\t\t\tpadding-left: 32px;\n\t\t\t\t}\n\n\t\t\t\t&.active a {\n\t\t\t\t\tfont-weight: 600;\n\t\t\t\t\tcolor: color(blue);\n\t\t\t\t}\n\n\t\t\t\t&.disabled a {\n\t\t\t\t\t@include unclickable;\n\t\t\t\t\tcolor: color(light-grey);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&.has-tabs:not(.has-title) {\n\n\t\t\t.sweet-title {\n\t\t\t\theight: 84px;\n\t\t\t\tline-height: 84px;\n\t\t\t}\n\t\t}\n\n\t\t&.has-tabs.has-title {\n\n\t\t\tul.sweet-modal-tabs {\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 48px;\n\n\t\t\t\tmargin: 0;\n\t\t\t\tborder-bottom: 1px solid color(border);\n\n\t\t\t\tli.sweet-modal-tab a {\n\t\t\t\t\tmargin-top: -4px;\n\n\t\t\t\t\tspan.sweet-modal-tab-icon {\n\t\t\t\t\t\tdisplay: inline-block;\n\n\t\t\t\t\t\tsvg, img {\n\t\t\t\t\t\t\tvertical-align: middle;\n\n\t\t\t\t\t\t\tmargin: {\n\t\t\t\t\t\t\t\ttop: -2px;\n\t\t\t\t\t\t\t\tright: 8px;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tspan.sweet-modal-tab-title {\n\t\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t.sweet-content {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\n\t\t\tpadding: {\n\t\t\t\tleft: 32px;\n\t\t\t\tright: 32px;\n\t\t\t\ttop: 24px;\n\t\t\t\tbottom: 24px;\n\t\t\t}\n\n\t\t\tline-height: 1.5;\n\n\t\t\t.sweet-content-content {\n\t\t\t\tflex-grow: 1;\n\t\t\t}\n\n\t\t\t.sweet-modal-tab:not(.active) {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\n\t\t\t.sweet-modal-icon {\n\t\t\t\tmargin-bottom: 36px;\n\t\t\t}\n\t\t}\n\n\t\t.sweet-buttons {\n\t\t\ttext-align: right;\n\n\t\t\tpadding: {\n\t\t\t\tleft: 20px;\n\t\t\t\tright: 20px;\n\t\t\t\ttop: 12px;\n\t\t\t\tbottom: 12px;\n\t\t\t}\n\t\t}\n\n\t\t.sweet-content + .sweet-buttons {\n\t\t\tborder-top: 1px solid color(border);\n\t\t}\n\n\t\t// Special Styles\n\t\t&.is-alert {\n\n\t\t\t.sweet-content {\n\t\t\t\tdisplay: block;\n\n\t\t\t\ttext-align: center;\n\t\t\t\tfont-size: 16px;\n\n\t\t\t\tpadding: {\n\t\t\t\t\ttop: 64px;\n\t\t\t\t\tbottom: 64px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&.has-tabs.has-icon .sweet-content {\n\t\t\tpadding: {\n\t\t\t\ttop: 32px;\n\t\t\t\tbottom: 32px;\n\t\t\t}\n\n\t\t\t.sweet-content-content {\n\t\t\t\tpadding-left: 32px;\n\t\t\t}\n\n\t\t\t.sweet-modal-icon {\n\t\t\t\tmargin-bottom: 0;\n\t\t\t}\n\t\t}\n\n\t\t&:not(.has-content) {\n\n\t\t\t.sweet-modal-icon {\n\t\t\t\tmargin-bottom: 0;\n\t\t\t}\n\t\t}\n\n\t\t// Theming\n\t\t&.theme-dark {\n\t\t\t$color: color(dark-modal);\n\n\t\t\tbackground: $color;\n\t\t\tcolor: #fff;\n\n\t\t\t.sweet-box-actions {\n\n\t\t\t\t.sweet-action-close {\n\t\t\t\t\tcolor: #fff;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.sweet-title {\n\t\t\t\tborder-bottom-color: darken($color, 8%);\n\t\t\t\tbox-shadow: 0px 1px 0px lighten($color, 8%);\n\t\t\t}\n\n\t\t\tul.sweet-modal-tabs li {\n\n\t\t\t\ta {\n\t\t\t\t\tcolor: #fff;\n\t\t\t\t}\n\n\t\t\t\t&.active a {\n\t\t\t\t\tcolor: color(blue);\n\t\t\t\t}\n\n\t\t\t\t&.disabled a {\n\t\t\t\t\tcolor: lighten($color, 20%);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&.has-tabs.has-title {\n\n\t\t\t\tul.sweet-modal-tabs {\n\t\t\t\t\tborder-bottom-color: darken($color, 8%);\n\t\t\t\t\tbox-shadow: 0px 1px 0px lighten($color, 8%);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.sweet-content + .sweet-buttons {\n\t\t\t\tborder-top-color: lighten($color, 8%);\n\t\t\t\tbox-shadow: 0px -1px 0px darken($color, 8%);\n\t\t\t}\n\t\t}\n\n\t\t// Animation\n\t\ttransform: scale(0.9) translate(calc(-50% - 32px), -50%);\n\t\topacity: 0;\n\n\t\ttransition: {\n\t\t\tproperty: transform, opacity;\n\t\t\tduration: 0.3s;\n\t\t\tdelay: 0.05s;\n\t\t\ttiming-function: cubic-bezier(0.52, 0.02, 0.19, 1.02);\n\t\t}\n\n\t\t.sweet-buttons,\n\t\t.sweet-content {\n\t\t\topacity: 0;\n\n\t\t\ttransition: {\n\t\t\t\tproperty: transform, opacity;\n\t\t\t\tduration: 0.3s;\n\t\t\t\tdelay: 0.09s;\n\t\t\t\ttiming-function: cubic-bezier(0.52, 0.02, 0.19, 1.02);\n\t\t\t}\n\t\t}\n\n\t\t.sweet-content {\n\t\t\ttransform: translateY(-8px);\n\t\t}\n\n\t\t.sweet-buttons {\n\t\t\ttransform: translateY(16px);\n\t\t}\n\n\t\t&.is-visible {\n\t\t\ttransform: translate(-50%, -50%);\n\t\t\topacity: 1;\n\n\t\t\t.sweet-buttons,\n\t\t\t.sweet-content {\n\t\t\t\ttransform: none;\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\n\t\t&.bounce {\n\t\t\tanimation-name: bounce;\n\t\t\tanimation-duration: 0.3s;\n\t\t\tanimation-iteration-count: 2;\n\t\t\tanimation-direction: alternate;\n\t\t}\n\n\t\t// Responsiveness\n\t\t@include media(desktop) {\n\t\t\t// Bouncing animation\n\t\t\t@keyframes bounce {\n\t\t\t\t0% {\n\t\t\t\t\ttransform: scale(1) translate(-50%, -50%);\n\t\t\t\t}\n\n\t\t\t\t50% {\n\t\t\t\t\ttransform: scale(1.02) translate(calc(-50% + 8px), -50%);\n\t\t\t\t}\n\n\t\t\t\t100% {\n\t\t\t\t\ttransform: scale(1) translate(-50%, -50%);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&.is-mobile-fullscreen {\n\t\t\t\n\t\t\t@include media(mobile) {\n\n\t\t\t\t& {\n\t\t\t\t\twidth: 100%;\n\t\t\t\t\theight: 100vh;\n\n\t\t\t\t\tleft: 0;\n\t\t\t\t\ttop: 0;\n\n\t\t\t\t\ttransform: scale(0.9);\n\n\t\t\t\t\t&.is-visible {\n\t\t\t\t\t\ttransform: none;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t.sweet-buttons {\n\t\t\t\t\t@include border-box;\n\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tbottom: 0;\n\t\t\t\t\tleft: 0;\n\n\t\t\t\t\twidth: 100%;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SweetModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SweetModal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SweetModal.vue?vue&type=template&id=d3491394&\"\nimport script from \"./SweetModal.vue?vue&type=script&lang=js&\"\nexport * from \"./SweetModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SweetModal.vue?vue&type=style&index=0&id=d3491394&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:['sweet-modal-tab', { active: _vm.active }]},[_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div :class=\"['sweet-modal-tab', { active }]\">\n\t\t<slot></slot>\n\t</div>\n</template>\n\n<script>\n export default {\n\t\tprops: {\n\t\t\ttitle: {\n\t\t\t\ttype: String,\n\t\t\t\trequired: true,\n\t\t\t},\n\n\t\t\tid: {\n\t\t\t\ttype: String,\n\t\t\t\trequired: true\n\t\t\t},\n\n\t\t\ticon: {\n\t\t\t\ttype: String,\n\t\t\t\trequired: false,\n\t\t\t\tdefault: null\n\t\t\t},\n\n\t\t\tdisabled: {\n\t\t\t\ttype: Boolean,\n\t\t\t\trequired: false,\n\t\t\t\tdefault: false\n\t\t\t}\n\t\t},\n\n\t\tdata() {\n\t\t\treturn {\n\t\t\t\tactive: false\n\t\t\t}\n\t\t},\n\n\t\tcomputed: {\n\t\t\tcmpName() {\n\t\t\t\treturn 'tab'\n\t\t\t}\n\t\t}\n }\n</script>\n\n<style lang=\"scss\">\n\n</style>\n","import mod from \"-!../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SweetModalTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SweetModalTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SweetModalTab.vue?vue&type=template&id=53147251&\"\nimport script from \"./SweetModalTab.vue?vue&type=script&lang=js&\"\nexport * from \"./SweetModalTab.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { SweetModal, SweetModalTab } from './main.js'\n\nexport default {\n\tinstall(Vue, options) {\n\t\tVue.component('SweetModal', SweetModal)\n\t\tVue.component('SweetModalTab', SweetModalTab)\n\t}\n}","!function(e,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):((e=e||self).__vee_validate_locale__pt_BR=e.__vee_validate_locale__pt_BR||{},e.__vee_validate_locale__pt_BR.js=n())}(this,function(){\"use strict\";var e,n={name:\"pt_BR\",messages:{_default:function(e){return\"O valor do campo \"+e+\" não é válido\"},after:function(e,n){return\"O campo \"+e+\" deve estar depois do campo \"+n[0]},alpha:function(e){return\"O campo \"+e+\" deve conter somente letras\"},alpha_dash:function(e){return\"O campo \"+e+\" deve conter letras, números e traços\"},alpha_num:function(e){return\"O campo \"+e+\" deve conter somente letras e números\"},alpha_spaces:function(e){return\"O campo \"+e+\" só pode conter caracteres alfabéticos e espaços\"},before:function(e,n){return\"O campo \"+e+\" deve estar antes do campo \"+n[0]},between:function(e,n){return\"O campo \"+e+\" deve estar entre \"+n[0]+\" e \"+n[1]},confirmed:function(e,n){return\"Os campos \"+e+\" e \"+n[0]+\" devem ser iguais\"},credit_card:function(e){return\"O campo \"+e+\" é inválido\"},date_between:function(e,n){return\"O campo \"+e+\" deve estar entre \"+n[0]+\" e \"+n[1]},date_format:function(e,n){return\"O campo \"+e+\" deve estar no formato \"+n[0]},decimal:function(e,n){void 0===n&&(n=[]);var o=n[0];return void 0===o&&(o=\"*\"),\"O campo \"+e+\" deve ser numérico e deve conter \"+(o&&\"*\"!==o?o:\"\")+\" casas decimais\"},digits:function(e,n){return\"O campo \"+e+\" deve ser numérico e ter exatamente \"+n[0]+\" dígitos\"},dimensions:function(e,n){return\"O campo \"+e+\" deve ter \"+n[0]+\" pixels de largura por \"+n[1]+\" pixels de altura\"},email:function(e){return\"O campo \"+e+\" deve ser um email válido\"},excluded:function(e){return\"O campo \"+e+\" deve ser um valor válido\"},ext:function(e){return\"O campo \"+e+\" deve ser um arquivo válido\"},image:function(e){return\"O campo \"+e+\" deve ser uma imagem\"},included:function(e){return\"O campo \"+e+\" deve ter um valor válido\"},integer:function(e){return\"O campo \"+e+\" deve ser um número inteiro\"},ip:function(e){return\"O campo \"+e+\" deve ser um endereço IP válido\"},is:function(e){return\"O valor inserido no campo \"+e+\" não é válido\"},length:function(e,n){var o=n[0],r=n[1];return r?\"O tamanho do campo \"+e+\" está entre \"+o+\" e \"+r:\"O tamanho do campo \"+e+\" deve ser \"+o},max:function(e,n){return\"O campo \"+e+\" não deve ter mais que \"+n[0]+\" caracteres\"},max_value:function(e,n){return\"O campo \"+e+\" precisa ser \"+n[0]+\" ou menor\"},mimes:function(e){return\"O campo \"+e+\" deve ser um tipo de arquivo válido\"},min:function(e,n){return\"O campo \"+e+\" deve conter pelo menos \"+n[0]+\" caracteres\"},min_value:function(e,n){return\"O campo \"+e+\" precisa ser \"+n[0]+\" ou maior\"},numeric:function(e){return\"O campo \"+e+\" deve conter apenas números\"},regex:function(e){return\"O campo \"+e+\" possui um formato inválido\"},required:function(e){return\"O campo \"+e+\" é obrigatório\"},size:function(e,n){return\"O campo \"+e+\" deve ser menor que \"+function(e){var n=1024,o=0===(e=Number(e)*n)?0:Math.floor(Math.log(e)/Math.log(n));return 1*(e/Math.pow(n,o)).toFixed(2)+\" \"+[\"Byte\",\"KB\",\"MB\",\"GB\",\"TB\",\"PB\",\"EB\",\"ZB\",\"YB\"][o]}(n[0])},url:function(e){return\"O campo \"+e+\" não é uma URL válida\"}},attributes:{}};return\"undefined\"!=typeof VeeValidate&&VeeValidate.Validator.localize(((e={})[n.name]=n,e)),n});","/**\n * vee-validate v2.2.15\n * (c) 2019 Abdelrahman Awad\n * @license MIT\n */\n// \n\nvar isTextInput = function (el) {\n return includes(['text', 'password', 'search', 'email', 'tel', 'url', 'textarea', 'number'], el.type);\n};\n\nvar isCheckboxOrRadioInput = function (el) {\n return includes(['radio', 'checkbox'], el.type);\n};\n\nvar isDateInput = function (el) {\n return includes(['date', 'week', 'month', 'datetime-local', 'time'], el.type);\n};\n\n/**\n * Gets the data attribute. the name must be kebab-case.\n */\nvar getDataAttribute = function (el, name) { return el.getAttribute((\"data-vv-\" + name)); };\n\nvar isNaN$1 = function (value) {\n if ('isNaN' in Number) {\n return Number.isNaN(value);\n }\n\n // eslint-disable-next-line\n return typeof(value) === 'number' && value !== value;\n};\n\n/**\n * Checks if the values are either null or undefined.\n */\nvar isNullOrUndefined = function () {\n var values = [], len = arguments.length;\n while ( len-- ) values[ len ] = arguments[ len ];\n\n return values.every(function (value) {\n return value === null || value === undefined;\n });\n};\n\n/**\n * Creates the default flags object.\n */\nvar createFlags = function () { return ({\n untouched: true,\n touched: false,\n dirty: false,\n pristine: true,\n valid: null,\n invalid: null,\n validated: false,\n pending: false,\n required: false,\n changed: false\n}); };\n\n/**\n * Shallow object comparison.\n */\nvar isEqual = function (lhs, rhs) {\n if (lhs instanceof RegExp && rhs instanceof RegExp) {\n return isEqual(lhs.source, rhs.source) && isEqual(lhs.flags, rhs.flags);\n }\n\n if (Array.isArray(lhs) && Array.isArray(rhs)) {\n if (lhs.length !== rhs.length) { return false; }\n\n for (var i = 0; i < lhs.length; i++) {\n if (!isEqual(lhs[i], rhs[i])) {\n return false;\n }\n }\n\n return true;\n }\n\n // if both are objects, compare each key recursively.\n if (isObject(lhs) && isObject(rhs)) {\n return Object.keys(lhs).every(function (key) {\n return isEqual(lhs[key], rhs[key]);\n }) && Object.keys(rhs).every(function (key) {\n return isEqual(lhs[key], rhs[key]);\n });\n }\n\n if (isNaN$1(lhs) && isNaN$1(rhs)) {\n return true;\n }\n\n return lhs === rhs;\n};\n\n/**\n * Determines the input field scope.\n */\nvar getScope = function (el) {\n var scope = getDataAttribute(el, 'scope');\n if (isNullOrUndefined(scope)) {\n var form = getForm(el);\n\n if (form) {\n scope = getDataAttribute(form, 'scope');\n }\n }\n\n return !isNullOrUndefined(scope) ? scope : null;\n};\n\n/**\n * Get the closest form element.\n */\nvar getForm = function (el) {\n if (isNullOrUndefined(el)) { return null; }\n\n if (el.tagName === 'FORM') { return el; }\n\n if (!isNullOrUndefined(el.form)) { return el.form; }\n\n return !isNullOrUndefined(el.parentNode) ? getForm(el.parentNode) : null;\n};\n\n/**\n * Gets the value in an object safely.\n */\nvar getPath = function (path, target, def) {\n if ( def === void 0 ) def = undefined;\n\n if (!path || !target) { return def; }\n\n var value = target;\n path.split('.').every(function (prop) {\n if (prop in value) {\n value = value[prop];\n\n return true;\n }\n\n value = def;\n\n return false;\n });\n\n return value;\n};\n\n/**\n * Checks if path exists within an object.\n */\nvar hasPath = function (path, target) {\n var obj = target;\n var previousPath = null;\n var isNullOrNonObject = false;\n var isValidPath = path.split('.').reduce(function (reducer, prop) {\n if (obj == null || typeof obj !== 'object') {\n isNullOrNonObject = true;\n return reducer && false;\n }\n\n if (prop in obj) {\n obj = obj[prop];\n previousPath = previousPath === null ? prop : previousPath + '.' + prop;\n\n return reducer && true;\n }\n\n return reducer && false;\n }, true);\n\n if (process.env.NODE_ENV !== 'production') {\n if (isNullOrNonObject) {\n throw new Error(previousPath + ' is not an object');\n }\n }\n\n return isValidPath;\n};\n\n/**\n * Parses a rule string expression.\n */\nvar parseRule = function (rule) {\n var params = [];\n var name = rule.split(':')[0];\n\n if (includes(rule, ':')) {\n params = rule.split(':').slice(1).join(':').split(',');\n }\n\n return { name: name, params: params };\n};\n\n/**\n * Debounces a function.\n */\nvar debounce = function (fn, wait, token) {\n if ( wait === void 0 ) wait = 0;\n if ( token === void 0 ) token = { cancelled: false };\n\n if (wait === 0) {\n return fn;\n }\n\n var timeout;\n\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var later = function () {\n timeout = null;\n\n // check if the fn call was cancelled.\n if (!token.cancelled) { fn.apply(void 0, args); }\n };\n\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (!timeout) { fn.apply(void 0, args); }\n };\n};\n\n/**\n * Appends a rule definition to a list of rules.\n */\nvar appendRule = function (rule, rules) {\n if (!rules) {\n return normalizeRules(rule);\n }\n\n if (!rule) {\n return normalizeRules(rules);\n }\n\n if (typeof rules === 'string') {\n rules = normalizeRules(rules);\n }\n\n return assign({}, rules, normalizeRules(rule));\n};\n\n/**\n * Normalizes the given rules expression.\n */\nvar normalizeRules = function (rules) {\n // if falsy value return an empty object.\n if (!rules) {\n return {};\n }\n\n if (isObject(rules)) {\n // $FlowFixMe\n return Object.keys(rules).reduce(function (prev, curr) {\n var params = [];\n // $FlowFixMe\n if (rules[curr] === true) {\n params = [];\n } else if (Array.isArray(rules[curr])) {\n params = rules[curr];\n } else if (isObject(rules[curr])) {\n params = rules[curr];\n } else {\n params = [rules[curr]];\n }\n\n // $FlowFixMe\n if (rules[curr] !== false) {\n prev[curr] = params;\n }\n\n return prev;\n }, {});\n }\n\n if (typeof rules !== 'string') {\n warn('rules must be either a string or an object.');\n return {};\n }\n\n return rules.split('|').reduce(function (prev, rule) {\n var parsedRule = parseRule(rule);\n if (!parsedRule.name) {\n return prev;\n }\n\n prev[parsedRule.name] = parsedRule.params;\n return prev;\n }, {});\n};\n\n/**\n * Emits a warning to the console.\n */\nvar warn = function (message) {\n console.warn((\"[vee-validate] \" + message)); // eslint-disable-line\n};\n\n/**\n * Creates a branded error object.\n */\nvar createError = function (message) { return new Error((\"[vee-validate] \" + message)); };\n\n/**\n * Checks if the value is an object.\n */\nvar isObject = function (obj) { return obj !== null && obj && typeof obj === 'object' && ! Array.isArray(obj); };\n\n/**\n * Checks if a function is callable.\n */\nvar isCallable = function (func) { return typeof func === 'function'; };\n\n/**\n * Check if element has the css class on it.\n */\nvar hasClass = function (el, className) {\n if (el.classList) {\n return el.classList.contains(className);\n }\n\n return !!el.className.match(new RegExp((\"(\\\\s|^)\" + className + \"(\\\\s|$)\")));\n};\n\n/**\n * Adds the provided css className to the element.\n */\nvar addClass = function (el, className) {\n if (el.classList) {\n el.classList.add(className);\n return;\n }\n\n if (!hasClass(el, className)) {\n el.className += \" \" + className;\n }\n};\n\n/**\n * Remove the provided css className from the element.\n */\nvar removeClass = function (el, className) {\n if (el.classList) {\n el.classList.remove(className);\n return;\n }\n\n if (hasClass(el, className)) {\n var reg = new RegExp((\"(\\\\s|^)\" + className + \"(\\\\s|$)\"));\n el.className = el.className.replace(reg, ' ');\n }\n};\n\n/**\n * Adds or removes a class name on the input depending on the status flag.\n */\nvar toggleClass = function (el, className, status) {\n if (!el || !className) { return; }\n\n if (Array.isArray(className)) {\n className.forEach(function (item) { return toggleClass(el, item, status); });\n return;\n }\n\n if (status) {\n return addClass(el, className);\n }\n\n removeClass(el, className);\n};\n\n/**\n * Converts an array-like object to array, provides a simple polyfill for Array.from\n */\nvar toArray = function (arrayLike) {\n if (isCallable(Array.from)) {\n return Array.from(arrayLike);\n }\n\n var array = [];\n var length = arrayLike.length;\n /* istanbul ignore next */\n for (var i = 0; i < length; i++) {\n array.push(arrayLike[i]);\n }\n\n /* istanbul ignore next */\n return array;\n};\n\n/**\n * Converts an array-like object to array and place other elements in an array\n */\nvar ensureArray = function (arrayLike) {\n if (Array.isArray(arrayLike)) {\n return [].concat( arrayLike );\n }\n var array = toArray(arrayLike);\n return isEmptyArray(array) ? [arrayLike] : array;\n};\n\n/**\n * Assign polyfill from the mdn.\n */\nvar assign = function (target) {\n var others = [], len = arguments.length - 1;\n while ( len-- > 0 ) others[ len ] = arguments[ len + 1 ];\n\n /* istanbul ignore else */\n if (isCallable(Object.assign)) {\n return Object.assign.apply(Object, [ target ].concat( others ));\n }\n\n /* istanbul ignore next */\n if (target == null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n /* istanbul ignore next */\n var to = Object(target);\n /* istanbul ignore next */\n others.forEach(function (arg) {\n // Skip over if undefined or null\n if (arg != null) {\n Object.keys(arg).forEach(function (key) {\n to[key] = arg[key];\n });\n }\n });\n /* istanbul ignore next */\n return to;\n};\n\nvar id = 0;\nvar idTemplate = '{id}';\n\n/**\n * Generates a unique id.\n */\nvar uniqId = function () {\n // handle too many uses of uniqId, although unlikely.\n if (id >= 9999) {\n id = 0;\n // shift the template.\n idTemplate = idTemplate.replace('{id}', '_{id}');\n }\n\n id++;\n var newId = idTemplate.replace('{id}', String(id));\n\n return newId;\n};\n\nvar findIndex = function (arrayLike, predicate) {\n var array = Array.isArray(arrayLike) ? arrayLike : toArray(arrayLike);\n for (var i = 0; i < array.length; i++) {\n if (predicate(array[i])) {\n return i;\n }\n }\n\n return -1;\n};\n\n/**\n * finds the first element that satisfies the predicate callback, polyfills array.find\n */\nvar find = function (arrayLike, predicate) {\n var array = Array.isArray(arrayLike) ? arrayLike : toArray(arrayLike);\n var idx = findIndex(array, predicate);\n\n return idx === -1 ? undefined : array[idx];\n};\n\nvar isBuiltInComponent = function (vnode) {\n if (!vnode) {\n return false;\n }\n\n var tag = vnode.componentOptions.tag;\n\n return /^(keep-alive|transition|transition-group)$/.test(tag);\n};\n\nvar makeDelayObject = function (events, delay, delayConfig) {\n if (typeof delay === 'number') {\n return events.reduce(function (prev, e) {\n prev[e] = delay;\n return prev;\n }, {});\n }\n\n return events.reduce(function (prev, e) {\n if (typeof delay === 'object' && e in delay) {\n prev[e] = delay[e];\n return prev;\n }\n\n if (typeof delayConfig === 'number') {\n prev[e] = delayConfig;\n return prev;\n }\n\n prev[e] = (delayConfig && delayConfig[e]) || 0;\n\n return prev;\n }, {});\n};\n\nvar deepParseInt = function (input) {\n if (typeof input === 'number') { return input; }\n\n if (typeof input === 'string') { return parseInt(input); }\n\n var map = {};\n for (var element in input) {\n map[element] = parseInt(input[element]);\n }\n\n return map;\n};\n\nvar merge = function (target, source) {\n if (! (isObject(target) && isObject(source))) {\n return target;\n }\n\n Object.keys(source).forEach(function (key) {\n var obj, obj$1;\n\n if (isObject(source[key])) {\n if (! target[key]) {\n assign(target, ( obj = {}, obj[key] = {}, obj ));\n }\n\n merge(target[key], source[key]);\n return;\n }\n\n assign(target, ( obj$1 = {}, obj$1[key] = source[key], obj$1 ));\n });\n\n return target;\n};\n\nvar fillRulesFromElement = function (el, rules) {\n if (el.required) {\n rules = appendRule('required', rules);\n }\n\n if (isTextInput(el)) {\n if (el.type === 'email') {\n rules = appendRule((\"email\" + (el.multiple ? ':multiple' : '')), rules);\n }\n\n if (el.pattern) {\n rules = appendRule({ regex: el.pattern }, rules);\n }\n\n // 524288 is the max on some browsers and test environments.\n if (el.maxLength >= 0 && el.maxLength < 524288) {\n rules = appendRule((\"max:\" + (el.maxLength)), rules);\n }\n\n if (el.minLength > 0) {\n rules = appendRule((\"min:\" + (el.minLength)), rules);\n }\n\n if (el.type === 'number') {\n rules = appendRule('decimal', rules);\n if (el.min !== '') {\n rules = appendRule((\"min_value:\" + (el.min)), rules);\n }\n\n if (el.max !== '') {\n rules = appendRule((\"max_value:\" + (el.max)), rules);\n }\n }\n\n return rules;\n }\n\n if (isDateInput(el)) {\n var timeFormat = el.step && Number(el.step) < 60 ? 'HH:mm:ss' : 'HH:mm';\n\n if (el.type === 'date') {\n return appendRule('date_format:yyyy-MM-dd', rules);\n }\n\n if (el.type === 'datetime-local') {\n return appendRule((\"date_format:yyyy-MM-ddT\" + timeFormat), rules);\n }\n\n if (el.type === 'month') {\n return appendRule('date_format:yyyy-MM', rules);\n }\n\n if (el.type === 'week') {\n return appendRule('date_format:yyyy-[W]WW', rules);\n }\n\n if (el.type === 'time') {\n return appendRule((\"date_format:\" + timeFormat), rules);\n }\n }\n\n return rules;\n};\n\nvar values = function (obj) {\n if (isCallable(Object.values)) {\n return Object.values(obj);\n }\n\n // fallback to keys()\n /* istanbul ignore next */\n return Object.keys(obj).map(function (k) { return obj[k]; });\n};\n\nvar parseSelector = function (selector) {\n var rule = null;\n if (includes(selector, ':')) {\n rule = selector.split(':').pop();\n selector = selector.replace((\":\" + rule), '');\n }\n\n if (selector[0] === '#') {\n return {\n id: selector.slice(1),\n rule: rule,\n name: null,\n scope: null\n };\n }\n\n var scope = null;\n var name = selector;\n if (includes(selector, '.')) {\n var parts = selector.split('.');\n scope = parts[0];\n name = parts.slice(1).join('.');\n }\n\n return {\n id: null,\n scope: scope,\n name: name,\n rule: rule\n };\n};\n\nvar includes = function (collection, item) {\n return collection.indexOf(item) !== -1;\n};\n\nvar isEmptyArray = function (arr) {\n return Array.isArray(arr) && arr.length === 0;\n};\n\nvar defineNonReactive = function (obj, prop, value) {\n Object.defineProperty(obj, prop, {\n configurable: false,\n writable: true,\n value: value\n });\n};\n\n// \n\nvar LOCALE = 'en';\n\nvar Dictionary = function Dictionary (dictionary) {\n if ( dictionary === void 0 ) dictionary = {};\n\n this.container = {};\n this.merge(dictionary);\n};\n\nvar prototypeAccessors = { locale: { configurable: true } };\n\nprototypeAccessors.locale.get = function () {\n return LOCALE;\n};\n\nprototypeAccessors.locale.set = function (value) {\n LOCALE = value || 'en';\n};\n\nDictionary.prototype.hasLocale = function hasLocale (locale) {\n return !!this.container[locale];\n};\n\nDictionary.prototype.setDateFormat = function setDateFormat (locale, format) {\n if (!this.container[locale]) {\n this.container[locale] = {};\n }\n\n this.container[locale].dateFormat = format;\n};\n\nDictionary.prototype.getDateFormat = function getDateFormat (locale) {\n if (!this.container[locale] || !this.container[locale].dateFormat) {\n return null;\n }\n\n return this.container[locale].dateFormat;\n};\n\nDictionary.prototype.getMessage = function getMessage (locale, key, data) {\n var message = null;\n if (!this.hasMessage(locale, key)) {\n message = this._getDefaultMessage(locale);\n } else {\n message = this.container[locale].messages[key];\n }\n\n return isCallable(message) ? message.apply(void 0, data) : message;\n};\n\n/**\n * Gets a specific message for field. falls back to the rule message.\n */\nDictionary.prototype.getFieldMessage = function getFieldMessage (locale, field, key, data) {\n if (!this.hasLocale(locale)) {\n return this.getMessage(locale, key, data);\n }\n\n var dict = this.container[locale].custom && this.container[locale].custom[field];\n if (!dict || !dict[key]) {\n return this.getMessage(locale, key, data);\n }\n\n var message = dict[key];\n return isCallable(message) ? message.apply(void 0, data) : message;\n};\n\nDictionary.prototype._getDefaultMessage = function _getDefaultMessage (locale) {\n if (this.hasMessage(locale, '_default')) {\n return this.container[locale].messages._default;\n }\n\n return this.container.en.messages._default;\n};\n\nDictionary.prototype.getAttribute = function getAttribute (locale, key, fallback) {\n if ( fallback === void 0 ) fallback = '';\n\n if (!this.hasAttribute(locale, key)) {\n return fallback;\n }\n\n return this.container[locale].attributes[key];\n};\n\nDictionary.prototype.hasMessage = function hasMessage (locale, key) {\n return !! (\n this.hasLocale(locale) &&\n this.container[locale].messages &&\n this.container[locale].messages[key]\n );\n};\n\nDictionary.prototype.hasAttribute = function hasAttribute (locale, key) {\n return !! (\n this.hasLocale(locale) &&\n this.container[locale].attributes &&\n this.container[locale].attributes[key]\n );\n};\n\nDictionary.prototype.merge = function merge$1 (dictionary) {\n merge(this.container, dictionary);\n};\n\nDictionary.prototype.setMessage = function setMessage (locale, key, message) {\n if (! this.hasLocale(locale)) {\n this.container[locale] = {\n messages: {},\n attributes: {}\n };\n }\n \n if (!this.container[locale].messages) {\n this.container[locale].messages = {};\n }\n\n this.container[locale].messages[key] = message;\n};\n\nDictionary.prototype.setAttribute = function setAttribute (locale, key, attribute) {\n if (! this.hasLocale(locale)) {\n this.container[locale] = {\n messages: {},\n attributes: {}\n };\n }\n\n this.container[locale].attributes[key] = attribute;\n};\n\nObject.defineProperties( Dictionary.prototype, prototypeAccessors );\n\nvar drivers = {\n default: new Dictionary({\n en: {\n messages: {},\n attributes: {},\n custom: {}\n }\n })\n};\n\nvar currentDriver = 'default';\n\nvar DictionaryResolver = function DictionaryResolver () {};\n\nDictionaryResolver._checkDriverName = function _checkDriverName (driver) {\n if (!driver) {\n throw createError('you must provide a name to the dictionary driver');\n }\n};\n\nDictionaryResolver.setDriver = function setDriver (driver, implementation) {\n if ( implementation === void 0 ) implementation = null;\n\n this._checkDriverName(driver);\n if (implementation) {\n drivers[driver] = implementation;\n }\n\n currentDriver = driver;\n};\n\nDictionaryResolver.getDriver = function getDriver () {\n return drivers[currentDriver];\n};\n\n// \n\nvar ErrorBag = function ErrorBag (errorBag, id) {\n if ( errorBag === void 0 ) errorBag = null;\n if ( id === void 0 ) id = null;\n\n this.vmId = id || null;\n // make this bag a mirror of the provided one, sharing the same items reference.\n if (errorBag && errorBag instanceof ErrorBag) {\n this.items = errorBag.items;\n } else {\n this.items = [];\n }\n};\n\nErrorBag.prototype[typeof Symbol === 'function' ? Symbol.iterator : '@@iterator'] = function () {\n var this$1 = this;\n\n var index = 0;\n return {\n next: function () {\n return { value: this$1.items[index++], done: index > this$1.items.length };\n }\n };\n};\n\n/**\n * Adds an error to the internal array.\n */\nErrorBag.prototype.add = function add (error) {\n var ref;\n\n (ref = this.items).push.apply(\n ref, this._normalizeError(error)\n );\n};\n\n/**\n * Normalizes passed errors to an error array.\n */\nErrorBag.prototype._normalizeError = function _normalizeError (error) {\n var this$1 = this;\n\n if (Array.isArray(error)) {\n return error.map(function (e) {\n e.scope = !isNullOrUndefined(e.scope) ? e.scope : null;\n e.vmId = !isNullOrUndefined(e.vmId) ? e.vmId : (this$1.vmId || null);\n\n return e;\n });\n }\n\n error.scope = !isNullOrUndefined(error.scope) ? error.scope : null;\n error.vmId = !isNullOrUndefined(error.vmId) ? error.vmId : (this.vmId || null);\n\n return [error];\n};\n\n/**\n * Regenrates error messages if they have a generator function.\n */\nErrorBag.prototype.regenerate = function regenerate () {\n this.items.forEach(function (i) {\n i.msg = isCallable(i.regenerate) ? i.regenerate() : i.msg;\n });\n};\n\n/**\n * Updates a field error with the new field scope.\n */\nErrorBag.prototype.update = function update (id, error) {\n var item = find(this.items, function (i) { return i.id === id; });\n if (!item) {\n return;\n }\n\n var idx = this.items.indexOf(item);\n this.items.splice(idx, 1);\n item.scope = error.scope;\n this.items.push(item);\n};\n\n/**\n * Gets all error messages from the internal array.\n */\nErrorBag.prototype.all = function all (scope) {\n var this$1 = this;\n\n var filterFn = function (item) {\n var matchesScope = true;\n var matchesVM = true;\n if (!isNullOrUndefined(scope)) {\n matchesScope = item.scope === scope;\n }\n\n if (!isNullOrUndefined(this$1.vmId)) {\n matchesVM = item.vmId === this$1.vmId;\n }\n\n return matchesVM && matchesScope;\n };\n\n return this.items.filter(filterFn).map(function (e) { return e.msg; });\n};\n\n/**\n * Checks if there are any errors in the internal array.\n */\nErrorBag.prototype.any = function any (scope) {\n var this$1 = this;\n\n var filterFn = function (item) {\n var matchesScope = true;\n var matchesVM = true;\n if (!isNullOrUndefined(scope)) {\n matchesScope = item.scope === scope;\n }\n\n if (!isNullOrUndefined(this$1.vmId)) {\n matchesVM = item.vmId === this$1.vmId;\n }\n\n return matchesVM && matchesScope;\n };\n\n return !!this.items.filter(filterFn).length;\n};\n\n/**\n * Removes all items from the internal array.\n */\nErrorBag.prototype.clear = function clear (scope) {\n var this$1 = this;\n\n var matchesVM = isNullOrUndefined(this.vmId) ? function () { return true; } : function (i) { return i.vmId === this$1.vmId; };\n var matchesScope = function (i) { return i.scope === scope; };\n if (arguments.length === 0) {\n matchesScope = function () { return true; };\n } else if (isNullOrUndefined(scope)) {\n scope = null;\n }\n\n for (var i = 0; i < this.items.length; ++i) {\n if (matchesVM(this.items[i]) && matchesScope(this.items[i])) {\n this.items.splice(i, 1);\n --i;\n }\n }\n};\n\n/**\n * Collects errors into groups or for a specific field.\n */\nErrorBag.prototype.collect = function collect (field, scope, map) {\n var this$1 = this;\n if ( map === void 0 ) map = true;\n\n var isSingleField = !isNullOrUndefined(field) && !field.includes('*');\n var groupErrors = function (items) {\n var errors = items.reduce(function (collection, error) {\n if (!isNullOrUndefined(this$1.vmId) && error.vmId !== this$1.vmId) {\n return collection;\n }\n\n if (!collection[error.field]) {\n collection[error.field] = [];\n }\n\n collection[error.field].push(map ? error.msg : error);\n\n return collection;\n }, {});\n\n // reduce the collection to be a single array.\n if (isSingleField) {\n return values(errors)[0] || [];\n }\n\n return errors;\n };\n\n if (isNullOrUndefined(field)) {\n return groupErrors(this.items);\n }\n\n var selector = isNullOrUndefined(scope) ? String(field) : (scope + \".\" + field);\n var ref = this._makeCandidateFilters(selector);\n var isPrimary = ref.isPrimary;\n var isAlt = ref.isAlt;\n\n var collected = this.items.reduce(function (prev, curr) {\n if (isPrimary(curr)) {\n prev.primary.push(curr);\n }\n\n if (isAlt(curr)) {\n prev.alt.push(curr);\n }\n\n return prev;\n }, { primary: [], alt: [] });\n\n collected = collected.primary.length ? collected.primary : collected.alt;\n\n return groupErrors(collected);\n};\n\n/**\n * Gets the internal array length.\n */\nErrorBag.prototype.count = function count () {\n var this$1 = this;\n\n if (this.vmId) {\n return this.items.filter(function (e) { return e.vmId === this$1.vmId; }).length;\n }\n\n return this.items.length;\n};\n\n/**\n * Finds and fetches the first error message for the specified field id.\n */\nErrorBag.prototype.firstById = function firstById (id) {\n var error = find(this.items, function (i) { return i.id === id; });\n\n return error ? error.msg : undefined;\n};\n\n/**\n * Gets the first error message for a specific field.\n */\nErrorBag.prototype.first = function first (field, scope) {\n if ( scope === void 0 ) scope = null;\n\n var selector = isNullOrUndefined(scope) ? field : (scope + \".\" + field);\n var match = this._match(selector);\n\n return match && match.msg;\n};\n\n/**\n * Returns the first error rule for the specified field\n */\nErrorBag.prototype.firstRule = function firstRule (field, scope) {\n var errors = this.collect(field, scope, false);\n\n return (errors.length && errors[0].rule) || undefined;\n};\n\n/**\n * Checks if the internal array has at least one error for the specified field.\n */\nErrorBag.prototype.has = function has (field, scope) {\n if ( scope === void 0 ) scope = null;\n\n return !!this.first(field, scope);\n};\n\n/**\n * Gets the first error message for a specific field and a rule.\n */\nErrorBag.prototype.firstByRule = function firstByRule (name, rule, scope) {\n if ( scope === void 0 ) scope = null;\n\n var error = this.collect(name, scope, false).filter(function (e) { return e.rule === rule; })[0];\n\n return (error && error.msg) || undefined;\n};\n\n/**\n * Gets the first error message for a specific field that not match the rule.\n */\nErrorBag.prototype.firstNot = function firstNot (name, rule, scope) {\n if ( rule === void 0 ) rule = 'required';\n if ( scope === void 0 ) scope = null;\n\n var error = this.collect(name, scope, false).filter(function (e) { return e.rule !== rule; })[0];\n\n return (error && error.msg) || undefined;\n};\n\n/**\n * Removes errors by matching against the id or ids.\n */\nErrorBag.prototype.removeById = function removeById (id) {\n var condition = function (item) { return item.id === id; };\n if (Array.isArray(id)) {\n condition = function (item) { return id.indexOf(item.id) !== -1; };\n }\n\n for (var i = 0; i < this.items.length; ++i) {\n if (condition(this.items[i])) {\n this.items.splice(i, 1);\n --i;\n }\n }\n};\n\n/**\n * Removes all error messages associated with a specific field.\n */\nErrorBag.prototype.remove = function remove (field, scope, vmId) {\n if (isNullOrUndefined(field)) {\n return;\n }\n\n var selector = isNullOrUndefined(scope) ? String(field) : (scope + \".\" + field);\n var ref = this._makeCandidateFilters(selector);\n var isPrimary = ref.isPrimary;\n var isAlt = ref.isAlt;\n var matches = function (item) { return isPrimary(item) || isAlt(item); };\n var shouldRemove = function (item) {\n if (isNullOrUndefined(vmId)) { return matches(item); }\n\n return matches(item) && item.vmId === vmId;\n };\n\n for (var i = 0; i < this.items.length; ++i) {\n if (shouldRemove(this.items[i])) {\n this.items.splice(i, 1);\n --i;\n }\n }\n};\n\nErrorBag.prototype._makeCandidateFilters = function _makeCandidateFilters (selector) {\n var this$1 = this;\n\n var matchesRule = function () { return true; };\n var matchesScope = function () { return true; };\n var matchesName = function () { return true; };\n var matchesVM = function () { return true; };\n\n var ref = parseSelector(selector);\n var id = ref.id;\n var rule = ref.rule;\n var scope = ref.scope;\n var name = ref.name;\n\n if (rule) {\n matchesRule = function (item) { return item.rule === rule; };\n }\n\n // match by id, can be combined with rule selection.\n if (id) {\n return {\n isPrimary: function (item) { return matchesRule(item) && (function (item) { return id === item.id; }); },\n isAlt: function () { return false; }\n };\n }\n\n if (isNullOrUndefined(scope)) {\n // if no scope specified, make sure the found error has no scope.\n matchesScope = function (item) { return isNullOrUndefined(item.scope); };\n } else {\n matchesScope = function (item) { return item.scope === scope; };\n }\n\n if (!isNullOrUndefined(name) && name !== '*') {\n matchesName = function (item) { return item.field === name; };\n }\n\n if (!isNullOrUndefined(this.vmId)) {\n matchesVM = function (item) { return item.vmId === this$1.vmId; };\n }\n\n // matches the first candidate.\n var isPrimary = function (item) {\n return matchesVM(item) && matchesName(item) && matchesRule(item) && matchesScope(item);\n };\n\n // matches a second candidate, which is a field with a name containing the '.' character.\n var isAlt = function (item) {\n return matchesVM(item) && matchesRule(item) && item.field === (scope + \".\" + name);\n };\n\n return {\n isPrimary: isPrimary,\n isAlt: isAlt\n };\n};\n\nErrorBag.prototype._match = function _match (selector) {\n if (isNullOrUndefined(selector)) {\n return undefined;\n }\n\n var ref = this._makeCandidateFilters(selector);\n var isPrimary = ref.isPrimary;\n var isAlt = ref.isAlt;\n\n return this.items.reduce(function (prev, item, idx, arr) {\n var isLast = idx === arr.length - 1;\n if (prev.primary) {\n return isLast ? prev.primary : prev;\n }\n\n if (isPrimary(item)) {\n prev.primary = item;\n }\n\n if (isAlt(item)) {\n prev.alt = item;\n }\n\n // keep going.\n if (!isLast) {\n return prev;\n }\n\n return prev.primary || prev.alt;\n }, {});\n};\n\nvar DEFAULT_CONFIG = {\n locale: 'en',\n delay: 0,\n errorBagName: 'errors',\n dictionary: null,\n fieldsBagName: 'fields',\n classes: false,\n classNames: null,\n events: 'input',\n inject: true,\n fastExit: true,\n aria: true,\n validity: false,\n mode: 'aggressive',\n useConstraintAttrs: true,\n i18n: null,\n i18nRootKey: 'validation'\n};\n\nvar currentConfig = assign({}, DEFAULT_CONFIG);\n\nvar resolveConfig = function (ctx) {\n var selfConfig = getPath('$options.$_veeValidate', ctx, {});\n\n return assign({}, currentConfig, selfConfig);\n};\n\nvar getConfig = function () { return currentConfig; };\n\nvar setConfig = function (newConf) {\n currentConfig = assign({}, currentConfig, newConf);\n};\n\n// VNode Utils\n\n// Gets the model object on the vnode.\nfunction findModel (vnode) {\n if (!vnode.data) {\n return null;\n }\n\n // Component Model\n if (vnode.data.model) {\n return vnode.data.model;\n }\n\n return !!(vnode.data.directives) && find(vnode.data.directives, function (d) { return d.name === 'model'; });\n}\n\nfunction extractChildren (vnode) {\n if (Array.isArray(vnode)) {\n return vnode;\n }\n\n if (Array.isArray(vnode.children)) {\n return vnode.children;\n }\n\n if (vnode.componentOptions && Array.isArray(vnode.componentOptions.children)) {\n return vnode.componentOptions.children;\n }\n\n return [];\n}\n\nfunction extractVNodes (vnode) {\n if (findModel(vnode)) {\n return [vnode];\n }\n\n var children = extractChildren(vnode);\n\n return children.reduce(function (nodes, node) {\n var candidates = extractVNodes(node);\n if (candidates.length) {\n nodes.push.apply(nodes, candidates);\n }\n\n return nodes;\n }, []);\n}\n\n// Resolves v-model config if exists.\nfunction findModelConfig (vnode) {\n if (!vnode.componentOptions) { return null; }\n\n return vnode.componentOptions.Ctor.options.model;\n}\n// Adds a listener to vnode listener object.\nfunction mergeVNodeListeners (obj, eventName, handler) {\n // Has a single listener, convert to array.\n if (isCallable(obj[eventName])) {\n var prevHandler = obj[eventName];\n obj[eventName] = [prevHandler];\n }\n\n // no listeners, create the array.\n if (isNullOrUndefined(obj[eventName])) {\n obj[eventName] = [];\n }\n\n obj[eventName].push(handler);\n}\n\n// Adds a listener to a native HTML vnode.\nfunction addNativeNodeListener (node, eventName, handler) {\n if (isNullOrUndefined(node.data.on)) {\n node.data.on = {};\n }\n\n mergeVNodeListeners(node.data.on, eventName, handler);\n}\n\n// Adds a listener to a Vue component vnode.\nfunction addComponentNodeListener (node, eventName, handler) {\n /* istanbul ignore next */\n if (!node.componentOptions.listeners) {\n node.componentOptions.listeners = {};\n }\n\n mergeVNodeListeners(node.componentOptions.listeners, eventName, handler);\n}\nfunction addVNodeListener (vnode, eventName, handler) {\n if (vnode.componentOptions) {\n addComponentNodeListener(vnode, eventName, handler);\n return;\n }\n\n addNativeNodeListener(vnode, eventName, handler);\n}\n// Determines if `change` should be used over `input` for listeners.\nfunction getInputEventName (vnode, model) {\n // Is a component.\n if (vnode.componentOptions) {\n var ref = findModelConfig(vnode) || { event: 'input' };\n var event = ref.event;\n\n return event;\n }\n\n // Lazy Models and select tag typically use change event\n if ((model && model.modifiers && model.modifiers.lazy) || vnode.tag === 'select') {\n return 'change';\n }\n\n // is a textual-type input.\n if (vnode.data.attrs && isTextInput({ type: vnode.data.attrs.type || 'text' })) {\n return 'input';\n }\n\n return 'change';\n}\n\nfunction normalizeSlots (slots, ctx) {\n return Object.keys(slots).reduce(function (arr, key) {\n slots[key].forEach(function (vnode) {\n if (!vnode.context) {\n slots[key].context = ctx;\n if (!vnode.data) {\n vnode.data = {};\n }\n vnode.data.slot = key;\n }\n });\n\n return arr.concat(slots[key]);\n }, []);\n}\nfunction createRenderless (h, children) {\n // Only render the first item of the node.\n if (Array.isArray(children) && children[0]) {\n return children[0];\n }\n\n // a single node.\n if (children) {\n return children;\n }\n\n // No slots, render nothing.\n return h();\n}\n\n/**\n * Generates the options required to construct a field.\n */\nvar Resolver = function Resolver () {};\n\nResolver.generate = function generate (el, binding, vnode) {\n var model = Resolver.resolveModel(binding, vnode);\n var options = resolveConfig(vnode.context);\n\n return {\n name: Resolver.resolveName(el, vnode),\n el: el,\n listen: !binding.modifiers.disable,\n bails: binding.modifiers.bails ? true : (binding.modifiers.continues === true ? false : undefined),\n scope: Resolver.resolveScope(el, binding, vnode),\n vm: vnode.context,\n expression: binding.value,\n component: vnode.componentInstance,\n classes: options.classes,\n classNames: options.classNames,\n getter: Resolver.resolveGetter(el, vnode, model),\n events: Resolver.resolveEvents(el, vnode) || options.events,\n model: model,\n delay: Resolver.resolveDelay(el, vnode, options),\n rules: Resolver.resolveRules(el, binding, vnode),\n immediate: !!binding.modifiers.initial || !!binding.modifiers.immediate,\n persist: !!binding.modifiers.persist,\n validity: options.validity && !vnode.componentInstance,\n aria: options.aria && !vnode.componentInstance,\n initialValue: Resolver.resolveInitialValue(vnode)\n };\n};\n\nResolver.getCtorConfig = function getCtorConfig (vnode) {\n if (!vnode.componentInstance) { return null; }\n\n var config = getPath('componentInstance.$options.$_veeValidate', vnode);\n\n return config;\n};\n\n/**\n * Resolves the rules defined on an element.\n */\nResolver.resolveRules = function resolveRules (el, binding, vnode) {\n var rules = '';\n if (!binding.value && (!binding || !binding.expression)) {\n rules = getDataAttribute(el, 'rules');\n }\n\n if (binding.value && includes(['string', 'object'], typeof binding.value.rules)) {\n rules = binding.value.rules;\n } else if (binding.value) {\n rules = binding.value;\n }\n\n if (vnode.componentInstance) {\n return rules;\n }\n\n // If validity is disabled, ignore field rules.\n var normalized = normalizeRules(rules);\n if (!getConfig().useConstraintAttrs) {\n return normalized;\n }\n\n return assign({}, fillRulesFromElement(el, {}), normalized);\n};\n\n/**\n * @param {*} vnode\n */\nResolver.resolveInitialValue = function resolveInitialValue (vnode) {\n var model = vnode.data.model || find(vnode.data.directives, function (d) { return d.name === 'model'; });\n\n return model && model.value;\n};\n\n/**\n * Resolves the delay value.\n * @param {*} el\n * @param {*} vnode\n * @param {Object} options\n */\nResolver.resolveDelay = function resolveDelay (el, vnode, options) {\n var delay = getDataAttribute(el, 'delay');\n var globalDelay = (options && 'delay' in options) ? options.delay : 0;\n\n if (!delay && vnode.componentInstance && vnode.componentInstance.$attrs) {\n delay = vnode.componentInstance.$attrs['data-vv-delay'];\n }\n\n if (!isObject(globalDelay)) {\n return deepParseInt(delay || globalDelay);\n }\n\n if (!isNullOrUndefined(delay)) {\n globalDelay.input = delay;\n }\n\n return deepParseInt(globalDelay);\n};\n\n/**\n * Resolves the events to validate in response to.\n * @param {*} el\n * @param {*} vnode\n */\nResolver.resolveEvents = function resolveEvents (el, vnode) {\n // resolve it from the root element.\n var events = getDataAttribute(el, 'validate-on');\n\n // resolve from data-vv-validate-on if its a vue component.\n if (!events && vnode.componentInstance && vnode.componentInstance.$attrs) {\n events = vnode.componentInstance.$attrs['data-vv-validate-on'];\n }\n\n // resolve it from $_veeValidate options.\n if (!events && vnode.componentInstance) {\n var config = Resolver.getCtorConfig(vnode);\n events = config && config.events;\n }\n\n if (!events && getConfig().events) {\n events = getConfig().events;\n }\n\n // resolve the model event if its configured for custom components.\n if (events && vnode.componentInstance && includes(events, 'input')) {\n var ref = vnode.componentInstance.$options.model || { event: 'input' };\n var event = ref.event;\n // if the prop was configured but not the model.\n if (!event) {\n return events;\n }\n\n events = events.replace('input', event);\n }\n\n return events;\n};\n\n/**\n * Resolves the scope for the field.\n * @param {*} el\n * @param {*} binding\n */\nResolver.resolveScope = function resolveScope (el, binding, vnode) {\n if ( vnode === void 0 ) vnode = {};\n\n var scope = null;\n if (vnode.componentInstance && isNullOrUndefined(scope)) {\n scope = vnode.componentInstance.$attrs && vnode.componentInstance.$attrs['data-vv-scope'];\n }\n\n return !isNullOrUndefined(scope) ? scope : getScope(el);\n};\n\n/**\n * Checks if the node directives contains a v-model or a specified arg.\n * Args take priority over models.\n *\n * @return {Object}\n */\nResolver.resolveModel = function resolveModel (binding, vnode) {\n if (binding.arg) {\n return { expression: binding.arg };\n }\n\n var model = findModel(vnode);\n if (!model) {\n return null;\n }\n\n // https://github.com/vuejs/vue/blob/dev/src/core/util/lang.js#L26\n var watchable = !/[^\\w.$]/.test(model.expression) && hasPath(model.expression, vnode.context);\n var lazy = !!(model.modifiers && model.modifiers.lazy);\n\n if (!watchable) {\n return { expression: null, lazy: lazy };\n }\n\n return { expression: model.expression, lazy: lazy };\n};\n\n/**\n * Resolves the field name to trigger validations.\n * @return {String} The field name.\n */\nResolver.resolveName = function resolveName (el, vnode) {\n var name = getDataAttribute(el, 'name');\n\n if (!name && !vnode.componentInstance) {\n return el.name;\n }\n\n if (!name && vnode.componentInstance && vnode.componentInstance.$attrs) {\n name = vnode.componentInstance.$attrs['data-vv-name'] || vnode.componentInstance.$attrs['name'];\n }\n\n if (!name && vnode.componentInstance) {\n var config = Resolver.getCtorConfig(vnode);\n if (config && isCallable(config.name)) {\n var boundGetter = config.name.bind(vnode.componentInstance);\n\n return boundGetter();\n }\n\n return vnode.componentInstance.name;\n }\n\n return name;\n};\n\n/**\n * Returns a value getter input type.\n */\nResolver.resolveGetter = function resolveGetter (el, vnode, model) {\n if (model && model.expression) {\n return function () {\n return getPath(model.expression, vnode.context);\n };\n }\n\n if (vnode.componentInstance) {\n var path = getDataAttribute(el, 'value-path') || (vnode.componentInstance.$attrs && vnode.componentInstance.$attrs['data-vv-value-path']);\n if (path) {\n return function () {\n return getPath(path, vnode.componentInstance);\n };\n }\n\n var config = Resolver.getCtorConfig(vnode);\n if (config && isCallable(config.value)) {\n var boundGetter = config.value.bind(vnode.componentInstance);\n\n return function () {\n return boundGetter();\n };\n }\n\n var ref = vnode.componentInstance.$options.model || { prop: 'value' };\n var prop = ref.prop;\n\n return function () {\n return vnode.componentInstance[prop];\n };\n }\n\n switch (el.type) {\n case 'checkbox': return function () {\n var els = document.querySelectorAll((\"input[name=\\\"\" + (el.name) + \"\\\"]\"));\n\n els = toArray(els).filter(function (el) { return el.checked; });\n if (!els.length) { return undefined; }\n\n return els.map(function (checkbox) { return checkbox.value; });\n };\n case 'radio': return function () {\n var els = document.querySelectorAll((\"input[name=\\\"\" + (el.name) + \"\\\"]\"));\n var elm = find(els, function (el) { return el.checked; });\n\n return elm && elm.value;\n };\n case 'file': return function (context) {\n return toArray(el.files);\n };\n case 'select-multiple': return function () {\n return toArray(el.options).filter(function (opt) { return opt.selected; }).map(function (opt) { return opt.value; });\n };\n default: return function () {\n return el && el.value;\n };\n }\n};\n\nvar RULES = {};\n\nvar RuleContainer = function RuleContainer () {};\n\nvar staticAccessors = { rules: { configurable: true } };\n\nRuleContainer.add = function add (name, ref) {\n var validate = ref.validate;\n var options = ref.options;\n var paramNames = ref.paramNames;\n\n RULES[name] = {\n validate: validate,\n options: options,\n paramNames: paramNames\n };\n};\n\nstaticAccessors.rules.get = function () {\n return RULES;\n};\n\nRuleContainer.has = function has (name) {\n return !!RULES[name];\n};\n\nRuleContainer.isImmediate = function isImmediate (name) {\n return !!(RULES[name] && RULES[name].options.immediate);\n};\n\nRuleContainer.isRequireRule = function isRequireRule (name) {\n return !!(RULES[name] && RULES[name].options.computesRequired);\n};\n\nRuleContainer.isTargetRule = function isTargetRule (name) {\n return !!(RULES[name] && RULES[name].options.hasTarget);\n};\n\nRuleContainer.remove = function remove (ruleName) {\n delete RULES[ruleName];\n};\n\nRuleContainer.getParamNames = function getParamNames (ruleName) {\n return RULES[ruleName] && RULES[ruleName].paramNames;\n};\n\nRuleContainer.getOptions = function getOptions (ruleName) {\n return RULES[ruleName] && RULES[ruleName].options;\n};\n\nRuleContainer.getValidatorMethod = function getValidatorMethod (ruleName) {\n return RULES[ruleName] ? RULES[ruleName].validate : null;\n};\n\nObject.defineProperties( RuleContainer, staticAccessors );\n\n// \n\nvar isEvent = function (evt) {\n return (typeof Event !== 'undefined' && isCallable(Event) && evt instanceof Event) || (evt && evt.srcElement);\n};\n\nvar normalizeEvents = function (evts) {\n if (!evts) { return []; }\n\n return (typeof evts === 'string' ? evts.split('|') : evts);\n};\n\nvar supportsPassive = true;\n\nvar detectPassiveSupport = function () {\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get () {\n supportsPassive = true;\n }\n });\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n } catch (e) {\n supportsPassive = false;\n }\n return supportsPassive;\n};\n\nvar addEventListener = function (el, eventName, cb) {\n el.addEventListener(eventName, cb, supportsPassive ? { passive: true } : false);\n};\n\n// \n\nvar DEFAULT_OPTIONS = {\n targetOf: null,\n immediate: false,\n persist: false,\n scope: null,\n listen: true,\n name: null,\n rules: {},\n vm: null,\n classes: false,\n validity: true,\n aria: true,\n events: 'input|blur',\n delay: 0,\n classNames: {\n touched: 'touched', // the control has been blurred\n untouched: 'untouched', // the control hasn't been blurred\n valid: 'valid', // model is valid\n invalid: 'invalid', // model is invalid\n pristine: 'pristine', // control has not been interacted with\n dirty: 'dirty' // control has been interacted with\n }\n};\n\nvar Field = function Field (options) {\n if ( options === void 0 ) options = {};\n\n this.id = uniqId();\n this.el = options.el;\n this.updated = false;\n this.vmId = options.vmId;\n defineNonReactive(this, 'dependencies', []);\n defineNonReactive(this, 'watchers', []);\n defineNonReactive(this, 'events', []);\n this.delay = 0;\n this.rules = {};\n this.forceRequired = false;\n this._cacheId(options);\n this.classNames = assign({}, DEFAULT_OPTIONS.classNames);\n options = assign({}, DEFAULT_OPTIONS, options);\n this._delay = !isNullOrUndefined(options.delay) ? options.delay : 0; // cache initial delay\n this.validity = options.validity;\n this.aria = options.aria;\n this.flags = options.flags || createFlags();\n defineNonReactive(this, 'vm', options.vm);\n defineNonReactive(this, 'componentInstance', options.component);\n this.ctorConfig = this.componentInstance ? getPath('$options.$_veeValidate', this.componentInstance) : undefined;\n this.update(options);\n // set initial value.\n this.initialValue = this.value;\n this.updated = false;\n};\n\nvar prototypeAccessors$1 = { validator: { configurable: true },isRequired: { configurable: true },isDisabled: { configurable: true },alias: { configurable: true },value: { configurable: true },bails: { configurable: true },rejectsFalse: { configurable: true } };\n\nprototypeAccessors$1.validator.get = function () {\n if (!this.vm || !this.vm.$validator) {\n return { validate: function () { return Promise.resolve(true); } };\n }\n\n return this.vm.$validator;\n};\n\nprototypeAccessors$1.isRequired.get = function () {\n return !!this.rules.required || this.forceRequired;\n};\n\nprototypeAccessors$1.isDisabled.get = function () {\n return !!(this.el && this.el.disabled);\n};\n\n/**\n * Gets the display name (user-friendly name).\n */\nprototypeAccessors$1.alias.get = function () {\n if (this._alias) {\n return this._alias;\n }\n\n var alias = null;\n if (this.ctorConfig && this.ctorConfig.alias) {\n alias = isCallable(this.ctorConfig.alias) ? this.ctorConfig.alias.call(this.componentInstance) : this.ctorConfig.alias;\n }\n\n if (!alias && this.el) {\n alias = getDataAttribute(this.el, 'as');\n }\n\n if (!alias && this.componentInstance) {\n return this.componentInstance.$attrs && this.componentInstance.$attrs['data-vv-as'];\n }\n\n return alias;\n};\n\n/**\n * Gets the input value.\n */\n\nprototypeAccessors$1.value.get = function () {\n if (!isCallable(this.getter)) {\n return undefined;\n }\n\n return this.getter();\n};\n\nprototypeAccessors$1.bails.get = function () {\n return this._bails;\n};\n\n/**\n * If the field rejects false as a valid value for the required rule.\n */\n\nprototypeAccessors$1.rejectsFalse.get = function () {\n if (this.componentInstance && this.ctorConfig) {\n return !!this.ctorConfig.rejectsFalse;\n }\n\n if (!this.el) {\n return false;\n }\n\n return this.el.type === 'checkbox';\n};\n\n/**\n * Determines if the instance matches the options provided.\n */\nField.prototype.matches = function matches (options) {\n var this$1 = this;\n\n if (!options) {\n return true;\n }\n\n if (options.id) {\n return this.id === options.id;\n }\n\n var matchesComponentId = isNullOrUndefined(options.vmId) ? function () { return true; } : function (id) { return id === this$1.vmId; };\n if (!matchesComponentId(options.vmId)) {\n return false;\n }\n\n if (options.name === undefined && options.scope === undefined) {\n return true;\n }\n\n if (options.scope === undefined) {\n return this.name === options.name;\n }\n\n if (options.name === undefined) {\n return this.scope === options.scope;\n }\n\n return options.name === this.name && options.scope === this.scope;\n};\n\n/**\n * Caches the field id.\n */\nField.prototype._cacheId = function _cacheId (options) {\n if (this.el && !options.targetOf) {\n this.el._veeValidateId = this.id;\n }\n};\n\n/**\n * Keeps a reference of the most current validation run.\n */\nField.prototype.waitFor = function waitFor (pendingPromise) {\n this._waitingFor = pendingPromise;\n};\n\nField.prototype.isWaitingFor = function isWaitingFor (promise) {\n return this._waitingFor === promise;\n};\n\n/**\n * Updates the field with changed data.\n */\nField.prototype.update = function update (options) {\n var this$1 = this;\n\n this.targetOf = options.targetOf || null;\n this.immediate = options.immediate || this.immediate || false;\n this.persist = options.persist || this.persist || false;\n\n // update errors scope if the field scope was changed.\n if (!isNullOrUndefined(options.scope) && options.scope !== this.scope && isCallable(this.validator.update)) {\n this.validator.update(this.id, { scope: options.scope });\n }\n this.scope = !isNullOrUndefined(options.scope) ? options.scope\n : !isNullOrUndefined(this.scope) ? this.scope : null;\n this.name = (!isNullOrUndefined(options.name) ? String(options.name) : options.name) || this.name || null;\n this.rules = options.rules !== undefined ? normalizeRules(options.rules) : this.rules;\n this._bails = options.bails !== undefined ? options.bails : this._bails;\n this.model = options.model || this.model;\n this.listen = options.listen !== undefined ? options.listen : this.listen;\n this.classes = (options.classes || this.classes || false) && !this.componentInstance;\n this.classNames = isObject(options.classNames) ? merge(this.classNames, options.classNames) : this.classNames;\n this.getter = isCallable(options.getter) ? options.getter : this.getter;\n this._alias = options.alias || this._alias;\n this.events = (options.events) ? normalizeEvents(options.events) : this.events;\n this.delay = makeDelayObject(this.events, options.delay || this.delay, this._delay);\n this.updateDependencies();\n this.addActionListeners();\n\n if (process.env.NODE_ENV !== 'production' && !this.name && !this.targetOf) {\n warn('A field is missing a \"name\" or \"data-vv-name\" attribute');\n }\n\n // update required flag flags\n if (options.rules !== undefined) {\n this.flags.required = this.isRequired;\n }\n\n if (Object.keys(options.rules || {}).length === 0 && this.updated) {\n var resetFlag = this.flags.validated;\n this.validator.validate((\"#\" + (this.id))).then(function () {\n this$1.flags.validated = resetFlag;\n });\n }\n\n // validate if it was validated before and field was updated and there was a rules mutation.\n if (this.flags.validated && options.rules !== undefined && this.updated) {\n this.validator.validate((\"#\" + (this.id)));\n }\n\n this.updated = true;\n this.addValueListeners();\n\n // no need to continue.\n if (!this.el) {\n return;\n }\n this.updateClasses();\n this.updateAriaAttrs();\n};\n\n/**\n * Resets field flags and errors.\n */\nField.prototype.reset = function reset () {\n var this$1 = this;\n\n if (this._cancellationToken) {\n this._cancellationToken.cancelled = true;\n delete this._cancellationToken;\n }\n\n var defaults = createFlags();\n Object.keys(this.flags).filter(function (flag) { return flag !== 'required'; }).forEach(function (flag) {\n this$1.flags[flag] = defaults[flag];\n });\n\n // update initial value\n this.initialValue = this.value;\n this.flags.changed = false;\n\n this.addValueListeners();\n this.addActionListeners();\n this.updateClasses(true);\n this.updateAriaAttrs();\n this.updateCustomValidity();\n};\n\n/**\n * Sets the flags and their negated counterparts, and updates the classes and re-adds action listeners.\n */\nField.prototype.setFlags = function setFlags (flags) {\n var this$1 = this;\n\n var negated = {\n pristine: 'dirty',\n dirty: 'pristine',\n valid: 'invalid',\n invalid: 'valid',\n touched: 'untouched',\n untouched: 'touched'\n };\n\n Object.keys(flags).forEach(function (flag) {\n this$1.flags[flag] = flags[flag];\n // if it has a negation and was not specified, set it as well.\n if (negated[flag] && flags[negated[flag]] === undefined) {\n this$1.flags[negated[flag]] = !flags[flag];\n }\n });\n\n if (\n flags.untouched !== undefined ||\n flags.touched !== undefined ||\n flags.dirty !== undefined ||\n flags.pristine !== undefined\n ) {\n this.addActionListeners();\n }\n this.updateClasses();\n this.updateAriaAttrs();\n this.updateCustomValidity();\n};\n\n/**\n * Determines if the field requires references to target fields.\n*/\nField.prototype.updateDependencies = function updateDependencies () {\n var this$1 = this;\n\n // reset dependencies.\n this.dependencies.forEach(function (d) { return d.field.destroy(); });\n this.dependencies = [];\n\n // we get the selectors for each field.\n var fields = Object.keys(this.rules).reduce(function (prev, r) {\n if (RuleContainer.isTargetRule(r)) {\n prev.push({ selector: this$1.rules[r][0], name: r });\n }\n\n return prev;\n }, []);\n\n if (!fields.length || !this.vm || !this.vm.$el) { return; }\n\n // must be contained within the same component, so we use the vm root element constrain our dom search.\n fields.forEach(function (ref$1) {\n var selector = ref$1.selector;\n var name = ref$1.name;\n\n var ref = this$1.vm.$refs[selector];\n var el = Array.isArray(ref) ? ref[0] : ref;\n if (!el) {\n return;\n }\n\n var options = {\n vm: this$1.vm,\n classes: this$1.classes,\n classNames: this$1.classNames,\n delay: this$1.delay,\n scope: this$1.scope,\n events: this$1.events.join('|'),\n immediate: this$1.immediate,\n targetOf: this$1.id\n };\n\n // probably a component.\n if (isCallable(el.$watch)) {\n options.component = el;\n options.el = el.$el;\n options.getter = Resolver.resolveGetter(el.$el, el.$vnode);\n } else {\n options.el = el;\n options.getter = Resolver.resolveGetter(el, {});\n }\n\n this$1.dependencies.push({ name: name, field: new Field(options) });\n });\n};\n\n/**\n * Removes listeners.\n */\nField.prototype.unwatch = function unwatch (tag) {\n if ( tag === void 0 ) tag = null;\n\n if (!tag) {\n this.watchers.forEach(function (w) { return w.unwatch(); });\n this.watchers = [];\n return;\n }\n\n this.watchers.filter(function (w) { return tag.test(w.tag); }).forEach(function (w) { return w.unwatch(); });\n this.watchers = this.watchers.filter(function (w) { return !tag.test(w.tag); });\n};\n\n/**\n * Updates the element classes depending on each field flag status.\n */\nField.prototype.updateClasses = function updateClasses (isReset) {\n var this$1 = this;\n if ( isReset === void 0 ) isReset = false;\n\n if (!this.classes || this.isDisabled) { return; }\n var applyClasses = function (el) {\n toggleClass(el, this$1.classNames.dirty, this$1.flags.dirty);\n toggleClass(el, this$1.classNames.pristine, this$1.flags.pristine);\n toggleClass(el, this$1.classNames.touched, this$1.flags.touched);\n toggleClass(el, this$1.classNames.untouched, this$1.flags.untouched);\n\n // remove valid/invalid classes on reset.\n if (isReset) {\n toggleClass(el, this$1.classNames.valid, false);\n toggleClass(el, this$1.classNames.invalid, false);\n }\n\n // make sure we don't set any classes if the state is undetermined.\n if (!isNullOrUndefined(this$1.flags.valid) && this$1.flags.validated) {\n toggleClass(el, this$1.classNames.valid, this$1.flags.valid);\n }\n\n if (!isNullOrUndefined(this$1.flags.invalid) && this$1.flags.validated) {\n toggleClass(el, this$1.classNames.invalid, this$1.flags.invalid);\n }\n };\n\n if (!isCheckboxOrRadioInput(this.el)) {\n applyClasses(this.el);\n return;\n }\n\n var els = document.querySelectorAll((\"input[name=\\\"\" + (this.el.name) + \"\\\"]\"));\n toArray(els).forEach(applyClasses);\n};\n\n/**\n * Adds the listeners required for automatic classes and some flags.\n */\nField.prototype.addActionListeners = function addActionListeners () {\n var this$1 = this;\n\n // remove previous listeners.\n this.unwatch(/class/);\n\n if (!this.el) { return; }\n\n var onBlur = function () {\n this$1.flags.touched = true;\n this$1.flags.untouched = false;\n if (this$1.classes) {\n toggleClass(this$1.el, this$1.classNames.touched, true);\n toggleClass(this$1.el, this$1.classNames.untouched, false);\n }\n\n // only needed once.\n this$1.unwatch(/^class_blur$/);\n };\n\n var inputEvent = isTextInput(this.el) ? 'input' : 'change';\n var onInput = function () {\n this$1.flags.dirty = true;\n this$1.flags.pristine = false;\n if (this$1.classes) {\n toggleClass(this$1.el, this$1.classNames.pristine, false);\n toggleClass(this$1.el, this$1.classNames.dirty, true);\n }\n\n // only needed once.\n this$1.unwatch(/^class_input$/);\n };\n\n if (this.componentInstance && isCallable(this.componentInstance.$once)) {\n this.componentInstance.$once('input', onInput);\n this.componentInstance.$once('blur', onBlur);\n this.watchers.push({\n tag: 'class_input',\n unwatch: function () {\n this$1.componentInstance.$off('input', onInput);\n }\n });\n this.watchers.push({\n tag: 'class_blur',\n unwatch: function () {\n this$1.componentInstance.$off('blur', onBlur);\n }\n });\n return;\n }\n\n if (!this.el) { return; }\n\n addEventListener(this.el, inputEvent, onInput);\n // Checkboxes and radio buttons on Mac don't emit blur naturally, so we listen on click instead.\n var blurEvent = isCheckboxOrRadioInput(this.el) ? 'change' : 'blur';\n addEventListener(this.el, blurEvent, onBlur);\n this.watchers.push({\n tag: 'class_input',\n unwatch: function () {\n this$1.el.removeEventListener(inputEvent, onInput);\n }\n });\n\n this.watchers.push({\n tag: 'class_blur',\n unwatch: function () {\n this$1.el.removeEventListener(blurEvent, onBlur);\n }\n });\n};\n\nField.prototype.checkValueChanged = function checkValueChanged () {\n // handle some people initialize the value to null, since text inputs have empty string value.\n if (this.initialValue === null && this.value === '' && isTextInput(this.el)) {\n return false;\n }\n\n return this.value !== this.initialValue;\n};\n\n/**\n * Determines the suitable primary event to listen for.\n */\nField.prototype._determineInputEvent = function _determineInputEvent () {\n // if its a custom component, use the customized model event or the input event.\n if (this.componentInstance) {\n return (this.componentInstance.$options.model && this.componentInstance.$options.model.event) || 'input';\n }\n\n if (this.model && this.model.lazy) {\n return 'change';\n }\n\n if (isTextInput(this.el)) {\n return 'input';\n }\n\n return 'change';\n};\n\n/**\n * Determines the list of events to listen to.\n */\nField.prototype._determineEventList = function _determineEventList (defaultInputEvent) {\n var this$1 = this;\n\n // if no event is configured, or it is a component or a text input then respect the user choice.\n if (!this.events.length || this.componentInstance || isTextInput(this.el)) {\n return [].concat( this.events ).map(function (evt) {\n if (evt === 'input' && this$1.model && this$1.model.lazy) {\n return 'change';\n }\n\n return evt;\n });\n }\n\n // force suitable event for non-text type fields.\n return this.events.map(function (e) {\n if (e === 'input') {\n return defaultInputEvent;\n }\n\n return e;\n });\n};\n\n/**\n * Adds the listeners required for validation.\n */\nField.prototype.addValueListeners = function addValueListeners () {\n var this$1 = this;\n\n this.unwatch(/^input_.+/);\n if (!this.listen || !this.el) { return; }\n\n var token = { cancelled: false };\n var fn = this.targetOf ? function () {\n var target = this$1.validator._resolveField((\"#\" + (this$1.targetOf)));\n if (target && target.flags.validated) {\n this$1.validator.validate((\"#\" + (this$1.targetOf)));\n }\n } : function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // if its a DOM event, resolve the value, otherwise use the first parameter as the value.\n if (args.length === 0 || isEvent(args[0])) {\n args[0] = this$1.value;\n }\n\n this$1.flags.pending = true;\n this$1._cancellationToken = token;\n this$1.validator.validate((\"#\" + (this$1.id)), args[0]);\n };\n\n var inputEvent = this._determineInputEvent();\n var events = this._determineEventList(inputEvent);\n\n // if on input validation is requested.\n if (includes(events, inputEvent)) {\n var ctx = null;\n var expression = null;\n var watchCtxVm = false;\n // if its watchable from the context vm.\n if (this.model && this.model.expression) {\n ctx = this.vm;\n expression = this.model.expression;\n watchCtxVm = true;\n }\n\n // watch it from the custom component vm instead.\n if (!expression && this.componentInstance && this.componentInstance.$options.model) {\n ctx = this.componentInstance;\n expression = this.componentInstance.$options.model.prop || 'value';\n }\n\n if (ctx && expression) {\n var debouncedFn = debounce(fn, this.delay[inputEvent], token);\n var unwatch = ctx.$watch(expression, debouncedFn);\n this.watchers.push({\n tag: 'input_model',\n unwatch: function () {\n this$1.vm.$nextTick(function () {\n unwatch();\n });\n }\n });\n\n // filter out input event when we are watching from the context vm.\n if (watchCtxVm) {\n events = events.filter(function (e) { return e !== inputEvent; });\n }\n }\n }\n\n // Add events.\n events.forEach(function (e) {\n var debouncedFn = debounce(fn, this$1.delay[e], token);\n\n this$1._addComponentEventListener(e, debouncedFn);\n this$1._addHTMLEventListener(e, debouncedFn);\n });\n};\n\nField.prototype._addComponentEventListener = function _addComponentEventListener (evt, validate) {\n var this$1 = this;\n\n if (!this.componentInstance) { return; }\n\n this.componentInstance.$on(evt, validate);\n this.watchers.push({\n tag: 'input_vue',\n unwatch: function () {\n this$1.componentInstance.$off(evt, validate);\n }\n });\n};\n\nField.prototype._addHTMLEventListener = function _addHTMLEventListener (evt, validate) {\n var this$1 = this;\n\n if (!this.el || this.componentInstance) { return; }\n\n // listen for the current element.\n var addListener = function (el) {\n addEventListener(el, evt, validate);\n this$1.watchers.push({\n tag: 'input_native',\n unwatch: function () {\n el.removeEventListener(evt, validate);\n }\n });\n };\n\n addListener(this.el);\n if (!isCheckboxOrRadioInput(this.el)) {\n return;\n }\n\n var els = document.querySelectorAll((\"input[name=\\\"\" + (this.el.name) + \"\\\"]\"));\n toArray(els).forEach(function (el) {\n // skip if it is added by v-validate and is not the current element.\n if (el._veeValidateId && el !== this$1.el) {\n return;\n }\n\n addListener(el);\n });\n};\n\n/**\n * Updates aria attributes on the element.\n */\nField.prototype.updateAriaAttrs = function updateAriaAttrs () {\n var this$1 = this;\n\n if (!this.aria || !this.el || !isCallable(this.el.setAttribute)) { return; }\n\n var applyAriaAttrs = function (el) {\n el.setAttribute('aria-required', this$1.isRequired ? 'true' : 'false');\n el.setAttribute('aria-invalid', this$1.flags.invalid ? 'true' : 'false');\n };\n\n if (!isCheckboxOrRadioInput(this.el)) {\n applyAriaAttrs(this.el);\n return;\n }\n\n var els = document.querySelectorAll((\"input[name=\\\"\" + (this.el.name) + \"\\\"]\"));\n toArray(els).forEach(applyAriaAttrs);\n};\n\n/**\n * Updates the custom validity for the field.\n */\nField.prototype.updateCustomValidity = function updateCustomValidity () {\n if (!this.validity || !this.el || !isCallable(this.el.setCustomValidity) || !this.validator.errors) { return; }\n\n this.el.setCustomValidity(this.flags.valid ? '' : (this.validator.errors.firstById(this.id) || ''));\n};\n\n/**\n * Removes all listeners.\n */\nField.prototype.destroy = function destroy () {\n // ignore the result of any ongoing validation.\n if (this._cancellationToken) {\n this._cancellationToken.cancelled = true;\n }\n\n this.unwatch();\n this.dependencies.forEach(function (d) { return d.field.destroy(); });\n this.dependencies = [];\n};\n\nObject.defineProperties( Field.prototype, prototypeAccessors$1 );\n\n// \n\nvar FieldBag = function FieldBag (items) {\n if ( items === void 0 ) items = [];\n\n this.items = items || [];\n this.itemsById = this.items.reduce(function (itemsById, item) {\n itemsById[item.id] = item;\n return itemsById;\n }, {});\n};\n\nvar prototypeAccessors$2 = { length: { configurable: true } };\n\nFieldBag.prototype[typeof Symbol === 'function' ? Symbol.iterator : '@@iterator'] = function () {\n var this$1 = this;\n\n var index = 0;\n return {\n next: function () {\n return { value: this$1.items[index++], done: index > this$1.items.length };\n }\n };\n};\n\n/**\n * Gets the current items length.\n */\n\nprototypeAccessors$2.length.get = function () {\n return this.items.length;\n};\n\n/**\n * Finds the first field that matches the provided matcher object.\n */\nFieldBag.prototype.find = function find$1 (matcher) {\n return find(this.items, function (item) { return item.matches(matcher); });\n};\n\n/**\n * Finds the field with the given id, using a plain object as a map to link\n * ids to items faster than by looping over the array and matching.\n */\nFieldBag.prototype.findById = function findById (id) {\n return this.itemsById[id] || null;\n};\n\n/**\n * Filters the items down to the matched fields.\n */\nFieldBag.prototype.filter = function filter (matcher) {\n // multiple matchers to be tried.\n if (Array.isArray(matcher)) {\n return this.items.filter(function (item) { return matcher.some(function (m) { return item.matches(m); }); });\n }\n\n return this.items.filter(function (item) { return item.matches(matcher); });\n};\n\n/**\n * Maps the field items using the mapping function.\n */\nFieldBag.prototype.map = function map (mapper) {\n return this.items.map(mapper);\n};\n\n/**\n * Finds and removes the first field that matches the provided matcher object, returns the removed item.\n */\nFieldBag.prototype.remove = function remove (matcher) {\n var item = null;\n if (matcher instanceof Field) {\n item = matcher;\n } else {\n item = this.find(matcher);\n }\n\n if (!item) { return null; }\n\n var index = this.items.indexOf(item);\n this.items.splice(index, 1);\n delete this.itemsById[item.id];\n\n return item;\n};\n\n/**\n * Adds a field item to the list.\n */\nFieldBag.prototype.push = function push (item) {\n if (! (item instanceof Field)) {\n throw createError('FieldBag only accepts instances of Field that has an id defined.');\n }\n\n if (!item.id) {\n throw createError('Field id must be defined.');\n }\n\n if (this.findById(item.id)) {\n throw createError((\"Field with id \" + (item.id) + \" is already added.\"));\n }\n\n this.items.push(item);\n this.itemsById[item.id] = item;\n};\n\nObject.defineProperties( FieldBag.prototype, prototypeAccessors$2 );\n\nvar ScopedValidator = function ScopedValidator (base, vm) {\n this.id = vm._uid;\n this._base = base;\n this._paused = false;\n\n // create a mirror bag with limited component scope.\n this.errors = new ErrorBag(base.errors, this.id);\n};\n\nvar prototypeAccessors$3 = { flags: { configurable: true },rules: { configurable: true },fields: { configurable: true },dictionary: { configurable: true },locale: { configurable: true } };\n\nprototypeAccessors$3.flags.get = function () {\n var this$1 = this;\n\n return this._base.fields.items.filter(function (f) { return f.vmId === this$1.id; }).reduce(function (acc, field) {\n if (field.scope) {\n if (!acc[(\"$\" + (field.scope))]) {\n acc[(\"$\" + (field.scope))] = {};\n }\n\n acc[(\"$\" + (field.scope))][field.name] = field.flags;\n }\n\n acc[field.name] = field.flags;\n\n return acc;\n }, {});\n};\n\nprototypeAccessors$3.rules.get = function () {\n return this._base.rules;\n};\n\nprototypeAccessors$3.fields.get = function () {\n return new FieldBag(this._base.fields.filter({ vmId: this.id }));\n};\n\nprototypeAccessors$3.dictionary.get = function () {\n return this._base.dictionary;\n};\n\nprototypeAccessors$3.locale.get = function () {\n return this._base.locale;\n};\n\nprototypeAccessors$3.locale.set = function (val) {\n this._base.locale = val;\n};\n\nScopedValidator.prototype.localize = function localize () {\n var ref;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n return (ref = this._base).localize.apply(ref, args);\n};\n\nScopedValidator.prototype.update = function update () {\n var ref;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n return (ref = this._base).update.apply(ref, args);\n};\n\nScopedValidator.prototype.attach = function attach (opts) {\n var attachOpts = assign({}, opts, { vmId: this.id });\n\n return this._base.attach(attachOpts);\n};\n\nScopedValidator.prototype.pause = function pause () {\n this._paused = true;\n};\n\nScopedValidator.prototype.resume = function resume () {\n this._paused = false;\n};\n\nScopedValidator.prototype.remove = function remove (ruleName) {\n return this._base.remove(ruleName);\n};\n\nScopedValidator.prototype.detach = function detach (name, scope) {\n return this._base.detach(name, scope, this.id);\n};\n\nScopedValidator.prototype.extend = function extend () {\n var ref;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n return (ref = this._base).extend.apply(ref, args);\n};\n\nScopedValidator.prototype.validate = function validate (descriptor, value, opts) {\n if ( opts === void 0 ) opts = {};\n\n if (this._paused) { return Promise.resolve(true); }\n\n return this._base.validate(descriptor, value, assign({}, { vmId: this.id }, opts || {}));\n};\n\nScopedValidator.prototype.verify = function verify () {\n var ref;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n return (ref = this._base).verify.apply(ref, args);\n};\n\nScopedValidator.prototype.validateAll = function validateAll (values, opts) {\n if ( opts === void 0 ) opts = {};\n\n if (this._paused) { return Promise.resolve(true); }\n\n return this._base.validateAll(values, assign({}, { vmId: this.id }, opts || {}));\n};\n\nScopedValidator.prototype.validateScopes = function validateScopes (opts) {\n if ( opts === void 0 ) opts = {};\n\n if (this._paused) { return Promise.resolve(true); }\n\n return this._base.validateScopes(assign({}, { vmId: this.id }, opts || {}));\n};\n\nScopedValidator.prototype.destroy = function destroy () {\n delete this.id;\n delete this._base;\n};\n\nScopedValidator.prototype.reset = function reset (matcher) {\n return this._base.reset(Object.assign({}, matcher || {}, { vmId: this.id }));\n};\n\nScopedValidator.prototype.flag = function flag () {\n var ref;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n return (ref = this._base).flag.apply(ref, args.concat( [this.id] ));\n};\n\nScopedValidator.prototype._resolveField = function _resolveField () {\n var ref;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n return (ref = this._base)._resolveField.apply(ref, args);\n};\n\nObject.defineProperties( ScopedValidator.prototype, prototypeAccessors$3 );\n\nvar VALIDATOR = null;\n\nvar getValidator = function () {\n return VALIDATOR;\n};\n\nvar setValidator = function (value) {\n VALIDATOR = value;\n\n return value;\n};\n\n// \n\n/**\n * Checks if a parent validator instance was requested.\n */\nvar requestsValidator = function (injections) {\n if (isObject(injections) && injections.$validator) {\n return true;\n }\n\n return false;\n};\n\nvar mixin = {\n provide: function provide () {\n if (this.$validator && !isBuiltInComponent(this.$vnode)) {\n return {\n $validator: this.$validator\n };\n }\n\n return {};\n },\n beforeCreate: function beforeCreate () {\n // if built in do nothing.\n if (isBuiltInComponent(this.$vnode) || this.$options.$__veeInject === false) {\n return;\n }\n\n // if its a root instance set the config if it exists.\n if (!this.$parent) {\n setConfig(this.$options.$_veeValidate || {});\n }\n\n var options = resolveConfig(this);\n\n // if its a root instance, inject anyways, or if it requested a new instance.\n if (!this.$parent || (this.$options.$_veeValidate && /new/.test(this.$options.$_veeValidate.validator))) {\n this.$validator = new ScopedValidator(getValidator(), this);\n }\n\n var requested = requestsValidator(this.$options.inject);\n\n // if automatic injection is enabled and no instance was requested.\n if (! this.$validator && options.inject && !requested) {\n this.$validator = new ScopedValidator(getValidator(), this);\n }\n\n // don't inject errors or fieldBag as no validator was resolved.\n if (!requested && !this.$validator) {\n return;\n }\n\n // There is a validator but it isn't injected, mark as reactive.\n if (!requested && this.$validator) {\n var Vue = this.$options._base; // the vue constructor.\n Vue.util.defineReactive(this.$validator, 'errors', this.$validator.errors);\n }\n\n if (!this.$options.computed) {\n this.$options.computed = {};\n }\n\n this.$options.computed[options.errorBagName || 'errors'] = function errorBagGetter () {\n return this.$validator.errors;\n };\n this.$options.computed[options.fieldsBagName || 'fields'] = function fieldBagGetter () {\n return this.$validator.fields.items.reduce(function (acc, field) {\n if (field.scope) {\n if (!acc[(\"$\" + (field.scope))]) {\n acc[(\"$\" + (field.scope))] = {};\n }\n\n acc[(\"$\" + (field.scope))][field.name] = field.flags;\n\n return acc;\n }\n\n acc[field.name] = field.flags;\n\n return acc;\n }, {});\n };\n },\n beforeDestroy: function beforeDestroy () {\n if (this.$validator && this._uid === this.$validator.id) {\n this.$validator.errors.clear(); // remove errors generated by this component.\n }\n }\n};\n\n// \n\n/**\n * Finds the requested field by id from the context object.\n */\nfunction findField (el, context) {\n if (!context || !context.$validator) {\n return null;\n }\n\n return context.$validator.fields.findById(el._veeValidateId);\n}\nvar directive = {\n bind: function bind (el, binding, vnode) {\n var validator = vnode.context.$validator;\n if (!validator) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\"No validator instance is present on vm, did you forget to inject '$validator'?\");\n }\n\n return;\n }\n\n var fieldOptions = Resolver.generate(el, binding, vnode);\n validator.attach(fieldOptions);\n },\n inserted: function inserted (el, binding, vnode) {\n var field = findField(el, vnode.context);\n var scope = Resolver.resolveScope(el, binding, vnode);\n\n // skip if scope hasn't changed.\n if (!field || scope === field.scope) { return; }\n\n // only update scope.\n field.update({ scope: scope });\n\n // allows the field to re-evaluated once more in the update hook.\n field.updated = false;\n },\n update: function update (el, binding, vnode) {\n var field = findField(el, vnode.context);\n\n // make sure we don't do unneccasary work if no important change was done.\n if (!field || (field.updated && isEqual(binding.value, binding.oldValue))) { return; }\n var scope = Resolver.resolveScope(el, binding, vnode);\n var rules = Resolver.resolveRules(el, binding, vnode);\n\n field.update({\n scope: scope,\n rules: rules\n });\n },\n unbind: function unbind (el, binding, ref) {\n var context = ref.context;\n\n var field = findField(el, context);\n if (!field) { return; }\n\n context.$validator.detach(field);\n }\n};\n\n// \n\nvar Validator = function Validator (validations, options, pluginContainer) {\n if ( options === void 0 ) options = { fastExit: true };\n if ( pluginContainer === void 0 ) pluginContainer = null;\n\n this.errors = new ErrorBag();\n this.fields = new FieldBag();\n this._createFields(validations);\n this.paused = false;\n this.fastExit = !isNullOrUndefined(options && options.fastExit) ? options.fastExit : true;\n this.$vee = pluginContainer || {\n _vm: {\n $nextTick: function (cb) { return isCallable(cb) ? cb() : Promise.resolve(); },\n $emit: function () {},\n $off: function () {}\n }\n };\n};\n\nvar prototypeAccessors$4 = { rules: { configurable: true },dictionary: { configurable: true },flags: { configurable: true },locale: { configurable: true } };\nvar staticAccessors$1 = { rules: { configurable: true },dictionary: { configurable: true },locale: { configurable: true } };\n\n/**\n * @deprecated\n */\nstaticAccessors$1.rules.get = function () {\n if (process.env.NODE_ENV !== 'production') {\n warn('this accessor will be deprecated, use `import { rules } from \"vee-validate\"` instead.');\n }\n\n return RuleContainer.rules;\n};\n\n/**\n * @deprecated\n */\nprototypeAccessors$4.rules.get = function () {\n if (process.env.NODE_ENV !== 'production') {\n warn('this accessor will be deprecated, use `import { rules } from \"vee-validate\"` instead.');\n }\n\n return RuleContainer.rules;\n};\n\nprototypeAccessors$4.dictionary.get = function () {\n return DictionaryResolver.getDriver();\n};\n\nstaticAccessors$1.dictionary.get = function () {\n return DictionaryResolver.getDriver();\n};\n\nprototypeAccessors$4.flags.get = function () {\n return this.fields.items.reduce(function (acc, field) {\n var obj;\n\n if (field.scope) {\n acc[(\"$\" + (field.scope))] = ( obj = {}, obj[field.name] = field.flags, obj );\n\n return acc;\n }\n\n acc[field.name] = field.flags;\n\n return acc;\n }, {});\n};\n\n/**\n * Getter for the current locale.\n */\nprototypeAccessors$4.locale.get = function () {\n return Validator.locale;\n};\n\n/**\n * Setter for the validator locale.\n */\nprototypeAccessors$4.locale.set = function (value) {\n Validator.locale = value;\n};\n\nstaticAccessors$1.locale.get = function () {\n return DictionaryResolver.getDriver().locale;\n};\n\n/**\n * Setter for the validator locale.\n */\nstaticAccessors$1.locale.set = function (value) {\n var hasChanged = value !== DictionaryResolver.getDriver().locale;\n DictionaryResolver.getDriver().locale = value;\n if (hasChanged && Validator.$vee && Validator.$vee._vm) {\n Validator.$vee._vm.$emit('localeChanged');\n }\n};\n\n/**\n * Static constructor.\n * @deprecated\n */\nValidator.create = function create (validations, options) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Please use `new` to create new validator instances.');\n }\n\n return new Validator(validations, options);\n};\n\n/**\n * Adds a custom validator to the list of validation rules.\n */\nValidator.extend = function extend (name, validator, options) {\n if ( options === void 0 ) options = {};\n\n Validator._guardExtend(name, validator);\n // rules imported from the minimal bundle\n // will have the options embedded in them\n var mergedOpts = validator.options || {};\n Validator._merge(name, {\n validator: validator,\n paramNames: (options && options.paramNames) || validator.paramNames,\n options: assign({ hasTarget: false, immediate: true }, mergedOpts, options || {})\n });\n};\n\n/**\n * Removes a rule from the list of validators.\n * @deprecated\n */\nValidator.remove = function remove (name) {\n if (process.env.NODE_ENV !== 'production') {\n warn('this method will be deprecated, you can still override your rules with `extend`');\n }\n\n RuleContainer.remove(name);\n};\n\n/**\n * Adds and sets the current locale for the validator.\n*/\nValidator.prototype.localize = function localize (lang, dictionary) {\n Validator.localize(lang, dictionary);\n};\n\n/**\n * Adds and sets the current locale for the validator.\n */\nValidator.localize = function localize (lang, dictionary) {\n var obj;\n\n if (isObject(lang)) {\n DictionaryResolver.getDriver().merge(lang);\n return;\n }\n\n // merge the dictionary.\n if (dictionary) {\n var locale = lang || dictionary.name;\n dictionary = assign({}, dictionary);\n DictionaryResolver.getDriver().merge(( obj = {}, obj[locale] = dictionary, obj ));\n }\n\n if (lang) {\n // set the locale.\n Validator.locale = lang;\n }\n};\n\n/**\n * Registers a field to be validated.\n */\nValidator.prototype.attach = function attach (fieldOpts) {\n var this$1 = this;\n\n // We search for a field with the same name & scope, having persist enabled\n var oldFieldMatcher = { name: fieldOpts.name, scope: fieldOpts.scope, persist: true };\n var oldField = fieldOpts.persist ? this.fields.find(oldFieldMatcher) : null;\n\n if (oldField) {\n // We keep the flags of the old field, then we remove its instance\n fieldOpts.flags = oldField.flags;\n oldField.destroy();\n this.fields.remove(oldField);\n }\n\n // fixes initial value detection with v-model and select elements.\n var value = fieldOpts.initialValue;\n var field = new Field(fieldOpts);\n this.fields.push(field);\n\n // validate the field initially\n if (field.immediate) {\n this.$vee._vm.$nextTick(function () { return this$1.validate((\"#\" + (field.id)), value || field.value, { vmId: fieldOpts.vmId }); });\n } else {\n this._validate(field, value || field.value, { initial: true }).then(function (result) {\n field.flags.valid = result.valid;\n field.flags.invalid = !result.valid;\n });\n }\n\n return field;\n};\n\n/**\n * Sets the flags on a field.\n */\nValidator.prototype.flag = function flag (name, flags, uid) {\n if ( uid === void 0 ) uid = null;\n\n var field = this._resolveField(name, undefined, uid);\n if (!field || !flags) {\n return;\n }\n\n field.setFlags(flags);\n};\n\n/**\n * Removes a field from the validator.\n */\nValidator.prototype.detach = function detach (name, scope, uid) {\n var field = isCallable(name.destroy) ? name : this._resolveField(name, scope, uid);\n if (!field) { return; }\n\n // We destroy/remove the field & error instances if it's not a `persist` one\n if (!field.persist) {\n field.destroy();\n this.errors.remove(field.name, field.scope, field.vmId);\n this.fields.remove(field);\n }\n};\n\n/**\n * Adds a custom validator to the list of validation rules.\n */\nValidator.prototype.extend = function extend (name, validator, options) {\n if ( options === void 0 ) options = {};\n\n Validator.extend(name, validator, options);\n};\n\nValidator.prototype.reset = function reset (matcher) {\n var this$1 = this;\n\n // two ticks\n return this.$vee._vm.$nextTick().then(function () {\n return this$1.$vee._vm.$nextTick();\n }).then(function () {\n this$1.fields.filter(matcher).forEach(function (field) {\n field.waitFor(null);\n field.reset(); // reset field flags.\n this$1.errors.remove(field.name, field.scope, matcher && matcher.vmId);\n });\n });\n};\n\n/**\n * Updates a field, updating both errors and flags.\n */\nValidator.prototype.update = function update (id, ref) {\n var scope = ref.scope;\n\n var field = this._resolveField((\"#\" + id));\n if (!field) { return; }\n\n // remove old scope.\n this.errors.update(id, { scope: scope });\n};\n\n/**\n * Removes a rule from the list of validators.\n * @deprecated\n */\nValidator.prototype.remove = function remove (name) {\n Validator.remove(name);\n};\n\n/**\n * Validates a value against a registered field validations.\n */\nValidator.prototype.validate = function validate (fieldDescriptor, value, ref) {\n var this$1 = this;\n if ( ref === void 0 ) ref = {};\n var silent = ref.silent;\n var vmId = ref.vmId;\n\n if (this.paused) { return Promise.resolve(true); }\n\n // overload to validate all.\n if (isNullOrUndefined(fieldDescriptor)) {\n return this.validateScopes({ silent: silent, vmId: vmId });\n }\n\n // overload to validate scope-less fields.\n if (fieldDescriptor === '*') {\n return this.validateAll(undefined, { silent: silent, vmId: vmId });\n }\n\n // if scope validation was requested.\n if (/^(.+)\\.\\*$/.test(fieldDescriptor)) {\n var matched = fieldDescriptor.match(/^(.+)\\.\\*$/)[1];\n return this.validateAll(matched);\n }\n\n var field = this._resolveField(fieldDescriptor);\n if (!field) {\n return this._handleFieldNotFound(fieldDescriptor);\n }\n\n if (!silent) { field.flags.pending = true; }\n if (value === undefined) {\n value = field.value;\n }\n\n var validationPromise = this._validate(field, value);\n field.waitFor(validationPromise);\n\n return validationPromise.then(function (result) {\n if (!silent && field.isWaitingFor(validationPromise)) {\n // allow next validation to mutate the state.\n field.waitFor(null);\n this$1._handleValidationResults([result], vmId);\n }\n\n return result.valid;\n });\n};\n\n/**\n * Pauses the validator.\n */\nValidator.prototype.pause = function pause () {\n this.paused = true;\n\n return this;\n};\n\n/**\n * Resumes the validator.\n */\nValidator.prototype.resume = function resume () {\n this.paused = false;\n\n return this;\n};\n\n/**\n * Validates each value against the corresponding field validations.\n */\nValidator.prototype.validateAll = function validateAll (values, ref) {\n var this$1 = this;\n if ( ref === void 0 ) ref = {};\n var silent = ref.silent;\n var vmId = ref.vmId;\n\n if (this.paused) { return Promise.resolve(true); }\n\n var matcher = null;\n var providedValues = false;\n\n if (typeof values === 'string') {\n matcher = { scope: values, vmId: vmId };\n } else if (isObject(values)) {\n matcher = Object.keys(values).map(function (key) {\n return { name: key, vmId: vmId, scope: null };\n });\n providedValues = true;\n } else if (Array.isArray(values)) {\n matcher = values.map(function (key) {\n return typeof key === 'object' ? Object.assign({ vmId: vmId }, key) : { name: key, vmId: vmId };\n });\n } else {\n matcher = { scope: null, vmId: vmId };\n }\n\n return Promise.all(\n this.fields.filter(matcher).map(function (field) { return this$1._validate(field, providedValues ? values[field.name] : field.value); })\n ).then(function (results) {\n if (!silent) {\n this$1._handleValidationResults(results, vmId);\n }\n\n return results.every(function (t) { return t.valid; });\n });\n};\n\n/**\n * Validates all scopes.\n */\nValidator.prototype.validateScopes = function validateScopes (ref) {\n var this$1 = this;\n if ( ref === void 0 ) ref = {};\n var silent = ref.silent;\n var vmId = ref.vmId;\n\n if (this.paused) { return Promise.resolve(true); }\n\n return Promise.all(\n this.fields.filter({ vmId: vmId }).map(function (field) { return this$1._validate(field, field.value); })\n ).then(function (results) {\n if (!silent) {\n this$1._handleValidationResults(results, vmId);\n }\n\n return results.every(function (t) { return t.valid; });\n });\n};\n\n/**\n * Validates a value against the rules.\n */\nValidator.prototype.verify = function verify (value, rules, options) {\n if ( options === void 0 ) options = {};\n\n var field = {\n name: (options && options.name) || '{field}',\n rules: normalizeRules(rules),\n bails: getPath('bails', options, true),\n forceRequired: false,\n get isRequired () {\n return !!this.rules.required || this.forceRequired;\n }\n };\n\n var targetRules = Object.keys(field.rules).filter(RuleContainer.isTargetRule);\n if (targetRules.length && options && isObject(options.values)) {\n field.dependencies = targetRules.map(function (rule) {\n var ref = field.rules[rule];\n var targetKey = ref[0];\n\n return {\n name: rule,\n field: { value: options.values[targetKey] }\n };\n });\n }\n\n return this._validate(field, value).then(function (result) {\n var errors = [];\n var ruleMap = {};\n result.errors.forEach(function (e) {\n errors.push(e.msg);\n ruleMap[e.rule] = e.msg;\n });\n\n return {\n valid: result.valid,\n errors: errors,\n failedRules: ruleMap\n };\n });\n};\n\n/**\n * Perform cleanup.\n */\nValidator.prototype.destroy = function destroy () {\n this.$vee._vm.$off('localeChanged');\n};\n\n/**\n * Creates the fields to be validated.\n */\nValidator.prototype._createFields = function _createFields (validations) {\n var this$1 = this;\n\n if (!validations) { return; }\n\n Object.keys(validations).forEach(function (field) {\n var options = assign({}, { name: field, rules: validations[field] });\n this$1.attach(options);\n });\n};\n\n/**\n * Date rules need the existence of a format, so date_format must be supplied.\n */\nValidator.prototype._getDateFormat = function _getDateFormat (validations) {\n var format = null;\n if (validations.date_format && Array.isArray(validations.date_format)) {\n format = validations.date_format[0];\n }\n\n return format || DictionaryResolver.getDriver().getDateFormat(this.locale);\n};\n\n/**\n * Formats an error message for field and a rule.\n */\nValidator.prototype._formatErrorMessage = function _formatErrorMessage (field, rule, data, targetName) {\n if ( data === void 0 ) data = {};\n if ( targetName === void 0 ) targetName = null;\n\n var name = this._getFieldDisplayName(field);\n var params = this._getLocalizedParams(rule, targetName);\n\n return DictionaryResolver.getDriver().getFieldMessage(this.locale, field.name, rule.name, [name, params, data]);\n};\n\n/**\n * We need to convert any object param to an array format since the locales do not handle params as objects yet.\n */\nValidator.prototype._convertParamObjectToArray = function _convertParamObjectToArray (obj, ruleName) {\n if (Array.isArray(obj)) {\n return obj;\n }\n\n var paramNames = RuleContainer.getParamNames(ruleName);\n if (!paramNames || !isObject(obj)) {\n return obj;\n }\n\n return paramNames.reduce(function (prev, paramName) {\n if (paramName in obj) {\n prev.push(obj[paramName]);\n }\n\n return prev;\n }, []);\n};\n\n/**\n * Translates the parameters passed to the rule (mainly for target fields).\n */\nValidator.prototype._getLocalizedParams = function _getLocalizedParams (rule, targetName) {\n if ( targetName === void 0 ) targetName = null;\n\n var params = this._convertParamObjectToArray(rule.params, rule.name);\n if (rule.options.hasTarget && params && params[0]) {\n var localizedName = targetName || DictionaryResolver.getDriver().getAttribute(this.locale, params[0], params[0]);\n return [localizedName].concat(params.slice(1));\n }\n\n return params;\n};\n\n/**\n * Resolves an appropriate display name, first checking 'data-as' or the registered 'prettyName'\n */\nValidator.prototype._getFieldDisplayName = function _getFieldDisplayName (field) {\n return field.alias || DictionaryResolver.getDriver().getAttribute(this.locale, field.name, field.name);\n};\n\n/**\n * Converts an array of params to an object with named properties.\n * Only works if the rule is configured with a paramNames array.\n * Returns the same params if it cannot convert it.\n */\nValidator.prototype._convertParamArrayToObj = function _convertParamArrayToObj (params, ruleName) {\n var paramNames = RuleContainer.getParamNames(ruleName);\n if (!paramNames) {\n return params;\n }\n\n if (isObject(params)) {\n // check if the object is either a config object or a single parameter that is an object.\n var hasKeys = paramNames.some(function (name) { return Object.keys(params).indexOf(name) !== -1; });\n // if it has some of the keys, return it as is.\n if (hasKeys) {\n return params;\n }\n // otherwise wrap the object in an array.\n params = [params];\n }\n\n // Reduce the paramsNames to a param object.\n return params.reduce(function (prev, value, idx) {\n prev[paramNames[idx]] = value;\n\n return prev;\n }, {});\n};\n\n/**\n * Tests a single input value against a rule.\n */\nValidator.prototype._test = function _test (field, value, rule) {\n var this$1 = this;\n\n var validator = RuleContainer.getValidatorMethod(rule.name);\n var params = Array.isArray(rule.params) ? toArray(rule.params) : rule.params;\n if (!params) {\n params = [];\n }\n\n var targetName = null;\n if (!validator || typeof validator !== 'function') {\n return Promise.reject(createError((\"No such validator '\" + (rule.name) + \"' exists.\")));\n }\n\n // has field dependencies.\n if (rule.options.hasTarget && field.dependencies) {\n var target = find(field.dependencies, function (d) { return d.name === rule.name; });\n if (target) {\n targetName = target.field.alias;\n params = [target.field.value].concat(params.slice(1));\n }\n } else if (rule.name === 'required' && field.rejectsFalse) {\n // invalidate false if no args were specified and the field rejects false by default.\n params = params.length ? params : [true];\n }\n\n if (rule.options.isDate) {\n var dateFormat = this._getDateFormat(field.rules);\n if (rule.name !== 'date_format') {\n params.push(dateFormat);\n }\n }\n\n var result = validator(value, this._convertParamArrayToObj(params, rule.name));\n\n // If it is a promise.\n if (isCallable(result.then)) {\n return result.then(function (values) {\n var allValid = true;\n var data = {};\n if (Array.isArray(values)) {\n allValid = values.every(function (t) { return (isObject(t) ? t.valid : t); });\n } else { // Is a single object/boolean.\n allValid = isObject(values) ? values.valid : values;\n data = values.data;\n }\n\n return {\n valid: allValid,\n data: result.data,\n errors: allValid ? [] : [this$1._createFieldError(field, rule, data, targetName)]\n };\n });\n }\n\n if (!isObject(result)) {\n result = { valid: result, data: {} };\n }\n\n return {\n valid: result.valid,\n data: result.data,\n errors: result.valid ? [] : [this._createFieldError(field, rule, result.data, targetName)]\n };\n};\n\n/**\n * Merges a validator object into the RULES and Messages.\n */\nValidator._merge = function _merge (name, ref) {\n var validator = ref.validator;\n var options = ref.options;\n var paramNames = ref.paramNames;\n\n var validate = isCallable(validator) ? validator : validator.validate;\n if (validator.getMessage) {\n DictionaryResolver.getDriver().setMessage(Validator.locale, name, validator.getMessage);\n }\n\n RuleContainer.add(name, {\n validate: validate,\n options: options,\n paramNames: paramNames\n });\n};\n\n/**\n * Guards from extension violations.\n */\nValidator._guardExtend = function _guardExtend (name, validator) {\n if (isCallable(validator)) {\n return;\n }\n\n if (!isCallable(validator.validate)) {\n throw createError(\n (\"Extension Error: The validator '\" + name + \"' must be a function or have a 'validate' method.\")\n );\n }\n};\n\n/**\n * Creates a Field Error Object.\n */\nValidator.prototype._createFieldError = function _createFieldError (field, rule, data, targetName) {\n var this$1 = this;\n\n return {\n id: field.id,\n vmId: field.vmId,\n field: field.name,\n msg: this._formatErrorMessage(field, rule, data, targetName),\n rule: rule.name,\n scope: field.scope,\n regenerate: function () {\n return this$1._formatErrorMessage(field, rule, data, targetName);\n }\n };\n};\n\n/**\n * Tries different strategies to find a field.\n */\nValidator.prototype._resolveField = function _resolveField (name, scope, uid) {\n if (name[0] === '#') {\n return this.fields.findById(name.slice(1));\n }\n\n if (!isNullOrUndefined(scope)) {\n return this.fields.find({ name: name, scope: scope, vmId: uid });\n }\n\n if (includes(name, '.')) {\n var ref = name.split('.');\n var fieldScope = ref[0];\n var fieldName = ref.slice(1);\n var field = this.fields.find({ name: fieldName.join('.'), scope: fieldScope, vmId: uid });\n if (field) {\n return field;\n }\n }\n\n return this.fields.find({ name: name, scope: null, vmId: uid });\n};\n\n/**\n * Handles when a field is not found.\n */\nValidator.prototype._handleFieldNotFound = function _handleFieldNotFound (name, scope) {\n var fullName = isNullOrUndefined(scope) ? name : (\"\" + (!isNullOrUndefined(scope) ? scope + '.' : '') + name);\n\n return Promise.reject(createError(\n (\"Validating a non-existent field: \\\"\" + fullName + \"\\\". Use \\\"attach()\\\" first.\")\n ));\n};\n\n/**\n * Handles validation results.\n */\nValidator.prototype._handleValidationResults = function _handleValidationResults (results, vmId) {\n var this$1 = this;\n\n var matchers = results.map(function (result) { return ({ id: result.id }); });\n this.errors.removeById(matchers.map(function (m) { return m.id; }));\n // remove by name and scope to remove any custom errors added.\n results.forEach(function (result) {\n this$1.errors.remove(result.field, result.scope, vmId);\n });\n var allErrors = results.reduce(function (prev, curr) {\n prev.push.apply(prev, curr.errors);\n\n return prev;\n }, []);\n\n this.errors.add(allErrors);\n\n // handle flags.\n this.fields.filter(matchers).forEach(function (field) {\n var result = find(results, function (r) { return r.id === field.id; });\n field.setFlags({\n pending: false,\n valid: result.valid,\n validated: true\n });\n });\n};\n\nValidator.prototype._shouldSkip = function _shouldSkip (field, value) {\n // field is configured to run through the pipeline regardless\n if (field.bails === false) {\n return false;\n }\n\n // disabled fields are skipped if useConstraintAttrs is enabled in config\n if (field.isDisabled && getConfig().useConstraintAttrs) {\n return true;\n }\n\n // skip if the field is not required and has an empty value.\n return !field.isRequired && (isNullOrUndefined(value) || value === '' || isEmptyArray(value));\n};\n\nValidator.prototype._shouldBail = function _shouldBail (field) {\n // if the field was configured explicitly.\n if (field.bails !== undefined) {\n return field.bails;\n }\n\n return this.fastExit;\n};\n\n/**\n * Starts the validation process.\n */\nValidator.prototype._validate = function _validate (field, value, ref) {\n var this$1 = this;\n if ( ref === void 0 ) ref = {};\n var initial = ref.initial;\n\n var requireRules = Object.keys(field.rules).filter(RuleContainer.isRequireRule);\n\n field.forceRequired = false;\n requireRules.forEach(function (rule) {\n var ruleOptions = RuleContainer.getOptions(rule);\n var result = this$1._test(field, value, { name: rule, params: field.rules[rule], options: ruleOptions });\n\n if (isCallable(result.then)) { throw createError('Require rules cannot be async'); }\n if (!isObject(result)) { throw createError('Require rules has to return an object (see docs)'); }\n\n if (result.data.required === true) {\n field.forceRequired = true;\n }\n });\n\n if (this._shouldSkip(field, value)) {\n return Promise.resolve({ valid: true, id: field.id, field: field.name, scope: field.scope, errors: [] });\n }\n\n var promises = [];\n var errors = [];\n var isExitEarly = false;\n if (isCallable(field.checkValueChanged)) {\n field.flags.changed = field.checkValueChanged();\n }\n\n // use of '.some()' is to break iteration in middle by returning true\n Object.keys(field.rules).filter(function (rule) {\n if (!initial || !RuleContainer.has(rule)) { return true; }\n\n return RuleContainer.isImmediate(rule);\n }).some(function (rule) {\n var ruleOptions = RuleContainer.getOptions(rule);\n var result = this$1._test(field, value, { name: rule, params: field.rules[rule], options: ruleOptions });\n if (isCallable(result.then)) {\n promises.push(result);\n } else if (!result.valid && this$1._shouldBail(field)) {\n errors.push.apply(errors, result.errors);\n isExitEarly = true;\n } else {\n // promisify the result.\n promises.push(new Promise(function (resolve) { return resolve(result); }));\n }\n\n return isExitEarly;\n });\n\n if (isExitEarly) {\n return Promise.resolve({ valid: false, errors: errors, id: field.id, field: field.name, scope: field.scope });\n }\n\n return Promise.all(promises).then(function (results) {\n return results.reduce(function (prev, v) {\n var ref;\n\n if (!v.valid) {\n (ref = prev.errors).push.apply(ref, v.errors);\n }\n\n prev.valid = prev.valid && v.valid;\n\n return prev;\n }, { valid: true, errors: errors, id: field.id, field: field.name, scope: field.scope });\n });\n};\n\nObject.defineProperties( Validator.prototype, prototypeAccessors$4 );\nObject.defineProperties( Validator, staticAccessors$1 );\n\n// \n\nvar normalizeValue = function (value) {\n if (isObject(value)) {\n return Object.keys(value).reduce(function (prev, key) {\n prev[key] = normalizeValue(value[key]);\n\n return prev;\n }, {});\n }\n\n if (isCallable(value)) {\n return value('{0}', ['{1}', '{2}', '{3}']);\n }\n\n return value;\n};\n\nvar normalizeFormat = function (locale) {\n // normalize messages\n var dictionary = {};\n if (locale.messages) {\n dictionary.messages = normalizeValue(locale.messages);\n }\n\n if (locale.custom) {\n dictionary.custom = normalizeValue(locale.custom);\n }\n\n if (locale.attributes) {\n dictionary.attributes = locale.attributes;\n }\n\n if (!isNullOrUndefined(locale.dateFormat)) {\n dictionary.dateFormat = locale.dateFormat;\n }\n\n return dictionary;\n};\n\nvar I18nDictionary = function I18nDictionary (i18n, rootKey) {\n this.i18n = i18n;\n this.rootKey = rootKey;\n};\n\nvar prototypeAccessors$5 = { locale: { configurable: true } };\n\nprototypeAccessors$5.locale.get = function () {\n return this.i18n.locale;\n};\n\nprototypeAccessors$5.locale.set = function (value) {\n warn('Cannot set locale from the validator when using vue-i18n, use i18n.locale setter instead');\n};\n\nI18nDictionary.prototype.getDateFormat = function getDateFormat (locale) {\n return this.i18n.getDateTimeFormat(locale || this.locale);\n};\n\nI18nDictionary.prototype.setDateFormat = function setDateFormat (locale, value) {\n this.i18n.setDateTimeFormat(locale || this.locale, value);\n};\n\nI18nDictionary.prototype.getMessage = function getMessage (_, key, data) {\n var path = (this.rootKey) + \".messages.\" + key;\n var dataOptions = data;\n\n if (Array.isArray(data)) {\n dataOptions = [].concat.apply([], data);\n }\n\n if (this.i18n.te(path)) {\n return this.i18n.t(path, dataOptions);\n }\n\n // fallback to the fallback message\n if (this.i18n.te(path, this.i18n.fallbackLocale)) {\n return this.i18n.t(path, this.i18n.fallbackLocale, dataOptions);\n }\n\n // fallback to the root message\n return this.i18n.t(((this.rootKey) + \".messages._default\"), dataOptions);\n};\n\nI18nDictionary.prototype.getAttribute = function getAttribute (_, key, fallback) {\n if ( fallback === void 0 ) fallback = '';\n\n var path = (this.rootKey) + \".attributes.\" + key;\n if (this.i18n.te(path)) {\n return this.i18n.t(path);\n }\n\n return fallback;\n};\n\nI18nDictionary.prototype.getFieldMessage = function getFieldMessage (_, field, key, data) {\n var path = (this.rootKey) + \".custom.\" + field + \".\" + key;\n if (this.i18n.te(path)) {\n return this.i18n.t(path, data);\n }\n\n return this.getMessage(_, key, data);\n};\n\nI18nDictionary.prototype.merge = function merge$1 (dictionary) {\n var this$1 = this;\n\n Object.keys(dictionary).forEach(function (localeKey) {\n var obj;\n\n // i18n doesn't deep merge\n // first clone the existing locale (avoid mutations to locale)\n var clone = merge({}, getPath((localeKey + \".\" + (this$1.rootKey)), this$1.i18n.messages, {}));\n // Merge cloned locale with new one\n var locale = merge(clone, normalizeFormat(dictionary[localeKey]));\n this$1.i18n.mergeLocaleMessage(localeKey, ( obj = {}, obj[this$1.rootKey] = locale, obj ));\n if (locale.dateFormat) {\n this$1.i18n.setDateTimeFormat(localeKey, locale.dateFormat);\n }\n });\n};\n\nI18nDictionary.prototype.setMessage = function setMessage (locale, key, value) {\n var obj, obj$1;\n\n this.merge(( obj$1 = {}, obj$1[locale] = {\n messages: ( obj = {}, obj[key] = value, obj )\n }, obj$1 ));\n};\n\nI18nDictionary.prototype.setAttribute = function setAttribute (locale, key, value) {\n var obj, obj$1;\n\n this.merge(( obj$1 = {}, obj$1[locale] = {\n attributes: ( obj = {}, obj[key] = value, obj )\n }, obj$1 ));\n};\n\nObject.defineProperties( I18nDictionary.prototype, prototypeAccessors$5 );\n\nvar aggressive = function () { return ({\n on: ['input']\n}); };\n\nvar lazy = function () { return ({\n on: ['change']\n}); };\n\nvar eager = function (ref) {\n var errors = ref.errors;\n\n if (errors.length) {\n return {\n on: ['input']\n };\n }\n\n return {\n on: ['change', 'blur']\n };\n};\n\nvar passive = function () { return ({\n on: []\n}); };\n\nvar modes = {\n aggressive: aggressive,\n eager: eager,\n passive: passive,\n lazy: lazy\n};\n\n// \n\nvar Vue;\nvar pendingPlugins;\nvar pluginInstance;\n\nvar VeeValidate$1 = function VeeValidate (config, _Vue) {\n this.configure(config);\n pluginInstance = this;\n if (_Vue) {\n Vue = _Vue;\n }\n this._validator = setValidator(\n new Validator(null, { fastExit: config && config.fastExit }, this)\n );\n this._initVM(this.config);\n this._initI18n(this.config);\n};\n\nvar prototypeAccessors$6 = { i18nDriver: { configurable: true },config: { configurable: true } };\nvar staticAccessors$2 = { i18nDriver: { configurable: true },config: { configurable: true } };\n\nVeeValidate$1.setI18nDriver = function setI18nDriver (driver, instance) {\n DictionaryResolver.setDriver(driver, instance);\n};\n\nVeeValidate$1.configure = function configure (cfg) {\n setConfig(cfg);\n};\n\nVeeValidate$1.setMode = function setMode (mode, implementation) {\n setConfig({ mode: mode });\n if (!implementation) {\n return;\n }\n\n if (!isCallable(implementation)) {\n throw new Error('A mode implementation must be a function');\n }\n\n modes[mode] = implementation;\n};\n\nVeeValidate$1.use = function use (plugin, options) {\n if ( options === void 0 ) options = {};\n\n if (!isCallable(plugin)) {\n return warn('The plugin must be a callable function');\n }\n\n // Don't install plugins until vee-validate is installed.\n if (!pluginInstance) {\n if (!pendingPlugins) {\n pendingPlugins = [];\n }\n pendingPlugins.push({ plugin: plugin, options: options });\n return;\n }\n\n plugin({ Validator: Validator, ErrorBag: ErrorBag, Rules: Validator.rules }, options);\n};\nVeeValidate$1.install = function install (_Vue, opts) {\n if (Vue && _Vue === Vue) {\n if (process.env.NODE_ENV !== 'production') {\n warn('already installed, Vue.use(VeeValidate) should only be called once.');\n }\n return;\n }\n\n Vue = _Vue;\n pluginInstance = new VeeValidate$1(opts);\n // inject the plugin container statically into the validator class\n Validator.$vee = pluginInstance;\n\n detectPassiveSupport();\n\n Vue.mixin(mixin);\n Vue.directive('validate', directive);\n if (pendingPlugins) {\n pendingPlugins.forEach(function (ref) {\n var plugin = ref.plugin;\n var options = ref.options;\n\n VeeValidate$1.use(plugin, options);\n });\n pendingPlugins = null;\n }\n};\n\nprototypeAccessors$6.i18nDriver.get = function () {\n return DictionaryResolver.getDriver();\n};\n\nstaticAccessors$2.i18nDriver.get = function () {\n return DictionaryResolver.getDriver();\n};\n\nprototypeAccessors$6.config.get = function () {\n return getConfig();\n};\n\nstaticAccessors$2.config.get = function () {\n return getConfig();\n};\n\nVeeValidate$1.prototype._initVM = function _initVM (config) {\n var this$1 = this;\n\n this._vm = new Vue({\n data: function () { return ({\n errors: this$1._validator.errors,\n fields: this$1._validator.fields\n }); }\n });\n};\n\nVeeValidate$1.prototype._initI18n = function _initI18n (config) {\n var this$1 = this;\n\n var dictionary = config.dictionary;\n var i18n = config.i18n;\n var i18nRootKey = config.i18nRootKey;\n var locale = config.locale;\n var onLocaleChanged = function () {\n if (dictionary) {\n this$1.i18nDriver.merge(dictionary);\n }\n\n this$1._validator.errors.regenerate();\n };\n\n // i18 is being used for localization.\n if (i18n) {\n VeeValidate$1.setI18nDriver('i18n', new I18nDictionary(i18n, i18nRootKey));\n i18n._vm.$watch('locale', onLocaleChanged);\n } else if (typeof window !== 'undefined') {\n this._vm.$on('localeChanged', onLocaleChanged);\n }\n\n if (dictionary) {\n this.i18nDriver.merge(dictionary);\n }\n\n if (locale && !i18n) {\n this._validator.localize(locale);\n }\n};\n\nVeeValidate$1.prototype.configure = function configure (cfg) {\n setConfig(cfg);\n};\n\nObject.defineProperties( VeeValidate$1.prototype, prototypeAccessors$6 );\nObject.defineProperties( VeeValidate$1, staticAccessors$2 );\n\nVeeValidate$1.mixin = mixin;\nVeeValidate$1.directive = directive;\nVeeValidate$1.Validator = Validator;\nVeeValidate$1.ErrorBag = ErrorBag;\n\n/**\n * Formates file size.\n *\n * @param {Number|String} size\n */\nvar formatFileSize = function (size) {\n var units = ['Byte', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n var threshold = 1024;\n size = Number(size) * threshold;\n var i = size === 0 ? 0 : Math.floor(Math.log(size) / Math.log(threshold));\n return (((size / Math.pow(threshold, i)).toFixed(2) * 1) + \" \" + (units[i]));\n};\n\n/**\n * Checks if vee-validate is defined globally.\n */\nvar isDefinedGlobally = function () {\n return typeof VeeValidate !== 'undefined';\n};\n\nvar obj;\n\nvar messages = {\n _default: function (field) { return (\"The \" + field + \" value is not valid\"); },\n after: function (field, ref) {\n var target = ref[0];\n var inclusion = ref[1];\n\n return (\"The \" + field + \" must be after \" + (inclusion ? 'or equal to ' : '') + target);\n},\n alpha: function (field) { return (\"The \" + field + \" field may only contain alphabetic characters\"); },\n alpha_dash: function (field) { return (\"The \" + field + \" field may contain alpha-numeric characters as well as dashes and underscores\"); },\n alpha_num: function (field) { return (\"The \" + field + \" field may only contain alpha-numeric characters\"); },\n alpha_spaces: function (field) { return (\"The \" + field + \" field may only contain alphabetic characters as well as spaces\"); },\n before: function (field, ref) {\n var target = ref[0];\n var inclusion = ref[1];\n\n return (\"The \" + field + \" must be before \" + (inclusion ? 'or equal to ' : '') + target);\n},\n between: function (field, ref) {\n var min = ref[0];\n var max = ref[1];\n\n return (\"The \" + field + \" field must be between \" + min + \" and \" + max);\n},\n confirmed: function (field) { return (\"The \" + field + \" confirmation does not match\"); },\n credit_card: function (field) { return (\"The \" + field + \" field is invalid\"); },\n date_between: function (field, ref) {\n var min = ref[0];\n var max = ref[1];\n\n return (\"The \" + field + \" must be between \" + min + \" and \" + max);\n},\n date_format: function (field, ref) {\n var format = ref[0];\n\n return (\"The \" + field + \" must be in the format \" + format);\n},\n decimal: function (field, ref) {\n if ( ref === void 0 ) ref = [];\n var decimals = ref[0]; if ( decimals === void 0 ) decimals = '*';\n\n return (\"The \" + field + \" field must be numeric and may contain\" + (!decimals || decimals === '*' ? '' : ' ' + decimals) + \" decimal points\");\n},\n digits: function (field, ref) {\n var length = ref[0];\n\n return (\"The \" + field + \" field must be numeric and contains exactly \" + length + \" digits\");\n},\n dimensions: function (field, ref) {\n var width = ref[0];\n var height = ref[1];\n\n return (\"The \" + field + \" field must be \" + width + \" pixels by \" + height + \" pixels\");\n},\n email: function (field) { return (\"The \" + field + \" field must be a valid email\"); },\n excluded: function (field) { return (\"The \" + field + \" field must be a valid value\"); },\n ext: function (field) { return (\"The \" + field + \" field must be a valid file\"); },\n image: function (field) { return (\"The \" + field + \" field must be an image\"); },\n included: function (field) { return (\"The \" + field + \" field must be a valid value\"); },\n integer: function (field) { return (\"The \" + field + \" field must be an integer\"); },\n ip: function (field) { return (\"The \" + field + \" field must be a valid ip address\"); },\n ip_or_fqdn: function (field) { return (\"The \" + field + \" field must be a valid ip address or FQDN\"); },\n length: function (field, ref) {\n var length = ref[0];\n var max = ref[1];\n\n if (max) {\n return (\"The \" + field + \" length must be between \" + length + \" and \" + max);\n }\n\n return (\"The \" + field + \" length must be \" + length);\n },\n max: function (field, ref) {\n var length = ref[0];\n\n return (\"The \" + field + \" field may not be greater than \" + length + \" characters\");\n},\n max_value: function (field, ref) {\n var max = ref[0];\n\n return (\"The \" + field + \" field must be \" + max + \" or less\");\n},\n mimes: function (field) { return (\"The \" + field + \" field must have a valid file type\"); },\n min: function (field, ref) {\n var length = ref[0];\n\n return (\"The \" + field + \" field must be at least \" + length + \" characters\");\n},\n min_value: function (field, ref) {\n var min = ref[0];\n\n return (\"The \" + field + \" field must be \" + min + \" or more\");\n},\n numeric: function (field) { return (\"The \" + field + \" field may only contain numeric characters\"); },\n regex: function (field) { return (\"The \" + field + \" field format is invalid\"); },\n required: function (field) { return (\"The \" + field + \" field is required\"); },\n required_if: function (field, ref) {\n var target = ref[0];\n\n return (\"The \" + field + \" field is required when the \" + target + \" field has this value\");\n},\n size: function (field, ref) {\n var size = ref[0];\n\n return (\"The \" + field + \" size must be less than \" + (formatFileSize(size)));\n},\n url: function (field) { return (\"The \" + field + \" field is not a valid URL\"); }\n};\n\nvar locale = {\n name: 'en',\n messages: messages,\n attributes: {}\n};\n\nif (isDefinedGlobally()) {\n // eslint-disable-next-line\n VeeValidate.Validator.localize(( obj = {}, obj[locale.name] = locale, obj ));\n}\n\nfunction toInteger (dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN\n }\n\n var number = Number(dirtyNumber);\n\n if (isNaN(number)) {\n return number\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number)\n}\n\nvar MILLISECONDS_IN_MINUTE = 60000;\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nfunction getTimezoneOffsetInMilliseconds (dirtyDate) {\n var date = new Date(dirtyDate.getTime());\n var baseTimezoneOffset = date.getTimezoneOffset();\n date.setSeconds(0, 0);\n var millisecondsPartOfTimezoneOffset = date.getTime() % MILLISECONDS_IN_MINUTE;\n\n return baseTimezoneOffset * MILLISECONDS_IN_MINUTE + millisecondsPartOfTimezoneOffset\n}\n\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE$1 = 60000;\nvar DEFAULT_ADDITIONAL_DIGITS = 2;\n\nvar patterns = {\n dateTimeDelimeter: /[T ]/,\n plainTime: /:/,\n timeZoneDelimeter: /[Z ]/i,\n\n // year tokens\n YY: /^(\\d{2})$/,\n YYY: [\n /^([+-]\\d{2})$/, // 0 additional digits\n /^([+-]\\d{3})$/, // 1 additional digit\n /^([+-]\\d{4})$/ // 2 additional digits\n ],\n YYYY: /^(\\d{4})/,\n YYYYY: [\n /^([+-]\\d{4})/, // 0 additional digits\n /^([+-]\\d{5})/, // 1 additional digit\n /^([+-]\\d{6})/ // 2 additional digits\n ],\n\n // date tokens\n MM: /^-(\\d{2})$/,\n DDD: /^-?(\\d{3})$/,\n MMDD: /^-?(\\d{2})-?(\\d{2})$/,\n Www: /^-?W(\\d{2})$/,\n WwwD: /^-?W(\\d{2})-?(\\d{1})$/,\n\n HH: /^(\\d{2}([.,]\\d*)?)$/,\n HHMM: /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n HHMMSS: /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n\n // timezone tokens\n timezone: /([Z+-].*)$/,\n timezoneZ: /^(Z)$/,\n timezoneHH: /^([+-])(\\d{2})$/,\n timezoneHHMM: /^([+-])(\\d{2}):?(\\d{2})$/\n};\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If an argument is a string, the function tries to parse it.\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n * If the function cannot parse the string or the values are invalid, it returns Invalid Date.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n * All *date-fns* functions will throw `RangeError` if `options.additionalDigits` is not 0, 1, 2 or undefined.\n *\n * @param {Date|String|Number} argument - the value to convert\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = toDate('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * var result = toDate('+02014101', {additionalDigits: 1})\n * //=> Fri Apr 11 2014 00:00:00\n */\nfunction toDate (argument, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n if (argument === null) {\n return new Date(NaN)\n }\n\n var options = dirtyOptions || {};\n\n var additionalDigits = options.additionalDigits == null ? DEFAULT_ADDITIONAL_DIGITS : toInteger(options.additionalDigits);\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2')\n }\n\n // Clone the date\n if (argument instanceof Date ||\n (typeof argument === 'object' && Object.prototype.toString.call(argument) === '[object Date]')\n ) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime())\n } else if (typeof argument === 'number' || Object.prototype.toString.call(argument) === '[object Number]') {\n return new Date(argument)\n } else if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN)\n }\n\n var dateStrings = splitDateString(argument);\n\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n var year = parseYearResult.year;\n var restDateString = parseYearResult.restDateString;\n\n var date = parseDate(restDateString, year);\n\n if (isNaN(date)) {\n return new Date(NaN)\n }\n\n if (date) {\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n\n if (isNaN(time)) {\n return new Date(NaN)\n }\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n if (isNaN(offset)) {\n return new Date(NaN)\n }\n } else {\n // get offset accurate to hour in timezones that change offset\n offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time));\n offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time + offset));\n }\n\n return new Date(timestamp + time + offset)\n } else {\n return new Date(NaN)\n }\n}\n\nfunction splitDateString (dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimeter);\n var timeString;\n\n if (patterns.plainTime.test(array[0])) {\n dateStrings.date = null;\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n if (patterns.timeZoneDelimeter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimeter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\n }\n }\n\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings\n}\n\nfunction parseYear (dateString, additionalDigits) {\n var patternYYY = patterns.YYY[additionalDigits];\n var patternYYYYY = patterns.YYYYY[additionalDigits];\n\n var token;\n\n // YYYY or ±YYYYY\n token = patterns.YYYY.exec(dateString) || patternYYYYY.exec(dateString);\n if (token) {\n var yearString = token[1];\n return {\n year: parseInt(yearString, 10),\n restDateString: dateString.slice(yearString.length)\n }\n }\n\n // YY or ±YYY\n token = patterns.YY.exec(dateString) || patternYYY.exec(dateString);\n if (token) {\n var centuryString = token[1];\n return {\n year: parseInt(centuryString, 10) * 100,\n restDateString: dateString.slice(centuryString.length)\n }\n }\n\n // Invalid ISO-formatted year\n return {\n year: null\n }\n}\n\nfunction parseDate (dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) {\n return null\n }\n\n var token;\n var date;\n var month;\n var week;\n\n // YYYY\n if (dateString.length === 0) {\n date = new Date(0);\n date.setUTCFullYear(year);\n return date\n }\n\n // YYYY-MM\n token = patterns.MM.exec(dateString);\n if (token) {\n date = new Date(0);\n month = parseInt(token[1], 10) - 1;\n\n if (!validateDate(year, month)) {\n return new Date(NaN)\n }\n\n date.setUTCFullYear(year, month);\n return date\n }\n\n // YYYY-DDD or YYYYDDD\n token = patterns.DDD.exec(dateString);\n if (token) {\n date = new Date(0);\n var dayOfYear = parseInt(token[1], 10);\n\n if (!validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN)\n }\n\n date.setUTCFullYear(year, 0, dayOfYear);\n return date\n }\n\n // YYYY-MM-DD or YYYYMMDD\n token = patterns.MMDD.exec(dateString);\n if (token) {\n date = new Date(0);\n month = parseInt(token[1], 10) - 1;\n var day = parseInt(token[2], 10);\n\n if (!validateDate(year, month, day)) {\n return new Date(NaN)\n }\n\n date.setUTCFullYear(year, month, day);\n return date\n }\n\n // YYYY-Www or YYYYWww\n token = patterns.Www.exec(dateString);\n if (token) {\n week = parseInt(token[1], 10) - 1;\n\n if (!validateWeekDate(year, week)) {\n return new Date(NaN)\n }\n\n return dayOfISOWeekYear(year, week)\n }\n\n // YYYY-Www-D or YYYYWwwD\n token = patterns.WwwD.exec(dateString);\n if (token) {\n week = parseInt(token[1], 10) - 1;\n var dayOfWeek = parseInt(token[2], 10) - 1;\n\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN)\n }\n\n return dayOfISOWeekYear(year, week, dayOfWeek)\n }\n\n // Invalid ISO-formatted date\n return null\n}\n\nfunction parseTime (timeString) {\n var token;\n var hours;\n var minutes;\n\n // hh\n token = patterns.HH.exec(timeString);\n if (token) {\n hours = parseFloat(token[1].replace(',', '.'));\n\n if (!validateTime(hours)) {\n return NaN\n }\n\n return (hours % 24) * MILLISECONDS_IN_HOUR\n }\n\n // hh:mm or hhmm\n token = patterns.HHMM.exec(timeString);\n if (token) {\n hours = parseInt(token[1], 10);\n minutes = parseFloat(token[2].replace(',', '.'));\n\n if (!validateTime(hours, minutes)) {\n return NaN\n }\n\n return (hours % 24) * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE$1\n }\n\n // hh:mm:ss or hhmmss\n token = patterns.HHMMSS.exec(timeString);\n if (token) {\n hours = parseInt(token[1], 10);\n minutes = parseInt(token[2], 10);\n var seconds = parseFloat(token[3].replace(',', '.'));\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN\n }\n\n return (hours % 24) * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE$1 +\n seconds * 1000\n }\n\n // Invalid ISO-formatted time\n return null\n}\n\nfunction parseTimezone (timezoneString) {\n var token;\n var absoluteOffset;\n\n // Z\n token = patterns.timezoneZ.exec(timezoneString);\n if (token) {\n return 0\n }\n\n var hours;\n\n // ±hh\n token = patterns.timezoneHH.exec(timezoneString);\n if (token) {\n hours = parseInt(token[2], 10);\n\n if (!validateTimezone()) {\n return NaN\n }\n\n absoluteOffset = hours * MILLISECONDS_IN_HOUR;\n return (token[1] === '+') ? -absoluteOffset : absoluteOffset\n }\n\n // ±hh:mm or ±hhmm\n token = patterns.timezoneHHMM.exec(timezoneString);\n if (token) {\n hours = parseInt(token[2], 10);\n var minutes = parseInt(token[3], 10);\n\n if (!validateTimezone(hours, minutes)) {\n return NaN\n }\n\n absoluteOffset = hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE$1;\n return (token[1] === '+') ? -absoluteOffset : absoluteOffset\n }\n\n return 0\n}\n\nfunction dayOfISOWeekYear (isoWeekYear, week, day) {\n week = week || 0;\n day = day || 0;\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = week * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date\n}\n\n// Validation functions\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex (year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)\n}\n\nfunction validateDate (year, month, date) {\n if (month < 0 || month > 11) {\n return false\n }\n\n if (date != null) {\n if (date < 1) {\n return false\n }\n\n var isLeapYear = isLeapYearIndex(year);\n if (isLeapYear && date > DAYS_IN_MONTH_LEAP_YEAR[month]) {\n return false\n }\n if (!isLeapYear && date > DAYS_IN_MONTH[month]) {\n return false\n }\n }\n\n return true\n}\n\nfunction validateDayOfYearDate (year, dayOfYear) {\n if (dayOfYear < 1) {\n return false\n }\n\n var isLeapYear = isLeapYearIndex(year);\n if (isLeapYear && dayOfYear > 366) {\n return false\n }\n if (!isLeapYear && dayOfYear > 365) {\n return false\n }\n\n return true\n}\n\nfunction validateWeekDate (year, week, day) {\n if (week < 0 || week > 52) {\n return false\n }\n\n if (day != null && (day < 0 || day > 6)) {\n return false\n }\n\n return true\n}\n\nfunction validateTime (hours, minutes, seconds) {\n if (hours != null && (hours < 0 || hours >= 25)) {\n return false\n }\n\n if (minutes != null && (minutes < 0 || minutes >= 60)) {\n return false\n }\n\n if (seconds != null && (seconds < 0 || seconds >= 60)) {\n return false\n }\n\n return true\n}\n\nfunction validateTimezone (hours, minutes) {\n if (minutes != null && (minutes < 0 || minutes > 59)) {\n return false\n }\n\n return true\n}\n\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * var result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nfunction addMilliseconds (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var timestamp = toDate(dirtyDate, dirtyOptions).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount)\n}\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * var result = isValid('2014-02-31')\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\nfunction isValid (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n return !isNaN(date)\n}\n\nvar formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n\n halfAMinute: 'half a minute',\n\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\n\nfunction formatDistance (token, count, options) {\n options = options || {};\n\n var result;\n if (typeof formatDistanceLocale[token] === 'string') {\n result = formatDistanceLocale[token];\n } else if (count === 1) {\n result = formatDistanceLocale[token].one;\n } else {\n result = formatDistanceLocale[token].other.replace('{{count}}', count);\n }\n\n if (options.addSuffix) {\n if (options.comparison > 0) {\n return 'in ' + result\n } else {\n return result + ' ago'\n }\n }\n\n return result\n}\n\nfunction buildFormatLongFn (args) {\n return function (dirtyOptions) {\n var options = dirtyOptions || {};\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format\n }\n}\n\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\n\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\n\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\n\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\n\nvar formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\n\nfunction formatRelative (token, date, baseDate, options) {\n return formatRelativeLocale[token]\n}\n\nfunction buildLocalizeFn (args) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {};\n var width = options.width ? String(options.width) : args.defaultWidth;\n var context = options.context ? String(options.context) : 'standalone';\n\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n valuesArray = args.formattingValues[width] || args.formattingValues[args.defaultFormattingWidth];\n } else {\n valuesArray = args.values[width] || args.values[args.defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n return valuesArray[index]\n }\n}\n\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\n\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\n\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\n\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\n\nfunction ordinalNumber (dirtyNumber, dirtyOptions) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`:\n //\n // var options = dirtyOptions || {}\n // var unit = String(options.unit)\n //\n // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st'\n case 2:\n return number + 'nd'\n case 3:\n return number + 'rd'\n }\n }\n return number + 'th'\n}\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function (quarter) {\n return Number(quarter) - 1\n }\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaulFormattingWidth: 'wide'\n })\n};\n\nfunction buildMatchPatternFn (args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) {\n return null\n }\n var matchedString = matchResult[0];\n\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) {\n return null\n }\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n return {\n value: value,\n rest: string.slice(matchedString.length)\n }\n }\n}\n\nfunction buildMatchFn (args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n var width = options.width;\n\n var matchPattern = (width && args.matchPatterns[width]) || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null\n }\n var matchedString = matchResult[0];\n\n var parsePatterns = (width && args.parsePatterns[width]) || args.parsePatterns[args.defaultParseWidth];\n\n var value;\n if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {\n value = parsePatterns.findIndex(function (pattern) {\n return pattern.test(string)\n });\n } else {\n value = findKey(parsePatterns, function (pattern) {\n return pattern.test(string)\n });\n }\n\n value = args.valueCallback ? args.valueCallback(value) : value;\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n return {\n value: value,\n rest: string.slice(matchedString.length)\n }\n }\n}\n\nfunction findKey (object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key\n }\n }\n}\n\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\n\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\n\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\n\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\n\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\n\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\n\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function (value) {\n return parseInt(value, 10)\n }\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function (index) {\n return index + 1\n }\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale$1 = {\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\n\nvar MILLISECONDS_IN_DAY = 86400000;\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCDayOfYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction startOfUTCISOWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var weekStartsOn = 1;\n\n var date = toDate(dirtyDate, dirtyOptions);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCISOWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var year = date.getUTCFullYear();\n\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear, dirtyOptions);\n\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear, dirtyOptions);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction startOfUTCISOWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var year = getUTCISOWeekYear(dirtyDate, dirtyOptions);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary, dirtyOptions);\n return date\n}\n\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCISOWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var diff = startOfUTCISOWeek(date, dirtyOptions).getTime() - startOfUTCISOWeekYear(date, dirtyOptions).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction startOfUTCWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate, options);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var year = date.getUTCFullYear();\n\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale &&\n locale.options &&\n locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively')\n }\n\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions);\n\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction startOfUTCWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale &&\n locale.options &&\n locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate);\n\n var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, dirtyOptions);\n return date\n}\n\nvar MILLISECONDS_IN_WEEK$1 = 604800000;\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var diff = startOfUTCWeek(date, dirtyOptions).getTime() - startOfUTCWeekYear(date, dirtyOptions).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK$1) + 1\n}\n\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function (date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {width: 'abbreviated'})\n // A, B\n case 'GGGGG':\n return localize.era(era, {width: 'narrow'})\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {width: 'wide'})\n }\n },\n\n // Year\n y: function (date, token, localize, options) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n\n // Two digit year\n if (token === 'yy') {\n var twoDigitYear = year % 100;\n return addLeadingZeros(twoDigitYear, 2)\n }\n\n // Ordinal number\n if (token === 'yo') {\n return localize.ordinalNumber(year, {unit: 'year'})\n }\n\n // Padding\n return addLeadingZeros(year, token.length)\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2)\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {unit: 'year'})\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length)\n },\n\n // ISO week-numbering year\n R: function (date, token, localize, options) {\n var isoWeekYear = getUTCISOWeekYear(date, options);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length)\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token, localize, options) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length)\n },\n\n // Quarter\n Q: function (date, token, localize, options) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter)\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2)\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {unit: 'quarter'})\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {width: 'abbreviated', context: 'formatting'})\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {width: 'narrow', context: 'formatting'})\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize, options) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter)\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2)\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {unit: 'quarter'})\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {width: 'abbreviated', context: 'standalone'})\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {width: 'narrow', context: 'standalone'})\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {width: 'wide', context: 'standalone'})\n }\n },\n\n // Month\n M: function (date, token, localize, options) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return String(month + 1)\n // 01, 02, ..., 12\n case 'MM':\n return addLeadingZeros(month + 1, 2)\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {unit: 'month'})\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {width: 'abbreviated', context: 'formatting'})\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {width: 'narrow', context: 'formatting'})\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize, options) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1)\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2)\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {unit: 'month'})\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {width: 'abbreviated', context: 'standalone'})\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {width: 'narrow', context: 'standalone'})\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {width: 'wide', context: 'standalone'})\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n var week = getUTCWeek(date, options);\n\n if (token === 'wo') {\n return localize.ordinalNumber(week, {unit: 'week'})\n }\n\n return addLeadingZeros(week, token.length)\n },\n\n // ISO week of year\n I: function (date, token, localize, options) {\n var isoWeek = getUTCISOWeek(date, options);\n\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {unit: 'week'})\n }\n\n return addLeadingZeros(isoWeek, token.length)\n },\n\n // Day of the month\n d: function (date, token, localize, options) {\n var dayOfMonth = date.getUTCDate();\n\n if (token === 'do') {\n return localize.ordinalNumber(dayOfMonth, {unit: 'date'})\n }\n\n return addLeadingZeros(dayOfMonth, token.length)\n },\n\n // Day of year\n D: function (date, token, localize, options) {\n var dayOfYear = getUTCDayOfYear(date, options);\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {unit: 'dayOfYear'})\n }\n\n return addLeadingZeros(dayOfYear, token.length)\n },\n\n // Day of week\n E: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {width: 'abbreviated', context: 'formatting'})\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {width: 'short', context: 'formatting'})\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = ((dayOfWeek - options.weekStartsOn + 8) % 7) || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek)\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2)\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {unit: 'day'})\n case 'eee':\n return localize.day(dayOfWeek, {width: 'abbreviated', context: 'formatting'})\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {width: 'short', context: 'formatting'})\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = ((dayOfWeek - options.weekStartsOn + 8) % 7) || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek)\n // Padded numberical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length)\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {unit: 'day'})\n case 'ccc':\n return localize.day(dayOfWeek, {width: 'abbreviated', context: 'standalone'})\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {width: 'narrow', context: 'standalone'})\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {width: 'short', context: 'standalone'})\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {width: 'wide', context: 'standalone'})\n }\n },\n\n // ISO day of week\n i: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek)\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length)\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {unit: 'day'})\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {width: 'abbreviated', context: 'formatting'})\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {width: 'short', context: 'formatting'})\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {width: 'wide', context: 'formatting'})\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = (hours / 12) >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'abbreviated', context: 'formatting'})\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'narrow', context: 'formatting'})\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'wide', context: 'formatting'})\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = (hours / 12) >= 1 ? 'pm' : 'am';\n }\n\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'abbreviated', context: 'formatting'})\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'narrow', context: 'formatting'})\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'wide', context: 'formatting'})\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'abbreviated', context: 'formatting'})\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'narrow', context: 'formatting'})\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize, options) {\n var hours = date.getUTCHours() % 12;\n\n if (hours === 0) {\n hours = 12;\n }\n\n if (token === 'ho') {\n return localize.ordinalNumber(hours, {unit: 'hour'})\n }\n\n return addLeadingZeros(hours, token.length)\n },\n\n // Hour [0-23]\n H: function (date, token, localize, options) {\n var hours = date.getUTCHours();\n\n if (token === 'Ho') {\n return localize.ordinalNumber(hours, {unit: 'hour'})\n }\n\n return addLeadingZeros(hours, token.length)\n },\n\n // Hour [0-11]\n K: function (date, token, localize, options) {\n var hours = date.getUTCHours() % 12;\n\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {unit: 'hour'})\n }\n\n return addLeadingZeros(hours, token.length)\n },\n\n // Hour [1-24]\n k: function (date, token, localize, options) {\n var hours = date.getUTCHours();\n\n if (hours === 0) {\n hours = 24;\n }\n\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {unit: 'hour'})\n }\n\n return addLeadingZeros(hours, token.length)\n },\n\n // Minute\n m: function (date, token, localize, options) {\n var minutes = date.getUTCMinutes();\n\n if (token === 'mo') {\n return localize.ordinalNumber(minutes, {unit: 'minute'})\n }\n\n return addLeadingZeros(minutes, token.length)\n },\n\n // Second\n s: function (date, token, localize, options) {\n var seconds = date.getUTCSeconds();\n\n if (token === 'so') {\n return localize.ordinalNumber(seconds, {unit: 'second'})\n }\n\n return addLeadingZeros(seconds, token.length)\n },\n\n // Fraction of second\n S: function (date, token, localize, options) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, numberOfDigits)\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return 'Z'\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset)\n\n // Hours, minutes and optional seconds without `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX': // Hours and minutes without `:` delimeter\n return formatTimezone(timezoneOffset)\n\n // Hours, minutes and optional seconds with `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimeter\n default:\n return formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset)\n\n // Hours, minutes and optional seconds without `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx': // Hours and minutes without `:` delimeter\n return formatTimezone(timezoneOffset)\n\n // Hours, minutes and optional seconds with `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimeter\n default:\n return formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':')\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':')\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Seconds timestamp\n t: function (date, token, localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length)\n },\n\n // Milliseconds timestamp\n T: function (date, token, localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length)\n }\n};\n\nfunction addLeadingZeros (number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output\n}\n\nfunction formatTimezone (offset, dirtyDelimeter) {\n var delimeter = dirtyDelimeter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimeter + minutes\n}\n\nfunction formatTimezoneWithOptionalMinutes (offset, dirtyDelimeter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2)\n }\n return formatTimezone(offset, dirtyDelimeter)\n}\n\nfunction formatTimezoneShort (offset, dirtyDelimeter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours)\n }\n var delimeter = dirtyDelimeter || '';\n return sign + String(hours) + delimeter + addLeadingZeros(minutes, 2)\n}\n\nfunction dateLongFormatter (pattern, formatLong, options) {\n switch (pattern) {\n case 'P':\n return formatLong.date({width: 'short'})\n case 'PP':\n return formatLong.date({width: 'medium'})\n case 'PPP':\n return formatLong.date({width: 'long'})\n case 'PPPP':\n default:\n return formatLong.date({width: 'full'})\n }\n}\n\nfunction timeLongFormatter (pattern, formatLong, options) {\n switch (pattern) {\n case 'p':\n return formatLong.time({width: 'short'})\n case 'pp':\n return formatLong.time({width: 'medium'})\n case 'ppp':\n return formatLong.time({width: 'long'})\n case 'pppp':\n default:\n return formatLong.time({width: 'full'})\n }\n}\n\nfunction dateTimeLongFormatter (pattern, formatLong, options) {\n var matchResult = pattern.match(/(P+)(p+)?/);\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong)\n }\n\n var dateTimeFormat;\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({width: 'short'});\n break\n case 'PP':\n dateTimeFormat = formatLong.dateTime({width: 'medium'});\n break\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({width: 'long'});\n break\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({width: 'full'});\n break\n }\n\n return dateTimeFormat\n .replace('{{date}}', dateLongFormatter(datePattern, formatLong))\n .replace('{{time}}', timeLongFormatter(timePattern, formatLong))\n}\n\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\n\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * var result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nfunction subMilliseconds (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount, dirtyOptions)\n}\n\nvar protectedTokens = ['D', 'DD', 'YY', 'YYYY'];\n\nfunction isProtectedToken(token) {\n return protectedTokens.indexOf(token) !== -1\n}\n\nfunction throwProtectedError(token) {\n throw new RangeError(\n '`options.awareOfUnicodeTokens` must be set to `true` to use `' +\n token +\n '` token; see: https://git.io/fxCyr'\n )\n}\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nvar escapedStringRegExp = /^'(.*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 8 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 8 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Su | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Su | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | a..aaa | AM, PM | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bbb | AM, PM, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 0001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 05/29/1453 | 7 |\n * | | PP | May 29, 1453 | 7 |\n * | | PPP | May 29th, 1453 | 7 |\n * | | PPPP | Sunday, May 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 05/29/1453, 12:00 AM | 7 |\n * | | PPpp | May 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | May 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Sunday, May 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. These tokens are often confused with others. See: https://git.io/fxCyr\n *\n * @param {Date|String|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n * - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n * - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens (`yy`, `yyyy`).\n * See: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.awareOfUnicodeTokens` must be set to `true` to use `XX` token; see: https://git.io/fxCyr\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(\n * new Date(2014, 1, 11),\n * 'MM/dd/yyyy'\n * )\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(\n * new Date(2014, 6, 2),\n * \"do 'de' MMMM yyyy\",\n * {locale: eoLocale}\n * )\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(\n * new Date(2014, 6, 2, 15),\n * \"h 'o''clock'\"\n * )\n * //=> \"3 o'clock\"\n */\nfunction format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var formatStr = String(dirtyFormatStr);\n var options = dirtyOptions || {};\n\n var locale = options.locale || locale$1;\n\n var localeFirstWeekContainsDate =\n locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError(\n 'firstWeekContainsDate must be between 1 and 7 inclusively'\n )\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property')\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property')\n }\n\n var originalDate = toDate(dirtyDate, options);\n\n if (!isValid(originalDate, options)) {\n return 'Invalid Date'\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset, options);\n\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n\n var result = formatStr\n .match(longFormattingTokensRegExp)\n .map(function(substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, formatterOptions)\n }\n return substring\n })\n .join('')\n .match(formattingTokensRegExp)\n .map(function(substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\"\n }\n\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring)\n }\n\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!options.awareOfUnicodeTokens && isProtectedToken(substring)) {\n throwProtectedError(substring);\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions)\n }\n\n return substring\n })\n .join('');\n\n return result\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\")\n}\n\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|String|Number} date - the date that should be after the other one to return true\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * var result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nfunction isAfter (dirtyDate, dirtyDateToCompare, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var dateToCompare = toDate(dirtyDateToCompare, dirtyOptions);\n return date.getTime() > dateToCompare.getTime()\n}\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|String|Number} date - the date that should be before the other one to return true\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * var result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nfunction isBefore (dirtyDate, dirtyDateToCompare, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var dateToCompare = toDate(dirtyDateToCompare, dirtyOptions);\n return date.getTime() < dateToCompare.getTime()\n}\n\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @param {Date|String|Number} dateLeft - the first date to compare\n * @param {Date|String|Number} dateRight - the second date to compare\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * var result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0)\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nfunction isEqual$1 (dirtyLeftDate, dirtyRightDate, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyLeftDate, dirtyOptions);\n var dateRight = toDate(dirtyRightDate, dirtyOptions);\n return dateLeft.getTime() === dateRight.getTime()\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction setUTCDay (dirtyDate, dirtyDay, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var day = toInteger(dirtyDay);\n\n var currentDay = date.getUTCDay();\n\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n\n date.setUTCDate(date.getUTCDate() + diff);\n return date\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction setUTCWeek (dirtyDate, dirtyWeek, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var week = toInteger(dirtyWeek);\n var diff = getUTCWeek(date, dirtyOptions) - week;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction setUTCISODay (dirtyDate, dirtyDay, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var day = toInteger(dirtyDay);\n\n if (day % 7 === 0) {\n day = day - 7;\n }\n\n var weekStartsOn = 1;\n var date = toDate(dirtyDate, dirtyOptions);\n var currentDay = date.getUTCDay();\n\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n\n date.setUTCDate(date.getUTCDate() + diff);\n return date\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction setUTCISOWeek (dirtyDate, dirtyISOWeek, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getUTCISOWeek(date, dirtyOptions) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date\n}\n\nvar MILLISECONDS_IN_HOUR$1 = 3600000;\nvar MILLISECONDS_IN_MINUTE$2 = 60000;\nvar MILLISECONDS_IN_SECOND = 1000;\n\nvar numericPatterns = {\n month: /^(1[0-2]|0?\\d)/, // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/, // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/, // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/, // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/, // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/, // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/, // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/, // 0 to 12\n minute: /^[0-5]?\\d/, // 0 to 59\n second: /^[0-5]?\\d/, // 0 to 59\n\n singleDigit: /^\\d/, // 0 to 9\n twoDigits: /^\\d{1,2}/, // 0 to 99\n threeDigits: /^\\d{1,3}/, // 0 to 999\n fourDigits: /^\\d{1,4}/, // 0 to 9999\n\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/, // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/, // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/, // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n};\n\nvar timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};\n\nfunction parseNumericPattern (pattern, string, valueCallback) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null\n }\n\n var value = parseInt(matchResult[0], 10);\n\n return {\n value: valueCallback ? valueCallback(value) : value,\n rest: string.slice(matchResult[0].length)\n }\n}\n\nfunction parseTimezonePattern (pattern, string) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null\n }\n\n // Input is 'Z'\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: string.slice(1)\n }\n }\n\n var sign = matchResult[1] === '+' ? 1 : -1;\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n\n return {\n value: sign * (\n hours * MILLISECONDS_IN_HOUR$1 +\n minutes * MILLISECONDS_IN_MINUTE$2 +\n seconds * MILLISECONDS_IN_SECOND\n ),\n rest: string.slice(matchResult[0].length)\n }\n}\n\nfunction parseAnyDigitsSigned (string, valueCallback) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, string, valueCallback)\n}\n\nfunction parseNDigits (n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, string, valueCallback)\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, string, valueCallback)\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, string, valueCallback)\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, string, valueCallback)\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), string, valueCallback)\n }\n}\n\nfunction parseNDigitsSigned (n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, string, valueCallback)\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, string, valueCallback)\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, string, valueCallback)\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, string, valueCallback)\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), string, valueCallback)\n }\n}\n\nfunction dayPeriodEnumToHours (enumValue) {\n switch (enumValue) {\n case 'morning':\n return 4\n case 'evening':\n return 17\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0\n }\n}\n\nfunction normalizeTwoDigitYear (twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0;\n // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n\n var result;\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n var rangeEnd = absCurrentYear + 50;\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n\n return isCommonEra ? result : 1 - result\n}\n\nvar DAYS_IN_MONTH$1 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR$1 = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\n// User for validation\nfunction isLeapYearIndex$1 (year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)\n}\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\nvar parsers = {\n // Era\n G: {\n priority: 140,\n parse: function (string, token, match, options) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(string, {width: 'abbreviated'}) ||\n match.era(string, {width: 'narrow'})\n // A, B\n case 'GGGGG':\n return match.era(string, {width: 'narrow'})\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return match.era(string, {width: 'wide'}) ||\n match.era(string, {width: 'abbreviated'}) ||\n match.era(string, {width: 'narrow'})\n }\n },\n set: function (date, value, options) {\n // Sets year 10 BC if BC, or 10 AC if AC\n date.setUTCFullYear(value === 1 ? 10 : -9, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Year\n y: {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n priority: 130,\n parse: function (string, token, match, options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n }\n };\n\n switch (token) {\n case 'y':\n return parseNDigits(4, string, valueCallback)\n case 'yo':\n return match.ordinalNumber(string, {unit: 'year', valueCallback: valueCallback})\n default:\n return parseNDigits(token.length, string, valueCallback)\n }\n },\n validate: function (date, value, options) {\n return value.isTwoDigitYear || value.year > 0\n },\n set: function (date, value, options) {\n var currentYear = getUTCWeekYear(date, options);\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n\n var year = currentYear > 0 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Local week-numbering year\n Y: {\n priority: 130,\n parse: function (string, token, match, options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n }\n };\n\n switch (token) {\n case 'Y':\n return parseNDigits(4, string, valueCallback)\n case 'Yo':\n return match.ordinalNumber(string, {unit: 'year', valueCallback: valueCallback})\n default:\n return parseNDigits(token.length, string, valueCallback)\n }\n },\n validate: function (date, value, options) {\n return value.isTwoDigitYear || value.year > 0\n },\n set: function (date, value, options) {\n var currentYear = date.getUTCFullYear();\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options)\n }\n\n var year = currentYear > 0 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options)\n }\n },\n\n // ISO week-numbering year\n R: {\n priority: 130,\n parse: function (string, token, match, options) {\n if (token === 'R') {\n return parseNDigitsSigned(4, string)\n }\n\n return parseNDigitsSigned(token.length, string)\n },\n set: function (date, value, options) {\n var firstWeekOfYear = new Date(0);\n firstWeekOfYear.setUTCFullYear(value, 0, 4);\n firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n return startOfUTCISOWeek(firstWeekOfYear)\n }\n },\n\n // Extended year\n u: {\n priority: 130,\n parse: function (string, token, match, options) {\n if (token === 'u') {\n return parseNDigitsSigned(4, string)\n }\n\n return parseNDigitsSigned(token.length, string)\n },\n set: function (date, value, options) {\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Quarter\n Q: {\n priority: 120,\n parse: function (string, token, match, options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ': // 01, 02, 03, 04\n return parseNDigits(token.length, string)\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return match.ordinalNumber(string, {unit: 'quarter'})\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return match.quarter(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.quarter(string, {width: 'narrow', context: 'formatting'})\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return match.quarter(string, {width: 'narrow', context: 'formatting'})\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return match.quarter(string, {width: 'wide', context: 'formatting'}) ||\n match.quarter(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.quarter(string, {width: 'narrow', context: 'formatting'})\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 4\n },\n set: function (date, value, options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Stand-alone quarter\n q: {\n priority: 120,\n parse: function (string, token, match, options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq': // 01, 02, 03, 04\n return parseNDigits(token.length, string)\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return match.ordinalNumber(string, {unit: 'quarter'})\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return match.quarter(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.quarter(string, {width: 'narrow', context: 'standalone'})\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return match.quarter(string, {width: 'narrow', context: 'standalone'})\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return match.quarter(string, {width: 'wide', context: 'standalone'}) ||\n match.quarter(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.quarter(string, {width: 'narrow', context: 'standalone'})\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 4\n },\n set: function (date, value, options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Month\n M: {\n priority: 110,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n return value - 1\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return parseNumericPattern(numericPatterns.month, string, valueCallback)\n // 01, 02, ..., 12\n case 'MM':\n return parseNDigits(2, string, valueCallback)\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return match.ordinalNumber(string, {unit: 'month', valueCallback: valueCallback})\n // Jan, Feb, ..., Dec\n case 'MMM':\n return match.month(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.month(string, {width: 'narrow', context: 'formatting'})\n // J, F, ..., D\n case 'MMMMM':\n return match.month(string, {width: 'narrow', context: 'formatting'})\n // January, February, ..., December\n case 'MMMM':\n default:\n return match.month(string, {width: 'wide', context: 'formatting'}) ||\n match.month(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.month(string, {width: 'narrow', context: 'formatting'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 11\n },\n set: function (date, value, options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Stand-alone month\n L: {\n priority: 110,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n return value - 1\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return parseNumericPattern(numericPatterns.month, string, valueCallback)\n // 01, 02, ..., 12\n case 'LL':\n return parseNDigits(2, string, valueCallback)\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return match.ordinalNumber(string, {unit: 'month', valueCallback: valueCallback})\n // Jan, Feb, ..., Dec\n case 'LLL':\n return match.month(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.month(string, {width: 'narrow', context: 'standalone'})\n // J, F, ..., D\n case 'LLLLL':\n return match.month(string, {width: 'narrow', context: 'standalone'})\n // January, February, ..., December\n case 'LLLL':\n default:\n return match.month(string, {width: 'wide', context: 'standalone'}) ||\n match.month(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.month(string, {width: 'narrow', context: 'standalone'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 11\n },\n set: function (date, value, options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Local week of year\n w: {\n priority: 100,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, string)\n case 'wo':\n return match.ordinalNumber(string, {unit: 'week'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 53\n },\n set: function (date, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options)\n }\n },\n\n // ISO week of year\n I: {\n priority: 100,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, string)\n case 'Io':\n return match.ordinalNumber(string, {unit: 'week'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 53\n },\n set: function (date, value, options) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value, options), options)\n }\n },\n\n // Day of the month\n d: {\n priority: 90,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, string)\n case 'do':\n return match.ordinalNumber(string, {unit: 'date'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex$1(year);\n var month = date.getUTCMonth();\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR$1[month]\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH$1[month]\n }\n },\n set: function (date, value, options) {\n date.setUTCDate(value);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Day of year\n D: {\n priority: 90,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, string)\n case 'Do':\n return match.ordinalNumber(string, {unit: 'date'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex$1(year);\n if (isLeapYear) {\n return value >= 1 && value <= 366\n } else {\n return value >= 1 && value <= 365\n }\n },\n set: function (date, value, options) {\n date.setUTCMonth(0, value);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Day of week\n E: {\n priority: 90,\n parse: function (string, token, match, options) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n // T\n case 'EEEEE':\n return match.day(string, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'EEEEEE':\n return match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n // Tuesday\n case 'EEEE':\n default:\n return match.day(string, {width: 'wide', context: 'formatting'}) ||\n match.day(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 6\n },\n set: function (date, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Local day of week\n e: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays\n };\n\n switch (token) {\n // 3\n case 'e':\n case 'ee': // 03\n return parseNDigits(token.length, string, valueCallback)\n // 3rd\n case 'eo':\n return match.ordinalNumber(string, {unit: 'day', valueCallback: valueCallback})\n // Tue\n case 'eee':\n return match.day(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n // T\n case 'eeeee':\n return match.day(string, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'eeeeee':\n return match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n // Tuesday\n case 'eeee':\n default:\n return match.day(string, {width: 'wide', context: 'formatting'}) ||\n match.day(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 6\n },\n set: function (date, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Stand-alone local day of week\n c: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays\n };\n\n switch (token) {\n // 3\n case 'c':\n case 'cc': // 03\n return parseNDigits(token.length, string, valueCallback)\n // 3rd\n case 'co':\n return match.ordinalNumber(string, {unit: 'day', valueCallback: valueCallback})\n // Tue\n case 'ccc':\n return match.day(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.day(string, {width: 'short', context: 'standalone'}) ||\n match.day(string, {width: 'narrow', context: 'standalone'})\n // T\n case 'ccccc':\n return match.day(string, {width: 'narrow', context: 'standalone'})\n // Tu\n case 'cccccc':\n return match.day(string, {width: 'short', context: 'standalone'}) ||\n match.day(string, {width: 'narrow', context: 'standalone'})\n // Tuesday\n case 'cccc':\n default:\n return match.day(string, {width: 'wide', context: 'standalone'}) ||\n match.day(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.day(string, {width: 'short', context: 'standalone'}) ||\n match.day(string, {width: 'narrow', context: 'standalone'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 6\n },\n set: function (date, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // ISO day of week\n i: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n if (value === 0) {\n return 7\n }\n return value\n };\n\n switch (token) {\n // 2\n case 'i':\n case 'ii': // 02\n return parseNDigits(token.length, string)\n // 2nd\n case 'io':\n return match.ordinalNumber(string, {unit: 'day'})\n // Tue\n case 'iii':\n return match.day(string, {width: 'abbreviated', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'short', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'narrow', context: 'formatting', valueCallback: valueCallback})\n // T\n case 'iiiii':\n return match.day(string, {width: 'narrow', context: 'formatting', valueCallback: valueCallback})\n // Tu\n case 'iiiiii':\n return match.day(string, {width: 'short', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'narrow', context: 'formatting', valueCallback: valueCallback})\n // Tuesday\n case 'iiii':\n default:\n return match.day(string, {width: 'wide', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'abbreviated', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'short', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'narrow', context: 'formatting', valueCallback: valueCallback})\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 7\n },\n set: function (date, value, options) {\n date = setUTCISODay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // AM or PM\n a: {\n priority: 80,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'aaaaa':\n return match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'aaaa':\n default:\n return match.dayPeriod(string, {width: 'wide', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n }\n },\n set: function (date, value, options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date\n }\n },\n\n // AM, PM, midnight\n b: {\n priority: 80,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'bbbbb':\n return match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'bbbb':\n default:\n return match.dayPeriod(string, {width: 'wide', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n }\n },\n set: function (date, value, options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: {\n priority: 80,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'BBBBB':\n return match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'BBBB':\n default:\n return match.dayPeriod(string, {width: 'wide', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n }\n },\n set: function (date, value, options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date\n }\n },\n\n // Hour [1-12]\n h: {\n priority: 70,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, string)\n case 'ho':\n return match.ordinalNumber(string, {unit: 'hour'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 12\n },\n set: function (date, value, options) {\n var isPM = date.getUTCHours() >= 12;\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n return date\n }\n },\n\n // Hour [0-23]\n H: {\n priority: 70,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, string)\n case 'Ho':\n return match.ordinalNumber(string, {unit: 'hour'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 23\n },\n set: function (date, value, options) {\n date.setUTCHours(value, 0, 0, 0);\n return date\n }\n },\n\n // Hour [0-11]\n K: {\n priority: 70,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, string)\n case 'Ko':\n return match.ordinalNumber(string, {unit: 'hour'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 11\n },\n set: function (date, value, options) {\n var isPM = date.getUTCHours() >= 12;\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n return date\n }\n },\n\n // Hour [1-24]\n k: {\n priority: 70,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, string)\n case 'ko':\n return match.ordinalNumber(string, {unit: 'hour'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 24\n },\n set: function (date, value, options) {\n var hours = value <= 24 ? value % 24 : value;\n date.setUTCHours(hours, 0, 0, 0);\n return date\n }\n },\n\n // Minute\n m: {\n priority: 60,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, string)\n case 'mo':\n return match.ordinalNumber(string, {unit: 'minute'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 59\n },\n set: function (date, value, options) {\n date.setUTCMinutes(value, 0, 0);\n return date\n }\n },\n\n // Second\n s: {\n priority: 50,\n parse: function (string, token, match, options) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, string)\n case 'so':\n return match.ordinalNumber(string, {unit: 'second'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 59\n },\n set: function (date, value, options) {\n date.setUTCSeconds(value, 0);\n return date\n }\n },\n\n // Fraction of second\n S: {\n priority: 40,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n return Math.floor(value * Math.pow(10, -token.length + 3))\n };\n return parseNDigits(token.length, string, valueCallback)\n },\n set: function (date, value, options) {\n date.setUTCMilliseconds(value);\n return date\n }\n },\n\n // Timezone (ISO-8601. +00:00 is `'Z'`)\n X: {\n priority: 20,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string)\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, string)\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string)\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string)\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string)\n }\n },\n set: function (date, value, options) {\n return new Date(date.getTime() - value)\n }\n },\n\n // Timezone (ISO-8601)\n x: {\n priority: 20,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string)\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, string)\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string)\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string)\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string)\n }\n },\n set: function (date, value, options) {\n return new Date(date.getTime() - value)\n }\n },\n\n // Seconds timestamp\n t: {\n priority: 10,\n parse: function (string, token, match, options) {\n return parseAnyDigitsSigned(string)\n },\n set: function (date, value, options) {\n return new Date(value * 1000)\n }\n },\n\n // Milliseconds timestamp\n T: {\n priority: 10,\n parse: function (string, token, match, options) {\n return parseAnyDigitsSigned(string)\n },\n set: function (date, value, options) {\n return new Date(value)\n }\n }\n};\n\nvar TIMEZONE_UNIT_PRIORITY = 20;\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp$1 = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\nvar escapedStringRegExp$1 = /^'(.*?)'?$/;\nvar doubleQuoteRegExp$1 = /''/g;\n\nvar notWhitespaceRegExp = /\\S/;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 6 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 6 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Su | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Su | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | 40 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 0001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 20 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 20 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Seconds timestamp | 10 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Milliseconds timestamp | 10 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `baseDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n *\n * 6. These tokens are often confused with others. See: https://git.io/fxCyr\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `baseDate` which works as a context of parsing.\n *\n * `baseDate` must be passed for correct work of the function.\n * If you're not sure which `baseDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `baseDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `baseDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|String|Number} baseDate - defines values missing from the parsed dateString\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n * - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n * - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens (`yy`, `yyyy`).\n * See: https://git.io/fxCyr\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} `options.awareOfUnicodeTokens` must be set to `true` to use `XX` token; see: https://git.io/fxCyr\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse(\n * '02/11/2014',\n * 'MM/dd/yyyy',\n * new Date()\n * )\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse(\n * '28-a de februaro',\n * \"do 'de' MMMM\",\n * new Date(2010, 0, 1),\n * {locale: eo}\n * )\n * //=> Sun Feb 28 2010 00:00:00\n */\nfunction parse(\n dirtyDateString,\n dirtyFormatString,\n dirtyBaseDate,\n dirtyOptions\n) {\n if (arguments.length < 3) {\n throw new TypeError(\n '3 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateString = String(dirtyDateString);\n var formatString = String(dirtyFormatString);\n var options = dirtyOptions || {};\n\n var locale = options.locale || locale$1;\n\n if (!locale.match) {\n throw new RangeError('locale must contain match property')\n }\n\n var localeFirstWeekContainsDate =\n locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError(\n 'firstWeekContainsDate must be between 1 and 7 inclusively'\n )\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyBaseDate, options)\n } else {\n return new Date(NaN)\n }\n }\n\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale\n };\n\n // If timezone isn't specified, it will be set to the system timezone\n var setters = [\n {\n priority: TIMEZONE_UNIT_PRIORITY,\n set: dateToSystemTimezone,\n index: 0\n }\n ];\n\n var i;\n\n var tokens = formatString.match(formattingTokensRegExp$1);\n\n for (i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (!options.awareOfUnicodeTokens && isProtectedToken(token)) {\n throwProtectedError(token);\n }\n\n var firstCharacter = token[0];\n var parser = parsers[firstCharacter];\n if (parser) {\n var parseResult = parser.parse(\n dateString,\n token,\n locale.match,\n subFnOptions\n );\n\n if (!parseResult) {\n return new Date(NaN)\n }\n\n setters.push({\n priority: parser.priority,\n set: parser.set,\n validate: parser.validate,\n value: parseResult.value,\n index: setters.length\n });\n\n dateString = parseResult.rest;\n } else {\n // Replace two single quote characters with one single quote character\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString$1(token);\n }\n\n // Cut token from string, or, if string doesn't match the token, return Invalid Date\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length);\n } else {\n return new Date(NaN)\n }\n }\n }\n\n // Check if the remaining input contains something other than whitespace\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN)\n }\n\n var uniquePrioritySetters = setters\n .map(function(setter) {\n return setter.priority\n })\n .sort(function(a, b) {\n return b - a\n })\n .filter(function(priority, index, array) {\n return array.indexOf(priority) === index\n })\n .map(function(priority) {\n return setters\n .filter(function(setter) {\n return setter.priority === priority\n })\n .reverse()\n })\n .map(function(setterArray) {\n return setterArray[0]\n });\n\n var date = toDate(dirtyBaseDate, options);\n\n if (isNaN(date)) {\n return new Date(NaN)\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/37\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n\n for (i = 0; i < uniquePrioritySetters.length; i++) {\n var setter = uniquePrioritySetters[i];\n\n if (\n setter.validate &&\n !setter.validate(utcDate, setter.value, subFnOptions)\n ) {\n return new Date(NaN)\n }\n\n utcDate = setter.set(utcDate, setter.value, subFnOptions);\n }\n\n return utcDate\n}\n\nfunction dateToSystemTimezone(date) {\n var convertedDate = new Date(0);\n convertedDate.setFullYear(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate()\n );\n convertedDate.setHours(\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds(),\n date.getUTCMilliseconds()\n );\n return convertedDate\n}\n\nfunction cleanEscapedString$1(input) {\n return input.match(escapedStringRegExp$1)[1].replace(doubleQuoteRegExp$1, \"'\")\n}\n\n// \n\n/**\n * Custom parse behavior on top of date-fns parse function.\n */\nfunction parseDate$1 (date, format$1) {\n if (typeof date !== 'string') {\n return isValid(date) ? date : null;\n }\n\n var parsed = parse(date, format$1, new Date());\n\n // if date is not valid or the formatted output after parsing does not match\n // the string value passed in (avoids overflows)\n if (!isValid(parsed) || format(parsed, format$1) !== date) {\n return null;\n }\n\n return parsed;\n}\n\nvar afterValidator = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var targetValue = ref.targetValue;\n var inclusion = ref.inclusion; if ( inclusion === void 0 ) inclusion = false;\n var format = ref.format;\n\n if (typeof format === 'undefined') {\n format = inclusion;\n inclusion = false;\n }\n\n value = parseDate$1(value, format);\n targetValue = parseDate$1(targetValue, format);\n\n // if either is not valid.\n if (!value || !targetValue) {\n return false;\n }\n\n return isAfter(value, targetValue) || (inclusion && isEqual$1(value, targetValue));\n};\n\nvar options = {\n hasTarget: true,\n isDate: true\n};\n\n// required to convert from a list of array values to an object.\nvar paramNames = ['targetValue', 'inclusion', 'format'];\n\nvar after = {\n validate: afterValidator,\n options: options,\n paramNames: paramNames\n};\n\n/**\n * Some Alpha Regex helpers.\n * https://github.com/chriso/validator.js/blob/master/src/lib/alpha.js\n */\n\nvar alpha = {\n en: /^[A-Z]*$/i,\n cs: /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]*$/i,\n da: /^[A-ZÆØÅ]*$/i,\n de: /^[A-ZÄÖÜß]*$/i,\n es: /^[A-ZÁÉÍÑÓÚÜ]*$/i,\n fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,\n fr: /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]*$/i,\n it: /^[A-Z\\xC0-\\xFF]*$/i,\n lt: /^[A-ZĄČĘĖĮŠŲŪŽ]*$/i,\n nl: /^[A-ZÉËÏÓÖÜ]*$/i,\n hu: /^[A-ZÁÉÍÓÖŐÚÜŰ]*$/i,\n pl: /^[A-ZĄĆĘŚŁŃÓŻŹ]*$/i,\n pt: /^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]*$/i,\n ru: /^[А-ЯЁ]*$/i,\n sk: /^[A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ]*$/i,\n sr: /^[A-ZČĆŽŠĐ]*$/i,\n sv: /^[A-ZÅÄÖ]*$/i,\n tr: /^[A-ZÇĞİıÖŞÜ]*$/i,\n uk: /^[А-ЩЬЮЯЄІЇҐ]*$/i,\n ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/,\n az: /^[A-ZÇƏĞİıÖŞÜ]*$/i\n};\n\nvar alphaSpaces = {\n en: /^[A-Z\\s]*$/i,\n cs: /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ\\s]*$/i,\n da: /^[A-ZÆØÅ\\s]*$/i,\n de: /^[A-ZÄÖÜß\\s]*$/i,\n es: /^[A-ZÁÉÍÑÓÚÜ\\s]*$/i,\n fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی\\s]*$/,\n fr: /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ\\s]*$/i,\n it: /^[A-Z\\xC0-\\xFF\\s]*$/i,\n lt: /^[A-ZĄČĘĖĮŠŲŪŽ\\s]*$/i,\n nl: /^[A-ZÉËÏÓÖÜ\\s]*$/i,\n hu: /^[A-ZÁÉÍÓÖŐÚÜŰ\\s]*$/i,\n pl: /^[A-ZĄĆĘŚŁŃÓŻŹ\\s]*$/i,\n pt: /^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ\\s]*$/i,\n ru: /^[А-ЯЁ\\s]*$/i,\n sk: /^[A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ\\s]*$/i,\n sr: /^[A-ZČĆŽŠĐ\\s]*$/i,\n sv: /^[A-ZÅÄÖ\\s]*$/i,\n tr: /^[A-ZÇĞİıÖŞÜ\\s]*$/i,\n uk: /^[А-ЩЬЮЯЄІЇҐ\\s]*$/i,\n ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ\\s]*$/,\n az: /^[A-ZÇƏĞİıÖŞÜ\\s]*$/i\n};\n\nvar alphanumeric = {\n en: /^[0-9A-Z]*$/i,\n cs: /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]*$/i,\n da: /^[0-9A-ZÆØÅ]$/i,\n de: /^[0-9A-ZÄÖÜß]*$/i,\n es: /^[0-9A-ZÁÉÍÑÓÚÜ]*$/i,\n fa: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,\n fr: /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]*$/i,\n it: /^[0-9A-Z\\xC0-\\xFF]*$/i,\n lt: /^[0-9A-ZĄČĘĖĮŠŲŪŽ]*$/i,\n hu: /^[0-9A-ZÁÉÍÓÖŐÚÜŰ]*$/i,\n nl: /^[0-9A-ZÉËÏÓÖÜ]*$/i,\n pl: /^[0-9A-ZĄĆĘŚŁŃÓŻŹ]*$/i,\n pt: /^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]*$/i,\n ru: /^[0-9А-ЯЁ]*$/i,\n sk: /^[0-9A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ]*$/i,\n sr: /^[0-9A-ZČĆŽŠĐ]*$/i,\n sv: /^[0-9A-ZÅÄÖ]*$/i,\n tr: /^[0-9A-ZÇĞİıÖŞÜ]*$/i,\n uk: /^[0-9А-ЩЬЮЯЄІЇҐ]*$/i,\n ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/,\n az: /^[0-9A-ZÇƏĞİıÖŞÜ]*$/i\n};\n\nvar alphaDash = {\n en: /^[0-9A-Z_-]*$/i,\n cs: /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ_-]*$/i,\n da: /^[0-9A-ZÆØÅ_-]*$/i,\n de: /^[0-9A-ZÄÖÜß_-]*$/i,\n es: /^[0-9A-ZÁÉÍÑÓÚÜ_-]*$/i,\n fa: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی_-]*$/,\n fr: /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ_-]*$/i,\n it: /^[0-9A-Z\\xC0-\\xFF_-]*$/i,\n lt: /^[0-9A-ZĄČĘĖĮŠŲŪŽ_-]*$/i,\n nl: /^[0-9A-ZÉËÏÓÖÜ_-]*$/i,\n hu: /^[0-9A-ZÁÉÍÓÖŐÚÜŰ_-]*$/i,\n pl: /^[0-9A-ZĄĆĘŚŁŃÓŻŹ_-]*$/i,\n pt: /^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ_-]*$/i,\n ru: /^[0-9А-ЯЁ_-]*$/i,\n sk: /^[0-9A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ_-]*$/i,\n sr: /^[0-9A-ZČĆŽŠĐ_-]*$/i,\n sv: /^[0-9A-ZÅÄÖ_-]*$/i,\n tr: /^[0-9A-ZÇĞİıÖŞÜ_-]*$/i,\n uk: /^[0-9А-ЩЬЮЯЄІЇҐ_-]*$/i,\n ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ_-]*$/,\n az: /^[0-9A-ZÇƏĞİıÖŞÜ_-]*$/i\n};\n\nvar validate = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var locale = ref.locale;\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate(val, [locale]); });\n }\n\n // Match at least one locale.\n if (! locale) {\n return Object.keys(alpha).some(function (loc) { return alpha[loc].test(value); });\n }\n\n return (alpha[locale] || alpha.en).test(value);\n};\n\nvar paramNames$1 = ['locale'];\n\nvar alpha$1 = {\n validate: validate,\n paramNames: paramNames$1\n};\n\nvar validate$1 = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var locale = ref.locale;\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$1(val, [locale]); });\n }\n\n // Match at least one locale.\n if (! locale) {\n return Object.keys(alphaDash).some(function (loc) { return alphaDash[loc].test(value); });\n }\n\n return (alphaDash[locale] || alphaDash.en).test(value);\n};\n\nvar paramNames$2 = ['locale'];\n\nvar alpha_dash = {\n validate: validate$1,\n paramNames: paramNames$2\n};\n\nvar validate$2 = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var locale = ref.locale;\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$2(val, [locale]); });\n }\n\n // Match at least one locale.\n if (! locale) {\n return Object.keys(alphanumeric).some(function (loc) { return alphanumeric[loc].test(value); });\n }\n\n return (alphanumeric[locale] || alphanumeric.en).test(value);\n};\n\nvar paramNames$3 = ['locale'];\n\nvar alpha_num = {\n validate: validate$2,\n paramNames: paramNames$3\n};\n\nvar validate$3 = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var locale = ref.locale;\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$3(val, [locale]); });\n }\n\n // Match at least one locale.\n if (! locale) {\n return Object.keys(alphaSpaces).some(function (loc) { return alphaSpaces[loc].test(value); });\n }\n\n return (alphaSpaces[locale] || alphaSpaces.en).test(value);\n};\n\nvar paramNames$4 = ['locale'];\n\nvar alpha_spaces = {\n validate: validate$3,\n paramNames: paramNames$4\n};\n\nvar validate$4 = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var targetValue = ref.targetValue;\n var inclusion = ref.inclusion; if ( inclusion === void 0 ) inclusion = false;\n var format = ref.format;\n\n if (typeof format === 'undefined') {\n format = inclusion;\n inclusion = false;\n }\n\n value = parseDate$1(value, format);\n targetValue = parseDate$1(targetValue, format);\n\n // if either is not valid.\n if (!value || !targetValue) {\n return false;\n }\n\n return isBefore(value, targetValue) || (inclusion && isEqual$1(value, targetValue));\n};\n\nvar options$1 = {\n hasTarget: true,\n isDate: true\n};\n\nvar paramNames$5 = ['targetValue', 'inclusion', 'format'];\n\nvar before = {\n validate: validate$4,\n options: options$1,\n paramNames: paramNames$5\n};\n\nvar validate$5 = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var min = ref.min;\n var max = ref.max;\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$5(val, { min: min, max: max }); });\n }\n\n return Number(min) <= value && Number(max) >= value;\n};\n\nvar paramNames$6 = ['min', 'max'];\n\nvar between = {\n validate: validate$5,\n paramNames: paramNames$6\n};\n\nvar validate$6 = function (value, ref) {\n var targetValue = ref.targetValue;\n\n return String(value) === String(targetValue);\n};\nvar options$2 = {\n hasTarget: true\n};\n\nvar paramNames$7 = ['targetValue'];\n\nvar confirmed = {\n validate: validate$6,\n options: options$2,\n paramNames: paramNames$7\n};\n\nfunction unwrapExports (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar assertString_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = assertString;\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction assertString(input) {\n var isString = typeof input === 'string' || input instanceof String;\n\n if (!isString) {\n var invalidType;\n\n if (input === null) {\n invalidType = 'null';\n } else {\n invalidType = _typeof(input);\n\n if (invalidType === 'object' && input.constructor && input.constructor.hasOwnProperty('name')) {\n invalidType = input.constructor.name;\n } else {\n invalidType = \"a \".concat(invalidType);\n }\n }\n\n throw new TypeError(\"Expected string but received \".concat(invalidType, \".\"));\n }\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;\n});\n\nunwrapExports(assertString_1);\n\nvar isCreditCard_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isCreditCard;\n\nvar _assertString = _interopRequireDefault(assertString_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* eslint-disable max-len */\nvar creditCard = /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11}|6[27][0-9]{14})$/;\n/* eslint-enable max-len */\n\nfunction isCreditCard(str) {\n (0, _assertString.default)(str);\n var sanitized = str.replace(/[- ]+/g, '');\n\n if (!creditCard.test(sanitized)) {\n return false;\n }\n\n var sum = 0;\n var digit;\n var tmpNum;\n var shouldDouble;\n\n for (var i = sanitized.length - 1; i >= 0; i--) {\n digit = sanitized.substring(i, i + 1);\n tmpNum = parseInt(digit, 10);\n\n if (shouldDouble) {\n tmpNum *= 2;\n\n if (tmpNum >= 10) {\n sum += tmpNum % 10 + 1;\n } else {\n sum += tmpNum;\n }\n } else {\n sum += tmpNum;\n }\n\n shouldDouble = !shouldDouble;\n }\n\n return !!(sum % 10 === 0 ? sanitized : false);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;\n});\n\nvar isCreditCard = unwrapExports(isCreditCard_1);\n\nvar validate$7 = function (value) { return isCreditCard(String(value)); };\n\nvar credit_card = {\n validate: validate$7\n};\n\nvar validate$8 = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var min = ref.min;\n var max = ref.max;\n var inclusivity = ref.inclusivity; if ( inclusivity === void 0 ) inclusivity = '()';\n var format = ref.format;\n\n if (typeof format === 'undefined') {\n format = inclusivity;\n inclusivity = '()';\n }\n\n var minDate = parseDate$1(String(min), format);\n var maxDate = parseDate$1(String(max), format);\n var dateVal = parseDate$1(String(value), format);\n\n if (!minDate || !maxDate || !dateVal) {\n return false;\n }\n\n if (inclusivity === '()') {\n return isAfter(dateVal, minDate) && isBefore(dateVal, maxDate);\n }\n\n if (inclusivity === '(]') {\n return isAfter(dateVal, minDate) && (isEqual$1(dateVal, maxDate) || isBefore(dateVal, maxDate));\n }\n\n if (inclusivity === '[)') {\n return isBefore(dateVal, maxDate) && (isEqual$1(dateVal, minDate) || isAfter(dateVal, minDate));\n }\n\n return isEqual$1(dateVal, maxDate) || isEqual$1(dateVal, minDate) ||\n (isBefore(dateVal, maxDate) && isAfter(dateVal, minDate));\n};\n\nvar options$3 = {\n isDate: true\n};\n\nvar paramNames$8 = ['min', 'max', 'inclusivity', 'format'];\n\nvar date_between = {\n validate: validate$8,\n options: options$3,\n paramNames: paramNames$8\n};\n\nvar validate$9 = function (value, ref) {\n var format = ref.format;\n\n return !!parseDate$1(value, format);\n};\n\nvar options$4 = {\n isDate: true\n};\n\nvar paramNames$9 = ['format'];\n\nvar date_format = {\n validate: validate$9,\n options: options$4,\n paramNames: paramNames$9\n};\n\nvar validate$a = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var decimals = ref.decimals; if ( decimals === void 0 ) decimals = '*';\n var separator = ref.separator; if ( separator === void 0 ) separator = '.';\n\n if (isNullOrUndefined(value) || value === '') {\n return false;\n }\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$a(val, { decimals: decimals, separator: separator }); });\n }\n\n // if is 0.\n if (Number(decimals) === 0) {\n return /^-?\\d*$/.test(value);\n }\n\n var regexPart = decimals === '*' ? '+' : (\"{1,\" + decimals + \"}\");\n var regex = new RegExp((\"^[-+]?\\\\d*(\\\\\" + separator + \"\\\\d\" + regexPart + \")?([eE]{1}[-]?\\\\d+)?$\"));\n\n if (! regex.test(value)) {\n return false;\n }\n\n var parsedValue = parseFloat(value);\n\n // eslint-disable-next-line\n return parsedValue === parsedValue;\n};\n\nvar paramNames$a = ['decimals', 'separator'];\n\nvar decimal = {\n validate: validate$a,\n paramNames: paramNames$a\n};\n\nvar validate$b = function (value, ref) {\n var length = ref[0];\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$b(val, [length]); });\n }\n var strVal = String(value);\n\n return /^[0-9]*$/.test(strVal) && strVal.length === Number(length);\n};\n\nvar digits = {\n validate: validate$b\n};\n\nvar imageRegex = /\\.(jpg|svg|jpeg|png|bmp|gif)$/i;\n\nvar validateImage = function (file, width, height) {\n var URL = window.URL || window.webkitURL;\n return new Promise(function (resolve) {\n var image = new Image();\n image.onerror = function () { return resolve({ valid: false }); };\n image.onload = function () { return resolve({\n valid: image.width === Number(width) && image.height === Number(height)\n }); };\n\n image.src = URL.createObjectURL(file);\n });\n};\n\nvar validate$c = function (files, ref) {\n var width = ref[0];\n var height = ref[1];\n\n var images = ensureArray(files).filter(function (file) { return imageRegex.test(file.name); });\n if (images.length === 0) {\n return false;\n }\n return Promise.all(images.map(function (image) { return validateImage(image, width, height); }));\n};\n\nvar dimensions = {\n validate: validate$c\n};\n\nvar merge_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = merge;\n\nfunction merge() {\n var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var defaults = arguments.length > 1 ? arguments[1] : undefined;\n\n for (var key in defaults) {\n if (typeof obj[key] === 'undefined') {\n obj[key] = defaults[key];\n }\n }\n\n return obj;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;\n});\n\nunwrapExports(merge_1);\n\nvar isByteLength_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isByteLength;\n\nvar _assertString = _interopRequireDefault(assertString_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-disable prefer-rest-params */\nfunction isByteLength(str, options) {\n (0, _assertString.default)(str);\n var min;\n var max;\n\n if (_typeof(options) === 'object') {\n min = options.min || 0;\n max = options.max;\n } else {\n // backwards compatibility: isByteLength(str, min [, max])\n min = arguments[1];\n max = arguments[2];\n }\n\n var len = encodeURI(str).split(/%..|./).length - 1;\n return len >= min && (typeof max === 'undefined' || len <= max);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;\n});\n\nunwrapExports(isByteLength_1);\n\nvar isFQDN_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isFQDN;\n\nvar _assertString = _interopRequireDefault(assertString_1);\n\nvar _merge = _interopRequireDefault(merge_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar default_fqdn_options = {\n require_tld: true,\n allow_underscores: false,\n allow_trailing_dot: false\n};\n\nfunction isFQDN(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, default_fqdn_options);\n /* Remove the optional trailing dot before checking validity */\n\n if (options.allow_trailing_dot && str[str.length - 1] === '.') {\n str = str.substring(0, str.length - 1);\n }\n\n var parts = str.split('.');\n\n for (var i = 0; i < parts.length; i++) {\n if (parts[i].length > 63) {\n return false;\n }\n }\n\n if (options.require_tld) {\n var tld = parts.pop();\n\n if (!parts.length || !/^([a-z\\u00a1-\\uffff]{2,}|xn[a-z0-9-]{2,})$/i.test(tld)) {\n return false;\n } // disallow spaces\n\n\n if (/[\\s\\u2002-\\u200B\\u202F\\u205F\\u3000\\uFEFF\\uDB40\\uDC20]/.test(tld)) {\n return false;\n }\n }\n\n for (var part, _i = 0; _i < parts.length; _i++) {\n part = parts[_i];\n\n if (options.allow_underscores) {\n part = part.replace(/_/g, '');\n }\n\n if (!/^[a-z\\u00a1-\\uffff0-9-]+$/i.test(part)) {\n return false;\n } // disallow full-width chars\n\n\n if (/[\\uff01-\\uff5e]/.test(part)) {\n return false;\n }\n\n if (part[0] === '-' || part[part.length - 1] === '-') {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;\n});\n\nvar isFQDN = unwrapExports(isFQDN_1);\n\nvar isIP_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isIP;\n\nvar _assertString = _interopRequireDefault(assertString_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ipv4Maybe = /^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$/;\nvar ipv6Block = /^[0-9A-F]{1,4}$/i;\n\nfunction isIP(str) {\n var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n (0, _assertString.default)(str);\n version = String(version);\n\n if (!version) {\n return isIP(str, 4) || isIP(str, 6);\n } else if (version === '4') {\n if (!ipv4Maybe.test(str)) {\n return false;\n }\n\n var parts = str.split('.').sort(function (a, b) {\n return a - b;\n });\n return parts[3] <= 255;\n } else if (version === '6') {\n var blocks = str.split(':');\n var foundOmissionBlock = false; // marker to indicate ::\n // At least some OS accept the last 32 bits of an IPv6 address\n // (i.e. 2 of the blocks) in IPv4 notation, and RFC 3493 says\n // that '::ffff:a.b.c.d' is valid for IPv4-mapped IPv6 addresses,\n // and '::a.b.c.d' is deprecated, but also valid.\n\n var foundIPv4TransitionBlock = isIP(blocks[blocks.length - 1], 4);\n var expectedNumberOfBlocks = foundIPv4TransitionBlock ? 7 : 8;\n\n if (blocks.length > expectedNumberOfBlocks) {\n return false;\n } // initial or final ::\n\n\n if (str === '::') {\n return true;\n } else if (str.substr(0, 2) === '::') {\n blocks.shift();\n blocks.shift();\n foundOmissionBlock = true;\n } else if (str.substr(str.length - 2) === '::') {\n blocks.pop();\n blocks.pop();\n foundOmissionBlock = true;\n }\n\n for (var i = 0; i < blocks.length; ++i) {\n // test for a :: which can not be at the string start/end\n // since those cases have been handled above\n if (blocks[i] === '' && i > 0 && i < blocks.length - 1) {\n if (foundOmissionBlock) {\n return false; // multiple :: in address\n }\n\n foundOmissionBlock = true;\n } else if (foundIPv4TransitionBlock && i === blocks.length - 1) ; else if (!ipv6Block.test(blocks[i])) {\n return false;\n }\n }\n\n if (foundOmissionBlock) {\n return blocks.length >= 1;\n }\n\n return blocks.length === expectedNumberOfBlocks;\n }\n\n return false;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;\n});\n\nvar isIP = unwrapExports(isIP_1);\n\nvar isEmail_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isEmail;\n\nvar _assertString = _interopRequireDefault(assertString_1);\n\nvar _merge = _interopRequireDefault(merge_1);\n\nvar _isByteLength = _interopRequireDefault(isByteLength_1);\n\nvar _isFQDN = _interopRequireDefault(isFQDN_1);\n\nvar _isIP = _interopRequireDefault(isIP_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar default_email_options = {\n allow_display_name: false,\n require_display_name: false,\n allow_utf8_local_part: true,\n require_tld: true\n};\n/* eslint-disable max-len */\n\n/* eslint-disable no-control-regex */\n\nvar displayName = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~\\.\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~\\,\\.\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF\\s]*<(.+)>$/i;\nvar emailUserPart = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]+$/i;\nvar gmailUserPart = /^[a-z\\d]+$/;\nvar quotedEmailUser = /^([\\s\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\x21\\x23-\\x5b\\x5d-\\x7e]|(\\\\[\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]))*$/i;\nvar emailUserUtf8Part = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+$/i;\nvar quotedEmailUserUtf8 = /^([\\s\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\x21\\x23-\\x5b\\x5d-\\x7e\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]|(\\\\[\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))*$/i;\n/* eslint-enable max-len */\n\n/* eslint-enable no-control-regex */\n\nfunction isEmail(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, default_email_options);\n\n if (options.require_display_name || options.allow_display_name) {\n var display_email = str.match(displayName);\n\n if (display_email) {\n str = display_email[1];\n } else if (options.require_display_name) {\n return false;\n }\n }\n\n var parts = str.split('@');\n var domain = parts.pop();\n var user = parts.join('@');\n var lower_domain = domain.toLowerCase();\n\n if (options.domain_specific_validation && (lower_domain === 'gmail.com' || lower_domain === 'googlemail.com')) {\n /*\n Previously we removed dots for gmail addresses before validating.\n This was removed because it allows `multiple..dots@gmail.com`\n to be reported as valid, but it is not.\n Gmail only normalizes single dots, removing them from here is pointless,\n should be done in normalizeEmail\n */\n user = user.toLowerCase(); // Removing sub-address from username before gmail validation\n\n var username = user.split('+')[0]; // Dots are not included in gmail length restriction\n\n if (!(0, _isByteLength.default)(username.replace('.', ''), {\n min: 6,\n max: 30\n })) {\n return false;\n }\n\n var _user_parts = username.split('.');\n\n for (var i = 0; i < _user_parts.length; i++) {\n if (!gmailUserPart.test(_user_parts[i])) {\n return false;\n }\n }\n }\n\n if (!(0, _isByteLength.default)(user, {\n max: 64\n }) || !(0, _isByteLength.default)(domain, {\n max: 254\n })) {\n return false;\n }\n\n if (!(0, _isFQDN.default)(domain, {\n require_tld: options.require_tld\n })) {\n if (!options.allow_ip_domain) {\n return false;\n }\n\n if (!(0, _isIP.default)(domain)) {\n if (!domain.startsWith('[') || !domain.endsWith(']')) {\n return false;\n }\n\n var noBracketdomain = domain.substr(1, domain.length - 2);\n\n if (noBracketdomain.length === 0 || !(0, _isIP.default)(noBracketdomain)) {\n return false;\n }\n }\n }\n\n if (user[0] === '\"') {\n user = user.slice(1, user.length - 1);\n return options.allow_utf8_local_part ? quotedEmailUserUtf8.test(user) : quotedEmailUser.test(user);\n }\n\n var pattern = options.allow_utf8_local_part ? emailUserUtf8Part : emailUserPart;\n var user_parts = user.split('.');\n\n for (var _i = 0; _i < user_parts.length; _i++) {\n if (!pattern.test(user_parts[_i])) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;\n});\n\nvar isEmail = unwrapExports(isEmail_1);\n\nfunction objectWithoutProperties (obj, exclude) { var target = {}; for (var k in obj) if (Object.prototype.hasOwnProperty.call(obj, k) && exclude.indexOf(k) === -1) target[k] = obj[k]; return target; }\n\nvar validate$d = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var multiple = ref.multiple; if ( multiple === void 0 ) multiple = false;\n var rest = objectWithoutProperties( ref, [\"multiple\"] );\n var options = rest;\n\n if (multiple && !Array.isArray(value)) {\n value = String(value).split(',').map(function (emailStr) { return emailStr.trim(); });\n }\n\n var validatorOptions = assign({}, options);\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return isEmail(String(val), validatorOptions); });\n }\n\n return isEmail(String(value), validatorOptions);\n};\n\nvar email = {\n validate: validate$d\n};\n\nvar validate$e = function (value, options) {\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$e(val, options); });\n }\n\n return toArray(options).some(function (item) {\n // eslint-disable-next-line\n return item == value;\n });\n};\n\nvar included = {\n validate: validate$e\n};\n\nvar validate$f = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return !validate$e.apply(void 0, args);\n};\n\nvar excluded = {\n validate: validate$f\n};\n\nvar validate$g = function (files, extensions) {\n var regex = new RegExp((\".(\" + (extensions.join('|')) + \")$\"), 'i');\n return ensureArray(files).every(function (file) { return regex.test(file.name); });\n};\n\nvar ext = {\n validate: validate$g\n};\n\nvar validate$h = function (files) { return (Array.isArray(files) ? files : [files]).every(function (file) { return /\\.(jpg|svg|jpeg|png|bmp|gif)$/i.test(file.name); }); };\n\nvar image = {\n validate: validate$h\n};\n\nvar validate$i = function (value) {\n if (Array.isArray(value)) {\n return value.every(function (val) { return /^-?[0-9]+$/.test(String(val)); });\n }\n\n return /^-?[0-9]+$/.test(String(value));\n};\n\nvar integer = {\n validate: validate$i\n};\n\nvar validate$j = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var version = ref.version; if ( version === void 0 ) version = 4;\n\n if (isNullOrUndefined(value)) {\n value = '';\n }\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return isIP(val, version); });\n }\n\n return isIP(value, version);\n};\n\nvar paramNames$b = ['version'];\n\nvar ip = {\n validate: validate$j,\n paramNames: paramNames$b\n};\n\nvar validate$k = function (value) {\n if (isNullOrUndefined(value)) {\n value = '';\n }\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return (isIP(val, '') || isFQDN(val)); });\n }\n\n return isIP(value, '') || isFQDN(value);\n};\n\nvar ip_or_fqdn = {\n validate: validate$k\n};\n\nvar validate$l = function (value, ref) {\n if ( ref === void 0 ) ref = [];\n var other = ref[0];\n\n return value === other;\n};\n\nvar is = {\n validate: validate$l\n};\n\nvar validate$m = function (value, ref) {\n if ( ref === void 0 ) ref = [];\n var other = ref[0];\n\n return value !== other;\n};\n\nvar is_not = {\n validate: validate$m\n};\n\n/**\n * @param {Array|String} value\n * @param {Number} length\n * @param {Number} max\n */\nvar compare = function (value, length, max) {\n if (max === undefined) {\n return value.length === length;\n }\n\n // cast to number.\n max = Number(max);\n\n return value.length >= length && value.length <= max;\n};\n\nvar validate$n = function (value, ref) {\n var length = ref[0];\n var max = ref[1]; if ( max === void 0 ) max = undefined;\n\n if (isNullOrUndefined(value)) {\n return false;\n }\n\n length = Number(length);\n if (typeof value === 'number') {\n value = String(value);\n }\n\n if (!value.length) {\n value = toArray(value);\n }\n\n return compare(value, length, max);\n};\n\nvar length = {\n validate: validate$n\n};\n\nvar validate$o = function (value, ref) {\n var length = ref[0];\n\n if (isNullOrUndefined(value)) {\n return length >= 0;\n }\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$o(val, [length]); });\n }\n\n return String(value).length <= length;\n};\n\nvar max = {\n validate: validate$o\n};\n\nvar validate$p = function (value, ref) {\n var max = ref[0];\n\n if (isNullOrUndefined(value) || value === '') {\n return false;\n }\n\n if (Array.isArray(value)) {\n return value.length > 0 && value.every(function (val) { return validate$p(val, [max]); });\n }\n\n return Number(value) <= max;\n};\n\nvar max_value = {\n validate: validate$p\n};\n\nvar validate$q = function (files, mimes) {\n var regex = new RegExp(((mimes.join('|').replace('*', '.+')) + \"$\"), 'i');\n return ensureArray(files).every(function (file) { return regex.test(file.type); });\n};\n\nvar mimes = {\n validate: validate$q\n};\n\nvar validate$r = function (value, ref) {\n var length = ref[0];\n\n if (isNullOrUndefined(value)) {\n return false;\n }\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$r(val, [length]); });\n }\n\n return String(value).length >= length;\n};\n\nvar min = {\n validate: validate$r\n};\n\nvar validate$s = function (value, ref) {\n var min = ref[0];\n\n if (isNullOrUndefined(value) || value === '') {\n return false;\n }\n\n if (Array.isArray(value)) {\n return value.length > 0 && value.every(function (val) { return validate$s(val, [min]); });\n }\n\n return Number(value) >= min;\n};\n\nvar min_value = {\n validate: validate$s\n};\n\nvar ar = /^[٠١٢٣٤٥٦٧٨٩]+$/;\nvar en = /^[0-9]+$/;\n\nvar validate$t = function (value) {\n var testValue = function (val) {\n var strValue = String(val);\n\n return en.test(strValue) || ar.test(strValue);\n };\n\n if (Array.isArray(value)) {\n return value.every(testValue);\n }\n\n return testValue(value);\n};\n\nvar numeric = {\n validate: validate$t\n};\n\nvar validate$u = function (value, ref) {\n var expression = ref.expression;\n\n if (typeof expression === 'string') {\n expression = new RegExp(expression);\n }\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$u(val, { expression: expression }); });\n }\n\n return expression.test(String(value));\n};\n\nvar paramNames$c = ['expression'];\n\nvar regex = {\n validate: validate$u,\n paramNames: paramNames$c\n};\n\nvar validate$v = function (value, ref) {\n if ( ref === void 0 ) ref = [];\n var invalidateFalse = ref[0]; if ( invalidateFalse === void 0 ) invalidateFalse = false;\n\n if (isNullOrUndefined(value) || isEmptyArray(value)) {\n return false;\n }\n\n // incase a field considers `false` as an empty value like checkboxes.\n if (value === false && invalidateFalse) {\n return false;\n }\n\n return !!String(value).trim().length;\n};\n\nvar required = {\n validate: validate$v\n};\n\nvar validate$w = function (value, ref) {\n if ( ref === void 0 ) ref = [];\n var otherFieldVal = ref[0];\n var possibleVals = ref.slice(1);\n\n var required = possibleVals.includes(String(otherFieldVal).trim());\n\n if (!required) {\n return {\n valid: true,\n data: {\n required: required\n }\n };\n }\n\n var invalid = (isEmptyArray(value) || [false, null, undefined].includes(value));\n\n invalid = invalid || !String(value).trim().length;\n\n return {\n valid: !invalid,\n data: {\n required: required\n }\n };\n};\n\nvar options$5 = {\n hasTarget: true,\n computesRequired: true\n};\n\nvar required_if = {\n validate: validate$w,\n options: options$5\n};\n\nvar validate$x = function (files, ref) {\n var size = ref[0];\n\n if (isNaN(size)) {\n return false;\n }\n var nSize = Number(size) * 1024;\n return ensureArray(files).every(function (file) { return file.size <= nSize; });\n};\n\nvar size = {\n validate: validate$x\n};\n\nvar isURL_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isURL;\n\nvar _assertString = _interopRequireDefault(assertString_1);\n\nvar _isFQDN = _interopRequireDefault(isFQDN_1);\n\nvar _isIP = _interopRequireDefault(isIP_1);\n\nvar _merge = _interopRequireDefault(merge_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar default_url_options = {\n protocols: ['http', 'https', 'ftp'],\n require_tld: true,\n require_protocol: false,\n require_host: true,\n require_valid_protocol: true,\n allow_underscores: false,\n allow_trailing_dot: false,\n allow_protocol_relative_urls: false\n};\nvar wrapped_ipv6 = /^\\[([^\\]]+)\\](?::([0-9]+))?$/;\n\nfunction isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n}\n\nfunction checkHost(host, matches) {\n for (var i = 0; i < matches.length; i++) {\n var match = matches[i];\n\n if (host === match || isRegExp(match) && match.test(host)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction isURL(url, options) {\n (0, _assertString.default)(url);\n\n if (!url || url.length >= 2083 || /[\\s<>]/.test(url)) {\n return false;\n }\n\n if (url.indexOf('mailto:') === 0) {\n return false;\n }\n\n options = (0, _merge.default)(options, default_url_options);\n var protocol, auth, host, hostname, port, port_str, split, ipv6;\n split = url.split('#');\n url = split.shift();\n split = url.split('?');\n url = split.shift();\n split = url.split('://');\n\n if (split.length > 1) {\n protocol = split.shift().toLowerCase();\n\n if (options.require_valid_protocol && options.protocols.indexOf(protocol) === -1) {\n return false;\n }\n } else if (options.require_protocol) {\n return false;\n } else if (url.substr(0, 2) === '//') {\n if (!options.allow_protocol_relative_urls) {\n return false;\n }\n\n split[0] = url.substr(2);\n }\n\n url = split.join('://');\n\n if (url === '') {\n return false;\n }\n\n split = url.split('/');\n url = split.shift();\n\n if (url === '' && !options.require_host) {\n return true;\n }\n\n split = url.split('@');\n\n if (split.length > 1) {\n if (options.disallow_auth) {\n return false;\n }\n\n auth = split.shift();\n\n if (auth.indexOf(':') >= 0 && auth.split(':').length > 2) {\n return false;\n }\n }\n\n hostname = split.join('@');\n port_str = null;\n ipv6 = null;\n var ipv6_match = hostname.match(wrapped_ipv6);\n\n if (ipv6_match) {\n host = '';\n ipv6 = ipv6_match[1];\n port_str = ipv6_match[2] || null;\n } else {\n split = hostname.split(':');\n host = split.shift();\n\n if (split.length) {\n port_str = split.join(':');\n }\n }\n\n if (port_str !== null) {\n port = parseInt(port_str, 10);\n\n if (!/^[0-9]+$/.test(port_str) || port <= 0 || port > 65535) {\n return false;\n }\n }\n\n if (!(0, _isIP.default)(host) && !(0, _isFQDN.default)(host, options) && (!ipv6 || !(0, _isIP.default)(ipv6, 6))) {\n return false;\n }\n\n host = host || ipv6;\n\n if (options.host_whitelist && !checkHost(host, options.host_whitelist)) {\n return false;\n }\n\n if (options.host_blacklist && checkHost(host, options.host_blacklist)) {\n return false;\n }\n\n return true;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;\n});\n\nvar isURL = unwrapExports(isURL_1);\n\nvar validate$y = function (value, options) {\n if ( options === void 0 ) options = {};\n\n if (isNullOrUndefined(value)) {\n value = '';\n }\n\n var validatorOptions = assign({}, options);\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return isURL(val, validatorOptions); });\n }\n\n return isURL(value, validatorOptions);\n};\n\nvar url = {\n validate: validate$y\n};\n\n/* eslint-disable camelcase */\n\nvar Rules = /*#__PURE__*/Object.freeze({\n after: after,\n alpha_dash: alpha_dash,\n alpha_num: alpha_num,\n alpha_spaces: alpha_spaces,\n alpha: alpha$1,\n before: before,\n between: between,\n confirmed: confirmed,\n credit_card: credit_card,\n date_between: date_between,\n date_format: date_format,\n decimal: decimal,\n digits: digits,\n dimensions: dimensions,\n email: email,\n ext: ext,\n image: image,\n included: included,\n integer: integer,\n length: length,\n ip: ip,\n ip_or_fqdn: ip_or_fqdn,\n is_not: is_not,\n is: is,\n max: max,\n max_value: max_value,\n mimes: mimes,\n min: min,\n min_value: min_value,\n excluded: excluded,\n numeric: numeric,\n regex: regex,\n required: required,\n required_if: required_if,\n size: size,\n url: url\n});\n\n// \n\nvar normalize = function (fields) {\n if (Array.isArray(fields)) {\n return fields.reduce(function (prev, curr) {\n if (includes(curr, '.')) {\n prev[curr.split('.')[1]] = curr;\n } else {\n prev[curr] = curr;\n }\n\n return prev;\n }, {});\n }\n\n return fields;\n};\n\n// Combines two flags using either AND or OR depending on the flag type.\nvar combine = function (lhs, rhs) {\n var mapper = {\n pristine: function (lhs, rhs) { return lhs && rhs; },\n dirty: function (lhs, rhs) { return lhs || rhs; },\n touched: function (lhs, rhs) { return lhs || rhs; },\n untouched: function (lhs, rhs) { return lhs && rhs; },\n valid: function (lhs, rhs) { return lhs && rhs; },\n invalid: function (lhs, rhs) { return lhs || rhs; },\n pending: function (lhs, rhs) { return lhs || rhs; },\n required: function (lhs, rhs) { return lhs || rhs; },\n validated: function (lhs, rhs) { return lhs && rhs; }\n };\n\n return Object.keys(mapper).reduce(function (flags, flag) {\n flags[flag] = mapper[flag](lhs[flag], rhs[flag]);\n\n return flags;\n }, {});\n};\n\nvar mapScope = function (scope, deep) {\n if ( deep === void 0 ) deep = true;\n\n return Object.keys(scope).reduce(function (flags, field) {\n if (!flags) {\n flags = assign({}, scope[field]);\n return flags;\n }\n\n // scope.\n var isScope = field.indexOf('$') === 0;\n if (deep && isScope) {\n return combine(mapScope(scope[field]), flags);\n } else if (!deep && isScope) {\n return flags;\n }\n\n flags = combine(flags, scope[field]);\n\n return flags;\n }, null);\n};\n\n/**\n * Maps fields to computed functions.\n */\nvar mapFields = function (fields) {\n if (!fields) {\n return function () {\n return mapScope(this.$validator.flags);\n };\n }\n\n var normalized = normalize(fields);\n return Object.keys(normalized).reduce(function (prev, curr) {\n var field = normalized[curr];\n prev[curr] = function mappedField () {\n // if field exists\n if (this.$validator.flags[field]) {\n return this.$validator.flags[field];\n }\n\n // scopeless fields were selected.\n if (normalized[curr] === '*') {\n return mapScope(this.$validator.flags, false);\n }\n\n // if it has a scope defined\n var index = field.indexOf('.');\n if (index <= 0) {\n return {};\n }\n\n var ref = field.split('.');\n var scope = ref[0];\n var name = ref.slice(1);\n\n scope = this.$validator.flags[(\"$\" + scope)];\n name = name.join('.');\n\n // an entire scope was selected: scope.*\n if (name === '*' && scope) {\n return mapScope(scope);\n }\n\n if (scope && scope[name]) {\n return scope[name];\n }\n\n return {};\n };\n\n return prev;\n }, {});\n};\n\nvar $validator = null;\n\nvar PROVIDER_COUNTER = 0;\n\nvar ValidationProvider = {\n $__veeInject: false,\n inject: {\n $_veeObserver: {\n from: '$_veeObserver',\n default: function default$1 () {\n if (!this.$vnode.context.$_veeObserver) {\n this.$vnode.context.$_veeObserver = createObserver();\n }\n\n return this.$vnode.context.$_veeObserver;\n }\n }\n },\n props: {\n vid: {\n type: [String, Number],\n default: function () {\n PROVIDER_COUNTER++;\n\n return (\"_vee_\" + PROVIDER_COUNTER);\n }\n },\n name: {\n type: String,\n default: null\n },\n mode: {\n type: [String, Function],\n default: function () {\n return getConfig().mode;\n }\n },\n events: {\n type: Array,\n validate: function () {\n /* istanbul ignore next */\n if (process.env.NODE_ENV !== 'production') {\n warn('events prop and config will be deprecated in future version please use the interaction modes instead');\n }\n\n return true;\n },\n default: function () {\n var events = getConfig().events;\n if (typeof events === 'string') {\n return events.split('|');\n }\n\n return events;\n }\n },\n rules: {\n type: [Object, String],\n default: null\n },\n immediate: {\n type: Boolean,\n default: false\n },\n persist: {\n type: Boolean,\n default: false\n },\n bails: {\n type: Boolean,\n default: function () { return getConfig().fastExit; }\n },\n debounce: {\n type: Number,\n default: function () { return getConfig().delay || 0; }\n },\n tag: {\n type: String,\n default: 'span'\n },\n slim: {\n type: Boolean,\n default: false\n }\n },\n watch: {\n rules: {\n deep: true,\n handler: function handler (val, oldVal) {\n this._needsValidation = !isEqual(val, oldVal);\n }\n }\n },\n data: function () { return ({\n messages: [],\n value: undefined,\n initialized: false,\n initialValue: undefined,\n flags: createFlags(),\n failedRules: {},\n forceRequired: false,\n isDeactivated: false,\n id: null\n }); },\n computed: {\n isValid: function isValid () {\n return this.flags.valid;\n },\n fieldDeps: function fieldDeps () {\n var this$1 = this;\n\n var rules = normalizeRules(this.rules);\n\n return Object.keys(rules).filter(RuleContainer.isTargetRule).map(function (rule) {\n var depName = rules[rule][0];\n watchCrossFieldDep(this$1, depName);\n\n return depName;\n });\n },\n normalizedEvents: function normalizedEvents () {\n var this$1 = this;\n\n var ref = computeModeSetting(this);\n var on = ref.on;\n\n return normalizeEvents(on || this.events || []).map(function (e) {\n if (e === 'input') {\n return this$1._inputEventName;\n }\n\n return e;\n });\n },\n isRequired: function isRequired () {\n var rules = normalizeRules(this.rules);\n var forceRequired = this.forceRequired;\n\n var isRequired = rules.required || forceRequired;\n this.flags.required = isRequired;\n\n return isRequired;\n },\n classes: function classes () {\n var this$1 = this;\n\n var names = getConfig().classNames;\n return Object.keys(this.flags).reduce(function (classes, flag) {\n var className = (names && names[flag]) || flag;\n if (isNullOrUndefined(this$1.flags[flag])) {\n return classes;\n }\n\n if (className) {\n classes[className] = this$1.flags[flag];\n }\n\n return classes;\n }, {});\n }\n },\n render: function render (h) {\n var this$1 = this;\n\n this.registerField();\n var ctx = createValidationCtx(this);\n\n // Gracefully handle non-existent scoped slots.\n var slot = this.$scopedSlots.default;\n /* istanbul ignore next */\n if (!isCallable(slot)) {\n if (process.env.NODE_ENV !== 'production') {\n warn('ValidationProvider expects a scoped slot. Did you forget to add \"v-slot\" to your slot?');\n }\n\n return h(this.tag, this.$slots.default);\n }\n\n var nodes = slot(ctx);\n // Handle single-root slot.\n extractVNodes(nodes).forEach(function (input) {\n addListeners.call(this$1, input);\n });\n\n return this.slim ? createRenderless(h, nodes) : h(this.tag, nodes);\n },\n beforeDestroy: function beforeDestroy () {\n // cleanup reference.\n this.$_veeObserver.unsubscribe(this);\n },\n activated: function activated () {\n this.$_veeObserver.subscribe(this);\n this.isDeactivated = false;\n },\n deactivated: function deactivated () {\n this.$_veeObserver.unsubscribe(this);\n this.isDeactivated = true;\n },\n methods: {\n setFlags: function setFlags (flags) {\n var this$1 = this;\n\n Object.keys(flags).forEach(function (flag) {\n this$1.flags[flag] = flags[flag];\n });\n },\n syncValue: function syncValue (e) {\n var value = normalizeValue$1(e);\n this.value = value;\n this.flags.changed = this.initialValue !== value;\n },\n reset: function reset () {\n this.messages = [];\n this._pendingValidation = null;\n this.initialValue = this.value;\n var flags = createFlags();\n this.setFlags(flags);\n },\n validate: function validate () {\n var this$1 = this;\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (args.length > 0) {\n this.syncValue(args[0]);\n }\n\n return this.validateSilent().then(function (result) {\n this$1.applyResult(result);\n\n return result;\n });\n },\n validateSilent: function validateSilent () {\n var this$1 = this;\n\n this.setFlags({ pending: true });\n\n return $validator.verify(this.value, this.rules, {\n name: this.name,\n values: createValuesLookup(this),\n bails: this.bails\n }).then(function (result) {\n this$1.setFlags({ pending: false });\n if (!this$1.isRequired) {\n this$1.setFlags({ valid: result.valid, invalid: !result.valid });\n }\n\n return result;\n });\n },\n applyResult: function applyResult (ref) {\n var errors = ref.errors;\n var failedRules = ref.failedRules;\n\n this.messages = errors;\n this.failedRules = assign({}, failedRules);\n this.setFlags({\n valid: !errors.length,\n changed: this.value !== this.initialValue,\n invalid: !!errors.length,\n validated: true\n });\n },\n registerField: function registerField () {\n if (!$validator) {\n $validator = getValidator() || new Validator(null, { fastExit: getConfig().fastExit });\n }\n\n updateRenderingContextRefs(this);\n }\n }\n};\n\nfunction createValidationCtx (ctx) {\n return {\n errors: ctx.messages,\n flags: ctx.flags,\n classes: ctx.classes,\n valid: ctx.isValid,\n failedRules: ctx.failedRules,\n reset: function () { return ctx.reset(); },\n validate: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return ctx.validate.apply(ctx, args);\n },\n aria: {\n 'aria-invalid': ctx.flags.invalid ? 'true' : 'false',\n 'aria-required': ctx.isRequired ? 'true' : 'false'\n }\n };\n}\n\nfunction normalizeValue$1 (value) {\n if (isEvent(value)) {\n return value.target.type === 'file' ? toArray(value.target.files) : value.target.value;\n }\n\n return value;\n}\n\n/**\n * Determines if a provider needs to run validation.\n */\nfunction shouldValidate (ctx, model) {\n // when an immediate/initial validation is needed and wasn't done before.\n if (!ctx._ignoreImmediate && ctx.immediate) {\n return true;\n }\n\n // when the value changes for whatever reason.\n if (ctx.value !== model.value) {\n return true;\n }\n\n // when it needs validation due to props/cross-fields changes.\n if (ctx._needsValidation) {\n return true;\n }\n\n // when the initial value is undefined and the field wasn't rendered yet.\n if (!ctx.initialized && model.value === undefined) {\n return true;\n }\n\n return false;\n}\n\nfunction computeModeSetting (ctx) {\n var compute = isCallable(ctx.mode) ? ctx.mode : modes[ctx.mode];\n\n return compute({\n errors: ctx.messages,\n value: ctx.value,\n flags: ctx.flags\n });\n}\n\nfunction onRenderUpdate (model) {\n if (!this.initialized) {\n this.initialValue = model.value;\n }\n\n var validateNow = shouldValidate(this, model);\n this._needsValidation = false;\n this.value = model.value;\n this._ignoreImmediate = true;\n\n if (!validateNow) {\n return;\n }\n\n this.validateSilent().then(this.immediate || this.flags.validated ? this.applyResult : function (x) { return x; });\n}\n\n// Creates the common handlers for a validatable context.\nfunction createCommonHandlers (ctx) {\n var onInput = function (e) {\n ctx.syncValue(e); // track and keep the value updated.\n ctx.setFlags({ dirty: true, pristine: false });\n };\n\n // Blur event listener.\n var onBlur = function () {\n ctx.setFlags({ touched: true, untouched: false });\n };\n\n var onValidate = ctx.$veeHandler;\n var mode = computeModeSetting(ctx);\n\n // Handle debounce changes.\n if (!onValidate || ctx.$veeDebounce !== ctx.debounce) {\n onValidate = debounce(\n function () {\n ctx.$nextTick(function () {\n var pendingPromise = ctx.validateSilent();\n // avoids race conditions between successive validations.\n ctx._pendingValidation = pendingPromise;\n pendingPromise.then(function (result) {\n if (pendingPromise === ctx._pendingValidation) {\n ctx.applyResult(result);\n ctx._pendingValidation = null;\n }\n });\n });\n },\n mode.debounce || ctx.debounce\n );\n\n // Cache the handler so we don't create it each time.\n ctx.$veeHandler = onValidate;\n // cache the debounce value so we detect if it was changed.\n ctx.$veeDebounce = ctx.debounce;\n }\n\n return { onInput: onInput, onBlur: onBlur, onValidate: onValidate };\n}\n\n// Adds all plugin listeners to the vnode.\nfunction addListeners (node) {\n var model = findModel(node);\n // cache the input eventName.\n this._inputEventName = this._inputEventName || getInputEventName(node, model);\n\n onRenderUpdate.call(this, model);\n\n var ref = createCommonHandlers(this);\n var onInput = ref.onInput;\n var onBlur = ref.onBlur;\n var onValidate = ref.onValidate;\n addVNodeListener(node, this._inputEventName, onInput);\n addVNodeListener(node, 'blur', onBlur);\n\n // add the validation listeners.\n this.normalizedEvents.forEach(function (evt) {\n addVNodeListener(node, evt, onValidate);\n });\n\n this.initialized = true;\n}\n\nfunction createValuesLookup (ctx) {\n var providers = ctx.$_veeObserver.refs;\n\n return ctx.fieldDeps.reduce(function (acc, depName) {\n if (!providers[depName]) {\n return acc;\n }\n\n acc[depName] = providers[depName].value;\n\n return acc;\n }, {});\n}\n\nfunction updateRenderingContextRefs (ctx) {\n // IDs should not be nullable.\n if (isNullOrUndefined(ctx.id) && ctx.id === ctx.vid) {\n ctx.id = PROVIDER_COUNTER;\n PROVIDER_COUNTER++;\n }\n\n var id = ctx.id;\n var vid = ctx.vid;\n // Nothing has changed.\n if (ctx.isDeactivated || (id === vid && ctx.$_veeObserver.refs[id])) {\n return;\n }\n\n // vid was changed.\n if (id !== vid && ctx.$_veeObserver.refs[id] === ctx) {\n ctx.$_veeObserver.unsubscribe({ vid: id });\n }\n\n ctx.$_veeObserver.subscribe(ctx);\n ctx.id = vid;\n}\n\nfunction createObserver () {\n return {\n refs: {},\n subscribe: function subscribe (ctx) {\n this.refs[ctx.vid] = ctx;\n },\n unsubscribe: function unsubscribe (ctx) {\n delete this.refs[ctx.vid];\n }\n };\n}\n\nfunction watchCrossFieldDep (ctx, depName, withHooks) {\n if ( withHooks === void 0 ) withHooks = true;\n\n var providers = ctx.$_veeObserver.refs;\n if (!ctx._veeWatchers) {\n ctx._veeWatchers = {};\n }\n\n if (!providers[depName] && withHooks) {\n return ctx.$once('hook:mounted', function () {\n watchCrossFieldDep(ctx, depName, false);\n });\n }\n\n if (!isCallable(ctx._veeWatchers[depName]) && providers[depName]) {\n ctx._veeWatchers[depName] = providers[depName].$watch('value', function () {\n if (ctx.flags.validated) {\n ctx._needsValidation = true;\n ctx.validate();\n }\n });\n }\n}\n\nvar flagMergingStrategy = {\n pristine: 'every',\n dirty: 'some',\n touched: 'some',\n untouched: 'every',\n valid: 'every',\n invalid: 'some',\n pending: 'some',\n validated: 'every'\n};\n\nfunction mergeFlags (lhs, rhs, strategy) {\n var stratName = flagMergingStrategy[strategy];\n\n return [lhs, rhs][stratName](function (f) { return f; });\n}\n\nvar OBSERVER_COUNTER = 0;\n\nvar ValidationObserver = {\n name: 'ValidationObserver',\n provide: function provide () {\n return {\n $_veeObserver: this\n };\n },\n inject: {\n $_veeObserver: {\n from: '$_veeObserver',\n default: function default$1 () {\n if (!this.$vnode.context.$_veeObserver) {\n return null;\n }\n\n return this.$vnode.context.$_veeObserver;\n }\n }\n },\n props: {\n tag: {\n type: String,\n default: 'span'\n },\n slim: {\n type: Boolean,\n default: false\n }\n },\n data: function () { return ({\n vid: (\"obs_\" + (OBSERVER_COUNTER++)),\n refs: {},\n observers: [],\n persistedStore: {}\n }); },\n computed: {\n ctx: function ctx () {\n var this$1 = this;\n\n var ctx = {\n errors: {},\n validate: function (arg) {\n var promise = this$1.validate(arg);\n\n return {\n then: function then (thenable) {\n return promise.then(function (success) {\n if (success && isCallable(thenable)) {\n return Promise.resolve(thenable());\n }\n\n return Promise.resolve(success);\n });\n }\n };\n },\n reset: function () { return this$1.reset(); }\n };\n\n return values(this.refs).concat( Object.keys(this.persistedStore).map(function (key) {\n return {\n vid: key,\n flags: this$1.persistedStore[key].flags,\n messages: this$1.persistedStore[key].errors\n };\n }),\n this.observers ).reduce(function (acc, provider) {\n Object.keys(flagMergingStrategy).forEach(function (flag) {\n var flags = provider.flags || provider.ctx;\n if (!(flag in acc)) {\n acc[flag] = flags[flag];\n return;\n }\n\n acc[flag] = mergeFlags(acc[flag], flags[flag], flag);\n });\n\n acc.errors[provider.vid] = provider.messages || values(provider.ctx.errors).reduce(function (errs, obsErrors) {\n return errs.concat(obsErrors);\n }, []);\n\n return acc;\n }, ctx);\n }\n },\n created: function created () {\n if (this.$_veeObserver) {\n this.$_veeObserver.subscribe(this, 'observer');\n }\n },\n activated: function activated () {\n if (this.$_veeObserver) {\n this.$_veeObserver.subscribe(this, 'observer');\n }\n },\n deactivated: function deactivated () {\n if (this.$_veeObserver) {\n this.$_veeObserver.unsubscribe(this, 'observer');\n }\n },\n beforeDestroy: function beforeDestroy () {\n if (this.$_veeObserver) {\n this.$_veeObserver.unsubscribe(this, 'observer');\n }\n },\n render: function render (h) {\n var slots = this.$slots.default || this.$scopedSlots.default || [];\n if (isCallable(slots)) {\n slots = slots(this.ctx);\n }\n\n return this.slim ? createRenderless(h, slots) : h(this.tag, { on: this.$listeners, attrs: this.$attrs }, slots);\n },\n methods: {\n subscribe: function subscribe (subscriber, kind) {\n var obj;\n\n if ( kind === void 0 ) kind = 'provider';\n if (kind === 'observer') {\n this.observers.push(subscriber);\n return;\n }\n\n this.refs = Object.assign({}, this.refs, ( obj = {}, obj[subscriber.vid] = subscriber, obj ));\n if (subscriber.persist && this.persistedStore[subscriber.vid]) {\n this.restoreProviderState(subscriber);\n }\n },\n unsubscribe: function unsubscribe (ref, kind) {\n var vid = ref.vid;\n if ( kind === void 0 ) kind = 'provider';\n\n if (kind === 'provider') {\n this.removeProvider(vid);\n }\n\n var idx = findIndex(this.observers, function (o) { return o.vid === vid; });\n if (idx !== -1) {\n this.observers.splice(idx, 1);\n }\n },\n validate: function validate (ref) {\n if ( ref === void 0 ) ref = { silent: false };\n var silent = ref.silent;\n\n return Promise.all(values(this.refs).map(function (ref) { return ref[silent ? 'validateSilent' : 'validate']().then(function (r) { return r.valid; }); }).concat( this.observers.map(function (obs) { return obs.validate({ silent: silent }); })\n )).then(function (results) { return results.every(function (r) { return r; }); });\n },\n reset: function reset () {\n var this$1 = this;\n\n Object.keys(this.persistedStore).forEach(function (key) {\n this$1.$delete(this$1.persistedStore, key);\n });\n return values(this.refs).concat( this.observers).forEach(function (ref) { return ref.reset(); });\n },\n restoreProviderState: function restoreProviderState (provider) {\n var state = this.persistedStore[provider.vid];\n provider.setFlags(state.flags);\n provider.applyResult(state);\n this.$delete(this.persistedStore, provider.vid);\n },\n removeProvider: function removeProvider (vid) {\n var obj;\n\n var provider = this.refs[vid];\n // save it for the next time.\n if (provider && provider.persist) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n if (vid.indexOf('_vee_') === 0) {\n warn('Please provide a `vid` prop when using `persist`, there might be unexpected issues otherwise.');\n }\n }\n\n this.persistedStore = assign({}, this.persistedStore, ( obj = {}, obj[vid] = {\n flags: provider.flags,\n errors: provider.messages,\n failedRules: provider.failedRules\n }, obj ));\n }\n\n this.$delete(this.refs, vid);\n },\n }\n};\n\nfunction withValidation (component, ctxToProps) {\n if ( ctxToProps === void 0 ) ctxToProps = null;\n\n var options = isCallable(component) ? component.options : component;\n options.$__veeInject = false;\n var hoc = {\n name: ((options.name || 'AnonymousHoc') + \"WithValidation\"),\n props: assign({}, ValidationProvider.props),\n data: ValidationProvider.data,\n computed: assign({}, ValidationProvider.computed),\n methods: assign({}, ValidationProvider.methods),\n $__veeInject: false,\n beforeDestroy: ValidationProvider.beforeDestroy,\n inject: ValidationProvider.inject\n };\n\n // Default ctx converts ctx props to component props.\n if (!ctxToProps) {\n ctxToProps = function (ctx) { return ctx; };\n }\n\n var eventName = (options.model && options.model.event) || 'input';\n\n hoc.render = function (h) {\n var obj;\n\n this.registerField();\n var vctx = createValidationCtx(this);\n var listeners = assign({}, this.$listeners);\n\n var model = findModel(this.$vnode);\n this._inputEventName = this._inputEventName || getInputEventName(this.$vnode, model);\n onRenderUpdate.call(this, model);\n\n var ref = createCommonHandlers(this);\n var onInput = ref.onInput;\n var onBlur = ref.onBlur;\n var onValidate = ref.onValidate;\n\n mergeVNodeListeners(listeners, eventName, onInput);\n mergeVNodeListeners(listeners, 'blur', onBlur);\n this.normalizedEvents.forEach(function (evt, idx) {\n mergeVNodeListeners(listeners, evt, onValidate);\n });\n\n // Props are any attrs not associated with ValidationProvider Plus the model prop.\n // WARNING: Accidental prop overwrite will probably happen.\n var ref$1 = findModelConfig(this.$vnode) || { prop: 'value' };\n var prop = ref$1.prop;\n var props = assign({}, this.$attrs, ( obj = {}, obj[prop] = model.value, obj ), ctxToProps(vctx));\n\n return h(options, {\n attrs: this.$attrs,\n props: props,\n on: listeners\n }, normalizeSlots(this.$slots, this.$vnode.context));\n };\n\n return hoc;\n}\n\nvar version = '2.2.15';\n\nObject.keys(Rules).forEach(function (rule) {\n Validator.extend(rule, Rules[rule].validate, assign({}, Rules[rule].options, { paramNames: Rules[rule].paramNames }));\n});\n\n// Merge the english messages.\nValidator.localize({ en: locale });\n\nvar install = VeeValidate$1.install;\n\nVeeValidate$1.version = version;\nVeeValidate$1.mapFields = mapFields;\nVeeValidate$1.ValidationProvider = ValidationProvider;\nVeeValidate$1.ValidationObserver = ValidationObserver;\nVeeValidate$1.withValidation = withValidation;\n\nexport default VeeValidate$1;\nexport { ErrorBag, Rules, ValidationObserver, ValidationProvider, Validator, directive, install, mapFields, mixin, version, withValidation };\n","'use strict';\n\nvar hljs = require('highlight.js');\n\nvar vueHighlightJS = {};\nvueHighlightJS.install = function install(Vue) {\n Vue.directive('highlightjs', {\n deep: true,\n bind: function bind(el, binding) {\n // on first bind, highlight all targets\n var targets = el.querySelectorAll('code');\n var target;\n var i;\n\n for (i = 0; i < targets.length; i += 1) {\n target = targets[i];\n\n if (typeof binding.value === 'string') {\n // if a value is directly assigned to the directive, use this\n // instead of the element content.\n target.textContent = binding.value;\n }\n\n hljs.highlightBlock(target);\n }\n },\n componentUpdated: function componentUpdated(el, binding) {\n // after an update, re-fill the content and then highlight\n var targets = el.querySelectorAll('code');\n var target;\n var i;\n\n for (i = 0; i < targets.length; i += 1) {\n target = targets[i];\n if (typeof binding.value === 'string') {\n target.textContent = binding.value;\n hljs.highlightBlock(target);\n }\n }\n },\n });\n};\n\nmodule.exports = vueHighlightJS;\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.VueInlineSvg = {}));\n}(this, (function (exports) { 'use strict';\n\n /** @type Object{string: Promise<Element>} */\n var cache = {};\n /**\n * Remove false attrs\n * @param {Object} attrs\n */\n\n function filterAttrs(attrs) {\n return Object.keys(attrs).reduce(function (result, key) {\n if (attrs[key] !== false && attrs[key] !== null && attrs[key] !== undefined) {\n result[key] = attrs[key];\n }\n\n return result;\n }, {});\n }\n\n var InlineSvgComponent = {\n // name: 'inline-svg',\n inheritAttrs: false,\n render: function render(createElement) {\n if (!this.svgElSource) {\n return null;\n }\n\n return createElement('svg', {\n on: this.$listeners,\n attrs: Object.assign(this.getSvgAttrs(this.svgElSource), filterAttrs(this.$attrs)),\n domProps: {\n innerHTML: this.getSvgContent(this.svgElSource)\n }\n });\n },\n props: {\n src: {\n type: String,\n required: true\n },\n title: {\n type: String\n },\n transformSource: {\n type: Function,\n \"default\": function _default(svg) {\n return svg;\n }\n },\n keepDuringLoading: {\n type: Boolean,\n \"default\": true\n }\n },\n data: function data() {\n return {\n /** @type SVGElement */\n svgElSource: null\n };\n },\n watch: {\n src: function src(newValue) {\n // re-generate cached svg (`svgElSource`)\n this.getSource(newValue);\n }\n },\n mounted: function mounted() {\n // generate `svgElSource`\n this.getSource(this.src);\n },\n methods: {\n getSvgAttrs: function getSvgAttrs(svgEl) {\n // copy attrs\n var svgAttrs = {};\n var attrs = svgEl.attributes;\n\n if (!attrs) {\n return svgAttrs;\n }\n\n for (var i = attrs.length - 1; i >= 0; i--) {\n svgAttrs[attrs[i].name] = attrs[i].value;\n }\n\n return svgAttrs;\n },\n getSvgContent: function getSvgContent(svgEl) {\n svgEl = svgEl.cloneNode(true);\n svgEl = this.transformSource(svgEl);\n\n if (this.title) {\n setTitle(svgEl, this.title);\n } // copy inner html\n\n\n return svgEl.innerHTML;\n },\n\n /**\n * Get svgElSource\n * @param {string} src\n */\n getSource: function getSource(src) {\n var _this = this;\n\n // fill cache by src with promise\n if (!cache[src]) {\n // download\n cache[src] = this.download(src);\n } // notify svg is unloaded\n\n\n if (this.svgElSource && cache[src].isPending() && !this.keepDuringLoading) {\n this.svgElSource = null;\n this.$emit('unloaded');\n } // inline svg when cached promise resolves\n\n\n cache[src].then(function (svg) {\n _this.svgElSource = svg; // wait to render\n\n _this.$nextTick(function () {\n // notify\n _this.$emit('loaded', _this.$el);\n });\n })[\"catch\"](function (err) {\n // notify svg is unloaded\n if (_this.svgElSource) {\n _this.svgElSource = null;\n\n _this.$emit('unloaded');\n } // remove cached rejected promise so next image can try load again\n\n\n delete cache[src];\n\n _this.$emit('error', err);\n });\n },\n\n /**\n * Get the contents of the SVG\n * @param {string} url\n * @returns {Promise<Element>}\n */\n download: function download(url) {\n return makePromiseState(new Promise(function (resolve, reject) {\n var request = new XMLHttpRequest();\n request.open('GET', url, true);\n\n request.onload = function () {\n if (request.status >= 200 && request.status < 400) {\n try {\n // Setup a parser to convert the response to text/xml in order for it to be manipulated and changed\n var parser = new DOMParser();\n var result = parser.parseFromString(request.responseText, 'text/xml');\n var svgEl = result.getElementsByTagName('svg')[0];\n\n if (svgEl) {\n // svgEl = this.transformSource(svgEl);\n resolve(svgEl);\n } else {\n reject(new Error('Loaded file is not valid SVG\"'));\n }\n } catch (e) {\n reject(e);\n }\n } else {\n reject(new Error('Error loading SVG'));\n }\n };\n\n request.onerror = reject;\n request.send();\n }));\n }\n }\n };\n /**\n * Create or edit the <title> element of a SVG\n * @param {SVGElement} svg\n * @param {string} title\n */\n\n function setTitle(svg, title) {\n var titleTags = svg.getElementsByTagName('title');\n\n if (titleTags.length) {\n // overwrite existing title\n titleTags[0].textContent = title;\n } else {\n // create a title element if one doesn't already exist\n var titleEl = document.createElementNS('http://www.w3.org/2000/svg', 'title');\n titleEl.textContent = title;\n svg.appendChild(titleEl);\n }\n }\n /**\n * @typedef {Promise} PromiseWithState\n * @property {Function<boolean>} isPending\n */\n\n /**\n * This function allow you to modify a JS Promise by adding some status properties.\n * @param {Promise|PromiseWithState} promise\n * @return {PromiseWithState}\n */\n\n\n function makePromiseState(promise) {\n // Don't modify any promise that has been already modified.\n if (promise.isPending) return promise; // Set initial state\n\n var isPending = true; // Observe the promise, saving the fulfillment in a closure scope.\n\n var result = promise.then(function (v) {\n isPending = false;\n return v;\n }, function (e) {\n isPending = false;\n throw e;\n });\n\n result.isPending = function getIsPending() {\n return isPending;\n };\n\n return result;\n }\n\n var InlineSvgPlugin = {\n install: function install(Vue) {\n Vue.component('inline-svg', InlineSvgComponent);\n }\n };\n\n exports.InlineSvgComponent = InlineSvgComponent;\n exports.InlineSvgPlugin = InlineSvgPlugin;\n exports.default = InlineSvgComponent;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(\"VueLoading\",[],e):\"object\"==typeof exports?exports.VueLoading=e():t.VueLoading=e()}(\"undefined\"!=typeof self?self:this,(function(){return function(t){var e={};function i(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=t,i.c=e,i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},i.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var r in t)i.d(n,r,function(e){return t[e]}.bind(null,r));return n},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,\"a\",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p=\"\",i(i.s=1)}([function(t,e,i){},function(t,e,i){\"use strict\";i.r(e);var n=\"undefined\"!=typeof window?window.HTMLElement:Object,r={mounted:function(){this.enforceFocus&&document.addEventListener(\"focusin\",this.focusIn)},methods:{focusIn:function(t){if(this.isActive&&t.target!==this.$el&&!this.$el.contains(t.target)){var e=this.container?this.container:this.isFullPage?null:this.$el.parentElement;(this.isFullPage||e&&e.contains(t.target))&&(t.preventDefault(),this.$el.focus())}}},beforeDestroy:function(){document.removeEventListener(\"focusin\",this.focusIn)}};function a(t,e,i,n,r,a,o,s){var l,u=\"function\"==typeof t?t.options:t;if(e&&(u.render=e,u.staticRenderFns=i,u._compiled=!0),n&&(u.functional=!0),a&&(u._scopeId=\"data-v-\"+a),o?(l=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),r&&r.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(o)},u._ssrRegister=l):r&&(l=s?function(){r.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(t,e){return l.call(e),c(t,e)}}else{var d=u.beforeCreate;u.beforeCreate=d?[].concat(d,l):[l]}return{exports:t,options:u}}var o=a({name:\"spinner\",props:{color:{type:String,default:\"#000\"},height:{type:Number,default:64},width:{type:Number,default:64}}},(function(){var t=this.$createElement,e=this._self._c||t;return e(\"svg\",{attrs:{viewBox:\"0 0 38 38\",xmlns:\"http://www.w3.org/2000/svg\",width:this.width,height:this.height,stroke:this.color}},[e(\"g\",{attrs:{fill:\"none\",\"fill-rule\":\"evenodd\"}},[e(\"g\",{attrs:{transform:\"translate(1 1)\",\"stroke-width\":\"2\"}},[e(\"circle\",{attrs:{\"stroke-opacity\":\".25\",cx:\"18\",cy:\"18\",r:\"18\"}}),e(\"path\",{attrs:{d:\"M36 18c0-9.94-8.06-18-18-18\"}},[e(\"animateTransform\",{attrs:{attributeName:\"transform\",type:\"rotate\",from:\"0 18 18\",to:\"360 18 18\",dur:\"0.8s\",repeatCount:\"indefinite\"}})],1)])])])}),[],!1,null,null,null).exports,s=a({name:\"dots\",props:{color:{type:String,default:\"#000\"},height:{type:Number,default:240},width:{type:Number,default:60}}},(function(){var t=this.$createElement,e=this._self._c||t;return e(\"svg\",{attrs:{viewBox:\"0 0 120 30\",xmlns:\"http://www.w3.org/2000/svg\",fill:this.color,width:this.width,height:this.height}},[e(\"circle\",{attrs:{cx:\"15\",cy:\"15\",r:\"15\"}},[e(\"animate\",{attrs:{attributeName:\"r\",from:\"15\",to:\"15\",begin:\"0s\",dur:\"0.8s\",values:\"15;9;15\",calcMode:\"linear\",repeatCount:\"indefinite\"}}),e(\"animate\",{attrs:{attributeName:\"fill-opacity\",from:\"1\",to:\"1\",begin:\"0s\",dur:\"0.8s\",values:\"1;.5;1\",calcMode:\"linear\",repeatCount:\"indefinite\"}})]),e(\"circle\",{attrs:{cx:\"60\",cy:\"15\",r:\"9\",\"fill-opacity\":\"0.3\"}},[e(\"animate\",{attrs:{attributeName:\"r\",from:\"9\",to:\"9\",begin:\"0s\",dur:\"0.8s\",values:\"9;15;9\",calcMode:\"linear\",repeatCount:\"indefinite\"}}),e(\"animate\",{attrs:{attributeName:\"fill-opacity\",from:\"0.5\",to:\"0.5\",begin:\"0s\",dur:\"0.8s\",values:\".5;1;.5\",calcMode:\"linear\",repeatCount:\"indefinite\"}})]),e(\"circle\",{attrs:{cx:\"105\",cy:\"15\",r:\"15\"}},[e(\"animate\",{attrs:{attributeName:\"r\",from:\"15\",to:\"15\",begin:\"0s\",dur:\"0.8s\",values:\"15;9;15\",calcMode:\"linear\",repeatCount:\"indefinite\"}}),e(\"animate\",{attrs:{attributeName:\"fill-opacity\",from:\"1\",to:\"1\",begin:\"0s\",dur:\"0.8s\",values:\"1;.5;1\",calcMode:\"linear\",repeatCount:\"indefinite\"}})])])}),[],!1,null,null,null).exports,l=a({name:\"bars\",props:{color:{type:String,default:\"#000\"},height:{type:Number,default:40},width:{type:Number,default:40}}},(function(){var t=this.$createElement,e=this._self._c||t;return e(\"svg\",{attrs:{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 30 30\",height:this.height,width:this.width,fill:this.color}},[e(\"rect\",{attrs:{x:\"0\",y:\"13\",width:\"4\",height:\"5\"}},[e(\"animate\",{attrs:{attributeName:\"height\",attributeType:\"XML\",values:\"5;21;5\",begin:\"0s\",dur:\"0.6s\",repeatCount:\"indefinite\"}}),e(\"animate\",{attrs:{attributeName:\"y\",attributeType:\"XML\",values:\"13; 5; 13\",begin:\"0s\",dur:\"0.6s\",repeatCount:\"indefinite\"}})]),e(\"rect\",{attrs:{x:\"10\",y:\"13\",width:\"4\",height:\"5\"}},[e(\"animate\",{attrs:{attributeName:\"height\",attributeType:\"XML\",values:\"5;21;5\",begin:\"0.15s\",dur:\"0.6s\",repeatCount:\"indefinite\"}}),e(\"animate\",{attrs:{attributeName:\"y\",attributeType:\"XML\",values:\"13; 5; 13\",begin:\"0.15s\",dur:\"0.6s\",repeatCount:\"indefinite\"}})]),e(\"rect\",{attrs:{x:\"20\",y:\"13\",width:\"4\",height:\"5\"}},[e(\"animate\",{attrs:{attributeName:\"height\",attributeType:\"XML\",values:\"5;21;5\",begin:\"0.3s\",dur:\"0.6s\",repeatCount:\"indefinite\"}}),e(\"animate\",{attrs:{attributeName:\"y\",attributeType:\"XML\",values:\"13; 5; 13\",begin:\"0.3s\",dur:\"0.6s\",repeatCount:\"indefinite\"}})])])}),[],!1,null,null,null).exports,u=a({name:\"vue-loading\",mixins:[r],props:{active:Boolean,programmatic:Boolean,container:[Object,Function,n],isFullPage:{type:Boolean,default:!0},enforceFocus:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!1},transition:{type:String,default:\"fade\"},canCancel:Boolean,onCancel:{type:Function,default:function(){}},color:String,backgroundColor:String,blur:{type:String,default:\"2px\"},opacity:Number,width:Number,height:Number,zIndex:Number,loader:{type:String,default:\"spinner\"}},data:function(){return{isActive:this.active}},components:{Spinner:o,Dots:s,Bars:l},beforeMount:function(){this.programmatic&&(this.container?(this.isFullPage=!1,this.container.appendChild(this.$el)):document.body.appendChild(this.$el))},mounted:function(){this.programmatic&&(this.isActive=!0),document.addEventListener(\"keyup\",this.keyPress)},methods:{cancel:function(){this.canCancel&&this.isActive&&(this.hide(),this.onCancel.apply(null,arguments))},hide:function(){var t=this;this.$emit(\"hide\"),this.$emit(\"update:active\",!1),this.programmatic&&(this.isActive=!1,setTimeout((function(){var e;t.$destroy(),void 0!==(e=t.$el).remove?e.remove():e.parentNode.removeChild(e)}),150))},disableScroll:function(){this.isFullPage&&this.lockScroll&&document.body.classList.add(\"vld-shown\")},enableScroll:function(){this.isFullPage&&this.lockScroll&&document.body.classList.remove(\"vld-shown\")},keyPress:function(t){27===t.keyCode&&this.cancel()}},watch:{active:function(t){this.isActive=t},isActive:function(t){t?this.disableScroll():this.enableScroll()}},computed:{bgStyle:function(){return{background:this.backgroundColor,opacity:this.opacity,backdropFilter:\"blur(\".concat(this.blur,\")\")}}},beforeDestroy:function(){document.removeEventListener(\"keyup\",this.keyPress)}},(function(){var t=this,e=t.$createElement,i=t._self._c||e;return i(\"transition\",{attrs:{name:t.transition}},[i(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.isActive,expression:\"isActive\"}],staticClass:\"vld-overlay is-active\",class:{\"is-full-page\":t.isFullPage},style:{zIndex:t.zIndex},attrs:{tabindex:\"0\",\"aria-busy\":t.isActive,\"aria-label\":\"Loading\"}},[i(\"div\",{staticClass:\"vld-background\",style:t.bgStyle,on:{click:function(e){return e.preventDefault(),t.cancel(e)}}}),i(\"div\",{staticClass:\"vld-icon\"},[t._t(\"before\"),t._t(\"default\",[i(t.loader,{tag:\"component\",attrs:{color:t.color,width:t.width,height:t.height}})]),t._t(\"after\")],2)])])}),[],!1,null,null,null).exports,c=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return{show:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i,a={programmatic:!0},o=Object.assign({},e,n,a),s=new(t.extend(u))({el:document.createElement(\"div\"),propsData:o}),l=Object.assign({},i,r);return Object.keys(l).map((function(t){s.$slots[t]=l[t]})),s}}};i(0);u.install=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=c(t,e,i);t.$loading=n,t.prototype.$loading=n};e.default=u}]).default}));","import json2mq from 'json2mq';\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _toConsumableArray(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n}\n\nfunction convertBreakpointsToMediaQueries(breakpoints) {\n var keys = Object.keys(breakpoints);\n var values = keys.map(function (key) {\n return breakpoints[key];\n });\n var breakpointValues = [0].concat(_toConsumableArray(values.slice(0, -1)));\n var mediaQueries = breakpointValues.reduce(function (sum, value, index) {\n var options = Object.assign({\n minWidth: value\n }, index < keys.length - 1 ? {\n maxWidth: breakpointValues[index + 1] - 1\n } : {});\n var mediaQuery = json2mq(options);\n return Object.assign(sum, _defineProperty({}, keys[index], mediaQuery));\n }, {});\n return mediaQueries;\n}\nfunction transformValuesFromBreakpoints(breakpoints, values, currentBreakpoint) {\n var findClosestValue = function findClosestValue(currentBreakpoint) {\n if (values[currentBreakpoint] !== undefined) return values[currentBreakpoint];\n var index = breakpoints.findIndex(function (b) {\n return b === currentBreakpoint;\n });\n var newBreakpoint = index !== -1 || index !== 0 ? breakpoints[index - 1] : null;\n if (!newBreakpoint) return values[index];\n return values[newBreakpoint] !== undefined ? values[newBreakpoint] : findClosestValue(newBreakpoint);\n };\n\n return findClosestValue(currentBreakpoint);\n}\nfunction selectBreakpoints(breakpoints, currentBreakpoint) {\n var index = breakpoints.findIndex(function (b) {\n return b === currentBreakpoint;\n });\n return breakpoints.slice(index);\n}\nfunction subscribeToMediaQuery(mediaQuery, enter) {\n var mql = window.matchMedia(mediaQuery);\n\n var cb = function cb(_ref) {\n var matches = _ref.matches;\n if (matches) enter();\n };\n\n mql.addListener(cb); //subscribing\n\n cb(mql); //initial trigger\n}\n\nfunction isArray(arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n}\n\n// USAGE\n// mq-layout(mq=\"lg\")\n// p I’m lg\nvar component = {\n props: {\n mq: {\n required: true,\n type: [String, Array]\n }\n },\n computed: {\n plusModifier: function plusModifier() {\n return !isArray(this.mq) && this.mq.slice(-1) === '+';\n },\n activeBreakpoints: function activeBreakpoints() {\n var breakpoints = Object.keys(this.$mqAvailableBreakpoints);\n var mq = this.plusModifier ? this.mq.slice(0, -1) : isArray(this.mq) ? this.mq : [this.mq];\n return this.plusModifier ? selectBreakpoints(breakpoints, mq) : mq;\n }\n },\n render: function render(h, props) {\n var shouldRenderChildren = this.activeBreakpoints.includes(this.$mq);\n return shouldRenderChildren ? h('div', this.$slots.default) : h();\n }\n};\n\nvar DEFAULT_BREAKPOINT = {\n sm: 450,\n md: 1250,\n lg: Infinity\n};\n\nvar install = function install(Vue) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$breakpoints = _ref.breakpoints,\n breakpoints = _ref$breakpoints === void 0 ? DEFAULT_BREAKPOINT : _ref$breakpoints,\n _ref$defaultBreakpoin = _ref.defaultBreakpoint,\n defaultBreakpoint = _ref$defaultBreakpoin === void 0 ? 'sm' : _ref$defaultBreakpoin;\n\n var hasSetupListeners = false; // Init reactive component\n\n var reactorComponent = new Vue({\n data: function data() {\n return {\n currentBreakpoint: defaultBreakpoint\n };\n }\n });\n Vue.filter('mq', function (currentBreakpoint, values) {\n return transformValuesFromBreakpoints(Object.keys(breakpoints), values, currentBreakpoint);\n });\n Vue.mixin({\n computed: {\n $mq: function $mq() {\n return reactorComponent.currentBreakpoint;\n }\n },\n created: function created() {\n if (this.$isServer) reactorComponent.currentBreakpoint = defaultBreakpoint;\n },\n mounted: function mounted() {\n if (!hasSetupListeners) {\n var mediaQueries = convertBreakpointsToMediaQueries(breakpoints); // setup listeners\n\n var _loop = function _loop(key) {\n var mediaQuery = mediaQueries[key];\n\n var enter = function enter() {\n reactorComponent.currentBreakpoint = key;\n };\n\n subscribeToMediaQuery(mediaQuery, enter);\n };\n\n for (var key in mediaQueries) {\n _loop(key);\n }\n\n hasSetupListeners = true;\n }\n }\n });\n Vue.prototype.$mqAvailableBreakpoints = breakpoints;\n Vue.component('MqLayout', component);\n};\n\nvar index = {\n install: install\n};\n\nexport default index;\n","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.VueMultiselect=e():t.VueMultiselect=e()}(this,function(){return function(t){function e(i){if(n[i])return n[i].exports;var r=n[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,i){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:i})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,\"a\",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p=\"/\",e(e.s=60)}([function(t,e){var n=t.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=n)},function(t,e,n){var i=n(49)(\"wks\"),r=n(30),o=n(0).Symbol,s=\"function\"==typeof o;(t.exports=function(t){return i[t]||(i[t]=s&&o[t]||(s?o:r)(\"Symbol.\"+t))}).store=i},function(t,e,n){var i=n(5);t.exports=function(t){if(!i(t))throw TypeError(t+\" is not an object!\");return t}},function(t,e,n){var i=n(0),r=n(10),o=n(8),s=n(6),u=n(11),a=function(t,e,n){var l,c,f,p,h=t&a.F,d=t&a.G,v=t&a.S,g=t&a.P,y=t&a.B,m=d?i:v?i[e]||(i[e]={}):(i[e]||{}).prototype,b=d?r:r[e]||(r[e]={}),_=b.prototype||(b.prototype={});d&&(n=e);for(l in n)c=!h&&m&&void 0!==m[l],f=(c?m:n)[l],p=y&&c?u(f,i):g&&\"function\"==typeof f?u(Function.call,f):f,m&&s(m,l,f,t&a.U),b[l]!=f&&o(b,l,p),g&&_[l]!=f&&(_[l]=f)};i.core=r,a.F=1,a.G=2,a.S=4,a.P=8,a.B=16,a.W=32,a.U=64,a.R=128,t.exports=a},function(t,e,n){t.exports=!n(7)(function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a})},function(t,e){t.exports=function(t){return\"object\"==typeof t?null!==t:\"function\"==typeof t}},function(t,e,n){var i=n(0),r=n(8),o=n(12),s=n(30)(\"src\"),u=Function.toString,a=(\"\"+u).split(\"toString\");n(10).inspectSource=function(t){return u.call(t)},(t.exports=function(t,e,n,u){var l=\"function\"==typeof n;l&&(o(n,\"name\")||r(n,\"name\",e)),t[e]!==n&&(l&&(o(n,s)||r(n,s,t[e]?\"\"+t[e]:a.join(String(e)))),t===i?t[e]=n:u?t[e]?t[e]=n:r(t,e,n):(delete t[e],r(t,e,n)))})(Function.prototype,\"toString\",function(){return\"function\"==typeof this&&this[s]||u.call(this)})},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var i=n(13),r=n(25);t.exports=n(4)?function(t,e,n){return i.f(t,e,r(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e){var n=t.exports={version:\"2.5.7\"};\"number\"==typeof __e&&(__e=n)},function(t,e,n){var i=n(14);t.exports=function(t,e,n){if(i(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,i){return t.call(e,n,i)};case 3:return function(n,i,r){return t.call(e,n,i,r)}}return function(){return t.apply(e,arguments)}}},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){var i=n(2),r=n(41),o=n(29),s=Object.defineProperty;e.f=n(4)?Object.defineProperty:function(t,e,n){if(i(t),e=o(e,!0),i(n),r)try{return s(t,e,n)}catch(t){}if(\"get\"in n||\"set\"in n)throw TypeError(\"Accessors not supported!\");return\"value\"in n&&(t[e]=n.value),t}},function(t,e){t.exports=function(t){if(\"function\"!=typeof t)throw TypeError(t+\" is not a function!\");return t}},function(t,e){t.exports={}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError(\"Can't call method on \"+t);return t}},function(t,e,n){\"use strict\";var i=n(7);t.exports=function(t,e){return!!t&&i(function(){e?t.call(null,function(){},1):t.call(null)})}},function(t,e,n){var i=n(23),r=n(16);t.exports=function(t){return i(r(t))}},function(t,e,n){var i=n(53),r=Math.min;t.exports=function(t){return t>0?r(i(t),9007199254740991):0}},function(t,e,n){var i=n(11),r=n(23),o=n(28),s=n(19),u=n(64);t.exports=function(t,e){var n=1==t,a=2==t,l=3==t,c=4==t,f=6==t,p=5==t||f,h=e||u;return function(e,u,d){for(var v,g,y=o(e),m=r(y),b=i(u,d,3),_=s(m.length),x=0,w=n?h(e,_):a?h(e,0):void 0;_>x;x++)if((p||x in m)&&(v=m[x],g=b(v,x,y),t))if(n)w[x]=g;else if(g)switch(t){case 3:return!0;case 5:return v;case 6:return x;case 2:w.push(v)}else if(c)return!1;return f?-1:l||c?c:w}}},function(t,e,n){var i=n(5),r=n(0).document,o=i(r)&&i(r.createElement);t.exports=function(t){return o?r.createElement(t):{}}},function(t,e){t.exports=\"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\")},function(t,e,n){var i=n(9);t.exports=Object(\"z\").propertyIsEnumerable(0)?Object:function(t){return\"String\"==i(t)?t.split(\"\"):Object(t)}},function(t,e){t.exports=!1},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,n){var i=n(13).f,r=n(12),o=n(1)(\"toStringTag\");t.exports=function(t,e,n){t&&!r(t=n?t:t.prototype,o)&&i(t,o,{configurable:!0,value:e})}},function(t,e,n){var i=n(49)(\"keys\"),r=n(30);t.exports=function(t){return i[t]||(i[t]=r(t))}},function(t,e,n){var i=n(16);t.exports=function(t){return Object(i(t))}},function(t,e,n){var i=n(5);t.exports=function(t,e){if(!i(t))return t;var n,r;if(e&&\"function\"==typeof(n=t.toString)&&!i(r=n.call(t)))return r;if(\"function\"==typeof(n=t.valueOf)&&!i(r=n.call(t)))return r;if(!e&&\"function\"==typeof(n=t.toString)&&!i(r=n.call(t)))return r;throw TypeError(\"Can't convert object to primitive value\")}},function(t,e){var n=0,i=Math.random();t.exports=function(t){return\"Symbol(\".concat(void 0===t?\"\":t,\")_\",(++n+i).toString(36))}},function(t,e,n){\"use strict\";var i=n(0),r=n(12),o=n(9),s=n(67),u=n(29),a=n(7),l=n(77).f,c=n(45).f,f=n(13).f,p=n(51).trim,h=i.Number,d=h,v=h.prototype,g=\"Number\"==o(n(44)(v)),y=\"trim\"in String.prototype,m=function(t){var e=u(t,!1);if(\"string\"==typeof e&&e.length>2){e=y?e.trim():p(e,3);var n,i,r,o=e.charCodeAt(0);if(43===o||45===o){if(88===(n=e.charCodeAt(2))||120===n)return NaN}else if(48===o){switch(e.charCodeAt(1)){case 66:case 98:i=2,r=49;break;case 79:case 111:i=8,r=55;break;default:return+e}for(var s,a=e.slice(2),l=0,c=a.length;l<c;l++)if((s=a.charCodeAt(l))<48||s>r)return NaN;return parseInt(a,i)}}return+e};if(!h(\" 0o1\")||!h(\"0b1\")||h(\"+0x1\")){h=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof h&&(g?a(function(){v.valueOf.call(n)}):\"Number\"!=o(n))?s(new d(m(e)),n,h):m(e)};for(var b,_=n(4)?l(d):\"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger\".split(\",\"),x=0;_.length>x;x++)r(d,b=_[x])&&!r(h,b)&&f(h,b,c(d,b));h.prototype=v,v.constructor=h,n(6)(i,\"Number\",h)}},function(t,e,n){\"use strict\";function i(t){return 0!==t&&(!(!Array.isArray(t)||0!==t.length)||!t)}function r(t){return function(){return!t.apply(void 0,arguments)}}function o(t,e){return void 0===t&&(t=\"undefined\"),null===t&&(t=\"null\"),!1===t&&(t=\"false\"),-1!==t.toString().toLowerCase().indexOf(e.trim())}function s(t,e,n,i){return t.filter(function(t){return o(i(t,n),e)})}function u(t){return t.filter(function(t){return!t.$isLabel})}function a(t,e){return function(n){return n.reduce(function(n,i){return i[t]&&i[t].length?(n.push({$groupLabel:i[e],$isLabel:!0}),n.concat(i[t])):n},[])}}function l(t,e,i,r,o){return function(u){return u.map(function(u){var a;if(!u[i])return console.warn(\"Options passed to vue-multiselect do not contain groups, despite the config.\"),[];var l=s(u[i],t,e,o);return l.length?(a={},n.i(d.a)(a,r,u[r]),n.i(d.a)(a,i,l),a):[]})}}var c=n(59),f=n(54),p=(n.n(f),n(95)),h=(n.n(p),n(31)),d=(n.n(h),n(58)),v=n(91),g=(n.n(v),n(98)),y=(n.n(g),n(92)),m=(n.n(y),n(88)),b=(n.n(m),n(97)),_=(n.n(b),n(89)),x=(n.n(_),n(96)),w=(n.n(x),n(93)),S=(n.n(w),n(90)),O=(n.n(S),function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return function(t){return e.reduce(function(t,e){return e(t)},t)}});e.a={data:function(){return{search:\"\",isOpen:!1,preferredOpenDirection:\"below\",optimizedHeight:this.maxHeight}},props:{internalSearch:{type:Boolean,default:!0},options:{type:Array,required:!0},multiple:{type:Boolean,default:!1},value:{type:null,default:function(){return[]}},trackBy:{type:String},label:{type:String},searchable:{type:Boolean,default:!0},clearOnSelect:{type:Boolean,default:!0},hideSelected:{type:Boolean,default:!1},placeholder:{type:String,default:\"Select option\"},allowEmpty:{type:Boolean,default:!0},resetAfter:{type:Boolean,default:!1},closeOnSelect:{type:Boolean,default:!0},customLabel:{type:Function,default:function(t,e){return i(t)?\"\":e?t[e]:t}},taggable:{type:Boolean,default:!1},tagPlaceholder:{type:String,default:\"Press enter to create a tag\"},tagPosition:{type:String,default:\"top\"},max:{type:[Number,Boolean],default:!1},id:{default:null},optionsLimit:{type:Number,default:1e3},groupValues:{type:String},groupLabel:{type:String},groupSelect:{type:Boolean,default:!1},blockKeys:{type:Array,default:function(){return[]}},preserveSearch:{type:Boolean,default:!1},preselectFirst:{type:Boolean,default:!1}},mounted:function(){!this.multiple&&this.max&&console.warn(\"[Vue-Multiselect warn]: Max prop should not be used when prop Multiple equals false.\"),this.preselectFirst&&!this.internalValue.length&&this.options.length&&this.select(this.filteredOptions[0])},computed:{internalValue:function(){return this.value||0===this.value?Array.isArray(this.value)?this.value:[this.value]:[]},filteredOptions:function(){var t=this.search||\"\",e=t.toLowerCase().trim(),n=this.options.concat();return n=this.internalSearch?this.groupValues?this.filterAndFlat(n,e,this.label):s(n,e,this.label,this.customLabel):this.groupValues?a(this.groupValues,this.groupLabel)(n):n,n=this.hideSelected?n.filter(r(this.isSelected)):n,this.taggable&&e.length&&!this.isExistingOption(e)&&(\"bottom\"===this.tagPosition?n.push({isTag:!0,label:t}):n.unshift({isTag:!0,label:t})),n.slice(0,this.optionsLimit)},valueKeys:function(){var t=this;return this.trackBy?this.internalValue.map(function(e){return e[t.trackBy]}):this.internalValue},optionKeys:function(){var t=this;return(this.groupValues?this.flatAndStrip(this.options):this.options).map(function(e){return t.customLabel(e,t.label).toString().toLowerCase()})},currentOptionLabel:function(){return this.multiple?this.searchable?\"\":this.placeholder:this.internalValue.length?this.getOptionLabel(this.internalValue[0]):this.searchable?\"\":this.placeholder}},watch:{internalValue:function(){this.resetAfter&&this.internalValue.length&&(this.search=\"\",this.$emit(\"input\",this.multiple?[]:null))},search:function(){this.$emit(\"search-change\",this.search,this.id)}},methods:{getValue:function(){return this.multiple?this.internalValue:0===this.internalValue.length?null:this.internalValue[0]},filterAndFlat:function(t,e,n){return O(l(e,n,this.groupValues,this.groupLabel,this.customLabel),a(this.groupValues,this.groupLabel))(t)},flatAndStrip:function(t){return O(a(this.groupValues,this.groupLabel),u)(t)},updateSearch:function(t){this.search=t},isExistingOption:function(t){return!!this.options&&this.optionKeys.indexOf(t)>-1},isSelected:function(t){var e=this.trackBy?t[this.trackBy]:t;return this.valueKeys.indexOf(e)>-1},isOptionDisabled:function(t){return!!t.$isDisabled},getOptionLabel:function(t){if(i(t))return\"\";if(t.isTag)return t.label;if(t.$isLabel)return t.$groupLabel;var e=this.customLabel(t,this.label);return i(e)?\"\":e},select:function(t,e){if(t.$isLabel&&this.groupSelect)return void this.selectGroup(t);if(!(-1!==this.blockKeys.indexOf(e)||this.disabled||t.$isDisabled||t.$isLabel)&&(!this.max||!this.multiple||this.internalValue.length!==this.max)&&(\"Tab\"!==e||this.pointerDirty)){if(t.isTag)this.$emit(\"tag\",t.label,this.id),this.search=\"\",this.closeOnSelect&&!this.multiple&&this.deactivate();else{if(this.isSelected(t))return void(\"Tab\"!==e&&this.removeElement(t));this.$emit(\"select\",t,this.id),this.multiple?this.$emit(\"input\",this.internalValue.concat([t]),this.id):this.$emit(\"input\",t,this.id),this.clearOnSelect&&(this.search=\"\")}this.closeOnSelect&&this.deactivate()}},selectGroup:function(t){var e=this,n=this.options.find(function(n){return n[e.groupLabel]===t.$groupLabel});if(n)if(this.wholeGroupSelected(n)){this.$emit(\"remove\",n[this.groupValues],this.id);var i=this.internalValue.filter(function(t){return-1===n[e.groupValues].indexOf(t)});this.$emit(\"input\",i,this.id)}else{var r=n[this.groupValues].filter(function(t){return!(e.isOptionDisabled(t)||e.isSelected(t))});this.$emit(\"select\",r,this.id),this.$emit(\"input\",this.internalValue.concat(r),this.id)}},wholeGroupSelected:function(t){var e=this;return t[this.groupValues].every(function(t){return e.isSelected(t)||e.isOptionDisabled(t)})},wholeGroupDisabled:function(t){return t[this.groupValues].every(this.isOptionDisabled)},removeElement:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!this.disabled&&!t.$isDisabled){if(!this.allowEmpty&&this.internalValue.length<=1)return void this.deactivate();var i=\"object\"===n.i(c.a)(t)?this.valueKeys.indexOf(t[this.trackBy]):this.valueKeys.indexOf(t);if(this.$emit(\"remove\",t,this.id),this.multiple){var r=this.internalValue.slice(0,i).concat(this.internalValue.slice(i+1));this.$emit(\"input\",r,this.id)}else this.$emit(\"input\",null,this.id);this.closeOnSelect&&e&&this.deactivate()}},removeLastElement:function(){-1===this.blockKeys.indexOf(\"Delete\")&&0===this.search.length&&Array.isArray(this.internalValue)&&this.internalValue.length&&this.removeElement(this.internalValue[this.internalValue.length-1],!1)},activate:function(){var t=this;this.isOpen||this.disabled||(this.adjustPosition(),this.groupValues&&0===this.pointer&&this.filteredOptions.length&&(this.pointer=1),this.isOpen=!0,this.searchable?(this.preserveSearch||(this.search=\"\"),this.$nextTick(function(){return t.$refs.search.focus()})):this.$el.focus(),this.$emit(\"open\",this.id))},deactivate:function(){this.isOpen&&(this.isOpen=!1,this.searchable?this.$refs.search.blur():this.$el.blur(),this.preserveSearch||(this.search=\"\"),this.$emit(\"close\",this.getValue(),this.id))},toggle:function(){this.isOpen?this.deactivate():this.activate()},adjustPosition:function(){if(\"undefined\"!=typeof window){var t=this.$el.getBoundingClientRect().top,e=window.innerHeight-this.$el.getBoundingClientRect().bottom;e>this.maxHeight||e>t||\"below\"===this.openDirection||\"bottom\"===this.openDirection?(this.preferredOpenDirection=\"below\",this.optimizedHeight=Math.min(e-40,this.maxHeight)):(this.preferredOpenDirection=\"above\",this.optimizedHeight=Math.min(t-40,this.maxHeight))}}}}},function(t,e,n){\"use strict\";var i=n(54),r=(n.n(i),n(31));n.n(r);e.a={data:function(){return{pointer:0,pointerDirty:!1}},props:{showPointer:{type:Boolean,default:!0},optionHeight:{type:Number,default:40}},computed:{pointerPosition:function(){return this.pointer*this.optionHeight},visibleElements:function(){return this.optimizedHeight/this.optionHeight}},watch:{filteredOptions:function(){this.pointerAdjust()},isOpen:function(){this.pointerDirty=!1}},methods:{optionHighlight:function(t,e){return{\"multiselect__option--highlight\":t===this.pointer&&this.showPointer,\"multiselect__option--selected\":this.isSelected(e)}},groupHighlight:function(t,e){var n=this;if(!this.groupSelect)return[\"multiselect__option--group\",\"multiselect__option--disabled\"];var i=this.options.find(function(t){return t[n.groupLabel]===e.$groupLabel});return i&&!this.wholeGroupDisabled(i)?[\"multiselect__option--group\",{\"multiselect__option--highlight\":t===this.pointer&&this.showPointer},{\"multiselect__option--group-selected\":this.wholeGroupSelected(i)}]:\"multiselect__option--disabled\"},addPointerElement:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"Enter\",e=t.key;this.filteredOptions.length>0&&this.select(this.filteredOptions[this.pointer],e),this.pointerReset()},pointerForward:function(){this.pointer<this.filteredOptions.length-1&&(this.pointer++,this.$refs.list.scrollTop<=this.pointerPosition-(this.visibleElements-1)*this.optionHeight&&(this.$refs.list.scrollTop=this.pointerPosition-(this.visibleElements-1)*this.optionHeight),this.filteredOptions[this.pointer]&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerForward()),this.pointerDirty=!0},pointerBackward:function(){this.pointer>0?(this.pointer--,this.$refs.list.scrollTop>=this.pointerPosition&&(this.$refs.list.scrollTop=this.pointerPosition),this.filteredOptions[this.pointer]&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerBackward()):this.filteredOptions[this.pointer]&&this.filteredOptions[0].$isLabel&&!this.groupSelect&&this.pointerForward(),this.pointerDirty=!0},pointerReset:function(){this.closeOnSelect&&(this.pointer=0,this.$refs.list&&(this.$refs.list.scrollTop=0))},pointerAdjust:function(){this.pointer>=this.filteredOptions.length-1&&(this.pointer=this.filteredOptions.length?this.filteredOptions.length-1:0),this.filteredOptions.length>0&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerForward()},pointerSet:function(t){this.pointer=t,this.pointerDirty=!0}}}},function(t,e,n){\"use strict\";var i=n(36),r=n(74),o=n(15),s=n(18);t.exports=n(72)(Array,\"Array\",function(t,e){this._t=s(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,r(1)):\"keys\"==e?r(0,n):\"values\"==e?r(0,t[n]):r(0,[n,t[n]])},\"values\"),o.Arguments=o.Array,i(\"keys\"),i(\"values\"),i(\"entries\")},function(t,e,n){\"use strict\";var i=n(31),r=(n.n(i),n(32)),o=n(33);e.a={name:\"vue-multiselect\",mixins:[r.a,o.a],props:{name:{type:String,default:\"\"},selectLabel:{type:String,default:\"Press enter to select\"},selectGroupLabel:{type:String,default:\"Press enter to select group\"},selectedLabel:{type:String,default:\"Selected\"},deselectLabel:{type:String,default:\"Press enter to remove\"},deselectGroupLabel:{type:String,default:\"Press enter to deselect group\"},showLabels:{type:Boolean,default:!0},limit:{type:Number,default:99999},maxHeight:{type:Number,default:300},limitText:{type:Function,default:function(t){return\"and \".concat(t,\" more\")}},loading:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},openDirection:{type:String,default:\"\"},showNoOptions:{type:Boolean,default:!0},showNoResults:{type:Boolean,default:!0},tabindex:{type:Number,default:0}},computed:{isSingleLabelVisible:function(){return(this.singleValue||0===this.singleValue)&&(!this.isOpen||!this.searchable)&&!this.visibleValues.length},isPlaceholderVisible:function(){return!(this.internalValue.length||this.searchable&&this.isOpen)},visibleValues:function(){return this.multiple?this.internalValue.slice(0,this.limit):[]},singleValue:function(){return this.internalValue[0]},deselectLabelText:function(){return this.showLabels?this.deselectLabel:\"\"},deselectGroupLabelText:function(){return this.showLabels?this.deselectGroupLabel:\"\"},selectLabelText:function(){return this.showLabels?this.selectLabel:\"\"},selectGroupLabelText:function(){return this.showLabels?this.selectGroupLabel:\"\"},selectedLabelText:function(){return this.showLabels?this.selectedLabel:\"\"},inputStyle:function(){if(this.searchable||this.multiple&&this.value&&this.value.length)return this.isOpen?{width:\"100%\"}:{width:\"0\",position:\"absolute\",padding:\"0\"}},contentStyle:function(){return this.options.length?{display:\"inline-block\"}:{display:\"block\"}},isAbove:function(){return\"above\"===this.openDirection||\"top\"===this.openDirection||\"below\"!==this.openDirection&&\"bottom\"!==this.openDirection&&\"above\"===this.preferredOpenDirection},showSearchInput:function(){return this.searchable&&(!this.hasSingleSelectedSlot||!this.visibleSingleValue&&0!==this.visibleSingleValue||this.isOpen)}}}},function(t,e,n){var i=n(1)(\"unscopables\"),r=Array.prototype;void 0==r[i]&&n(8)(r,i,{}),t.exports=function(t){r[i][t]=!0}},function(t,e,n){var i=n(18),r=n(19),o=n(85);t.exports=function(t){return function(e,n,s){var u,a=i(e),l=r(a.length),c=o(s,l);if(t&&n!=n){for(;l>c;)if((u=a[c++])!=u)return!0}else for(;l>c;c++)if((t||c in a)&&a[c]===n)return t||c||0;return!t&&-1}}},function(t,e,n){var i=n(9),r=n(1)(\"toStringTag\"),o=\"Arguments\"==i(function(){return arguments}()),s=function(t,e){try{return t[e]}catch(t){}};t.exports=function(t){var e,n,u;return void 0===t?\"Undefined\":null===t?\"Null\":\"string\"==typeof(n=s(e=Object(t),r))?n:o?i(e):\"Object\"==(u=i(e))&&\"function\"==typeof e.callee?\"Arguments\":u}},function(t,e,n){\"use strict\";var i=n(2);t.exports=function(){var t=i(this),e=\"\";return t.global&&(e+=\"g\"),t.ignoreCase&&(e+=\"i\"),t.multiline&&(e+=\"m\"),t.unicode&&(e+=\"u\"),t.sticky&&(e+=\"y\"),e}},function(t,e,n){var i=n(0).document;t.exports=i&&i.documentElement},function(t,e,n){t.exports=!n(4)&&!n(7)(function(){return 7!=Object.defineProperty(n(21)(\"div\"),\"a\",{get:function(){return 7}}).a})},function(t,e,n){var i=n(9);t.exports=Array.isArray||function(t){return\"Array\"==i(t)}},function(t,e,n){\"use strict\";function i(t){var e,n;this.promise=new t(function(t,i){if(void 0!==e||void 0!==n)throw TypeError(\"Bad Promise constructor\");e=t,n=i}),this.resolve=r(e),this.reject=r(n)}var r=n(14);t.exports.f=function(t){return new i(t)}},function(t,e,n){var i=n(2),r=n(76),o=n(22),s=n(27)(\"IE_PROTO\"),u=function(){},a=function(){var t,e=n(21)(\"iframe\"),i=o.length;for(e.style.display=\"none\",n(40).appendChild(e),e.src=\"javascript:\",t=e.contentWindow.document,t.open(),t.write(\"<script>document.F=Object<\\/script>\"),t.close(),a=t.F;i--;)delete a.prototype[o[i]];return a()};t.exports=Object.create||function(t,e){var n;return null!==t?(u.prototype=i(t),n=new u,u.prototype=null,n[s]=t):n=a(),void 0===e?n:r(n,e)}},function(t,e,n){var i=n(79),r=n(25),o=n(18),s=n(29),u=n(12),a=n(41),l=Object.getOwnPropertyDescriptor;e.f=n(4)?l:function(t,e){if(t=o(t),e=s(e,!0),a)try{return l(t,e)}catch(t){}if(u(t,e))return r(!i.f.call(t,e),t[e])}},function(t,e,n){var i=n(12),r=n(18),o=n(37)(!1),s=n(27)(\"IE_PROTO\");t.exports=function(t,e){var n,u=r(t),a=0,l=[];for(n in u)n!=s&&i(u,n)&&l.push(n);for(;e.length>a;)i(u,n=e[a++])&&(~o(l,n)||l.push(n));return l}},function(t,e,n){var i=n(46),r=n(22);t.exports=Object.keys||function(t){return i(t,r)}},function(t,e,n){var i=n(2),r=n(5),o=n(43);t.exports=function(t,e){if(i(t),r(e)&&e.constructor===t)return e;var n=o.f(t);return(0,n.resolve)(e),n.promise}},function(t,e,n){var i=n(10),r=n(0),o=r[\"__core-js_shared__\"]||(r[\"__core-js_shared__\"]={});(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})(\"versions\",[]).push({version:i.version,mode:n(24)?\"pure\":\"global\",copyright:\"© 2018 Denis Pushkarev (zloirock.ru)\"})},function(t,e,n){var i=n(2),r=n(14),o=n(1)(\"species\");t.exports=function(t,e){var n,s=i(t).constructor;return void 0===s||void 0==(n=i(s)[o])?e:r(n)}},function(t,e,n){var i=n(3),r=n(16),o=n(7),s=n(84),u=\"[\"+s+\"]\",a=\"​…\",l=RegExp(\"^\"+u+u+\"*\"),c=RegExp(u+u+\"*$\"),f=function(t,e,n){var r={},u=o(function(){return!!s[t]()||a[t]()!=a}),l=r[t]=u?e(p):s[t];n&&(r[n]=l),i(i.P+i.F*u,\"String\",r)},p=f.trim=function(t,e){return t=String(r(t)),1&e&&(t=t.replace(l,\"\")),2&e&&(t=t.replace(c,\"\")),t};t.exports=f},function(t,e,n){var i,r,o,s=n(11),u=n(68),a=n(40),l=n(21),c=n(0),f=c.process,p=c.setImmediate,h=c.clearImmediate,d=c.MessageChannel,v=c.Dispatch,g=0,y={},m=function(){var t=+this;if(y.hasOwnProperty(t)){var e=y[t];delete y[t],e()}},b=function(t){m.call(t.data)};p&&h||(p=function(t){for(var e=[],n=1;arguments.length>n;)e.push(arguments[n++]);return y[++g]=function(){u(\"function\"==typeof t?t:Function(t),e)},i(g),g},h=function(t){delete y[t]},\"process\"==n(9)(f)?i=function(t){f.nextTick(s(m,t,1))}:v&&v.now?i=function(t){v.now(s(m,t,1))}:d?(r=new d,o=r.port2,r.port1.onmessage=b,i=s(o.postMessage,o,1)):c.addEventListener&&\"function\"==typeof postMessage&&!c.importScripts?(i=function(t){c.postMessage(t+\"\",\"*\")},c.addEventListener(\"message\",b,!1)):i=\"onreadystatechange\"in l(\"script\")?function(t){a.appendChild(l(\"script\")).onreadystatechange=function(){a.removeChild(this),m.call(t)}}:function(t){setTimeout(s(m,t,1),0)}),t.exports={set:p,clear:h}},function(t,e){var n=Math.ceil,i=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?i:n)(t)}},function(t,e,n){\"use strict\";var i=n(3),r=n(20)(5),o=!0;\"find\"in[]&&Array(1).find(function(){o=!1}),i(i.P+i.F*o,\"Array\",{find:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),n(36)(\"find\")},function(t,e,n){\"use strict\";var i,r,o,s,u=n(24),a=n(0),l=n(11),c=n(38),f=n(3),p=n(5),h=n(14),d=n(61),v=n(66),g=n(50),y=n(52).set,m=n(75)(),b=n(43),_=n(80),x=n(86),w=n(48),S=a.TypeError,O=a.process,L=O&&O.versions,k=L&&L.v8||\"\",P=a.Promise,T=\"process\"==c(O),V=function(){},E=r=b.f,A=!!function(){try{var t=P.resolve(1),e=(t.constructor={})[n(1)(\"species\")]=function(t){t(V,V)};return(T||\"function\"==typeof PromiseRejectionEvent)&&t.then(V)instanceof e&&0!==k.indexOf(\"6.6\")&&-1===x.indexOf(\"Chrome/66\")}catch(t){}}(),C=function(t){var e;return!(!p(t)||\"function\"!=typeof(e=t.then))&&e},D=function(t,e){if(!t._n){t._n=!0;var n=t._c;m(function(){for(var i=t._v,r=1==t._s,o=0;n.length>o;)!function(e){var n,o,s,u=r?e.ok:e.fail,a=e.resolve,l=e.reject,c=e.domain;try{u?(r||(2==t._h&&$(t),t._h=1),!0===u?n=i:(c&&c.enter(),n=u(i),c&&(c.exit(),s=!0)),n===e.promise?l(S(\"Promise-chain cycle\")):(o=C(n))?o.call(n,a,l):a(n)):l(i)}catch(t){c&&!s&&c.exit(),l(t)}}(n[o++]);t._c=[],t._n=!1,e&&!t._h&&j(t)})}},j=function(t){y.call(a,function(){var e,n,i,r=t._v,o=N(t);if(o&&(e=_(function(){T?O.emit(\"unhandledRejection\",r,t):(n=a.onunhandledrejection)?n({promise:t,reason:r}):(i=a.console)&&i.error&&i.error(\"Unhandled promise rejection\",r)}),t._h=T||N(t)?2:1),t._a=void 0,o&&e.e)throw e.v})},N=function(t){return 1!==t._h&&0===(t._a||t._c).length},$=function(t){y.call(a,function(){var e;T?O.emit(\"rejectionHandled\",t):(e=a.onrejectionhandled)&&e({promise:t,reason:t._v})})},F=function(t){var e=this;e._d||(e._d=!0,e=e._w||e,e._v=t,e._s=2,e._a||(e._a=e._c.slice()),D(e,!0))},M=function(t){var e,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===t)throw S(\"Promise can't be resolved itself\");(e=C(t))?m(function(){var i={_w:n,_d:!1};try{e.call(t,l(M,i,1),l(F,i,1))}catch(t){F.call(i,t)}}):(n._v=t,n._s=1,D(n,!1))}catch(t){F.call({_w:n,_d:!1},t)}}};A||(P=function(t){d(this,P,\"Promise\",\"_h\"),h(t),i.call(this);try{t(l(M,this,1),l(F,this,1))}catch(t){F.call(this,t)}},i=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},i.prototype=n(81)(P.prototype,{then:function(t,e){var n=E(g(this,P));return n.ok=\"function\"!=typeof t||t,n.fail=\"function\"==typeof e&&e,n.domain=T?O.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&D(this,!1),n.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new i;this.promise=t,this.resolve=l(M,t,1),this.reject=l(F,t,1)},b.f=E=function(t){return t===P||t===s?new o(t):r(t)}),f(f.G+f.W+f.F*!A,{Promise:P}),n(26)(P,\"Promise\"),n(83)(\"Promise\"),s=n(10).Promise,f(f.S+f.F*!A,\"Promise\",{reject:function(t){var e=E(this);return(0,e.reject)(t),e.promise}}),f(f.S+f.F*(u||!A),\"Promise\",{resolve:function(t){return w(u&&this===s?P:this,t)}}),f(f.S+f.F*!(A&&n(73)(function(t){P.all(t).catch(V)})),\"Promise\",{all:function(t){var e=this,n=E(e),i=n.resolve,r=n.reject,o=_(function(){var n=[],o=0,s=1;v(t,!1,function(t){var u=o++,a=!1;n.push(void 0),s++,e.resolve(t).then(function(t){a||(a=!0,n[u]=t,--s||i(n))},r)}),--s||i(n)});return o.e&&r(o.v),n.promise},race:function(t){var e=this,n=E(e),i=n.reject,r=_(function(){v(t,!1,function(t){e.resolve(t).then(n.resolve,i)})});return r.e&&i(r.v),n.promise}})},function(t,e,n){\"use strict\";var i=n(3),r=n(10),o=n(0),s=n(50),u=n(48);i(i.P+i.R,\"Promise\",{finally:function(t){var e=s(this,r.Promise||o.Promise),n=\"function\"==typeof t;return this.then(n?function(n){return u(e,t()).then(function(){return n})}:t,n?function(n){return u(e,t()).then(function(){throw n})}:t)}})},function(t,e,n){\"use strict\";function i(t){n(99)}var r=n(35),o=n(101),s=n(100),u=i,a=s(r.a,o.a,!1,u,null,null);e.a=a.exports},function(t,e,n){\"use strict\";function i(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}e.a=i},function(t,e,n){\"use strict\";function i(t){return(i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function r(t){return(r=\"function\"==typeof Symbol&&\"symbol\"===i(Symbol.iterator)?function(t){return i(t)}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":i(t)})(t)}e.a=r},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(34),r=(n.n(i),n(55)),o=(n.n(r),n(56)),s=(n.n(o),n(57)),u=n(32),a=n(33);n.d(e,\"Multiselect\",function(){return s.a}),n.d(e,\"multiselectMixin\",function(){return u.a}),n.d(e,\"pointerMixin\",function(){return a.a}),e.default=s.a},function(t,e){t.exports=function(t,e,n,i){if(!(t instanceof e)||void 0!==i&&i in t)throw TypeError(n+\": incorrect invocation!\");return t}},function(t,e,n){var i=n(14),r=n(28),o=n(23),s=n(19);t.exports=function(t,e,n,u,a){i(e);var l=r(t),c=o(l),f=s(l.length),p=a?f-1:0,h=a?-1:1;if(n<2)for(;;){if(p in c){u=c[p],p+=h;break}if(p+=h,a?p<0:f<=p)throw TypeError(\"Reduce of empty array with no initial value\")}for(;a?p>=0:f>p;p+=h)p in c&&(u=e(u,c[p],p,l));return u}},function(t,e,n){var i=n(5),r=n(42),o=n(1)(\"species\");t.exports=function(t){var e;return r(t)&&(e=t.constructor,\"function\"!=typeof e||e!==Array&&!r(e.prototype)||(e=void 0),i(e)&&null===(e=e[o])&&(e=void 0)),void 0===e?Array:e}},function(t,e,n){var i=n(63);t.exports=function(t,e){return new(i(t))(e)}},function(t,e,n){\"use strict\";var i=n(8),r=n(6),o=n(7),s=n(16),u=n(1);t.exports=function(t,e,n){var a=u(t),l=n(s,a,\"\"[t]),c=l[0],f=l[1];o(function(){var e={};return e[a]=function(){return 7},7!=\"\"[t](e)})&&(r(String.prototype,t,c),i(RegExp.prototype,a,2==e?function(t,e){return f.call(t,this,e)}:function(t){return f.call(t,this)}))}},function(t,e,n){var i=n(11),r=n(70),o=n(69),s=n(2),u=n(19),a=n(87),l={},c={},e=t.exports=function(t,e,n,f,p){var h,d,v,g,y=p?function(){return t}:a(t),m=i(n,f,e?2:1),b=0;if(\"function\"!=typeof y)throw TypeError(t+\" is not iterable!\");if(o(y)){for(h=u(t.length);h>b;b++)if((g=e?m(s(d=t[b])[0],d[1]):m(t[b]))===l||g===c)return g}else for(v=y.call(t);!(d=v.next()).done;)if((g=r(v,m,d.value,e))===l||g===c)return g};e.BREAK=l,e.RETURN=c},function(t,e,n){var i=n(5),r=n(82).set;t.exports=function(t,e,n){var o,s=e.constructor;return s!==n&&\"function\"==typeof s&&(o=s.prototype)!==n.prototype&&i(o)&&r&&r(t,o),t}},function(t,e){t.exports=function(t,e,n){var i=void 0===n;switch(e.length){case 0:return i?t():t.call(n);case 1:return i?t(e[0]):t.call(n,e[0]);case 2:return i?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return i?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return i?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},function(t,e,n){var i=n(15),r=n(1)(\"iterator\"),o=Array.prototype;t.exports=function(t){return void 0!==t&&(i.Array===t||o[r]===t)}},function(t,e,n){var i=n(2);t.exports=function(t,e,n,r){try{return r?e(i(n)[0],n[1]):e(n)}catch(e){var o=t.return;throw void 0!==o&&i(o.call(t)),e}}},function(t,e,n){\"use strict\";var i=n(44),r=n(25),o=n(26),s={};n(8)(s,n(1)(\"iterator\"),function(){return this}),t.exports=function(t,e,n){t.prototype=i(s,{next:r(1,n)}),o(t,e+\" Iterator\")}},function(t,e,n){\"use strict\";var i=n(24),r=n(3),o=n(6),s=n(8),u=n(15),a=n(71),l=n(26),c=n(78),f=n(1)(\"iterator\"),p=!([].keys&&\"next\"in[].keys()),h=function(){return this};t.exports=function(t,e,n,d,v,g,y){a(n,e,d);var m,b,_,x=function(t){if(!p&&t in L)return L[t];switch(t){case\"keys\":case\"values\":return function(){return new n(this,t)}}return function(){return new n(this,t)}},w=e+\" Iterator\",S=\"values\"==v,O=!1,L=t.prototype,k=L[f]||L[\"@@iterator\"]||v&&L[v],P=k||x(v),T=v?S?x(\"entries\"):P:void 0,V=\"Array\"==e?L.entries||k:k;if(V&&(_=c(V.call(new t)))!==Object.prototype&&_.next&&(l(_,w,!0),i||\"function\"==typeof _[f]||s(_,f,h)),S&&k&&\"values\"!==k.name&&(O=!0,P=function(){return k.call(this)}),i&&!y||!p&&!O&&L[f]||s(L,f,P),u[e]=P,u[w]=h,v)if(m={values:S?P:x(\"values\"),keys:g?P:x(\"keys\"),entries:T},y)for(b in m)b in L||o(L,b,m[b]);else r(r.P+r.F*(p||O),e,m);return m}},function(t,e,n){var i=n(1)(\"iterator\"),r=!1;try{var o=[7][i]();o.return=function(){r=!0},Array.from(o,function(){throw 2})}catch(t){}t.exports=function(t,e){if(!e&&!r)return!1;var n=!1;try{var o=[7],s=o[i]();s.next=function(){return{done:n=!0}},o[i]=function(){return s},t(o)}catch(t){}return n}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,n){var i=n(0),r=n(52).set,o=i.MutationObserver||i.WebKitMutationObserver,s=i.process,u=i.Promise,a=\"process\"==n(9)(s);t.exports=function(){var t,e,n,l=function(){var i,r;for(a&&(i=s.domain)&&i.exit();t;){r=t.fn,t=t.next;try{r()}catch(i){throw t?n():e=void 0,i}}e=void 0,i&&i.enter()};if(a)n=function(){s.nextTick(l)};else if(!o||i.navigator&&i.navigator.standalone)if(u&&u.resolve){var c=u.resolve(void 0);n=function(){c.then(l)}}else n=function(){r.call(i,l)};else{var f=!0,p=document.createTextNode(\"\");new o(l).observe(p,{characterData:!0}),n=function(){p.data=f=!f}}return function(i){var r={fn:i,next:void 0};e&&(e.next=r),t||(t=r,n()),e=r}}},function(t,e,n){var i=n(13),r=n(2),o=n(47);t.exports=n(4)?Object.defineProperties:function(t,e){r(t);for(var n,s=o(e),u=s.length,a=0;u>a;)i.f(t,n=s[a++],e[n]);return t}},function(t,e,n){var i=n(46),r=n(22).concat(\"length\",\"prototype\");e.f=Object.getOwnPropertyNames||function(t){return i(t,r)}},function(t,e,n){var i=n(12),r=n(28),o=n(27)(\"IE_PROTO\"),s=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=r(t),i(t,o)?t[o]:\"function\"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?s:null}},function(t,e){e.f={}.propertyIsEnumerable},function(t,e){t.exports=function(t){try{return{e:!1,v:t()}}catch(t){return{e:!0,v:t}}}},function(t,e,n){var i=n(6);t.exports=function(t,e,n){for(var r in e)i(t,r,e[r],n);return t}},function(t,e,n){var i=n(5),r=n(2),o=function(t,e){if(r(t),!i(e)&&null!==e)throw TypeError(e+\": can't set as prototype!\")};t.exports={set:Object.setPrototypeOf||(\"__proto__\"in{}?function(t,e,i){try{i=n(11)(Function.call,n(45).f(Object.prototype,\"__proto__\").set,2),i(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,n){return o(t,n),e?t.__proto__=n:i(t,n),t}}({},!1):void 0),check:o}},function(t,e,n){\"use strict\";var i=n(0),r=n(13),o=n(4),s=n(1)(\"species\");t.exports=function(t){var e=i[t];o&&e&&!e[s]&&r.f(e,s,{configurable:!0,get:function(){return this}})}},function(t,e){t.exports=\"\\t\\n\\v\\f\\r   ᠎              \\u2028\\u2029\\ufeff\"},function(t,e,n){var i=n(53),r=Math.max,o=Math.min;t.exports=function(t,e){return t=i(t),t<0?r(t+e,0):o(t,e)}},function(t,e,n){var i=n(0),r=i.navigator;t.exports=r&&r.userAgent||\"\"},function(t,e,n){var i=n(38),r=n(1)(\"iterator\"),o=n(15);t.exports=n(10).getIteratorMethod=function(t){if(void 0!=t)return t[r]||t[\"@@iterator\"]||o[i(t)]}},function(t,e,n){\"use strict\";var i=n(3),r=n(20)(2);i(i.P+i.F*!n(17)([].filter,!0),\"Array\",{filter:function(t){return r(this,t,arguments[1])}})},function(t,e,n){\"use strict\";var i=n(3),r=n(37)(!1),o=[].indexOf,s=!!o&&1/[1].indexOf(1,-0)<0;i(i.P+i.F*(s||!n(17)(o)),\"Array\",{indexOf:function(t){return s?o.apply(this,arguments)||0:r(this,t,arguments[1])}})},function(t,e,n){var i=n(3);i(i.S,\"Array\",{isArray:n(42)})},function(t,e,n){\"use strict\";var i=n(3),r=n(20)(1);i(i.P+i.F*!n(17)([].map,!0),\"Array\",{map:function(t){return r(this,t,arguments[1])}})},function(t,e,n){\"use strict\";var i=n(3),r=n(62);i(i.P+i.F*!n(17)([].reduce,!0),\"Array\",{reduce:function(t){return r(this,t,arguments.length,arguments[1],!1)}})},function(t,e,n){var i=Date.prototype,r=i.toString,o=i.getTime;new Date(NaN)+\"\"!=\"Invalid Date\"&&n(6)(i,\"toString\",function(){var t=o.call(this);return t===t?r.call(this):\"Invalid Date\"})},function(t,e,n){n(4)&&\"g\"!=/./g.flags&&n(13).f(RegExp.prototype,\"flags\",{configurable:!0,get:n(39)})},function(t,e,n){n(65)(\"search\",1,function(t,e,n){return[function(n){\"use strict\";var i=t(this),r=void 0==n?void 0:n[e];return void 0!==r?r.call(n,i):new RegExp(n)[e](String(i))},n]})},function(t,e,n){\"use strict\";n(94);var i=n(2),r=n(39),o=n(4),s=/./.toString,u=function(t){n(6)(RegExp.prototype,\"toString\",t,!0)};n(7)(function(){return\"/a/b\"!=s.call({source:\"a\",flags:\"b\"})})?u(function(){var t=i(this);return\"/\".concat(t.source,\"/\",\"flags\"in t?t.flags:!o&&t instanceof RegExp?r.call(t):void 0)}):\"toString\"!=s.name&&u(function(){return s.call(this)})},function(t,e,n){\"use strict\";n(51)(\"trim\",function(t){return function(){return t(this,3)}})},function(t,e,n){for(var i=n(34),r=n(47),o=n(6),s=n(0),u=n(8),a=n(15),l=n(1),c=l(\"iterator\"),f=l(\"toStringTag\"),p=a.Array,h={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},d=r(h),v=0;v<d.length;v++){var g,y=d[v],m=h[y],b=s[y],_=b&&b.prototype;if(_&&(_[c]||u(_,c,p),_[f]||u(_,f,y),a[y]=p,m))for(g in i)_[g]||o(_,g,i[g],!0)}},function(t,e){},function(t,e){t.exports=function(t,e,n,i,r,o){var s,u=t=t||{},a=typeof t.default;\"object\"!==a&&\"function\"!==a||(s=t,u=t.default);var l=\"function\"==typeof u?u.options:u;e&&(l.render=e.render,l.staticRenderFns=e.staticRenderFns,l._compiled=!0),n&&(l.functional=!0),r&&(l._scopeId=r);var c;if(o?(c=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),i&&i.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(o)},l._ssrRegister=c):i&&(c=i),c){var f=l.functional,p=f?l.render:l.beforeCreate;f?(l._injectStyles=c,l.render=function(t,e){return c.call(e),p(t,e)}):l.beforeCreate=p?[].concat(p,c):[c]}return{esModule:s,exports:u,options:l}}},function(t,e,n){\"use strict\";var i=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"multiselect\",class:{\"multiselect--active\":t.isOpen,\"multiselect--disabled\":t.disabled,\"multiselect--above\":t.isAbove},attrs:{tabindex:t.searchable?-1:t.tabindex},on:{focus:function(e){t.activate()},blur:function(e){!t.searchable&&t.deactivate()},keydown:[function(e){return\"button\"in e||!t._k(e.keyCode,\"down\",40,e.key,[\"Down\",\"ArrowDown\"])?e.target!==e.currentTarget?null:(e.preventDefault(),void t.pointerForward()):null},function(e){return\"button\"in e||!t._k(e.keyCode,\"up\",38,e.key,[\"Up\",\"ArrowUp\"])?e.target!==e.currentTarget?null:(e.preventDefault(),void t.pointerBackward()):null}],keypress:function(e){return\"button\"in e||!t._k(e.keyCode,\"enter\",13,e.key,\"Enter\")||!t._k(e.keyCode,\"tab\",9,e.key,\"Tab\")?(e.stopPropagation(),e.target!==e.currentTarget?null:void t.addPointerElement(e)):null},keyup:function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"esc\",27,e.key,\"Escape\"))return null;t.deactivate()}}},[t._t(\"caret\",[n(\"div\",{staticClass:\"multiselect__select\",on:{mousedown:function(e){e.preventDefault(),e.stopPropagation(),t.toggle()}}})],{toggle:t.toggle}),t._v(\" \"),t._t(\"clear\",null,{search:t.search}),t._v(\" \"),n(\"div\",{ref:\"tags\",staticClass:\"multiselect__tags\"},[t._t(\"selection\",[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.visibleValues.length>0,expression:\"visibleValues.length > 0\"}],staticClass:\"multiselect__tags-wrap\"},[t._l(t.visibleValues,function(e,i){return[t._t(\"tag\",[n(\"span\",{key:i,staticClass:\"multiselect__tag\"},[n(\"span\",{domProps:{textContent:t._s(t.getOptionLabel(e))}}),t._v(\" \"),n(\"i\",{staticClass:\"multiselect__tag-icon\",attrs:{\"aria-hidden\":\"true\",tabindex:\"1\"},on:{keypress:function(n){if(!(\"button\"in n)&&t._k(n.keyCode,\"enter\",13,n.key,\"Enter\"))return null;n.preventDefault(),t.removeElement(e)},mousedown:function(n){n.preventDefault(),t.removeElement(e)}}})])],{option:e,search:t.search,remove:t.removeElement})]})],2),t._v(\" \"),t.internalValue&&t.internalValue.length>t.limit?[t._t(\"limit\",[n(\"strong\",{staticClass:\"multiselect__strong\",domProps:{textContent:t._s(t.limitText(t.internalValue.length-t.limit))}})])]:t._e()],{search:t.search,remove:t.removeElement,values:t.visibleValues,isOpen:t.isOpen}),t._v(\" \"),n(\"transition\",{attrs:{name:\"multiselect__loading\"}},[t._t(\"loading\",[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.loading,expression:\"loading\"}],staticClass:\"multiselect__spinner\"})])],2),t._v(\" \"),t.searchable?n(\"input\",{ref:\"search\",staticClass:\"multiselect__input\",style:t.inputStyle,attrs:{name:t.name,id:t.id,type:\"text\",autocomplete:\"nope\",placeholder:t.placeholder,disabled:t.disabled,tabindex:t.tabindex},domProps:{value:t.search},on:{input:function(e){t.updateSearch(e.target.value)},focus:function(e){e.preventDefault(),t.activate()},blur:function(e){e.preventDefault(),t.deactivate()},keyup:function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"esc\",27,e.key,\"Escape\"))return null;t.deactivate()},keydown:[function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"down\",40,e.key,[\"Down\",\"ArrowDown\"]))return null;e.preventDefault(),t.pointerForward()},function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"up\",38,e.key,[\"Up\",\"ArrowUp\"]))return null;e.preventDefault(),t.pointerBackward()},function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"delete\",[8,46],e.key,[\"Backspace\",\"Delete\"]))return null;e.stopPropagation(),t.removeLastElement()}],keypress:function(e){return\"button\"in e||!t._k(e.keyCode,\"enter\",13,e.key,\"Enter\")?(e.preventDefault(),e.stopPropagation(),e.target!==e.currentTarget?null:void t.addPointerElement(e)):null}}}):t._e(),t._v(\" \"),t.isSingleLabelVisible?n(\"span\",{staticClass:\"multiselect__single\",on:{mousedown:function(e){return e.preventDefault(),t.toggle(e)}}},[t._t(\"singleLabel\",[[t._v(t._s(t.currentOptionLabel))]],{option:t.singleValue})],2):t._e(),t._v(\" \"),t.isPlaceholderVisible?n(\"span\",{staticClass:\"multiselect__placeholder\",on:{mousedown:function(e){return e.preventDefault(),t.toggle(e)}}},[t._t(\"placeholder\",[t._v(\"\\n \"+t._s(t.placeholder)+\"\\n \")])],2):t._e()],2),t._v(\" \"),n(\"transition\",{attrs:{name:\"multiselect\"}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.isOpen,expression:\"isOpen\"}],ref:\"list\",staticClass:\"multiselect__content-wrapper\",style:{maxHeight:t.optimizedHeight+\"px\"},attrs:{tabindex:\"-1\"},on:{focus:t.activate,mousedown:function(t){t.preventDefault()}}},[n(\"ul\",{staticClass:\"multiselect__content\",style:t.contentStyle},[t._t(\"beforeList\"),t._v(\" \"),t.multiple&&t.max===t.internalValue.length?n(\"li\",[n(\"span\",{staticClass:\"multiselect__option\"},[t._t(\"maxElements\",[t._v(\"Maximum of \"+t._s(t.max)+\" options selected. First remove a selected option to select another.\")])],2)]):t._e(),t._v(\" \"),!t.max||t.internalValue.length<t.max?t._l(t.filteredOptions,function(e,i){return n(\"li\",{key:i,staticClass:\"multiselect__element\"},[e&&(e.$isLabel||e.$isDisabled)?t._e():n(\"span\",{staticClass:\"multiselect__option\",class:t.optionHighlight(i,e),attrs:{\"data-select\":e&&e.isTag?t.tagPlaceholder:t.selectLabelText,\"data-selected\":t.selectedLabelText,\"data-deselect\":t.deselectLabelText},on:{click:function(n){n.stopPropagation(),t.select(e)},mouseenter:function(e){if(e.target!==e.currentTarget)return null;t.pointerSet(i)}}},[t._t(\"option\",[n(\"span\",[t._v(t._s(t.getOptionLabel(e)))])],{option:e,search:t.search})],2),t._v(\" \"),e&&(e.$isLabel||e.$isDisabled)?n(\"span\",{staticClass:\"multiselect__option\",class:t.groupHighlight(i,e),attrs:{\"data-select\":t.groupSelect&&t.selectGroupLabelText,\"data-deselect\":t.groupSelect&&t.deselectGroupLabelText},on:{mouseenter:function(e){if(e.target!==e.currentTarget)return null;t.groupSelect&&t.pointerSet(i)},mousedown:function(n){n.preventDefault(),t.selectGroup(e)}}},[t._t(\"option\",[n(\"span\",[t._v(t._s(t.getOptionLabel(e)))])],{option:e,search:t.search})],2):t._e()])}):t._e(),t._v(\" \"),n(\"li\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.showNoResults&&0===t.filteredOptions.length&&t.search&&!t.loading,expression:\"showNoResults && (filteredOptions.length === 0 && search && !loading)\"}]},[n(\"span\",{staticClass:\"multiselect__option\"},[t._t(\"noResult\",[t._v(\"No elements found. Consider changing the search query.\")],{search:t.search})],2)]),t._v(\" \"),n(\"li\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.showNoOptions&&0===t.options.length&&!t.search&&!t.loading,expression:\"showNoOptions && (options.length === 0 && !search && !loading)\"}]},[n(\"span\",{staticClass:\"multiselect__option\"},[t._t(\"noOptions\",[t._v(\"List is empty.\")])],2)]),t._v(\" \"),t._t(\"afterList\")],2)])])],2)},r=[],o={render:i,staticRenderFns:r};e.a=o}])});","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"vue\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"vue\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"vue-notification\"] = factory(require(\"vue\"));\n\telse\n\t\troot[\"vue-notification\"] = factory(root[\"vue\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_20__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 2);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\n// this module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle\n\nmodule.exports = function normalizeComponent (\n rawScriptExports,\n compiledTemplate,\n scopeId,\n cssModules\n) {\n var esModule\n var scriptExports = rawScriptExports = rawScriptExports || {}\n\n // ES6 modules interop\n var type = typeof rawScriptExports.default\n if (type === 'object' || type === 'function') {\n esModule = rawScriptExports\n scriptExports = rawScriptExports.default\n }\n\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (compiledTemplate) {\n options.render = compiledTemplate.render\n options.staticRenderFns = compiledTemplate.staticRenderFns\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = scopeId\n }\n\n // inject cssModules\n if (cssModules) {\n var computed = Object.create(options.computed || null)\n Object.keys(cssModules).forEach(function (key) {\n var module = cssModules[key]\n computed[key] = function () { return module }\n })\n options.computed = computed\n }\n\n return {\n esModule: esModule,\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return events; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue__ = __webpack_require__(20);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_vue__);\n\n\nvar events = new __WEBPACK_IMPORTED_MODULE_0_vue___default.a({ name: 'vue-notification' });\n\n/***/ }),\n/* 2 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Notifications_vue__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Notifications_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__Notifications_vue__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__events__ = __webpack_require__(1);\nvar _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; };\n\n\n\n\nvar Notify = {\n install: function install(Vue) {\n var args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (this.installed) {\n return;\n }\n\n this.installed = true;\n this.params = args;\n\n Vue.component(args.componentName || 'notifications', __WEBPACK_IMPORTED_MODULE_0__Notifications_vue___default.a);\n\n var notify = function notify(params) {\n if (typeof params === 'string') {\n params = { title: '', text: params };\n }\n\n if ((typeof params === 'undefined' ? 'undefined' : _typeof(params)) === 'object') {\n __WEBPACK_IMPORTED_MODULE_1__events__[\"a\" /* events */].$emit('add', params);\n }\n };\n\n notify.close = function (id) {\n __WEBPACK_IMPORTED_MODULE_1__events__[\"a\" /* events */].$emit('close', id);\n };\n\n var name = args.name || 'notify';\n\n Vue.prototype['$' + name] = notify;\n Vue[name] = notify;\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Notify);\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/* styles */\n__webpack_require__(17)\n\nvar Component = __webpack_require__(0)(\n /* script */\n __webpack_require__(5),\n /* template */\n __webpack_require__(15),\n /* scopeId */\n null,\n /* cssModules */\n null\n)\n\nmodule.exports = Component.exports\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'CssGroup',\n props: ['name']\n});\n\n/***/ }),\n/* 5 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__events__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__defaults__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__VelocityGroup_vue__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__VelocityGroup_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4__VelocityGroup_vue__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__CssGroup_vue__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__CssGroup_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5__CssGroup_vue__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__parser__ = __webpack_require__(8);\nfunction _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; }\n\n\n\n\n\n\n\n\n\nvar STATE = {\n IDLE: 0,\n DESTROYED: 2\n};\n\nvar Component = {\n name: 'Notifications',\n components: {\n VelocityGroup: __WEBPACK_IMPORTED_MODULE_4__VelocityGroup_vue___default.a,\n CssGroup: __WEBPACK_IMPORTED_MODULE_5__CssGroup_vue___default.a\n },\n props: {\n group: {\n type: String,\n default: ''\n },\n\n width: {\n type: [Number, String],\n default: 300\n },\n\n reverse: {\n type: Boolean,\n default: false\n },\n\n position: {\n type: [String, Array],\n default: function _default() {\n return __WEBPACK_IMPORTED_MODULE_3__defaults__[\"a\" /* default */].position;\n }\n },\n\n classes: {\n type: String,\n default: 'vue-notification'\n },\n\n animationType: {\n type: String,\n default: 'css',\n validator: function validator(value) {\n return value === 'css' || value === 'velocity';\n }\n },\n\n animation: {\n type: Object,\n default: function _default() {\n return __WEBPACK_IMPORTED_MODULE_3__defaults__[\"a\" /* default */].velocityAnimation;\n }\n },\n\n animationName: {\n type: String,\n default: __WEBPACK_IMPORTED_MODULE_3__defaults__[\"a\" /* default */].cssAnimation\n },\n\n speed: {\n type: Number,\n default: 300\n },\n\n cooldown: {\n type: Number,\n default: 0\n },\n\n duration: {\n type: Number,\n default: 3000\n },\n\n delay: {\n type: Number,\n default: 0\n },\n\n max: {\n type: Number,\n default: Infinity\n },\n\n ignoreDuplicates: {\n type: Boolean,\n default: false\n },\n\n closeOnClick: {\n type: Boolean,\n default: true\n }\n },\n data: function data() {\n return {\n list: [],\n velocity: __WEBPACK_IMPORTED_MODULE_0__index__[\"default\"].params.velocity\n };\n },\n mounted: function mounted() {\n __WEBPACK_IMPORTED_MODULE_1__events__[\"a\" /* events */].$on('add', this.addItem);\n __WEBPACK_IMPORTED_MODULE_1__events__[\"a\" /* events */].$on('close', this.closeItem);\n },\n\n computed: {\n actualWidth: function actualWidth() {\n return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_6__parser__[\"a\" /* default */])(this.width);\n },\n isVA: function isVA() {\n return this.animationType === 'velocity';\n },\n componentName: function componentName() {\n return this.isVA ? 'VelocityGroup' : 'CssGroup';\n },\n styles: function styles() {\n var _listToDirection = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util__[\"a\" /* listToDirection */])(this.position),\n x = _listToDirection.x,\n y = _listToDirection.y;\n\n var width = this.actualWidth.value;\n var suffix = this.actualWidth.type;\n\n var styles = _defineProperty({\n width: width + suffix\n }, y, '0px');\n\n if (x === 'center') {\n styles['left'] = 'calc(50% - ' + width / 2 + suffix + ')';\n } else {\n styles[x] = '0px';\n }\n\n return styles;\n },\n active: function active() {\n return this.list.filter(function (v) {\n return v.state !== STATE.DESTROYED;\n });\n },\n botToTop: function botToTop() {\n return this.styles.hasOwnProperty('bottom');\n }\n },\n methods: {\n destroyIfNecessary: function destroyIfNecessary(item) {\n if (this.closeOnClick) {\n this.destroy(item);\n }\n },\n addItem: function addItem(event) {\n var _this = this;\n\n event.group = event.group || '';\n\n if (this.group !== event.group) {\n return;\n }\n\n if (event.clean || event.clear) {\n this.destroyAll();\n return;\n }\n\n var duration = typeof event.duration === 'number' ? event.duration : this.duration;\n\n var speed = typeof event.speed === 'number' ? event.speed : this.speed;\n\n var ignoreDuplicates = typeof event.ignoreDuplicates === 'boolean' ? event.ignoreDuplicates : this.ignoreDuplicates;\n\n var title = event.title,\n text = event.text,\n type = event.type,\n data = event.data,\n id = event.id;\n\n\n var item = {\n id: id || __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util__[\"b\" /* Id */])(),\n title: title,\n text: text,\n type: type,\n state: STATE.IDLE,\n speed: speed,\n length: duration + 2 * speed,\n data: data\n };\n\n if (duration >= 0) {\n item.timer = setTimeout(function () {\n _this.destroy(item);\n }, item.length);\n }\n\n var direction = this.reverse ? !this.botToTop : this.botToTop;\n\n var indexToDestroy = -1;\n\n var isDuplicate = this.active.some(function (item) {\n return item.title === event.title && item.text === event.text;\n });\n\n var canAdd = ignoreDuplicates ? !isDuplicate : true;\n\n if (!canAdd) return;\n\n if (direction) {\n this.list.push(item);\n\n if (this.active.length > this.max) {\n indexToDestroy = 0;\n }\n } else {\n this.list.unshift(item);\n\n if (this.active.length > this.max) {\n indexToDestroy = this.active.length - 1;\n }\n }\n\n if (indexToDestroy !== -1) {\n this.destroy(this.active[indexToDestroy]);\n }\n },\n closeItem: function closeItem(id) {\n this.destroyById(id);\n },\n notifyClass: function notifyClass(item) {\n return ['vue-notification-template', this.classes, item.type];\n },\n notifyWrapperStyle: function notifyWrapperStyle(item) {\n return this.isVA ? null : { transition: 'all ' + item.speed + 'ms' };\n },\n destroy: function destroy(item) {\n clearTimeout(item.timer);\n item.state = STATE.DESTROYED;\n\n if (!this.isVA) {\n this.clean();\n }\n },\n destroyById: function destroyById(id) {\n var item = this.list.find(function (v) {\n return v.id === id;\n });\n\n if (item) {\n this.destroy(item);\n }\n },\n destroyAll: function destroyAll() {\n this.active.forEach(this.destroy);\n },\n getAnimation: function getAnimation(index, el) {\n var animation = this.animation[index];\n\n return typeof animation === 'function' ? animation.call(this, el) : animation;\n },\n enter: function enter(_ref) {\n var el = _ref.el,\n complete = _ref.complete;\n\n var animation = this.getAnimation('enter', el);\n\n this.velocity(el, animation, {\n duration: this.speed,\n complete: complete\n });\n },\n leave: function leave(_ref2) {\n var el = _ref2.el,\n complete = _ref2.complete;\n\n var animation = this.getAnimation('leave', el);\n\n this.velocity(el, animation, {\n duration: this.speed,\n complete: complete\n });\n },\n clean: function clean() {\n this.list = this.list.filter(function (v) {\n return v.state !== STATE.DESTROYED;\n });\n }\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Component);\n\n/***/ }),\n/* 6 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'VelocityGroup',\n methods: {\n enter: function enter(el, complete) {\n this.$emit('enter', { el: el, complete: complete });\n },\n leave: function leave(el, complete) {\n this.$emit('leave', { el: el, complete: complete });\n },\n afterLeave: function afterLeave() {\n this.$emit('afterLeave');\n }\n }\n});\n\n/***/ }),\n/* 7 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n position: ['top', 'right'],\n cssAnimation: 'vn-fade',\n velocityAnimation: {\n enter: function enter(el) {\n var height = el.clientHeight;\n\n return {\n height: [height, 0],\n opacity: [1, 0]\n };\n },\n leave: {\n height: 0,\n opacity: [0, 1]\n }\n }\n});\n\n/***/ }),\n/* 8 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export parse */\nvar _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; };\n\nvar floatRegexp = '[-+]?[0-9]*.?[0-9]+';\n\nvar types = [{\n name: 'px',\n regexp: new RegExp('^' + floatRegexp + 'px$')\n}, {\n name: '%',\n regexp: new RegExp('^' + floatRegexp + '%$')\n}, {\n name: 'px',\n regexp: new RegExp('^' + floatRegexp + '$')\n}];\n\nvar getType = function getType(value) {\n if (value === 'auto') {\n return {\n type: value,\n value: 0\n };\n }\n\n for (var i = 0; i < types.length; i++) {\n var type = types[i];\n if (type.regexp.test(value)) {\n return {\n type: type.name,\n value: parseFloat(value)\n };\n }\n }\n\n return {\n type: '',\n value: value\n };\n};\n\nvar parse = function parse(value) {\n switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n case 'number':\n return { type: 'px', value: value };\n case 'string':\n return getType(value);\n default:\n return { type: '', value: value };\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (parse);\n\n/***/ }),\n/* 9 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return Id; });\n/* unused harmony export split */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return listToDirection; });\nvar directions = {\n x: ['left', 'center', 'right'],\n y: ['top', 'bottom']\n};\n\nvar Id = function (i) {\n return function () {\n return i++;\n };\n}(0);\n\nvar split = function split(value) {\n if (typeof value !== 'string') {\n return [];\n }\n\n return value.split(/\\s+/gi).filter(function (v) {\n return v;\n });\n};\n\nvar listToDirection = function listToDirection(value) {\n if (typeof value === 'string') {\n value = split(value);\n }\n\n var x = null;\n var y = null;\n\n value.forEach(function (v) {\n if (directions.y.indexOf(v) !== -1) {\n y = v;\n }\n if (directions.x.indexOf(v) !== -1) {\n x = v;\n }\n });\n\n return { x: x, y: y };\n};\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports = module.exports = __webpack_require__(11)();\n// imports\n\n\n// module\nexports.push([module.i, \".vue-notification-group{display:block;position:fixed;z-index:5000}.vue-notification-wrapper{display:block;overflow:hidden;width:100%;margin:0;padding:0}.notification-title{font-weight:600}.vue-notification-template{background:#fff}.vue-notification,.vue-notification-template{display:block;box-sizing:border-box;text-align:left}.vue-notification{font-size:12px;padding:10px;margin:0 5px 5px;color:#fff;background:#44a4fc;border-left:5px solid #187fe7}.vue-notification.warn{background:#ffb648;border-left-color:#f48a06}.vue-notification.error{background:#e54d42;border-left-color:#b82e24}.vue-notification.success{background:#68cd86;border-left-color:#42a85f}.vn-fade-enter-active,.vn-fade-leave-active,.vn-fade-move{transition:all .5s}.vn-fade-enter,.vn-fade-leave-to{opacity:0}\", \"\"]);\n\n// exports\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports) {\n\n/*\r\n\tMIT License http://www.opensource.org/licenses/mit-license.php\r\n\tAuthor Tobias Koppers @sokra\r\n*/\r\n// css base code, injected by the css-loader\r\nmodule.exports = function() {\r\n\tvar list = [];\r\n\r\n\t// return the list of modules as css string\r\n\tlist.toString = function toString() {\r\n\t\tvar result = [];\r\n\t\tfor(var i = 0; i < this.length; i++) {\r\n\t\t\tvar item = this[i];\r\n\t\t\tif(item[2]) {\r\n\t\t\t\tresult.push(\"@media \" + item[2] + \"{\" + item[1] + \"}\");\r\n\t\t\t} else {\r\n\t\t\t\tresult.push(item[1]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result.join(\"\");\r\n\t};\r\n\r\n\t// import a list of modules into the list\r\n\tlist.i = function(modules, mediaQuery) {\r\n\t\tif(typeof modules === \"string\")\r\n\t\t\tmodules = [[null, modules, \"\"]];\r\n\t\tvar alreadyImportedModules = {};\r\n\t\tfor(var i = 0; i < this.length; i++) {\r\n\t\t\tvar id = this[i][0];\r\n\t\t\tif(typeof id === \"number\")\r\n\t\t\t\talreadyImportedModules[id] = true;\r\n\t\t}\r\n\t\tfor(i = 0; i < modules.length; i++) {\r\n\t\t\tvar item = modules[i];\r\n\t\t\t// skip already imported module\r\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\r\n\t\t\t// when a module is imported multiple times with different media queries.\r\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\r\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\r\n\t\t\t\tif(mediaQuery && !item[2]) {\r\n\t\t\t\t\titem[2] = mediaQuery;\r\n\t\t\t\t} else if(mediaQuery) {\r\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\r\n\t\t\t\t}\r\n\t\t\t\tlist.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\treturn list;\r\n};\r\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Component = __webpack_require__(0)(\n /* script */\n __webpack_require__(4),\n /* template */\n __webpack_require__(16),\n /* scopeId */\n null,\n /* cssModules */\n null\n)\n\nmodule.exports = Component.exports\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Component = __webpack_require__(0)(\n /* script */\n __webpack_require__(6),\n /* template */\n __webpack_require__(14),\n /* scopeId */\n null,\n /* cssModules */\n null\n)\n\nmodule.exports = Component.exports\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports) {\n\nmodule.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('transition-group', {\n attrs: {\n \"css\": false\n },\n on: {\n \"enter\": _vm.enter,\n \"leave\": _vm.leave,\n \"after-leave\": _vm.afterLeave\n }\n }, [_vm._t(\"default\")], 2)\n},staticRenderFns: []}\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports) {\n\nmodule.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"vue-notification-group\",\n style: (_vm.styles)\n }, [_c(_vm.componentName, {\n tag: \"component\",\n attrs: {\n \"name\": _vm.animationName\n },\n on: {\n \"enter\": _vm.enter,\n \"leave\": _vm.leave,\n \"after-leave\": _vm.clean\n }\n }, _vm._l((_vm.active), function(item) {\n return _c('div', {\n key: item.id,\n staticClass: \"vue-notification-wrapper\",\n style: (_vm.notifyWrapperStyle(item)),\n attrs: {\n \"data-id\": item.id\n }\n }, [_vm._t(\"body\", [_c('div', {\n class: _vm.notifyClass(item),\n on: {\n \"click\": function($event) {\n return _vm.destroyIfNecessary(item)\n }\n }\n }, [(item.title) ? _c('div', {\n staticClass: \"notification-title\",\n domProps: {\n \"innerHTML\": _vm._s(item.title)\n }\n }) : _vm._e(), _vm._v(\" \"), _c('div', {\n staticClass: \"notification-content\",\n domProps: {\n \"innerHTML\": _vm._s(item.text)\n }\n })])], {\n \"item\": item,\n \"close\": function () { return _vm.destroy(item); }\n })], 2)\n }), 0)], 1)\n},staticRenderFns: []}\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports) {\n\nmodule.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('transition-group', {\n attrs: {\n \"name\": _vm.name\n }\n }, [_vm._t(\"default\")], 2)\n},staticRenderFns: []}\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(10);\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = __webpack_require__(18)(\"2901aeae\", content, true);\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n Modified by Evan You @yyx990803\n*/\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n if (!hasDocument) {\n throw new Error(\n 'vue-style-loader cannot be used in a non-browser environment. ' +\n \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n ) }\n}\n\nvar listToStyles = __webpack_require__(19)\n\n/*\ntype StyleObject = {\n id: number;\n parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n css: string;\n media: string;\n sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n [id: number]: {\n id: number,\n refs: number,\n parts: Array<(obj?: StyleObjectPart) => void>\n }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nmodule.exports = function (parentId, list, _isProduction) {\n isProduction = _isProduction\n\n var styles = listToStyles(parentId, list)\n addStylesToDom(styles)\n\n return function update (newList) {\n var mayRemove = []\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n domStyle.refs--\n mayRemove.push(domStyle)\n }\n if (newList) {\n styles = listToStyles(parentId, newList)\n addStylesToDom(styles)\n } else {\n styles = []\n }\n for (var i = 0; i < mayRemove.length; i++) {\n var domStyle = mayRemove[i]\n if (domStyle.refs === 0) {\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j]()\n }\n delete stylesInDom[domStyle.id]\n }\n }\n }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n if (domStyle) {\n domStyle.refs++\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j](item.parts[j])\n }\n for (; j < item.parts.length; j++) {\n domStyle.parts.push(addStyle(item.parts[j]))\n }\n if (domStyle.parts.length > item.parts.length) {\n domStyle.parts.length = item.parts.length\n }\n } else {\n var parts = []\n for (var j = 0; j < item.parts.length; j++) {\n parts.push(addStyle(item.parts[j]))\n }\n stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n }\n }\n}\n\nfunction createStyleElement () {\n var styleElement = document.createElement('style')\n styleElement.type = 'text/css'\n head.appendChild(styleElement)\n return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n var update, remove\n var styleElement = document.querySelector('style[data-vue-ssr-id~=\"' + obj.id + '\"]')\n\n if (styleElement) {\n if (isProduction) {\n // has SSR styles and in production mode.\n // simply do nothing.\n return noop\n } else {\n // has SSR styles but in dev mode.\n // for some reason Chrome can't handle source map in server-rendered\n // style tags - source maps in <style> only works if the style tag is\n // created and inserted dynamically. So we remove the server rendered\n // styles and inject new ones.\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n if (isOldIE) {\n // use singleton mode for IE9.\n var styleIndex = singletonCounter++\n styleElement = singletonElement || (singletonElement = createStyleElement())\n update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n } else {\n // use multi-style-tag mode in all other cases\n styleElement = createStyleElement()\n update = applyToTag.bind(null, styleElement)\n remove = function () {\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n update(obj)\n\n return function updateStyle (newObj /* StyleObjectPart */) {\n if (newObj) {\n if (newObj.css === obj.css &&\n newObj.media === obj.media &&\n newObj.sourceMap === obj.sourceMap) {\n return\n }\n update(obj = newObj)\n } else {\n remove()\n }\n }\n}\n\nvar replaceText = (function () {\n var textStore = []\n\n return function (index, replacement) {\n textStore[index] = replacement\n return textStore.filter(Boolean).join('\\n')\n }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n var css = remove ? '' : obj.css\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = replaceText(index, css)\n } else {\n var cssNode = document.createTextNode(css)\n var childNodes = styleElement.childNodes\n if (childNodes[index]) styleElement.removeChild(childNodes[index])\n if (childNodes.length) {\n styleElement.insertBefore(cssNode, childNodes[index])\n } else {\n styleElement.appendChild(cssNode)\n }\n }\n}\n\nfunction applyToTag (styleElement, obj) {\n var css = obj.css\n var media = obj.media\n var sourceMap = obj.sourceMap\n\n if (media) {\n styleElement.setAttribute('media', media)\n }\n\n if (sourceMap) {\n // https://developer.chrome.com/devtools/docs/javascript-debugging\n // this makes source maps inside style tags work properly in Chrome\n css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n // http://stackoverflow.com/a/26603875\n css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n }\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild)\n }\n styleElement.appendChild(document.createTextNode(css))\n }\n}\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports) {\n\n/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nmodule.exports = function listToStyles (parentId, list) {\n var styles = []\n var newStyles = {}\n for (var i = 0; i < list.length; i++) {\n var item = list[i]\n var id = item[0]\n var css = item[1]\n var media = item[2]\n var sourceMap = item[3]\n var part = {\n id: parentId + ':' + i,\n css: css,\n media: media,\n sourceMap: sourceMap\n }\n if (!newStyles[id]) {\n styles.push(newStyles[id] = { id: id, parts: [part] })\n } else {\n newStyles[id].parts.push(part)\n }\n }\n return styles\n}\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_20__;\n\n/***/ })\n/******/ ]);\n});\n//# sourceMappingURL=index.js.map","/*!\n * vue-router v3.0.7\n * (c) 2019 Evan You\n * @license MIT\n */\n/* */\n\nfunction assert (condition, message) {\n if (!condition) {\n throw new Error((\"[vue-router] \" + message))\n }\n}\n\nfunction warn (condition, message) {\n if (process.env.NODE_ENV !== 'production' && !condition) {\n typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n }\n}\n\nfunction isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction extend (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\n}\n\nvar View = {\n name: 'RouterView',\n functional: true,\n props: {\n name: {\n type: String,\n default: 'default'\n }\n },\n render: function render (_, ref) {\n var props = ref.props;\n var children = ref.children;\n var parent = ref.parent;\n var data = ref.data;\n\n // used by devtools to display a router-view badge\n data.routerView = true;\n\n // directly use parent context's createElement() function\n // so that components rendered by router-view can resolve named slots\n var h = parent.$createElement;\n var name = props.name;\n var route = parent.$route;\n var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n // determine current view depth, also check to see if the tree\n // has been toggled inactive but kept-alive.\n var depth = 0;\n var inactive = false;\n while (parent && parent._routerRoot !== parent) {\n var vnodeData = parent.$vnode && parent.$vnode.data;\n if (vnodeData) {\n if (vnodeData.routerView) {\n depth++;\n }\n if (vnodeData.keepAlive && parent._inactive) {\n inactive = true;\n }\n }\n parent = parent.$parent;\n }\n data.routerViewDepth = depth;\n\n // render previous view if the tree is inactive and kept-alive\n if (inactive) {\n return h(cache[name], data, children)\n }\n\n var matched = route.matched[depth];\n // render empty node if no matched route\n if (!matched) {\n cache[name] = null;\n return h()\n }\n\n var component = cache[name] = matched.components[name];\n\n // attach instance registration hook\n // this will be called in the instance's injected lifecycle hooks\n data.registerRouteInstance = function (vm, val) {\n // val could be undefined for unregistration\n var current = matched.instances[name];\n if (\n (val && current !== vm) ||\n (!val && current === vm)\n ) {\n matched.instances[name] = val;\n }\n }\n\n // also register instance in prepatch hook\n // in case the same component instance is reused across different routes\n ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n matched.instances[name] = vnode.componentInstance;\n };\n\n // register instance in init hook\n // in case kept-alive component be actived when routes changed\n data.hook.init = function (vnode) {\n if (vnode.data.keepAlive &&\n vnode.componentInstance &&\n vnode.componentInstance !== matched.instances[name]\n ) {\n matched.instances[name] = vnode.componentInstance;\n }\n };\n\n // resolve props\n var propsToPass = data.props = resolveProps(route, matched.props && matched.props[name]);\n if (propsToPass) {\n // clone to prevent mutation\n propsToPass = data.props = extend({}, propsToPass);\n // pass non-declared props as attrs\n var attrs = data.attrs = data.attrs || {};\n for (var key in propsToPass) {\n if (!component.props || !(key in component.props)) {\n attrs[key] = propsToPass[key];\n delete propsToPass[key];\n }\n }\n }\n\n return h(component, data, children)\n }\n}\n\nfunction resolveProps (route, config) {\n switch (typeof config) {\n case 'undefined':\n return\n case 'object':\n return config\n case 'function':\n return config(route)\n case 'boolean':\n return config ? route.params : undefined\n default:\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n \"expecting an object, function or boolean.\"\n );\n }\n }\n}\n\n/* */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n .replace(encodeReserveRE, encodeReserveReplacer)\n .replace(commaRE, ','); };\n\nvar decode = decodeURIComponent;\n\nfunction resolveQuery (\n query,\n extraQuery,\n _parseQuery\n) {\n if ( extraQuery === void 0 ) extraQuery = {};\n\n var parse = _parseQuery || parseQuery;\n var parsedQuery;\n try {\n parsedQuery = parse(query || '');\n } catch (e) {\n process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n for (var key in extraQuery) {\n parsedQuery[key] = extraQuery[key];\n }\n return parsedQuery\n}\n\nfunction parseQuery (query) {\n var res = {};\n\n query = query.trim().replace(/^(\\?|#|&)/, '');\n\n if (!query) {\n return res\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0\n ? decode(parts.join('='))\n : null;\n\n if (res[key] === undefined) {\n res[key] = val;\n } else if (Array.isArray(res[key])) {\n res[key].push(val);\n } else {\n res[key] = [res[key], val];\n }\n });\n\n return res\n}\n\nfunction stringifyQuery (obj) {\n var res = obj ? Object.keys(obj).map(function (key) {\n var val = obj[key];\n\n if (val === undefined) {\n return ''\n }\n\n if (val === null) {\n return encode(key)\n }\n\n if (Array.isArray(val)) {\n var result = [];\n val.forEach(function (val2) {\n if (val2 === undefined) {\n return\n }\n if (val2 === null) {\n result.push(encode(key));\n } else {\n result.push(encode(key) + '=' + encode(val2));\n }\n });\n return result.join('&')\n }\n\n return encode(key) + '=' + encode(val)\n }).filter(function (x) { return x.length > 0; }).join('&') : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n record,\n location,\n redirectedFrom,\n router\n) {\n var stringifyQuery$$1 = router && router.options.stringifyQuery;\n\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\n\n var route = {\n name: location.name || (record && record.name),\n meta: (record && record.meta) || {},\n path: location.path || '/',\n hash: location.hash || '',\n query: query,\n params: location.params || {},\n fullPath: getFullPath(location, stringifyQuery$$1),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery$$1);\n }\n return Object.freeze(route)\n}\n\nfunction clone (value) {\n if (Array.isArray(value)) {\n return value.map(clone)\n } else if (value && typeof value === 'object') {\n var res = {};\n for (var key in value) {\n res[key] = clone(value[key]);\n }\n return res\n } else {\n return value\n }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n path: '/'\n});\n\nfunction formatMatch (record) {\n var res = [];\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n return res\n}\n\nfunction getFullPath (\n ref,\n _stringifyQuery\n) {\n var path = ref.path;\n var query = ref.query; if ( query === void 0 ) query = {};\n var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b) {\n if (b === START) {\n return a === b\n } else if (!b) {\n return false\n } else if (a.path && b.path) {\n return (\n a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') &&\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query)\n )\n } else if (a.name && b.name) {\n return (\n a.name === b.name &&\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query) &&\n isObjectEqual(a.params, b.params)\n )\n } else {\n return false\n }\n}\n\nfunction isObjectEqual (a, b) {\n if ( a === void 0 ) a = {};\n if ( b === void 0 ) b = {};\n\n // handle null value #1566\n if (!a || !b) { return a === b }\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key) {\n var aVal = a[key];\n var bVal = b[key];\n // check nested equality\n if (typeof aVal === 'object' && typeof bVal === 'object') {\n return isObjectEqual(aVal, bVal)\n }\n return String(aVal) === String(bVal)\n })\n}\n\nfunction isIncludedRoute (current, target) {\n return (\n current.path.replace(trailingSlashRE, '/').indexOf(\n target.path.replace(trailingSlashRE, '/')\n ) === 0 &&\n (!target.hash || current.hash === target.hash) &&\n queryIncludes(current.query, target.query)\n )\n}\n\nfunction queryIncludes (current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false\n }\n }\n return true\n}\n\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar Link = {\n name: 'RouterLink',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n exact: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render (h) {\n var this$1 = this;\n\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(this.to, current, this.append);\n var location = ref.location;\n var route = ref.route;\n var href = ref.href;\n\n var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass;\n // Support global empty active class\n var activeClassFallback = globalActiveClass == null\n ? 'router-link-active'\n : globalActiveClass;\n var exactActiveClassFallback = globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass = this.activeClass == null\n ? activeClassFallback\n : this.activeClass;\n var exactActiveClass = this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n var compareTarget = location.path\n ? createRoute(null, location, null, router)\n : route;\n\n classes[exactActiveClass] = isSameRoute(current, compareTarget);\n classes[activeClass] = this.exact\n ? classes[exactActiveClass]\n : isIncludedRoute(current, compareTarget);\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1.replace) {\n router.replace(location);\n } else {\n router.push(location);\n }\n }\n };\n\n var on = { click: guardEvent };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) { on[e] = handler; });\n } else {\n on[this.event] = handler;\n }\n\n var data = {\n class: classes\n };\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href };\n } else {\n // find the first <a> child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the <a> is a static node\n a.isStatic = false;\n var aData = a.data = extend({}, a.data);\n aData.on = on;\n var aAttrs = a.data.attrs = extend({}, a.data.attrs);\n aAttrs.href = href;\n } else {\n // doesn't have <a> child, apply listener to self\n data.on = on;\n }\n }\n\n return h(this.tag, data, this.$slots.default)\n }\n}\n\nfunction guardEvent (e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) { return }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) { return }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) { return }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true\n}\n\nfunction findAnchor (children) {\n if (children) {\n var child;\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n if (child.tag === 'a') {\n return child\n }\n if (child.children && (child = findAnchor(child.children))) {\n return child\n }\n }\n }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n if (install.installed && _Vue === Vue) { return }\n install.installed = true;\n\n _Vue = Vue;\n\n var isDef = function (v) { return v !== undefined; };\n\n var registerInstance = function (vm, callVal) {\n var i = vm.$options._parentVnode;\n if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n i(vm, callVal);\n }\n };\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n if (isDef(this.$options.router)) {\n this._routerRoot = this;\n this._router = this.$options.router;\n this._router.init(this);\n Vue.util.defineReactive(this, '_route', this._router.history.current);\n } else {\n this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n }\n registerInstance(this, this);\n },\n destroyed: function destroyed () {\n registerInstance(this);\n }\n });\n\n Object.defineProperty(Vue.prototype, '$router', {\n get: function get () { return this._routerRoot._router }\n });\n\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get () { return this._routerRoot._route }\n });\n\n Vue.component('RouterView', View);\n Vue.component('RouterLink', Link);\n\n var strats = Vue.config.optionMergeStrategies;\n // use the same hook merging strategy for route hooks\n strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/* */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/* */\n\nfunction resolvePath (\n relative,\n base,\n append\n) {\n var firstChar = relative.charAt(0);\n if (firstChar === '/') {\n return relative\n }\n\n if (firstChar === '?' || firstChar === '#') {\n return base + relative\n }\n\n var stack = base.split('/');\n\n // remove trailing segment if:\n // - not appending\n // - appending to trailing slash (last segment is empty)\n if (!append || !stack[stack.length - 1]) {\n stack.pop();\n }\n\n // resolve relative path\n var segments = relative.replace(/^\\//, '').split('/');\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n if (segment === '..') {\n stack.pop();\n } else if (segment !== '.') {\n stack.push(segment);\n }\n }\n\n // ensure leading slash\n if (stack[0] !== '') {\n stack.unshift('');\n }\n\n return stack.join('/')\n}\n\nfunction parsePath (path) {\n var hash = '';\n var query = '';\n\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n\n var queryIndex = path.indexOf('?');\n if (queryIndex >= 0) {\n query = path.slice(queryIndex + 1);\n path = path.slice(0, queryIndex);\n }\n\n return {\n path: path,\n query: query,\n hash: hash\n }\n}\n\nfunction cleanPath (path) {\n return path.replace(/\\/\\//g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = options && options.delimiter || '/';\n var res;\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n continue\n }\n\n var next = str[index];\n var prefix = res[2];\n var name = res[3];\n var capture = res[4];\n var group = res[5];\n var modifier = res[6];\n var asterisk = res[7];\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n }\n\n var partial = prefix != null && next != null && next !== prefix;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = res[2] || defaultDelimiter;\n var pattern = capture || group;\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n });\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index);\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path);\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options))\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$');\n }\n }\n\n return function (obj, opts) {\n var path = '';\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n\n continue\n }\n\n var value = data[token.name];\n var segment;\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment;\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys;\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n });\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = [];\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n var strict = options.strict;\n var end = options.end !== false;\n var route = '';\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = '(?:' + token.pattern + ')';\n\n keys.push(token);\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?';\n } else {\n capture = prefix + '(' + capture + ')?';\n }\n } else {\n capture = prefix + '(' + capture + ')';\n }\n\n route += capture;\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/');\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n }\n\n if (end) {\n route += '$';\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/* */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n path,\n params,\n routeMsg\n) {\n params = params || {};\n try {\n var filler =\n regexpCompileCache[path] ||\n (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n if (params.pathMatch) { params[0] = params.pathMatch; }\n\n return filler(params, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"missing param for \" + routeMsg + \": \" + (e.message)));\n }\n return ''\n } finally {\n // delete the 0 if it was added\n delete params[0];\n }\n}\n\n/* */\n\nfunction createRouteMap (\n routes,\n oldPathList,\n oldPathMap,\n oldNameMap\n) {\n // the path list is used to control path matching priority\n var pathList = oldPathList || [];\n // $flow-disable-line\n var pathMap = oldPathMap || Object.create(null);\n // $flow-disable-line\n var nameMap = oldNameMap || Object.create(null);\n\n routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route);\n });\n\n // ensure wildcard routes are always at the end\n for (var i = 0, l = pathList.length; i < l; i++) {\n if (pathList[i] === '*') {\n pathList.push(pathList.splice(i, 1)[0]);\n l--;\n i--;\n }\n }\n\n return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n }\n}\n\nfunction addRouteRecord (\n pathList,\n pathMap,\n nameMap,\n route,\n parent,\n matchAs\n) {\n var path = route.path;\n var name = route.name;\n if (process.env.NODE_ENV !== 'production') {\n assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n assert(\n typeof route.component !== 'string',\n \"route config \\\"component\\\" for path: \" + (String(path || name)) + \" cannot be a \" +\n \"string id. Use an actual component instead.\"\n );\n }\n\n var pathToRegexpOptions = route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(\n path,\n parent,\n pathToRegexpOptions.strict\n );\n\n if (typeof route.caseSensitive === 'boolean') {\n pathToRegexpOptions.sensitive = route.caseSensitive;\n }\n\n var record = {\n path: normalizedPath,\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n components: route.components || { default: route.component },\n instances: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props: route.props == null\n ? {}\n : route.components\n ? route.props\n : { default: route.props }\n };\n\n if (route.children) {\n // Warn if route is named, does not redirect and has a default child route.\n // If users navigate to this route by name, the default child will\n // not be rendered (GH Issue #629)\n if (process.env.NODE_ENV !== 'production') {\n if (route.name && !route.redirect && route.children.some(function (child) { return /^\\/?$/.test(child.path); })) {\n warn(\n false,\n \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'\\\"), \" +\n \"the default child route will not be rendered. Remove the name from \" +\n \"this route and use the name of the default child route for named \" +\n \"links instead.\"\n );\n }\n }\n route.children.forEach(function (child) {\n var childMatchAs = matchAs\n ? cleanPath((matchAs + \"/\" + (child.path)))\n : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias)\n ? route.alias\n : [route.alias];\n\n aliases.forEach(function (alias) {\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(\n pathList,\n pathMap,\n nameMap,\n aliasRoute,\n parent,\n record.path || '/' // matchAs\n );\n });\n }\n\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(\n false,\n \"Duplicate named routes definition: \" +\n \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n );\n }\n }\n}\n\nfunction compileRouteRegex (path, pathToRegexpOptions) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\n regex.keys.forEach(function (key) {\n warn(!keys[key.name], (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\"));\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (path, parent, strict) {\n if (!strict) { path = path.replace(/\\/$/, ''); }\n if (path[0] === '/') { return path }\n if (parent == null) { return path }\n return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/* */\n\nfunction normalizeLocation (\n raw,\n current,\n append,\n router\n) {\n var next = typeof raw === 'string' ? { path: raw } : raw;\n // named target\n if (next._normalized) {\n return next\n } else if (next.name) {\n return extend({}, raw)\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = extend({}, next);\n next._normalized = true;\n var params = extend(extend({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params, (\"path \" + (current.path)));\n } else if (process.env.NODE_ENV !== 'production') {\n warn(false, \"relative params navigation requires a current route.\");\n }\n return next\n }\n\n var parsedPath = parsePath(next.path || '');\n var basePath = (current && current.path) || '/';\n var path = parsedPath.path\n ? resolvePath(parsedPath.path, basePath, append || next.append)\n : basePath;\n\n var query = resolveQuery(\n parsedPath.query,\n next.query,\n router && router.options.parseQuery\n );\n\n var hash = next.hash || parsedPath.hash;\n if (hash && hash.charAt(0) !== '#') {\n hash = \"#\" + hash;\n }\n\n return {\n _normalized: true,\n path: path,\n query: query,\n hash: hash\n }\n}\n\n/* */\n\n\n\nfunction createMatcher (\n routes,\n router\n) {\n var ref = createRouteMap(routes);\n var pathList = ref.pathList;\n var pathMap = ref.pathMap;\n var nameMap = ref.nameMap;\n\n function addRoutes (routes) {\n createRouteMap(routes, pathList, pathMap, nameMap);\n }\n\n function match (\n raw,\n currentRoute,\n redirectedFrom\n ) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\n\n if (name) {\n var record = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n }\n if (!record) { return _createRoute(null, location) }\n var paramNames = record.regex.keys\n .filter(function (key) { return !key.optional; })\n .map(function (key) { return key.name; });\n\n if (typeof location.params !== 'object') {\n location.params = {};\n }\n\n if (currentRoute && typeof currentRoute.params === 'object') {\n for (var key in currentRoute.params) {\n if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n location.params[key] = currentRoute.params[key];\n }\n }\n }\n\n location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n return _createRoute(record, location, redirectedFrom)\n } else if (location.path) {\n location.params = {};\n for (var i = 0; i < pathList.length; i++) {\n var path = pathList[i];\n var record$1 = pathMap[path];\n if (matchRoute(record$1.regex, location.path, location.params)) {\n return _createRoute(record$1, location, redirectedFrom)\n }\n }\n }\n // no match\n return _createRoute(null, location)\n }\n\n function redirect (\n record,\n location\n ) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function'\n ? originalRedirect(createRoute(record, location, null, router))\n : originalRedirect;\n\n if (typeof redirect === 'string') {\n redirect = { path: redirect };\n }\n\n if (!redirect || typeof redirect !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n );\n }\n return _createRoute(null, location)\n }\n\n var re = redirect;\n var name = re.name;\n var path = re.path;\n var query = location.query;\n var hash = location.hash;\n var params = location.params;\n query = re.hasOwnProperty('query') ? re.query : query;\n hash = re.hasOwnProperty('hash') ? re.hash : hash;\n params = re.hasOwnProperty('params') ? re.params : params;\n\n if (name) {\n // resolved named direct\n var targetRecord = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n }\n return match({\n _normalized: true,\n name: name,\n query: query,\n hash: hash,\n params: params\n }, undefined, location)\n } else if (path) {\n // 1. resolve relative redirect\n var rawPath = resolveRecordPath(path, record);\n // 2. resolve params\n var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n // 3. rematch with existing query and hash\n return match({\n _normalized: true,\n path: resolvedPath,\n query: query,\n hash: hash\n }, undefined, location)\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n }\n return _createRoute(null, location)\n }\n }\n\n function alias (\n record,\n location,\n matchAs\n ) {\n var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n var aliasedMatch = match({\n _normalized: true,\n path: aliasedPath\n });\n if (aliasedMatch) {\n var matched = aliasedMatch.matched;\n var aliasedRecord = matched[matched.length - 1];\n location.params = aliasedMatch.params;\n return _createRoute(aliasedRecord, location)\n }\n return _createRoute(null, location)\n }\n\n function _createRoute (\n record,\n location,\n redirectedFrom\n ) {\n if (record && record.redirect) {\n return redirect(record, redirectedFrom || location)\n }\n if (record && record.matchAs) {\n return alias(record, location, record.matchAs)\n }\n return createRoute(record, location, redirectedFrom, router)\n }\n\n return {\n match: match,\n addRoutes: addRoutes\n }\n}\n\nfunction matchRoute (\n regex,\n path,\n params\n) {\n var m = path.match(regex);\n\n if (!m) {\n return false\n } else if (!params) {\n return true\n }\n\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = regex.keys[i - 1];\n var val = typeof m[i] === 'string' ? decodeURIComponent(m[i]) : m[i];\n if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = val;\n }\n }\n\n return true\n}\n\nfunction resolveRecordPath (path, record) {\n return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/* */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Fix for #1585 for Firefox\n // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n // window.location.protocol + '//' + window.location.host\n // location.host contains the port and location.hostname doesn't\n var protocolAndPath = window.location.protocol + '//' + window.location.host;\n var absolutePath = window.location.href.replace(protocolAndPath, '');\n window.history.replaceState({ key: getStateKey() }, '', absolutePath);\n window.addEventListener('popstate', function (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n });\n}\n\nfunction handleScroll (\n router,\n to,\n from,\n isPop\n) {\n if (!router.app) {\n return\n }\n\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n }\n\n // wait until re-render finishes before scrolling\n router.app.$nextTick(function () {\n var position = getScrollPosition();\n var shouldScroll = behavior.call(router, to, from, isPop ? position : null);\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll.then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\n }).catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\n }\n });\n}\n\nfunction saveScrollPosition () {\n var key = getStateKey();\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\n\nfunction getScrollPosition () {\n var key = getStateKey();\n if (key) {\n return positionStore[key]\n }\n}\n\nfunction getElementPosition (el, offset) {\n var docEl = document.documentElement;\n var docRect = docEl.getBoundingClientRect();\n var elRect = el.getBoundingClientRect();\n return {\n x: elRect.left - docRect.left - offset.x,\n y: elRect.top - docRect.top - offset.y\n }\n}\n\nfunction isValidPosition (obj) {\n return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n y: isNumber(obj.y) ? obj.y : window.pageYOffset\n }\n}\n\nfunction normalizeOffset (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : 0,\n y: isNumber(obj.y) ? obj.y : 0\n }\n}\n\nfunction isNumber (v) {\n return typeof v === 'number'\n}\n\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n var el = document.querySelector(shouldScroll.selector);\n if (el) {\n var offset = shouldScroll.offset && typeof shouldScroll.offset === 'object' ? shouldScroll.offset : {};\n offset = normalizeOffset(offset);\n position = getElementPosition(el, offset);\n } else if (isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n } else if (isObject && isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n\n if (position) {\n window.scrollTo(position.x, position.y);\n }\n}\n\n/* */\n\nvar supportsPushState = inBrowser && (function () {\n var ua = window.navigator.userAgent;\n\n if (\n (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n ua.indexOf('Mobile Safari') !== -1 &&\n ua.indexOf('Chrome') === -1 &&\n ua.indexOf('Windows Phone') === -1\n ) {\n return false\n }\n\n return window.history && 'pushState' in window.history\n})();\n\n// use User Timing api (if present) for more accurate key precision\nvar Time = inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nvar _key = genKey();\n\nfunction genKey () {\n return Time.now().toFixed(3)\n}\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n _key = key;\n}\n\nfunction pushState (url, replace) {\n saveScrollPosition();\n // try...catch the pushState call to get around Safari\n // DOM Exception 18 where it limits to 100 pushState calls\n var history = window.history;\n try {\n if (replace) {\n history.replaceState({ key: _key }, '', url);\n } else {\n _key = genKey();\n history.pushState({ key: _key }, '', url);\n }\n } catch (e) {\n window.location[replace ? 'replace' : 'assign'](url);\n }\n}\n\nfunction replaceState (url) {\n pushState(url, true);\n}\n\n/* */\n\nfunction runQueue (queue, fn, cb) {\n var step = function (index) {\n if (index >= queue.length) {\n cb();\n } else {\n if (queue[index]) {\n fn(queue[index], function () {\n step(index + 1);\n });\n } else {\n step(index + 1);\n }\n }\n };\n step(0);\n}\n\n/* */\n\nfunction resolveAsyncComponents (matched) {\n return function (to, from, next) {\n var hasAsync = false;\n var pending = 0;\n var error = null;\n\n flatMapComponents(matched, function (def, _, match, key) {\n // if it's a function and doesn't have cid attached,\n // assume it's an async component resolve function.\n // we are not using Vue's default async resolving mechanism because\n // we want to halt the navigation until the incoming component has been\n // resolved.\n if (typeof def === 'function' && def.cid === undefined) {\n hasAsync = true;\n pending++;\n\n var resolve = once(function (resolvedDef) {\n if (isESModule(resolvedDef)) {\n resolvedDef = resolvedDef.default;\n }\n // save resolved on async factory in case it's used elsewhere\n def.resolved = typeof resolvedDef === 'function'\n ? resolvedDef\n : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n if (pending <= 0) {\n next();\n }\n });\n\n var reject = once(function (reason) {\n var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n process.env.NODE_ENV !== 'production' && warn(false, msg);\n if (!error) {\n error = isError(reason)\n ? reason\n : new Error(msg);\n next(error);\n }\n });\n\n var res;\n try {\n res = def(resolve, reject);\n } catch (e) {\n reject(e);\n }\n if (res) {\n if (typeof res.then === 'function') {\n res.then(resolve, reject);\n } else {\n // new syntax in Vue 2.3\n var comp = res.component;\n if (comp && typeof comp.then === 'function') {\n comp.then(resolve, reject);\n }\n }\n }\n }\n });\n\n if (!hasAsync) { next(); }\n }\n}\n\nfunction flatMapComponents (\n matched,\n fn\n) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) { return fn(\n m.components[key],\n m.instances[key],\n m, key\n ); })\n }))\n}\n\nfunction flatten (arr) {\n return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n typeof Symbol === 'function' &&\n typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n var called = false;\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (called) { return }\n called = true;\n return fn.apply(this, args)\n }\n}\n\n/* */\n\nvar History = function History (router, base) {\n this.router = router;\n this.base = normalizeBase(base);\n // start with a route object that stands for \"nowhere\"\n this.current = START;\n this.pending = null;\n this.ready = false;\n this.readyCbs = [];\n this.readyErrorCbs = [];\n this.errorCbs = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n if (this.ready) {\n cb();\n } else {\n this.readyCbs.push(cb);\n if (errorCb) {\n this.readyErrorCbs.push(errorCb);\n }\n }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (location, onComplete, onAbort) {\n var this$1 = this;\n\n var route = this.router.match(location, this.current);\n this.confirmTransition(route, function () {\n this$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1.ensureURL();\n\n // fire ready cbs once\n if (!this$1.ready) {\n this$1.ready = true;\n this$1.readyCbs.forEach(function (cb) { cb(route); });\n }\n }, function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1.ready) {\n this$1.ready = true;\n this$1.readyErrorCbs.forEach(function (cb) { cb(err); });\n }\n });\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1 = this;\n\n var current = this.current;\n var abort = function (err) {\n if (isError(err)) {\n if (this$1.errorCbs.length) {\n this$1.errorCbs.forEach(function (cb) { cb(err); });\n } else {\n warn(false, 'uncaught error during route navigation:');\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n route.matched.length === current.matched.length\n ) {\n this.ensureURL();\n return abort()\n }\n\n var ref = resolveQueue(this.current.matched, route.matched);\n var updated = ref.updated;\n var deactivated = ref.deactivated;\n var activated = ref.activated;\n\n var queue = [].concat(\n // in-component leave guards\n extractLeaveGuards(deactivated),\n // global before hooks\n this.router.beforeHooks,\n // in-component update hooks\n extractUpdateHooks(updated),\n // in-config enter guards\n activated.map(function (m) { return m.beforeEnter; }),\n // async components\n resolveAsyncComponents(activated)\n );\n\n this.pending = route;\n var iterator = function (hook, next) {\n if (this$1.pending !== route) {\n return abort()\n }\n try {\n hook(route, current, function (to) {\n if (to === false || isError(to)) {\n // next(false) -> abort navigation, ensure current URL\n this$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' && (\n typeof to.path === 'string' ||\n typeof to.name === 'string'\n ))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort();\n if (typeof to === 'object' && to.replace) {\n this$1.replace(to);\n } else {\n this$1.push(to);\n }\n } else {\n // confirm transition and pass on the value\n next(to);\n }\n });\n } catch (e) {\n abort(e);\n }\n };\n\n runQueue(queue, iterator, function () {\n var postEnterCbs = [];\n var isValid = function () { return this$1.current === route; };\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated, postEnterCbs, isValid);\n var queue = enterGuards.concat(this$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1.pending !== route) {\n return abort()\n }\n this$1.pending = null;\n onComplete(route);\n if (this$1.router.app) {\n this$1.router.app.$nextTick(function () {\n postEnterCbs.forEach(function (cb) { cb(); });\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n var prev = this.current;\n this.current = route;\n this.cb && this.cb(route);\n this.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect <base> tag\n var baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n } else {\n base = '/';\n }\n }\n // make sure there's the starting slash\n if (base.charAt(0) !== '/') {\n base = '/' + base;\n }\n // remove trailing slash\n return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n current,\n next\n) {\n var i;\n var max = Math.max(current.length, next.length);\n for (i = 0; i < max; i++) {\n if (current[i] !== next[i]) {\n break\n }\n }\n return {\n updated: next.slice(0, i),\n activated: next.slice(i),\n deactivated: current.slice(i)\n }\n}\n\nfunction extractGuards (\n records,\n name,\n bind,\n reverse\n) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard)\n ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n : bind(guard, instance, match, key)\n }\n });\n return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n def,\n key\n) {\n if (typeof def !== 'function') {\n // extend now so that global mixins are applied.\n def = _Vue.extend(def);\n }\n return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n if (instance) {\n return function boundRouteGuard () {\n return guard.apply(instance, arguments)\n }\n }\n}\n\nfunction extractEnterGuards (\n activated,\n cbs,\n isValid\n) {\n return extractGuards(activated, 'beforeRouteEnter', function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key, cbs, isValid)\n })\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key,\n cbs,\n isValid\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n if (typeof cb === 'function') {\n cbs.push(function () {\n // #750\n // if a router-view is wrapped with an out-in transition,\n // the instance may not have been registered at this time.\n // we will need to poll for registration until current route\n // is no longer valid.\n poll(cb, match.instances, key, isValid);\n });\n }\n next(cb);\n })\n }\n}\n\nfunction poll (\n cb, // somehow flow cannot infer this is a function\n instances,\n key,\n isValid\n) {\n if (\n instances[key] &&\n !instances[key]._isBeingDestroyed // do not reuse being destroyed instance\n ) {\n cb(instances[key]);\n } else if (isValid()) {\n setTimeout(function () {\n poll(cb, instances, key, isValid);\n }, 16);\n }\n}\n\n/* */\n\nvar HTML5History = /*@__PURE__*/(function (History$$1) {\n function HTML5History (router, base) {\n var this$1 = this;\n\n History$$1.call(this, router, base);\n\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n setupScroll();\n }\n\n var initLocation = getLocation(this.base);\n window.addEventListener('popstate', function (e) {\n var current = this$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1.base);\n if (this$1.current === START && location === initLocation) {\n return\n }\n\n this$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n });\n }\n\n if ( History$$1 ) HTML5History.__proto__ = History$$1;\n HTML5History.prototype = Object.create( History$$1 && History$$1.prototype );\n HTML5History.prototype.constructor = HTML5History;\n\n HTML5History.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1.base + route.fullPath));\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1.base + route.fullPath));\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.ensureURL = function ensureURL (push) {\n if (getLocation(this.base) !== this.current.fullPath) {\n var current = cleanPath(this.base + this.current.fullPath);\n push ? pushState(current) : replaceState(current);\n }\n };\n\n HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n return getLocation(this.base)\n };\n\n return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n var path = decodeURI(window.location.pathname);\n if (base && path.indexOf(base) === 0) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash\n}\n\n/* */\n\nvar HashHistory = /*@__PURE__*/(function (History$$1) {\n function HashHistory (router, base, fallback) {\n History$$1.call(this, router, base);\n // check history fallback deeplinking\n if (fallback && checkFallback(this.base)) {\n return\n }\n ensureSlash();\n }\n\n if ( History$$1 ) HashHistory.__proto__ = History$$1;\n HashHistory.prototype = Object.create( History$$1 && History$$1.prototype );\n HashHistory.prototype.constructor = HashHistory;\n\n // this is delayed until the app mounts\n // to avoid the hashchange listener being fired too early\n HashHistory.prototype.setupListeners = function setupListeners () {\n var this$1 = this;\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n setupScroll();\n }\n\n window.addEventListener(supportsPushState ? 'popstate' : 'hashchange', function () {\n var current = this$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n });\n };\n\n HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HashHistory.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HashHistory.prototype.ensureURL = function ensureURL (push) {\n var current = this.current.fullPath;\n if (getHash() !== current) {\n push ? pushHash(current) : replaceHash(current);\n }\n };\n\n HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n return getHash()\n };\n\n return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n var location = getLocation(base);\n if (!/^\\/#/.test(location)) {\n window.location.replace(\n cleanPath(base + '/#' + location)\n );\n return true\n }\n}\n\nfunction ensureSlash () {\n var path = getHash();\n if (path.charAt(0) === '/') {\n return true\n }\n replaceHash('/' + path);\n return false\n}\n\nfunction getHash () {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var index = href.indexOf('#');\n // empty path\n if (index < 0) { return '' }\n\n href = href.slice(index + 1);\n // decode the hash but not the search or hash\n // as search(query) is already decoded\n // https://github.com/vuejs/vue-router/issues/2708\n var searchIndex = href.indexOf('?');\n if (searchIndex < 0) {\n var hashIndex = href.indexOf('#');\n if (hashIndex > -1) { href = decodeURI(href.slice(0, hashIndex)) + href.slice(hashIndex); }\n else { href = decodeURI(href); }\n } else {\n if (searchIndex > -1) { href = decodeURI(href.slice(0, searchIndex)) + href.slice(searchIndex); }\n }\n\n return href\n}\n\nfunction getUrl (path) {\n var href = window.location.href;\n var i = href.indexOf('#');\n var base = i >= 0 ? href.slice(0, i) : href;\n return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\n }\n}\n\nfunction replaceHash (path) {\n if (supportsPushState) {\n replaceState(getUrl(path));\n } else {\n window.location.replace(getUrl(path));\n }\n}\n\n/* */\n\nvar AbstractHistory = /*@__PURE__*/(function (History$$1) {\n function AbstractHistory (router, base) {\n History$$1.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History$$1 ) AbstractHistory.__proto__ = History$$1;\n AbstractHistory.prototype = Object.create( History$$1 && History$$1.prototype );\n AbstractHistory.prototype.constructor = AbstractHistory;\n\n AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n this.transitionTo(location, function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index + 1).concat(route);\n this$1.index++;\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n this.transitionTo(location, function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index).concat(route);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n AbstractHistory.prototype.go = function go (n) {\n var this$1 = this;\n\n var targetIndex = this.index + n;\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\n return\n }\n var route = this.stack[targetIndex];\n this.confirmTransition(route, function () {\n this$1.index = targetIndex;\n this$1.updateRoute(route);\n });\n };\n\n AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n var current = this.stack[this.stack.length - 1];\n return current ? current.fullPath : '/'\n };\n\n AbstractHistory.prototype.ensureURL = function ensureURL () {\n // noop\n };\n\n return AbstractHistory;\n}(History));\n\n/* */\n\n\n\nvar VueRouter = function VueRouter (options) {\n if ( options === void 0 ) options = {};\n\n this.app = null;\n this.apps = [];\n this.options = options;\n this.beforeHooks = [];\n this.resolveHooks = [];\n this.afterHooks = [];\n this.matcher = createMatcher(options.routes || [], this);\n\n var mode = options.mode || 'hash';\n this.fallback = mode === 'history' && !supportsPushState && options.fallback !== false;\n if (this.fallback) {\n mode = 'hash';\n }\n if (!inBrowser) {\n mode = 'abstract';\n }\n this.mode = mode;\n\n switch (mode) {\n case 'history':\n this.history = new HTML5History(this, options.base);\n break\n case 'hash':\n this.history = new HashHistory(this, options.base, this.fallback);\n break\n case 'abstract':\n this.history = new AbstractHistory(this, options.base);\n break\n default:\n if (process.env.NODE_ENV !== 'production') {\n assert(false, (\"invalid mode: \" + mode));\n }\n }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (\n raw,\n current,\n redirectedFrom\n) {\n return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n var this$1 = this;\n\n process.env.NODE_ENV !== 'production' && assert(\n install.installed,\n \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n \"before creating root instance.\"\n );\n\n this.apps.push(app);\n\n // set up app destroyed handler\n // https://github.com/vuejs/vue-router/issues/2639\n app.$once('hook:destroyed', function () {\n // clean out app from this.apps array once destroyed\n var index = this$1.apps.indexOf(app);\n if (index > -1) { this$1.apps.splice(index, 1); }\n // ensure we still have a main app or null if no apps\n // we do not release the router so it can be reused\n if (this$1.app === app) { this$1.app = this$1.apps[0] || null; }\n });\n\n // main app previously initialized\n // return as we don't need to set up new history listener\n if (this.app) {\n return\n }\n\n this.app = app;\n\n var history = this.history;\n\n if (history instanceof HTML5History) {\n history.transitionTo(history.getCurrentLocation());\n } else if (history instanceof HashHistory) {\n var setupHashListener = function () {\n history.setupListeners();\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupHashListener,\n setupHashListener\n );\n }\n\n history.listen(function (route) {\n this$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n this.history.push(location, onComplete, onAbort);\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n this.history.replace(location, onComplete, onAbort);\n};\n\nVueRouter.prototype.go = function go (n) {\n this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n var route = to\n ? to.matched\n ? to\n : this.resolve(to).route\n : this.currentRoute;\n if (!route) {\n return []\n }\n return [].concat.apply([], route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n }))\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n current = current || this.history.current;\n var location = normalizeLocation(\n to,\n current,\n append,\n this\n );\n var route = this.match(location, current);\n var fullPath = route.redirectedFrom || route.fullPath;\n var base = this.history.base;\n var href = createHref(base, fullPath, this.mode);\n return {\n location: location,\n route: route,\n href: href,\n // for backwards compat\n normalizedTo: location,\n resolved: route\n }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n this.matcher.addRoutes(routes);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nfunction registerHook (list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) { list.splice(i, 1); }\n }\n}\n\nfunction createHref (base, fullPath, mode) {\n var path = mode === 'hash' ? '#' + fullPath : fullPath;\n return base ? cleanPath(base + '/' + path) : path\n}\n\nVueRouter.install = install;\nVueRouter.version = '3.0.7';\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nexport default VueRouter;\n","/*!\n * Vue.js v2.7.2\n * (c) 2014-2022 Evan You\n * Released under the MIT License.\n */\nvar emptyObject = Object.freeze({});\r\nvar isArray = Array.isArray;\r\n// These helpers produce better VM code in JS engines due to their\r\n// explicitness and function inlining.\r\nfunction isUndef(v) {\r\n return v === undefined || v === null;\r\n}\r\nfunction isDef(v) {\r\n return v !== undefined && v !== null;\r\n}\r\nfunction isTrue(v) {\r\n return v === true;\r\n}\r\nfunction isFalse(v) {\r\n return v === false;\r\n}\r\n/**\r\n * Check if value is primitive.\r\n */\r\nfunction isPrimitive(value) {\r\n return (typeof value === 'string' ||\r\n typeof value === 'number' ||\r\n // $flow-disable-line\r\n typeof value === 'symbol' ||\r\n typeof value === 'boolean');\r\n}\r\nfunction isFunction(value) {\r\n return typeof value === 'function';\r\n}\r\n/**\r\n * Quick object check - this is primarily used to tell\r\n * objects from primitive values when we know the value\r\n * is a JSON-compliant type.\r\n */\r\nfunction isObject(obj) {\r\n return obj !== null && typeof obj === 'object';\r\n}\r\n/**\r\n * Get the raw type string of a value, e.g., [object Object].\r\n */\r\nvar _toString = Object.prototype.toString;\r\nfunction toRawType(value) {\r\n return _toString.call(value).slice(8, -1);\r\n}\r\n/**\r\n * Strict object type check. Only returns true\r\n * for plain JavaScript objects.\r\n */\r\nfunction isPlainObject(obj) {\r\n return _toString.call(obj) === '[object Object]';\r\n}\r\nfunction isRegExp(v) {\r\n return _toString.call(v) === '[object RegExp]';\r\n}\r\n/**\r\n * Check if val is a valid array index.\r\n */\r\nfunction isValidArrayIndex(val) {\r\n var n = parseFloat(String(val));\r\n return n >= 0 && Math.floor(n) === n && isFinite(val);\r\n}\r\nfunction isPromise(val) {\r\n return (isDef(val) &&\r\n typeof val.then === 'function' &&\r\n typeof val.catch === 'function');\r\n}\r\n/**\r\n * Convert a value to a string that is actually rendered.\r\n */\r\nfunction toString(val) {\r\n return val == null\r\n ? ''\r\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\r\n ? JSON.stringify(val, null, 2)\r\n : String(val);\r\n}\r\n/**\r\n * Convert an input value to a number for persistence.\r\n * If the conversion fails, return original string.\r\n */\r\nfunction toNumber(val) {\r\n var n = parseFloat(val);\r\n return isNaN(n) ? val : n;\r\n}\r\n/**\r\n * Make a map and return a function for checking if a key\r\n * is in that map.\r\n */\r\nfunction makeMap(str, expectsLowerCase) {\r\n var map = Object.create(null);\r\n var list = str.split(',');\r\n for (var i = 0; i < list.length; i++) {\r\n map[list[i]] = true;\r\n }\r\n return expectsLowerCase ? function (val) { return map[val.toLowerCase()]; } : function (val) { return map[val]; };\r\n}\r\n/**\r\n * Check if a tag is a built-in tag.\r\n */\r\nvar isBuiltInTag = makeMap('slot,component', true);\r\n/**\r\n * Check if an attribute is a reserved attribute.\r\n */\r\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\r\n/**\r\n * Remove an item from an array.\r\n */\r\nfunction remove$2(arr, item) {\r\n if (arr.length) {\r\n var index = arr.indexOf(item);\r\n if (index > -1) {\r\n return arr.splice(index, 1);\r\n }\r\n }\r\n}\r\n/**\r\n * Check whether an object has the property.\r\n */\r\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\r\nfunction hasOwn(obj, key) {\r\n return hasOwnProperty.call(obj, key);\r\n}\r\n/**\r\n * Create a cached version of a pure function.\r\n */\r\nfunction cached(fn) {\r\n var cache = Object.create(null);\r\n return function cachedFn(str) {\r\n var hit = cache[str];\r\n return hit || (cache[str] = fn(str));\r\n };\r\n}\r\n/**\r\n * Camelize a hyphen-delimited string.\r\n */\r\nvar camelizeRE = /-(\\w)/g;\r\nvar camelize = cached(function (str) {\r\n return str.replace(camelizeRE, function (_, c) { return (c ? c.toUpperCase() : ''); });\r\n});\r\n/**\r\n * Capitalize a string.\r\n */\r\nvar capitalize = cached(function (str) {\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n});\r\n/**\r\n * Hyphenate a camelCase string.\r\n */\r\nvar hyphenateRE = /\\B([A-Z])/g;\r\nvar hyphenate = cached(function (str) {\r\n return str.replace(hyphenateRE, '-$1').toLowerCase();\r\n});\r\n/**\r\n * Simple bind polyfill for environments that do not support it,\r\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\r\n * since native bind is now performant enough in most browsers.\r\n * But removing it would mean breaking code that was able to run in\r\n * PhantomJS 1.x, so this must be kept for backward compatibility.\r\n */\r\n/* istanbul ignore next */\r\nfunction polyfillBind(fn, ctx) {\r\n function boundFn(a) {\r\n var l = arguments.length;\r\n return l\r\n ? l > 1\r\n ? fn.apply(ctx, arguments)\r\n : fn.call(ctx, a)\r\n : fn.call(ctx);\r\n }\r\n boundFn._length = fn.length;\r\n return boundFn;\r\n}\r\nfunction nativeBind(fn, ctx) {\r\n return fn.bind(ctx);\r\n}\r\n// @ts-expect-error bind cannot be `undefined`\r\nvar bind$1 = Function.prototype.bind ? nativeBind : polyfillBind;\r\n/**\r\n * Convert an Array-like object to a real Array.\r\n */\r\nfunction toArray(list, start) {\r\n start = start || 0;\r\n var i = list.length - start;\r\n var ret = new Array(i);\r\n while (i--) {\r\n ret[i] = list[i + start];\r\n }\r\n return ret;\r\n}\r\n/**\r\n * Mix properties into target object.\r\n */\r\nfunction extend(to, _from) {\r\n for (var key in _from) {\r\n to[key] = _from[key];\r\n }\r\n return to;\r\n}\r\n/**\r\n * Merge an Array of Objects into a single Object.\r\n */\r\nfunction toObject(arr) {\r\n var res = {};\r\n for (var i = 0; i < arr.length; i++) {\r\n if (arr[i]) {\r\n extend(res, arr[i]);\r\n }\r\n }\r\n return res;\r\n}\r\n/* eslint-disable no-unused-vars */\r\n/**\r\n * Perform no operation.\r\n * Stubbing args to make Flow happy without leaving useless transpiled code\r\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\r\n */\r\nfunction noop(a, b, c) { }\r\n/**\r\n * Always return false.\r\n */\r\nvar no = function (a, b, c) { return false; };\r\n/* eslint-enable no-unused-vars */\r\n/**\r\n * Return the same value.\r\n */\r\nvar identity = function (_) { return _; };\r\n/**\r\n * Generate a string containing static keys from compiler modules.\r\n */\r\nfunction genStaticKeys$1(modules) {\r\n return modules\r\n .reduce(function (keys, m) {\r\n return keys.concat(m.staticKeys || []);\r\n }, [])\r\n .join(',');\r\n}\r\n/**\r\n * Check if two values are loosely equal - that is,\r\n * if they are plain objects, do they have the same shape?\r\n */\r\nfunction looseEqual(a, b) {\r\n if (a === b)\r\n return true;\r\n var isObjectA = isObject(a);\r\n var isObjectB = isObject(b);\r\n if (isObjectA && isObjectB) {\r\n try {\r\n var isArrayA = Array.isArray(a);\r\n var isArrayB = Array.isArray(b);\r\n if (isArrayA && isArrayB) {\r\n return (a.length === b.length &&\r\n a.every(function (e, i) {\r\n return looseEqual(e, b[i]);\r\n }));\r\n }\r\n else if (a instanceof Date && b instanceof Date) {\r\n return a.getTime() === b.getTime();\r\n }\r\n else if (!isArrayA && !isArrayB) {\r\n var keysA = Object.keys(a);\r\n var keysB = Object.keys(b);\r\n return (keysA.length === keysB.length &&\r\n keysA.every(function (key) {\r\n return looseEqual(a[key], b[key]);\r\n }));\r\n }\r\n else {\r\n /* istanbul ignore next */\r\n return false;\r\n }\r\n }\r\n catch (e) {\r\n /* istanbul ignore next */\r\n return false;\r\n }\r\n }\r\n else if (!isObjectA && !isObjectB) {\r\n return String(a) === String(b);\r\n }\r\n else {\r\n return false;\r\n }\r\n}\r\n/**\r\n * Return the first index at which a loosely equal value can be\r\n * found in the array (if value is a plain object, the array must\r\n * contain an object of the same shape), or -1 if it is not present.\r\n */\r\nfunction looseIndexOf(arr, val) {\r\n for (var i = 0; i < arr.length; i++) {\r\n if (looseEqual(arr[i], val))\r\n return i;\r\n }\r\n return -1;\r\n}\r\n/**\r\n * Ensure a function is called only once.\r\n */\r\nfunction once(fn) {\r\n var called = false;\r\n return function () {\r\n if (!called) {\r\n called = true;\r\n fn.apply(this, arguments);\r\n }\r\n };\r\n}\r\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is#polyfill\r\nfunction hasChanged(x, y) {\r\n if (x === y) {\r\n return x === 0 && 1 / x !== 1 / y;\r\n }\r\n else {\r\n return x === x || y === y;\r\n }\r\n}\n\nvar SSR_ATTR = 'data-server-rendered';\r\nvar ASSET_TYPES = ['component', 'directive', 'filter'];\r\nvar LIFECYCLE_HOOKS = [\r\n 'beforeCreate',\r\n 'created',\r\n 'beforeMount',\r\n 'mounted',\r\n 'beforeUpdate',\r\n 'updated',\r\n 'beforeDestroy',\r\n 'destroyed',\r\n 'activated',\r\n 'deactivated',\r\n 'errorCaptured',\r\n 'serverPrefetch'\r\n];\n\nvar config = {\r\n /**\r\n * Option merge strategies (used in core/util/options)\r\n */\r\n // $flow-disable-line\r\n optionMergeStrategies: Object.create(null),\r\n /**\r\n * Whether to suppress warnings.\r\n */\r\n silent: false,\r\n /**\r\n * Show production mode tip message on boot?\r\n */\r\n productionTip: process.env.NODE_ENV !== 'production',\r\n /**\r\n * Whether to enable devtools\r\n */\r\n devtools: process.env.NODE_ENV !== 'production',\r\n /**\r\n * Whether to record perf\r\n */\r\n performance: false,\r\n /**\r\n * Error handler for watcher errors\r\n */\r\n errorHandler: null,\r\n /**\r\n * Warn handler for watcher warns\r\n */\r\n warnHandler: null,\r\n /**\r\n * Ignore certain custom elements\r\n */\r\n ignoredElements: [],\r\n /**\r\n * Custom user key aliases for v-on\r\n */\r\n // $flow-disable-line\r\n keyCodes: Object.create(null),\r\n /**\r\n * Check if a tag is reserved so that it cannot be registered as a\r\n * component. This is platform-dependent and may be overwritten.\r\n */\r\n isReservedTag: no,\r\n /**\r\n * Check if an attribute is reserved so that it cannot be used as a component\r\n * prop. This is platform-dependent and may be overwritten.\r\n */\r\n isReservedAttr: no,\r\n /**\r\n * Check if a tag is an unknown element.\r\n * Platform-dependent.\r\n */\r\n isUnknownElement: no,\r\n /**\r\n * Get the namespace of an element\r\n */\r\n getTagNamespace: noop,\r\n /**\r\n * Parse the real tag name for the specific platform.\r\n */\r\n parsePlatformTagName: identity,\r\n /**\r\n * Check if an attribute must be bound using property, e.g. value\r\n * Platform-dependent.\r\n */\r\n mustUseProp: no,\r\n /**\r\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\r\n * This will significantly reduce performance if set to false.\r\n */\r\n async: true,\r\n /**\r\n * Exposed for legacy reasons\r\n */\r\n _lifecycleHooks: LIFECYCLE_HOOKS\r\n};\n\n/**\r\n * unicode letters used for parsing html tags, component names and property paths.\r\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\r\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\r\n */\r\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\r\n/**\r\n * Check if a string starts with $ or _\r\n */\r\nfunction isReserved(str) {\r\n var c = (str + '').charCodeAt(0);\r\n return c === 0x24 || c === 0x5f;\r\n}\r\n/**\r\n * Define a property.\r\n */\r\nfunction def(obj, key, val, enumerable) {\r\n Object.defineProperty(obj, key, {\r\n value: val,\r\n enumerable: !!enumerable,\r\n writable: true,\r\n configurable: true\r\n });\r\n}\r\n/**\r\n * Parse simple path.\r\n */\r\nvar bailRE = new RegExp(\"[^\".concat(unicodeRegExp.source, \".$_\\\\d]\"));\r\nfunction parsePath(path) {\r\n if (bailRE.test(path)) {\r\n return;\r\n }\r\n var segments = path.split('.');\r\n return function (obj) {\r\n for (var i = 0; i < segments.length; i++) {\r\n if (!obj)\r\n return;\r\n obj = obj[segments[i]];\r\n }\r\n return obj;\r\n };\r\n}\n\n// can we use __proto__?\r\nvar hasProto = '__proto__' in {};\r\n// Browser environment sniffing\r\nvar inBrowser = typeof window !== 'undefined';\r\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\r\nvar isIE = UA && /msie|trident/.test(UA);\r\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\r\nvar isEdge = UA && UA.indexOf('edge/') > 0;\r\nUA && UA.indexOf('android') > 0;\r\nvar isIOS = UA && /iphone|ipad|ipod|ios/.test(UA);\r\nUA && /chrome\\/\\d+/.test(UA) && !isEdge;\r\nUA && /phantomjs/.test(UA);\r\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\r\n// Firefox has a \"watch\" function on Object.prototype...\r\n// @ts-expect-error firebox support\r\nvar nativeWatch = {}.watch;\r\nvar supportsPassive = false;\r\nif (inBrowser) {\r\n try {\r\n var opts = {};\r\n Object.defineProperty(opts, 'passive', {\r\n get: function () {\r\n /* istanbul ignore next */\r\n supportsPassive = true;\r\n }\r\n }); // https://github.com/facebook/flow/issues/285\r\n window.addEventListener('test-passive', null, opts);\r\n }\r\n catch (e) { }\r\n}\r\n// this needs to be lazy-evaled because vue may be required before\r\n// vue-server-renderer can set VUE_ENV\r\nvar _isServer;\r\nvar isServerRendering = function () {\r\n if (_isServer === undefined) {\r\n /* istanbul ignore if */\r\n if (!inBrowser && typeof global !== 'undefined') {\r\n // detect presence of vue-server-renderer and avoid\r\n // Webpack shimming the process\r\n _isServer =\r\n global['process'] && global['process'].env.VUE_ENV === 'server';\r\n }\r\n else {\r\n _isServer = false;\r\n }\r\n }\r\n return _isServer;\r\n};\r\n// detect devtools\r\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\r\n/* istanbul ignore next */\r\nfunction isNative(Ctor) {\r\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString());\r\n}\r\nvar hasSymbol = typeof Symbol !== 'undefined' &&\r\n isNative(Symbol) &&\r\n typeof Reflect !== 'undefined' &&\r\n isNative(Reflect.ownKeys);\r\nvar _Set; // $flow-disable-line\r\n/* istanbul ignore if */ if (typeof Set !== 'undefined' && isNative(Set)) {\r\n // use native Set when available.\r\n _Set = Set;\r\n}\r\nelse {\r\n // a non-standard Set polyfill that only works with primitive keys.\r\n _Set = /** @class */ (function () {\r\n function Set() {\r\n this.set = Object.create(null);\r\n }\r\n Set.prototype.has = function (key) {\r\n return this.set[key] === true;\r\n };\r\n Set.prototype.add = function (key) {\r\n this.set[key] = true;\r\n };\r\n Set.prototype.clear = function () {\r\n this.set = Object.create(null);\r\n };\r\n return Set;\r\n }());\r\n}\n\nvar currentInstance = null;\r\n/**\r\n * This is exposed for compatibility with v3 (e.g. some functions in VueUse\r\n * relies on it). Do not use this internally, just use `currentInstance`.\r\n *\r\n * @internal this function needs manual type declaration because it relies\r\n * on previously manually authored types from Vue 2\r\n */\r\nfunction getCurrentInstance() {\r\n return currentInstance && { proxy: currentInstance };\r\n}\r\n/**\r\n * @internal\r\n */\r\nfunction setCurrentInstance(vm) {\r\n if (vm === void 0) { vm = null; }\r\n if (!vm)\r\n currentInstance && currentInstance._scope.off();\r\n currentInstance = vm;\r\n vm && vm._scope.on();\r\n}\n\nvar warn$2 = noop;\r\nvar tip = noop;\r\nvar generateComponentTrace; // work around flow check\r\nvar formatComponentName;\r\nif (process.env.NODE_ENV !== 'production') {\r\n var hasConsole_1 = typeof console !== 'undefined';\r\n var classifyRE_1 = /(?:^|[-_])(\\w)/g;\r\n var classify_1 = function (str) {\r\n return str.replace(classifyRE_1, function (c) { return c.toUpperCase(); }).replace(/[-_]/g, '');\r\n };\r\n warn$2 = function (msg, vm) {\r\n if (vm === void 0) { vm = currentInstance; }\r\n var trace = vm ? generateComponentTrace(vm) : '';\r\n if (config.warnHandler) {\r\n config.warnHandler.call(null, msg, vm, trace);\r\n }\r\n else if (hasConsole_1 && !config.silent) {\r\n console.error(\"[Vue warn]: \".concat(msg).concat(trace));\r\n }\r\n };\r\n tip = function (msg, vm) {\r\n if (hasConsole_1 && !config.silent) {\r\n console.warn(\"[Vue tip]: \".concat(msg) + (vm ? generateComponentTrace(vm) : ''));\r\n }\r\n };\r\n formatComponentName = function (vm, includeFile) {\r\n if (vm.$root === vm) {\r\n return '<Root>';\r\n }\r\n var options = isFunction(vm) && vm.cid != null\r\n ? vm.options\r\n : vm._isVue\r\n ? vm.$options || vm.constructor.options\r\n : vm;\r\n var name = options.name || options._componentTag;\r\n var file = options.__file;\r\n if (!name && file) {\r\n var match = file.match(/([^/\\\\]+)\\.vue$/);\r\n name = match && match[1];\r\n }\r\n return ((name ? \"<\".concat(classify_1(name), \">\") : \"<Anonymous>\") +\r\n (file && includeFile !== false ? \" at \".concat(file) : ''));\r\n };\r\n var repeat_1 = function (str, n) {\r\n var res = '';\r\n while (n) {\r\n if (n % 2 === 1)\r\n res += str;\r\n if (n > 1)\r\n str += str;\r\n n >>= 1;\r\n }\r\n return res;\r\n };\r\n generateComponentTrace = function (vm) {\r\n if (vm._isVue && vm.$parent) {\r\n var tree = [];\r\n var currentRecursiveSequence = 0;\r\n while (vm) {\r\n if (tree.length > 0) {\r\n var last = tree[tree.length - 1];\r\n if (last.constructor === vm.constructor) {\r\n currentRecursiveSequence++;\r\n vm = vm.$parent;\r\n continue;\r\n }\r\n else if (currentRecursiveSequence > 0) {\r\n tree[tree.length - 1] = [last, currentRecursiveSequence];\r\n currentRecursiveSequence = 0;\r\n }\r\n }\r\n tree.push(vm);\r\n vm = vm.$parent;\r\n }\r\n return ('\\n\\nfound in\\n\\n' +\r\n tree\r\n .map(function (vm, i) {\r\n return \"\".concat(i === 0 ? '---> ' : repeat_1(' ', 5 + i * 2)).concat(isArray(vm)\r\n ? \"\".concat(formatComponentName(vm[0]), \"... (\").concat(vm[1], \" recursive calls)\")\r\n : formatComponentName(vm));\r\n })\r\n .join('\\n'));\r\n }\r\n else {\r\n return \"\\n\\n(found in \".concat(formatComponentName(vm), \")\");\r\n }\r\n };\r\n}\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\n\nvar uid$2 = 0;\r\n/**\r\n * A dep is an observable that can have multiple\r\n * directives subscribing to it.\r\n * @internal\r\n */\r\nvar Dep = /** @class */ (function () {\r\n function Dep() {\r\n this.id = uid$2++;\r\n this.subs = [];\r\n }\r\n Dep.prototype.addSub = function (sub) {\r\n this.subs.push(sub);\r\n };\r\n Dep.prototype.removeSub = function (sub) {\r\n remove$2(this.subs, sub);\r\n };\r\n Dep.prototype.depend = function (info) {\r\n if (Dep.target) {\r\n Dep.target.addDep(this);\r\n if (process.env.NODE_ENV !== 'production' && info && Dep.target.onTrack) {\r\n Dep.target.onTrack(__assign({ effect: Dep.target }, info));\r\n }\r\n }\r\n };\r\n Dep.prototype.notify = function (info) {\r\n // stabilize the subscriber list first\r\n var subs = this.subs.slice();\r\n if (process.env.NODE_ENV !== 'production' && !config.async) {\r\n // subs aren't sorted in scheduler if not running async\r\n // we need to sort them now to make sure they fire in correct\r\n // order\r\n subs.sort(function (a, b) { return a.id - b.id; });\r\n }\r\n for (var i = 0, l = subs.length; i < l; i++) {\r\n if (process.env.NODE_ENV !== 'production' && info) {\r\n var sub = subs[i];\r\n sub.onTrigger &&\r\n sub.onTrigger(__assign({ effect: subs[i] }, info));\r\n }\r\n subs[i].update();\r\n }\r\n };\r\n return Dep;\r\n}());\r\n// The current target watcher being evaluated.\r\n// This is globally unique because only one watcher\r\n// can be evaluated at a time.\r\nDep.target = null;\r\nvar targetStack = [];\r\nfunction pushTarget(target) {\r\n targetStack.push(target);\r\n Dep.target = target;\r\n}\r\nfunction popTarget() {\r\n targetStack.pop();\r\n Dep.target = targetStack[targetStack.length - 1];\r\n}\n\n/**\r\n * @internal\r\n */\r\nvar VNode = /** @class */ (function () {\r\n function VNode(tag, data, children, text, elm, context, componentOptions, asyncFactory) {\r\n this.tag = tag;\r\n this.data = data;\r\n this.children = children;\r\n this.text = text;\r\n this.elm = elm;\r\n this.ns = undefined;\r\n this.context = context;\r\n this.fnContext = undefined;\r\n this.fnOptions = undefined;\r\n this.fnScopeId = undefined;\r\n this.key = data && data.key;\r\n this.componentOptions = componentOptions;\r\n this.componentInstance = undefined;\r\n this.parent = undefined;\r\n this.raw = false;\r\n this.isStatic = false;\r\n this.isRootInsert = true;\r\n this.isComment = false;\r\n this.isCloned = false;\r\n this.isOnce = false;\r\n this.asyncFactory = asyncFactory;\r\n this.asyncMeta = undefined;\r\n this.isAsyncPlaceholder = false;\r\n }\r\n Object.defineProperty(VNode.prototype, \"child\", {\r\n // DEPRECATED: alias for componentInstance for backwards compat.\r\n /* istanbul ignore next */\r\n get: function () {\r\n return this.componentInstance;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return VNode;\r\n}());\r\nvar createEmptyVNode = function (text) {\r\n if (text === void 0) { text = ''; }\r\n var node = new VNode();\r\n node.text = text;\r\n node.isComment = true;\r\n return node;\r\n};\r\nfunction createTextVNode(val) {\r\n return new VNode(undefined, undefined, undefined, String(val));\r\n}\r\n// optimized shallow clone\r\n// used for static nodes and slot nodes because they may be reused across\r\n// multiple renders, cloning them avoids errors when DOM manipulations rely\r\n// on their elm reference.\r\nfunction cloneVNode(vnode) {\r\n var cloned = new VNode(vnode.tag, vnode.data, \r\n // #7975\r\n // clone children array to avoid mutating original in case of cloning\r\n // a child.\r\n vnode.children && vnode.children.slice(), vnode.text, vnode.elm, vnode.context, vnode.componentOptions, vnode.asyncFactory);\r\n cloned.ns = vnode.ns;\r\n cloned.isStatic = vnode.isStatic;\r\n cloned.key = vnode.key;\r\n cloned.isComment = vnode.isComment;\r\n cloned.fnContext = vnode.fnContext;\r\n cloned.fnOptions = vnode.fnOptions;\r\n cloned.fnScopeId = vnode.fnScopeId;\r\n cloned.asyncMeta = vnode.asyncMeta;\r\n cloned.isCloned = true;\r\n return cloned;\r\n}\n\n/*\r\n * not type checking this file because flow doesn't play well with\r\n * dynamically accessing methods on Array prototype\r\n */\r\nvar arrayProto = Array.prototype;\r\nvar arrayMethods = Object.create(arrayProto);\r\nvar methodsToPatch = [\r\n 'push',\r\n 'pop',\r\n 'shift',\r\n 'unshift',\r\n 'splice',\r\n 'sort',\r\n 'reverse'\r\n];\r\n/**\r\n * Intercept mutating methods and emit events\r\n */\r\nmethodsToPatch.forEach(function (method) {\r\n // cache original method\r\n var original = arrayProto[method];\r\n def(arrayMethods, method, function mutator() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var result = original.apply(this, args);\r\n var ob = this.__ob__;\r\n var inserted;\r\n switch (method) {\r\n case 'push':\r\n case 'unshift':\r\n inserted = args;\r\n break;\r\n case 'splice':\r\n inserted = args.slice(2);\r\n break;\r\n }\r\n if (inserted)\r\n ob.observeArray(inserted);\r\n // notify change\r\n if (process.env.NODE_ENV !== 'production') {\r\n ob.dep.notify({\r\n type: \"array mutation\" /* TriggerOpTypes.ARRAY_MUTATION */,\r\n target: this,\r\n key: method\r\n });\r\n }\r\n else {\r\n ob.dep.notify();\r\n }\r\n return result;\r\n });\r\n});\n\nfunction reactive(target) {\r\n makeReactive(target, false);\r\n return target;\r\n}\r\n/**\r\n * Return a shallowly-reactive copy of the original object, where only the root\r\n * level properties are reactive. It also does not auto-unwrap refs (even at the\r\n * root level).\r\n */\r\nfunction shallowReactive(target) {\r\n makeReactive(target, true);\r\n def(target, \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */, true);\r\n return target;\r\n}\r\nfunction makeReactive(target, shallow) {\r\n // if trying to observe a readonly proxy, return the readonly version.\r\n if (!isReadonly(target)) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (isArray(target)) {\r\n warn$2(\"Avoid using Array as root value for \".concat(shallow ? \"shallowReactive()\" : \"reactive()\", \" as it cannot be tracked in watch() or watchEffect(). Use \").concat(shallow ? \"shallowRef()\" : \"ref()\", \" instead. This is a Vue-2-only limitation.\"));\r\n }\r\n var existingOb = target && target.__ob__;\r\n if (existingOb && existingOb.shallow !== shallow) {\r\n warn$2(\"Target is already a \".concat(existingOb.shallow ? \"\" : \"non-\", \"shallow reactive object, and cannot be converted to \").concat(shallow ? \"\" : \"non-\", \"shallow.\"));\r\n }\r\n }\r\n var ob = observe(target, shallow);\r\n if (process.env.NODE_ENV !== 'production' && !ob) {\r\n if (target == null || isPrimitive(target)) {\r\n warn$2(\"value cannot be made reactive: \".concat(String(target)));\r\n }\r\n if (isCollectionType(target)) {\r\n warn$2(\"Vue 2 does not support reactive collection types such as Map or Set.\");\r\n }\r\n }\r\n }\r\n}\r\nfunction isReactive(value) {\r\n if (isReadonly(value)) {\r\n return isReactive(value[\"__v_raw\" /* ReactiveFlags.RAW */]);\r\n }\r\n return !!(value && value.__ob__);\r\n}\r\nfunction isShallow(value) {\r\n return !!(value && value.__v_isShallow);\r\n}\r\nfunction isReadonly(value) {\r\n return !!(value && value.__v_isReadonly);\r\n}\r\nfunction isProxy(value) {\r\n return isReactive(value) || isReadonly(value);\r\n}\r\nfunction toRaw(observed) {\r\n var raw = observed && observed[\"__v_raw\" /* ReactiveFlags.RAW */];\r\n return raw ? toRaw(raw) : observed;\r\n}\r\nfunction markRaw(value) {\r\n def(value, \"__v_skip\" /* ReactiveFlags.SKIP */, true);\r\n return value;\r\n}\r\n/**\r\n * @internal\r\n */\r\nfunction isCollectionType(value) {\r\n var type = toRawType(value);\r\n return (type === 'Map' || type === 'WeakMap' || type === 'Set' || type === 'WeakSet');\r\n}\n\n/**\r\n * @internal\r\n */\r\nvar RefFlag = \"__v_isRef\";\r\nfunction isRef(r) {\r\n return !!(r && r.__v_isRef === true);\r\n}\r\nfunction ref$1(value) {\r\n return createRef(value, false);\r\n}\r\nfunction shallowRef(value) {\r\n return createRef(value, true);\r\n}\r\nfunction createRef(rawValue, shallow) {\r\n if (isRef(rawValue)) {\r\n return rawValue;\r\n }\r\n var ref = {};\r\n def(ref, RefFlag, true);\r\n def(ref, \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */, true);\r\n ref.dep = defineReactive(ref, 'value', rawValue, null, shallow);\r\n return ref;\r\n}\r\nfunction triggerRef(ref) {\r\n if (process.env.NODE_ENV !== 'production' && !ref.dep) {\r\n warn$2(\"received object is not a triggerable ref.\");\r\n }\r\n if (process.env.NODE_ENV !== 'production') {\r\n ref.dep &&\r\n ref.dep.notify({\r\n type: \"set\" /* TriggerOpTypes.SET */,\r\n target: ref,\r\n key: 'value'\r\n });\r\n }\r\n else {\r\n ref.dep && ref.dep.notify();\r\n }\r\n}\r\nfunction unref(ref) {\r\n return isRef(ref) ? ref.value : ref;\r\n}\r\nfunction proxyRefs(objectWithRefs) {\r\n if (isReactive(objectWithRefs)) {\r\n return objectWithRefs;\r\n }\r\n var proxy = {};\r\n var keys = Object.keys(objectWithRefs);\r\n for (var i = 0; i < keys.length; i++) {\r\n proxyWithRefUnwrap(proxy, objectWithRefs, keys[i]);\r\n }\r\n return proxy;\r\n}\r\nfunction proxyWithRefUnwrap(target, source, key) {\r\n Object.defineProperty(target, key, {\r\n enumerable: true,\r\n configurable: true,\r\n get: function () { return unref(source[key]); },\r\n set: function (value) {\r\n var oldValue = source[key];\r\n if (isRef(oldValue) && !isRef(value)) {\r\n oldValue.value = value;\r\n }\r\n else {\r\n source[key] = value;\r\n }\r\n }\r\n });\r\n}\r\nfunction customRef(factory) {\r\n var dep = new Dep();\r\n var _a = factory(function () {\r\n if (process.env.NODE_ENV !== 'production') {\r\n dep.depend({\r\n target: ref,\r\n type: \"get\" /* TrackOpTypes.GET */,\r\n key: 'value'\r\n });\r\n }\r\n else {\r\n dep.depend();\r\n }\r\n }, function () {\r\n if (process.env.NODE_ENV !== 'production') {\r\n dep.notify({\r\n target: ref,\r\n type: \"set\" /* TriggerOpTypes.SET */,\r\n key: 'value'\r\n });\r\n }\r\n else {\r\n dep.notify();\r\n }\r\n }), get = _a.get, set = _a.set;\r\n var ref = {\r\n get value() {\r\n return get();\r\n },\r\n set value(newVal) {\r\n set(newVal);\r\n }\r\n };\r\n def(ref, RefFlag, true);\r\n return ref;\r\n}\r\nfunction toRefs(object) {\r\n if (process.env.NODE_ENV !== 'production' && !isReactive(object)) {\r\n warn$2(\"toRefs() expects a reactive object but received a plain one.\");\r\n }\r\n var ret = isArray(object) ? new Array(object.length) : {};\r\n for (var key in object) {\r\n ret[key] = toRef(object, key);\r\n }\r\n return ret;\r\n}\r\nfunction toRef(object, key, defaultValue) {\r\n var val = object[key];\r\n if (isRef(val)) {\r\n return val;\r\n }\r\n var ref = {\r\n get value() {\r\n var val = object[key];\r\n return val === undefined ? defaultValue : val;\r\n },\r\n set value(newVal) {\r\n object[key] = newVal;\r\n }\r\n };\r\n def(ref, RefFlag, true);\r\n return ref;\r\n}\n\nvar rawToReadonlyFlag = \"__v_rawToReadonly\";\r\nvar rawToShallowReadonlyFlag = \"__v_rawToShallowReadonly\";\r\nfunction readonly(target) {\r\n return createReadonly(target, false);\r\n}\r\nfunction createReadonly(target, shallow) {\r\n if (!isPlainObject(target)) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (isArray(target)) {\r\n warn$2(\"Vue 2 does not support readonly arrays.\");\r\n }\r\n else if (isCollectionType(target)) {\r\n warn$2(\"Vue 2 does not support readonly collection types such as Map or Set.\");\r\n }\r\n else {\r\n warn$2(\"value cannot be made readonly: \".concat(typeof target));\r\n }\r\n }\r\n return target;\r\n }\r\n // already a readonly object\r\n if (isReadonly(target)) {\r\n return target;\r\n }\r\n // already has a readonly proxy\r\n var existingFlag = shallow ? rawToShallowReadonlyFlag : rawToReadonlyFlag;\r\n var existingProxy = target[existingFlag];\r\n if (existingProxy) {\r\n return existingProxy;\r\n }\r\n var proxy = Object.create(Object.getPrototypeOf(target));\r\n def(target, existingFlag, proxy);\r\n def(proxy, \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */, true);\r\n def(proxy, \"__v_raw\" /* ReactiveFlags.RAW */, target);\r\n if (isRef(target)) {\r\n def(proxy, RefFlag, true);\r\n }\r\n if (shallow || isShallow(target)) {\r\n def(proxy, \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */, true);\r\n }\r\n var keys = Object.keys(target);\r\n for (var i = 0; i < keys.length; i++) {\r\n defineReadonlyProperty(proxy, target, keys[i], shallow);\r\n }\r\n return proxy;\r\n}\r\nfunction defineReadonlyProperty(proxy, target, key, shallow) {\r\n Object.defineProperty(proxy, key, {\r\n enumerable: true,\r\n configurable: true,\r\n get: function () {\r\n var val = target[key];\r\n return shallow || !isPlainObject(val) ? val : readonly(val);\r\n },\r\n set: function () {\r\n process.env.NODE_ENV !== 'production' &&\r\n warn$2(\"Set operation on key \\\"\".concat(key, \"\\\" failed: target is readonly.\"));\r\n }\r\n });\r\n}\r\n/**\r\n * Returns a reactive-copy of the original object, where only the root level\r\n * properties are readonly, and does NOT unwrap refs nor recursively convert\r\n * returned properties.\r\n * This is used for creating the props proxy object for stateful components.\r\n */\r\nfunction shallowReadonly(target) {\r\n return createReadonly(target, true);\r\n}\n\nvar seenObjects = new _Set();\r\n/**\r\n * Recursively traverse an object to evoke all converted\r\n * getters, so that every nested property inside the object\r\n * is collected as a \"deep\" dependency.\r\n */\r\nfunction traverse(val) {\r\n _traverse(val, seenObjects);\r\n seenObjects.clear();\r\n return val;\r\n}\r\nfunction _traverse(val, seen) {\r\n var i, keys;\r\n var isA = isArray(val);\r\n if ((!isA && !isObject(val)) ||\r\n Object.isFrozen(val) ||\r\n val instanceof VNode) {\r\n return;\r\n }\r\n if (val.__ob__) {\r\n var depId = val.__ob__.dep.id;\r\n if (seen.has(depId)) {\r\n return;\r\n }\r\n seen.add(depId);\r\n }\r\n if (isA) {\r\n i = val.length;\r\n while (i--)\r\n _traverse(val[i], seen);\r\n }\r\n else {\r\n keys = Object.keys(val);\r\n i = keys.length;\r\n while (i--)\r\n _traverse(val[keys[i]], seen);\r\n }\r\n}\n\nvar mark;\r\nvar measure;\r\nif (process.env.NODE_ENV !== 'production') {\r\n var perf_1 = inBrowser && window.performance;\r\n /* istanbul ignore if */\r\n if (perf_1 &&\r\n // @ts-ignore\r\n perf_1.mark &&\r\n // @ts-ignore\r\n perf_1.measure &&\r\n // @ts-ignore\r\n perf_1.clearMarks &&\r\n // @ts-ignore\r\n perf_1.clearMeasures) {\r\n mark = function (tag) { return perf_1.mark(tag); };\r\n measure = function (name, startTag, endTag) {\r\n perf_1.measure(name, startTag, endTag);\r\n perf_1.clearMarks(startTag);\r\n perf_1.clearMarks(endTag);\r\n // perf.clearMeasures(name)\r\n };\r\n }\r\n}\n\nvar normalizeEvent = cached(function (name) {\r\n var passive = name.charAt(0) === '&';\r\n name = passive ? name.slice(1) : name;\r\n var once = name.charAt(0) === '~'; // Prefixed last, checked first\r\n name = once ? name.slice(1) : name;\r\n var capture = name.charAt(0) === '!';\r\n name = capture ? name.slice(1) : name;\r\n return {\r\n name: name,\r\n once: once,\r\n capture: capture,\r\n passive: passive\r\n };\r\n});\r\nfunction createFnInvoker(fns, vm) {\r\n function invoker() {\r\n var fns = invoker.fns;\r\n if (isArray(fns)) {\r\n var cloned = fns.slice();\r\n for (var i = 0; i < cloned.length; i++) {\r\n invokeWithErrorHandling(cloned[i], null, arguments, vm, \"v-on handler\");\r\n }\r\n }\r\n else {\r\n // return handler return value for single handlers\r\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\");\r\n }\r\n }\r\n invoker.fns = fns;\r\n return invoker;\r\n}\r\nfunction updateListeners(on, oldOn, add, remove, createOnceHandler, vm) {\r\n var name, cur, old, event;\r\n for (name in on) {\r\n cur = on[name];\r\n old = oldOn[name];\r\n event = normalizeEvent(name);\r\n if (isUndef(cur)) {\r\n process.env.NODE_ENV !== 'production' &&\r\n warn$2(\"Invalid handler for event \\\"\".concat(event.name, \"\\\": got \") + String(cur), vm);\r\n }\r\n else if (isUndef(old)) {\r\n if (isUndef(cur.fns)) {\r\n cur = on[name] = createFnInvoker(cur, vm);\r\n }\r\n if (isTrue(event.once)) {\r\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\r\n }\r\n add(event.name, cur, event.capture, event.passive, event.params);\r\n }\r\n else if (cur !== old) {\r\n old.fns = cur;\r\n on[name] = old;\r\n }\r\n }\r\n for (name in oldOn) {\r\n if (isUndef(on[name])) {\r\n event = normalizeEvent(name);\r\n remove(event.name, oldOn[name], event.capture);\r\n }\r\n }\r\n}\n\nfunction mergeVNodeHook(def, hookKey, hook) {\r\n if (def instanceof VNode) {\r\n def = def.data.hook || (def.data.hook = {});\r\n }\r\n var invoker;\r\n var oldHook = def[hookKey];\r\n function wrappedHook() {\r\n hook.apply(this, arguments);\r\n // important: remove merged hook to ensure it's called only once\r\n // and prevent memory leak\r\n remove$2(invoker.fns, wrappedHook);\r\n }\r\n if (isUndef(oldHook)) {\r\n // no existing hook\r\n invoker = createFnInvoker([wrappedHook]);\r\n }\r\n else {\r\n /* istanbul ignore if */\r\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\r\n // already a merged invoker\r\n invoker = oldHook;\r\n invoker.fns.push(wrappedHook);\r\n }\r\n else {\r\n // existing plain hook\r\n invoker = createFnInvoker([oldHook, wrappedHook]);\r\n }\r\n }\r\n invoker.merged = true;\r\n def[hookKey] = invoker;\r\n}\n\nfunction extractPropsFromVNodeData(data, Ctor, tag) {\r\n // we are only extracting raw values here.\r\n // validation and default values are handled in the child\r\n // component itself.\r\n var propOptions = Ctor.options.props;\r\n if (isUndef(propOptions)) {\r\n return;\r\n }\r\n var res = {};\r\n var attrs = data.attrs, props = data.props;\r\n if (isDef(attrs) || isDef(props)) {\r\n for (var key in propOptions) {\r\n var altKey = hyphenate(key);\r\n if (process.env.NODE_ENV !== 'production') {\r\n var keyInLowerCase = key.toLowerCase();\r\n if (key !== keyInLowerCase && attrs && hasOwn(attrs, keyInLowerCase)) {\r\n tip(\"Prop \\\"\".concat(keyInLowerCase, \"\\\" is passed to component \") +\r\n \"\".concat(formatComponentName(\r\n // @ts-expect-error tag is string\r\n tag || Ctor), \", but the declared prop name is\") +\r\n \" \\\"\".concat(key, \"\\\". \") +\r\n \"Note that HTML attributes are case-insensitive and camelCased \" +\r\n \"props need to use their kebab-case equivalents when using in-DOM \" +\r\n \"templates. You should probably use \\\"\".concat(altKey, \"\\\" instead of \\\"\").concat(key, \"\\\".\"));\r\n }\r\n }\r\n checkProp(res, props, key, altKey, true) ||\r\n checkProp(res, attrs, key, altKey, false);\r\n }\r\n }\r\n return res;\r\n}\r\nfunction checkProp(res, hash, key, altKey, preserve) {\r\n if (isDef(hash)) {\r\n if (hasOwn(hash, key)) {\r\n res[key] = hash[key];\r\n if (!preserve) {\r\n delete hash[key];\r\n }\r\n return true;\r\n }\r\n else if (hasOwn(hash, altKey)) {\r\n res[key] = hash[altKey];\r\n if (!preserve) {\r\n delete hash[altKey];\r\n }\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\n\n// The template compiler attempts to minimize the need for normalization by\r\n// statically analyzing the template at compile time.\r\n//\r\n// For plain HTML markup, normalization can be completely skipped because the\r\n// generated render function is guaranteed to return Array<VNode>. There are\r\n// two cases where extra normalization is needed:\r\n// 1. When the children contains components - because a functional component\r\n// may return an Array instead of a single root. In this case, just a simple\r\n// normalization is needed - if any child is an Array, we flatten the whole\r\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\r\n// because functional components already normalize their own children.\r\nfunction simpleNormalizeChildren(children) {\r\n for (var i = 0; i < children.length; i++) {\r\n if (isArray(children[i])) {\r\n return Array.prototype.concat.apply([], children);\r\n }\r\n }\r\n return children;\r\n}\r\n// 2. When the children contains constructs that always generated nested Arrays,\r\n// e.g. <template>, <slot>, v-for, or when the children is provided by user\r\n// with hand-written render functions / JSX. In such cases a full normalization\r\n// is needed to cater to all possible types of children values.\r\nfunction normalizeChildren(children) {\r\n return isPrimitive(children)\r\n ? [createTextVNode(children)]\r\n : isArray(children)\r\n ? normalizeArrayChildren(children)\r\n : undefined;\r\n}\r\nfunction isTextNode(node) {\r\n return isDef(node) && isDef(node.text) && isFalse(node.isComment);\r\n}\r\nfunction normalizeArrayChildren(children, nestedIndex) {\r\n var res = [];\r\n var i, c, lastIndex, last;\r\n for (i = 0; i < children.length; i++) {\r\n c = children[i];\r\n if (isUndef(c) || typeof c === 'boolean')\r\n continue;\r\n lastIndex = res.length - 1;\r\n last = res[lastIndex];\r\n // nested\r\n if (isArray(c)) {\r\n if (c.length > 0) {\r\n c = normalizeArrayChildren(c, \"\".concat(nestedIndex || '', \"_\").concat(i));\r\n // merge adjacent text nodes\r\n if (isTextNode(c[0]) && isTextNode(last)) {\r\n res[lastIndex] = createTextVNode(last.text + c[0].text);\r\n c.shift();\r\n }\r\n res.push.apply(res, c);\r\n }\r\n }\r\n else if (isPrimitive(c)) {\r\n if (isTextNode(last)) {\r\n // merge adjacent text nodes\r\n // this is necessary for SSR hydration because text nodes are\r\n // essentially merged when rendered to HTML strings\r\n res[lastIndex] = createTextVNode(last.text + c);\r\n }\r\n else if (c !== '') {\r\n // convert primitive to vnode\r\n res.push(createTextVNode(c));\r\n }\r\n }\r\n else {\r\n if (isTextNode(c) && isTextNode(last)) {\r\n // merge adjacent text nodes\r\n res[lastIndex] = createTextVNode(last.text + c.text);\r\n }\r\n else {\r\n // default key for nested array children (likely generated by v-for)\r\n if (isTrue(children._isVList) &&\r\n isDef(c.tag) &&\r\n isUndef(c.key) &&\r\n isDef(nestedIndex)) {\r\n c.key = \"__vlist\".concat(nestedIndex, \"_\").concat(i, \"__\");\r\n }\r\n res.push(c);\r\n }\r\n }\r\n }\r\n return res;\r\n}\n\n/* not type checking this file because flow doesn't play well with Proxy */\r\nvar initProxy;\r\nif (process.env.NODE_ENV !== 'production') {\r\n var allowedGlobals_1 = makeMap('Infinity,undefined,NaN,isFinite,isNaN,' +\r\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\r\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,' +\r\n 'require' // for Webpack/Browserify\r\n );\r\n var warnNonPresent_1 = function (target, key) {\r\n warn$2(\"Property or method \\\"\".concat(key, \"\\\" is not defined on the instance but \") +\r\n 'referenced during render. Make sure that this property is reactive, ' +\r\n 'either in the data option, or for class-based components, by ' +\r\n 'initializing the property. ' +\r\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.', target);\r\n };\r\n var warnReservedPrefix_1 = function (target, key) {\r\n warn$2(\"Property \\\"\".concat(key, \"\\\" must be accessed with \\\"$data.\").concat(key, \"\\\" because \") +\r\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\r\n 'prevent conflicts with Vue internals. ' +\r\n 'See: https://vuejs.org/v2/api/#data', target);\r\n };\r\n var hasProxy_1 = typeof Proxy !== 'undefined' && isNative(Proxy);\r\n if (hasProxy_1) {\r\n var isBuiltInModifier_1 = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\r\n config.keyCodes = new Proxy(config.keyCodes, {\r\n set: function (target, key, value) {\r\n if (isBuiltInModifier_1(key)) {\r\n warn$2(\"Avoid overwriting built-in modifier in config.keyCodes: .\".concat(key));\r\n return false;\r\n }\r\n else {\r\n target[key] = value;\r\n return true;\r\n }\r\n }\r\n });\r\n }\r\n var hasHandler_1 = {\r\n has: function (target, key) {\r\n var has = key in target;\r\n var isAllowed = allowedGlobals_1(key) ||\r\n (typeof key === 'string' &&\r\n key.charAt(0) === '_' &&\r\n !(key in target.$data));\r\n if (!has && !isAllowed) {\r\n if (key in target.$data)\r\n warnReservedPrefix_1(target, key);\r\n else\r\n warnNonPresent_1(target, key);\r\n }\r\n return has || !isAllowed;\r\n }\r\n };\r\n var getHandler_1 = {\r\n get: function (target, key) {\r\n if (typeof key === 'string' && !(key in target)) {\r\n if (key in target.$data)\r\n warnReservedPrefix_1(target, key);\r\n else\r\n warnNonPresent_1(target, key);\r\n }\r\n return target[key];\r\n }\r\n };\r\n initProxy = function initProxy(vm) {\r\n if (hasProxy_1) {\r\n // determine which proxy handler to use\r\n var options = vm.$options;\r\n var handlers = options.render && options.render._withStripped ? getHandler_1 : hasHandler_1;\r\n vm._renderProxy = new Proxy(vm, handlers);\r\n }\r\n else {\r\n vm._renderProxy = vm;\r\n }\r\n };\r\n}\n\nfunction initSetup(vm) {\r\n var options = vm.$options;\r\n var setup = options.setup;\r\n if (setup) {\r\n var ctx = (vm._setupContext = createSetupContext(vm));\r\n setCurrentInstance(vm);\r\n pushTarget();\r\n var setupResult = invokeWithErrorHandling(setup, null, [vm._props || shallowReactive({}), ctx], vm, \"setup\");\r\n popTarget();\r\n setCurrentInstance();\r\n if (isFunction(setupResult)) {\r\n // render function\r\n // @ts-ignore\r\n options.render = setupResult;\r\n }\r\n else if (isObject(setupResult)) {\r\n // bindings\r\n if (process.env.NODE_ENV !== 'production' && setupResult instanceof VNode) {\r\n warn$2(\"setup() should not return VNodes directly - \" +\r\n \"return a render function instead.\");\r\n }\r\n vm._setupState = setupResult;\r\n // __sfc indicates compiled bindings from <script setup>\r\n if (!setupResult.__sfc) {\r\n for (var key in setupResult) {\r\n if (!isReserved(key)) {\r\n proxyWithRefUnwrap(vm, setupResult, key);\r\n }\r\n else if (process.env.NODE_ENV !== 'production') {\r\n warn$2(\"Avoid using variables that start with _ or $ in setup().\");\r\n }\r\n }\r\n }\r\n else {\r\n // exposed for compiled render fn\r\n var proxy = (vm._setupProxy = {});\r\n for (var key in setupResult) {\r\n if (key !== '__sfc') {\r\n proxyWithRefUnwrap(proxy, setupResult, key);\r\n }\r\n }\r\n }\r\n }\r\n else if (process.env.NODE_ENV !== 'production' && setupResult !== undefined) {\r\n warn$2(\"setup() should return an object. Received: \".concat(setupResult === null ? 'null' : typeof setupResult));\r\n }\r\n }\r\n}\r\nfunction createSetupContext(vm) {\r\n var exposeCalled = false;\r\n return {\r\n get attrs() {\r\n return initAttrsProxy(vm);\r\n },\r\n get slots() {\r\n return initSlotsProxy(vm);\r\n },\r\n emit: bind$1(vm.$emit, vm),\r\n expose: function (exposed) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (exposeCalled) {\r\n warn$2(\"expose() should be called only once per setup().\", vm);\r\n }\r\n exposeCalled = true;\r\n }\r\n if (exposed) {\r\n Object.keys(exposed).forEach(function (key) {\r\n return proxyWithRefUnwrap(vm, exposed, key);\r\n });\r\n }\r\n }\r\n };\r\n}\r\nfunction initAttrsProxy(vm) {\r\n if (!vm._attrsProxy) {\r\n var proxy = (vm._attrsProxy = {});\r\n def(proxy, '_v_attr_proxy', true);\r\n syncSetupAttrs(proxy, vm.$attrs, emptyObject, vm);\r\n }\r\n return vm._attrsProxy;\r\n}\r\nfunction syncSetupAttrs(to, from, prev, instance) {\r\n var changed = false;\r\n for (var key in from) {\r\n if (!(key in to)) {\r\n changed = true;\r\n defineProxyAttr(to, key, instance);\r\n }\r\n else if (from[key] !== prev[key]) {\r\n changed = true;\r\n }\r\n }\r\n for (var key in to) {\r\n if (!(key in from)) {\r\n changed = true;\r\n delete to[key];\r\n }\r\n }\r\n return changed;\r\n}\r\nfunction defineProxyAttr(proxy, key, instance) {\r\n Object.defineProperty(proxy, key, {\r\n enumerable: true,\r\n configurable: true,\r\n get: function () {\r\n return instance.$attrs[key];\r\n }\r\n });\r\n}\r\nfunction initSlotsProxy(vm) {\r\n if (!vm._slotsProxy) {\r\n syncSetupSlots((vm._slotsProxy = {}), vm.$scopedSlots);\r\n }\r\n return vm._slotsProxy;\r\n}\r\nfunction syncSetupSlots(to, from) {\r\n for (var key in from) {\r\n to[key] = from[key];\r\n }\r\n for (var key in to) {\r\n if (!(key in from)) {\r\n delete to[key];\r\n }\r\n }\r\n}\r\n/**\r\n * @internal use manual type def\r\n */\r\nfunction useSlots() {\r\n return getContext().slots;\r\n}\r\n/**\r\n * @internal use manual type def\r\n */\r\nfunction useAttrs() {\r\n return getContext().attrs;\r\n}\r\nfunction getContext() {\r\n if (process.env.NODE_ENV !== 'production' && !currentInstance) {\r\n warn$2(\"useContext() called without active instance.\");\r\n }\r\n var vm = currentInstance;\r\n return vm._setupContext || (vm._setupContext = createSetupContext(vm));\r\n}\r\n/**\r\n * Runtime helper for merging default declarations. Imported by compiled code\r\n * only.\r\n * @internal\r\n */\r\nfunction mergeDefaults(raw, defaults) {\r\n var props = isArray(raw)\r\n ? raw.reduce(function (normalized, p) { return ((normalized[p] = {}), normalized); }, {})\r\n : raw;\r\n for (var key in defaults) {\r\n var opt = props[key];\r\n if (opt) {\r\n if (isArray(opt) || isFunction(opt)) {\r\n props[key] = { type: opt, default: defaults[key] };\r\n }\r\n else {\r\n opt.default = defaults[key];\r\n }\r\n }\r\n else if (opt === null) {\r\n props[key] = { default: defaults[key] };\r\n }\r\n else if (process.env.NODE_ENV !== 'production') {\r\n warn$2(\"props default key \\\"\".concat(key, \"\\\" has no corresponding declaration.\"));\r\n }\r\n }\r\n return props;\r\n}\n\nvar sharedPropertyDefinition = {\r\n enumerable: true,\r\n configurable: true,\r\n get: noop,\r\n set: noop\r\n};\r\nfunction proxy(target, sourceKey, key) {\r\n sharedPropertyDefinition.get = function proxyGetter() {\r\n return this[sourceKey][key];\r\n };\r\n sharedPropertyDefinition.set = function proxySetter(val) {\r\n this[sourceKey][key] = val;\r\n };\r\n Object.defineProperty(target, key, sharedPropertyDefinition);\r\n}\r\nfunction initState(vm) {\r\n var opts = vm.$options;\r\n if (opts.props)\r\n initProps$1(vm, opts.props);\r\n // Composition API\r\n initSetup(vm);\r\n if (opts.methods)\r\n initMethods(vm, opts.methods);\r\n if (opts.data) {\r\n initData(vm);\r\n }\r\n else {\r\n var ob = observe((vm._data = {}));\r\n ob && ob.vmCount++;\r\n }\r\n if (opts.computed)\r\n initComputed$1(vm, opts.computed);\r\n if (opts.watch && opts.watch !== nativeWatch) {\r\n initWatch(vm, opts.watch);\r\n }\r\n}\r\nfunction initProps$1(vm, propsOptions) {\r\n var propsData = vm.$options.propsData || {};\r\n var props = (vm._props = shallowReactive({}));\r\n // cache prop keys so that future props updates can iterate using Array\r\n // instead of dynamic object key enumeration.\r\n var keys = (vm.$options._propKeys = []);\r\n var isRoot = !vm.$parent;\r\n // root instance props should be converted\r\n if (!isRoot) {\r\n toggleObserving(false);\r\n }\r\n var _loop_1 = function (key) {\r\n keys.push(key);\r\n var value = validateProp(key, propsOptions, propsData, vm);\r\n /* istanbul ignore else */\r\n if (process.env.NODE_ENV !== 'production') {\r\n var hyphenatedKey = hyphenate(key);\r\n if (isReservedAttribute(hyphenatedKey) ||\r\n config.isReservedAttr(hyphenatedKey)) {\r\n warn$2(\"\\\"\".concat(hyphenatedKey, \"\\\" is a reserved attribute and cannot be used as component prop.\"), vm);\r\n }\r\n defineReactive(props, key, value, function () {\r\n if (!isRoot && !isUpdatingChildComponent) {\r\n warn$2(\"Avoid mutating a prop directly since the value will be \" +\r\n \"overwritten whenever the parent component re-renders. \" +\r\n \"Instead, use a data or computed property based on the prop's \" +\r\n \"value. Prop being mutated: \\\"\".concat(key, \"\\\"\"), vm);\r\n }\r\n });\r\n }\r\n else {\r\n defineReactive(props, key, value);\r\n }\r\n // static props are already proxied on the component's prototype\r\n // during Vue.extend(). We only need to proxy props defined at\r\n // instantiation here.\r\n if (!(key in vm)) {\r\n proxy(vm, \"_props\", key);\r\n }\r\n };\r\n for (var key in propsOptions) {\r\n _loop_1(key);\r\n }\r\n toggleObserving(true);\r\n}\r\nfunction initData(vm) {\r\n var data = vm.$options.data;\r\n data = vm._data = isFunction(data) ? getData(data, vm) : data || {};\r\n if (!isPlainObject(data)) {\r\n data = {};\r\n process.env.NODE_ENV !== 'production' &&\r\n warn$2('data functions should return an object:\\n' +\r\n 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function', vm);\r\n }\r\n // proxy data on instance\r\n var keys = Object.keys(data);\r\n var props = vm.$options.props;\r\n var methods = vm.$options.methods;\r\n var i = keys.length;\r\n while (i--) {\r\n var key = keys[i];\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (methods && hasOwn(methods, key)) {\r\n warn$2(\"Method \\\"\".concat(key, \"\\\" has already been defined as a data property.\"), vm);\r\n }\r\n }\r\n if (props && hasOwn(props, key)) {\r\n process.env.NODE_ENV !== 'production' &&\r\n warn$2(\"The data property \\\"\".concat(key, \"\\\" is already declared as a prop. \") +\r\n \"Use prop default value instead.\", vm);\r\n }\r\n else if (!isReserved(key)) {\r\n proxy(vm, \"_data\", key);\r\n }\r\n }\r\n // observe data\r\n var ob = observe(data);\r\n ob && ob.vmCount++;\r\n}\r\nfunction getData(data, vm) {\r\n // #7573 disable dep collection when invoking data getters\r\n pushTarget();\r\n try {\r\n return data.call(vm, vm);\r\n }\r\n catch (e) {\r\n handleError(e, vm, \"data()\");\r\n return {};\r\n }\r\n finally {\r\n popTarget();\r\n }\r\n}\r\nvar computedWatcherOptions = { lazy: true };\r\nfunction initComputed$1(vm, computed) {\r\n // $flow-disable-line\r\n var watchers = (vm._computedWatchers = Object.create(null));\r\n // computed properties are just getters during SSR\r\n var isSSR = isServerRendering();\r\n for (var key in computed) {\r\n var userDef = computed[key];\r\n var getter = isFunction(userDef) ? userDef : userDef.get;\r\n if (process.env.NODE_ENV !== 'production' && getter == null) {\r\n warn$2(\"Getter is missing for computed property \\\"\".concat(key, \"\\\".\"), vm);\r\n }\r\n if (!isSSR) {\r\n // create internal watcher for the computed property.\r\n watchers[key] = new Watcher(vm, getter || noop, noop, computedWatcherOptions);\r\n }\r\n // component-defined computed properties are already defined on the\r\n // component prototype. We only need to define computed properties defined\r\n // at instantiation here.\r\n if (!(key in vm)) {\r\n defineComputed(vm, key, userDef);\r\n }\r\n else if (process.env.NODE_ENV !== 'production') {\r\n if (key in vm.$data) {\r\n warn$2(\"The computed property \\\"\".concat(key, \"\\\" is already defined in data.\"), vm);\r\n }\r\n else if (vm.$options.props && key in vm.$options.props) {\r\n warn$2(\"The computed property \\\"\".concat(key, \"\\\" is already defined as a prop.\"), vm);\r\n }\r\n else if (vm.$options.methods && key in vm.$options.methods) {\r\n warn$2(\"The computed property \\\"\".concat(key, \"\\\" is already defined as a method.\"), vm);\r\n }\r\n }\r\n }\r\n}\r\nfunction defineComputed(target, key, userDef) {\r\n var shouldCache = !isServerRendering();\r\n if (isFunction(userDef)) {\r\n sharedPropertyDefinition.get = shouldCache\r\n ? createComputedGetter(key)\r\n : createGetterInvoker(userDef);\r\n sharedPropertyDefinition.set = noop;\r\n }\r\n else {\r\n sharedPropertyDefinition.get = userDef.get\r\n ? shouldCache && userDef.cache !== false\r\n ? createComputedGetter(key)\r\n : createGetterInvoker(userDef.get)\r\n : noop;\r\n sharedPropertyDefinition.set = userDef.set || noop;\r\n }\r\n if (process.env.NODE_ENV !== 'production' && sharedPropertyDefinition.set === noop) {\r\n sharedPropertyDefinition.set = function () {\r\n warn$2(\"Computed property \\\"\".concat(key, \"\\\" was assigned to but it has no setter.\"), this);\r\n };\r\n }\r\n Object.defineProperty(target, key, sharedPropertyDefinition);\r\n}\r\nfunction createComputedGetter(key) {\r\n return function computedGetter() {\r\n var watcher = this._computedWatchers && this._computedWatchers[key];\r\n if (watcher) {\r\n if (watcher.dirty) {\r\n watcher.evaluate();\r\n }\r\n if (Dep.target) {\r\n if (process.env.NODE_ENV !== 'production' && Dep.target.onTrack) {\r\n Dep.target.onTrack({\r\n effect: Dep.target,\r\n target: this,\r\n type: \"get\" /* TrackOpTypes.GET */,\r\n key: key\r\n });\r\n }\r\n watcher.depend();\r\n }\r\n return watcher.value;\r\n }\r\n };\r\n}\r\nfunction createGetterInvoker(fn) {\r\n return function computedGetter() {\r\n return fn.call(this, this);\r\n };\r\n}\r\nfunction initMethods(vm, methods) {\r\n var props = vm.$options.props;\r\n for (var key in methods) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (typeof methods[key] !== 'function') {\r\n warn$2(\"Method \\\"\".concat(key, \"\\\" has type \\\"\").concat(typeof methods[key], \"\\\" in the component definition. \") +\r\n \"Did you reference the function correctly?\", vm);\r\n }\r\n if (props && hasOwn(props, key)) {\r\n warn$2(\"Method \\\"\".concat(key, \"\\\" has already been defined as a prop.\"), vm);\r\n }\r\n if (key in vm && isReserved(key)) {\r\n warn$2(\"Method \\\"\".concat(key, \"\\\" conflicts with an existing Vue instance method. \") +\r\n \"Avoid defining component methods that start with _ or $.\");\r\n }\r\n }\r\n vm[key] = typeof methods[key] !== 'function' ? noop : bind$1(methods[key], vm);\r\n }\r\n}\r\nfunction initWatch(vm, watch) {\r\n for (var key in watch) {\r\n var handler = watch[key];\r\n if (isArray(handler)) {\r\n for (var i = 0; i < handler.length; i++) {\r\n createWatcher(vm, key, handler[i]);\r\n }\r\n }\r\n else {\r\n createWatcher(vm, key, handler);\r\n }\r\n }\r\n}\r\nfunction createWatcher(vm, expOrFn, handler, options) {\r\n if (isPlainObject(handler)) {\r\n options = handler;\r\n handler = handler.handler;\r\n }\r\n if (typeof handler === 'string') {\r\n handler = vm[handler];\r\n }\r\n return vm.$watch(expOrFn, handler, options);\r\n}\r\nfunction stateMixin(Vue) {\r\n // flow somehow has problems with directly declared definition object\r\n // when using Object.defineProperty, so we have to procedurally build up\r\n // the object here.\r\n var dataDef = {};\r\n dataDef.get = function () {\r\n return this._data;\r\n };\r\n var propsDef = {};\r\n propsDef.get = function () {\r\n return this._props;\r\n };\r\n if (process.env.NODE_ENV !== 'production') {\r\n dataDef.set = function () {\r\n warn$2('Avoid replacing instance root $data. ' +\r\n 'Use nested data properties instead.', this);\r\n };\r\n propsDef.set = function () {\r\n warn$2(\"$props is readonly.\", this);\r\n };\r\n }\r\n Object.defineProperty(Vue.prototype, '$data', dataDef);\r\n Object.defineProperty(Vue.prototype, '$props', propsDef);\r\n Vue.prototype.$set = set;\r\n Vue.prototype.$delete = del;\r\n Vue.prototype.$watch = function (expOrFn, cb, options) {\r\n var vm = this;\r\n if (isPlainObject(cb)) {\r\n return createWatcher(vm, expOrFn, cb, options);\r\n }\r\n options = options || {};\r\n options.user = true;\r\n var watcher = new Watcher(vm, expOrFn, cb, options);\r\n if (options.immediate) {\r\n var info = \"callback for immediate watcher \\\"\".concat(watcher.expression, \"\\\"\");\r\n pushTarget();\r\n invokeWithErrorHandling(cb, vm, [watcher.value], vm, info);\r\n popTarget();\r\n }\r\n return function unwatchFn() {\r\n watcher.teardown();\r\n };\r\n };\r\n}\n\nfunction provide(key, value) {\r\n if (!currentInstance) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n warn$2(\"provide() can only be used inside setup().\");\r\n }\r\n }\r\n else {\r\n var provides = currentInstance._provided;\r\n // by default an instance inherits its parent's provides object\r\n // but when it needs to provide values of its own, it creates its\r\n // own provides object using parent provides object as prototype.\r\n // this way in `inject` we can simply look up injections from direct\r\n // parent and let the prototype chain do the work.\r\n var parentProvides = currentInstance.$parent && currentInstance.$parent._provided;\r\n if (parentProvides === provides) {\r\n provides = currentInstance._provided = Object.create(parentProvides);\r\n }\r\n // TS doesn't allow symbol as index type\r\n provides[key] = value;\r\n }\r\n}\r\nfunction inject(key, defaultValue, treatDefaultAsFactory) {\r\n if (treatDefaultAsFactory === void 0) { treatDefaultAsFactory = false; }\r\n // fallback to `currentRenderingInstance` so that this can be called in\r\n // a functional component\r\n var instance = currentInstance;\r\n if (instance) {\r\n // #2400\r\n // to support `app.use` plugins,\r\n // fallback to appContext's `provides` if the instance is at root\r\n var provides = instance.$parent && instance.$parent._provided;\r\n if (provides && key in provides) {\r\n // TS doesn't allow symbol as index type\r\n return provides[key];\r\n }\r\n else if (arguments.length > 1) {\r\n return treatDefaultAsFactory && isFunction(defaultValue)\r\n ? defaultValue.call(instance)\r\n : defaultValue;\r\n }\r\n else if (process.env.NODE_ENV !== 'production') {\r\n warn$2(\"injection \\\"\".concat(String(key), \"\\\" not found.\"));\r\n }\r\n }\r\n else if (process.env.NODE_ENV !== 'production') {\r\n warn$2(\"inject() can only be used inside setup() or functional components.\");\r\n }\r\n}\n\nfunction initProvide(vm) {\r\n var provideOption = vm.$options.provide;\r\n if (provideOption) {\r\n var provided = isFunction(provideOption)\r\n ? provideOption.call(vm)\r\n : provideOption;\r\n if (!isObject(provided)) {\r\n return;\r\n }\r\n var keys = hasSymbol ? Reflect.ownKeys(provided) : Object.keys(provided);\r\n setCurrentInstance(vm);\r\n for (var i = 0; i < keys.length; i++) {\r\n provide(keys[i], provided[keys[i]]);\r\n }\r\n setCurrentInstance();\r\n }\r\n}\r\nfunction initInjections(vm) {\r\n var result = resolveInject(vm.$options.inject, vm);\r\n if (result) {\r\n toggleObserving(false);\r\n Object.keys(result).forEach(function (key) {\r\n /* istanbul ignore else */\r\n if (process.env.NODE_ENV !== 'production') {\r\n defineReactive(vm, key, result[key], function () {\r\n warn$2(\"Avoid mutating an injected value directly since the changes will be \" +\r\n \"overwritten whenever the provided component re-renders. \" +\r\n \"injection being mutated: \\\"\".concat(key, \"\\\"\"), vm);\r\n });\r\n }\r\n else {\r\n defineReactive(vm, key, result[key]);\r\n }\r\n });\r\n toggleObserving(true);\r\n }\r\n}\r\nfunction resolveInject(inject, vm) {\r\n if (inject) {\r\n // inject is :any because flow is not smart enough to figure out cached\r\n var result = Object.create(null);\r\n var keys = hasSymbol ? Reflect.ownKeys(inject) : Object.keys(inject);\r\n for (var i = 0; i < keys.length; i++) {\r\n var key = keys[i];\r\n // #6574 in case the inject object is observed...\r\n if (key === '__ob__')\r\n continue;\r\n var provideKey = inject[key].from;\r\n if (provideKey in vm._provided) {\r\n result[key] = vm._provided[provideKey];\r\n }\r\n else if ('default' in inject[key]) {\r\n var provideDefault = inject[key].default;\r\n result[key] = isFunction(provideDefault)\r\n ? provideDefault.call(vm)\r\n : provideDefault;\r\n }\r\n else if (process.env.NODE_ENV !== 'production') {\r\n warn$2(\"Injection \\\"\".concat(key, \"\\\" not found\"), vm);\r\n }\r\n }\r\n return result;\r\n }\r\n}\n\nvar activeEffectScope;\r\nvar EffectScope = /** @class */ (function () {\r\n function EffectScope(detached) {\r\n if (detached === void 0) { detached = false; }\r\n /**\r\n * @internal\r\n */\r\n this.active = true;\r\n /**\r\n * @internal\r\n */\r\n this.effects = [];\r\n /**\r\n * @internal\r\n */\r\n this.cleanups = [];\r\n if (!detached && activeEffectScope) {\r\n this.parent = activeEffectScope;\r\n this.index =\r\n (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1;\r\n }\r\n }\r\n EffectScope.prototype.run = function (fn) {\r\n if (this.active) {\r\n var currentEffectScope = activeEffectScope;\r\n try {\r\n activeEffectScope = this;\r\n return fn();\r\n }\r\n finally {\r\n activeEffectScope = currentEffectScope;\r\n }\r\n }\r\n else if (process.env.NODE_ENV !== 'production') {\r\n warn$2(\"cannot run an inactive effect scope.\");\r\n }\r\n };\r\n /**\r\n * This should only be called on non-detached scopes\r\n * @internal\r\n */\r\n EffectScope.prototype.on = function () {\r\n activeEffectScope = this;\r\n };\r\n /**\r\n * This should only be called on non-detached scopes\r\n * @internal\r\n */\r\n EffectScope.prototype.off = function () {\r\n activeEffectScope = this.parent;\r\n };\r\n EffectScope.prototype.stop = function (fromParent) {\r\n if (this.active) {\r\n var i = void 0, l = void 0;\r\n for (i = 0, l = this.effects.length; i < l; i++) {\r\n this.effects[i].teardown();\r\n }\r\n for (i = 0, l = this.cleanups.length; i < l; i++) {\r\n this.cleanups[i]();\r\n }\r\n if (this.scopes) {\r\n for (i = 0, l = this.scopes.length; i < l; i++) {\r\n this.scopes[i].stop(true);\r\n }\r\n }\r\n // nested scope, dereference from parent to avoid memory leaks\r\n if (this.parent && !fromParent) {\r\n // optimized O(1) removal\r\n var last = this.parent.scopes.pop();\r\n if (last && last !== this) {\r\n this.parent.scopes[this.index] = last;\r\n last.index = this.index;\r\n }\r\n }\r\n this.active = false;\r\n }\r\n };\r\n return EffectScope;\r\n}());\r\nfunction effectScope(detached) {\r\n return new EffectScope(detached);\r\n}\r\n/**\r\n * @internal\r\n */\r\nfunction recordEffectScope(effect, scope) {\r\n if (scope === void 0) { scope = activeEffectScope; }\r\n if (scope && scope.active) {\r\n scope.effects.push(effect);\r\n }\r\n}\r\nfunction getCurrentScope() {\r\n return activeEffectScope;\r\n}\r\nfunction onScopeDispose(fn) {\r\n if (activeEffectScope) {\r\n activeEffectScope.cleanups.push(fn);\r\n }\r\n else if (process.env.NODE_ENV !== 'production') {\r\n warn$2(\"onScopeDispose() is called when there is no active effect scope\" +\r\n \" to be associated with.\");\r\n }\r\n}\n\nvar uid$1 = 0;\r\nfunction initMixin$1(Vue) {\r\n Vue.prototype._init = function (options) {\r\n var vm = this;\r\n // a uid\r\n vm._uid = uid$1++;\r\n var startTag, endTag;\r\n /* istanbul ignore if */\r\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\r\n startTag = \"vue-perf-start:\".concat(vm._uid);\r\n endTag = \"vue-perf-end:\".concat(vm._uid);\r\n mark(startTag);\r\n }\r\n // a flag to mark this as a Vue instance without having to do instanceof\r\n // check\r\n vm._isVue = true;\r\n // avoid instances from being observed\r\n vm.__v_skip = true;\r\n // effect scope\r\n vm._scope = new EffectScope(true /* detached */);\r\n // merge options\r\n if (options && options._isComponent) {\r\n // optimize internal component instantiation\r\n // since dynamic options merging is pretty slow, and none of the\r\n // internal component options needs special treatment.\r\n initInternalComponent(vm, options);\r\n }\r\n else {\r\n vm.$options = mergeOptions(resolveConstructorOptions(vm.constructor), options || {}, vm);\r\n }\r\n /* istanbul ignore else */\r\n if (process.env.NODE_ENV !== 'production') {\r\n initProxy(vm);\r\n }\r\n else {\r\n vm._renderProxy = vm;\r\n }\r\n // expose real self\r\n vm._self = vm;\r\n initLifecycle(vm);\r\n initEvents(vm);\r\n initRender(vm);\r\n callHook$1(vm, 'beforeCreate');\r\n initInjections(vm); // resolve injections before data/props\r\n initState(vm);\r\n initProvide(vm); // resolve provide after data/props\r\n callHook$1(vm, 'created');\r\n /* istanbul ignore if */\r\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\r\n vm._name = formatComponentName(vm, false);\r\n mark(endTag);\r\n measure(\"vue \".concat(vm._name, \" init\"), startTag, endTag);\r\n }\r\n if (vm.$options.el) {\r\n vm.$mount(vm.$options.el);\r\n }\r\n };\r\n}\r\nfunction initInternalComponent(vm, options) {\r\n var opts = (vm.$options = Object.create(vm.constructor.options));\r\n // doing this because it's faster than dynamic enumeration.\r\n var parentVnode = options._parentVnode;\r\n opts.parent = options.parent;\r\n opts._parentVnode = parentVnode;\r\n var vnodeComponentOptions = parentVnode.componentOptions;\r\n opts.propsData = vnodeComponentOptions.propsData;\r\n opts._parentListeners = vnodeComponentOptions.listeners;\r\n opts._renderChildren = vnodeComponentOptions.children;\r\n opts._componentTag = vnodeComponentOptions.tag;\r\n if (options.render) {\r\n opts.render = options.render;\r\n opts.staticRenderFns = options.staticRenderFns;\r\n }\r\n}\r\nfunction resolveConstructorOptions(Ctor) {\r\n var options = Ctor.options;\r\n if (Ctor.super) {\r\n var superOptions = resolveConstructorOptions(Ctor.super);\r\n var cachedSuperOptions = Ctor.superOptions;\r\n if (superOptions !== cachedSuperOptions) {\r\n // super option changed,\r\n // need to resolve new options.\r\n Ctor.superOptions = superOptions;\r\n // check if there are any late-modified/attached options (#4976)\r\n var modifiedOptions = resolveModifiedOptions(Ctor);\r\n // update base extend options\r\n if (modifiedOptions) {\r\n extend(Ctor.extendOptions, modifiedOptions);\r\n }\r\n options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\r\n if (options.name) {\r\n options.components[options.name] = Ctor;\r\n }\r\n }\r\n }\r\n return options;\r\n}\r\nfunction resolveModifiedOptions(Ctor) {\r\n var modified;\r\n var latest = Ctor.options;\r\n var sealed = Ctor.sealedOptions;\r\n for (var key in latest) {\r\n if (latest[key] !== sealed[key]) {\r\n if (!modified)\r\n modified = {};\r\n modified[key] = latest[key];\r\n }\r\n }\r\n return modified;\r\n}\n\n/**\r\n * Runtime helper for resolving raw children VNodes into a slot object.\r\n */\r\nfunction resolveSlots(children, context) {\r\n if (!children || !children.length) {\r\n return {};\r\n }\r\n var slots = {};\r\n for (var i = 0, l = children.length; i < l; i++) {\r\n var child = children[i];\r\n var data = child.data;\r\n // remove slot attribute if the node is resolved as a Vue slot node\r\n if (data && data.attrs && data.attrs.slot) {\r\n delete data.attrs.slot;\r\n }\r\n // named slots should only be respected if the vnode was rendered in the\r\n // same context.\r\n if ((child.context === context || child.fnContext === context) &&\r\n data &&\r\n data.slot != null) {\r\n var name_1 = data.slot;\r\n var slot = slots[name_1] || (slots[name_1] = []);\r\n if (child.tag === 'template') {\r\n slot.push.apply(slot, child.children || []);\r\n }\r\n else {\r\n slot.push(child);\r\n }\r\n }\r\n else {\r\n (slots.default || (slots.default = [])).push(child);\r\n }\r\n }\r\n // ignore slots that contains only whitespace\r\n for (var name_2 in slots) {\r\n if (slots[name_2].every(isWhitespace)) {\r\n delete slots[name_2];\r\n }\r\n }\r\n return slots;\r\n}\r\nfunction isWhitespace(node) {\r\n return (node.isComment && !node.asyncFactory) || node.text === ' ';\r\n}\n\nfunction isAsyncPlaceholder(node) {\r\n // @ts-expect-error not really boolean type\r\n return node.isComment && node.asyncFactory;\r\n}\n\nfunction normalizeScopedSlots(ownerVm, scopedSlots, normalSlots, prevScopedSlots) {\r\n var res;\r\n var hasNormalSlots = Object.keys(normalSlots).length > 0;\r\n var isStable = scopedSlots ? !!scopedSlots.$stable : !hasNormalSlots;\r\n var key = scopedSlots && scopedSlots.$key;\r\n if (!scopedSlots) {\r\n res = {};\r\n }\r\n else if (scopedSlots._normalized) {\r\n // fast path 1: child component re-render only, parent did not change\r\n return scopedSlots._normalized;\r\n }\r\n else if (isStable &&\r\n prevScopedSlots &&\r\n prevScopedSlots !== emptyObject &&\r\n key === prevScopedSlots.$key &&\r\n !hasNormalSlots &&\r\n !prevScopedSlots.$hasNormal) {\r\n // fast path 2: stable scoped slots w/ no normal slots to proxy,\r\n // only need to normalize once\r\n return prevScopedSlots;\r\n }\r\n else {\r\n res = {};\r\n for (var key_1 in scopedSlots) {\r\n if (scopedSlots[key_1] && key_1[0] !== '$') {\r\n res[key_1] = normalizeScopedSlot(ownerVm, normalSlots, key_1, scopedSlots[key_1]);\r\n }\r\n }\r\n }\r\n // expose normal slots on scopedSlots\r\n for (var key_2 in normalSlots) {\r\n if (!(key_2 in res)) {\r\n res[key_2] = proxyNormalSlot(normalSlots, key_2);\r\n }\r\n }\r\n // avoriaz seems to mock a non-extensible $scopedSlots object\r\n // and when that is passed down this would cause an error\r\n if (scopedSlots && Object.isExtensible(scopedSlots)) {\r\n scopedSlots._normalized = res;\r\n }\r\n def(res, '$stable', isStable);\r\n def(res, '$key', key);\r\n def(res, '$hasNormal', hasNormalSlots);\r\n return res;\r\n}\r\nfunction normalizeScopedSlot(vm, normalSlots, key, fn) {\r\n var normalized = function () {\r\n var cur = currentInstance;\r\n setCurrentInstance(vm);\r\n var res = arguments.length ? fn.apply(null, arguments) : fn({});\r\n res =\r\n res && typeof res === 'object' && !isArray(res)\r\n ? [res] // single vnode\r\n : normalizeChildren(res);\r\n var vnode = res && res[0];\r\n setCurrentInstance(cur);\r\n return res &&\r\n (!vnode ||\r\n (res.length === 1 && vnode.isComment && !isAsyncPlaceholder(vnode))) // #9658, #10391\r\n ? undefined\r\n : res;\r\n };\r\n // this is a slot using the new v-slot syntax without scope. although it is\r\n // compiled as a scoped slot, render fn users would expect it to be present\r\n // on this.$slots because the usage is semantically a normal slot.\r\n if (fn.proxy) {\r\n Object.defineProperty(normalSlots, key, {\r\n get: normalized,\r\n enumerable: true,\r\n configurable: true\r\n });\r\n }\r\n return normalized;\r\n}\r\nfunction proxyNormalSlot(slots, key) {\r\n return function () { return slots[key]; };\r\n}\n\n/**\r\n * Runtime helper for rendering v-for lists.\r\n */\r\nfunction renderList(val, render) {\r\n var ret = null, i, l, keys, key;\r\n if (isArray(val) || typeof val === 'string') {\r\n ret = new Array(val.length);\r\n for (i = 0, l = val.length; i < l; i++) {\r\n ret[i] = render(val[i], i);\r\n }\r\n }\r\n else if (typeof val === 'number') {\r\n ret = new Array(val);\r\n for (i = 0; i < val; i++) {\r\n ret[i] = render(i + 1, i);\r\n }\r\n }\r\n else if (isObject(val)) {\r\n if (hasSymbol && val[Symbol.iterator]) {\r\n ret = [];\r\n var iterator = val[Symbol.iterator]();\r\n var result = iterator.next();\r\n while (!result.done) {\r\n ret.push(render(result.value, ret.length));\r\n result = iterator.next();\r\n }\r\n }\r\n else {\r\n keys = Object.keys(val);\r\n ret = new Array(keys.length);\r\n for (i = 0, l = keys.length; i < l; i++) {\r\n key = keys[i];\r\n ret[i] = render(val[key], key, i);\r\n }\r\n }\r\n }\r\n if (!isDef(ret)) {\r\n ret = [];\r\n }\r\n ret._isVList = true;\r\n return ret;\r\n}\n\n/**\r\n * Runtime helper for rendering <slot>\r\n */\r\nfunction renderSlot(name, fallbackRender, props, bindObject) {\r\n var scopedSlotFn = this.$scopedSlots[name];\r\n var nodes;\r\n if (scopedSlotFn) {\r\n // scoped slot\r\n props = props || {};\r\n if (bindObject) {\r\n if (process.env.NODE_ENV !== 'production' && !isObject(bindObject)) {\r\n warn$2('slot v-bind without argument expects an Object', this);\r\n }\r\n props = extend(extend({}, bindObject), props);\r\n }\r\n nodes =\r\n scopedSlotFn(props) ||\r\n (isFunction(fallbackRender) ? fallbackRender() : fallbackRender);\r\n }\r\n else {\r\n nodes =\r\n this.$slots[name] ||\r\n (isFunction(fallbackRender) ? fallbackRender() : fallbackRender);\r\n }\r\n var target = props && props.slot;\r\n if (target) {\r\n return this.$createElement('template', { slot: target }, nodes);\r\n }\r\n else {\r\n return nodes;\r\n }\r\n}\n\n/**\r\n * Runtime helper for resolving filters\r\n */\r\nfunction resolveFilter(id) {\r\n return resolveAsset(this.$options, 'filters', id, true) || identity;\r\n}\n\nfunction isKeyNotMatch(expect, actual) {\r\n if (isArray(expect)) {\r\n return expect.indexOf(actual) === -1;\r\n }\r\n else {\r\n return expect !== actual;\r\n }\r\n}\r\n/**\r\n * Runtime helper for checking keyCodes from config.\r\n * exposed as Vue.prototype._k\r\n * passing in eventKeyName as last argument separately for backwards compat\r\n */\r\nfunction checkKeyCodes(eventKeyCode, key, builtInKeyCode, eventKeyName, builtInKeyName) {\r\n var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;\r\n if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {\r\n return isKeyNotMatch(builtInKeyName, eventKeyName);\r\n }\r\n else if (mappedKeyCode) {\r\n return isKeyNotMatch(mappedKeyCode, eventKeyCode);\r\n }\r\n else if (eventKeyName) {\r\n return hyphenate(eventKeyName) !== key;\r\n }\r\n return eventKeyCode === undefined;\r\n}\n\n/**\r\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\r\n */\r\nfunction bindObjectProps(data, tag, value, asProp, isSync) {\r\n if (value) {\r\n if (!isObject(value)) {\r\n process.env.NODE_ENV !== 'production' &&\r\n warn$2('v-bind without argument expects an Object or Array value', this);\r\n }\r\n else {\r\n if (isArray(value)) {\r\n value = toObject(value);\r\n }\r\n var hash = void 0;\r\n var _loop_1 = function (key) {\r\n if (key === 'class' || key === 'style' || isReservedAttribute(key)) {\r\n hash = data;\r\n }\r\n else {\r\n var type = data.attrs && data.attrs.type;\r\n hash =\r\n asProp || config.mustUseProp(tag, type, key)\r\n ? data.domProps || (data.domProps = {})\r\n : data.attrs || (data.attrs = {});\r\n }\r\n var camelizedKey = camelize(key);\r\n var hyphenatedKey = hyphenate(key);\r\n if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {\r\n hash[key] = value[key];\r\n if (isSync) {\r\n var on = data.on || (data.on = {});\r\n on[\"update:\".concat(key)] = function ($event) {\r\n value[key] = $event;\r\n };\r\n }\r\n }\r\n };\r\n for (var key in value) {\r\n _loop_1(key);\r\n }\r\n }\r\n }\r\n return data;\r\n}\n\n/**\r\n * Runtime helper for rendering static trees.\r\n */\r\nfunction renderStatic(index, isInFor) {\r\n var cached = this._staticTrees || (this._staticTrees = []);\r\n var tree = cached[index];\r\n // if has already-rendered static tree and not inside v-for,\r\n // we can reuse the same tree.\r\n if (tree && !isInFor) {\r\n return tree;\r\n }\r\n // otherwise, render a fresh tree.\r\n tree = cached[index] = this.$options.staticRenderFns[index].call(this._renderProxy, null, this // for render fns generated for functional component templates\r\n );\r\n markStatic$1(tree, \"__static__\".concat(index), false);\r\n return tree;\r\n}\r\n/**\r\n * Runtime helper for v-once.\r\n * Effectively it means marking the node as static with a unique key.\r\n */\r\nfunction markOnce(tree, index, key) {\r\n markStatic$1(tree, \"__once__\".concat(index).concat(key ? \"_\".concat(key) : \"\"), true);\r\n return tree;\r\n}\r\nfunction markStatic$1(tree, key, isOnce) {\r\n if (isArray(tree)) {\r\n for (var i = 0; i < tree.length; i++) {\r\n if (tree[i] && typeof tree[i] !== 'string') {\r\n markStaticNode(tree[i], \"\".concat(key, \"_\").concat(i), isOnce);\r\n }\r\n }\r\n }\r\n else {\r\n markStaticNode(tree, key, isOnce);\r\n }\r\n}\r\nfunction markStaticNode(node, key, isOnce) {\r\n node.isStatic = true;\r\n node.key = key;\r\n node.isOnce = isOnce;\r\n}\n\nfunction bindObjectListeners(data, value) {\r\n if (value) {\r\n if (!isPlainObject(value)) {\r\n process.env.NODE_ENV !== 'production' && warn$2('v-on without argument expects an Object value', this);\r\n }\r\n else {\r\n var on = (data.on = data.on ? extend({}, data.on) : {});\r\n for (var key in value) {\r\n var existing = on[key];\r\n var ours = value[key];\r\n on[key] = existing ? [].concat(existing, ours) : ours;\r\n }\r\n }\r\n }\r\n return data;\r\n}\n\nfunction resolveScopedSlots(fns, res, \r\n// the following are added in 2.6\r\nhasDynamicKeys, contentHashKey) {\r\n res = res || { $stable: !hasDynamicKeys };\r\n for (var i = 0; i < fns.length; i++) {\r\n var slot = fns[i];\r\n if (isArray(slot)) {\r\n resolveScopedSlots(slot, res, hasDynamicKeys);\r\n }\r\n else if (slot) {\r\n // marker for reverse proxying v-slot without scope on this.$slots\r\n // @ts-expect-error\r\n if (slot.proxy) {\r\n // @ts-expect-error\r\n slot.fn.proxy = true;\r\n }\r\n res[slot.key] = slot.fn;\r\n }\r\n }\r\n if (contentHashKey) {\r\n res.$key = contentHashKey;\r\n }\r\n return res;\r\n}\n\n// helper to process dynamic keys for dynamic arguments in v-bind and v-on.\r\nfunction bindDynamicKeys(baseObj, values) {\r\n for (var i = 0; i < values.length; i += 2) {\r\n var key = values[i];\r\n if (typeof key === 'string' && key) {\r\n baseObj[values[i]] = values[i + 1];\r\n }\r\n else if (process.env.NODE_ENV !== 'production' && key !== '' && key !== null) {\r\n // null is a special value for explicitly removing a binding\r\n warn$2(\"Invalid value for dynamic directive argument (expected string or null): \".concat(key), this);\r\n }\r\n }\r\n return baseObj;\r\n}\r\n// helper to dynamically append modifier runtime markers to event names.\r\n// ensure only append when value is already string, otherwise it will be cast\r\n// to string and cause the type check to miss.\r\nfunction prependModifier(value, symbol) {\r\n return typeof value === 'string' ? symbol + value : value;\r\n}\n\nfunction installRenderHelpers(target) {\r\n target._o = markOnce;\r\n target._n = toNumber;\r\n target._s = toString;\r\n target._l = renderList;\r\n target._t = renderSlot;\r\n target._q = looseEqual;\r\n target._i = looseIndexOf;\r\n target._m = renderStatic;\r\n target._f = resolveFilter;\r\n target._k = checkKeyCodes;\r\n target._b = bindObjectProps;\r\n target._v = createTextVNode;\r\n target._e = createEmptyVNode;\r\n target._u = resolveScopedSlots;\r\n target._g = bindObjectListeners;\r\n target._d = bindDynamicKeys;\r\n target._p = prependModifier;\r\n}\n\nfunction FunctionalRenderContext(data, props, children, parent, Ctor) {\r\n var _this = this;\r\n var options = Ctor.options;\r\n // ensure the createElement function in functional components\r\n // gets a unique context - this is necessary for correct named slot check\r\n var contextVm;\r\n if (hasOwn(parent, '_uid')) {\r\n contextVm = Object.create(parent);\r\n contextVm._original = parent;\r\n }\r\n else {\r\n // the context vm passed in is a functional context as well.\r\n // in this case we want to make sure we are able to get a hold to the\r\n // real context instance.\r\n contextVm = parent;\r\n // @ts-ignore\r\n parent = parent._original;\r\n }\r\n var isCompiled = isTrue(options._compiled);\r\n var needNormalization = !isCompiled;\r\n this.data = data;\r\n this.props = props;\r\n this.children = children;\r\n this.parent = parent;\r\n this.listeners = data.on || emptyObject;\r\n this.injections = resolveInject(options.inject, parent);\r\n this.slots = function () {\r\n if (!_this.$slots) {\r\n normalizeScopedSlots(parent, data.scopedSlots, (_this.$slots = resolveSlots(children, parent)));\r\n }\r\n return _this.$slots;\r\n };\r\n Object.defineProperty(this, 'scopedSlots', {\r\n enumerable: true,\r\n get: function () {\r\n return normalizeScopedSlots(parent, data.scopedSlots, this.slots());\r\n }\r\n });\r\n // support for compiled functional template\r\n if (isCompiled) {\r\n // exposing $options for renderStatic()\r\n this.$options = options;\r\n // pre-resolve slots for renderSlot()\r\n this.$slots = this.slots();\r\n this.$scopedSlots = normalizeScopedSlots(parent, data.scopedSlots, this.$slots);\r\n }\r\n if (options._scopeId) {\r\n this._c = function (a, b, c, d) {\r\n var vnode = createElement$1(contextVm, a, b, c, d, needNormalization);\r\n if (vnode && !isArray(vnode)) {\r\n vnode.fnScopeId = options._scopeId;\r\n vnode.fnContext = parent;\r\n }\r\n return vnode;\r\n };\r\n }\r\n else {\r\n this._c = function (a, b, c, d) {\r\n return createElement$1(contextVm, a, b, c, d, needNormalization);\r\n };\r\n }\r\n}\r\ninstallRenderHelpers(FunctionalRenderContext.prototype);\r\nfunction createFunctionalComponent(Ctor, propsData, data, contextVm, children) {\r\n var options = Ctor.options;\r\n var props = {};\r\n var propOptions = options.props;\r\n if (isDef(propOptions)) {\r\n for (var key in propOptions) {\r\n props[key] = validateProp(key, propOptions, propsData || emptyObject);\r\n }\r\n }\r\n else {\r\n if (isDef(data.attrs))\r\n mergeProps(props, data.attrs);\r\n if (isDef(data.props))\r\n mergeProps(props, data.props);\r\n }\r\n var renderContext = new FunctionalRenderContext(data, props, children, contextVm, Ctor);\r\n var vnode = options.render.call(null, renderContext._c, renderContext);\r\n if (vnode instanceof VNode) {\r\n return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext);\r\n }\r\n else if (isArray(vnode)) {\r\n var vnodes = normalizeChildren(vnode) || [];\r\n var res = new Array(vnodes.length);\r\n for (var i = 0; i < vnodes.length; i++) {\r\n res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);\r\n }\r\n return res;\r\n }\r\n}\r\nfunction cloneAndMarkFunctionalResult(vnode, data, contextVm, options, renderContext) {\r\n // #7817 clone node before setting fnContext, otherwise if the node is reused\r\n // (e.g. it was from a cached normal slot) the fnContext causes named slots\r\n // that should not be matched to match.\r\n var clone = cloneVNode(vnode);\r\n clone.fnContext = contextVm;\r\n clone.fnOptions = options;\r\n if (process.env.NODE_ENV !== 'production') {\r\n (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext =\r\n renderContext;\r\n }\r\n if (data.slot) {\r\n (clone.data || (clone.data = {})).slot = data.slot;\r\n }\r\n return clone;\r\n}\r\nfunction mergeProps(to, from) {\r\n for (var key in from) {\r\n to[camelize(key)] = from[key];\r\n }\r\n}\n\n// inline hooks to be invoked on component VNodes during patch\r\nvar componentVNodeHooks = {\r\n init: function (vnode, hydrating) {\r\n if (vnode.componentInstance &&\r\n !vnode.componentInstance._isDestroyed &&\r\n vnode.data.keepAlive) {\r\n // kept-alive components, treat as a patch\r\n var mountedNode = vnode; // work around flow\r\n componentVNodeHooks.prepatch(mountedNode, mountedNode);\r\n }\r\n else {\r\n var child = (vnode.componentInstance = createComponentInstanceForVnode(vnode, activeInstance));\r\n child.$mount(hydrating ? vnode.elm : undefined, hydrating);\r\n }\r\n },\r\n prepatch: function (oldVnode, vnode) {\r\n var options = vnode.componentOptions;\r\n var child = (vnode.componentInstance = oldVnode.componentInstance);\r\n updateChildComponent(child, options.propsData, // updated props\r\n options.listeners, // updated listeners\r\n vnode, // new parent vnode\r\n options.children // new children\r\n );\r\n },\r\n insert: function (vnode) {\r\n var context = vnode.context, componentInstance = vnode.componentInstance;\r\n if (!componentInstance._isMounted) {\r\n componentInstance._isMounted = true;\r\n callHook$1(componentInstance, 'mounted');\r\n }\r\n if (vnode.data.keepAlive) {\r\n if (context._isMounted) {\r\n // vue-router#1212\r\n // During updates, a kept-alive component's child components may\r\n // change, so directly walking the tree here may call activated hooks\r\n // on incorrect children. Instead we push them into a queue which will\r\n // be processed after the whole patch process ended.\r\n queueActivatedComponent(componentInstance);\r\n }\r\n else {\r\n activateChildComponent(componentInstance, true /* direct */);\r\n }\r\n }\r\n },\r\n destroy: function (vnode) {\r\n var componentInstance = vnode.componentInstance;\r\n if (!componentInstance._isDestroyed) {\r\n if (!vnode.data.keepAlive) {\r\n componentInstance.$destroy();\r\n }\r\n else {\r\n deactivateChildComponent(componentInstance, true /* direct */);\r\n }\r\n }\r\n }\r\n};\r\nvar hooksToMerge = Object.keys(componentVNodeHooks);\r\nfunction createComponent(Ctor, data, context, children, tag) {\r\n if (isUndef(Ctor)) {\r\n return;\r\n }\r\n var baseCtor = context.$options._base;\r\n // plain options object: turn it into a constructor\r\n if (isObject(Ctor)) {\r\n Ctor = baseCtor.extend(Ctor);\r\n }\r\n // if at this stage it's not a constructor or an async component factory,\r\n // reject.\r\n if (typeof Ctor !== 'function') {\r\n if (process.env.NODE_ENV !== 'production') {\r\n warn$2(\"Invalid Component definition: \".concat(String(Ctor)), context);\r\n }\r\n return;\r\n }\r\n // async component\r\n var asyncFactory;\r\n // @ts-expect-error\r\n if (isUndef(Ctor.cid)) {\r\n asyncFactory = Ctor;\r\n Ctor = resolveAsyncComponent(asyncFactory, baseCtor);\r\n if (Ctor === undefined) {\r\n // return a placeholder node for async component, which is rendered\r\n // as a comment node but preserves all the raw information for the node.\r\n // the information will be used for async server-rendering and hydration.\r\n return createAsyncPlaceholder(asyncFactory, data, context, children, tag);\r\n }\r\n }\r\n data = data || {};\r\n // resolve constructor options in case global mixins are applied after\r\n // component constructor creation\r\n resolveConstructorOptions(Ctor);\r\n // transform component v-model data into props & events\r\n if (isDef(data.model)) {\r\n // @ts-expect-error\r\n transformModel(Ctor.options, data);\r\n }\r\n // extract props\r\n // @ts-expect-error\r\n var propsData = extractPropsFromVNodeData(data, Ctor, tag);\r\n // functional component\r\n // @ts-expect-error\r\n if (isTrue(Ctor.options.functional)) {\r\n return createFunctionalComponent(Ctor, propsData, data, context, children);\r\n }\r\n // extract listeners, since these needs to be treated as\r\n // child component listeners instead of DOM listeners\r\n var listeners = data.on;\r\n // replace with listeners with .native modifier\r\n // so it gets processed during parent component patch.\r\n data.on = data.nativeOn;\r\n // @ts-expect-error\r\n if (isTrue(Ctor.options.abstract)) {\r\n // abstract components do not keep anything\r\n // other than props & listeners & slot\r\n // work around flow\r\n var slot = data.slot;\r\n data = {};\r\n if (slot) {\r\n data.slot = slot;\r\n }\r\n }\r\n // install component management hooks onto the placeholder node\r\n installComponentHooks(data);\r\n // return a placeholder vnode\r\n // @ts-expect-error\r\n var name = Ctor.options.name || tag;\r\n var vnode = new VNode(\r\n // @ts-expect-error\r\n \"vue-component-\".concat(Ctor.cid).concat(name ? \"-\".concat(name) : ''), data, undefined, undefined, undefined, context, \r\n // @ts-expect-error\r\n { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children }, asyncFactory);\r\n return vnode;\r\n}\r\nfunction createComponentInstanceForVnode(\r\n// we know it's MountedComponentVNode but flow doesn't\r\nvnode, \r\n// activeInstance in lifecycle state\r\nparent) {\r\n var options = {\r\n _isComponent: true,\r\n _parentVnode: vnode,\r\n parent: parent\r\n };\r\n // check inline-template render functions\r\n var inlineTemplate = vnode.data.inlineTemplate;\r\n if (isDef(inlineTemplate)) {\r\n options.render = inlineTemplate.render;\r\n options.staticRenderFns = inlineTemplate.staticRenderFns;\r\n }\r\n return new vnode.componentOptions.Ctor(options);\r\n}\r\nfunction installComponentHooks(data) {\r\n var hooks = data.hook || (data.hook = {});\r\n for (var i = 0; i < hooksToMerge.length; i++) {\r\n var key = hooksToMerge[i];\r\n var existing = hooks[key];\r\n var toMerge = componentVNodeHooks[key];\r\n // @ts-expect-error\r\n if (existing !== toMerge && !(existing && existing._merged)) {\r\n hooks[key] = existing ? mergeHook(toMerge, existing) : toMerge;\r\n }\r\n }\r\n}\r\nfunction mergeHook(f1, f2) {\r\n var merged = function (a, b) {\r\n // flow complains about extra args which is why we use any\r\n f1(a, b);\r\n f2(a, b);\r\n };\r\n merged._merged = true;\r\n return merged;\r\n}\r\n// transform component v-model info (value and callback) into\r\n// prop and event handler respectively.\r\nfunction transformModel(options, data) {\r\n var prop = (options.model && options.model.prop) || 'value';\r\n var event = (options.model && options.model.event) || 'input';\r\n (data.attrs || (data.attrs = {}))[prop] = data.model.value;\r\n var on = data.on || (data.on = {});\r\n var existing = on[event];\r\n var callback = data.model.callback;\r\n if (isDef(existing)) {\r\n if (isArray(existing)\r\n ? existing.indexOf(callback) === -1\r\n : existing !== callback) {\r\n on[event] = [callback].concat(existing);\r\n }\r\n }\r\n else {\r\n on[event] = callback;\r\n }\r\n}\n\nvar SIMPLE_NORMALIZE = 1;\r\nvar ALWAYS_NORMALIZE = 2;\r\n// wrapper function for providing a more flexible interface\r\n// without getting yelled at by flow\r\nfunction createElement$1(context, tag, data, children, normalizationType, alwaysNormalize) {\r\n if (isArray(data) || isPrimitive(data)) {\r\n normalizationType = children;\r\n children = data;\r\n data = undefined;\r\n }\r\n if (isTrue(alwaysNormalize)) {\r\n normalizationType = ALWAYS_NORMALIZE;\r\n }\r\n return _createElement(context, tag, data, children, normalizationType);\r\n}\r\nfunction _createElement(context, tag, data, children, normalizationType) {\r\n if (isDef(data) && isDef(data.__ob__)) {\r\n process.env.NODE_ENV !== 'production' &&\r\n warn$2(\"Avoid using observed data object as vnode data: \".concat(JSON.stringify(data), \"\\n\") + 'Always create fresh vnode data objects in each render!', context);\r\n return createEmptyVNode();\r\n }\r\n // object syntax in v-bind\r\n if (isDef(data) && isDef(data.is)) {\r\n tag = data.is;\r\n }\r\n if (!tag) {\r\n // in case of component :is set to falsy value\r\n return createEmptyVNode();\r\n }\r\n // warn against non-primitive key\r\n if (process.env.NODE_ENV !== 'production' && isDef(data) && isDef(data.key) && !isPrimitive(data.key)) {\r\n warn$2('Avoid using non-primitive value as key, ' +\r\n 'use string/number value instead.', context);\r\n }\r\n // support single function children as default scoped slot\r\n if (isArray(children) && isFunction(children[0])) {\r\n data = data || {};\r\n data.scopedSlots = { default: children[0] };\r\n children.length = 0;\r\n }\r\n if (normalizationType === ALWAYS_NORMALIZE) {\r\n children = normalizeChildren(children);\r\n }\r\n else if (normalizationType === SIMPLE_NORMALIZE) {\r\n children = simpleNormalizeChildren(children);\r\n }\r\n var vnode, ns;\r\n if (typeof tag === 'string') {\r\n var Ctor = void 0;\r\n ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);\r\n if (config.isReservedTag(tag)) {\r\n // platform built-in elements\r\n if (process.env.NODE_ENV !== 'production' &&\r\n isDef(data) &&\r\n isDef(data.nativeOn) &&\r\n data.tag !== 'component') {\r\n warn$2(\"The .native modifier for v-on is only valid on components but it was used on <\".concat(tag, \">.\"), context);\r\n }\r\n vnode = new VNode(config.parsePlatformTagName(tag), data, children, undefined, undefined, context);\r\n }\r\n else if ((!data || !data.pre) &&\r\n isDef((Ctor = resolveAsset(context.$options, 'components', tag)))) {\r\n // component\r\n vnode = createComponent(Ctor, data, context, children, tag);\r\n }\r\n else {\r\n // unknown or unlisted namespaced elements\r\n // check at runtime because it may get assigned a namespace when its\r\n // parent normalizes children\r\n vnode = new VNode(tag, data, children, undefined, undefined, context);\r\n }\r\n }\r\n else {\r\n // direct component options / constructor\r\n vnode = createComponent(tag, data, context, children);\r\n }\r\n if (isArray(vnode)) {\r\n return vnode;\r\n }\r\n else if (isDef(vnode)) {\r\n if (isDef(ns))\r\n applyNS(vnode, ns);\r\n if (isDef(data))\r\n registerDeepBindings(data);\r\n return vnode;\r\n }\r\n else {\r\n return createEmptyVNode();\r\n }\r\n}\r\nfunction applyNS(vnode, ns, force) {\r\n vnode.ns = ns;\r\n if (vnode.tag === 'foreignObject') {\r\n // use default namespace inside foreignObject\r\n ns = undefined;\r\n force = true;\r\n }\r\n if (isDef(vnode.children)) {\r\n for (var i = 0, l = vnode.children.length; i < l; i++) {\r\n var child = vnode.children[i];\r\n if (isDef(child.tag) &&\r\n (isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {\r\n applyNS(child, ns, force);\r\n }\r\n }\r\n }\r\n}\r\n// ref #5318\r\n// necessary to ensure parent re-render when deep bindings like :style and\r\n// :class are used on slot nodes\r\nfunction registerDeepBindings(data) {\r\n if (isObject(data.style)) {\r\n traverse(data.style);\r\n }\r\n if (isObject(data.class)) {\r\n traverse(data.class);\r\n }\r\n}\n\nfunction initRender(vm) {\r\n vm._vnode = null; // the root of the child tree\r\n vm._staticTrees = null; // v-once cached trees\r\n var options = vm.$options;\r\n var parentVnode = (vm.$vnode = options._parentVnode); // the placeholder node in parent tree\r\n var renderContext = parentVnode && parentVnode.context;\r\n vm.$slots = resolveSlots(options._renderChildren, renderContext);\r\n vm.$scopedSlots = emptyObject;\r\n // bind the createElement fn to this instance\r\n // so that we get proper render context inside it.\r\n // args order: tag, data, children, normalizationType, alwaysNormalize\r\n // internal version is used by render functions compiled from templates\r\n // @ts-expect-error\r\n vm._c = function (a, b, c, d) { return createElement$1(vm, a, b, c, d, false); };\r\n // normalization is always applied for the public version, used in\r\n // user-written render functions.\r\n // @ts-expect-error\r\n vm.$createElement = function (a, b, c, d) { return createElement$1(vm, a, b, c, d, true); };\r\n // $attrs & $listeners are exposed for easier HOC creation.\r\n // they need to be reactive so that HOCs using them are always updated\r\n var parentData = parentVnode && parentVnode.data;\r\n /* istanbul ignore else */\r\n if (process.env.NODE_ENV !== 'production') {\r\n defineReactive(vm, '$attrs', (parentData && parentData.attrs) || emptyObject, function () {\r\n !isUpdatingChildComponent && warn$2(\"$attrs is readonly.\", vm);\r\n }, true);\r\n defineReactive(vm, '$listeners', options._parentListeners || emptyObject, function () {\r\n !isUpdatingChildComponent && warn$2(\"$listeners is readonly.\", vm);\r\n }, true);\r\n }\r\n else {\r\n defineReactive(vm, '$attrs', (parentData && parentData.attrs) || emptyObject, null, true);\r\n defineReactive(vm, '$listeners', options._parentListeners || emptyObject, null, true);\r\n }\r\n}\r\nvar currentRenderingInstance = null;\r\nfunction renderMixin(Vue) {\r\n // install runtime convenience helpers\r\n installRenderHelpers(Vue.prototype);\r\n Vue.prototype.$nextTick = function (fn) {\r\n return nextTick(fn, this);\r\n };\r\n Vue.prototype._render = function () {\r\n var vm = this;\r\n var _a = vm.$options, render = _a.render, _parentVnode = _a._parentVnode;\r\n if (_parentVnode) {\r\n vm.$scopedSlots = normalizeScopedSlots(vm.$parent, _parentVnode.data.scopedSlots, vm.$slots, vm.$scopedSlots);\r\n if (vm._slotsProxy) {\r\n syncSetupSlots(vm._slotsProxy, vm.$scopedSlots);\r\n }\r\n }\r\n // set parent vnode. this allows render functions to have access\r\n // to the data on the placeholder node.\r\n vm.$vnode = _parentVnode;\r\n // render self\r\n var vnode;\r\n try {\r\n // There's no need to maintain a stack because all render fns are called\r\n // separately from one another. Nested component's render fns are called\r\n // when parent component is patched.\r\n setCurrentInstance(vm);\r\n currentRenderingInstance = vm;\r\n vnode = render.call(vm._renderProxy, vm.$createElement);\r\n }\r\n catch (e) {\r\n handleError(e, vm, \"render\");\r\n // return error render result,\r\n // or previous vnode to prevent render error causing blank component\r\n /* istanbul ignore else */\r\n if (process.env.NODE_ENV !== 'production' && vm.$options.renderError) {\r\n try {\r\n vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);\r\n }\r\n catch (e) {\r\n handleError(e, vm, \"renderError\");\r\n vnode = vm._vnode;\r\n }\r\n }\r\n else {\r\n vnode = vm._vnode;\r\n }\r\n }\r\n finally {\r\n currentRenderingInstance = null;\r\n setCurrentInstance();\r\n }\r\n // if the returned array contains only a single node, allow it\r\n if (isArray(vnode) && vnode.length === 1) {\r\n vnode = vnode[0];\r\n }\r\n // return empty vnode in case the render function errored out\r\n if (!(vnode instanceof VNode)) {\r\n if (process.env.NODE_ENV !== 'production' && isArray(vnode)) {\r\n warn$2('Multiple root nodes returned from render function. Render function ' +\r\n 'should return a single root node.', vm);\r\n }\r\n vnode = createEmptyVNode();\r\n }\r\n // set parent\r\n vnode.parent = _parentVnode;\r\n return vnode;\r\n };\r\n}\n\nfunction ensureCtor(comp, base) {\r\n if (comp.__esModule || (hasSymbol && comp[Symbol.toStringTag] === 'Module')) {\r\n comp = comp.default;\r\n }\r\n return isObject(comp) ? base.extend(comp) : comp;\r\n}\r\nfunction createAsyncPlaceholder(factory, data, context, children, tag) {\r\n var node = createEmptyVNode();\r\n node.asyncFactory = factory;\r\n node.asyncMeta = { data: data, context: context, children: children, tag: tag };\r\n return node;\r\n}\r\nfunction resolveAsyncComponent(factory, baseCtor) {\r\n if (isTrue(factory.error) && isDef(factory.errorComp)) {\r\n return factory.errorComp;\r\n }\r\n if (isDef(factory.resolved)) {\r\n return factory.resolved;\r\n }\r\n var owner = currentRenderingInstance;\r\n if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {\r\n // already pending\r\n factory.owners.push(owner);\r\n }\r\n if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\r\n return factory.loadingComp;\r\n }\r\n if (owner && !isDef(factory.owners)) {\r\n var owners_1 = (factory.owners = [owner]);\r\n var sync_1 = true;\r\n var timerLoading_1 = null;\r\n var timerTimeout_1 = null;\r\n owner.$on('hook:destroyed', function () { return remove$2(owners_1, owner); });\r\n var forceRender_1 = function (renderCompleted) {\r\n for (var i = 0, l = owners_1.length; i < l; i++) {\r\n owners_1[i].$forceUpdate();\r\n }\r\n if (renderCompleted) {\r\n owners_1.length = 0;\r\n if (timerLoading_1 !== null) {\r\n clearTimeout(timerLoading_1);\r\n timerLoading_1 = null;\r\n }\r\n if (timerTimeout_1 !== null) {\r\n clearTimeout(timerTimeout_1);\r\n timerTimeout_1 = null;\r\n }\r\n }\r\n };\r\n var resolve = once(function (res) {\r\n // cache resolved\r\n factory.resolved = ensureCtor(res, baseCtor);\r\n // invoke callbacks only if this is not a synchronous resolve\r\n // (async resolves are shimmed as synchronous during SSR)\r\n if (!sync_1) {\r\n forceRender_1(true);\r\n }\r\n else {\r\n owners_1.length = 0;\r\n }\r\n });\r\n var reject_1 = once(function (reason) {\r\n process.env.NODE_ENV !== 'production' &&\r\n warn$2(\"Failed to resolve async component: \".concat(String(factory)) +\r\n (reason ? \"\\nReason: \".concat(reason) : ''));\r\n if (isDef(factory.errorComp)) {\r\n factory.error = true;\r\n forceRender_1(true);\r\n }\r\n });\r\n var res_1 = factory(resolve, reject_1);\r\n if (isObject(res_1)) {\r\n if (isPromise(res_1)) {\r\n // () => Promise\r\n if (isUndef(factory.resolved)) {\r\n res_1.then(resolve, reject_1);\r\n }\r\n }\r\n else if (isPromise(res_1.component)) {\r\n res_1.component.then(resolve, reject_1);\r\n if (isDef(res_1.error)) {\r\n factory.errorComp = ensureCtor(res_1.error, baseCtor);\r\n }\r\n if (isDef(res_1.loading)) {\r\n factory.loadingComp = ensureCtor(res_1.loading, baseCtor);\r\n if (res_1.delay === 0) {\r\n factory.loading = true;\r\n }\r\n else {\r\n // @ts-expect-error NodeJS timeout type\r\n timerLoading_1 = setTimeout(function () {\r\n timerLoading_1 = null;\r\n if (isUndef(factory.resolved) && isUndef(factory.error)) {\r\n factory.loading = true;\r\n forceRender_1(false);\r\n }\r\n }, res_1.delay || 200);\r\n }\r\n }\r\n if (isDef(res_1.timeout)) {\r\n // @ts-expect-error NodeJS timeout type\r\n timerTimeout_1 = setTimeout(function () {\r\n timerTimeout_1 = null;\r\n if (isUndef(factory.resolved)) {\r\n reject_1(process.env.NODE_ENV !== 'production' ? \"timeout (\".concat(res_1.timeout, \"ms)\") : null);\r\n }\r\n }, res_1.timeout);\r\n }\r\n }\r\n }\r\n sync_1 = false;\r\n // return in case resolved synchronously\r\n return factory.loading ? factory.loadingComp : factory.resolved;\r\n }\r\n}\n\nfunction getFirstComponentChild(children) {\r\n if (isArray(children)) {\r\n for (var i = 0; i < children.length; i++) {\r\n var c = children[i];\r\n if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {\r\n return c;\r\n }\r\n }\r\n }\r\n}\n\nfunction initEvents(vm) {\r\n vm._events = Object.create(null);\r\n vm._hasHookEvent = false;\r\n // init parent attached events\r\n var listeners = vm.$options._parentListeners;\r\n if (listeners) {\r\n updateComponentListeners(vm, listeners);\r\n }\r\n}\r\nvar target$1;\r\nfunction add$1(event, fn) {\r\n target$1.$on(event, fn);\r\n}\r\nfunction remove$1(event, fn) {\r\n target$1.$off(event, fn);\r\n}\r\nfunction createOnceHandler$1(event, fn) {\r\n var _target = target$1;\r\n return function onceHandler() {\r\n var res = fn.apply(null, arguments);\r\n if (res !== null) {\r\n _target.$off(event, onceHandler);\r\n }\r\n };\r\n}\r\nfunction updateComponentListeners(vm, listeners, oldListeners) {\r\n target$1 = vm;\r\n updateListeners(listeners, oldListeners || {}, add$1, remove$1, createOnceHandler$1, vm);\r\n target$1 = undefined;\r\n}\r\nfunction eventsMixin(Vue) {\r\n var hookRE = /^hook:/;\r\n Vue.prototype.$on = function (event, fn) {\r\n var vm = this;\r\n if (isArray(event)) {\r\n for (var i = 0, l = event.length; i < l; i++) {\r\n vm.$on(event[i], fn);\r\n }\r\n }\r\n else {\r\n (vm._events[event] || (vm._events[event] = [])).push(fn);\r\n // optimize hook:event cost by using a boolean flag marked at registration\r\n // instead of a hash lookup\r\n if (hookRE.test(event)) {\r\n vm._hasHookEvent = true;\r\n }\r\n }\r\n return vm;\r\n };\r\n Vue.prototype.$once = function (event, fn) {\r\n var vm = this;\r\n function on() {\r\n vm.$off(event, on);\r\n fn.apply(vm, arguments);\r\n }\r\n on.fn = fn;\r\n vm.$on(event, on);\r\n return vm;\r\n };\r\n Vue.prototype.$off = function (event, fn) {\r\n var vm = this;\r\n // all\r\n if (!arguments.length) {\r\n vm._events = Object.create(null);\r\n return vm;\r\n }\r\n // array of events\r\n if (isArray(event)) {\r\n for (var i_1 = 0, l = event.length; i_1 < l; i_1++) {\r\n vm.$off(event[i_1], fn);\r\n }\r\n return vm;\r\n }\r\n // specific event\r\n var cbs = vm._events[event];\r\n if (!cbs) {\r\n return vm;\r\n }\r\n if (!fn) {\r\n vm._events[event] = null;\r\n return vm;\r\n }\r\n // specific handler\r\n var cb;\r\n var i = cbs.length;\r\n while (i--) {\r\n cb = cbs[i];\r\n if (cb === fn || cb.fn === fn) {\r\n cbs.splice(i, 1);\r\n break;\r\n }\r\n }\r\n return vm;\r\n };\r\n Vue.prototype.$emit = function (event) {\r\n var vm = this;\r\n if (process.env.NODE_ENV !== 'production') {\r\n var lowerCaseEvent = event.toLowerCase();\r\n if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\r\n tip(\"Event \\\"\".concat(lowerCaseEvent, \"\\\" is emitted in component \") +\r\n \"\".concat(formatComponentName(vm), \" but the handler is registered for \\\"\").concat(event, \"\\\". \") +\r\n \"Note that HTML attributes are case-insensitive and you cannot use \" +\r\n \"v-on to listen to camelCase events when using in-DOM templates. \" +\r\n \"You should probably use \\\"\".concat(hyphenate(event), \"\\\" instead of \\\"\").concat(event, \"\\\".\"));\r\n }\r\n }\r\n var cbs = vm._events[event];\r\n if (cbs) {\r\n cbs = cbs.length > 1 ? toArray(cbs) : cbs;\r\n var args = toArray(arguments, 1);\r\n var info = \"event handler for \\\"\".concat(event, \"\\\"\");\r\n for (var i = 0, l = cbs.length; i < l; i++) {\r\n invokeWithErrorHandling(cbs[i], vm, args, vm, info);\r\n }\r\n }\r\n return vm;\r\n };\r\n}\n\nvar activeInstance = null;\r\nvar isUpdatingChildComponent = false;\r\nfunction setActiveInstance(vm) {\r\n var prevActiveInstance = activeInstance;\r\n activeInstance = vm;\r\n return function () {\r\n activeInstance = prevActiveInstance;\r\n };\r\n}\r\nfunction initLifecycle(vm) {\r\n var options = vm.$options;\r\n // locate first non-abstract parent\r\n var parent = options.parent;\r\n if (parent && !options.abstract) {\r\n while (parent.$options.abstract && parent.$parent) {\r\n parent = parent.$parent;\r\n }\r\n parent.$children.push(vm);\r\n }\r\n vm.$parent = parent;\r\n vm.$root = parent ? parent.$root : vm;\r\n vm.$children = [];\r\n vm.$refs = {};\r\n vm._provided = parent ? parent._provided : Object.create(null);\r\n vm._watcher = null;\r\n vm._inactive = null;\r\n vm._directInactive = false;\r\n vm._isMounted = false;\r\n vm._isDestroyed = false;\r\n vm._isBeingDestroyed = false;\r\n}\r\nfunction lifecycleMixin(Vue) {\r\n Vue.prototype._update = function (vnode, hydrating) {\r\n var vm = this;\r\n var prevEl = vm.$el;\r\n var prevVnode = vm._vnode;\r\n var restoreActiveInstance = setActiveInstance(vm);\r\n vm._vnode = vnode;\r\n // Vue.prototype.__patch__ is injected in entry points\r\n // based on the rendering backend used.\r\n if (!prevVnode) {\r\n // initial render\r\n vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */);\r\n }\r\n else {\r\n // updates\r\n vm.$el = vm.__patch__(prevVnode, vnode);\r\n }\r\n restoreActiveInstance();\r\n // update __vue__ reference\r\n if (prevEl) {\r\n prevEl.__vue__ = null;\r\n }\r\n if (vm.$el) {\r\n vm.$el.__vue__ = vm;\r\n }\r\n // if parent is an HOC, update its $el as well\r\n if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\r\n vm.$parent.$el = vm.$el;\r\n }\r\n // updated hook is called by the scheduler to ensure that children are\r\n // updated in a parent's updated hook.\r\n };\r\n Vue.prototype.$forceUpdate = function () {\r\n var vm = this;\r\n if (vm._watcher) {\r\n vm._watcher.update();\r\n }\r\n };\r\n Vue.prototype.$destroy = function () {\r\n var vm = this;\r\n if (vm._isBeingDestroyed) {\r\n return;\r\n }\r\n callHook$1(vm, 'beforeDestroy');\r\n vm._isBeingDestroyed = true;\r\n // remove self from parent\r\n var parent = vm.$parent;\r\n if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\r\n remove$2(parent.$children, vm);\r\n }\r\n // teardown scope. this includes both the render watcher and other\r\n // watchers created\r\n vm._scope.stop();\r\n // remove reference from data ob\r\n // frozen object may not have observer.\r\n if (vm._data.__ob__) {\r\n vm._data.__ob__.vmCount--;\r\n }\r\n // call the last hook...\r\n vm._isDestroyed = true;\r\n // invoke destroy hooks on current rendered tree\r\n vm.__patch__(vm._vnode, null);\r\n // fire destroyed hook\r\n callHook$1(vm, 'destroyed');\r\n // turn off all instance listeners.\r\n vm.$off();\r\n // remove __vue__ reference\r\n if (vm.$el) {\r\n vm.$el.__vue__ = null;\r\n }\r\n // release circular reference (#6759)\r\n if (vm.$vnode) {\r\n vm.$vnode.parent = null;\r\n }\r\n };\r\n}\r\nfunction mountComponent(vm, el, hydrating) {\r\n vm.$el = el;\r\n if (!vm.$options.render) {\r\n // @ts-expect-error invalid type\r\n vm.$options.render = createEmptyVNode;\r\n if (process.env.NODE_ENV !== 'production') {\r\n /* istanbul ignore if */\r\n if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||\r\n vm.$options.el ||\r\n el) {\r\n warn$2('You are using the runtime-only build of Vue where the template ' +\r\n 'compiler is not available. Either pre-compile the templates into ' +\r\n 'render functions, or use the compiler-included build.', vm);\r\n }\r\n else {\r\n warn$2('Failed to mount component: template or render function not defined.', vm);\r\n }\r\n }\r\n }\r\n callHook$1(vm, 'beforeMount');\r\n var updateComponent;\r\n /* istanbul ignore if */\r\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\r\n updateComponent = function () {\r\n var name = vm._name;\r\n var id = vm._uid;\r\n var startTag = \"vue-perf-start:\".concat(id);\r\n var endTag = \"vue-perf-end:\".concat(id);\r\n mark(startTag);\r\n var vnode = vm._render();\r\n mark(endTag);\r\n measure(\"vue \".concat(name, \" render\"), startTag, endTag);\r\n mark(startTag);\r\n vm._update(vnode, hydrating);\r\n mark(endTag);\r\n measure(\"vue \".concat(name, \" patch\"), startTag, endTag);\r\n };\r\n }\r\n else {\r\n updateComponent = function () {\r\n vm._update(vm._render(), hydrating);\r\n };\r\n }\r\n var watcherOptions = {\r\n before: function () {\r\n if (vm._isMounted && !vm._isDestroyed) {\r\n callHook$1(vm, 'beforeUpdate');\r\n }\r\n }\r\n };\r\n if (process.env.NODE_ENV !== 'production') {\r\n watcherOptions.onTrack = function (e) { return callHook$1(vm, 'renderTracked', [e]); };\r\n watcherOptions.onTrigger = function (e) { return callHook$1(vm, 'renderTriggered', [e]); };\r\n }\r\n // we set this to vm._watcher inside the watcher's constructor\r\n // since the watcher's initial patch may call $forceUpdate (e.g. inside child\r\n // component's mounted hook), which relies on vm._watcher being already defined\r\n new Watcher(vm, updateComponent, noop, watcherOptions, true /* isRenderWatcher */);\r\n hydrating = false;\r\n // flush buffer for flush: \"pre\" watchers queued in setup()\r\n var preWatchers = vm._preWatchers;\r\n if (preWatchers) {\r\n for (var i = 0; i < preWatchers.length; i++) {\r\n preWatchers[i].run();\r\n }\r\n }\r\n // manually mounted instance, call mounted on self\r\n // mounted is called for render-created child components in its inserted hook\r\n if (vm.$vnode == null) {\r\n vm._isMounted = true;\r\n callHook$1(vm, 'mounted');\r\n }\r\n return vm;\r\n}\r\nfunction updateChildComponent(vm, propsData, listeners, parentVnode, renderChildren) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n isUpdatingChildComponent = true;\r\n }\r\n // determine whether component has slot children\r\n // we need to do this before overwriting $options._renderChildren.\r\n // check if there are dynamic scopedSlots (hand-written or compiled but with\r\n // dynamic slot names). Static scoped slots compiled from template has the\r\n // \"$stable\" marker.\r\n var newScopedSlots = parentVnode.data.scopedSlots;\r\n var oldScopedSlots = vm.$scopedSlots;\r\n var hasDynamicScopedSlot = !!((newScopedSlots && !newScopedSlots.$stable) ||\r\n (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) ||\r\n (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key) ||\r\n (!newScopedSlots && vm.$scopedSlots.$key));\r\n // Any static slot children from the parent may have changed during parent's\r\n // update. Dynamic scoped slots may also have changed. In such cases, a forced\r\n // update is necessary to ensure correctness.\r\n var needsForceUpdate = !!(renderChildren || // has new static slots\r\n vm.$options._renderChildren || // has old static slots\r\n hasDynamicScopedSlot);\r\n var prevVNode = vm.$vnode;\r\n vm.$options._parentVnode = parentVnode;\r\n vm.$vnode = parentVnode; // update vm's placeholder node without re-render\r\n if (vm._vnode) {\r\n // update child tree's parent\r\n vm._vnode.parent = parentVnode;\r\n }\r\n vm.$options._renderChildren = renderChildren;\r\n // update $attrs and $listeners hash\r\n // these are also reactive so they may trigger child update if the child\r\n // used them during render\r\n var attrs = parentVnode.data.attrs || emptyObject;\r\n if (vm._attrsProxy) {\r\n // force update if attrs are accessed and has changed since it may be\r\n // passed to a child component.\r\n if (syncSetupAttrs(vm._attrsProxy, attrs, (prevVNode.data && prevVNode.data.attrs) || emptyObject, vm)) {\r\n needsForceUpdate = true;\r\n }\r\n }\r\n vm.$attrs = attrs;\r\n vm.$listeners = listeners || emptyObject;\r\n // update props\r\n if (propsData && vm.$options.props) {\r\n toggleObserving(false);\r\n var props = vm._props;\r\n var propKeys = vm.$options._propKeys || [];\r\n for (var i = 0; i < propKeys.length; i++) {\r\n var key = propKeys[i];\r\n var propOptions = vm.$options.props; // wtf flow?\r\n props[key] = validateProp(key, propOptions, propsData, vm);\r\n }\r\n toggleObserving(true);\r\n // keep a copy of raw propsData\r\n vm.$options.propsData = propsData;\r\n }\r\n // update listeners\r\n listeners = listeners || emptyObject;\r\n var oldListeners = vm.$options._parentListeners;\r\n vm.$options._parentListeners = listeners;\r\n updateComponentListeners(vm, listeners, oldListeners);\r\n // resolve slots + force update if has children\r\n if (needsForceUpdate) {\r\n vm.$slots = resolveSlots(renderChildren, parentVnode.context);\r\n vm.$forceUpdate();\r\n }\r\n if (process.env.NODE_ENV !== 'production') {\r\n isUpdatingChildComponent = false;\r\n }\r\n}\r\nfunction isInInactiveTree(vm) {\r\n while (vm && (vm = vm.$parent)) {\r\n if (vm._inactive)\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction activateChildComponent(vm, direct) {\r\n if (direct) {\r\n vm._directInactive = false;\r\n if (isInInactiveTree(vm)) {\r\n return;\r\n }\r\n }\r\n else if (vm._directInactive) {\r\n return;\r\n }\r\n if (vm._inactive || vm._inactive === null) {\r\n vm._inactive = false;\r\n for (var i = 0; i < vm.$children.length; i++) {\r\n activateChildComponent(vm.$children[i]);\r\n }\r\n callHook$1(vm, 'activated');\r\n }\r\n}\r\nfunction deactivateChildComponent(vm, direct) {\r\n if (direct) {\r\n vm._directInactive = true;\r\n if (isInInactiveTree(vm)) {\r\n return;\r\n }\r\n }\r\n if (!vm._inactive) {\r\n vm._inactive = true;\r\n for (var i = 0; i < vm.$children.length; i++) {\r\n deactivateChildComponent(vm.$children[i]);\r\n }\r\n callHook$1(vm, 'deactivated');\r\n }\r\n}\r\nfunction callHook$1(vm, hook, args) {\r\n // #7573 disable dep collection when invoking lifecycle hooks\r\n pushTarget();\r\n var prev = currentInstance;\r\n setCurrentInstance(vm);\r\n var handlers = vm.$options[hook];\r\n var info = \"\".concat(hook, \" hook\");\r\n if (handlers) {\r\n for (var i = 0, j = handlers.length; i < j; i++) {\r\n invokeWithErrorHandling(handlers[i], vm, args || null, vm, info);\r\n }\r\n }\r\n if (vm._hasHookEvent) {\r\n vm.$emit('hook:' + hook);\r\n }\r\n setCurrentInstance(prev);\r\n popTarget();\r\n}\n\nvar MAX_UPDATE_COUNT = 100;\r\nvar queue = [];\r\nvar activatedChildren = [];\r\nvar has = {};\r\nvar circular = {};\r\nvar waiting = false;\r\nvar flushing = false;\r\nvar index$1 = 0;\r\n/**\r\n * Reset the scheduler's state.\r\n */\r\nfunction resetSchedulerState() {\r\n index$1 = queue.length = activatedChildren.length = 0;\r\n has = {};\r\n if (process.env.NODE_ENV !== 'production') {\r\n circular = {};\r\n }\r\n waiting = flushing = false;\r\n}\r\n// Async edge case #6566 requires saving the timestamp when event listeners are\r\n// attached. However, calling performance.now() has a perf overhead especially\r\n// if the page has thousands of event listeners. Instead, we take a timestamp\r\n// every time the scheduler flushes and use that for all event listeners\r\n// attached during that flush.\r\nvar currentFlushTimestamp = 0;\r\n// Async edge case fix requires storing an event listener's attach timestamp.\r\nvar getNow = Date.now;\r\n// Determine what event timestamp the browser is using. Annoyingly, the\r\n// timestamp can either be hi-res (relative to page load) or low-res\r\n// (relative to UNIX epoch), so in order to compare time we have to use the\r\n// same timestamp type when saving the flush timestamp.\r\n// All IE versions use low-res event timestamps, and have problematic clock\r\n// implementations (#9632)\r\nif (inBrowser && !isIE) {\r\n var performance_1 = window.performance;\r\n if (performance_1 &&\r\n typeof performance_1.now === 'function' &&\r\n getNow() > document.createEvent('Event').timeStamp) {\r\n // if the event timestamp, although evaluated AFTER the Date.now(), is\r\n // smaller than it, it means the event is using a hi-res timestamp,\r\n // and we need to use the hi-res version for event listener timestamps as\r\n // well.\r\n getNow = function () { return performance_1.now(); };\r\n }\r\n}\r\n/**\r\n * Flush both queues and run the watchers.\r\n */\r\nfunction flushSchedulerQueue() {\r\n currentFlushTimestamp = getNow();\r\n flushing = true;\r\n var watcher, id;\r\n // Sort queue before flush.\r\n // This ensures that:\r\n // 1. Components are updated from parent to child. (because parent is always\r\n // created before the child)\r\n // 2. A component's user watchers are run before its render watcher (because\r\n // user watchers are created before the render watcher)\r\n // 3. If a component is destroyed during a parent component's watcher run,\r\n // its watchers can be skipped.\r\n queue.sort(function (a, b) { return a.id - b.id; });\r\n // do not cache length because more watchers might be pushed\r\n // as we run existing watchers\r\n for (index$1 = 0; index$1 < queue.length; index$1++) {\r\n watcher = queue[index$1];\r\n if (watcher.before) {\r\n watcher.before();\r\n }\r\n id = watcher.id;\r\n has[id] = null;\r\n watcher.run();\r\n // in dev build, check and stop circular updates.\r\n if (process.env.NODE_ENV !== 'production' && has[id] != null) {\r\n circular[id] = (circular[id] || 0) + 1;\r\n if (circular[id] > MAX_UPDATE_COUNT) {\r\n warn$2('You may have an infinite update loop ' +\r\n (watcher.user\r\n ? \"in watcher with expression \\\"\".concat(watcher.expression, \"\\\"\")\r\n : \"in a component render function.\"), watcher.vm);\r\n break;\r\n }\r\n }\r\n }\r\n // keep copies of post queues before resetting state\r\n var activatedQueue = activatedChildren.slice();\r\n var updatedQueue = queue.slice();\r\n resetSchedulerState();\r\n // call component updated and activated hooks\r\n callActivatedHooks(activatedQueue);\r\n callUpdatedHooks(updatedQueue);\r\n // devtool hook\r\n /* istanbul ignore if */\r\n if (devtools && config.devtools) {\r\n devtools.emit('flush');\r\n }\r\n}\r\nfunction callUpdatedHooks(queue) {\r\n var i = queue.length;\r\n while (i--) {\r\n var watcher = queue[i];\r\n var vm = watcher.vm;\r\n if (vm && vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) {\r\n callHook$1(vm, 'updated');\r\n }\r\n }\r\n}\r\n/**\r\n * Queue a kept-alive component that was activated during patch.\r\n * The queue will be processed after the entire tree has been patched.\r\n */\r\nfunction queueActivatedComponent(vm) {\r\n // setting _inactive to false here so that a render function can\r\n // rely on checking whether it's in an inactive tree (e.g. router-view)\r\n vm._inactive = false;\r\n activatedChildren.push(vm);\r\n}\r\nfunction callActivatedHooks(queue) {\r\n for (var i = 0; i < queue.length; i++) {\r\n queue[i]._inactive = true;\r\n activateChildComponent(queue[i], true /* true */);\r\n }\r\n}\r\n/**\r\n * Push a watcher into the watcher queue.\r\n * Jobs with duplicate IDs will be skipped unless it's\r\n * pushed when the queue is being flushed.\r\n */\r\nfunction queueWatcher(watcher) {\r\n var id = watcher.id;\r\n if (has[id] != null) {\r\n return;\r\n }\r\n if (watcher === Dep.target && watcher.noRecurse) {\r\n return;\r\n }\r\n has[id] = true;\r\n if (!flushing) {\r\n queue.push(watcher);\r\n }\r\n else {\r\n // if already flushing, splice the watcher based on its id\r\n // if already past its id, it will be run next immediately.\r\n var i = queue.length - 1;\r\n while (i > index$1 && queue[i].id > watcher.id) {\r\n i--;\r\n }\r\n queue.splice(i + 1, 0, watcher);\r\n }\r\n // queue the flush\r\n if (!waiting) {\r\n waiting = true;\r\n if (process.env.NODE_ENV !== 'production' && !config.async) {\r\n flushSchedulerQueue();\r\n return;\r\n }\r\n nextTick(flushSchedulerQueue);\r\n }\r\n}\n\nvar uid = 0;\r\n/**\r\n * A watcher parses an expression, collects dependencies,\r\n * and fires callback when the expression value changes.\r\n * This is used for both the $watch() api and directives.\r\n * @internal\r\n */\r\nvar Watcher = /** @class */ (function () {\r\n function Watcher(vm, expOrFn, cb, options, isRenderWatcher) {\r\n recordEffectScope(this, activeEffectScope || (vm ? vm._scope : undefined));\r\n if ((this.vm = vm)) {\r\n if (isRenderWatcher) {\r\n vm._watcher = this;\r\n }\r\n }\r\n // options\r\n if (options) {\r\n this.deep = !!options.deep;\r\n this.user = !!options.user;\r\n this.lazy = !!options.lazy;\r\n this.sync = !!options.sync;\r\n this.before = options.before;\r\n if (process.env.NODE_ENV !== 'production') {\r\n this.onTrack = options.onTrack;\r\n this.onTrigger = options.onTrigger;\r\n }\r\n }\r\n else {\r\n this.deep = this.user = this.lazy = this.sync = false;\r\n }\r\n this.cb = cb;\r\n this.id = ++uid; // uid for batching\r\n this.active = true;\r\n this.dirty = this.lazy; // for lazy watchers\r\n this.deps = [];\r\n this.newDeps = [];\r\n this.depIds = new _Set();\r\n this.newDepIds = new _Set();\r\n this.expression = process.env.NODE_ENV !== 'production' ? expOrFn.toString() : '';\r\n // parse expression for getter\r\n if (isFunction(expOrFn)) {\r\n this.getter = expOrFn;\r\n }\r\n else {\r\n this.getter = parsePath(expOrFn);\r\n if (!this.getter) {\r\n this.getter = noop;\r\n process.env.NODE_ENV !== 'production' &&\r\n warn$2(\"Failed watching path: \\\"\".concat(expOrFn, \"\\\" \") +\r\n 'Watcher only accepts simple dot-delimited paths. ' +\r\n 'For full control, use a function instead.', vm);\r\n }\r\n }\r\n this.value = this.lazy ? undefined : this.get();\r\n }\r\n /**\r\n * Evaluate the getter, and re-collect dependencies.\r\n */\r\n Watcher.prototype.get = function () {\r\n pushTarget(this);\r\n var value;\r\n var vm = this.vm;\r\n try {\r\n value = this.getter.call(vm, vm);\r\n }\r\n catch (e) {\r\n if (this.user) {\r\n handleError(e, vm, \"getter for watcher \\\"\".concat(this.expression, \"\\\"\"));\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n finally {\r\n // \"touch\" every property so they are all tracked as\r\n // dependencies for deep watching\r\n if (this.deep) {\r\n traverse(value);\r\n }\r\n popTarget();\r\n this.cleanupDeps();\r\n }\r\n return value;\r\n };\r\n /**\r\n * Add a dependency to this directive.\r\n */\r\n Watcher.prototype.addDep = function (dep) {\r\n var id = dep.id;\r\n if (!this.newDepIds.has(id)) {\r\n this.newDepIds.add(id);\r\n this.newDeps.push(dep);\r\n if (!this.depIds.has(id)) {\r\n dep.addSub(this);\r\n }\r\n }\r\n };\r\n /**\r\n * Clean up for dependency collection.\r\n */\r\n Watcher.prototype.cleanupDeps = function () {\r\n var i = this.deps.length;\r\n while (i--) {\r\n var dep = this.deps[i];\r\n if (!this.newDepIds.has(dep.id)) {\r\n dep.removeSub(this);\r\n }\r\n }\r\n var tmp = this.depIds;\r\n this.depIds = this.newDepIds;\r\n this.newDepIds = tmp;\r\n this.newDepIds.clear();\r\n tmp = this.deps;\r\n this.deps = this.newDeps;\r\n this.newDeps = tmp;\r\n this.newDeps.length = 0;\r\n };\r\n /**\r\n * Subscriber interface.\r\n * Will be called when a dependency changes.\r\n */\r\n Watcher.prototype.update = function () {\r\n /* istanbul ignore else */\r\n if (this.lazy) {\r\n this.dirty = true;\r\n }\r\n else if (this.sync) {\r\n this.run();\r\n }\r\n else {\r\n queueWatcher(this);\r\n }\r\n };\r\n /**\r\n * Scheduler job interface.\r\n * Will be called by the scheduler.\r\n */\r\n Watcher.prototype.run = function () {\r\n if (this.active) {\r\n var value = this.get();\r\n if (value !== this.value ||\r\n // Deep watchers and watchers on Object/Arrays should fire even\r\n // when the value is the same, because the value may\r\n // have mutated.\r\n isObject(value) ||\r\n this.deep) {\r\n // set new value\r\n var oldValue = this.value;\r\n this.value = value;\r\n if (this.user) {\r\n var info = \"callback for watcher \\\"\".concat(this.expression, \"\\\"\");\r\n invokeWithErrorHandling(this.cb, this.vm, [value, oldValue], this.vm, info);\r\n }\r\n else {\r\n this.cb.call(this.vm, value, oldValue);\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Evaluate the value of the watcher.\r\n * This only gets called for lazy watchers.\r\n */\r\n Watcher.prototype.evaluate = function () {\r\n this.value = this.get();\r\n this.dirty = false;\r\n };\r\n /**\r\n * Depend on all deps collected by this watcher.\r\n */\r\n Watcher.prototype.depend = function () {\r\n var i = this.deps.length;\r\n while (i--) {\r\n this.deps[i].depend();\r\n }\r\n };\r\n /**\r\n * Remove self from all dependencies' subscriber list.\r\n */\r\n Watcher.prototype.teardown = function () {\r\n if (this.vm && !this.vm._isBeingDestroyed) {\r\n remove$2(this.vm._scope.effects, this);\r\n }\r\n if (this.active) {\r\n var i = this.deps.length;\r\n while (i--) {\r\n this.deps[i].removeSub(this);\r\n }\r\n this.active = false;\r\n if (this.onStop) {\r\n this.onStop();\r\n }\r\n }\r\n };\r\n return Watcher;\r\n}());\n\nfunction computed(getterOrOptions, debugOptions) {\r\n var getter;\r\n var setter;\r\n var onlyGetter = isFunction(getterOrOptions);\r\n if (onlyGetter) {\r\n getter = getterOrOptions;\r\n setter = process.env.NODE_ENV !== 'production'\r\n ? function () {\r\n warn$2('Write operation failed: computed value is readonly');\r\n }\r\n : noop;\r\n }\r\n else {\r\n getter = getterOrOptions.get;\r\n setter = getterOrOptions.set;\r\n }\r\n var watcher = isServerRendering()\r\n ? null\r\n : new Watcher(currentInstance, getter, noop, { lazy: true });\r\n if (process.env.NODE_ENV !== 'production' && watcher && debugOptions) {\r\n watcher.onTrack = debugOptions.onTrack;\r\n watcher.onTrigger = debugOptions.onTrigger;\r\n }\r\n var ref = {\r\n // some libs rely on the presence effect for checking computed refs\r\n // from normal refs, but the implementation doesn't matter\r\n effect: watcher,\r\n get value() {\r\n if (watcher) {\r\n if (watcher.dirty) {\r\n watcher.evaluate();\r\n }\r\n if (Dep.target) {\r\n if (process.env.NODE_ENV !== 'production' && Dep.target.onTrack) {\r\n Dep.target.onTrack({\r\n effect: Dep.target,\r\n target: ref,\r\n type: \"get\" /* TrackOpTypes.GET */,\r\n key: 'value'\r\n });\r\n }\r\n watcher.depend();\r\n }\r\n return watcher.value;\r\n }\r\n else {\r\n return getter();\r\n }\r\n },\r\n set value(newVal) {\r\n setter(newVal);\r\n }\r\n };\r\n def(ref, RefFlag, true);\r\n def(ref, \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */, onlyGetter);\r\n return ref;\r\n}\n\nvar WATCHER = \"watcher\";\r\nvar WATCHER_CB = \"\".concat(WATCHER, \" callback\");\r\nvar WATCHER_GETTER = \"\".concat(WATCHER, \" getter\");\r\nvar WATCHER_CLEANUP = \"\".concat(WATCHER, \" cleanup\");\r\n// Simple effect.\r\nfunction watchEffect(effect, options) {\r\n return doWatch(effect, null, options);\r\n}\r\nfunction watchPostEffect(effect, options) {\r\n return doWatch(effect, null, (process.env.NODE_ENV !== 'production'\r\n ? __assign(__assign({}, options), { flush: 'post' }) : { flush: 'post' }));\r\n}\r\nfunction watchSyncEffect(effect, options) {\r\n return doWatch(effect, null, (process.env.NODE_ENV !== 'production'\r\n ? __assign(__assign({}, options), { flush: 'sync' }) : { flush: 'sync' }));\r\n}\r\n// initial value for watchers to trigger on undefined initial values\r\nvar INITIAL_WATCHER_VALUE = {};\r\n// implementation\r\nfunction watch(source, cb, options) {\r\n if (process.env.NODE_ENV !== 'production' && typeof cb !== 'function') {\r\n warn$2(\"`watch(fn, options?)` signature has been moved to a separate API. \" +\r\n \"Use `watchEffect(fn, options?)` instead. `watch` now only \" +\r\n \"supports `watch(source, cb, options?) signature.\");\r\n }\r\n return doWatch(source, cb, options);\r\n}\r\nfunction doWatch(source, cb, _a) {\r\n var _b = _a === void 0 ? emptyObject : _a, immediate = _b.immediate, deep = _b.deep, _c = _b.flush, flush = _c === void 0 ? 'pre' : _c, onTrack = _b.onTrack, onTrigger = _b.onTrigger;\r\n if (process.env.NODE_ENV !== 'production' && !cb) {\r\n if (immediate !== undefined) {\r\n warn$2(\"watch() \\\"immediate\\\" option is only respected when using the \" +\r\n \"watch(source, callback, options?) signature.\");\r\n }\r\n if (deep !== undefined) {\r\n warn$2(\"watch() \\\"deep\\\" option is only respected when using the \" +\r\n \"watch(source, callback, options?) signature.\");\r\n }\r\n }\r\n var warnInvalidSource = function (s) {\r\n warn$2(\"Invalid watch source: \".concat(s, \". A watch source can only be a getter/effect \") +\r\n \"function, a ref, a reactive object, or an array of these types.\");\r\n };\r\n var instance = currentInstance;\r\n var call = function (fn, type, args) {\r\n if (args === void 0) { args = null; }\r\n return invokeWithErrorHandling(fn, null, args, instance, type);\r\n };\r\n var getter;\r\n var forceTrigger = false;\r\n var isMultiSource = false;\r\n if (isRef(source)) {\r\n getter = function () { return source.value; };\r\n forceTrigger = isShallow(source);\r\n }\r\n else if (isReactive(source)) {\r\n getter = isArray(source)\r\n ? function () {\r\n source.__ob__.dep.depend();\r\n return source;\r\n }\r\n : function () { return source; };\r\n deep = true;\r\n }\r\n else if (isArray(source)) {\r\n isMultiSource = true;\r\n forceTrigger = source.some(function (s) { return isReactive(s) || isShallow(s); });\r\n getter = function () {\r\n return source.map(function (s) {\r\n if (isRef(s)) {\r\n return s.value;\r\n }\r\n else if (isReactive(s)) {\r\n return traverse(s);\r\n }\r\n else if (isFunction(s)) {\r\n return call(s, WATCHER_GETTER);\r\n }\r\n else {\r\n process.env.NODE_ENV !== 'production' && warnInvalidSource(s);\r\n }\r\n });\r\n };\r\n }\r\n else if (isFunction(source)) {\r\n if (cb) {\r\n // getter with cb\r\n getter = function () { return call(source, WATCHER_GETTER); };\r\n }\r\n else {\r\n // no cb -> simple effect\r\n getter = function () {\r\n if (instance && instance._isDestroyed) {\r\n return;\r\n }\r\n if (cleanup) {\r\n cleanup();\r\n }\r\n return call(source, WATCHER, [onCleanup]);\r\n };\r\n }\r\n }\r\n else {\r\n getter = noop;\r\n process.env.NODE_ENV !== 'production' && warnInvalidSource(source);\r\n }\r\n if (cb && deep) {\r\n var baseGetter_1 = getter;\r\n getter = function () { return traverse(baseGetter_1()); };\r\n }\r\n var cleanup;\r\n var onCleanup = function (fn) {\r\n cleanup = watcher.onStop = function () {\r\n call(fn, WATCHER_CLEANUP);\r\n };\r\n };\r\n // in SSR there is no need to setup an actual effect, and it should be noop\r\n // unless it's eager\r\n if (isServerRendering()) {\r\n // we will also not call the invalidate callback (+ runner is not set up)\r\n onCleanup = noop;\r\n if (!cb) {\r\n getter();\r\n }\r\n else if (immediate) {\r\n call(cb, WATCHER_CB, [\r\n getter(),\r\n isMultiSource ? [] : undefined,\r\n onCleanup\r\n ]);\r\n }\r\n return noop;\r\n }\r\n var watcher = new Watcher(currentInstance, getter, noop, {\r\n lazy: true\r\n });\r\n watcher.noRecurse = !cb;\r\n var oldValue = isMultiSource ? [] : INITIAL_WATCHER_VALUE;\r\n // overwrite default run\r\n watcher.run = function () {\r\n if (!watcher.active &&\r\n !(flush === 'pre' && instance && instance._isBeingDestroyed)) {\r\n return;\r\n }\r\n if (cb) {\r\n // watch(source, cb)\r\n var newValue = watcher.get();\r\n if (deep ||\r\n forceTrigger ||\r\n (isMultiSource\r\n ? newValue.some(function (v, i) {\r\n return hasChanged(v, oldValue[i]);\r\n })\r\n : hasChanged(newValue, oldValue))) {\r\n // cleanup before running cb again\r\n if (cleanup) {\r\n cleanup();\r\n }\r\n call(cb, WATCHER_CB, [\r\n newValue,\r\n // pass undefined as the old value when it's changed for the first time\r\n oldValue === INITIAL_WATCHER_VALUE ? undefined : oldValue,\r\n onCleanup\r\n ]);\r\n oldValue = newValue;\r\n }\r\n }\r\n else {\r\n // watchEffect\r\n watcher.get();\r\n }\r\n };\r\n if (flush === 'sync') {\r\n watcher.update = watcher.run;\r\n }\r\n else if (flush === 'post') {\r\n watcher.id = Infinity;\r\n watcher.update = function () { return queueWatcher(watcher); };\r\n }\r\n else {\r\n // pre\r\n watcher.update = function () {\r\n if (instance && instance === currentInstance) {\r\n // pre-watcher triggered inside setup()\r\n var buffer = instance._preWatchers || (instance._preWatchers = []);\r\n if (buffer.indexOf(watcher) < 0)\r\n buffer.push(watcher);\r\n }\r\n else {\r\n queueWatcher(watcher);\r\n }\r\n };\r\n }\r\n if (process.env.NODE_ENV !== 'production') {\r\n watcher.onTrack = onTrack;\r\n watcher.onTrigger = onTrigger;\r\n }\r\n // initial run\r\n if (cb) {\r\n if (immediate) {\r\n watcher.run();\r\n }\r\n else {\r\n oldValue = watcher.get();\r\n }\r\n }\r\n else if (flush === 'post' && instance) {\r\n instance.$once('hook:mounted', function () { return watcher.get(); });\r\n }\r\n else {\r\n watcher.get();\r\n }\r\n return function () {\r\n watcher.teardown();\r\n };\r\n}\n\n/**\r\n * @internal this function needs manual public type declaration because it relies\r\n * on previously manually authored types from Vue 2\r\n */\r\nfunction h(type, props, children) {\r\n if (!currentInstance) {\r\n process.env.NODE_ENV !== 'production' &&\r\n warn$2(\"globally imported h() can only be invoked when there is an active \" +\r\n \"component instance, e.g. synchronously in a component's render or setup function.\");\r\n }\r\n return createElement$1(currentInstance, type, props, children, 2, true);\r\n}\n\nfunction handleError(err, vm, info) {\r\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\r\n // See: https://github.com/vuejs/vuex/issues/1505\r\n pushTarget();\r\n try {\r\n if (vm) {\r\n var cur = vm;\r\n while ((cur = cur.$parent)) {\r\n var hooks = cur.$options.errorCaptured;\r\n if (hooks) {\r\n for (var i = 0; i < hooks.length; i++) {\r\n try {\r\n var capture = hooks[i].call(cur, err, vm, info) === false;\r\n if (capture)\r\n return;\r\n }\r\n catch (e) {\r\n globalHandleError(e, cur, 'errorCaptured hook');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n globalHandleError(err, vm, info);\r\n }\r\n finally {\r\n popTarget();\r\n }\r\n}\r\nfunction invokeWithErrorHandling(handler, context, args, vm, info) {\r\n var res;\r\n try {\r\n res = args ? handler.apply(context, args) : handler.call(context);\r\n if (res && !res._isVue && isPromise(res) && !res._handled) {\r\n res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\r\n res._handled = true;\r\n }\r\n }\r\n catch (e) {\r\n handleError(e, vm, info);\r\n }\r\n return res;\r\n}\r\nfunction globalHandleError(err, vm, info) {\r\n if (config.errorHandler) {\r\n try {\r\n return config.errorHandler.call(null, err, vm, info);\r\n }\r\n catch (e) {\r\n // if the user intentionally throws the original error in the handler,\r\n // do not log it twice\r\n if (e !== err) {\r\n logError(e, null, 'config.errorHandler');\r\n }\r\n }\r\n }\r\n logError(err, vm, info);\r\n}\r\nfunction logError(err, vm, info) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n warn$2(\"Error in \".concat(info, \": \\\"\").concat(err.toString(), \"\\\"\"), vm);\r\n }\r\n /* istanbul ignore else */\r\n if (inBrowser && typeof console !== 'undefined') {\r\n console.error(err);\r\n }\r\n else {\r\n throw err;\r\n }\r\n}\n\n/* globals MutationObserver */\r\nvar isUsingMicroTask = false;\r\nvar callbacks = [];\r\nvar pending = false;\r\nfunction flushCallbacks() {\r\n pending = false;\r\n var copies = callbacks.slice(0);\r\n callbacks.length = 0;\r\n for (var i = 0; i < copies.length; i++) {\r\n copies[i]();\r\n }\r\n}\r\n// Here we have async deferring wrappers using microtasks.\r\n// In 2.5 we used (macro) tasks (in combination with microtasks).\r\n// However, it has subtle problems when state is changed right before repaint\r\n// (e.g. #6813, out-in transitions).\r\n// Also, using (macro) tasks in event handler would cause some weird behaviors\r\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\r\n// So we now use microtasks everywhere, again.\r\n// A major drawback of this tradeoff is that there are some scenarios\r\n// where microtasks have too high a priority and fire in between supposedly\r\n// sequential events (e.g. #4521, #6690, which have workarounds)\r\n// or even between bubbling of the same event (#6566).\r\nvar timerFunc;\r\n// The nextTick behavior leverages the microtask queue, which can be accessed\r\n// via either native Promise.then or MutationObserver.\r\n// MutationObserver has wider support, however it is seriously bugged in\r\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\r\n// completely stops working after triggering a few times... so, if native\r\n// Promise is available, we will use it:\r\n/* istanbul ignore next, $flow-disable-line */\r\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\r\n var p_1 = Promise.resolve();\r\n timerFunc = function () {\r\n p_1.then(flushCallbacks);\r\n // In problematic UIWebViews, Promise.then doesn't completely break, but\r\n // it can get stuck in a weird state where callbacks are pushed into the\r\n // microtask queue but the queue isn't being flushed, until the browser\r\n // needs to do some other work, e.g. handle a timer. Therefore we can\r\n // \"force\" the microtask queue to be flushed by adding an empty timer.\r\n if (isIOS)\r\n setTimeout(noop);\r\n };\r\n isUsingMicroTask = true;\r\n}\r\nelse if (!isIE &&\r\n typeof MutationObserver !== 'undefined' &&\r\n (isNative(MutationObserver) ||\r\n // PhantomJS and iOS 7.x\r\n MutationObserver.toString() === '[object MutationObserverConstructor]')) {\r\n // Use MutationObserver where native Promise is not available,\r\n // e.g. PhantomJS, iOS7, Android 4.4\r\n // (#6466 MutationObserver is unreliable in IE11)\r\n var counter_1 = 1;\r\n var observer = new MutationObserver(flushCallbacks);\r\n var textNode_1 = document.createTextNode(String(counter_1));\r\n observer.observe(textNode_1, {\r\n characterData: true\r\n });\r\n timerFunc = function () {\r\n counter_1 = (counter_1 + 1) % 2;\r\n textNode_1.data = String(counter_1);\r\n };\r\n isUsingMicroTask = true;\r\n}\r\nelse if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\r\n // Fallback to setImmediate.\r\n // Technically it leverages the (macro) task queue,\r\n // but it is still a better choice than setTimeout.\r\n timerFunc = function () {\r\n setImmediate(flushCallbacks);\r\n };\r\n}\r\nelse {\r\n // Fallback to setTimeout.\r\n timerFunc = function () {\r\n setTimeout(flushCallbacks, 0);\r\n };\r\n}\r\n/**\r\n * @internal\r\n */\r\nfunction nextTick(cb, ctx) {\r\n var _resolve;\r\n callbacks.push(function () {\r\n if (cb) {\r\n try {\r\n cb.call(ctx);\r\n }\r\n catch (e) {\r\n handleError(e, ctx, 'nextTick');\r\n }\r\n }\r\n else if (_resolve) {\r\n _resolve(ctx);\r\n }\r\n });\r\n if (!pending) {\r\n pending = true;\r\n timerFunc();\r\n }\r\n // $flow-disable-line\r\n if (!cb && typeof Promise !== 'undefined') {\r\n return new Promise(function (resolve) {\r\n _resolve = resolve;\r\n });\r\n }\r\n}\n\nfunction useCssModule(name) {\r\n if (name === void 0) { name = '$style'; }\r\n /* istanbul ignore else */\r\n {\r\n if (!currentInstance) {\r\n process.env.NODE_ENV !== 'production' && warn$2(\"useCssModule must be called inside setup()\");\r\n return emptyObject;\r\n }\r\n var mod = currentInstance[name];\r\n if (!mod) {\r\n process.env.NODE_ENV !== 'production' &&\r\n warn$2(\"Current instance does not have CSS module named \\\"\".concat(name, \"\\\".\"));\r\n return emptyObject;\r\n }\r\n return mod;\r\n }\r\n}\n\n/**\r\n * Runtime helper for SFC's CSS variable injection feature.\r\n * @private\r\n */\r\nfunction useCssVars(getter) {\r\n if (!inBrowser && !false)\r\n return;\r\n var instance = currentInstance;\r\n if (!instance) {\r\n process.env.NODE_ENV !== 'production' &&\r\n warn$2(\"useCssVars is called without current active component instance.\");\r\n return;\r\n }\r\n watchPostEffect(function () {\r\n var el = instance.$el;\r\n var vars = getter(instance, instance._setupProxy);\r\n if (el && el.nodeType === 1) {\r\n var style = el.style;\r\n for (var key in vars) {\r\n style.setProperty(\"--\".concat(key), vars[key]);\r\n }\r\n }\r\n });\r\n}\n\nfunction createLifeCycle(hookName) {\r\n return function (fn, target) {\r\n if (target === void 0) { target = currentInstance; }\r\n if (!target) {\r\n process.env.NODE_ENV !== 'production' &&\r\n warn$2(\"\".concat(formatName(hookName), \" is called when there is no active component instance to be \") +\r\n \"associated with. \" +\r\n \"Lifecycle injection APIs can only be used during execution of setup().\");\r\n return;\r\n }\r\n return injectHook(target, hookName, fn);\r\n };\r\n}\r\nfunction formatName(name) {\r\n if (name === 'beforeDestroy') {\r\n name = 'beforeUnmount';\r\n }\r\n else if (name === 'destroyed') {\r\n name = 'unmounted';\r\n }\r\n return \"on\".concat(name[0].toUpperCase() + name.slice(1));\r\n}\r\nfunction injectHook(instance, hookName, fn) {\r\n var options = instance.$options;\r\n options[hookName] = mergeLifecycleHook(options[hookName], fn);\r\n}\r\nvar onBeforeMount = createLifeCycle('beforeMount');\r\nvar onMounted = createLifeCycle('mounted');\r\nvar onBeforeUpdate = createLifeCycle('beforeUpdate');\r\nvar onUpdated = createLifeCycle('updated');\r\nvar onBeforeUnmount = createLifeCycle('beforeDestroy');\r\nvar onUnmounted = createLifeCycle('destroyed');\r\nvar onErrorCaptured = createLifeCycle('errorCaptured');\r\nvar onActivated = createLifeCycle('activated');\r\nvar onDeactivated = createLifeCycle('deactivated');\r\nvar onServerPrefetch = createLifeCycle('serverPrefetch');\r\nvar onRenderTracked = createLifeCycle('renderTracked');\r\nvar onRenderTriggered = createLifeCycle('renderTriggered');\n\nvar version = '2.7.2';\r\n/**\r\n * @internal type is manually declared in <root>/types/v3-define-component.d.ts\r\n */\r\nfunction defineComponent(options) {\r\n return options;\r\n}\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\r\nvar NO_INIITIAL_VALUE = {};\r\n/**\r\n * In some cases we may want to disable observation inside a component's\r\n * update computation.\r\n */\r\nvar shouldObserve = true;\r\nfunction toggleObserving(value) {\r\n shouldObserve = value;\r\n}\r\n/**\r\n * Observer class that is attached to each observed\r\n * object. Once attached, the observer converts the target\r\n * object's property keys into getter/setters that\r\n * collect dependencies and dispatch updates.\r\n */\r\nvar Observer = /** @class */ (function () {\r\n function Observer(value, shallow) {\r\n if (shallow === void 0) { shallow = false; }\r\n this.value = value;\r\n this.shallow = shallow;\r\n // this.value = value\r\n this.dep = new Dep();\r\n this.vmCount = 0;\r\n def(value, '__ob__', this);\r\n if (isArray(value)) {\r\n if (hasProto) {\r\n protoAugment(value, arrayMethods);\r\n }\r\n else {\r\n copyAugment(value, arrayMethods, arrayKeys);\r\n }\r\n if (!shallow) {\r\n this.observeArray(value);\r\n }\r\n }\r\n else {\r\n this.walk(value, shallow);\r\n }\r\n }\r\n /**\r\n * Walk through all properties and convert them into\r\n * getter/setters. This method should only be called when\r\n * value type is Object.\r\n */\r\n Observer.prototype.walk = function (obj, shallow) {\r\n var keys = Object.keys(obj);\r\n for (var i = 0; i < keys.length; i++) {\r\n var key = keys[i];\r\n defineReactive(obj, key, NO_INIITIAL_VALUE, undefined, shallow);\r\n }\r\n };\r\n /**\r\n * Observe a list of Array items.\r\n */\r\n Observer.prototype.observeArray = function (items) {\r\n for (var i = 0, l = items.length; i < l; i++) {\r\n observe(items[i]);\r\n }\r\n };\r\n return Observer;\r\n}());\r\n// helpers\r\n/**\r\n * Augment a target Object or Array by intercepting\r\n * the prototype chain using __proto__\r\n */\r\nfunction protoAugment(target, src) {\r\n /* eslint-disable no-proto */\r\n target.__proto__ = src;\r\n /* eslint-enable no-proto */\r\n}\r\n/**\r\n * Augment a target Object or Array by defining\r\n * hidden properties.\r\n */\r\n/* istanbul ignore next */\r\nfunction copyAugment(target, src, keys) {\r\n for (var i = 0, l = keys.length; i < l; i++) {\r\n var key = keys[i];\r\n def(target, key, src[key]);\r\n }\r\n}\r\n/**\r\n * Attempt to create an observer instance for a value,\r\n * returns the new observer if successfully observed,\r\n * or the existing observer if the value already has one.\r\n */\r\nfunction observe(value, shallow) {\r\n if (!isObject(value) || isRef(value) || value instanceof VNode) {\r\n return;\r\n }\r\n var ob;\r\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\r\n ob = value.__ob__;\r\n }\r\n else if (shouldObserve &&\r\n !isServerRendering() &&\r\n (isArray(value) || isPlainObject(value)) &&\r\n Object.isExtensible(value) &&\r\n !value.__v_skip) {\r\n ob = new Observer(value, shallow);\r\n }\r\n return ob;\r\n}\r\n/**\r\n * Define a reactive property on an Object.\r\n */\r\nfunction defineReactive(obj, key, val, customSetter, shallow) {\r\n var dep = new Dep();\r\n var property = Object.getOwnPropertyDescriptor(obj, key);\r\n if (property && property.configurable === false) {\r\n return;\r\n }\r\n // cater for pre-defined getter/setters\r\n var getter = property && property.get;\r\n var setter = property && property.set;\r\n if ((!getter || setter) &&\r\n (val === NO_INIITIAL_VALUE || arguments.length === 2)) {\r\n val = obj[key];\r\n }\r\n var childOb = !shallow && observe(val);\r\n Object.defineProperty(obj, key, {\r\n enumerable: true,\r\n configurable: true,\r\n get: function reactiveGetter() {\r\n var value = getter ? getter.call(obj) : val;\r\n if (Dep.target) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n dep.depend({\r\n target: obj,\r\n type: \"get\" /* TrackOpTypes.GET */,\r\n key: key\r\n });\r\n }\r\n else {\r\n dep.depend();\r\n }\r\n if (childOb) {\r\n childOb.dep.depend();\r\n if (isArray(value)) {\r\n dependArray(value);\r\n }\r\n }\r\n }\r\n return isRef(value) && !shallow ? value.value : value;\r\n },\r\n set: function reactiveSetter(newVal) {\r\n var value = getter ? getter.call(obj) : val;\r\n if (!hasChanged(value, newVal)) {\r\n return;\r\n }\r\n if (process.env.NODE_ENV !== 'production' && customSetter) {\r\n customSetter();\r\n }\r\n if (setter) {\r\n setter.call(obj, newVal);\r\n }\r\n else if (getter) {\r\n // #7981: for accessor properties without setter\r\n return;\r\n }\r\n else if (isRef(value) && !isRef(newVal)) {\r\n value.value = newVal;\r\n return;\r\n }\r\n else {\r\n val = newVal;\r\n }\r\n childOb = !shallow && observe(newVal);\r\n if (process.env.NODE_ENV !== 'production') {\r\n dep.notify({\r\n type: \"set\" /* TriggerOpTypes.SET */,\r\n target: obj,\r\n key: key,\r\n newValue: newVal,\r\n oldValue: value\r\n });\r\n }\r\n else {\r\n dep.notify();\r\n }\r\n }\r\n });\r\n return dep;\r\n}\r\nfunction set(target, key, val) {\r\n if (process.env.NODE_ENV !== 'production' && (isUndef(target) || isPrimitive(target))) {\r\n warn$2(\"Cannot set reactive property on undefined, null, or primitive value: \".concat(target));\r\n }\r\n if (isReadonly(target)) {\r\n process.env.NODE_ENV !== 'production' && warn$2(\"Set operation on key \\\"\".concat(key, \"\\\" failed: target is readonly.\"));\r\n return;\r\n }\r\n if (isArray(target) && isValidArrayIndex(key)) {\r\n target.length = Math.max(target.length, key);\r\n target.splice(key, 1, val);\r\n return val;\r\n }\r\n if (key in target && !(key in Object.prototype)) {\r\n target[key] = val;\r\n return val;\r\n }\r\n var ob = target.__ob__;\r\n if (target._isVue || (ob && ob.vmCount)) {\r\n process.env.NODE_ENV !== 'production' &&\r\n warn$2('Avoid adding reactive properties to a Vue instance or its root $data ' +\r\n 'at runtime - declare it upfront in the data option.');\r\n return val;\r\n }\r\n if (!ob) {\r\n target[key] = val;\r\n return val;\r\n }\r\n defineReactive(ob.value, key, val);\r\n if (process.env.NODE_ENV !== 'production') {\r\n ob.dep.notify({\r\n type: \"add\" /* TriggerOpTypes.ADD */,\r\n target: target,\r\n key: key,\r\n newValue: val,\r\n oldValue: undefined\r\n });\r\n }\r\n else {\r\n ob.dep.notify();\r\n }\r\n return val;\r\n}\r\nfunction del(target, key) {\r\n if (process.env.NODE_ENV !== 'production' && (isUndef(target) || isPrimitive(target))) {\r\n warn$2(\"Cannot delete reactive property on undefined, null, or primitive value: \".concat(target));\r\n }\r\n if (isArray(target) && isValidArrayIndex(key)) {\r\n target.splice(key, 1);\r\n return;\r\n }\r\n var ob = target.__ob__;\r\n if (target._isVue || (ob && ob.vmCount)) {\r\n process.env.NODE_ENV !== 'production' &&\r\n warn$2('Avoid deleting properties on a Vue instance or its root $data ' +\r\n '- just set it to null.');\r\n return;\r\n }\r\n if (isReadonly(target)) {\r\n process.env.NODE_ENV !== 'production' &&\r\n warn$2(\"Delete operation on key \\\"\".concat(key, \"\\\" failed: target is readonly.\"));\r\n return;\r\n }\r\n if (!hasOwn(target, key)) {\r\n return;\r\n }\r\n delete target[key];\r\n if (!ob) {\r\n return;\r\n }\r\n if (process.env.NODE_ENV !== 'production') {\r\n ob.dep.notify({\r\n type: \"delete\" /* TriggerOpTypes.DELETE */,\r\n target: target,\r\n key: key\r\n });\r\n }\r\n else {\r\n ob.dep.notify();\r\n }\r\n}\r\n/**\r\n * Collect dependencies on array elements when the array is touched, since\r\n * we cannot intercept array element access like property getters.\r\n */\r\nfunction dependArray(value) {\r\n for (var e = void 0, i = 0, l = value.length; i < l; i++) {\r\n e = value[i];\r\n if (e && e.__ob__) {\r\n e.__ob__.dep.depend();\r\n }\r\n if (isArray(e)) {\r\n dependArray(e);\r\n }\r\n }\r\n}\n\n/**\r\n * Option overwriting strategies are functions that handle\r\n * how to merge a parent option value and a child option\r\n * value into the final value.\r\n */\r\nvar strats = config.optionMergeStrategies;\r\n/**\r\n * Options with restrictions\r\n */\r\nif (process.env.NODE_ENV !== 'production') {\r\n strats.el = strats.propsData = function (parent, child, vm, key) {\r\n if (!vm) {\r\n warn$2(\"option \\\"\".concat(key, \"\\\" can only be used during instance \") +\r\n 'creation with the `new` keyword.');\r\n }\r\n return defaultStrat(parent, child);\r\n };\r\n}\r\n/**\r\n * Helper that recursively merges two data objects together.\r\n */\r\nfunction mergeData(to, from) {\r\n if (!from)\r\n return to;\r\n var key, toVal, fromVal;\r\n var keys = hasSymbol\r\n ? Reflect.ownKeys(from)\r\n : Object.keys(from);\r\n for (var i = 0; i < keys.length; i++) {\r\n key = keys[i];\r\n // in case the object is already observed...\r\n if (key === '__ob__')\r\n continue;\r\n toVal = to[key];\r\n fromVal = from[key];\r\n if (!hasOwn(to, key)) {\r\n set(to, key, fromVal);\r\n }\r\n else if (toVal !== fromVal &&\r\n isPlainObject(toVal) &&\r\n isPlainObject(fromVal)) {\r\n mergeData(toVal, fromVal);\r\n }\r\n }\r\n return to;\r\n}\r\n/**\r\n * Data\r\n */\r\nfunction mergeDataOrFn(parentVal, childVal, vm) {\r\n if (!vm) {\r\n // in a Vue.extend merge, both should be functions\r\n if (!childVal) {\r\n return parentVal;\r\n }\r\n if (!parentVal) {\r\n return childVal;\r\n }\r\n // when parentVal & childVal are both present,\r\n // we need to return a function that returns the\r\n // merged result of both functions... no need to\r\n // check if parentVal is a function here because\r\n // it has to be a function to pass previous merges.\r\n return function mergedDataFn() {\r\n return mergeData(isFunction(childVal) ? childVal.call(this, this) : childVal, isFunction(parentVal) ? parentVal.call(this, this) : parentVal);\r\n };\r\n }\r\n else {\r\n return function mergedInstanceDataFn() {\r\n // instance merge\r\n var instanceData = isFunction(childVal)\r\n ? childVal.call(vm, vm)\r\n : childVal;\r\n var defaultData = isFunction(parentVal)\r\n ? parentVal.call(vm, vm)\r\n : parentVal;\r\n if (instanceData) {\r\n return mergeData(instanceData, defaultData);\r\n }\r\n else {\r\n return defaultData;\r\n }\r\n };\r\n }\r\n}\r\nstrats.data = function (parentVal, childVal, vm) {\r\n if (!vm) {\r\n if (childVal && typeof childVal !== 'function') {\r\n process.env.NODE_ENV !== 'production' &&\r\n warn$2('The \"data\" option should be a function ' +\r\n 'that returns a per-instance value in component ' +\r\n 'definitions.', vm);\r\n return parentVal;\r\n }\r\n return mergeDataOrFn(parentVal, childVal);\r\n }\r\n return mergeDataOrFn(parentVal, childVal, vm);\r\n};\r\n/**\r\n * Hooks and props are merged as arrays.\r\n */\r\nfunction mergeLifecycleHook(parentVal, childVal) {\r\n var res = childVal\r\n ? parentVal\r\n ? parentVal.concat(childVal)\r\n : isArray(childVal)\r\n ? childVal\r\n : [childVal]\r\n : parentVal;\r\n return res ? dedupeHooks(res) : res;\r\n}\r\nfunction dedupeHooks(hooks) {\r\n var res = [];\r\n for (var i = 0; i < hooks.length; i++) {\r\n if (res.indexOf(hooks[i]) === -1) {\r\n res.push(hooks[i]);\r\n }\r\n }\r\n return res;\r\n}\r\nLIFECYCLE_HOOKS.forEach(function (hook) {\r\n strats[hook] = mergeLifecycleHook;\r\n});\r\n/**\r\n * Assets\r\n *\r\n * When a vm is present (instance creation), we need to do\r\n * a three-way merge between constructor options, instance\r\n * options and parent options.\r\n */\r\nfunction mergeAssets(parentVal, childVal, vm, key) {\r\n var res = Object.create(parentVal || null);\r\n if (childVal) {\r\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\r\n return extend(res, childVal);\r\n }\r\n else {\r\n return res;\r\n }\r\n}\r\nASSET_TYPES.forEach(function (type) {\r\n strats[type + 's'] = mergeAssets;\r\n});\r\n/**\r\n * Watchers.\r\n *\r\n * Watchers hashes should not overwrite one\r\n * another, so we merge them as arrays.\r\n */\r\nstrats.watch = function (parentVal, childVal, vm, key) {\r\n // work around Firefox's Object.prototype.watch...\r\n //@ts-expect-error work around\r\n if (parentVal === nativeWatch)\r\n parentVal = undefined;\r\n //@ts-expect-error work around\r\n if (childVal === nativeWatch)\r\n childVal = undefined;\r\n /* istanbul ignore if */\r\n if (!childVal)\r\n return Object.create(parentVal || null);\r\n if (process.env.NODE_ENV !== 'production') {\r\n assertObjectType(key, childVal, vm);\r\n }\r\n if (!parentVal)\r\n return childVal;\r\n var ret = {};\r\n extend(ret, parentVal);\r\n for (var key_1 in childVal) {\r\n var parent_1 = ret[key_1];\r\n var child = childVal[key_1];\r\n if (parent_1 && !isArray(parent_1)) {\r\n parent_1 = [parent_1];\r\n }\r\n ret[key_1] = parent_1 ? parent_1.concat(child) : isArray(child) ? child : [child];\r\n }\r\n return ret;\r\n};\r\n/**\r\n * Other object hashes.\r\n */\r\nstrats.props =\r\n strats.methods =\r\n strats.inject =\r\n strats.computed =\r\n function (parentVal, childVal, vm, key) {\r\n if (childVal && process.env.NODE_ENV !== 'production') {\r\n assertObjectType(key, childVal, vm);\r\n }\r\n if (!parentVal)\r\n return childVal;\r\n var ret = Object.create(null);\r\n extend(ret, parentVal);\r\n if (childVal)\r\n extend(ret, childVal);\r\n return ret;\r\n };\r\nstrats.provide = mergeDataOrFn;\r\n/**\r\n * Default strategy.\r\n */\r\nvar defaultStrat = function (parentVal, childVal) {\r\n return childVal === undefined ? parentVal : childVal;\r\n};\r\n/**\r\n * Validate component names\r\n */\r\nfunction checkComponents(options) {\r\n for (var key in options.components) {\r\n validateComponentName(key);\r\n }\r\n}\r\nfunction validateComponentName(name) {\r\n if (!new RegExp(\"^[a-zA-Z][\\\\-\\\\.0-9_\".concat(unicodeRegExp.source, \"]*$\")).test(name)) {\r\n warn$2('Invalid component name: \"' +\r\n name +\r\n '\". Component names ' +\r\n 'should conform to valid custom element name in html5 specification.');\r\n }\r\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\r\n warn$2('Do not use built-in or reserved HTML elements as component ' +\r\n 'id: ' +\r\n name);\r\n }\r\n}\r\n/**\r\n * Ensure all props option syntax are normalized into the\r\n * Object-based format.\r\n */\r\nfunction normalizeProps(options, vm) {\r\n var props = options.props;\r\n if (!props)\r\n return;\r\n var res = {};\r\n var i, val, name;\r\n if (isArray(props)) {\r\n i = props.length;\r\n while (i--) {\r\n val = props[i];\r\n if (typeof val === 'string') {\r\n name = camelize(val);\r\n res[name] = { type: null };\r\n }\r\n else if (process.env.NODE_ENV !== 'production') {\r\n warn$2('props must be strings when using array syntax.');\r\n }\r\n }\r\n }\r\n else if (isPlainObject(props)) {\r\n for (var key in props) {\r\n val = props[key];\r\n name = camelize(key);\r\n res[name] = isPlainObject(val) ? val : { type: val };\r\n }\r\n }\r\n else if (process.env.NODE_ENV !== 'production') {\r\n warn$2(\"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\r\n \"but got \".concat(toRawType(props), \".\"), vm);\r\n }\r\n options.props = res;\r\n}\r\n/**\r\n * Normalize all injections into Object-based format\r\n */\r\nfunction normalizeInject(options, vm) {\r\n var inject = options.inject;\r\n if (!inject)\r\n return;\r\n var normalized = (options.inject = {});\r\n if (isArray(inject)) {\r\n for (var i = 0; i < inject.length; i++) {\r\n normalized[inject[i]] = { from: inject[i] };\r\n }\r\n }\r\n else if (isPlainObject(inject)) {\r\n for (var key in inject) {\r\n var val = inject[key];\r\n normalized[key] = isPlainObject(val)\r\n ? extend({ from: key }, val)\r\n : { from: val };\r\n }\r\n }\r\n else if (process.env.NODE_ENV !== 'production') {\r\n warn$2(\"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\r\n \"but got \".concat(toRawType(inject), \".\"), vm);\r\n }\r\n}\r\n/**\r\n * Normalize raw function directives into object format.\r\n */\r\nfunction normalizeDirectives$1(options) {\r\n var dirs = options.directives;\r\n if (dirs) {\r\n for (var key in dirs) {\r\n var def = dirs[key];\r\n if (isFunction(def)) {\r\n dirs[key] = { bind: def, update: def };\r\n }\r\n }\r\n }\r\n}\r\nfunction assertObjectType(name, value, vm) {\r\n if (!isPlainObject(value)) {\r\n warn$2(\"Invalid value for option \\\"\".concat(name, \"\\\": expected an Object, \") +\r\n \"but got \".concat(toRawType(value), \".\"), vm);\r\n }\r\n}\r\n/**\r\n * Merge two option objects into a new one.\r\n * Core utility used in both instantiation and inheritance.\r\n */\r\nfunction mergeOptions(parent, child, vm) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n checkComponents(child);\r\n }\r\n if (isFunction(child)) {\r\n // @ts-expect-error\r\n child = child.options;\r\n }\r\n normalizeProps(child, vm);\r\n normalizeInject(child, vm);\r\n normalizeDirectives$1(child);\r\n // Apply extends and mixins on the child options,\r\n // but only if it is a raw options object that isn't\r\n // the result of another mergeOptions call.\r\n // Only merged options has the _base property.\r\n if (!child._base) {\r\n if (child.extends) {\r\n parent = mergeOptions(parent, child.extends, vm);\r\n }\r\n if (child.mixins) {\r\n for (var i = 0, l = child.mixins.length; i < l; i++) {\r\n parent = mergeOptions(parent, child.mixins[i], vm);\r\n }\r\n }\r\n }\r\n var options = {};\r\n var key;\r\n for (key in parent) {\r\n mergeField(key);\r\n }\r\n for (key in child) {\r\n if (!hasOwn(parent, key)) {\r\n mergeField(key);\r\n }\r\n }\r\n function mergeField(key) {\r\n var strat = strats[key] || defaultStrat;\r\n options[key] = strat(parent[key], child[key], vm, key);\r\n }\r\n return options;\r\n}\r\n/**\r\n * Resolve an asset.\r\n * This function is used because child instances need access\r\n * to assets defined in its ancestor chain.\r\n */\r\nfunction resolveAsset(options, type, id, warnMissing) {\r\n /* istanbul ignore if */\r\n if (typeof id !== 'string') {\r\n return;\r\n }\r\n var assets = options[type];\r\n // check local registration variations first\r\n if (hasOwn(assets, id))\r\n return assets[id];\r\n var camelizedId = camelize(id);\r\n if (hasOwn(assets, camelizedId))\r\n return assets[camelizedId];\r\n var PascalCaseId = capitalize(camelizedId);\r\n if (hasOwn(assets, PascalCaseId))\r\n return assets[PascalCaseId];\r\n // fallback to prototype chain\r\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\r\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\r\n warn$2('Failed to resolve ' + type.slice(0, -1) + ': ' + id);\r\n }\r\n return res;\r\n}\n\nfunction validateProp(key, propOptions, propsData, vm) {\r\n var prop = propOptions[key];\r\n var absent = !hasOwn(propsData, key);\r\n var value = propsData[key];\r\n // boolean casting\r\n var booleanIndex = getTypeIndex(Boolean, prop.type);\r\n if (booleanIndex > -1) {\r\n if (absent && !hasOwn(prop, 'default')) {\r\n value = false;\r\n }\r\n else if (value === '' || value === hyphenate(key)) {\r\n // only cast empty string / same name to boolean if\r\n // boolean has higher priority\r\n var stringIndex = getTypeIndex(String, prop.type);\r\n if (stringIndex < 0 || booleanIndex < stringIndex) {\r\n value = true;\r\n }\r\n }\r\n }\r\n // check default value\r\n if (value === undefined) {\r\n value = getPropDefaultValue(vm, prop, key);\r\n // since the default value is a fresh copy,\r\n // make sure to observe it.\r\n var prevShouldObserve = shouldObserve;\r\n toggleObserving(true);\r\n observe(value);\r\n toggleObserving(prevShouldObserve);\r\n }\r\n if (process.env.NODE_ENV !== 'production') {\r\n assertProp(prop, key, value, vm, absent);\r\n }\r\n return value;\r\n}\r\n/**\r\n * Get the default value of a prop.\r\n */\r\nfunction getPropDefaultValue(vm, prop, key) {\r\n // no default, return undefined\r\n if (!hasOwn(prop, 'default')) {\r\n return undefined;\r\n }\r\n var def = prop.default;\r\n // warn against non-factory defaults for Object & Array\r\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\r\n warn$2('Invalid default value for prop \"' +\r\n key +\r\n '\": ' +\r\n 'Props with type Object/Array must use a factory function ' +\r\n 'to return the default value.', vm);\r\n }\r\n // the raw prop value was also undefined from previous render,\r\n // return previous default value to avoid unnecessary watcher trigger\r\n if (vm &&\r\n vm.$options.propsData &&\r\n vm.$options.propsData[key] === undefined &&\r\n vm._props[key] !== undefined) {\r\n return vm._props[key];\r\n }\r\n // call factory function for non-Function types\r\n // a value is Function if its prototype is function even across different execution context\r\n return isFunction(def) && getType(prop.type) !== 'Function'\r\n ? def.call(vm)\r\n : def;\r\n}\r\n/**\r\n * Assert whether a prop is valid.\r\n */\r\nfunction assertProp(prop, name, value, vm, absent) {\r\n if (prop.required && absent) {\r\n warn$2('Missing required prop: \"' + name + '\"', vm);\r\n return;\r\n }\r\n if (value == null && !prop.required) {\r\n return;\r\n }\r\n var type = prop.type;\r\n var valid = !type || type === true;\r\n var expectedTypes = [];\r\n if (type) {\r\n if (!isArray(type)) {\r\n type = [type];\r\n }\r\n for (var i = 0; i < type.length && !valid; i++) {\r\n var assertedType = assertType(value, type[i], vm);\r\n expectedTypes.push(assertedType.expectedType || '');\r\n valid = assertedType.valid;\r\n }\r\n }\r\n var haveExpectedTypes = expectedTypes.some(function (t) { return t; });\r\n if (!valid && haveExpectedTypes) {\r\n warn$2(getInvalidTypeMessage(name, value, expectedTypes), vm);\r\n return;\r\n }\r\n var validator = prop.validator;\r\n if (validator) {\r\n if (!validator(value)) {\r\n warn$2('Invalid prop: custom validator check failed for prop \"' + name + '\".', vm);\r\n }\r\n }\r\n}\r\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol|BigInt)$/;\r\nfunction assertType(value, type, vm) {\r\n var valid;\r\n var expectedType = getType(type);\r\n if (simpleCheckRE.test(expectedType)) {\r\n var t = typeof value;\r\n valid = t === expectedType.toLowerCase();\r\n // for primitive wrapper objects\r\n if (!valid && t === 'object') {\r\n valid = value instanceof type;\r\n }\r\n }\r\n else if (expectedType === 'Object') {\r\n valid = isPlainObject(value);\r\n }\r\n else if (expectedType === 'Array') {\r\n valid = isArray(value);\r\n }\r\n else {\r\n try {\r\n valid = value instanceof type;\r\n }\r\n catch (e) {\r\n warn$2('Invalid prop type: \"' + String(type) + '\" is not a constructor', vm);\r\n valid = false;\r\n }\r\n }\r\n return {\r\n valid: valid,\r\n expectedType: expectedType\r\n };\r\n}\r\nvar functionTypeCheckRE = /^\\s*function (\\w+)/;\r\n/**\r\n * Use function string name to check built-in types,\r\n * because a simple equality check will fail when running\r\n * across different vms / iframes.\r\n */\r\nfunction getType(fn) {\r\n var match = fn && fn.toString().match(functionTypeCheckRE);\r\n return match ? match[1] : '';\r\n}\r\nfunction isSameType(a, b) {\r\n return getType(a) === getType(b);\r\n}\r\nfunction getTypeIndex(type, expectedTypes) {\r\n if (!isArray(expectedTypes)) {\r\n return isSameType(expectedTypes, type) ? 0 : -1;\r\n }\r\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\r\n if (isSameType(expectedTypes[i], type)) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\nfunction getInvalidTypeMessage(name, value, expectedTypes) {\r\n var message = \"Invalid prop: type check failed for prop \\\"\".concat(name, \"\\\".\") +\r\n \" Expected \".concat(expectedTypes.map(capitalize).join(', '));\r\n var expectedType = expectedTypes[0];\r\n var receivedType = toRawType(value);\r\n // check if we need to specify expected value\r\n if (expectedTypes.length === 1 &&\r\n isExplicable(expectedType) &&\r\n isExplicable(typeof value) &&\r\n !isBoolean(expectedType, receivedType)) {\r\n message += \" with value \".concat(styleValue(value, expectedType));\r\n }\r\n message += \", got \".concat(receivedType, \" \");\r\n // check if we need to specify received value\r\n if (isExplicable(receivedType)) {\r\n message += \"with value \".concat(styleValue(value, receivedType), \".\");\r\n }\r\n return message;\r\n}\r\nfunction styleValue(value, type) {\r\n if (type === 'String') {\r\n return \"\\\"\".concat(value, \"\\\"\");\r\n }\r\n else if (type === 'Number') {\r\n return \"\".concat(Number(value));\r\n }\r\n else {\r\n return \"\".concat(value);\r\n }\r\n}\r\nvar EXPLICABLE_TYPES = ['string', 'number', 'boolean'];\r\nfunction isExplicable(value) {\r\n return EXPLICABLE_TYPES.some(function (elem) { return value.toLowerCase() === elem; });\r\n}\r\nfunction isBoolean() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; });\r\n}\n\nfunction Vue(options) {\r\n if (process.env.NODE_ENV !== 'production' && !(this instanceof Vue)) {\r\n warn$2('Vue is a constructor and should be called with the `new` keyword');\r\n }\r\n this._init(options);\r\n}\r\n//@ts-expect-error Vue has function type\r\ninitMixin$1(Vue);\r\n//@ts-expect-error Vue has function type\r\nstateMixin(Vue);\r\n//@ts-expect-error Vue has function type\r\neventsMixin(Vue);\r\n//@ts-expect-error Vue has function type\r\nlifecycleMixin(Vue);\r\n//@ts-expect-error Vue has function type\r\nrenderMixin(Vue);\n\nfunction initUse(Vue) {\r\n Vue.use = function (plugin) {\r\n var installedPlugins = this._installedPlugins || (this._installedPlugins = []);\r\n if (installedPlugins.indexOf(plugin) > -1) {\r\n return this;\r\n }\r\n // additional parameters\r\n var args = toArray(arguments, 1);\r\n args.unshift(this);\r\n if (isFunction(plugin.install)) {\r\n plugin.install.apply(plugin, args);\r\n }\r\n else if (isFunction(plugin)) {\r\n plugin.apply(null, args);\r\n }\r\n installedPlugins.push(plugin);\r\n return this;\r\n };\r\n}\n\nfunction initMixin(Vue) {\r\n Vue.mixin = function (mixin) {\r\n this.options = mergeOptions(this.options, mixin);\r\n return this;\r\n };\r\n}\n\nfunction initExtend(Vue) {\r\n /**\r\n * Each instance constructor, including Vue, has a unique\r\n * cid. This enables us to create wrapped \"child\r\n * constructors\" for prototypal inheritance and cache them.\r\n */\r\n Vue.cid = 0;\r\n var cid = 1;\r\n /**\r\n * Class inheritance\r\n */\r\n Vue.extend = function (extendOptions) {\r\n extendOptions = extendOptions || {};\r\n var Super = this;\r\n var SuperId = Super.cid;\r\n var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\r\n if (cachedCtors[SuperId]) {\r\n return cachedCtors[SuperId];\r\n }\r\n var name = extendOptions.name || Super.options.name;\r\n if (process.env.NODE_ENV !== 'production' && name) {\r\n validateComponentName(name);\r\n }\r\n var Sub = function VueComponent(options) {\r\n this._init(options);\r\n };\r\n Sub.prototype = Object.create(Super.prototype);\r\n Sub.prototype.constructor = Sub;\r\n Sub.cid = cid++;\r\n Sub.options = mergeOptions(Super.options, extendOptions);\r\n Sub['super'] = Super;\r\n // For props and computed properties, we define the proxy getters on\r\n // the Vue instances at extension time, on the extended prototype. This\r\n // avoids Object.defineProperty calls for each instance created.\r\n if (Sub.options.props) {\r\n initProps(Sub);\r\n }\r\n if (Sub.options.computed) {\r\n initComputed(Sub);\r\n }\r\n // allow further extension/mixin/plugin usage\r\n Sub.extend = Super.extend;\r\n Sub.mixin = Super.mixin;\r\n Sub.use = Super.use;\r\n // create asset registers, so extended classes\r\n // can have their private assets too.\r\n ASSET_TYPES.forEach(function (type) {\r\n Sub[type] = Super[type];\r\n });\r\n // enable recursive self-lookup\r\n if (name) {\r\n Sub.options.components[name] = Sub;\r\n }\r\n // keep a reference to the super options at extension time.\r\n // later at instantiation we can check if Super's options have\r\n // been updated.\r\n Sub.superOptions = Super.options;\r\n Sub.extendOptions = extendOptions;\r\n Sub.sealedOptions = extend({}, Sub.options);\r\n // cache constructor\r\n cachedCtors[SuperId] = Sub;\r\n return Sub;\r\n };\r\n}\r\nfunction initProps(Comp) {\r\n var props = Comp.options.props;\r\n for (var key in props) {\r\n proxy(Comp.prototype, \"_props\", key);\r\n }\r\n}\r\nfunction initComputed(Comp) {\r\n var computed = Comp.options.computed;\r\n for (var key in computed) {\r\n defineComputed(Comp.prototype, key, computed[key]);\r\n }\r\n}\n\nfunction initAssetRegisters(Vue) {\r\n /**\r\n * Create asset registration methods.\r\n */\r\n ASSET_TYPES.forEach(function (type) {\r\n // @ts-expect-error function is not exact same type\r\n Vue[type] = function (id, definition) {\r\n if (!definition) {\r\n return this.options[type + 's'][id];\r\n }\r\n else {\r\n /* istanbul ignore if */\r\n if (process.env.NODE_ENV !== 'production' && type === 'component') {\r\n validateComponentName(id);\r\n }\r\n if (type === 'component' && isPlainObject(definition)) {\r\n // @ts-expect-error\r\n definition.name = definition.name || id;\r\n definition = this.options._base.extend(definition);\r\n }\r\n if (type === 'directive' && isFunction(definition)) {\r\n definition = { bind: definition, update: definition };\r\n }\r\n this.options[type + 's'][id] = definition;\r\n return definition;\r\n }\r\n };\r\n });\r\n}\n\nfunction getComponentName(opts) {\r\n return opts && (opts.Ctor.options.name || opts.tag);\r\n}\r\nfunction matches(pattern, name) {\r\n if (isArray(pattern)) {\r\n return pattern.indexOf(name) > -1;\r\n }\r\n else if (typeof pattern === 'string') {\r\n return pattern.split(',').indexOf(name) > -1;\r\n }\r\n else if (isRegExp(pattern)) {\r\n return pattern.test(name);\r\n }\r\n /* istanbul ignore next */\r\n return false;\r\n}\r\nfunction pruneCache(keepAliveInstance, filter) {\r\n var cache = keepAliveInstance.cache, keys = keepAliveInstance.keys, _vnode = keepAliveInstance._vnode;\r\n for (var key in cache) {\r\n var entry = cache[key];\r\n if (entry) {\r\n var name_1 = entry.name;\r\n if (name_1 && !filter(name_1)) {\r\n pruneCacheEntry(cache, key, keys, _vnode);\r\n }\r\n }\r\n }\r\n}\r\nfunction pruneCacheEntry(cache, key, keys, current) {\r\n var entry = cache[key];\r\n if (entry && (!current || entry.tag !== current.tag)) {\r\n // @ts-expect-error can be undefined\r\n entry.componentInstance.$destroy();\r\n }\r\n cache[key] = null;\r\n remove$2(keys, key);\r\n}\r\nvar patternTypes = [String, RegExp, Array];\r\n// TODO defineComponent\r\nvar KeepAlive = {\r\n name: 'keep-alive',\r\n abstract: true,\r\n props: {\r\n include: patternTypes,\r\n exclude: patternTypes,\r\n max: [String, Number]\r\n },\r\n methods: {\r\n cacheVNode: function () {\r\n var _a = this, cache = _a.cache, keys = _a.keys, vnodeToCache = _a.vnodeToCache, keyToCache = _a.keyToCache;\r\n if (vnodeToCache) {\r\n var tag = vnodeToCache.tag, componentInstance = vnodeToCache.componentInstance, componentOptions = vnodeToCache.componentOptions;\r\n cache[keyToCache] = {\r\n name: getComponentName(componentOptions),\r\n tag: tag,\r\n componentInstance: componentInstance\r\n };\r\n keys.push(keyToCache);\r\n // prune oldest entry\r\n if (this.max && keys.length > parseInt(this.max)) {\r\n pruneCacheEntry(cache, keys[0], keys, this._vnode);\r\n }\r\n this.vnodeToCache = null;\r\n }\r\n }\r\n },\r\n created: function () {\r\n this.cache = Object.create(null);\r\n this.keys = [];\r\n },\r\n destroyed: function () {\r\n for (var key in this.cache) {\r\n pruneCacheEntry(this.cache, key, this.keys);\r\n }\r\n },\r\n mounted: function () {\r\n var _this = this;\r\n this.cacheVNode();\r\n this.$watch('include', function (val) {\r\n pruneCache(_this, function (name) { return matches(val, name); });\r\n });\r\n this.$watch('exclude', function (val) {\r\n pruneCache(_this, function (name) { return !matches(val, name); });\r\n });\r\n },\r\n updated: function () {\r\n this.cacheVNode();\r\n },\r\n render: function () {\r\n var slot = this.$slots.default;\r\n var vnode = getFirstComponentChild(slot);\r\n var componentOptions = vnode && vnode.componentOptions;\r\n if (componentOptions) {\r\n // check pattern\r\n var name_2 = getComponentName(componentOptions);\r\n var _a = this, include = _a.include, exclude = _a.exclude;\r\n if (\r\n // not included\r\n (include && (!name_2 || !matches(include, name_2))) ||\r\n // excluded\r\n (exclude && name_2 && matches(exclude, name_2))) {\r\n return vnode;\r\n }\r\n var _b = this, cache = _b.cache, keys = _b.keys;\r\n var key = vnode.key == null\r\n ? // same constructor may get registered as different local components\r\n // so cid alone is not enough (#3269)\r\n componentOptions.Ctor.cid +\r\n (componentOptions.tag ? \"::\".concat(componentOptions.tag) : '')\r\n : vnode.key;\r\n if (cache[key]) {\r\n vnode.componentInstance = cache[key].componentInstance;\r\n // make current key freshest\r\n remove$2(keys, key);\r\n keys.push(key);\r\n }\r\n else {\r\n // delay setting the cache until update\r\n this.vnodeToCache = vnode;\r\n this.keyToCache = key;\r\n }\r\n // @ts-expect-error can vnode.data can be undefined\r\n vnode.data.keepAlive = true;\r\n }\r\n return vnode || (slot && slot[0]);\r\n }\r\n};\n\nvar builtInComponents = {\r\n KeepAlive: KeepAlive\r\n};\n\nfunction initGlobalAPI(Vue) {\r\n // config\r\n var configDef = {};\r\n configDef.get = function () { return config; };\r\n if (process.env.NODE_ENV !== 'production') {\r\n configDef.set = function () {\r\n warn$2('Do not replace the Vue.config object, set individual fields instead.');\r\n };\r\n }\r\n Object.defineProperty(Vue, 'config', configDef);\r\n // exposed util methods.\r\n // NOTE: these are not considered part of the public API - avoid relying on\r\n // them unless you are aware of the risk.\r\n Vue.util = {\r\n warn: warn$2,\r\n extend: extend,\r\n mergeOptions: mergeOptions,\r\n defineReactive: defineReactive\r\n };\r\n Vue.set = set;\r\n Vue.delete = del;\r\n Vue.nextTick = nextTick;\r\n // 2.6 explicit observable API\r\n Vue.observable = function (obj) {\r\n observe(obj);\r\n return obj;\r\n };\r\n Vue.options = Object.create(null);\r\n ASSET_TYPES.forEach(function (type) {\r\n Vue.options[type + 's'] = Object.create(null);\r\n });\r\n // this is used to identify the \"base\" constructor to extend all plain-object\r\n // components with in Weex's multi-instance scenarios.\r\n Vue.options._base = Vue;\r\n extend(Vue.options.components, builtInComponents);\r\n initUse(Vue);\r\n initMixin(Vue);\r\n initExtend(Vue);\r\n initAssetRegisters(Vue);\r\n}\n\ninitGlobalAPI(Vue);\r\nObject.defineProperty(Vue.prototype, '$isServer', {\r\n get: isServerRendering\r\n});\r\nObject.defineProperty(Vue.prototype, '$ssrContext', {\r\n get: function () {\r\n /* istanbul ignore next */\r\n return this.$vnode && this.$vnode.ssrContext;\r\n }\r\n});\r\n// expose FunctionalRenderContext for ssr runtime helper installation\r\nObject.defineProperty(Vue, 'FunctionalRenderContext', {\r\n value: FunctionalRenderContext\r\n});\r\nVue.version = version;\n\n// these are reserved for web because they are directly compiled away\r\n// during template compilation\r\nvar isReservedAttr = makeMap('style,class');\r\n// attributes that should be using props for binding\r\nvar acceptValue = makeMap('input,textarea,option,select,progress');\r\nvar mustUseProp = function (tag, type, attr) {\r\n return ((attr === 'value' && acceptValue(tag) && type !== 'button') ||\r\n (attr === 'selected' && tag === 'option') ||\r\n (attr === 'checked' && tag === 'input') ||\r\n (attr === 'muted' && tag === 'video'));\r\n};\r\nvar isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');\r\nvar isValidContentEditableValue = makeMap('events,caret,typing,plaintext-only');\r\nvar convertEnumeratedValue = function (key, value) {\r\n return isFalsyAttrValue(value) || value === 'false'\r\n ? 'false'\r\n : // allow arbitrary string value for contenteditable\r\n key === 'contenteditable' && isValidContentEditableValue(value)\r\n ? value\r\n : 'true';\r\n};\r\nvar isBooleanAttr = makeMap('allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +\r\n 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +\r\n 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +\r\n 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +\r\n 'required,reversed,scoped,seamless,selected,sortable,' +\r\n 'truespeed,typemustmatch,visible');\r\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\r\nvar isXlink = function (name) {\r\n return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink';\r\n};\r\nvar getXlinkProp = function (name) {\r\n return isXlink(name) ? name.slice(6, name.length) : '';\r\n};\r\nvar isFalsyAttrValue = function (val) {\r\n return val == null || val === false;\r\n};\n\nfunction genClassForVnode(vnode) {\r\n var data = vnode.data;\r\n var parentNode = vnode;\r\n var childNode = vnode;\r\n while (isDef(childNode.componentInstance)) {\r\n childNode = childNode.componentInstance._vnode;\r\n if (childNode && childNode.data) {\r\n data = mergeClassData(childNode.data, data);\r\n }\r\n }\r\n // @ts-expect-error parentNode.parent not VNodeWithData\r\n while (isDef((parentNode = parentNode.parent))) {\r\n if (parentNode && parentNode.data) {\r\n data = mergeClassData(data, parentNode.data);\r\n }\r\n }\r\n return renderClass(data.staticClass, data.class);\r\n}\r\nfunction mergeClassData(child, parent) {\r\n return {\r\n staticClass: concat(child.staticClass, parent.staticClass),\r\n class: isDef(child.class) ? [child.class, parent.class] : parent.class\r\n };\r\n}\r\nfunction renderClass(staticClass, dynamicClass) {\r\n if (isDef(staticClass) || isDef(dynamicClass)) {\r\n return concat(staticClass, stringifyClass(dynamicClass));\r\n }\r\n /* istanbul ignore next */\r\n return '';\r\n}\r\nfunction concat(a, b) {\r\n return a ? (b ? a + ' ' + b : a) : b || '';\r\n}\r\nfunction stringifyClass(value) {\r\n if (Array.isArray(value)) {\r\n return stringifyArray(value);\r\n }\r\n if (isObject(value)) {\r\n return stringifyObject(value);\r\n }\r\n if (typeof value === 'string') {\r\n return value;\r\n }\r\n /* istanbul ignore next */\r\n return '';\r\n}\r\nfunction stringifyArray(value) {\r\n var res = '';\r\n var stringified;\r\n for (var i = 0, l = value.length; i < l; i++) {\r\n if (isDef((stringified = stringifyClass(value[i]))) && stringified !== '') {\r\n if (res)\r\n res += ' ';\r\n res += stringified;\r\n }\r\n }\r\n return res;\r\n}\r\nfunction stringifyObject(value) {\r\n var res = '';\r\n for (var key in value) {\r\n if (value[key]) {\r\n if (res)\r\n res += ' ';\r\n res += key;\r\n }\r\n }\r\n return res;\r\n}\n\nvar namespaceMap = {\r\n svg: 'http://www.w3.org/2000/svg',\r\n math: 'http://www.w3.org/1998/Math/MathML'\r\n};\r\nvar isHTMLTag = makeMap('html,body,base,head,link,meta,style,title,' +\r\n 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +\r\n 'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +\r\n 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +\r\n 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +\r\n 'embed,object,param,source,canvas,script,noscript,del,ins,' +\r\n 'caption,col,colgroup,table,thead,tbody,td,th,tr,' +\r\n 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +\r\n 'output,progress,select,textarea,' +\r\n 'details,dialog,menu,menuitem,summary,' +\r\n 'content,element,shadow,template,blockquote,iframe,tfoot');\r\n// this map is intentionally selective, only covering SVG elements that may\r\n// contain child elements.\r\nvar isSVG = makeMap('svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +\r\n 'foreignobject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +\r\n 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view', true);\r\nvar isPreTag = function (tag) { return tag === 'pre'; };\r\nvar isReservedTag = function (tag) {\r\n return isHTMLTag(tag) || isSVG(tag);\r\n};\r\nfunction getTagNamespace(tag) {\r\n if (isSVG(tag)) {\r\n return 'svg';\r\n }\r\n // basic support for MathML\r\n // note it doesn't support other MathML elements being component roots\r\n if (tag === 'math') {\r\n return 'math';\r\n }\r\n}\r\nvar unknownElementCache = Object.create(null);\r\nfunction isUnknownElement(tag) {\r\n /* istanbul ignore if */\r\n if (!inBrowser) {\r\n return true;\r\n }\r\n if (isReservedTag(tag)) {\r\n return false;\r\n }\r\n tag = tag.toLowerCase();\r\n /* istanbul ignore if */\r\n if (unknownElementCache[tag] != null) {\r\n return unknownElementCache[tag];\r\n }\r\n var el = document.createElement(tag);\r\n if (tag.indexOf('-') > -1) {\r\n // http://stackoverflow.com/a/28210364/1070244\r\n return (unknownElementCache[tag] =\r\n el.constructor === window.HTMLUnknownElement ||\r\n el.constructor === window.HTMLElement);\r\n }\r\n else {\r\n return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()));\r\n }\r\n}\r\nvar isTextInputType = makeMap('text,number,password,search,email,tel,url');\n\n/**\r\n * Query an element selector if it's not an element already.\r\n */\r\nfunction query(el) {\r\n if (typeof el === 'string') {\r\n var selected = document.querySelector(el);\r\n if (!selected) {\r\n process.env.NODE_ENV !== 'production' && warn$2('Cannot find element: ' + el);\r\n return document.createElement('div');\r\n }\r\n return selected;\r\n }\r\n else {\r\n return el;\r\n }\r\n}\n\nfunction createElement(tagName, vnode) {\r\n var elm = document.createElement(tagName);\r\n if (tagName !== 'select') {\r\n return elm;\r\n }\r\n // false or null will remove the attribute but undefined will not\r\n if (vnode.data &&\r\n vnode.data.attrs &&\r\n vnode.data.attrs.multiple !== undefined) {\r\n elm.setAttribute('multiple', 'multiple');\r\n }\r\n return elm;\r\n}\r\nfunction createElementNS(namespace, tagName) {\r\n return document.createElementNS(namespaceMap[namespace], tagName);\r\n}\r\nfunction createTextNode(text) {\r\n return document.createTextNode(text);\r\n}\r\nfunction createComment(text) {\r\n return document.createComment(text);\r\n}\r\nfunction insertBefore(parentNode, newNode, referenceNode) {\r\n parentNode.insertBefore(newNode, referenceNode);\r\n}\r\nfunction removeChild(node, child) {\r\n node.removeChild(child);\r\n}\r\nfunction appendChild(node, child) {\r\n node.appendChild(child);\r\n}\r\nfunction parentNode(node) {\r\n return node.parentNode;\r\n}\r\nfunction nextSibling(node) {\r\n return node.nextSibling;\r\n}\r\nfunction tagName(node) {\r\n return node.tagName;\r\n}\r\nfunction setTextContent(node, text) {\r\n node.textContent = text;\r\n}\r\nfunction setStyleScope(node, scopeId) {\r\n node.setAttribute(scopeId, '');\r\n}\n\nvar nodeOps = /*#__PURE__*/Object.freeze({\n __proto__: null,\n createElement: createElement,\n createElementNS: createElementNS,\n createTextNode: createTextNode,\n createComment: createComment,\n insertBefore: insertBefore,\n removeChild: removeChild,\n appendChild: appendChild,\n parentNode: parentNode,\n nextSibling: nextSibling,\n tagName: tagName,\n setTextContent: setTextContent,\n setStyleScope: setStyleScope\n});\n\nvar ref = {\r\n create: function (_, vnode) {\r\n registerRef(vnode);\r\n },\r\n update: function (oldVnode, vnode) {\r\n if (oldVnode.data.ref !== vnode.data.ref) {\r\n registerRef(oldVnode, true);\r\n registerRef(vnode);\r\n }\r\n },\r\n destroy: function (vnode) {\r\n registerRef(vnode, true);\r\n }\r\n};\r\nfunction registerRef(vnode, isRemoval) {\r\n var ref = vnode.data.ref;\r\n if (!isDef(ref))\r\n return;\r\n var vm = vnode.context;\r\n var refValue = vnode.componentInstance || vnode.elm;\r\n var value = isRemoval ? null : refValue;\r\n var $refsValue = isRemoval ? undefined : refValue;\r\n if (isFunction(ref)) {\r\n invokeWithErrorHandling(ref, vm, [value], vm, \"template ref function\");\r\n return;\r\n }\r\n var isFor = vnode.data.refInFor;\r\n var _isString = typeof ref === 'string' || typeof ref === 'number';\r\n var _isRef = isRef(ref);\r\n var refs = vm.$refs;\r\n if (_isString || _isRef) {\r\n if (isFor) {\r\n var existing = _isString ? refs[ref] : ref.value;\r\n if (isRemoval) {\r\n isArray(existing) && remove$2(existing, refValue);\r\n }\r\n else {\r\n if (!isArray(existing)) {\r\n if (_isString) {\r\n refs[ref] = [refValue];\r\n setSetupRef(vm, ref, refs[ref]);\r\n }\r\n else {\r\n ref.value = [refValue];\r\n }\r\n }\r\n else if (!existing.includes(refValue)) {\r\n existing.push(refValue);\r\n }\r\n }\r\n }\r\n else if (_isString) {\r\n if (isRemoval && refs[ref] !== refValue) {\r\n return;\r\n }\r\n refs[ref] = $refsValue;\r\n setSetupRef(vm, ref, value);\r\n }\r\n else if (_isRef) {\r\n if (isRemoval && ref.value !== refValue) {\r\n return;\r\n }\r\n ref.value = value;\r\n }\r\n else if (process.env.NODE_ENV !== 'production') {\r\n warn$2(\"Invalid template ref type: \".concat(typeof ref));\r\n }\r\n }\r\n}\r\nfunction setSetupRef(_a, key, val) {\r\n var _setupState = _a._setupState;\r\n if (_setupState && hasOwn(_setupState, key)) {\r\n if (isRef(_setupState[key])) {\r\n _setupState[key].value = val;\r\n }\r\n else {\r\n _setupState[key] = val;\r\n }\r\n }\r\n}\n\n/**\r\n * Virtual DOM patching algorithm based on Snabbdom by\r\n * Simon Friis Vindum (@paldepind)\r\n * Licensed under the MIT License\r\n * https://github.com/paldepind/snabbdom/blob/master/LICENSE\r\n *\r\n * modified by Evan You (@yyx990803)\r\n *\r\n * Not type-checking this because this file is perf-critical and the cost\r\n * of making flow understand it is not worth it.\r\n */\r\nvar emptyNode = new VNode('', {}, []);\r\nvar hooks = ['create', 'activate', 'update', 'remove', 'destroy'];\r\nfunction sameVnode(a, b) {\r\n return (a.key === b.key &&\r\n a.asyncFactory === b.asyncFactory &&\r\n ((a.tag === b.tag &&\r\n a.isComment === b.isComment &&\r\n isDef(a.data) === isDef(b.data) &&\r\n sameInputType(a, b)) ||\r\n (isTrue(a.isAsyncPlaceholder) && isUndef(b.asyncFactory.error))));\r\n}\r\nfunction sameInputType(a, b) {\r\n if (a.tag !== 'input')\r\n return true;\r\n var i;\r\n var typeA = isDef((i = a.data)) && isDef((i = i.attrs)) && i.type;\r\n var typeB = isDef((i = b.data)) && isDef((i = i.attrs)) && i.type;\r\n return typeA === typeB || (isTextInputType(typeA) && isTextInputType(typeB));\r\n}\r\nfunction createKeyToOldIdx(children, beginIdx, endIdx) {\r\n var i, key;\r\n var map = {};\r\n for (i = beginIdx; i <= endIdx; ++i) {\r\n key = children[i].key;\r\n if (isDef(key))\r\n map[key] = i;\r\n }\r\n return map;\r\n}\r\nfunction createPatchFunction(backend) {\r\n var i, j;\r\n var cbs = {};\r\n var modules = backend.modules, nodeOps = backend.nodeOps;\r\n for (i = 0; i < hooks.length; ++i) {\r\n cbs[hooks[i]] = [];\r\n for (j = 0; j < modules.length; ++j) {\r\n if (isDef(modules[j][hooks[i]])) {\r\n cbs[hooks[i]].push(modules[j][hooks[i]]);\r\n }\r\n }\r\n }\r\n function emptyNodeAt(elm) {\r\n return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm);\r\n }\r\n function createRmCb(childElm, listeners) {\r\n function remove() {\r\n if (--remove.listeners === 0) {\r\n removeNode(childElm);\r\n }\r\n }\r\n remove.listeners = listeners;\r\n return remove;\r\n }\r\n function removeNode(el) {\r\n var parent = nodeOps.parentNode(el);\r\n // element may have already been removed due to v-html / v-text\r\n if (isDef(parent)) {\r\n nodeOps.removeChild(parent, el);\r\n }\r\n }\r\n function isUnknownElement(vnode, inVPre) {\r\n return (!inVPre &&\r\n !vnode.ns &&\r\n !(config.ignoredElements.length &&\r\n config.ignoredElements.some(function (ignore) {\r\n return isRegExp(ignore)\r\n ? ignore.test(vnode.tag)\r\n : ignore === vnode.tag;\r\n })) &&\r\n config.isUnknownElement(vnode.tag));\r\n }\r\n var creatingElmInVPre = 0;\r\n function createElm(vnode, insertedVnodeQueue, parentElm, refElm, nested, ownerArray, index) {\r\n if (isDef(vnode.elm) && isDef(ownerArray)) {\r\n // This vnode was used in a previous render!\r\n // now it's used as a new node, overwriting its elm would cause\r\n // potential patch errors down the road when it's used as an insertion\r\n // reference node. Instead, we clone the node on-demand before creating\r\n // associated DOM element for it.\r\n vnode = ownerArray[index] = cloneVNode(vnode);\r\n }\r\n vnode.isRootInsert = !nested; // for transition enter check\r\n if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {\r\n return;\r\n }\r\n var data = vnode.data;\r\n var children = vnode.children;\r\n var tag = vnode.tag;\r\n if (isDef(tag)) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (data && data.pre) {\r\n creatingElmInVPre++;\r\n }\r\n if (isUnknownElement(vnode, creatingElmInVPre)) {\r\n warn$2('Unknown custom element: <' +\r\n tag +\r\n '> - did you ' +\r\n 'register the component correctly? For recursive components, ' +\r\n 'make sure to provide the \"name\" option.', vnode.context);\r\n }\r\n }\r\n vnode.elm = vnode.ns\r\n ? nodeOps.createElementNS(vnode.ns, tag)\r\n : nodeOps.createElement(tag, vnode);\r\n setScope(vnode);\r\n createChildren(vnode, children, insertedVnodeQueue);\r\n if (isDef(data)) {\r\n invokeCreateHooks(vnode, insertedVnodeQueue);\r\n }\r\n insert(parentElm, vnode.elm, refElm);\r\n if (process.env.NODE_ENV !== 'production' && data && data.pre) {\r\n creatingElmInVPre--;\r\n }\r\n }\r\n else if (isTrue(vnode.isComment)) {\r\n vnode.elm = nodeOps.createComment(vnode.text);\r\n insert(parentElm, vnode.elm, refElm);\r\n }\r\n else {\r\n vnode.elm = nodeOps.createTextNode(vnode.text);\r\n insert(parentElm, vnode.elm, refElm);\r\n }\r\n }\r\n function createComponent(vnode, insertedVnodeQueue, parentElm, refElm) {\r\n var i = vnode.data;\r\n if (isDef(i)) {\r\n var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;\r\n if (isDef((i = i.hook)) && isDef((i = i.init))) {\r\n i(vnode, false /* hydrating */);\r\n }\r\n // after calling the init hook, if the vnode is a child component\r\n // it should've created a child instance and mounted it. the child\r\n // component also has set the placeholder vnode's elm.\r\n // in that case we can just return the element and be done.\r\n if (isDef(vnode.componentInstance)) {\r\n initComponent(vnode, insertedVnodeQueue);\r\n insert(parentElm, vnode.elm, refElm);\r\n if (isTrue(isReactivated)) {\r\n reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);\r\n }\r\n return true;\r\n }\r\n }\r\n }\r\n function initComponent(vnode, insertedVnodeQueue) {\r\n if (isDef(vnode.data.pendingInsert)) {\r\n insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);\r\n vnode.data.pendingInsert = null;\r\n }\r\n vnode.elm = vnode.componentInstance.$el;\r\n if (isPatchable(vnode)) {\r\n invokeCreateHooks(vnode, insertedVnodeQueue);\r\n setScope(vnode);\r\n }\r\n else {\r\n // empty component root.\r\n // skip all element-related modules except for ref (#3455)\r\n registerRef(vnode);\r\n // make sure to invoke the insert hook\r\n insertedVnodeQueue.push(vnode);\r\n }\r\n }\r\n function reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm) {\r\n var i;\r\n // hack for #4339: a reactivated component with inner transition\r\n // does not trigger because the inner node's created hooks are not called\r\n // again. It's not ideal to involve module-specific logic in here but\r\n // there doesn't seem to be a better way to do it.\r\n var innerNode = vnode;\r\n while (innerNode.componentInstance) {\r\n innerNode = innerNode.componentInstance._vnode;\r\n if (isDef((i = innerNode.data)) && isDef((i = i.transition))) {\r\n for (i = 0; i < cbs.activate.length; ++i) {\r\n cbs.activate[i](emptyNode, innerNode);\r\n }\r\n insertedVnodeQueue.push(innerNode);\r\n break;\r\n }\r\n }\r\n // unlike a newly created component,\r\n // a reactivated keep-alive component doesn't insert itself\r\n insert(parentElm, vnode.elm, refElm);\r\n }\r\n function insert(parent, elm, ref) {\r\n if (isDef(parent)) {\r\n if (isDef(ref)) {\r\n if (nodeOps.parentNode(ref) === parent) {\r\n nodeOps.insertBefore(parent, elm, ref);\r\n }\r\n }\r\n else {\r\n nodeOps.appendChild(parent, elm);\r\n }\r\n }\r\n }\r\n function createChildren(vnode, children, insertedVnodeQueue) {\r\n if (isArray(children)) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n checkDuplicateKeys(children);\r\n }\r\n for (var i_1 = 0; i_1 < children.length; ++i_1) {\r\n createElm(children[i_1], insertedVnodeQueue, vnode.elm, null, true, children, i_1);\r\n }\r\n }\r\n else if (isPrimitive(vnode.text)) {\r\n nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));\r\n }\r\n }\r\n function isPatchable(vnode) {\r\n while (vnode.componentInstance) {\r\n vnode = vnode.componentInstance._vnode;\r\n }\r\n return isDef(vnode.tag);\r\n }\r\n function invokeCreateHooks(vnode, insertedVnodeQueue) {\r\n for (var i_2 = 0; i_2 < cbs.create.length; ++i_2) {\r\n cbs.create[i_2](emptyNode, vnode);\r\n }\r\n i = vnode.data.hook; // Reuse variable\r\n if (isDef(i)) {\r\n if (isDef(i.create))\r\n i.create(emptyNode, vnode);\r\n if (isDef(i.insert))\r\n insertedVnodeQueue.push(vnode);\r\n }\r\n }\r\n // set scope id attribute for scoped CSS.\r\n // this is implemented as a special case to avoid the overhead\r\n // of going through the normal attribute patching process.\r\n function setScope(vnode) {\r\n var i;\r\n if (isDef((i = vnode.fnScopeId))) {\r\n nodeOps.setStyleScope(vnode.elm, i);\r\n }\r\n else {\r\n var ancestor = vnode;\r\n while (ancestor) {\r\n if (isDef((i = ancestor.context)) && isDef((i = i.$options._scopeId))) {\r\n nodeOps.setStyleScope(vnode.elm, i);\r\n }\r\n ancestor = ancestor.parent;\r\n }\r\n }\r\n // for slot content they should also get the scopeId from the host instance.\r\n if (isDef((i = activeInstance)) &&\r\n i !== vnode.context &&\r\n i !== vnode.fnContext &&\r\n isDef((i = i.$options._scopeId))) {\r\n nodeOps.setStyleScope(vnode.elm, i);\r\n }\r\n }\r\n function addVnodes(parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {\r\n for (; startIdx <= endIdx; ++startIdx) {\r\n createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx);\r\n }\r\n }\r\n function invokeDestroyHook(vnode) {\r\n var i, j;\r\n var data = vnode.data;\r\n if (isDef(data)) {\r\n if (isDef((i = data.hook)) && isDef((i = i.destroy)))\r\n i(vnode);\r\n for (i = 0; i < cbs.destroy.length; ++i)\r\n cbs.destroy[i](vnode);\r\n }\r\n if (isDef((i = vnode.children))) {\r\n for (j = 0; j < vnode.children.length; ++j) {\r\n invokeDestroyHook(vnode.children[j]);\r\n }\r\n }\r\n }\r\n function removeVnodes(vnodes, startIdx, endIdx) {\r\n for (; startIdx <= endIdx; ++startIdx) {\r\n var ch = vnodes[startIdx];\r\n if (isDef(ch)) {\r\n if (isDef(ch.tag)) {\r\n removeAndInvokeRemoveHook(ch);\r\n invokeDestroyHook(ch);\r\n }\r\n else {\r\n // Text node\r\n removeNode(ch.elm);\r\n }\r\n }\r\n }\r\n }\r\n function removeAndInvokeRemoveHook(vnode, rm) {\r\n if (isDef(rm) || isDef(vnode.data)) {\r\n var i_3;\r\n var listeners = cbs.remove.length + 1;\r\n if (isDef(rm)) {\r\n // we have a recursively passed down rm callback\r\n // increase the listeners count\r\n rm.listeners += listeners;\r\n }\r\n else {\r\n // directly removing\r\n rm = createRmCb(vnode.elm, listeners);\r\n }\r\n // recursively invoke hooks on child component root node\r\n if (isDef((i_3 = vnode.componentInstance)) &&\r\n isDef((i_3 = i_3._vnode)) &&\r\n isDef(i_3.data)) {\r\n removeAndInvokeRemoveHook(i_3, rm);\r\n }\r\n for (i_3 = 0; i_3 < cbs.remove.length; ++i_3) {\r\n cbs.remove[i_3](vnode, rm);\r\n }\r\n if (isDef((i_3 = vnode.data.hook)) && isDef((i_3 = i_3.remove))) {\r\n i_3(vnode, rm);\r\n }\r\n else {\r\n rm();\r\n }\r\n }\r\n else {\r\n removeNode(vnode.elm);\r\n }\r\n }\r\n function updateChildren(parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {\r\n var oldStartIdx = 0;\r\n var newStartIdx = 0;\r\n var oldEndIdx = oldCh.length - 1;\r\n var oldStartVnode = oldCh[0];\r\n var oldEndVnode = oldCh[oldEndIdx];\r\n var newEndIdx = newCh.length - 1;\r\n var newStartVnode = newCh[0];\r\n var newEndVnode = newCh[newEndIdx];\r\n var oldKeyToIdx, idxInOld, vnodeToMove, refElm;\r\n // removeOnly is a special flag used only by <transition-group>\r\n // to ensure removed elements stay in correct relative positions\r\n // during leaving transitions\r\n var canMove = !removeOnly;\r\n if (process.env.NODE_ENV !== 'production') {\r\n checkDuplicateKeys(newCh);\r\n }\r\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\r\n if (isUndef(oldStartVnode)) {\r\n oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left\r\n }\r\n else if (isUndef(oldEndVnode)) {\r\n oldEndVnode = oldCh[--oldEndIdx];\r\n }\r\n else if (sameVnode(oldStartVnode, newStartVnode)) {\r\n patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\r\n oldStartVnode = oldCh[++oldStartIdx];\r\n newStartVnode = newCh[++newStartIdx];\r\n }\r\n else if (sameVnode(oldEndVnode, newEndVnode)) {\r\n patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\r\n oldEndVnode = oldCh[--oldEndIdx];\r\n newEndVnode = newCh[--newEndIdx];\r\n }\r\n else if (sameVnode(oldStartVnode, newEndVnode)) {\r\n // Vnode moved right\r\n patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\r\n canMove &&\r\n nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));\r\n oldStartVnode = oldCh[++oldStartIdx];\r\n newEndVnode = newCh[--newEndIdx];\r\n }\r\n else if (sameVnode(oldEndVnode, newStartVnode)) {\r\n // Vnode moved left\r\n patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\r\n canMove &&\r\n nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\r\n oldEndVnode = oldCh[--oldEndIdx];\r\n newStartVnode = newCh[++newStartIdx];\r\n }\r\n else {\r\n if (isUndef(oldKeyToIdx))\r\n oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx);\r\n idxInOld = isDef(newStartVnode.key)\r\n ? oldKeyToIdx[newStartVnode.key]\r\n : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);\r\n if (isUndef(idxInOld)) {\r\n // New element\r\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\r\n }\r\n else {\r\n vnodeToMove = oldCh[idxInOld];\r\n if (sameVnode(vnodeToMove, newStartVnode)) {\r\n patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\r\n oldCh[idxInOld] = undefined;\r\n canMove &&\r\n nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);\r\n }\r\n else {\r\n // same key but different element. treat as new element\r\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\r\n }\r\n }\r\n newStartVnode = newCh[++newStartIdx];\r\n }\r\n }\r\n if (oldStartIdx > oldEndIdx) {\r\n refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;\r\n addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\r\n }\r\n else if (newStartIdx > newEndIdx) {\r\n removeVnodes(oldCh, oldStartIdx, oldEndIdx);\r\n }\r\n }\r\n function checkDuplicateKeys(children) {\r\n var seenKeys = {};\r\n for (var i_4 = 0; i_4 < children.length; i_4++) {\r\n var vnode = children[i_4];\r\n var key = vnode.key;\r\n if (isDef(key)) {\r\n if (seenKeys[key]) {\r\n warn$2(\"Duplicate keys detected: '\".concat(key, \"'. This may cause an update error.\"), vnode.context);\r\n }\r\n else {\r\n seenKeys[key] = true;\r\n }\r\n }\r\n }\r\n }\r\n function findIdxInOld(node, oldCh, start, end) {\r\n for (var i_5 = start; i_5 < end; i_5++) {\r\n var c = oldCh[i_5];\r\n if (isDef(c) && sameVnode(node, c))\r\n return i_5;\r\n }\r\n }\r\n function patchVnode(oldVnode, vnode, insertedVnodeQueue, ownerArray, index, removeOnly) {\r\n if (oldVnode === vnode) {\r\n return;\r\n }\r\n if (isDef(vnode.elm) && isDef(ownerArray)) {\r\n // clone reused vnode\r\n vnode = ownerArray[index] = cloneVNode(vnode);\r\n }\r\n var elm = (vnode.elm = oldVnode.elm);\r\n if (isTrue(oldVnode.isAsyncPlaceholder)) {\r\n if (isDef(vnode.asyncFactory.resolved)) {\r\n hydrate(oldVnode.elm, vnode, insertedVnodeQueue);\r\n }\r\n else {\r\n vnode.isAsyncPlaceholder = true;\r\n }\r\n return;\r\n }\r\n // reuse element for static trees.\r\n // note we only do this if the vnode is cloned -\r\n // if the new node is not cloned it means the render functions have been\r\n // reset by the hot-reload-api and we need to do a proper re-render.\r\n if (isTrue(vnode.isStatic) &&\r\n isTrue(oldVnode.isStatic) &&\r\n vnode.key === oldVnode.key &&\r\n (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))) {\r\n vnode.componentInstance = oldVnode.componentInstance;\r\n return;\r\n }\r\n var i;\r\n var data = vnode.data;\r\n if (isDef(data) && isDef((i = data.hook)) && isDef((i = i.prepatch))) {\r\n i(oldVnode, vnode);\r\n }\r\n var oldCh = oldVnode.children;\r\n var ch = vnode.children;\r\n if (isDef(data) && isPatchable(vnode)) {\r\n for (i = 0; i < cbs.update.length; ++i)\r\n cbs.update[i](oldVnode, vnode);\r\n if (isDef((i = data.hook)) && isDef((i = i.update)))\r\n i(oldVnode, vnode);\r\n }\r\n if (isUndef(vnode.text)) {\r\n if (isDef(oldCh) && isDef(ch)) {\r\n if (oldCh !== ch)\r\n updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly);\r\n }\r\n else if (isDef(ch)) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n checkDuplicateKeys(ch);\r\n }\r\n if (isDef(oldVnode.text))\r\n nodeOps.setTextContent(elm, '');\r\n addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\r\n }\r\n else if (isDef(oldCh)) {\r\n removeVnodes(oldCh, 0, oldCh.length - 1);\r\n }\r\n else if (isDef(oldVnode.text)) {\r\n nodeOps.setTextContent(elm, '');\r\n }\r\n }\r\n else if (oldVnode.text !== vnode.text) {\r\n nodeOps.setTextContent(elm, vnode.text);\r\n }\r\n if (isDef(data)) {\r\n if (isDef((i = data.hook)) && isDef((i = i.postpatch)))\r\n i(oldVnode, vnode);\r\n }\r\n }\r\n function invokeInsertHook(vnode, queue, initial) {\r\n // delay insert hooks for component root nodes, invoke them after the\r\n // element is really inserted\r\n if (isTrue(initial) && isDef(vnode.parent)) {\r\n vnode.parent.data.pendingInsert = queue;\r\n }\r\n else {\r\n for (var i_6 = 0; i_6 < queue.length; ++i_6) {\r\n queue[i_6].data.hook.insert(queue[i_6]);\r\n }\r\n }\r\n }\r\n var hydrationBailed = false;\r\n // list of modules that can skip create hook during hydration because they\r\n // are already rendered on the client or has no need for initialization\r\n // Note: style is excluded because it relies on initial clone for future\r\n // deep updates (#7063).\r\n var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key');\r\n // Note: this is a browser-only function so we can assume elms are DOM nodes.\r\n function hydrate(elm, vnode, insertedVnodeQueue, inVPre) {\r\n var i;\r\n var tag = vnode.tag, data = vnode.data, children = vnode.children;\r\n inVPre = inVPre || (data && data.pre);\r\n vnode.elm = elm;\r\n if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {\r\n vnode.isAsyncPlaceholder = true;\r\n return true;\r\n }\r\n // assert node match\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!assertNodeMatch(elm, vnode, inVPre)) {\r\n return false;\r\n }\r\n }\r\n if (isDef(data)) {\r\n if (isDef((i = data.hook)) && isDef((i = i.init)))\r\n i(vnode, true /* hydrating */);\r\n if (isDef((i = vnode.componentInstance))) {\r\n // child component. it should have hydrated its own tree.\r\n initComponent(vnode, insertedVnodeQueue);\r\n return true;\r\n }\r\n }\r\n if (isDef(tag)) {\r\n if (isDef(children)) {\r\n // empty element, allow client to pick up and populate children\r\n if (!elm.hasChildNodes()) {\r\n createChildren(vnode, children, insertedVnodeQueue);\r\n }\r\n else {\r\n // v-html and domProps: innerHTML\r\n if (isDef((i = data)) &&\r\n isDef((i = i.domProps)) &&\r\n isDef((i = i.innerHTML))) {\r\n if (i !== elm.innerHTML) {\r\n /* istanbul ignore if */\r\n if (process.env.NODE_ENV !== 'production' &&\r\n typeof console !== 'undefined' &&\r\n !hydrationBailed) {\r\n hydrationBailed = true;\r\n console.warn('Parent: ', elm);\r\n console.warn('server innerHTML: ', i);\r\n console.warn('client innerHTML: ', elm.innerHTML);\r\n }\r\n return false;\r\n }\r\n }\r\n else {\r\n // iterate and compare children lists\r\n var childrenMatch = true;\r\n var childNode = elm.firstChild;\r\n for (var i_7 = 0; i_7 < children.length; i_7++) {\r\n if (!childNode ||\r\n !hydrate(childNode, children[i_7], insertedVnodeQueue, inVPre)) {\r\n childrenMatch = false;\r\n break;\r\n }\r\n childNode = childNode.nextSibling;\r\n }\r\n // if childNode is not null, it means the actual childNodes list is\r\n // longer than the virtual children list.\r\n if (!childrenMatch || childNode) {\r\n /* istanbul ignore if */\r\n if (process.env.NODE_ENV !== 'production' &&\r\n typeof console !== 'undefined' &&\r\n !hydrationBailed) {\r\n hydrationBailed = true;\r\n console.warn('Parent: ', elm);\r\n console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);\r\n }\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n if (isDef(data)) {\r\n var fullInvoke = false;\r\n for (var key in data) {\r\n if (!isRenderedModule(key)) {\r\n fullInvoke = true;\r\n invokeCreateHooks(vnode, insertedVnodeQueue);\r\n break;\r\n }\r\n }\r\n if (!fullInvoke && data['class']) {\r\n // ensure collecting deps for deep class bindings for future updates\r\n traverse(data['class']);\r\n }\r\n }\r\n }\r\n else if (elm.data !== vnode.text) {\r\n elm.data = vnode.text;\r\n }\r\n return true;\r\n }\r\n function assertNodeMatch(node, vnode, inVPre) {\r\n if (isDef(vnode.tag)) {\r\n return (vnode.tag.indexOf('vue-component') === 0 ||\r\n (!isUnknownElement(vnode, inVPre) &&\r\n vnode.tag.toLowerCase() ===\r\n (node.tagName && node.tagName.toLowerCase())));\r\n }\r\n else {\r\n return node.nodeType === (vnode.isComment ? 8 : 3);\r\n }\r\n }\r\n return function patch(oldVnode, vnode, hydrating, removeOnly) {\r\n if (isUndef(vnode)) {\r\n if (isDef(oldVnode))\r\n invokeDestroyHook(oldVnode);\r\n return;\r\n }\r\n var isInitialPatch = false;\r\n var insertedVnodeQueue = [];\r\n if (isUndef(oldVnode)) {\r\n // empty mount (likely as component), create new root element\r\n isInitialPatch = true;\r\n createElm(vnode, insertedVnodeQueue);\r\n }\r\n else {\r\n var isRealElement = isDef(oldVnode.nodeType);\r\n if (!isRealElement && sameVnode(oldVnode, vnode)) {\r\n // patch existing root node\r\n patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly);\r\n }\r\n else {\r\n if (isRealElement) {\r\n // mounting to a real element\r\n // check if this is server-rendered content and if we can perform\r\n // a successful hydration.\r\n if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {\r\n oldVnode.removeAttribute(SSR_ATTR);\r\n hydrating = true;\r\n }\r\n if (isTrue(hydrating)) {\r\n if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\r\n invokeInsertHook(vnode, insertedVnodeQueue, true);\r\n return oldVnode;\r\n }\r\n else if (process.env.NODE_ENV !== 'production') {\r\n warn$2('The client-side rendered virtual DOM tree is not matching ' +\r\n 'server-rendered content. This is likely caused by incorrect ' +\r\n 'HTML markup, for example nesting block-level elements inside ' +\r\n '<p>, or missing <tbody>. Bailing hydration and performing ' +\r\n 'full client-side render.');\r\n }\r\n }\r\n // either not server-rendered, or hydration failed.\r\n // create an empty node and replace it\r\n oldVnode = emptyNodeAt(oldVnode);\r\n }\r\n // replacing existing element\r\n var oldElm = oldVnode.elm;\r\n var parentElm = nodeOps.parentNode(oldElm);\r\n // create new node\r\n createElm(vnode, insertedVnodeQueue, \r\n // extremely rare edge case: do not insert if old element is in a\r\n // leaving transition. Only happens when combining transition +\r\n // keep-alive + HOCs. (#4590)\r\n oldElm._leaveCb ? null : parentElm, nodeOps.nextSibling(oldElm));\r\n // update parent placeholder node element, recursively\r\n if (isDef(vnode.parent)) {\r\n var ancestor = vnode.parent;\r\n var patchable = isPatchable(vnode);\r\n while (ancestor) {\r\n for (var i_8 = 0; i_8 < cbs.destroy.length; ++i_8) {\r\n cbs.destroy[i_8](ancestor);\r\n }\r\n ancestor.elm = vnode.elm;\r\n if (patchable) {\r\n for (var i_9 = 0; i_9 < cbs.create.length; ++i_9) {\r\n cbs.create[i_9](emptyNode, ancestor);\r\n }\r\n // #6513\r\n // invoke insert hooks that may have been merged by create hooks.\r\n // e.g. for directives that uses the \"inserted\" hook.\r\n var insert_1 = ancestor.data.hook.insert;\r\n if (insert_1.merged) {\r\n // start at index 1 to avoid re-invoking component mounted hook\r\n for (var i_10 = 1; i_10 < insert_1.fns.length; i_10++) {\r\n insert_1.fns[i_10]();\r\n }\r\n }\r\n }\r\n else {\r\n registerRef(ancestor);\r\n }\r\n ancestor = ancestor.parent;\r\n }\r\n }\r\n // destroy old node\r\n if (isDef(parentElm)) {\r\n removeVnodes([oldVnode], 0, 0);\r\n }\r\n else if (isDef(oldVnode.tag)) {\r\n invokeDestroyHook(oldVnode);\r\n }\r\n }\r\n }\r\n invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\r\n return vnode.elm;\r\n };\r\n}\n\nvar directives$1 = {\r\n create: updateDirectives,\r\n update: updateDirectives,\r\n destroy: function unbindDirectives(vnode) {\r\n // @ts-expect-error emptyNode is not VNodeWithData\r\n updateDirectives(vnode, emptyNode);\r\n }\r\n};\r\nfunction updateDirectives(oldVnode, vnode) {\r\n if (oldVnode.data.directives || vnode.data.directives) {\r\n _update(oldVnode, vnode);\r\n }\r\n}\r\nfunction _update(oldVnode, vnode) {\r\n var isCreate = oldVnode === emptyNode;\r\n var isDestroy = vnode === emptyNode;\r\n var oldDirs = normalizeDirectives(oldVnode.data.directives, oldVnode.context);\r\n var newDirs = normalizeDirectives(vnode.data.directives, vnode.context);\r\n var dirsWithInsert = [];\r\n var dirsWithPostpatch = [];\r\n var key, oldDir, dir;\r\n for (key in newDirs) {\r\n oldDir = oldDirs[key];\r\n dir = newDirs[key];\r\n if (!oldDir) {\r\n // new directive, bind\r\n callHook(dir, 'bind', vnode, oldVnode);\r\n if (dir.def && dir.def.inserted) {\r\n dirsWithInsert.push(dir);\r\n }\r\n }\r\n else {\r\n // existing directive, update\r\n dir.oldValue = oldDir.value;\r\n dir.oldArg = oldDir.arg;\r\n callHook(dir, 'update', vnode, oldVnode);\r\n if (dir.def && dir.def.componentUpdated) {\r\n dirsWithPostpatch.push(dir);\r\n }\r\n }\r\n }\r\n if (dirsWithInsert.length) {\r\n var callInsert = function () {\r\n for (var i = 0; i < dirsWithInsert.length; i++) {\r\n callHook(dirsWithInsert[i], 'inserted', vnode, oldVnode);\r\n }\r\n };\r\n if (isCreate) {\r\n mergeVNodeHook(vnode, 'insert', callInsert);\r\n }\r\n else {\r\n callInsert();\r\n }\r\n }\r\n if (dirsWithPostpatch.length) {\r\n mergeVNodeHook(vnode, 'postpatch', function () {\r\n for (var i = 0; i < dirsWithPostpatch.length; i++) {\r\n callHook(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\r\n }\r\n });\r\n }\r\n if (!isCreate) {\r\n for (key in oldDirs) {\r\n if (!newDirs[key]) {\r\n // no longer present, unbind\r\n callHook(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\r\n }\r\n }\r\n }\r\n}\r\nvar emptyModifiers = Object.create(null);\r\nfunction normalizeDirectives(dirs, vm) {\r\n var res = Object.create(null);\r\n if (!dirs) {\r\n // $flow-disable-line\r\n return res;\r\n }\r\n var i, dir;\r\n for (i = 0; i < dirs.length; i++) {\r\n dir = dirs[i];\r\n if (!dir.modifiers) {\r\n // $flow-disable-line\r\n dir.modifiers = emptyModifiers;\r\n }\r\n res[getRawDirName(dir)] = dir;\r\n if (vm._setupState && vm._setupState.__sfc) {\r\n dir.def = dir.def || resolveAsset(vm, '_setupState', 'v-' + dir.name);\r\n }\r\n dir.def = dir.def || resolveAsset(vm.$options, 'directives', dir.name, true);\r\n }\r\n // $flow-disable-line\r\n return res;\r\n}\r\nfunction getRawDirName(dir) {\r\n return (dir.rawName || \"\".concat(dir.name, \".\").concat(Object.keys(dir.modifiers || {}).join('.')));\r\n}\r\nfunction callHook(dir, hook, vnode, oldVnode, isDestroy) {\r\n var fn = dir.def && dir.def[hook];\r\n if (fn) {\r\n try {\r\n fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\r\n }\r\n catch (e) {\r\n handleError(e, vnode.context, \"directive \".concat(dir.name, \" \").concat(hook, \" hook\"));\r\n }\r\n }\r\n}\n\nvar baseModules = [ref, directives$1];\n\nfunction updateAttrs(oldVnode, vnode) {\r\n var opts = vnode.componentOptions;\r\n if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {\r\n return;\r\n }\r\n if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\r\n return;\r\n }\r\n var key, cur, old;\r\n var elm = vnode.elm;\r\n var oldAttrs = oldVnode.data.attrs || {};\r\n var attrs = vnode.data.attrs || {};\r\n // clone observed objects, as the user probably wants to mutate it\r\n if (isDef(attrs.__ob__) || isTrue(attrs._v_attr_proxy)) {\r\n attrs = vnode.data.attrs = extend({}, attrs);\r\n }\r\n for (key in attrs) {\r\n cur = attrs[key];\r\n old = oldAttrs[key];\r\n if (old !== cur) {\r\n setAttr(elm, key, cur, vnode.data.pre);\r\n }\r\n }\r\n // #4391: in IE9, setting type can reset value for input[type=radio]\r\n // #6666: IE/Edge forces progress value down to 1 before setting a max\r\n /* istanbul ignore if */\r\n if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {\r\n setAttr(elm, 'value', attrs.value);\r\n }\r\n for (key in oldAttrs) {\r\n if (isUndef(attrs[key])) {\r\n if (isXlink(key)) {\r\n elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\r\n }\r\n else if (!isEnumeratedAttr(key)) {\r\n elm.removeAttribute(key);\r\n }\r\n }\r\n }\r\n}\r\nfunction setAttr(el, key, value, isInPre) {\r\n if (isInPre || el.tagName.indexOf('-') > -1) {\r\n baseSetAttr(el, key, value);\r\n }\r\n else if (isBooleanAttr(key)) {\r\n // set attribute for blank value\r\n // e.g. <option disabled>Select one</option>\r\n if (isFalsyAttrValue(value)) {\r\n el.removeAttribute(key);\r\n }\r\n else {\r\n // technically allowfullscreen is a boolean attribute for <iframe>,\r\n // but Flash expects a value of \"true\" when used on <embed> tag\r\n value = key === 'allowfullscreen' && el.tagName === 'EMBED' ? 'true' : key;\r\n el.setAttribute(key, value);\r\n }\r\n }\r\n else if (isEnumeratedAttr(key)) {\r\n el.setAttribute(key, convertEnumeratedValue(key, value));\r\n }\r\n else if (isXlink(key)) {\r\n if (isFalsyAttrValue(value)) {\r\n el.removeAttributeNS(xlinkNS, getXlinkProp(key));\r\n }\r\n else {\r\n el.setAttributeNS(xlinkNS, key, value);\r\n }\r\n }\r\n else {\r\n baseSetAttr(el, key, value);\r\n }\r\n}\r\nfunction baseSetAttr(el, key, value) {\r\n if (isFalsyAttrValue(value)) {\r\n el.removeAttribute(key);\r\n }\r\n else {\r\n // #7138: IE10 & 11 fires input event when setting placeholder on\r\n // <textarea>... block the first input event and remove the blocker\r\n // immediately.\r\n /* istanbul ignore if */\r\n if (isIE &&\r\n !isIE9 &&\r\n el.tagName === 'TEXTAREA' &&\r\n key === 'placeholder' &&\r\n value !== '' &&\r\n !el.__ieph) {\r\n var blocker_1 = function (e) {\r\n e.stopImmediatePropagation();\r\n el.removeEventListener('input', blocker_1);\r\n };\r\n el.addEventListener('input', blocker_1);\r\n // $flow-disable-line\r\n el.__ieph = true; /* IE placeholder patched */\r\n }\r\n el.setAttribute(key, value);\r\n }\r\n}\r\nvar attrs = {\r\n create: updateAttrs,\r\n update: updateAttrs\r\n};\n\nfunction updateClass(oldVnode, vnode) {\r\n var el = vnode.elm;\r\n var data = vnode.data;\r\n var oldData = oldVnode.data;\r\n if (isUndef(data.staticClass) &&\r\n isUndef(data.class) &&\r\n (isUndef(oldData) ||\r\n (isUndef(oldData.staticClass) && isUndef(oldData.class)))) {\r\n return;\r\n }\r\n var cls = genClassForVnode(vnode);\r\n // handle transition classes\r\n var transitionClass = el._transitionClasses;\r\n if (isDef(transitionClass)) {\r\n cls = concat(cls, stringifyClass(transitionClass));\r\n }\r\n // set the class\r\n if (cls !== el._prevClass) {\r\n el.setAttribute('class', cls);\r\n el._prevClass = cls;\r\n }\r\n}\r\nvar klass$1 = {\r\n create: updateClass,\r\n update: updateClass\r\n};\n\nvar validDivisionCharRE = /[\\w).+\\-_$\\]]/;\r\nfunction parseFilters(exp) {\r\n var inSingle = false;\r\n var inDouble = false;\r\n var inTemplateString = false;\r\n var inRegex = false;\r\n var curly = 0;\r\n var square = 0;\r\n var paren = 0;\r\n var lastFilterIndex = 0;\r\n var c, prev, i, expression, filters;\r\n for (i = 0; i < exp.length; i++) {\r\n prev = c;\r\n c = exp.charCodeAt(i);\r\n if (inSingle) {\r\n if (c === 0x27 && prev !== 0x5c)\r\n inSingle = false;\r\n }\r\n else if (inDouble) {\r\n if (c === 0x22 && prev !== 0x5c)\r\n inDouble = false;\r\n }\r\n else if (inTemplateString) {\r\n if (c === 0x60 && prev !== 0x5c)\r\n inTemplateString = false;\r\n }\r\n else if (inRegex) {\r\n if (c === 0x2f && prev !== 0x5c)\r\n inRegex = false;\r\n }\r\n else if (c === 0x7c && // pipe\r\n exp.charCodeAt(i + 1) !== 0x7c &&\r\n exp.charCodeAt(i - 1) !== 0x7c &&\r\n !curly &&\r\n !square &&\r\n !paren) {\r\n if (expression === undefined) {\r\n // first filter, end of expression\r\n lastFilterIndex = i + 1;\r\n expression = exp.slice(0, i).trim();\r\n }\r\n else {\r\n pushFilter();\r\n }\r\n }\r\n else {\r\n switch (c) {\r\n case 0x22:\r\n inDouble = true;\r\n break; // \"\r\n case 0x27:\r\n inSingle = true;\r\n break; // '\r\n case 0x60:\r\n inTemplateString = true;\r\n break; // `\r\n case 0x28:\r\n paren++;\r\n break; // (\r\n case 0x29:\r\n paren--;\r\n break; // )\r\n case 0x5b:\r\n square++;\r\n break; // [\r\n case 0x5d:\r\n square--;\r\n break; // ]\r\n case 0x7b:\r\n curly++;\r\n break; // {\r\n case 0x7d:\r\n curly--;\r\n break; // }\r\n }\r\n if (c === 0x2f) {\r\n // /\r\n var j = i - 1;\r\n var p \r\n // find first non-whitespace prev char\r\n = void 0;\r\n // find first non-whitespace prev char\r\n for (; j >= 0; j--) {\r\n p = exp.charAt(j);\r\n if (p !== ' ')\r\n break;\r\n }\r\n if (!p || !validDivisionCharRE.test(p)) {\r\n inRegex = true;\r\n }\r\n }\r\n }\r\n }\r\n if (expression === undefined) {\r\n expression = exp.slice(0, i).trim();\r\n }\r\n else if (lastFilterIndex !== 0) {\r\n pushFilter();\r\n }\r\n function pushFilter() {\r\n (filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim());\r\n lastFilterIndex = i + 1;\r\n }\r\n if (filters) {\r\n for (i = 0; i < filters.length; i++) {\r\n expression = wrapFilter(expression, filters[i]);\r\n }\r\n }\r\n return expression;\r\n}\r\nfunction wrapFilter(exp, filter) {\r\n var i = filter.indexOf('(');\r\n if (i < 0) {\r\n // _f: resolveFilter\r\n return \"_f(\\\"\".concat(filter, \"\\\")(\").concat(exp, \")\");\r\n }\r\n else {\r\n var name_1 = filter.slice(0, i);\r\n var args = filter.slice(i + 1);\r\n return \"_f(\\\"\".concat(name_1, \"\\\")(\").concat(exp).concat(args !== ')' ? ',' + args : args);\r\n }\r\n}\n\n/* eslint-disable no-unused-vars */\r\nfunction baseWarn(msg, range) {\r\n console.error(\"[Vue compiler]: \".concat(msg));\r\n}\r\n/* eslint-enable no-unused-vars */\r\nfunction pluckModuleFunction(modules, key) {\r\n return modules ? modules.map(function (m) { return m[key]; }).filter(function (_) { return _; }) : [];\r\n}\r\nfunction addProp(el, name, value, range, dynamic) {\r\n (el.props || (el.props = [])).push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range));\r\n el.plain = false;\r\n}\r\nfunction addAttr(el, name, value, range, dynamic) {\r\n var attrs = dynamic\r\n ? el.dynamicAttrs || (el.dynamicAttrs = [])\r\n : el.attrs || (el.attrs = []);\r\n attrs.push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range));\r\n el.plain = false;\r\n}\r\n// add a raw attr (use this in preTransforms)\r\nfunction addRawAttr(el, name, value, range) {\r\n el.attrsMap[name] = value;\r\n el.attrsList.push(rangeSetItem({ name: name, value: value }, range));\r\n}\r\nfunction addDirective(el, name, rawName, value, arg, isDynamicArg, modifiers, range) {\r\n (el.directives || (el.directives = [])).push(rangeSetItem({\r\n name: name,\r\n rawName: rawName,\r\n value: value,\r\n arg: arg,\r\n isDynamicArg: isDynamicArg,\r\n modifiers: modifiers\r\n }, range));\r\n el.plain = false;\r\n}\r\nfunction prependModifierMarker(symbol, name, dynamic) {\r\n return dynamic ? \"_p(\".concat(name, \",\\\"\").concat(symbol, \"\\\")\") : symbol + name; // mark the event as captured\r\n}\r\nfunction addHandler(el, name, value, modifiers, important, warn, range, dynamic) {\r\n modifiers = modifiers || emptyObject;\r\n // warn prevent and passive modifier\r\n /* istanbul ignore if */\r\n if (process.env.NODE_ENV !== 'production' && warn && modifiers.prevent && modifiers.passive) {\r\n warn(\"passive and prevent can't be used together. \" +\r\n \"Passive handler can't prevent default event.\", range);\r\n }\r\n // normalize click.right and click.middle since they don't actually fire\r\n // this is technically browser-specific, but at least for now browsers are\r\n // the only target envs that have right/middle clicks.\r\n if (modifiers.right) {\r\n if (dynamic) {\r\n name = \"(\".concat(name, \")==='click'?'contextmenu':(\").concat(name, \")\");\r\n }\r\n else if (name === 'click') {\r\n name = 'contextmenu';\r\n delete modifiers.right;\r\n }\r\n }\r\n else if (modifiers.middle) {\r\n if (dynamic) {\r\n name = \"(\".concat(name, \")==='click'?'mouseup':(\").concat(name, \")\");\r\n }\r\n else if (name === 'click') {\r\n name = 'mouseup';\r\n }\r\n }\r\n // check capture modifier\r\n if (modifiers.capture) {\r\n delete modifiers.capture;\r\n name = prependModifierMarker('!', name, dynamic);\r\n }\r\n if (modifiers.once) {\r\n delete modifiers.once;\r\n name = prependModifierMarker('~', name, dynamic);\r\n }\r\n /* istanbul ignore if */\r\n if (modifiers.passive) {\r\n delete modifiers.passive;\r\n name = prependModifierMarker('&', name, dynamic);\r\n }\r\n var events;\r\n if (modifiers.native) {\r\n delete modifiers.native;\r\n events = el.nativeEvents || (el.nativeEvents = {});\r\n }\r\n else {\r\n events = el.events || (el.events = {});\r\n }\r\n var newHandler = rangeSetItem({ value: value.trim(), dynamic: dynamic }, range);\r\n if (modifiers !== emptyObject) {\r\n newHandler.modifiers = modifiers;\r\n }\r\n var handlers = events[name];\r\n /* istanbul ignore if */\r\n if (Array.isArray(handlers)) {\r\n important ? handlers.unshift(newHandler) : handlers.push(newHandler);\r\n }\r\n else if (handlers) {\r\n events[name] = important ? [newHandler, handlers] : [handlers, newHandler];\r\n }\r\n else {\r\n events[name] = newHandler;\r\n }\r\n el.plain = false;\r\n}\r\nfunction getRawBindingAttr(el, name) {\r\n return (el.rawAttrsMap[':' + name] ||\r\n el.rawAttrsMap['v-bind:' + name] ||\r\n el.rawAttrsMap[name]);\r\n}\r\nfunction getBindingAttr(el, name, getStatic) {\r\n var dynamicValue = getAndRemoveAttr(el, ':' + name) || getAndRemoveAttr(el, 'v-bind:' + name);\r\n if (dynamicValue != null) {\r\n return parseFilters(dynamicValue);\r\n }\r\n else if (getStatic !== false) {\r\n var staticValue = getAndRemoveAttr(el, name);\r\n if (staticValue != null) {\r\n return JSON.stringify(staticValue);\r\n }\r\n }\r\n}\r\n// note: this only removes the attr from the Array (attrsList) so that it\r\n// doesn't get processed by processAttrs.\r\n// By default it does NOT remove it from the map (attrsMap) because the map is\r\n// needed during codegen.\r\nfunction getAndRemoveAttr(el, name, removeFromMap) {\r\n var val;\r\n if ((val = el.attrsMap[name]) != null) {\r\n var list = el.attrsList;\r\n for (var i = 0, l = list.length; i < l; i++) {\r\n if (list[i].name === name) {\r\n list.splice(i, 1);\r\n break;\r\n }\r\n }\r\n }\r\n if (removeFromMap) {\r\n delete el.attrsMap[name];\r\n }\r\n return val;\r\n}\r\nfunction getAndRemoveAttrByRegex(el, name) {\r\n var list = el.attrsList;\r\n for (var i = 0, l = list.length; i < l; i++) {\r\n var attr = list[i];\r\n if (name.test(attr.name)) {\r\n list.splice(i, 1);\r\n return attr;\r\n }\r\n }\r\n}\r\nfunction rangeSetItem(item, range) {\r\n if (range) {\r\n if (range.start != null) {\r\n item.start = range.start;\r\n }\r\n if (range.end != null) {\r\n item.end = range.end;\r\n }\r\n }\r\n return item;\r\n}\n\n/**\r\n * Cross-platform code generation for component v-model\r\n */\r\nfunction genComponentModel(el, value, modifiers) {\r\n var _a = modifiers || {}, number = _a.number, trim = _a.trim;\r\n var baseValueExpression = '$$v';\r\n var valueExpression = baseValueExpression;\r\n if (trim) {\r\n valueExpression =\r\n \"(typeof \".concat(baseValueExpression, \" === 'string'\") +\r\n \"? \".concat(baseValueExpression, \".trim()\") +\r\n \": \".concat(baseValueExpression, \")\");\r\n }\r\n if (number) {\r\n valueExpression = \"_n(\".concat(valueExpression, \")\");\r\n }\r\n var assignment = genAssignmentCode(value, valueExpression);\r\n el.model = {\r\n value: \"(\".concat(value, \")\"),\r\n expression: JSON.stringify(value),\r\n callback: \"function (\".concat(baseValueExpression, \") {\").concat(assignment, \"}\")\r\n };\r\n}\r\n/**\r\n * Cross-platform codegen helper for generating v-model value assignment code.\r\n */\r\nfunction genAssignmentCode(value, assignment) {\r\n var res = parseModel(value);\r\n if (res.key === null) {\r\n return \"\".concat(value, \"=\").concat(assignment);\r\n }\r\n else {\r\n return \"$set(\".concat(res.exp, \", \").concat(res.key, \", \").concat(assignment, \")\");\r\n }\r\n}\r\n/**\r\n * Parse a v-model expression into a base path and a final key segment.\r\n * Handles both dot-path and possible square brackets.\r\n *\r\n * Possible cases:\r\n *\r\n * - test\r\n * - test[key]\r\n * - test[test1[key]]\r\n * - test[\"a\"][key]\r\n * - xxx.test[a[a].test1[key]]\r\n * - test.xxx.a[\"asa\"][test1[key]]\r\n *\r\n */\r\nvar len, str, chr, index, expressionPos, expressionEndPos;\r\nfunction parseModel(val) {\r\n // Fix https://github.com/vuejs/vue/pull/7730\r\n // allow v-model=\"obj.val \" (trailing whitespace)\r\n val = val.trim();\r\n len = val.length;\r\n if (val.indexOf('[') < 0 || val.lastIndexOf(']') < len - 1) {\r\n index = val.lastIndexOf('.');\r\n if (index > -1) {\r\n return {\r\n exp: val.slice(0, index),\r\n key: '\"' + val.slice(index + 1) + '\"'\r\n };\r\n }\r\n else {\r\n return {\r\n exp: val,\r\n key: null\r\n };\r\n }\r\n }\r\n str = val;\r\n index = expressionPos = expressionEndPos = 0;\r\n while (!eof()) {\r\n chr = next();\r\n /* istanbul ignore if */\r\n if (isStringStart(chr)) {\r\n parseString(chr);\r\n }\r\n else if (chr === 0x5b) {\r\n parseBracket(chr);\r\n }\r\n }\r\n return {\r\n exp: val.slice(0, expressionPos),\r\n key: val.slice(expressionPos + 1, expressionEndPos)\r\n };\r\n}\r\nfunction next() {\r\n return str.charCodeAt(++index);\r\n}\r\nfunction eof() {\r\n return index >= len;\r\n}\r\nfunction isStringStart(chr) {\r\n return chr === 0x22 || chr === 0x27;\r\n}\r\nfunction parseBracket(chr) {\r\n var inBracket = 1;\r\n expressionPos = index;\r\n while (!eof()) {\r\n chr = next();\r\n if (isStringStart(chr)) {\r\n parseString(chr);\r\n continue;\r\n }\r\n if (chr === 0x5b)\r\n inBracket++;\r\n if (chr === 0x5d)\r\n inBracket--;\r\n if (inBracket === 0) {\r\n expressionEndPos = index;\r\n break;\r\n }\r\n }\r\n}\r\nfunction parseString(chr) {\r\n var stringQuote = chr;\r\n while (!eof()) {\r\n chr = next();\r\n if (chr === stringQuote) {\r\n break;\r\n }\r\n }\r\n}\n\nvar warn$1;\r\n// in some cases, the event used has to be determined at runtime\r\n// so we used some reserved tokens during compile.\r\nvar RANGE_TOKEN = '__r';\r\nvar CHECKBOX_RADIO_TOKEN = '__c';\r\nfunction model$1(el, dir, _warn) {\r\n warn$1 = _warn;\r\n var value = dir.value;\r\n var modifiers = dir.modifiers;\r\n var tag = el.tag;\r\n var type = el.attrsMap.type;\r\n if (process.env.NODE_ENV !== 'production') {\r\n // inputs with type=\"file\" are read only and setting the input's\r\n // value will throw an error.\r\n if (tag === 'input' && type === 'file') {\r\n warn$1(\"<\".concat(el.tag, \" v-model=\\\"\").concat(value, \"\\\" type=\\\"file\\\">:\\n\") +\r\n \"File inputs are read only. Use a v-on:change listener instead.\", el.rawAttrsMap['v-model']);\r\n }\r\n }\r\n if (el.component) {\r\n genComponentModel(el, value, modifiers);\r\n // component v-model doesn't need extra runtime\r\n return false;\r\n }\r\n else if (tag === 'select') {\r\n genSelect(el, value, modifiers);\r\n }\r\n else if (tag === 'input' && type === 'checkbox') {\r\n genCheckboxModel(el, value, modifiers);\r\n }\r\n else if (tag === 'input' && type === 'radio') {\r\n genRadioModel(el, value, modifiers);\r\n }\r\n else if (tag === 'input' || tag === 'textarea') {\r\n genDefaultModel(el, value, modifiers);\r\n }\r\n else if (!config.isReservedTag(tag)) {\r\n genComponentModel(el, value, modifiers);\r\n // component v-model doesn't need extra runtime\r\n return false;\r\n }\r\n else if (process.env.NODE_ENV !== 'production') {\r\n warn$1(\"<\".concat(el.tag, \" v-model=\\\"\").concat(value, \"\\\">: \") +\r\n \"v-model is not supported on this element type. \" +\r\n \"If you are working with contenteditable, it's recommended to \" +\r\n 'wrap a library dedicated for that purpose inside a custom component.', el.rawAttrsMap['v-model']);\r\n }\r\n // ensure runtime directive metadata\r\n return true;\r\n}\r\nfunction genCheckboxModel(el, value, modifiers) {\r\n var number = modifiers && modifiers.number;\r\n var valueBinding = getBindingAttr(el, 'value') || 'null';\r\n var trueValueBinding = getBindingAttr(el, 'true-value') || 'true';\r\n var falseValueBinding = getBindingAttr(el, 'false-value') || 'false';\r\n addProp(el, 'checked', \"Array.isArray(\".concat(value, \")\") +\r\n \"?_i(\".concat(value, \",\").concat(valueBinding, \")>-1\") +\r\n (trueValueBinding === 'true'\r\n ? \":(\".concat(value, \")\")\r\n : \":_q(\".concat(value, \",\").concat(trueValueBinding, \")\")));\r\n addHandler(el, 'change', \"var $$a=\".concat(value, \",\") +\r\n '$$el=$event.target,' +\r\n \"$$c=$$el.checked?(\".concat(trueValueBinding, \"):(\").concat(falseValueBinding, \");\") +\r\n 'if(Array.isArray($$a)){' +\r\n \"var $$v=\".concat(number ? '_n(' + valueBinding + ')' : valueBinding, \",\") +\r\n '$$i=_i($$a,$$v);' +\r\n \"if($$el.checked){$$i<0&&(\".concat(genAssignmentCode(value, '$$a.concat([$$v])'), \")}\") +\r\n \"else{$$i>-1&&(\".concat(genAssignmentCode(value, '$$a.slice(0,$$i).concat($$a.slice($$i+1))'), \")}\") +\r\n \"}else{\".concat(genAssignmentCode(value, '$$c'), \"}\"), null, true);\r\n}\r\nfunction genRadioModel(el, value, modifiers) {\r\n var number = modifiers && modifiers.number;\r\n var valueBinding = getBindingAttr(el, 'value') || 'null';\r\n valueBinding = number ? \"_n(\".concat(valueBinding, \")\") : valueBinding;\r\n addProp(el, 'checked', \"_q(\".concat(value, \",\").concat(valueBinding, \")\"));\r\n addHandler(el, 'change', genAssignmentCode(value, valueBinding), null, true);\r\n}\r\nfunction genSelect(el, value, modifiers) {\r\n var number = modifiers && modifiers.number;\r\n var selectedVal = \"Array.prototype.filter\" +\r\n \".call($event.target.options,function(o){return o.selected})\" +\r\n \".map(function(o){var val = \\\"_value\\\" in o ? o._value : o.value;\" +\r\n \"return \".concat(number ? '_n(val)' : 'val', \"})\");\r\n var assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]';\r\n var code = \"var $$selectedVal = \".concat(selectedVal, \";\");\r\n code = \"\".concat(code, \" \").concat(genAssignmentCode(value, assignment));\r\n addHandler(el, 'change', code, null, true);\r\n}\r\nfunction genDefaultModel(el, value, modifiers) {\r\n var type = el.attrsMap.type;\r\n // warn if v-bind:value conflicts with v-model\r\n // except for inputs with v-bind:type\r\n if (process.env.NODE_ENV !== 'production') {\r\n var value_1 = el.attrsMap['v-bind:value'] || el.attrsMap[':value'];\r\n var typeBinding = el.attrsMap['v-bind:type'] || el.attrsMap[':type'];\r\n if (value_1 && !typeBinding) {\r\n var binding = el.attrsMap['v-bind:value'] ? 'v-bind:value' : ':value';\r\n warn$1(\"\".concat(binding, \"=\\\"\").concat(value_1, \"\\\" conflicts with v-model on the same element \") +\r\n 'because the latter already expands to a value binding internally', el.rawAttrsMap[binding]);\r\n }\r\n }\r\n var _a = modifiers || {}, lazy = _a.lazy, number = _a.number, trim = _a.trim;\r\n var needCompositionGuard = !lazy && type !== 'range';\r\n var event = lazy ? 'change' : type === 'range' ? RANGE_TOKEN : 'input';\r\n var valueExpression = '$event.target.value';\r\n if (trim) {\r\n valueExpression = \"$event.target.value.trim()\";\r\n }\r\n if (number) {\r\n valueExpression = \"_n(\".concat(valueExpression, \")\");\r\n }\r\n var code = genAssignmentCode(value, valueExpression);\r\n if (needCompositionGuard) {\r\n code = \"if($event.target.composing)return;\".concat(code);\r\n }\r\n addProp(el, 'value', \"(\".concat(value, \")\"));\r\n addHandler(el, event, code, null, true);\r\n if (trim || number) {\r\n addHandler(el, 'blur', '$forceUpdate()');\r\n }\r\n}\n\n// normalize v-model event tokens that can only be determined at runtime.\r\n// it's important to place the event as the first in the array because\r\n// the whole point is ensuring the v-model callback gets called before\r\n// user-attached handlers.\r\nfunction normalizeEvents(on) {\r\n /* istanbul ignore if */\r\n if (isDef(on[RANGE_TOKEN])) {\r\n // IE input[type=range] only supports `change` event\r\n var event_1 = isIE ? 'change' : 'input';\r\n on[event_1] = [].concat(on[RANGE_TOKEN], on[event_1] || []);\r\n delete on[RANGE_TOKEN];\r\n }\r\n // This was originally intended to fix #4521 but no longer necessary\r\n // after 2.5. Keeping it for backwards compat with generated code from < 2.4\r\n /* istanbul ignore if */\r\n if (isDef(on[CHECKBOX_RADIO_TOKEN])) {\r\n on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);\r\n delete on[CHECKBOX_RADIO_TOKEN];\r\n }\r\n}\r\nvar target;\r\nfunction createOnceHandler(event, handler, capture) {\r\n var _target = target; // save current target element in closure\r\n return function onceHandler() {\r\n var res = handler.apply(null, arguments);\r\n if (res !== null) {\r\n remove(event, onceHandler, capture, _target);\r\n }\r\n };\r\n}\r\n// #9446: Firefox <= 53 (in particular, ESR 52) has incorrect Event.timeStamp\r\n// implementation and does not fire microtasks in between event propagation, so\r\n// safe to exclude.\r\nvar useMicrotaskFix = isUsingMicroTask && !(isFF && Number(isFF[1]) <= 53);\r\nfunction add(name, handler, capture, passive) {\r\n // async edge case #6566: inner click event triggers patch, event handler\r\n // attached to outer element during patch, and triggered again. This\r\n // happens because browsers fire microtask ticks between event propagation.\r\n // the solution is simple: we save the timestamp when a handler is attached,\r\n // and the handler would only fire if the event passed to it was fired\r\n // AFTER it was attached.\r\n if (useMicrotaskFix) {\r\n var attachedTimestamp_1 = currentFlushTimestamp;\r\n var original_1 = handler;\r\n //@ts-expect-error\r\n handler = original_1._wrapper = function (e) {\r\n if (\r\n // no bubbling, should always fire.\r\n // this is just a safety net in case event.timeStamp is unreliable in\r\n // certain weird environments...\r\n e.target === e.currentTarget ||\r\n // event is fired after handler attachment\r\n e.timeStamp >= attachedTimestamp_1 ||\r\n // bail for environments that have buggy event.timeStamp implementations\r\n // #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState\r\n // #9681 QtWebEngine event.timeStamp is negative value\r\n e.timeStamp <= 0 ||\r\n // #9448 bail if event is fired in another document in a multi-page\r\n // electron/nw.js app, since event.timeStamp will be using a different\r\n // starting reference\r\n e.target.ownerDocument !== document) {\r\n return original_1.apply(this, arguments);\r\n }\r\n };\r\n }\r\n target.addEventListener(name, handler, supportsPassive ? { capture: capture, passive: passive } : capture);\r\n}\r\nfunction remove(name, handler, capture, _target) {\r\n (_target || target).removeEventListener(name, \r\n //@ts-expect-error\r\n handler._wrapper || handler, capture);\r\n}\r\nfunction updateDOMListeners(oldVnode, vnode) {\r\n if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {\r\n return;\r\n }\r\n var on = vnode.data.on || {};\r\n var oldOn = oldVnode.data.on || {};\r\n // vnode is empty when removing all listeners,\r\n // and use old vnode dom element\r\n target = vnode.elm || oldVnode.elm;\r\n normalizeEvents(on);\r\n updateListeners(on, oldOn, add, remove, createOnceHandler, vnode.context);\r\n target = undefined;\r\n}\r\nvar events = {\r\n create: updateDOMListeners,\r\n update: updateDOMListeners,\r\n // @ts-expect-error emptyNode has actually data\r\n destroy: function (vnode) { return updateDOMListeners(vnode, emptyNode); }\r\n};\n\nvar svgContainer;\r\nfunction updateDOMProps(oldVnode, vnode) {\r\n if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {\r\n return;\r\n }\r\n var key, cur;\r\n var elm = vnode.elm;\r\n var oldProps = oldVnode.data.domProps || {};\r\n var props = vnode.data.domProps || {};\r\n // clone observed objects, as the user probably wants to mutate it\r\n if (isDef(props.__ob__) || isTrue(props._v_attr_proxy)) {\r\n props = vnode.data.domProps = extend({}, props);\r\n }\r\n for (key in oldProps) {\r\n if (!(key in props)) {\r\n elm[key] = '';\r\n }\r\n }\r\n for (key in props) {\r\n cur = props[key];\r\n // ignore children if the node has textContent or innerHTML,\r\n // as these will throw away existing DOM nodes and cause removal errors\r\n // on subsequent patches (#3360)\r\n if (key === 'textContent' || key === 'innerHTML') {\r\n if (vnode.children)\r\n vnode.children.length = 0;\r\n if (cur === oldProps[key])\r\n continue;\r\n // #6601 work around Chrome version <= 55 bug where single textNode\r\n // replaced by innerHTML/textContent retains its parentNode property\r\n if (elm.childNodes.length === 1) {\r\n elm.removeChild(elm.childNodes[0]);\r\n }\r\n }\r\n if (key === 'value' && elm.tagName !== 'PROGRESS') {\r\n // store value as _value as well since\r\n // non-string values will be stringified\r\n elm._value = cur;\r\n // avoid resetting cursor position when value is the same\r\n var strCur = isUndef(cur) ? '' : String(cur);\r\n if (shouldUpdateValue(elm, strCur)) {\r\n elm.value = strCur;\r\n }\r\n }\r\n else if (key === 'innerHTML' &&\r\n isSVG(elm.tagName) &&\r\n isUndef(elm.innerHTML)) {\r\n // IE doesn't support innerHTML for SVG elements\r\n svgContainer = svgContainer || document.createElement('div');\r\n svgContainer.innerHTML = \"<svg>\".concat(cur, \"</svg>\");\r\n var svg = svgContainer.firstChild;\r\n while (elm.firstChild) {\r\n elm.removeChild(elm.firstChild);\r\n }\r\n while (svg.firstChild) {\r\n elm.appendChild(svg.firstChild);\r\n }\r\n }\r\n else if (\r\n // skip the update if old and new VDOM state is the same.\r\n // `value` is handled separately because the DOM value may be temporarily\r\n // out of sync with VDOM state due to focus, composition and modifiers.\r\n // This #4521 by skipping the unnecessary `checked` update.\r\n cur !== oldProps[key]) {\r\n // some property updates can throw\r\n // e.g. `value` on <progress> w/ non-finite value\r\n try {\r\n elm[key] = cur;\r\n }\r\n catch (e) { }\r\n }\r\n }\r\n}\r\nfunction shouldUpdateValue(elm, checkVal) {\r\n return (\r\n //@ts-expect-error\r\n !elm.composing &&\r\n (elm.tagName === 'OPTION' ||\r\n isNotInFocusAndDirty(elm, checkVal) ||\r\n isDirtyWithModifiers(elm, checkVal)));\r\n}\r\nfunction isNotInFocusAndDirty(elm, checkVal) {\r\n // return true when textbox (.number and .trim) loses focus and its value is\r\n // not equal to the updated value\r\n var notInFocus = true;\r\n // #6157\r\n // work around IE bug when accessing document.activeElement in an iframe\r\n try {\r\n notInFocus = document.activeElement !== elm;\r\n }\r\n catch (e) { }\r\n return notInFocus && elm.value !== checkVal;\r\n}\r\nfunction isDirtyWithModifiers(elm, newVal) {\r\n var value = elm.value;\r\n var modifiers = elm._vModifiers; // injected by v-model runtime\r\n if (isDef(modifiers)) {\r\n if (modifiers.number) {\r\n return toNumber(value) !== toNumber(newVal);\r\n }\r\n if (modifiers.trim) {\r\n return value.trim() !== newVal.trim();\r\n }\r\n }\r\n return value !== newVal;\r\n}\r\nvar domProps = {\r\n create: updateDOMProps,\r\n update: updateDOMProps\r\n};\n\nvar parseStyleText = cached(function (cssText) {\r\n var res = {};\r\n var listDelimiter = /;(?![^(]*\\))/g;\r\n var propertyDelimiter = /:(.+)/;\r\n cssText.split(listDelimiter).forEach(function (item) {\r\n if (item) {\r\n var tmp = item.split(propertyDelimiter);\r\n tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\r\n }\r\n });\r\n return res;\r\n});\r\n// merge static and dynamic style data on the same vnode\r\nfunction normalizeStyleData(data) {\r\n var style = normalizeStyleBinding(data.style);\r\n // static style is pre-processed into an object during compilation\r\n // and is always a fresh object, so it's safe to merge into it\r\n return data.staticStyle ? extend(data.staticStyle, style) : style;\r\n}\r\n// normalize possible array / string values into Object\r\nfunction normalizeStyleBinding(bindingStyle) {\r\n if (Array.isArray(bindingStyle)) {\r\n return toObject(bindingStyle);\r\n }\r\n if (typeof bindingStyle === 'string') {\r\n return parseStyleText(bindingStyle);\r\n }\r\n return bindingStyle;\r\n}\r\n/**\r\n * parent component style should be after child's\r\n * so that parent component's style could override it\r\n */\r\nfunction getStyle(vnode, checkChild) {\r\n var res = {};\r\n var styleData;\r\n if (checkChild) {\r\n var childNode = vnode;\r\n while (childNode.componentInstance) {\r\n childNode = childNode.componentInstance._vnode;\r\n if (childNode &&\r\n childNode.data &&\r\n (styleData = normalizeStyleData(childNode.data))) {\r\n extend(res, styleData);\r\n }\r\n }\r\n }\r\n if ((styleData = normalizeStyleData(vnode.data))) {\r\n extend(res, styleData);\r\n }\r\n var parentNode = vnode;\r\n // @ts-expect-error parentNode.parent not VNodeWithData\r\n while ((parentNode = parentNode.parent)) {\r\n if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {\r\n extend(res, styleData);\r\n }\r\n }\r\n return res;\r\n}\n\nvar cssVarRE = /^--/;\r\nvar importantRE = /\\s*!important$/;\r\nvar setProp = function (el, name, val) {\r\n /* istanbul ignore if */\r\n if (cssVarRE.test(name)) {\r\n el.style.setProperty(name, val);\r\n }\r\n else if (importantRE.test(val)) {\r\n el.style.setProperty(hyphenate(name), val.replace(importantRE, ''), 'important');\r\n }\r\n else {\r\n var normalizedName = normalize(name);\r\n if (Array.isArray(val)) {\r\n // Support values array created by autoprefixer, e.g.\r\n // {display: [\"-webkit-box\", \"-ms-flexbox\", \"flex\"]}\r\n // Set them one by one, and the browser will only set those it can recognize\r\n for (var i = 0, len = val.length; i < len; i++) {\r\n el.style[normalizedName] = val[i];\r\n }\r\n }\r\n else {\r\n el.style[normalizedName] = val;\r\n }\r\n }\r\n};\r\nvar vendorNames = ['Webkit', 'Moz', 'ms'];\r\nvar emptyStyle;\r\nvar normalize = cached(function (prop) {\r\n emptyStyle = emptyStyle || document.createElement('div').style;\r\n prop = camelize(prop);\r\n if (prop !== 'filter' && prop in emptyStyle) {\r\n return prop;\r\n }\r\n var capName = prop.charAt(0).toUpperCase() + prop.slice(1);\r\n for (var i = 0; i < vendorNames.length; i++) {\r\n var name_1 = vendorNames[i] + capName;\r\n if (name_1 in emptyStyle) {\r\n return name_1;\r\n }\r\n }\r\n});\r\nfunction updateStyle(oldVnode, vnode) {\r\n var data = vnode.data;\r\n var oldData = oldVnode.data;\r\n if (isUndef(data.staticStyle) &&\r\n isUndef(data.style) &&\r\n isUndef(oldData.staticStyle) &&\r\n isUndef(oldData.style)) {\r\n return;\r\n }\r\n var cur, name;\r\n var el = vnode.elm;\r\n var oldStaticStyle = oldData.staticStyle;\r\n var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};\r\n // if static style exists, stylebinding already merged into it when doing normalizeStyleData\r\n var oldStyle = oldStaticStyle || oldStyleBinding;\r\n var style = normalizeStyleBinding(vnode.data.style) || {};\r\n // store normalized style under a different key for next diff\r\n // make sure to clone it if it's reactive, since the user likely wants\r\n // to mutate it.\r\n vnode.data.normalizedStyle = isDef(style.__ob__) ? extend({}, style) : style;\r\n var newStyle = getStyle(vnode, true);\r\n for (name in oldStyle) {\r\n if (isUndef(newStyle[name])) {\r\n setProp(el, name, '');\r\n }\r\n }\r\n for (name in newStyle) {\r\n cur = newStyle[name];\r\n if (cur !== oldStyle[name]) {\r\n // ie9 setting to null has no effect, must use empty string\r\n setProp(el, name, cur == null ? '' : cur);\r\n }\r\n }\r\n}\r\nvar style$1 = {\r\n create: updateStyle,\r\n update: updateStyle\r\n};\n\nvar whitespaceRE$1 = /\\s+/;\r\n/**\r\n * Add class with compatibility for SVG since classList is not supported on\r\n * SVG elements in IE\r\n */\r\nfunction addClass(el, cls) {\r\n /* istanbul ignore if */\r\n if (!cls || !(cls = cls.trim())) {\r\n return;\r\n }\r\n /* istanbul ignore else */\r\n if (el.classList) {\r\n if (cls.indexOf(' ') > -1) {\r\n cls.split(whitespaceRE$1).forEach(function (c) { return el.classList.add(c); });\r\n }\r\n else {\r\n el.classList.add(cls);\r\n }\r\n }\r\n else {\r\n var cur = \" \".concat(el.getAttribute('class') || '', \" \");\r\n if (cur.indexOf(' ' + cls + ' ') < 0) {\r\n el.setAttribute('class', (cur + cls).trim());\r\n }\r\n }\r\n}\r\n/**\r\n * Remove class with compatibility for SVG since classList is not supported on\r\n * SVG elements in IE\r\n */\r\nfunction removeClass(el, cls) {\r\n /* istanbul ignore if */\r\n if (!cls || !(cls = cls.trim())) {\r\n return;\r\n }\r\n /* istanbul ignore else */\r\n if (el.classList) {\r\n if (cls.indexOf(' ') > -1) {\r\n cls.split(whitespaceRE$1).forEach(function (c) { return el.classList.remove(c); });\r\n }\r\n else {\r\n el.classList.remove(cls);\r\n }\r\n if (!el.classList.length) {\r\n el.removeAttribute('class');\r\n }\r\n }\r\n else {\r\n var cur = \" \".concat(el.getAttribute('class') || '', \" \");\r\n var tar = ' ' + cls + ' ';\r\n while (cur.indexOf(tar) >= 0) {\r\n cur = cur.replace(tar, ' ');\r\n }\r\n cur = cur.trim();\r\n if (cur) {\r\n el.setAttribute('class', cur);\r\n }\r\n else {\r\n el.removeAttribute('class');\r\n }\r\n }\r\n}\n\nfunction resolveTransition(def) {\r\n if (!def) {\r\n return;\r\n }\r\n /* istanbul ignore else */\r\n if (typeof def === 'object') {\r\n var res = {};\r\n if (def.css !== false) {\r\n extend(res, autoCssTransition(def.name || 'v'));\r\n }\r\n extend(res, def);\r\n return res;\r\n }\r\n else if (typeof def === 'string') {\r\n return autoCssTransition(def);\r\n }\r\n}\r\nvar autoCssTransition = cached(function (name) {\r\n return {\r\n enterClass: \"\".concat(name, \"-enter\"),\r\n enterToClass: \"\".concat(name, \"-enter-to\"),\r\n enterActiveClass: \"\".concat(name, \"-enter-active\"),\r\n leaveClass: \"\".concat(name, \"-leave\"),\r\n leaveToClass: \"\".concat(name, \"-leave-to\"),\r\n leaveActiveClass: \"\".concat(name, \"-leave-active\")\r\n };\r\n});\r\nvar hasTransition = inBrowser && !isIE9;\r\nvar TRANSITION = 'transition';\r\nvar ANIMATION = 'animation';\r\n// Transition property/event sniffing\r\nvar transitionProp = 'transition';\r\nvar transitionEndEvent = 'transitionend';\r\nvar animationProp = 'animation';\r\nvar animationEndEvent = 'animationend';\r\nif (hasTransition) {\r\n /* istanbul ignore if */\r\n if (window.ontransitionend === undefined &&\r\n window.onwebkittransitionend !== undefined) {\r\n transitionProp = 'WebkitTransition';\r\n transitionEndEvent = 'webkitTransitionEnd';\r\n }\r\n if (window.onanimationend === undefined &&\r\n window.onwebkitanimationend !== undefined) {\r\n animationProp = 'WebkitAnimation';\r\n animationEndEvent = 'webkitAnimationEnd';\r\n }\r\n}\r\n// binding to window is necessary to make hot reload work in IE in strict mode\r\nvar raf = inBrowser\r\n ? window.requestAnimationFrame\r\n ? window.requestAnimationFrame.bind(window)\r\n : setTimeout\r\n : /* istanbul ignore next */ function (/* istanbul ignore next */ fn) { return fn(); };\r\nfunction nextFrame(fn) {\r\n raf(function () {\r\n // @ts-expect-error\r\n raf(fn);\r\n });\r\n}\r\nfunction addTransitionClass(el, cls) {\r\n var transitionClasses = el._transitionClasses || (el._transitionClasses = []);\r\n if (transitionClasses.indexOf(cls) < 0) {\r\n transitionClasses.push(cls);\r\n addClass(el, cls);\r\n }\r\n}\r\nfunction removeTransitionClass(el, cls) {\r\n if (el._transitionClasses) {\r\n remove$2(el._transitionClasses, cls);\r\n }\r\n removeClass(el, cls);\r\n}\r\nfunction whenTransitionEnds(el, expectedType, cb) {\r\n var _a = getTransitionInfo(el, expectedType), type = _a.type, timeout = _a.timeout, propCount = _a.propCount;\r\n if (!type)\r\n return cb();\r\n var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;\r\n var ended = 0;\r\n var end = function () {\r\n el.removeEventListener(event, onEnd);\r\n cb();\r\n };\r\n var onEnd = function (e) {\r\n if (e.target === el) {\r\n if (++ended >= propCount) {\r\n end();\r\n }\r\n }\r\n };\r\n setTimeout(function () {\r\n if (ended < propCount) {\r\n end();\r\n }\r\n }, timeout + 1);\r\n el.addEventListener(event, onEnd);\r\n}\r\nvar transformRE = /\\b(transform|all)(,|$)/;\r\nfunction getTransitionInfo(el, expectedType) {\r\n var styles = window.getComputedStyle(el);\r\n // JSDOM may return undefined for transition properties\r\n var transitionDelays = (styles[transitionProp + 'Delay'] || '').split(', ');\r\n var transitionDurations = (styles[transitionProp + 'Duration'] || '').split(', ');\r\n var transitionTimeout = getTimeout(transitionDelays, transitionDurations);\r\n var animationDelays = (styles[animationProp + 'Delay'] || '').split(', ');\r\n var animationDurations = (styles[animationProp + 'Duration'] || '').split(', ');\r\n var animationTimeout = getTimeout(animationDelays, animationDurations);\r\n var type;\r\n var timeout = 0;\r\n var propCount = 0;\r\n /* istanbul ignore if */\r\n if (expectedType === TRANSITION) {\r\n if (transitionTimeout > 0) {\r\n type = TRANSITION;\r\n timeout = transitionTimeout;\r\n propCount = transitionDurations.length;\r\n }\r\n }\r\n else if (expectedType === ANIMATION) {\r\n if (animationTimeout > 0) {\r\n type = ANIMATION;\r\n timeout = animationTimeout;\r\n propCount = animationDurations.length;\r\n }\r\n }\r\n else {\r\n timeout = Math.max(transitionTimeout, animationTimeout);\r\n type =\r\n timeout > 0\r\n ? transitionTimeout > animationTimeout\r\n ? TRANSITION\r\n : ANIMATION\r\n : null;\r\n propCount = type\r\n ? type === TRANSITION\r\n ? transitionDurations.length\r\n : animationDurations.length\r\n : 0;\r\n }\r\n var hasTransform = type === TRANSITION && transformRE.test(styles[transitionProp + 'Property']);\r\n return {\r\n type: type,\r\n timeout: timeout,\r\n propCount: propCount,\r\n hasTransform: hasTransform\r\n };\r\n}\r\nfunction getTimeout(delays, durations) {\r\n /* istanbul ignore next */\r\n while (delays.length < durations.length) {\r\n delays = delays.concat(delays);\r\n }\r\n return Math.max.apply(null, durations.map(function (d, i) {\r\n return toMs(d) + toMs(delays[i]);\r\n }));\r\n}\r\n// Old versions of Chromium (below 61.0.3163.100) formats floating pointer numbers\r\n// in a locale-dependent way, using a comma instead of a dot.\r\n// If comma is not replaced with a dot, the input will be rounded down (i.e. acting\r\n// as a floor function) causing unexpected behaviors\r\nfunction toMs(s) {\r\n return Number(s.slice(0, -1).replace(',', '.')) * 1000;\r\n}\n\nfunction enter(vnode, toggleDisplay) {\r\n var el = vnode.elm;\r\n // call leave callback now\r\n if (isDef(el._leaveCb)) {\r\n el._leaveCb.cancelled = true;\r\n el._leaveCb();\r\n }\r\n var data = resolveTransition(vnode.data.transition);\r\n if (isUndef(data)) {\r\n return;\r\n }\r\n /* istanbul ignore if */\r\n if (isDef(el._enterCb) || el.nodeType !== 1) {\r\n return;\r\n }\r\n var css = data.css, type = data.type, enterClass = data.enterClass, enterToClass = data.enterToClass, enterActiveClass = data.enterActiveClass, appearClass = data.appearClass, appearToClass = data.appearToClass, appearActiveClass = data.appearActiveClass, beforeEnter = data.beforeEnter, enter = data.enter, afterEnter = data.afterEnter, enterCancelled = data.enterCancelled, beforeAppear = data.beforeAppear, appear = data.appear, afterAppear = data.afterAppear, appearCancelled = data.appearCancelled, duration = data.duration;\r\n // activeInstance will always be the <transition> component managing this\r\n // transition. One edge case to check is when the <transition> is placed\r\n // as the root node of a child component. In that case we need to check\r\n // <transition>'s parent for appear check.\r\n var context = activeInstance;\r\n var transitionNode = activeInstance.$vnode;\r\n while (transitionNode && transitionNode.parent) {\r\n context = transitionNode.context;\r\n transitionNode = transitionNode.parent;\r\n }\r\n var isAppear = !context._isMounted || !vnode.isRootInsert;\r\n if (isAppear && !appear && appear !== '') {\r\n return;\r\n }\r\n var startClass = isAppear && appearClass ? appearClass : enterClass;\r\n var activeClass = isAppear && appearActiveClass ? appearActiveClass : enterActiveClass;\r\n var toClass = isAppear && appearToClass ? appearToClass : enterToClass;\r\n var beforeEnterHook = isAppear ? beforeAppear || beforeEnter : beforeEnter;\r\n var enterHook = isAppear ? (isFunction(appear) ? appear : enter) : enter;\r\n var afterEnterHook = isAppear ? afterAppear || afterEnter : afterEnter;\r\n var enterCancelledHook = isAppear\r\n ? appearCancelled || enterCancelled\r\n : enterCancelled;\r\n var explicitEnterDuration = toNumber(isObject(duration) ? duration.enter : duration);\r\n if (process.env.NODE_ENV !== 'production' && explicitEnterDuration != null) {\r\n checkDuration(explicitEnterDuration, 'enter', vnode);\r\n }\r\n var expectsCSS = css !== false && !isIE9;\r\n var userWantsControl = getHookArgumentsLength(enterHook);\r\n var cb = (el._enterCb = once(function () {\r\n if (expectsCSS) {\r\n removeTransitionClass(el, toClass);\r\n removeTransitionClass(el, activeClass);\r\n }\r\n // @ts-expect-error\r\n if (cb.cancelled) {\r\n if (expectsCSS) {\r\n removeTransitionClass(el, startClass);\r\n }\r\n enterCancelledHook && enterCancelledHook(el);\r\n }\r\n else {\r\n afterEnterHook && afterEnterHook(el);\r\n }\r\n el._enterCb = null;\r\n }));\r\n if (!vnode.data.show) {\r\n // remove pending leave element on enter by injecting an insert hook\r\n mergeVNodeHook(vnode, 'insert', function () {\r\n var parent = el.parentNode;\r\n var pendingNode = parent && parent._pending && parent._pending[vnode.key];\r\n if (pendingNode &&\r\n pendingNode.tag === vnode.tag &&\r\n pendingNode.elm._leaveCb) {\r\n pendingNode.elm._leaveCb();\r\n }\r\n enterHook && enterHook(el, cb);\r\n });\r\n }\r\n // start enter transition\r\n beforeEnterHook && beforeEnterHook(el);\r\n if (expectsCSS) {\r\n addTransitionClass(el, startClass);\r\n addTransitionClass(el, activeClass);\r\n nextFrame(function () {\r\n removeTransitionClass(el, startClass);\r\n // @ts-expect-error\r\n if (!cb.cancelled) {\r\n addTransitionClass(el, toClass);\r\n if (!userWantsControl) {\r\n if (isValidDuration(explicitEnterDuration)) {\r\n setTimeout(cb, explicitEnterDuration);\r\n }\r\n else {\r\n whenTransitionEnds(el, type, cb);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n if (vnode.data.show) {\r\n toggleDisplay && toggleDisplay();\r\n enterHook && enterHook(el, cb);\r\n }\r\n if (!expectsCSS && !userWantsControl) {\r\n cb();\r\n }\r\n}\r\nfunction leave(vnode, rm) {\r\n var el = vnode.elm;\r\n // call enter callback now\r\n if (isDef(el._enterCb)) {\r\n el._enterCb.cancelled = true;\r\n el._enterCb();\r\n }\r\n var data = resolveTransition(vnode.data.transition);\r\n if (isUndef(data) || el.nodeType !== 1) {\r\n return rm();\r\n }\r\n /* istanbul ignore if */\r\n if (isDef(el._leaveCb)) {\r\n return;\r\n }\r\n var css = data.css, type = data.type, leaveClass = data.leaveClass, leaveToClass = data.leaveToClass, leaveActiveClass = data.leaveActiveClass, beforeLeave = data.beforeLeave, leave = data.leave, afterLeave = data.afterLeave, leaveCancelled = data.leaveCancelled, delayLeave = data.delayLeave, duration = data.duration;\r\n var expectsCSS = css !== false && !isIE9;\r\n var userWantsControl = getHookArgumentsLength(leave);\r\n var explicitLeaveDuration = toNumber(isObject(duration) ? duration.leave : duration);\r\n if (process.env.NODE_ENV !== 'production' && isDef(explicitLeaveDuration)) {\r\n checkDuration(explicitLeaveDuration, 'leave', vnode);\r\n }\r\n var cb = (el._leaveCb = once(function () {\r\n if (el.parentNode && el.parentNode._pending) {\r\n el.parentNode._pending[vnode.key] = null;\r\n }\r\n if (expectsCSS) {\r\n removeTransitionClass(el, leaveToClass);\r\n removeTransitionClass(el, leaveActiveClass);\r\n }\r\n // @ts-expect-error\r\n if (cb.cancelled) {\r\n if (expectsCSS) {\r\n removeTransitionClass(el, leaveClass);\r\n }\r\n leaveCancelled && leaveCancelled(el);\r\n }\r\n else {\r\n rm();\r\n afterLeave && afterLeave(el);\r\n }\r\n el._leaveCb = null;\r\n }));\r\n if (delayLeave) {\r\n delayLeave(performLeave);\r\n }\r\n else {\r\n performLeave();\r\n }\r\n function performLeave() {\r\n // the delayed leave may have already been cancelled\r\n // @ts-expect-error\r\n if (cb.cancelled) {\r\n return;\r\n }\r\n // record leaving element\r\n if (!vnode.data.show && el.parentNode) {\r\n (el.parentNode._pending || (el.parentNode._pending = {}))[vnode.key] =\r\n vnode;\r\n }\r\n beforeLeave && beforeLeave(el);\r\n if (expectsCSS) {\r\n addTransitionClass(el, leaveClass);\r\n addTransitionClass(el, leaveActiveClass);\r\n nextFrame(function () {\r\n removeTransitionClass(el, leaveClass);\r\n // @ts-expect-error\r\n if (!cb.cancelled) {\r\n addTransitionClass(el, leaveToClass);\r\n if (!userWantsControl) {\r\n if (isValidDuration(explicitLeaveDuration)) {\r\n setTimeout(cb, explicitLeaveDuration);\r\n }\r\n else {\r\n whenTransitionEnds(el, type, cb);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n leave && leave(el, cb);\r\n if (!expectsCSS && !userWantsControl) {\r\n cb();\r\n }\r\n }\r\n}\r\n// only used in dev mode\r\nfunction checkDuration(val, name, vnode) {\r\n if (typeof val !== 'number') {\r\n warn$2(\"<transition> explicit \".concat(name, \" duration is not a valid number - \") +\r\n \"got \".concat(JSON.stringify(val), \".\"), vnode.context);\r\n }\r\n else if (isNaN(val)) {\r\n warn$2(\"<transition> explicit \".concat(name, \" duration is NaN - \") +\r\n 'the duration expression might be incorrect.', vnode.context);\r\n }\r\n}\r\nfunction isValidDuration(val) {\r\n return typeof val === 'number' && !isNaN(val);\r\n}\r\n/**\r\n * Normalize a transition hook's argument length. The hook may be:\r\n * - a merged hook (invoker) with the original in .fns\r\n * - a wrapped component method (check ._length)\r\n * - a plain function (.length)\r\n */\r\nfunction getHookArgumentsLength(fn) {\r\n if (isUndef(fn)) {\r\n return false;\r\n }\r\n // @ts-expect-error\r\n var invokerFns = fn.fns;\r\n if (isDef(invokerFns)) {\r\n // invoker\r\n return getHookArgumentsLength(Array.isArray(invokerFns) ? invokerFns[0] : invokerFns);\r\n }\r\n else {\r\n // @ts-expect-error\r\n return (fn._length || fn.length) > 1;\r\n }\r\n}\r\nfunction _enter(_, vnode) {\r\n if (vnode.data.show !== true) {\r\n enter(vnode);\r\n }\r\n}\r\nvar transition = inBrowser\r\n ? {\r\n create: _enter,\r\n activate: _enter,\r\n remove: function (vnode, rm) {\r\n /* istanbul ignore else */\r\n if (vnode.data.show !== true) {\r\n // @ts-expect-error\r\n leave(vnode, rm);\r\n }\r\n else {\r\n rm();\r\n }\r\n }\r\n }\r\n : {};\n\nvar platformModules = [attrs, klass$1, events, domProps, style$1, transition];\n\n// the directive module should be applied last, after all\r\n// built-in modules have been applied.\r\nvar modules$1 = platformModules.concat(baseModules);\r\nvar patch = createPatchFunction({ nodeOps: nodeOps, modules: modules$1 });\n\n/**\r\n * Not type checking this file because flow doesn't like attaching\r\n * properties to Elements.\r\n */\r\n/* istanbul ignore if */\r\nif (isIE9) {\r\n // http://www.matts411.com/post/internet-explorer-9-oninput/\r\n document.addEventListener('selectionchange', function () {\r\n var el = document.activeElement;\r\n // @ts-expect-error\r\n if (el && el.vmodel) {\r\n trigger(el, 'input');\r\n }\r\n });\r\n}\r\nvar directive = {\r\n inserted: function (el, binding, vnode, oldVnode) {\r\n if (vnode.tag === 'select') {\r\n // #6903\r\n if (oldVnode.elm && !oldVnode.elm._vOptions) {\r\n mergeVNodeHook(vnode, 'postpatch', function () {\r\n directive.componentUpdated(el, binding, vnode);\r\n });\r\n }\r\n else {\r\n setSelected(el, binding, vnode.context);\r\n }\r\n el._vOptions = [].map.call(el.options, getValue);\r\n }\r\n else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {\r\n el._vModifiers = binding.modifiers;\r\n if (!binding.modifiers.lazy) {\r\n el.addEventListener('compositionstart', onCompositionStart);\r\n el.addEventListener('compositionend', onCompositionEnd);\r\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\r\n // switching focus before confirming composition choice\r\n // this also fixes the issue where some browsers e.g. iOS Chrome\r\n // fires \"change\" instead of \"input\" on autocomplete.\r\n el.addEventListener('change', onCompositionEnd);\r\n /* istanbul ignore if */\r\n if (isIE9) {\r\n el.vmodel = true;\r\n }\r\n }\r\n }\r\n },\r\n componentUpdated: function (el, binding, vnode) {\r\n if (vnode.tag === 'select') {\r\n setSelected(el, binding, vnode.context);\r\n // in case the options rendered by v-for have changed,\r\n // it's possible that the value is out-of-sync with the rendered options.\r\n // detect such cases and filter out values that no longer has a matching\r\n // option in the DOM.\r\n var prevOptions_1 = el._vOptions;\r\n var curOptions_1 = (el._vOptions = [].map.call(el.options, getValue));\r\n if (curOptions_1.some(function (o, i) { return !looseEqual(o, prevOptions_1[i]); })) {\r\n // trigger change event if\r\n // no matching option found for at least one value\r\n var needReset = el.multiple\r\n ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions_1); })\r\n : binding.value !== binding.oldValue &&\r\n hasNoMatchingOption(binding.value, curOptions_1);\r\n if (needReset) {\r\n trigger(el, 'change');\r\n }\r\n }\r\n }\r\n }\r\n};\r\nfunction setSelected(el, binding, vm) {\r\n actuallySetSelected(el, binding, vm);\r\n /* istanbul ignore if */\r\n if (isIE || isEdge) {\r\n setTimeout(function () {\r\n actuallySetSelected(el, binding, vm);\r\n }, 0);\r\n }\r\n}\r\nfunction actuallySetSelected(el, binding, vm) {\r\n var value = binding.value;\r\n var isMultiple = el.multiple;\r\n if (isMultiple && !Array.isArray(value)) {\r\n process.env.NODE_ENV !== 'production' &&\r\n warn$2(\"<select multiple v-model=\\\"\".concat(binding.expression, \"\\\"> \") +\r\n \"expects an Array value for its binding, but got \".concat(Object.prototype.toString\r\n .call(value)\r\n .slice(8, -1)), vm);\r\n return;\r\n }\r\n var selected, option;\r\n for (var i = 0, l = el.options.length; i < l; i++) {\r\n option = el.options[i];\r\n if (isMultiple) {\r\n selected = looseIndexOf(value, getValue(option)) > -1;\r\n if (option.selected !== selected) {\r\n option.selected = selected;\r\n }\r\n }\r\n else {\r\n if (looseEqual(getValue(option), value)) {\r\n if (el.selectedIndex !== i) {\r\n el.selectedIndex = i;\r\n }\r\n return;\r\n }\r\n }\r\n }\r\n if (!isMultiple) {\r\n el.selectedIndex = -1;\r\n }\r\n}\r\nfunction hasNoMatchingOption(value, options) {\r\n return options.every(function (o) { return !looseEqual(o, value); });\r\n}\r\nfunction getValue(option) {\r\n return '_value' in option ? option._value : option.value;\r\n}\r\nfunction onCompositionStart(e) {\r\n e.target.composing = true;\r\n}\r\nfunction onCompositionEnd(e) {\r\n // prevent triggering an input event for no reason\r\n if (!e.target.composing)\r\n return;\r\n e.target.composing = false;\r\n trigger(e.target, 'input');\r\n}\r\nfunction trigger(el, type) {\r\n var e = document.createEvent('HTMLEvents');\r\n e.initEvent(type, true, true);\r\n el.dispatchEvent(e);\r\n}\n\n// recursively search for possible transition defined inside the component root\r\nfunction locateNode(vnode) {\r\n // @ts-expect-error\r\n return vnode.componentInstance && (!vnode.data || !vnode.data.transition)\r\n ? locateNode(vnode.componentInstance._vnode)\r\n : vnode;\r\n}\r\nvar show = {\r\n bind: function (el, _a, vnode) {\r\n var value = _a.value;\r\n vnode = locateNode(vnode);\r\n var transition = vnode.data && vnode.data.transition;\r\n var originalDisplay = (el.__vOriginalDisplay =\r\n el.style.display === 'none' ? '' : el.style.display);\r\n if (value && transition) {\r\n vnode.data.show = true;\r\n enter(vnode, function () {\r\n el.style.display = originalDisplay;\r\n });\r\n }\r\n else {\r\n el.style.display = value ? originalDisplay : 'none';\r\n }\r\n },\r\n update: function (el, _a, vnode) {\r\n var value = _a.value, oldValue = _a.oldValue;\r\n /* istanbul ignore if */\r\n if (!value === !oldValue)\r\n return;\r\n vnode = locateNode(vnode);\r\n var transition = vnode.data && vnode.data.transition;\r\n if (transition) {\r\n vnode.data.show = true;\r\n if (value) {\r\n enter(vnode, function () {\r\n el.style.display = el.__vOriginalDisplay;\r\n });\r\n }\r\n else {\r\n leave(vnode, function () {\r\n el.style.display = 'none';\r\n });\r\n }\r\n }\r\n else {\r\n el.style.display = value ? el.__vOriginalDisplay : 'none';\r\n }\r\n },\r\n unbind: function (el, binding, vnode, oldVnode, isDestroy) {\r\n if (!isDestroy) {\r\n el.style.display = el.__vOriginalDisplay;\r\n }\r\n }\r\n};\n\nvar platformDirectives = {\r\n model: directive,\r\n show: show\r\n};\n\n// Provides transition support for a single element/component.\r\nvar transitionProps = {\r\n name: String,\r\n appear: Boolean,\r\n css: Boolean,\r\n mode: String,\r\n type: String,\r\n enterClass: String,\r\n leaveClass: String,\r\n enterToClass: String,\r\n leaveToClass: String,\r\n enterActiveClass: String,\r\n leaveActiveClass: String,\r\n appearClass: String,\r\n appearActiveClass: String,\r\n appearToClass: String,\r\n duration: [Number, String, Object]\r\n};\r\n// in case the child is also an abstract component, e.g. <keep-alive>\r\n// we want to recursively retrieve the real component to be rendered\r\nfunction getRealChild(vnode) {\r\n var compOptions = vnode && vnode.componentOptions;\r\n if (compOptions && compOptions.Ctor.options.abstract) {\r\n return getRealChild(getFirstComponentChild(compOptions.children));\r\n }\r\n else {\r\n return vnode;\r\n }\r\n}\r\nfunction extractTransitionData(comp) {\r\n var data = {};\r\n var options = comp.$options;\r\n // props\r\n for (var key in options.propsData) {\r\n data[key] = comp[key];\r\n }\r\n // events.\r\n // extract listeners and pass them directly to the transition methods\r\n var listeners = options._parentListeners;\r\n for (var key in listeners) {\r\n data[camelize(key)] = listeners[key];\r\n }\r\n return data;\r\n}\r\nfunction placeholder(h, rawChild) {\r\n // @ts-expect-error\r\n if (/\\d-keep-alive$/.test(rawChild.tag)) {\r\n return h('keep-alive', {\r\n props: rawChild.componentOptions.propsData\r\n });\r\n }\r\n}\r\nfunction hasParentTransition(vnode) {\r\n while ((vnode = vnode.parent)) {\r\n if (vnode.data.transition) {\r\n return true;\r\n }\r\n }\r\n}\r\nfunction isSameChild(child, oldChild) {\r\n return oldChild.key === child.key && oldChild.tag === child.tag;\r\n}\r\nvar isNotTextNode = function (c) { return c.tag || isAsyncPlaceholder(c); };\r\nvar isVShowDirective = function (d) { return d.name === 'show'; };\r\nvar Transition = {\r\n name: 'transition',\r\n props: transitionProps,\r\n abstract: true,\r\n render: function (h) {\r\n var _this = this;\r\n var children = this.$slots.default;\r\n if (!children) {\r\n return;\r\n }\r\n // filter out text nodes (possible whitespaces)\r\n children = children.filter(isNotTextNode);\r\n /* istanbul ignore if */\r\n if (!children.length) {\r\n return;\r\n }\r\n // warn multiple elements\r\n if (process.env.NODE_ENV !== 'production' && children.length > 1) {\r\n warn$2('<transition> can only be used on a single element. Use ' +\r\n '<transition-group> for lists.', this.$parent);\r\n }\r\n var mode = this.mode;\r\n // warn invalid mode\r\n if (process.env.NODE_ENV !== 'production' && mode && mode !== 'in-out' && mode !== 'out-in') {\r\n warn$2('invalid <transition> mode: ' + mode, this.$parent);\r\n }\r\n var rawChild = children[0];\r\n // if this is a component root node and the component's\r\n // parent container node also has transition, skip.\r\n if (hasParentTransition(this.$vnode)) {\r\n return rawChild;\r\n }\r\n // apply transition data to child\r\n // use getRealChild() to ignore abstract components e.g. keep-alive\r\n var child = getRealChild(rawChild);\r\n /* istanbul ignore if */\r\n if (!child) {\r\n return rawChild;\r\n }\r\n if (this._leaving) {\r\n return placeholder(h, rawChild);\r\n }\r\n // ensure a key that is unique to the vnode type and to this transition\r\n // component instance. This key will be used to remove pending leaving nodes\r\n // during entering.\r\n var id = \"__transition-\".concat(this._uid, \"-\");\r\n child.key =\r\n child.key == null\r\n ? child.isComment\r\n ? id + 'comment'\r\n : id + child.tag\r\n : isPrimitive(child.key)\r\n ? String(child.key).indexOf(id) === 0\r\n ? child.key\r\n : id + child.key\r\n : child.key;\r\n var data = ((child.data || (child.data = {})).transition =\r\n extractTransitionData(this));\r\n var oldRawChild = this._vnode;\r\n var oldChild = getRealChild(oldRawChild);\r\n // mark v-show\r\n // so that the transition module can hand over the control to the directive\r\n if (child.data.directives && child.data.directives.some(isVShowDirective)) {\r\n child.data.show = true;\r\n }\r\n if (oldChild &&\r\n oldChild.data &&\r\n !isSameChild(child, oldChild) &&\r\n !isAsyncPlaceholder(oldChild) &&\r\n // #6687 component root is a comment node\r\n !(oldChild.componentInstance &&\r\n oldChild.componentInstance._vnode.isComment)) {\r\n // replace old child transition data with fresh one\r\n // important for dynamic transitions!\r\n var oldData = (oldChild.data.transition = extend({}, data));\r\n // handle transition mode\r\n if (mode === 'out-in') {\r\n // return placeholder node and queue update when leave finishes\r\n this._leaving = true;\r\n mergeVNodeHook(oldData, 'afterLeave', function () {\r\n _this._leaving = false;\r\n _this.$forceUpdate();\r\n });\r\n return placeholder(h, rawChild);\r\n }\r\n else if (mode === 'in-out') {\r\n if (isAsyncPlaceholder(child)) {\r\n return oldRawChild;\r\n }\r\n var delayedLeave_1;\r\n var performLeave = function () {\r\n delayedLeave_1();\r\n };\r\n mergeVNodeHook(data, 'afterEnter', performLeave);\r\n mergeVNodeHook(data, 'enterCancelled', performLeave);\r\n mergeVNodeHook(oldData, 'delayLeave', function (leave) {\r\n delayedLeave_1 = leave;\r\n });\r\n }\r\n }\r\n return rawChild;\r\n }\r\n};\n\n// Provides transition support for list items.\r\nvar props = extend({\r\n tag: String,\r\n moveClass: String\r\n}, transitionProps);\r\ndelete props.mode;\r\nvar TransitionGroup = {\r\n props: props,\r\n beforeMount: function () {\r\n var _this = this;\r\n var update = this._update;\r\n this._update = function (vnode, hydrating) {\r\n var restoreActiveInstance = setActiveInstance(_this);\r\n // force removing pass\r\n _this.__patch__(_this._vnode, _this.kept, false, // hydrating\r\n true // removeOnly (!important, avoids unnecessary moves)\r\n );\r\n _this._vnode = _this.kept;\r\n restoreActiveInstance();\r\n update.call(_this, vnode, hydrating);\r\n };\r\n },\r\n render: function (h) {\r\n var tag = this.tag || this.$vnode.data.tag || 'span';\r\n var map = Object.create(null);\r\n var prevChildren = (this.prevChildren = this.children);\r\n var rawChildren = this.$slots.default || [];\r\n var children = (this.children = []);\r\n var transitionData = extractTransitionData(this);\r\n for (var i = 0; i < rawChildren.length; i++) {\r\n var c = rawChildren[i];\r\n if (c.tag) {\r\n if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {\r\n children.push(c);\r\n map[c.key] = c;\r\n (c.data || (c.data = {})).transition = transitionData;\r\n }\r\n else if (process.env.NODE_ENV !== 'production') {\r\n var opts = c.componentOptions;\r\n var name_1 = opts\r\n ? opts.Ctor.options.name || opts.tag || ''\r\n : c.tag;\r\n warn$2(\"<transition-group> children must be keyed: <\".concat(name_1, \">\"));\r\n }\r\n }\r\n }\r\n if (prevChildren) {\r\n var kept = [];\r\n var removed = [];\r\n for (var i = 0; i < prevChildren.length; i++) {\r\n var c = prevChildren[i];\r\n c.data.transition = transitionData;\r\n // @ts-expect-error .getBoundingClientRect is not typed in Node\r\n c.data.pos = c.elm.getBoundingClientRect();\r\n if (map[c.key]) {\r\n kept.push(c);\r\n }\r\n else {\r\n removed.push(c);\r\n }\r\n }\r\n this.kept = h(tag, null, kept);\r\n this.removed = removed;\r\n }\r\n return h(tag, null, children);\r\n },\r\n updated: function () {\r\n var children = this.prevChildren;\r\n var moveClass = this.moveClass || (this.name || 'v') + '-move';\r\n if (!children.length || !this.hasMove(children[0].elm, moveClass)) {\r\n return;\r\n }\r\n // we divide the work into three loops to avoid mixing DOM reads and writes\r\n // in each iteration - which helps prevent layout thrashing.\r\n children.forEach(callPendingCbs);\r\n children.forEach(recordPosition);\r\n children.forEach(applyTranslation);\r\n // force reflow to put everything in position\r\n // assign to this to avoid being removed in tree-shaking\r\n // $flow-disable-line\r\n this._reflow = document.body.offsetHeight;\r\n children.forEach(function (c) {\r\n if (c.data.moved) {\r\n var el_1 = c.elm;\r\n var s = el_1.style;\r\n addTransitionClass(el_1, moveClass);\r\n s.transform = s.WebkitTransform = s.transitionDuration = '';\r\n el_1.addEventListener(transitionEndEvent, (el_1._moveCb = function cb(e) {\r\n if (e && e.target !== el_1) {\r\n return;\r\n }\r\n if (!e || /transform$/.test(e.propertyName)) {\r\n el_1.removeEventListener(transitionEndEvent, cb);\r\n el_1._moveCb = null;\r\n removeTransitionClass(el_1, moveClass);\r\n }\r\n }));\r\n }\r\n });\r\n },\r\n methods: {\r\n hasMove: function (el, moveClass) {\r\n /* istanbul ignore if */\r\n if (!hasTransition) {\r\n return false;\r\n }\r\n /* istanbul ignore if */\r\n if (this._hasMove) {\r\n return this._hasMove;\r\n }\r\n // Detect whether an element with the move class applied has\r\n // CSS transitions. Since the element may be inside an entering\r\n // transition at this very moment, we make a clone of it and remove\r\n // all other transition classes applied to ensure only the move class\r\n // is applied.\r\n var clone = el.cloneNode();\r\n if (el._transitionClasses) {\r\n el._transitionClasses.forEach(function (cls) {\r\n removeClass(clone, cls);\r\n });\r\n }\r\n addClass(clone, moveClass);\r\n clone.style.display = 'none';\r\n this.$el.appendChild(clone);\r\n var info = getTransitionInfo(clone);\r\n this.$el.removeChild(clone);\r\n return (this._hasMove = info.hasTransform);\r\n }\r\n }\r\n};\r\nfunction callPendingCbs(c) {\r\n /* istanbul ignore if */\r\n if (c.elm._moveCb) {\r\n c.elm._moveCb();\r\n }\r\n /* istanbul ignore if */\r\n if (c.elm._enterCb) {\r\n c.elm._enterCb();\r\n }\r\n}\r\nfunction recordPosition(c) {\r\n c.data.newPos = c.elm.getBoundingClientRect();\r\n}\r\nfunction applyTranslation(c) {\r\n var oldPos = c.data.pos;\r\n var newPos = c.data.newPos;\r\n var dx = oldPos.left - newPos.left;\r\n var dy = oldPos.top - newPos.top;\r\n if (dx || dy) {\r\n c.data.moved = true;\r\n var s = c.elm.style;\r\n s.transform = s.WebkitTransform = \"translate(\".concat(dx, \"px,\").concat(dy, \"px)\");\r\n s.transitionDuration = '0s';\r\n }\r\n}\n\nvar platformComponents = {\r\n Transition: Transition,\r\n TransitionGroup: TransitionGroup\r\n};\n\n// install platform specific utils\r\nVue.config.mustUseProp = mustUseProp;\r\nVue.config.isReservedTag = isReservedTag;\r\nVue.config.isReservedAttr = isReservedAttr;\r\nVue.config.getTagNamespace = getTagNamespace;\r\nVue.config.isUnknownElement = isUnknownElement;\r\n// install platform runtime directives & components\r\nextend(Vue.options.directives, platformDirectives);\r\nextend(Vue.options.components, platformComponents);\r\n// install platform patch function\r\nVue.prototype.__patch__ = inBrowser ? patch : noop;\r\n// public mount method\r\nVue.prototype.$mount = function (el, hydrating) {\r\n el = el && inBrowser ? query(el) : undefined;\r\n return mountComponent(this, el, hydrating);\r\n};\r\n// devtools global hook\r\n/* istanbul ignore next */\r\nif (inBrowser) {\r\n setTimeout(function () {\r\n if (config.devtools) {\r\n if (devtools) {\r\n devtools.emit('init', Vue);\r\n }\r\n else if (process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test') {\r\n // @ts-expect-error\r\n console[console.info ? 'info' : 'log']('Download the Vue Devtools extension for a better development experience:\\n' +\r\n 'https://github.com/vuejs/vue-devtools');\r\n }\r\n }\r\n if (process.env.NODE_ENV !== 'production' &&\r\n process.env.NODE_ENV !== 'test' &&\r\n config.productionTip !== false &&\r\n typeof console !== 'undefined') {\r\n // @ts-expect-error\r\n console[console.info ? 'info' : 'log'](\"You are running Vue in development mode.\\n\" +\r\n \"Make sure to turn on production mode when deploying for production.\\n\" +\r\n \"See more tips at https://vuejs.org/guide/deployment.html\");\r\n }\r\n }, 0);\r\n}\n\nvar defaultTagRE = /\\{\\{((?:.|\\r?\\n)+?)\\}\\}/g;\r\nvar regexEscapeRE = /[-.*+?^${}()|[\\]\\/\\\\]/g;\r\nvar buildRegex = cached(function (delimiters) {\r\n var open = delimiters[0].replace(regexEscapeRE, '\\\\$&');\r\n var close = delimiters[1].replace(regexEscapeRE, '\\\\$&');\r\n return new RegExp(open + '((?:.|\\\\n)+?)' + close, 'g');\r\n});\r\nfunction parseText(text, delimiters) {\r\n //@ts-expect-error\r\n var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE;\r\n if (!tagRE.test(text)) {\r\n return;\r\n }\r\n var tokens = [];\r\n var rawTokens = [];\r\n var lastIndex = (tagRE.lastIndex = 0);\r\n var match, index, tokenValue;\r\n while ((match = tagRE.exec(text))) {\r\n index = match.index;\r\n // push text token\r\n if (index > lastIndex) {\r\n rawTokens.push((tokenValue = text.slice(lastIndex, index)));\r\n tokens.push(JSON.stringify(tokenValue));\r\n }\r\n // tag token\r\n var exp = parseFilters(match[1].trim());\r\n tokens.push(\"_s(\".concat(exp, \")\"));\r\n rawTokens.push({ '@binding': exp });\r\n lastIndex = index + match[0].length;\r\n }\r\n if (lastIndex < text.length) {\r\n rawTokens.push((tokenValue = text.slice(lastIndex)));\r\n tokens.push(JSON.stringify(tokenValue));\r\n }\r\n return {\r\n expression: tokens.join('+'),\r\n tokens: rawTokens\r\n };\r\n}\n\nfunction transformNode$1(el, options) {\r\n var warn = options.warn || baseWarn;\r\n var staticClass = getAndRemoveAttr(el, 'class');\r\n if (process.env.NODE_ENV !== 'production' && staticClass) {\r\n var res = parseText(staticClass, options.delimiters);\r\n if (res) {\r\n warn(\"class=\\\"\".concat(staticClass, \"\\\": \") +\r\n 'Interpolation inside attributes has been removed. ' +\r\n 'Use v-bind or the colon shorthand instead. For example, ' +\r\n 'instead of <div class=\"{{ val }}\">, use <div :class=\"val\">.', el.rawAttrsMap['class']);\r\n }\r\n }\r\n if (staticClass) {\r\n el.staticClass = JSON.stringify(staticClass.replace(/\\s+/g, ' ').trim());\r\n }\r\n var classBinding = getBindingAttr(el, 'class', false /* getStatic */);\r\n if (classBinding) {\r\n el.classBinding = classBinding;\r\n }\r\n}\r\nfunction genData$2(el) {\r\n var data = '';\r\n if (el.staticClass) {\r\n data += \"staticClass:\".concat(el.staticClass, \",\");\r\n }\r\n if (el.classBinding) {\r\n data += \"class:\".concat(el.classBinding, \",\");\r\n }\r\n return data;\r\n}\r\nvar klass = {\r\n staticKeys: ['staticClass'],\r\n transformNode: transformNode$1,\r\n genData: genData$2\r\n};\n\nfunction transformNode(el, options) {\r\n var warn = options.warn || baseWarn;\r\n var staticStyle = getAndRemoveAttr(el, 'style');\r\n if (staticStyle) {\r\n /* istanbul ignore if */\r\n if (process.env.NODE_ENV !== 'production') {\r\n var res = parseText(staticStyle, options.delimiters);\r\n if (res) {\r\n warn(\"style=\\\"\".concat(staticStyle, \"\\\": \") +\r\n 'Interpolation inside attributes has been removed. ' +\r\n 'Use v-bind or the colon shorthand instead. For example, ' +\r\n 'instead of <div style=\"{{ val }}\">, use <div :style=\"val\">.', el.rawAttrsMap['style']);\r\n }\r\n }\r\n el.staticStyle = JSON.stringify(parseStyleText(staticStyle));\r\n }\r\n var styleBinding = getBindingAttr(el, 'style', false /* getStatic */);\r\n if (styleBinding) {\r\n el.styleBinding = styleBinding;\r\n }\r\n}\r\nfunction genData$1(el) {\r\n var data = '';\r\n if (el.staticStyle) {\r\n data += \"staticStyle:\".concat(el.staticStyle, \",\");\r\n }\r\n if (el.styleBinding) {\r\n data += \"style:(\".concat(el.styleBinding, \"),\");\r\n }\r\n return data;\r\n}\r\nvar style = {\r\n staticKeys: ['staticStyle'],\r\n transformNode: transformNode,\r\n genData: genData$1\r\n};\n\nvar decoder;\r\nvar he = {\r\n decode: function (html) {\r\n decoder = decoder || document.createElement('div');\r\n decoder.innerHTML = html;\r\n return decoder.textContent;\r\n }\r\n};\n\nvar isUnaryTag = makeMap('area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' +\r\n 'link,meta,param,source,track,wbr');\r\n// Elements that you can, intentionally, leave open\r\n// (and which close themselves)\r\nvar canBeLeftOpenTag = makeMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source');\r\n// HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3\r\n// Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content\r\nvar isNonPhrasingTag = makeMap('address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' +\r\n 'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' +\r\n 'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' +\r\n 'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' +\r\n 'title,tr,track');\n\n/**\r\n * Not type-checking this file because it's mostly vendor code.\r\n */\r\n// Regular Expressions for parsing tags and attributes\r\nvar attribute = /^\\s*([^\\s\"'<>\\/=]+)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/;\r\nvar dynamicArgAttribute = /^\\s*((?:v-[\\w-]+:|@|:|#)\\[[^=]+?\\][^\\s\"'<>\\/=]*)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/;\r\nvar ncname = \"[a-zA-Z_][\\\\-\\\\.0-9_a-zA-Z\".concat(unicodeRegExp.source, \"]*\");\r\nvar qnameCapture = \"((?:\".concat(ncname, \"\\\\:)?\").concat(ncname, \")\");\r\nvar startTagOpen = new RegExp(\"^<\".concat(qnameCapture));\r\nvar startTagClose = /^\\s*(\\/?)>/;\r\nvar endTag = new RegExp(\"^<\\\\/\".concat(qnameCapture, \"[^>]*>\"));\r\nvar doctype = /^<!DOCTYPE [^>]+>/i;\r\n// #7298: escape - to avoid being passed as HTML comment when inlined in page\r\nvar comment = /^<!\\--/;\r\nvar conditionalComment = /^<!\\[/;\r\n// Special Elements (can contain anything)\r\nvar isPlainTextElement = makeMap('script,style,textarea', true);\r\nvar reCache = {};\r\nvar decodingMap = {\r\n '<': '<',\r\n '>': '>',\r\n '"': '\"',\r\n '&': '&',\r\n ' ': '\\n',\r\n ' ': '\\t',\r\n ''': \"'\"\r\n};\r\nvar encodedAttr = /&(?:lt|gt|quot|amp|#39);/g;\r\nvar encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#39|#10|#9);/g;\r\n// #5992\r\nvar isIgnoreNewlineTag = makeMap('pre,textarea', true);\r\nvar shouldIgnoreFirstNewline = function (tag, html) {\r\n return tag && isIgnoreNewlineTag(tag) && html[0] === '\\n';\r\n};\r\nfunction decodeAttr(value, shouldDecodeNewlines) {\r\n var re = shouldDecodeNewlines ? encodedAttrWithNewLines : encodedAttr;\r\n return value.replace(re, function (match) { return decodingMap[match]; });\r\n}\r\nfunction parseHTML(html, options) {\r\n var stack = [];\r\n var expectHTML = options.expectHTML;\r\n var isUnaryTag = options.isUnaryTag || no;\r\n var canBeLeftOpenTag = options.canBeLeftOpenTag || no;\r\n var index = 0;\r\n var last, lastTag;\r\n var _loop_1 = function () {\r\n last = html;\r\n // Make sure we're not in a plaintext content element like script/style\r\n if (!lastTag || !isPlainTextElement(lastTag)) {\r\n var textEnd = html.indexOf('<');\r\n if (textEnd === 0) {\r\n // Comment:\r\n if (comment.test(html)) {\r\n var commentEnd = html.indexOf('-->');\r\n if (commentEnd >= 0) {\r\n if (options.shouldKeepComment && options.comment) {\r\n options.comment(html.substring(4, commentEnd), index, index + commentEnd + 3);\r\n }\r\n advance(commentEnd + 3);\r\n return \"continue\";\r\n }\r\n }\r\n // http://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment\r\n if (conditionalComment.test(html)) {\r\n var conditionalEnd = html.indexOf(']>');\r\n if (conditionalEnd >= 0) {\r\n advance(conditionalEnd + 2);\r\n return \"continue\";\r\n }\r\n }\r\n // Doctype:\r\n var doctypeMatch = html.match(doctype);\r\n if (doctypeMatch) {\r\n advance(doctypeMatch[0].length);\r\n return \"continue\";\r\n }\r\n // End tag:\r\n var endTagMatch = html.match(endTag);\r\n if (endTagMatch) {\r\n var curIndex = index;\r\n advance(endTagMatch[0].length);\r\n parseEndTag(endTagMatch[1], curIndex, index);\r\n return \"continue\";\r\n }\r\n // Start tag:\r\n var startTagMatch = parseStartTag();\r\n if (startTagMatch) {\r\n handleStartTag(startTagMatch);\r\n if (shouldIgnoreFirstNewline(startTagMatch.tagName, html)) {\r\n advance(1);\r\n }\r\n return \"continue\";\r\n }\r\n }\r\n var text = void 0, rest = void 0, next = void 0;\r\n if (textEnd >= 0) {\r\n rest = html.slice(textEnd);\r\n while (!endTag.test(rest) &&\r\n !startTagOpen.test(rest) &&\r\n !comment.test(rest) &&\r\n !conditionalComment.test(rest)) {\r\n // < in plain text, be forgiving and treat it as text\r\n next = rest.indexOf('<', 1);\r\n if (next < 0)\r\n break;\r\n textEnd += next;\r\n rest = html.slice(textEnd);\r\n }\r\n text = html.substring(0, textEnd);\r\n }\r\n if (textEnd < 0) {\r\n text = html;\r\n }\r\n if (text) {\r\n advance(text.length);\r\n }\r\n if (options.chars && text) {\r\n options.chars(text, index - text.length, index);\r\n }\r\n }\r\n else {\r\n var endTagLength_1 = 0;\r\n var stackedTag_1 = lastTag.toLowerCase();\r\n var reStackedTag = reCache[stackedTag_1] ||\r\n (reCache[stackedTag_1] = new RegExp('([\\\\s\\\\S]*?)(</' + stackedTag_1 + '[^>]*>)', 'i'));\r\n var rest = html.replace(reStackedTag, function (all, text, endTag) {\r\n endTagLength_1 = endTag.length;\r\n if (!isPlainTextElement(stackedTag_1) && stackedTag_1 !== 'noscript') {\r\n text = text\r\n .replace(/<!\\--([\\s\\S]*?)-->/g, '$1') // #7298\r\n .replace(/<!\\[CDATA\\[([\\s\\S]*?)]]>/g, '$1');\r\n }\r\n if (shouldIgnoreFirstNewline(stackedTag_1, text)) {\r\n text = text.slice(1);\r\n }\r\n if (options.chars) {\r\n options.chars(text);\r\n }\r\n return '';\r\n });\r\n index += html.length - rest.length;\r\n html = rest;\r\n parseEndTag(stackedTag_1, index - endTagLength_1, index);\r\n }\r\n if (html === last) {\r\n options.chars && options.chars(html);\r\n if (process.env.NODE_ENV !== 'production' && !stack.length && options.warn) {\r\n options.warn(\"Mal-formatted tag at end of template: \\\"\".concat(html, \"\\\"\"), {\r\n start: index + html.length\r\n });\r\n }\r\n return \"break\";\r\n }\r\n };\r\n while (html) {\r\n var state_1 = _loop_1();\r\n if (state_1 === \"break\")\r\n break;\r\n }\r\n // Clean up any remaining tags\r\n parseEndTag();\r\n function advance(n) {\r\n index += n;\r\n html = html.substring(n);\r\n }\r\n function parseStartTag() {\r\n var start = html.match(startTagOpen);\r\n if (start) {\r\n var match = {\r\n tagName: start[1],\r\n attrs: [],\r\n start: index\r\n };\r\n advance(start[0].length);\r\n var end = void 0, attr = void 0;\r\n while (!(end = html.match(startTagClose)) &&\r\n (attr = html.match(dynamicArgAttribute) || html.match(attribute))) {\r\n attr.start = index;\r\n advance(attr[0].length);\r\n attr.end = index;\r\n match.attrs.push(attr);\r\n }\r\n if (end) {\r\n match.unarySlash = end[1];\r\n advance(end[0].length);\r\n match.end = index;\r\n return match;\r\n }\r\n }\r\n }\r\n function handleStartTag(match) {\r\n var tagName = match.tagName;\r\n var unarySlash = match.unarySlash;\r\n if (expectHTML) {\r\n if (lastTag === 'p' && isNonPhrasingTag(tagName)) {\r\n parseEndTag(lastTag);\r\n }\r\n if (canBeLeftOpenTag(tagName) && lastTag === tagName) {\r\n parseEndTag(tagName);\r\n }\r\n }\r\n var unary = isUnaryTag(tagName) || !!unarySlash;\r\n var l = match.attrs.length;\r\n var attrs = new Array(l);\r\n for (var i = 0; i < l; i++) {\r\n var args = match.attrs[i];\r\n var value = args[3] || args[4] || args[5] || '';\r\n var shouldDecodeNewlines = tagName === 'a' && args[1] === 'href'\r\n ? options.shouldDecodeNewlinesForHref\r\n : options.shouldDecodeNewlines;\r\n attrs[i] = {\r\n name: args[1],\r\n value: decodeAttr(value, shouldDecodeNewlines)\r\n };\r\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\r\n attrs[i].start = args.start + args[0].match(/^\\s*/).length;\r\n attrs[i].end = args.end;\r\n }\r\n }\r\n if (!unary) {\r\n stack.push({\r\n tag: tagName,\r\n lowerCasedTag: tagName.toLowerCase(),\r\n attrs: attrs,\r\n start: match.start,\r\n end: match.end\r\n });\r\n lastTag = tagName;\r\n }\r\n if (options.start) {\r\n options.start(tagName, attrs, unary, match.start, match.end);\r\n }\r\n }\r\n function parseEndTag(tagName, start, end) {\r\n var pos, lowerCasedTagName;\r\n if (start == null)\r\n start = index;\r\n if (end == null)\r\n end = index;\r\n // Find the closest opened tag of the same type\r\n if (tagName) {\r\n lowerCasedTagName = tagName.toLowerCase();\r\n for (pos = stack.length - 1; pos >= 0; pos--) {\r\n if (stack[pos].lowerCasedTag === lowerCasedTagName) {\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n // If no tag name is provided, clean shop\r\n pos = 0;\r\n }\r\n if (pos >= 0) {\r\n // Close all the open elements, up the stack\r\n for (var i = stack.length - 1; i >= pos; i--) {\r\n if (process.env.NODE_ENV !== 'production' && (i > pos || !tagName) && options.warn) {\r\n options.warn(\"tag <\".concat(stack[i].tag, \"> has no matching end tag.\"), {\r\n start: stack[i].start,\r\n end: stack[i].end\r\n });\r\n }\r\n if (options.end) {\r\n options.end(stack[i].tag, start, end);\r\n }\r\n }\r\n // Remove the open elements from the stack\r\n stack.length = pos;\r\n lastTag = pos && stack[pos - 1].tag;\r\n }\r\n else if (lowerCasedTagName === 'br') {\r\n if (options.start) {\r\n options.start(tagName, [], true, start, end);\r\n }\r\n }\r\n else if (lowerCasedTagName === 'p') {\r\n if (options.start) {\r\n options.start(tagName, [], false, start, end);\r\n }\r\n if (options.end) {\r\n options.end(tagName, start, end);\r\n }\r\n }\r\n }\r\n}\n\nvar onRE = /^@|^v-on:/;\r\nvar dirRE = /^v-|^@|^:|^#/;\r\nvar forAliasRE = /([\\s\\S]*?)\\s+(?:in|of)\\s+([\\s\\S]*)/;\r\nvar forIteratorRE = /,([^,\\}\\]]*)(?:,([^,\\}\\]]*))?$/;\r\nvar stripParensRE = /^\\(|\\)$/g;\r\nvar dynamicArgRE = /^\\[.*\\]$/;\r\nvar argRE = /:(.*)$/;\r\nvar bindRE = /^:|^\\.|^v-bind:/;\r\nvar modifierRE = /\\.[^.\\]]+(?=[^\\]]*$)/g;\r\nvar slotRE = /^v-slot(:|$)|^#/;\r\nvar lineBreakRE = /[\\r\\n]/;\r\nvar whitespaceRE = /[ \\f\\t\\r\\n]+/g;\r\nvar invalidAttributeRE = /[\\s\"'<>\\/=]/;\r\nvar decodeHTMLCached = cached(he.decode);\r\nvar emptySlotScopeToken = \"_empty_\";\r\n// configurable state\r\nvar warn;\r\nvar delimiters;\r\nvar transforms;\r\nvar preTransforms;\r\nvar postTransforms;\r\nvar platformIsPreTag;\r\nvar platformMustUseProp;\r\nvar platformGetTagNamespace;\r\nvar maybeComponent;\r\nfunction createASTElement(tag, attrs, parent) {\r\n return {\r\n type: 1,\r\n tag: tag,\r\n attrsList: attrs,\r\n attrsMap: makeAttrsMap(attrs),\r\n rawAttrsMap: {},\r\n parent: parent,\r\n children: []\r\n };\r\n}\r\n/**\r\n * Convert HTML string to AST.\r\n */\r\nfunction parse(template, options) {\r\n warn = options.warn || baseWarn;\r\n platformIsPreTag = options.isPreTag || no;\r\n platformMustUseProp = options.mustUseProp || no;\r\n platformGetTagNamespace = options.getTagNamespace || no;\r\n var isReservedTag = options.isReservedTag || no;\r\n maybeComponent = function (el) {\r\n return !!(el.component ||\r\n el.attrsMap[':is'] ||\r\n el.attrsMap['v-bind:is'] ||\r\n !(el.attrsMap.is ? isReservedTag(el.attrsMap.is) : isReservedTag(el.tag)));\r\n };\r\n transforms = pluckModuleFunction(options.modules, 'transformNode');\r\n preTransforms = pluckModuleFunction(options.modules, 'preTransformNode');\r\n postTransforms = pluckModuleFunction(options.modules, 'postTransformNode');\r\n delimiters = options.delimiters;\r\n var stack = [];\r\n var preserveWhitespace = options.preserveWhitespace !== false;\r\n var whitespaceOption = options.whitespace;\r\n var root;\r\n var currentParent;\r\n var inVPre = false;\r\n var inPre = false;\r\n var warned = false;\r\n function warnOnce(msg, range) {\r\n if (!warned) {\r\n warned = true;\r\n warn(msg, range);\r\n }\r\n }\r\n function closeElement(element) {\r\n trimEndingWhitespace(element);\r\n if (!inVPre && !element.processed) {\r\n element = processElement(element, options);\r\n }\r\n // tree management\r\n if (!stack.length && element !== root) {\r\n // allow root elements with v-if, v-else-if and v-else\r\n if (root.if && (element.elseif || element.else)) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n checkRootConstraints(element);\r\n }\r\n addIfCondition(root, {\r\n exp: element.elseif,\r\n block: element\r\n });\r\n }\r\n else if (process.env.NODE_ENV !== 'production') {\r\n warnOnce(\"Component template should contain exactly one root element. \" +\r\n \"If you are using v-if on multiple elements, \" +\r\n \"use v-else-if to chain them instead.\", { start: element.start });\r\n }\r\n }\r\n if (currentParent && !element.forbidden) {\r\n if (element.elseif || element.else) {\r\n processIfConditions(element, currentParent);\r\n }\r\n else {\r\n if (element.slotScope) {\r\n // scoped slot\r\n // keep it in the children list so that v-else(-if) conditions can\r\n // find it as the prev node.\r\n var name_1 = element.slotTarget || '\"default\"';\r\n (currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name_1] = element;\r\n }\r\n currentParent.children.push(element);\r\n element.parent = currentParent;\r\n }\r\n }\r\n // final children cleanup\r\n // filter out scoped slots\r\n element.children = element.children.filter(function (c) { return !c.slotScope; });\r\n // remove trailing whitespace node again\r\n trimEndingWhitespace(element);\r\n // check pre state\r\n if (element.pre) {\r\n inVPre = false;\r\n }\r\n if (platformIsPreTag(element.tag)) {\r\n inPre = false;\r\n }\r\n // apply post-transforms\r\n for (var i = 0; i < postTransforms.length; i++) {\r\n postTransforms[i](element, options);\r\n }\r\n }\r\n function trimEndingWhitespace(el) {\r\n // remove trailing whitespace node\r\n if (!inPre) {\r\n var lastNode = void 0;\r\n while ((lastNode = el.children[el.children.length - 1]) &&\r\n lastNode.type === 3 &&\r\n lastNode.text === ' ') {\r\n el.children.pop();\r\n }\r\n }\r\n }\r\n function checkRootConstraints(el) {\r\n if (el.tag === 'slot' || el.tag === 'template') {\r\n warnOnce(\"Cannot use <\".concat(el.tag, \"> as component root element because it may \") +\r\n 'contain multiple nodes.', { start: el.start });\r\n }\r\n if (el.attrsMap.hasOwnProperty('v-for')) {\r\n warnOnce('Cannot use v-for on stateful component root element because ' +\r\n 'it renders multiple elements.', el.rawAttrsMap['v-for']);\r\n }\r\n }\r\n parseHTML(template, {\r\n warn: warn,\r\n expectHTML: options.expectHTML,\r\n isUnaryTag: options.isUnaryTag,\r\n canBeLeftOpenTag: options.canBeLeftOpenTag,\r\n shouldDecodeNewlines: options.shouldDecodeNewlines,\r\n shouldDecodeNewlinesForHref: options.shouldDecodeNewlinesForHref,\r\n shouldKeepComment: options.comments,\r\n outputSourceRange: options.outputSourceRange,\r\n start: function (tag, attrs, unary, start, end) {\r\n // check namespace.\r\n // inherit parent ns if there is one\r\n var ns = (currentParent && currentParent.ns) || platformGetTagNamespace(tag);\r\n // handle IE svg bug\r\n /* istanbul ignore if */\r\n if (isIE && ns === 'svg') {\r\n attrs = guardIESVGBug(attrs);\r\n }\r\n var element = createASTElement(tag, attrs, currentParent);\r\n if (ns) {\r\n element.ns = ns;\r\n }\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (options.outputSourceRange) {\r\n element.start = start;\r\n element.end = end;\r\n element.rawAttrsMap = element.attrsList.reduce(function (cumulated, attr) {\r\n cumulated[attr.name] = attr;\r\n return cumulated;\r\n }, {});\r\n }\r\n attrs.forEach(function (attr) {\r\n if (invalidAttributeRE.test(attr.name)) {\r\n warn(\"Invalid dynamic argument expression: attribute names cannot contain \" +\r\n \"spaces, quotes, <, >, / or =.\", options.outputSourceRange\r\n ? {\r\n start: attr.start + attr.name.indexOf(\"[\"),\r\n end: attr.start + attr.name.length\r\n }\r\n : undefined);\r\n }\r\n });\r\n }\r\n if (isForbiddenTag(element) && !isServerRendering()) {\r\n element.forbidden = true;\r\n process.env.NODE_ENV !== 'production' &&\r\n warn('Templates should only be responsible for mapping the state to the ' +\r\n 'UI. Avoid placing tags with side-effects in your templates, such as ' +\r\n \"<\".concat(tag, \">\") +\r\n ', as they will not be parsed.', { start: element.start });\r\n }\r\n // apply pre-transforms\r\n for (var i = 0; i < preTransforms.length; i++) {\r\n element = preTransforms[i](element, options) || element;\r\n }\r\n if (!inVPre) {\r\n processPre(element);\r\n if (element.pre) {\r\n inVPre = true;\r\n }\r\n }\r\n if (platformIsPreTag(element.tag)) {\r\n inPre = true;\r\n }\r\n if (inVPre) {\r\n processRawAttrs(element);\r\n }\r\n else if (!element.processed) {\r\n // structural directives\r\n processFor(element);\r\n processIf(element);\r\n processOnce(element);\r\n }\r\n if (!root) {\r\n root = element;\r\n if (process.env.NODE_ENV !== 'production') {\r\n checkRootConstraints(root);\r\n }\r\n }\r\n if (!unary) {\r\n currentParent = element;\r\n stack.push(element);\r\n }\r\n else {\r\n closeElement(element);\r\n }\r\n },\r\n end: function (tag, start, end) {\r\n var element = stack[stack.length - 1];\r\n // pop stack\r\n stack.length -= 1;\r\n currentParent = stack[stack.length - 1];\r\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\r\n element.end = end;\r\n }\r\n closeElement(element);\r\n },\r\n chars: function (text, start, end) {\r\n if (!currentParent) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (text === template) {\r\n warnOnce('Component template requires a root element, rather than just text.', { start: start });\r\n }\r\n else if ((text = text.trim())) {\r\n warnOnce(\"text \\\"\".concat(text, \"\\\" outside root element will be ignored.\"), {\r\n start: start\r\n });\r\n }\r\n }\r\n return;\r\n }\r\n // IE textarea placeholder bug\r\n /* istanbul ignore if */\r\n if (isIE &&\r\n currentParent.tag === 'textarea' &&\r\n currentParent.attrsMap.placeholder === text) {\r\n return;\r\n }\r\n var children = currentParent.children;\r\n if (inPre || text.trim()) {\r\n text = isTextTag(currentParent)\r\n ? text\r\n : decodeHTMLCached(text);\r\n }\r\n else if (!children.length) {\r\n // remove the whitespace-only node right after an opening tag\r\n text = '';\r\n }\r\n else if (whitespaceOption) {\r\n if (whitespaceOption === 'condense') {\r\n // in condense mode, remove the whitespace node if it contains\r\n // line break, otherwise condense to a single space\r\n text = lineBreakRE.test(text) ? '' : ' ';\r\n }\r\n else {\r\n text = ' ';\r\n }\r\n }\r\n else {\r\n text = preserveWhitespace ? ' ' : '';\r\n }\r\n if (text) {\r\n if (!inPre && whitespaceOption === 'condense') {\r\n // condense consecutive whitespaces into single space\r\n text = text.replace(whitespaceRE, ' ');\r\n }\r\n var res = void 0;\r\n var child = void 0;\r\n if (!inVPre && text !== ' ' && (res = parseText(text, delimiters))) {\r\n child = {\r\n type: 2,\r\n expression: res.expression,\r\n tokens: res.tokens,\r\n text: text\r\n };\r\n }\r\n else if (text !== ' ' ||\r\n !children.length ||\r\n children[children.length - 1].text !== ' ') {\r\n child = {\r\n type: 3,\r\n text: text\r\n };\r\n }\r\n if (child) {\r\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\r\n child.start = start;\r\n child.end = end;\r\n }\r\n children.push(child);\r\n }\r\n }\r\n },\r\n comment: function (text, start, end) {\r\n // adding anything as a sibling to the root node is forbidden\r\n // comments should still be allowed, but ignored\r\n if (currentParent) {\r\n var child = {\r\n type: 3,\r\n text: text,\r\n isComment: true\r\n };\r\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\r\n child.start = start;\r\n child.end = end;\r\n }\r\n currentParent.children.push(child);\r\n }\r\n }\r\n });\r\n return root;\r\n}\r\nfunction processPre(el) {\r\n if (getAndRemoveAttr(el, 'v-pre') != null) {\r\n el.pre = true;\r\n }\r\n}\r\nfunction processRawAttrs(el) {\r\n var list = el.attrsList;\r\n var len = list.length;\r\n if (len) {\r\n var attrs = (el.attrs = new Array(len));\r\n for (var i = 0; i < len; i++) {\r\n attrs[i] = {\r\n name: list[i].name,\r\n value: JSON.stringify(list[i].value)\r\n };\r\n if (list[i].start != null) {\r\n attrs[i].start = list[i].start;\r\n attrs[i].end = list[i].end;\r\n }\r\n }\r\n }\r\n else if (!el.pre) {\r\n // non root node in pre blocks with no attributes\r\n el.plain = true;\r\n }\r\n}\r\nfunction processElement(element, options) {\r\n processKey(element);\r\n // determine whether this is a plain element after\r\n // removing structural attributes\r\n element.plain =\r\n !element.key && !element.scopedSlots && !element.attrsList.length;\r\n processRef(element);\r\n processSlotContent(element);\r\n processSlotOutlet(element);\r\n processComponent(element);\r\n for (var i = 0; i < transforms.length; i++) {\r\n element = transforms[i](element, options) || element;\r\n }\r\n processAttrs(element);\r\n return element;\r\n}\r\nfunction processKey(el) {\r\n var exp = getBindingAttr(el, 'key');\r\n if (exp) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (el.tag === 'template') {\r\n warn(\"<template> cannot be keyed. Place the key on real elements instead.\", getRawBindingAttr(el, 'key'));\r\n }\r\n if (el.for) {\r\n var iterator = el.iterator2 || el.iterator1;\r\n var parent_1 = el.parent;\r\n if (iterator &&\r\n iterator === exp &&\r\n parent_1 &&\r\n parent_1.tag === 'transition-group') {\r\n warn(\"Do not use v-for index as key on <transition-group> children, \" +\r\n \"this is the same as not using keys.\", getRawBindingAttr(el, 'key'), true /* tip */);\r\n }\r\n }\r\n }\r\n el.key = exp;\r\n }\r\n}\r\nfunction processRef(el) {\r\n var ref = getBindingAttr(el, 'ref');\r\n if (ref) {\r\n el.ref = ref;\r\n el.refInFor = checkInFor(el);\r\n }\r\n}\r\nfunction processFor(el) {\r\n var exp;\r\n if ((exp = getAndRemoveAttr(el, 'v-for'))) {\r\n var res = parseFor(exp);\r\n if (res) {\r\n extend(el, res);\r\n }\r\n else if (process.env.NODE_ENV !== 'production') {\r\n warn(\"Invalid v-for expression: \".concat(exp), el.rawAttrsMap['v-for']);\r\n }\r\n }\r\n}\r\nfunction parseFor(exp) {\r\n var inMatch = exp.match(forAliasRE);\r\n if (!inMatch)\r\n return;\r\n var res = {};\r\n res.for = inMatch[2].trim();\r\n var alias = inMatch[1].trim().replace(stripParensRE, '');\r\n var iteratorMatch = alias.match(forIteratorRE);\r\n if (iteratorMatch) {\r\n res.alias = alias.replace(forIteratorRE, '').trim();\r\n res.iterator1 = iteratorMatch[1].trim();\r\n if (iteratorMatch[2]) {\r\n res.iterator2 = iteratorMatch[2].trim();\r\n }\r\n }\r\n else {\r\n res.alias = alias;\r\n }\r\n return res;\r\n}\r\nfunction processIf(el) {\r\n var exp = getAndRemoveAttr(el, 'v-if');\r\n if (exp) {\r\n el.if = exp;\r\n addIfCondition(el, {\r\n exp: exp,\r\n block: el\r\n });\r\n }\r\n else {\r\n if (getAndRemoveAttr(el, 'v-else') != null) {\r\n el.else = true;\r\n }\r\n var elseif = getAndRemoveAttr(el, 'v-else-if');\r\n if (elseif) {\r\n el.elseif = elseif;\r\n }\r\n }\r\n}\r\nfunction processIfConditions(el, parent) {\r\n var prev = findPrevElement(parent.children);\r\n if (prev && prev.if) {\r\n addIfCondition(prev, {\r\n exp: el.elseif,\r\n block: el\r\n });\r\n }\r\n else if (process.env.NODE_ENV !== 'production') {\r\n warn(\"v-\".concat(el.elseif ? 'else-if=\"' + el.elseif + '\"' : 'else', \" \") +\r\n \"used on element <\".concat(el.tag, \"> without corresponding v-if.\"), el.rawAttrsMap[el.elseif ? 'v-else-if' : 'v-else']);\r\n }\r\n}\r\nfunction findPrevElement(children) {\r\n var i = children.length;\r\n while (i--) {\r\n if (children[i].type === 1) {\r\n return children[i];\r\n }\r\n else {\r\n if (process.env.NODE_ENV !== 'production' && children[i].text !== ' ') {\r\n warn(\"text \\\"\".concat(children[i].text.trim(), \"\\\" between v-if and v-else(-if) \") +\r\n \"will be ignored.\", children[i]);\r\n }\r\n children.pop();\r\n }\r\n }\r\n}\r\nfunction addIfCondition(el, condition) {\r\n if (!el.ifConditions) {\r\n el.ifConditions = [];\r\n }\r\n el.ifConditions.push(condition);\r\n}\r\nfunction processOnce(el) {\r\n var once = getAndRemoveAttr(el, 'v-once');\r\n if (once != null) {\r\n el.once = true;\r\n }\r\n}\r\n// handle content being passed to a component as slot,\r\n// e.g. <template slot=\"xxx\">, <div slot-scope=\"xxx\">\r\nfunction processSlotContent(el) {\r\n var slotScope;\r\n if (el.tag === 'template') {\r\n slotScope = getAndRemoveAttr(el, 'scope');\r\n /* istanbul ignore if */\r\n if (process.env.NODE_ENV !== 'production' && slotScope) {\r\n warn(\"the \\\"scope\\\" attribute for scoped slots have been deprecated and \" +\r\n \"replaced by \\\"slot-scope\\\" since 2.5. The new \\\"slot-scope\\\" attribute \" +\r\n \"can also be used on plain elements in addition to <template> to \" +\r\n \"denote scoped slots.\", el.rawAttrsMap['scope'], true);\r\n }\r\n el.slotScope = slotScope || getAndRemoveAttr(el, 'slot-scope');\r\n }\r\n else if ((slotScope = getAndRemoveAttr(el, 'slot-scope'))) {\r\n /* istanbul ignore if */\r\n if (process.env.NODE_ENV !== 'production' && el.attrsMap['v-for']) {\r\n warn(\"Ambiguous combined usage of slot-scope and v-for on <\".concat(el.tag, \"> \") +\r\n \"(v-for takes higher priority). Use a wrapper <template> for the \" +\r\n \"scoped slot to make it clearer.\", el.rawAttrsMap['slot-scope'], true);\r\n }\r\n el.slotScope = slotScope;\r\n }\r\n // slot=\"xxx\"\r\n var slotTarget = getBindingAttr(el, 'slot');\r\n if (slotTarget) {\r\n el.slotTarget = slotTarget === '\"\"' ? '\"default\"' : slotTarget;\r\n el.slotTargetDynamic = !!(el.attrsMap[':slot'] || el.attrsMap['v-bind:slot']);\r\n // preserve slot as an attribute for native shadow DOM compat\r\n // only for non-scoped slots.\r\n if (el.tag !== 'template' && !el.slotScope) {\r\n addAttr(el, 'slot', slotTarget, getRawBindingAttr(el, 'slot'));\r\n }\r\n }\r\n // 2.6 v-slot syntax\r\n {\r\n if (el.tag === 'template') {\r\n // v-slot on <template>\r\n var slotBinding = getAndRemoveAttrByRegex(el, slotRE);\r\n if (slotBinding) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (el.slotTarget || el.slotScope) {\r\n warn(\"Unexpected mixed usage of different slot syntaxes.\", el);\r\n }\r\n if (el.parent && !maybeComponent(el.parent)) {\r\n warn(\"<template v-slot> can only appear at the root level inside \" +\r\n \"the receiving component\", el);\r\n }\r\n }\r\n var _a = getSlotName(slotBinding), name_2 = _a.name, dynamic = _a.dynamic;\r\n el.slotTarget = name_2;\r\n el.slotTargetDynamic = dynamic;\r\n el.slotScope = slotBinding.value || emptySlotScopeToken; // force it into a scoped slot for perf\r\n }\r\n }\r\n else {\r\n // v-slot on component, denotes default slot\r\n var slotBinding = getAndRemoveAttrByRegex(el, slotRE);\r\n if (slotBinding) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!maybeComponent(el)) {\r\n warn(\"v-slot can only be used on components or <template>.\", slotBinding);\r\n }\r\n if (el.slotScope || el.slotTarget) {\r\n warn(\"Unexpected mixed usage of different slot syntaxes.\", el);\r\n }\r\n if (el.scopedSlots) {\r\n warn(\"To avoid scope ambiguity, the default slot should also use \" +\r\n \"<template> syntax when there are other named slots.\", slotBinding);\r\n }\r\n }\r\n // add the component's children to its default slot\r\n var slots = el.scopedSlots || (el.scopedSlots = {});\r\n var _b = getSlotName(slotBinding), name_3 = _b.name, dynamic = _b.dynamic;\r\n var slotContainer_1 = (slots[name_3] = createASTElement('template', [], el));\r\n slotContainer_1.slotTarget = name_3;\r\n slotContainer_1.slotTargetDynamic = dynamic;\r\n slotContainer_1.children = el.children.filter(function (c) {\r\n if (!c.slotScope) {\r\n c.parent = slotContainer_1;\r\n return true;\r\n }\r\n });\r\n slotContainer_1.slotScope = slotBinding.value || emptySlotScopeToken;\r\n // remove children as they are returned from scopedSlots now\r\n el.children = [];\r\n // mark el non-plain so data gets generated\r\n el.plain = false;\r\n }\r\n }\r\n }\r\n}\r\nfunction getSlotName(binding) {\r\n var name = binding.name.replace(slotRE, '');\r\n if (!name) {\r\n if (binding.name[0] !== '#') {\r\n name = 'default';\r\n }\r\n else if (process.env.NODE_ENV !== 'production') {\r\n warn(\"v-slot shorthand syntax requires a slot name.\", binding);\r\n }\r\n }\r\n return dynamicArgRE.test(name)\r\n ? // dynamic [name]\r\n { name: name.slice(1, -1), dynamic: true }\r\n : // static name\r\n { name: \"\\\"\".concat(name, \"\\\"\"), dynamic: false };\r\n}\r\n// handle <slot/> outlets\r\nfunction processSlotOutlet(el) {\r\n if (el.tag === 'slot') {\r\n el.slotName = getBindingAttr(el, 'name');\r\n if (process.env.NODE_ENV !== 'production' && el.key) {\r\n warn(\"`key` does not work on <slot> because slots are abstract outlets \" +\r\n \"and can possibly expand into multiple elements. \" +\r\n \"Use the key on a wrapping element instead.\", getRawBindingAttr(el, 'key'));\r\n }\r\n }\r\n}\r\nfunction processComponent(el) {\r\n var binding;\r\n if ((binding = getBindingAttr(el, 'is'))) {\r\n el.component = binding;\r\n }\r\n if (getAndRemoveAttr(el, 'inline-template') != null) {\r\n el.inlineTemplate = true;\r\n }\r\n}\r\nfunction processAttrs(el) {\r\n var list = el.attrsList;\r\n var i, l, name, rawName, value, modifiers, syncGen, isDynamic;\r\n for (i = 0, l = list.length; i < l; i++) {\r\n name = rawName = list[i].name;\r\n value = list[i].value;\r\n if (dirRE.test(name)) {\r\n // mark element as dynamic\r\n el.hasBindings = true;\r\n // modifiers\r\n modifiers = parseModifiers(name.replace(dirRE, ''));\r\n // support .foo shorthand syntax for the .prop modifier\r\n if (modifiers) {\r\n name = name.replace(modifierRE, '');\r\n }\r\n if (bindRE.test(name)) {\r\n // v-bind\r\n name = name.replace(bindRE, '');\r\n value = parseFilters(value);\r\n isDynamic = dynamicArgRE.test(name);\r\n if (isDynamic) {\r\n name = name.slice(1, -1);\r\n }\r\n if (process.env.NODE_ENV !== 'production' && value.trim().length === 0) {\r\n warn(\"The value for a v-bind expression cannot be empty. Found in \\\"v-bind:\".concat(name, \"\\\"\"));\r\n }\r\n if (modifiers) {\r\n if (modifiers.prop && !isDynamic) {\r\n name = camelize(name);\r\n if (name === 'innerHtml')\r\n name = 'innerHTML';\r\n }\r\n if (modifiers.camel && !isDynamic) {\r\n name = camelize(name);\r\n }\r\n if (modifiers.sync) {\r\n syncGen = genAssignmentCode(value, \"$event\");\r\n if (!isDynamic) {\r\n addHandler(el, \"update:\".concat(camelize(name)), syncGen, null, false, warn, list[i]);\r\n if (hyphenate(name) !== camelize(name)) {\r\n addHandler(el, \"update:\".concat(hyphenate(name)), syncGen, null, false, warn, list[i]);\r\n }\r\n }\r\n else {\r\n // handler w/ dynamic event name\r\n addHandler(el, \"\\\"update:\\\"+(\".concat(name, \")\"), syncGen, null, false, warn, list[i], true // dynamic\r\n );\r\n }\r\n }\r\n }\r\n if ((modifiers && modifiers.prop) ||\r\n (!el.component && platformMustUseProp(el.tag, el.attrsMap.type, name))) {\r\n addProp(el, name, value, list[i], isDynamic);\r\n }\r\n else {\r\n addAttr(el, name, value, list[i], isDynamic);\r\n }\r\n }\r\n else if (onRE.test(name)) {\r\n // v-on\r\n name = name.replace(onRE, '');\r\n isDynamic = dynamicArgRE.test(name);\r\n if (isDynamic) {\r\n name = name.slice(1, -1);\r\n }\r\n addHandler(el, name, value, modifiers, false, warn, list[i], isDynamic);\r\n }\r\n else {\r\n // normal directives\r\n name = name.replace(dirRE, '');\r\n // parse arg\r\n var argMatch = name.match(argRE);\r\n var arg = argMatch && argMatch[1];\r\n isDynamic = false;\r\n if (arg) {\r\n name = name.slice(0, -(arg.length + 1));\r\n if (dynamicArgRE.test(arg)) {\r\n arg = arg.slice(1, -1);\r\n isDynamic = true;\r\n }\r\n }\r\n addDirective(el, name, rawName, value, arg, isDynamic, modifiers, list[i]);\r\n if (process.env.NODE_ENV !== 'production' && name === 'model') {\r\n checkForAliasModel(el, value);\r\n }\r\n }\r\n }\r\n else {\r\n // literal attribute\r\n if (process.env.NODE_ENV !== 'production') {\r\n var res = parseText(value, delimiters);\r\n if (res) {\r\n warn(\"\".concat(name, \"=\\\"\").concat(value, \"\\\": \") +\r\n 'Interpolation inside attributes has been removed. ' +\r\n 'Use v-bind or the colon shorthand instead. For example, ' +\r\n 'instead of <div id=\"{{ val }}\">, use <div :id=\"val\">.', list[i]);\r\n }\r\n }\r\n addAttr(el, name, JSON.stringify(value), list[i]);\r\n // #6887 firefox doesn't update muted state if set via attribute\r\n // even immediately after element creation\r\n if (!el.component &&\r\n name === 'muted' &&\r\n platformMustUseProp(el.tag, el.attrsMap.type, name)) {\r\n addProp(el, name, 'true', list[i]);\r\n }\r\n }\r\n }\r\n}\r\nfunction checkInFor(el) {\r\n var parent = el;\r\n while (parent) {\r\n if (parent.for !== undefined) {\r\n return true;\r\n }\r\n parent = parent.parent;\r\n }\r\n return false;\r\n}\r\nfunction parseModifiers(name) {\r\n var match = name.match(modifierRE);\r\n if (match) {\r\n var ret_1 = {};\r\n match.forEach(function (m) {\r\n ret_1[m.slice(1)] = true;\r\n });\r\n return ret_1;\r\n }\r\n}\r\nfunction makeAttrsMap(attrs) {\r\n var map = {};\r\n for (var i = 0, l = attrs.length; i < l; i++) {\r\n if (process.env.NODE_ENV !== 'production' && map[attrs[i].name] && !isIE && !isEdge) {\r\n warn('duplicate attribute: ' + attrs[i].name, attrs[i]);\r\n }\r\n map[attrs[i].name] = attrs[i].value;\r\n }\r\n return map;\r\n}\r\n// for script (e.g. type=\"x/template\") or style, do not decode content\r\nfunction isTextTag(el) {\r\n return el.tag === 'script' || el.tag === 'style';\r\n}\r\nfunction isForbiddenTag(el) {\r\n return (el.tag === 'style' ||\r\n (el.tag === 'script' &&\r\n (!el.attrsMap.type || el.attrsMap.type === 'text/javascript')));\r\n}\r\nvar ieNSBug = /^xmlns:NS\\d+/;\r\nvar ieNSPrefix = /^NS\\d+:/;\r\n/* istanbul ignore next */\r\nfunction guardIESVGBug(attrs) {\r\n var res = [];\r\n for (var i = 0; i < attrs.length; i++) {\r\n var attr = attrs[i];\r\n if (!ieNSBug.test(attr.name)) {\r\n attr.name = attr.name.replace(ieNSPrefix, '');\r\n res.push(attr);\r\n }\r\n }\r\n return res;\r\n}\r\nfunction checkForAliasModel(el, value) {\r\n var _el = el;\r\n while (_el) {\r\n if (_el.for && _el.alias === value) {\r\n warn(\"<\".concat(el.tag, \" v-model=\\\"\").concat(value, \"\\\">: \") +\r\n \"You are binding v-model directly to a v-for iteration alias. \" +\r\n \"This will not be able to modify the v-for source array because \" +\r\n \"writing to the alias is like modifying a function local variable. \" +\r\n \"Consider using an array of objects and use v-model on an object property instead.\", el.rawAttrsMap['v-model']);\r\n }\r\n _el = _el.parent;\r\n }\r\n}\n\n/**\r\n * Expand input[v-model] with dynamic type bindings into v-if-else chains\r\n * Turn this:\r\n * <input v-model=\"data[type]\" :type=\"type\">\r\n * into this:\r\n * <input v-if=\"type === 'checkbox'\" type=\"checkbox\" v-model=\"data[type]\">\r\n * <input v-else-if=\"type === 'radio'\" type=\"radio\" v-model=\"data[type]\">\r\n * <input v-else :type=\"type\" v-model=\"data[type]\">\r\n */\r\nfunction preTransformNode(el, options) {\r\n if (el.tag === 'input') {\r\n var map = el.attrsMap;\r\n if (!map['v-model']) {\r\n return;\r\n }\r\n var typeBinding = void 0;\r\n if (map[':type'] || map['v-bind:type']) {\r\n typeBinding = getBindingAttr(el, 'type');\r\n }\r\n if (!map.type && !typeBinding && map['v-bind']) {\r\n typeBinding = \"(\".concat(map['v-bind'], \").type\");\r\n }\r\n if (typeBinding) {\r\n var ifCondition = getAndRemoveAttr(el, 'v-if', true);\r\n var ifConditionExtra = ifCondition ? \"&&(\".concat(ifCondition, \")\") : \"\";\r\n var hasElse = getAndRemoveAttr(el, 'v-else', true) != null;\r\n var elseIfCondition = getAndRemoveAttr(el, 'v-else-if', true);\r\n // 1. checkbox\r\n var branch0 = cloneASTElement(el);\r\n // process for on the main node\r\n processFor(branch0);\r\n addRawAttr(branch0, 'type', 'checkbox');\r\n processElement(branch0, options);\r\n branch0.processed = true; // prevent it from double-processed\r\n branch0.if = \"(\".concat(typeBinding, \")==='checkbox'\") + ifConditionExtra;\r\n addIfCondition(branch0, {\r\n exp: branch0.if,\r\n block: branch0\r\n });\r\n // 2. add radio else-if condition\r\n var branch1 = cloneASTElement(el);\r\n getAndRemoveAttr(branch1, 'v-for', true);\r\n addRawAttr(branch1, 'type', 'radio');\r\n processElement(branch1, options);\r\n addIfCondition(branch0, {\r\n exp: \"(\".concat(typeBinding, \")==='radio'\") + ifConditionExtra,\r\n block: branch1\r\n });\r\n // 3. other\r\n var branch2 = cloneASTElement(el);\r\n getAndRemoveAttr(branch2, 'v-for', true);\r\n addRawAttr(branch2, ':type', typeBinding);\r\n processElement(branch2, options);\r\n addIfCondition(branch0, {\r\n exp: ifCondition,\r\n block: branch2\r\n });\r\n if (hasElse) {\r\n branch0.else = true;\r\n }\r\n else if (elseIfCondition) {\r\n branch0.elseif = elseIfCondition;\r\n }\r\n return branch0;\r\n }\r\n }\r\n}\r\nfunction cloneASTElement(el) {\r\n return createASTElement(el.tag, el.attrsList.slice(), el.parent);\r\n}\r\nvar model = {\r\n preTransformNode: preTransformNode\r\n};\n\nvar modules = [klass, style, model];\n\nfunction text(el, dir) {\r\n if (dir.value) {\r\n addProp(el, 'textContent', \"_s(\".concat(dir.value, \")\"), dir);\r\n }\r\n}\n\nfunction html(el, dir) {\r\n if (dir.value) {\r\n addProp(el, 'innerHTML', \"_s(\".concat(dir.value, \")\"), dir);\r\n }\r\n}\n\nvar directives = {\r\n model: model$1,\r\n text: text,\r\n html: html\r\n};\n\nvar baseOptions = {\r\n expectHTML: true,\r\n modules: modules,\r\n directives: directives,\r\n isPreTag: isPreTag,\r\n isUnaryTag: isUnaryTag,\r\n mustUseProp: mustUseProp,\r\n canBeLeftOpenTag: canBeLeftOpenTag,\r\n isReservedTag: isReservedTag,\r\n getTagNamespace: getTagNamespace,\r\n staticKeys: genStaticKeys$1(modules)\r\n};\n\nvar isStaticKey;\r\nvar isPlatformReservedTag;\r\nvar genStaticKeysCached = cached(genStaticKeys);\r\n/**\r\n * Goal of the optimizer: walk the generated template AST tree\r\n * and detect sub-trees that are purely static, i.e. parts of\r\n * the DOM that never needs to change.\r\n *\r\n * Once we detect these sub-trees, we can:\r\n *\r\n * 1. Hoist them into constants, so that we no longer need to\r\n * create fresh nodes for them on each re-render;\r\n * 2. Completely skip them in the patching process.\r\n */\r\nfunction optimize(root, options) {\r\n if (!root)\r\n return;\r\n isStaticKey = genStaticKeysCached(options.staticKeys || '');\r\n isPlatformReservedTag = options.isReservedTag || no;\r\n // first pass: mark all non-static nodes.\r\n markStatic(root);\r\n // second pass: mark static roots.\r\n markStaticRoots(root, false);\r\n}\r\nfunction genStaticKeys(keys) {\r\n return makeMap('type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap' +\r\n (keys ? ',' + keys : ''));\r\n}\r\nfunction markStatic(node) {\r\n node.static = isStatic(node);\r\n if (node.type === 1) {\r\n // do not make component slot content static. this avoids\r\n // 1. components not able to mutate slot nodes\r\n // 2. static slot content fails for hot-reloading\r\n if (!isPlatformReservedTag(node.tag) &&\r\n node.tag !== 'slot' &&\r\n node.attrsMap['inline-template'] == null) {\r\n return;\r\n }\r\n for (var i = 0, l = node.children.length; i < l; i++) {\r\n var child = node.children[i];\r\n markStatic(child);\r\n if (!child.static) {\r\n node.static = false;\r\n }\r\n }\r\n if (node.ifConditions) {\r\n for (var i = 1, l = node.ifConditions.length; i < l; i++) {\r\n var block = node.ifConditions[i].block;\r\n markStatic(block);\r\n if (!block.static) {\r\n node.static = false;\r\n }\r\n }\r\n }\r\n }\r\n}\r\nfunction markStaticRoots(node, isInFor) {\r\n if (node.type === 1) {\r\n if (node.static || node.once) {\r\n node.staticInFor = isInFor;\r\n }\r\n // For a node to qualify as a static root, it should have children that\r\n // are not just static text. Otherwise the cost of hoisting out will\r\n // outweigh the benefits and it's better off to just always render it fresh.\r\n if (node.static &&\r\n node.children.length &&\r\n !(node.children.length === 1 && node.children[0].type === 3)) {\r\n node.staticRoot = true;\r\n return;\r\n }\r\n else {\r\n node.staticRoot = false;\r\n }\r\n if (node.children) {\r\n for (var i = 0, l = node.children.length; i < l; i++) {\r\n markStaticRoots(node.children[i], isInFor || !!node.for);\r\n }\r\n }\r\n if (node.ifConditions) {\r\n for (var i = 1, l = node.ifConditions.length; i < l; i++) {\r\n markStaticRoots(node.ifConditions[i].block, isInFor);\r\n }\r\n }\r\n }\r\n}\r\nfunction isStatic(node) {\r\n if (node.type === 2) {\r\n // expression\r\n return false;\r\n }\r\n if (node.type === 3) {\r\n // text\r\n return true;\r\n }\r\n return !!(node.pre ||\r\n (!node.hasBindings && // no dynamic bindings\r\n !node.if &&\r\n !node.for && // not v-if or v-for or v-else\r\n !isBuiltInTag(node.tag) && // not a built-in\r\n isPlatformReservedTag(node.tag) && // not a component\r\n !isDirectChildOfTemplateFor(node) &&\r\n Object.keys(node).every(isStaticKey)));\r\n}\r\nfunction isDirectChildOfTemplateFor(node) {\r\n while (node.parent) {\r\n node = node.parent;\r\n if (node.tag !== 'template') {\r\n return false;\r\n }\r\n if (node.for) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\n\nvar fnExpRE = /^([\\w$_]+|\\([^)]*?\\))\\s*=>|^function(?:\\s+[\\w$]+)?\\s*\\(/;\r\nvar fnInvokeRE = /\\([^)]*?\\);*$/;\r\nvar simplePathRE = /^[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*|\\['[^']*?']|\\[\"[^\"]*?\"]|\\[\\d+]|\\[[A-Za-z_$][\\w$]*])*$/;\r\n// KeyboardEvent.keyCode aliases\r\nvar keyCodes = {\r\n esc: 27,\r\n tab: 9,\r\n enter: 13,\r\n space: 32,\r\n up: 38,\r\n left: 37,\r\n right: 39,\r\n down: 40,\r\n delete: [8, 46]\r\n};\r\n// KeyboardEvent.key aliases\r\nvar keyNames = {\r\n // #7880: IE11 and Edge use `Esc` for Escape key name.\r\n esc: ['Esc', 'Escape'],\r\n tab: 'Tab',\r\n enter: 'Enter',\r\n // #9112: IE11 uses `Spacebar` for Space key name.\r\n space: [' ', 'Spacebar'],\r\n // #7806: IE11 uses key names without `Arrow` prefix for arrow keys.\r\n up: ['Up', 'ArrowUp'],\r\n left: ['Left', 'ArrowLeft'],\r\n right: ['Right', 'ArrowRight'],\r\n down: ['Down', 'ArrowDown'],\r\n // #9112: IE11 uses `Del` for Delete key name.\r\n delete: ['Backspace', 'Delete', 'Del']\r\n};\r\n// #4868: modifiers that prevent the execution of the listener\r\n// need to explicitly return null so that we can determine whether to remove\r\n// the listener for .once\r\nvar genGuard = function (condition) { return \"if(\".concat(condition, \")return null;\"); };\r\nvar modifierCode = {\r\n stop: '$event.stopPropagation();',\r\n prevent: '$event.preventDefault();',\r\n self: genGuard(\"$event.target !== $event.currentTarget\"),\r\n ctrl: genGuard(\"!$event.ctrlKey\"),\r\n shift: genGuard(\"!$event.shiftKey\"),\r\n alt: genGuard(\"!$event.altKey\"),\r\n meta: genGuard(\"!$event.metaKey\"),\r\n left: genGuard(\"'button' in $event && $event.button !== 0\"),\r\n middle: genGuard(\"'button' in $event && $event.button !== 1\"),\r\n right: genGuard(\"'button' in $event && $event.button !== 2\")\r\n};\r\nfunction genHandlers(events, isNative) {\r\n var prefix = isNative ? 'nativeOn:' : 'on:';\r\n var staticHandlers = \"\";\r\n var dynamicHandlers = \"\";\r\n for (var name_1 in events) {\r\n var handlerCode = genHandler(events[name_1]);\r\n //@ts-expect-error\r\n if (events[name_1] && events[name_1].dynamic) {\r\n dynamicHandlers += \"\".concat(name_1, \",\").concat(handlerCode, \",\");\r\n }\r\n else {\r\n staticHandlers += \"\\\"\".concat(name_1, \"\\\":\").concat(handlerCode, \",\");\r\n }\r\n }\r\n staticHandlers = \"{\".concat(staticHandlers.slice(0, -1), \"}\");\r\n if (dynamicHandlers) {\r\n return prefix + \"_d(\".concat(staticHandlers, \",[\").concat(dynamicHandlers.slice(0, -1), \"])\");\r\n }\r\n else {\r\n return prefix + staticHandlers;\r\n }\r\n}\r\nfunction genHandler(handler) {\r\n if (!handler) {\r\n return 'function(){}';\r\n }\r\n if (Array.isArray(handler)) {\r\n return \"[\".concat(handler.map(function (handler) { return genHandler(handler); }).join(','), \"]\");\r\n }\r\n var isMethodPath = simplePathRE.test(handler.value);\r\n var isFunctionExpression = fnExpRE.test(handler.value);\r\n var isFunctionInvocation = simplePathRE.test(handler.value.replace(fnInvokeRE, ''));\r\n if (!handler.modifiers) {\r\n if (isMethodPath || isFunctionExpression) {\r\n return handler.value;\r\n }\r\n return \"function($event){\".concat(isFunctionInvocation ? \"return \".concat(handler.value) : handler.value, \"}\"); // inline statement\r\n }\r\n else {\r\n var code = '';\r\n var genModifierCode = '';\r\n var keys = [];\r\n var _loop_1 = function (key) {\r\n if (modifierCode[key]) {\r\n genModifierCode += modifierCode[key];\r\n // left/right\r\n if (keyCodes[key]) {\r\n keys.push(key);\r\n }\r\n }\r\n else if (key === 'exact') {\r\n var modifiers_1 = handler.modifiers;\r\n genModifierCode += genGuard(['ctrl', 'shift', 'alt', 'meta']\r\n .filter(function (keyModifier) { return !modifiers_1[keyModifier]; })\r\n .map(function (keyModifier) { return \"$event.\".concat(keyModifier, \"Key\"); })\r\n .join('||'));\r\n }\r\n else {\r\n keys.push(key);\r\n }\r\n };\r\n for (var key in handler.modifiers) {\r\n _loop_1(key);\r\n }\r\n if (keys.length) {\r\n code += genKeyFilter(keys);\r\n }\r\n // Make sure modifiers like prevent and stop get executed after key filtering\r\n if (genModifierCode) {\r\n code += genModifierCode;\r\n }\r\n var handlerCode = isMethodPath\r\n ? \"return \".concat(handler.value, \".apply(null, arguments)\")\r\n : isFunctionExpression\r\n ? \"return (\".concat(handler.value, \").apply(null, arguments)\")\r\n : isFunctionInvocation\r\n ? \"return \".concat(handler.value)\r\n : handler.value;\r\n return \"function($event){\".concat(code).concat(handlerCode, \"}\");\r\n }\r\n}\r\nfunction genKeyFilter(keys) {\r\n return (\r\n // make sure the key filters only apply to KeyboardEvents\r\n // #9441: can't use 'keyCode' in $event because Chrome autofill fires fake\r\n // key events that do not have keyCode property...\r\n \"if(!$event.type.indexOf('key')&&\" +\r\n \"\".concat(keys.map(genFilterCode).join('&&'), \")return null;\"));\r\n}\r\nfunction genFilterCode(key) {\r\n var keyVal = parseInt(key, 10);\r\n if (keyVal) {\r\n return \"$event.keyCode!==\".concat(keyVal);\r\n }\r\n var keyCode = keyCodes[key];\r\n var keyName = keyNames[key];\r\n return (\"_k($event.keyCode,\" +\r\n \"\".concat(JSON.stringify(key), \",\") +\r\n \"\".concat(JSON.stringify(keyCode), \",\") +\r\n \"$event.key,\" +\r\n \"\".concat(JSON.stringify(keyName)) +\r\n \")\");\r\n}\n\nfunction on(el, dir) {\r\n if (process.env.NODE_ENV !== 'production' && dir.modifiers) {\r\n warn$2(\"v-on without argument does not support modifiers.\");\r\n }\r\n el.wrapListeners = function (code) { return \"_g(\".concat(code, \",\").concat(dir.value, \")\"); };\r\n}\n\nfunction bind(el, dir) {\r\n el.wrapData = function (code) {\r\n return \"_b(\".concat(code, \",'\").concat(el.tag, \"',\").concat(dir.value, \",\").concat(dir.modifiers && dir.modifiers.prop ? 'true' : 'false').concat(dir.modifiers && dir.modifiers.sync ? ',true' : '', \")\");\r\n };\r\n}\n\nvar baseDirectives = {\r\n on: on,\r\n bind: bind,\r\n cloak: noop\r\n};\n\nvar CodegenState = /** @class */ (function () {\r\n function CodegenState(options) {\r\n this.options = options;\r\n this.warn = options.warn || baseWarn;\r\n this.transforms = pluckModuleFunction(options.modules, 'transformCode');\r\n this.dataGenFns = pluckModuleFunction(options.modules, 'genData');\r\n this.directives = extend(extend({}, baseDirectives), options.directives);\r\n var isReservedTag = options.isReservedTag || no;\r\n this.maybeComponent = function (el) {\r\n return !!el.component || !isReservedTag(el.tag);\r\n };\r\n this.onceId = 0;\r\n this.staticRenderFns = [];\r\n this.pre = false;\r\n }\r\n return CodegenState;\r\n}());\r\nfunction generate(ast, options) {\r\n var state = new CodegenState(options);\r\n // fix #11483, Root level <script> tags should not be rendered.\r\n var code = ast\r\n ? ast.tag === 'script'\r\n ? 'null'\r\n : genElement(ast, state)\r\n : '_c(\"div\")';\r\n return {\r\n render: \"with(this){return \".concat(code, \"}\"),\r\n staticRenderFns: state.staticRenderFns\r\n };\r\n}\r\nfunction genElement(el, state) {\r\n if (el.parent) {\r\n el.pre = el.pre || el.parent.pre;\r\n }\r\n if (el.staticRoot && !el.staticProcessed) {\r\n return genStatic(el, state);\r\n }\r\n else if (el.once && !el.onceProcessed) {\r\n return genOnce(el, state);\r\n }\r\n else if (el.for && !el.forProcessed) {\r\n return genFor(el, state);\r\n }\r\n else if (el.if && !el.ifProcessed) {\r\n return genIf(el, state);\r\n }\r\n else if (el.tag === 'template' && !el.slotTarget && !state.pre) {\r\n return genChildren(el, state) || 'void 0';\r\n }\r\n else if (el.tag === 'slot') {\r\n return genSlot(el, state);\r\n }\r\n else {\r\n // component or element\r\n var code = void 0;\r\n if (el.component) {\r\n code = genComponent(el.component, el, state);\r\n }\r\n else {\r\n var data = void 0;\r\n if (!el.plain || (el.pre && state.maybeComponent(el))) {\r\n data = genData(el, state);\r\n }\r\n var tag \r\n // check if this is a component in <script setup>\r\n = void 0;\r\n // check if this is a component in <script setup>\r\n var bindings = state.options.bindings;\r\n if (bindings && bindings.__isScriptSetup !== false) {\r\n tag =\r\n checkBindingType(bindings, el.tag) ||\r\n checkBindingType(bindings, camelize(el.tag)) ||\r\n checkBindingType(bindings, capitalize(camelize(el.tag)));\r\n }\r\n if (!tag)\r\n tag = \"'\".concat(el.tag, \"'\");\r\n var children = el.inlineTemplate ? null : genChildren(el, state, true);\r\n code = \"_c(\".concat(tag).concat(data ? \",\".concat(data) : '' // data\r\n ).concat(children ? \",\".concat(children) : '' // children\r\n , \")\");\r\n }\r\n // module transforms\r\n for (var i = 0; i < state.transforms.length; i++) {\r\n code = state.transforms[i](el, code);\r\n }\r\n return code;\r\n }\r\n}\r\nfunction checkBindingType(bindings, key) {\r\n var type = bindings[key];\r\n if (type && type.startsWith('setup')) {\r\n return key;\r\n }\r\n}\r\n// hoist static sub-trees out\r\nfunction genStatic(el, state) {\r\n el.staticProcessed = true;\r\n // Some elements (templates) need to behave differently inside of a v-pre\r\n // node. All pre nodes are static roots, so we can use this as a location to\r\n // wrap a state change and reset it upon exiting the pre node.\r\n var originalPreState = state.pre;\r\n if (el.pre) {\r\n state.pre = el.pre;\r\n }\r\n state.staticRenderFns.push(\"with(this){return \".concat(genElement(el, state), \"}\"));\r\n state.pre = originalPreState;\r\n return \"_m(\".concat(state.staticRenderFns.length - 1).concat(el.staticInFor ? ',true' : '', \")\");\r\n}\r\n// v-once\r\nfunction genOnce(el, state) {\r\n el.onceProcessed = true;\r\n if (el.if && !el.ifProcessed) {\r\n return genIf(el, state);\r\n }\r\n else if (el.staticInFor) {\r\n var key = '';\r\n var parent_1 = el.parent;\r\n while (parent_1) {\r\n if (parent_1.for) {\r\n key = parent_1.key;\r\n break;\r\n }\r\n parent_1 = parent_1.parent;\r\n }\r\n if (!key) {\r\n process.env.NODE_ENV !== 'production' &&\r\n state.warn(\"v-once can only be used inside v-for that is keyed. \", el.rawAttrsMap['v-once']);\r\n return genElement(el, state);\r\n }\r\n return \"_o(\".concat(genElement(el, state), \",\").concat(state.onceId++, \",\").concat(key, \")\");\r\n }\r\n else {\r\n return genStatic(el, state);\r\n }\r\n}\r\nfunction genIf(el, state, altGen, altEmpty) {\r\n el.ifProcessed = true; // avoid recursion\r\n return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty);\r\n}\r\nfunction genIfConditions(conditions, state, altGen, altEmpty) {\r\n if (!conditions.length) {\r\n return altEmpty || '_e()';\r\n }\r\n var condition = conditions.shift();\r\n if (condition.exp) {\r\n return \"(\".concat(condition.exp, \")?\").concat(genTernaryExp(condition.block), \":\").concat(genIfConditions(conditions, state, altGen, altEmpty));\r\n }\r\n else {\r\n return \"\".concat(genTernaryExp(condition.block));\r\n }\r\n // v-if with v-once should generate code like (a)?_m(0):_m(1)\r\n function genTernaryExp(el) {\r\n return altGen\r\n ? altGen(el, state)\r\n : el.once\r\n ? genOnce(el, state)\r\n : genElement(el, state);\r\n }\r\n}\r\nfunction genFor(el, state, altGen, altHelper) {\r\n var exp = el.for;\r\n var alias = el.alias;\r\n var iterator1 = el.iterator1 ? \",\".concat(el.iterator1) : '';\r\n var iterator2 = el.iterator2 ? \",\".concat(el.iterator2) : '';\r\n if (process.env.NODE_ENV !== 'production' &&\r\n state.maybeComponent(el) &&\r\n el.tag !== 'slot' &&\r\n el.tag !== 'template' &&\r\n !el.key) {\r\n state.warn(\"<\".concat(el.tag, \" v-for=\\\"\").concat(alias, \" in \").concat(exp, \"\\\">: component lists rendered with \") +\r\n \"v-for should have explicit keys. \" +\r\n \"See https://vuejs.org/guide/list.html#key for more info.\", el.rawAttrsMap['v-for'], true /* tip */);\r\n }\r\n el.forProcessed = true; // avoid recursion\r\n return (\"\".concat(altHelper || '_l', \"((\").concat(exp, \"),\") +\r\n \"function(\".concat(alias).concat(iterator1).concat(iterator2, \"){\") +\r\n \"return \".concat((altGen || genElement)(el, state)) +\r\n '})');\r\n}\r\nfunction genData(el, state) {\r\n var data = '{';\r\n // directives first.\r\n // directives may mutate the el's other properties before they are generated.\r\n var dirs = genDirectives(el, state);\r\n if (dirs)\r\n data += dirs + ',';\r\n // key\r\n if (el.key) {\r\n data += \"key:\".concat(el.key, \",\");\r\n }\r\n // ref\r\n if (el.ref) {\r\n data += \"ref:\".concat(el.ref, \",\");\r\n }\r\n if (el.refInFor) {\r\n data += \"refInFor:true,\";\r\n }\r\n // pre\r\n if (el.pre) {\r\n data += \"pre:true,\";\r\n }\r\n // record original tag name for components using \"is\" attribute\r\n if (el.component) {\r\n data += \"tag:\\\"\".concat(el.tag, \"\\\",\");\r\n }\r\n // module data generation functions\r\n for (var i = 0; i < state.dataGenFns.length; i++) {\r\n data += state.dataGenFns[i](el);\r\n }\r\n // attributes\r\n if (el.attrs) {\r\n data += \"attrs:\".concat(genProps(el.attrs), \",\");\r\n }\r\n // DOM props\r\n if (el.props) {\r\n data += \"domProps:\".concat(genProps(el.props), \",\");\r\n }\r\n // event handlers\r\n if (el.events) {\r\n data += \"\".concat(genHandlers(el.events, false), \",\");\r\n }\r\n if (el.nativeEvents) {\r\n data += \"\".concat(genHandlers(el.nativeEvents, true), \",\");\r\n }\r\n // slot target\r\n // only for non-scoped slots\r\n if (el.slotTarget && !el.slotScope) {\r\n data += \"slot:\".concat(el.slotTarget, \",\");\r\n }\r\n // scoped slots\r\n if (el.scopedSlots) {\r\n data += \"\".concat(genScopedSlots(el, el.scopedSlots, state), \",\");\r\n }\r\n // component v-model\r\n if (el.model) {\r\n data += \"model:{value:\".concat(el.model.value, \",callback:\").concat(el.model.callback, \",expression:\").concat(el.model.expression, \"},\");\r\n }\r\n // inline-template\r\n if (el.inlineTemplate) {\r\n var inlineTemplate = genInlineTemplate(el, state);\r\n if (inlineTemplate) {\r\n data += \"\".concat(inlineTemplate, \",\");\r\n }\r\n }\r\n data = data.replace(/,$/, '') + '}';\r\n // v-bind dynamic argument wrap\r\n // v-bind with dynamic arguments must be applied using the same v-bind object\r\n // merge helper so that class/style/mustUseProp attrs are handled correctly.\r\n if (el.dynamicAttrs) {\r\n data = \"_b(\".concat(data, \",\\\"\").concat(el.tag, \"\\\",\").concat(genProps(el.dynamicAttrs), \")\");\r\n }\r\n // v-bind data wrap\r\n if (el.wrapData) {\r\n data = el.wrapData(data);\r\n }\r\n // v-on data wrap\r\n if (el.wrapListeners) {\r\n data = el.wrapListeners(data);\r\n }\r\n return data;\r\n}\r\nfunction genDirectives(el, state) {\r\n var dirs = el.directives;\r\n if (!dirs)\r\n return;\r\n var res = 'directives:[';\r\n var hasRuntime = false;\r\n var i, l, dir, needRuntime;\r\n for (i = 0, l = dirs.length; i < l; i++) {\r\n dir = dirs[i];\r\n needRuntime = true;\r\n var gen = state.directives[dir.name];\r\n if (gen) {\r\n // compile-time directive that manipulates AST.\r\n // returns true if it also needs a runtime counterpart.\r\n needRuntime = !!gen(el, dir, state.warn);\r\n }\r\n if (needRuntime) {\r\n hasRuntime = true;\r\n res += \"{name:\\\"\".concat(dir.name, \"\\\",rawName:\\\"\").concat(dir.rawName, \"\\\"\").concat(dir.value\r\n ? \",value:(\".concat(dir.value, \"),expression:\").concat(JSON.stringify(dir.value))\r\n : '').concat(dir.arg ? \",arg:\".concat(dir.isDynamicArg ? dir.arg : \"\\\"\".concat(dir.arg, \"\\\"\")) : '').concat(dir.modifiers ? \",modifiers:\".concat(JSON.stringify(dir.modifiers)) : '', \"},\");\r\n }\r\n }\r\n if (hasRuntime) {\r\n return res.slice(0, -1) + ']';\r\n }\r\n}\r\nfunction genInlineTemplate(el, state) {\r\n var ast = el.children[0];\r\n if (process.env.NODE_ENV !== 'production' && (el.children.length !== 1 || ast.type !== 1)) {\r\n state.warn('Inline-template components must have exactly one child element.', { start: el.start });\r\n }\r\n if (ast && ast.type === 1) {\r\n var inlineRenderFns = generate(ast, state.options);\r\n return \"inlineTemplate:{render:function(){\".concat(inlineRenderFns.render, \"},staticRenderFns:[\").concat(inlineRenderFns.staticRenderFns\r\n .map(function (code) { return \"function(){\".concat(code, \"}\"); })\r\n .join(','), \"]}\");\r\n }\r\n}\r\nfunction genScopedSlots(el, slots, state) {\r\n // by default scoped slots are considered \"stable\", this allows child\r\n // components with only scoped slots to skip forced updates from parent.\r\n // but in some cases we have to bail-out of this optimization\r\n // for example if the slot contains dynamic names, has v-if or v-for on them...\r\n var needsForceUpdate = el.for ||\r\n Object.keys(slots).some(function (key) {\r\n var slot = slots[key];\r\n return (slot.slotTargetDynamic || slot.if || slot.for || containsSlotChild(slot) // is passing down slot from parent which may be dynamic\r\n );\r\n });\r\n // #9534: if a component with scoped slots is inside a conditional branch,\r\n // it's possible for the same component to be reused but with different\r\n // compiled slot content. To avoid that, we generate a unique key based on\r\n // the generated code of all the slot contents.\r\n var needsKey = !!el.if;\r\n // OR when it is inside another scoped slot or v-for (the reactivity may be\r\n // disconnected due to the intermediate scope variable)\r\n // #9438, #9506\r\n // TODO: this can be further optimized by properly analyzing in-scope bindings\r\n // and skip force updating ones that do not actually use scope variables.\r\n if (!needsForceUpdate) {\r\n var parent_2 = el.parent;\r\n while (parent_2) {\r\n if ((parent_2.slotScope && parent_2.slotScope !== emptySlotScopeToken) ||\r\n parent_2.for) {\r\n needsForceUpdate = true;\r\n break;\r\n }\r\n if (parent_2.if) {\r\n needsKey = true;\r\n }\r\n parent_2 = parent_2.parent;\r\n }\r\n }\r\n var generatedSlots = Object.keys(slots)\r\n .map(function (key) { return genScopedSlot(slots[key], state); })\r\n .join(',');\r\n return \"scopedSlots:_u([\".concat(generatedSlots, \"]\").concat(needsForceUpdate ? \",null,true\" : \"\").concat(!needsForceUpdate && needsKey ? \",null,false,\".concat(hash(generatedSlots)) : \"\", \")\");\r\n}\r\nfunction hash(str) {\r\n var hash = 5381;\r\n var i = str.length;\r\n while (i) {\r\n hash = (hash * 33) ^ str.charCodeAt(--i);\r\n }\r\n return hash >>> 0;\r\n}\r\nfunction containsSlotChild(el) {\r\n if (el.type === 1) {\r\n if (el.tag === 'slot') {\r\n return true;\r\n }\r\n return el.children.some(containsSlotChild);\r\n }\r\n return false;\r\n}\r\nfunction genScopedSlot(el, state) {\r\n var isLegacySyntax = el.attrsMap['slot-scope'];\r\n if (el.if && !el.ifProcessed && !isLegacySyntax) {\r\n return genIf(el, state, genScopedSlot, \"null\");\r\n }\r\n if (el.for && !el.forProcessed) {\r\n return genFor(el, state, genScopedSlot);\r\n }\r\n var slotScope = el.slotScope === emptySlotScopeToken ? \"\" : String(el.slotScope);\r\n var fn = \"function(\".concat(slotScope, \"){\") +\r\n \"return \".concat(el.tag === 'template'\r\n ? el.if && isLegacySyntax\r\n ? \"(\".concat(el.if, \")?\").concat(genChildren(el, state) || 'undefined', \":undefined\")\r\n : genChildren(el, state) || 'undefined'\r\n : genElement(el, state), \"}\");\r\n // reverse proxy v-slot without scope on this.$slots\r\n var reverseProxy = slotScope ? \"\" : \",proxy:true\";\r\n return \"{key:\".concat(el.slotTarget || \"\\\"default\\\"\", \",fn:\").concat(fn).concat(reverseProxy, \"}\");\r\n}\r\nfunction genChildren(el, state, checkSkip, altGenElement, altGenNode) {\r\n var children = el.children;\r\n if (children.length) {\r\n var el_1 = children[0];\r\n // optimize single v-for\r\n if (children.length === 1 &&\r\n el_1.for &&\r\n el_1.tag !== 'template' &&\r\n el_1.tag !== 'slot') {\r\n var normalizationType_1 = checkSkip\r\n ? state.maybeComponent(el_1)\r\n ? \",1\"\r\n : \",0\"\r\n : \"\";\r\n return \"\".concat((altGenElement || genElement)(el_1, state)).concat(normalizationType_1);\r\n }\r\n var normalizationType = checkSkip\r\n ? getNormalizationType(children, state.maybeComponent)\r\n : 0;\r\n var gen_1 = altGenNode || genNode;\r\n return \"[\".concat(children.map(function (c) { return gen_1(c, state); }).join(','), \"]\").concat(normalizationType ? \",\".concat(normalizationType) : '');\r\n }\r\n}\r\n// determine the normalization needed for the children array.\r\n// 0: no normalization needed\r\n// 1: simple normalization needed (possible 1-level deep nested array)\r\n// 2: full normalization needed\r\nfunction getNormalizationType(children, maybeComponent) {\r\n var res = 0;\r\n for (var i = 0; i < children.length; i++) {\r\n var el = children[i];\r\n if (el.type !== 1) {\r\n continue;\r\n }\r\n if (needsNormalization(el) ||\r\n (el.ifConditions &&\r\n el.ifConditions.some(function (c) { return needsNormalization(c.block); }))) {\r\n res = 2;\r\n break;\r\n }\r\n if (maybeComponent(el) ||\r\n (el.ifConditions && el.ifConditions.some(function (c) { return maybeComponent(c.block); }))) {\r\n res = 1;\r\n }\r\n }\r\n return res;\r\n}\r\nfunction needsNormalization(el) {\r\n return el.for !== undefined || el.tag === 'template' || el.tag === 'slot';\r\n}\r\nfunction genNode(node, state) {\r\n if (node.type === 1) {\r\n return genElement(node, state);\r\n }\r\n else if (node.type === 3 && node.isComment) {\r\n return genComment(node);\r\n }\r\n else {\r\n return genText(node);\r\n }\r\n}\r\nfunction genText(text) {\r\n return \"_v(\".concat(text.type === 2\r\n ? text.expression // no need for () because already wrapped in _s()\r\n : transformSpecialNewlines(JSON.stringify(text.text)), \")\");\r\n}\r\nfunction genComment(comment) {\r\n return \"_e(\".concat(JSON.stringify(comment.text), \")\");\r\n}\r\nfunction genSlot(el, state) {\r\n var slotName = el.slotName || '\"default\"';\r\n var children = genChildren(el, state);\r\n var res = \"_t(\".concat(slotName).concat(children ? \",function(){return \".concat(children, \"}\") : '');\r\n var attrs = el.attrs || el.dynamicAttrs\r\n ? genProps((el.attrs || []).concat(el.dynamicAttrs || []).map(function (attr) { return ({\r\n // slot props are camelized\r\n name: camelize(attr.name),\r\n value: attr.value,\r\n dynamic: attr.dynamic\r\n }); }))\r\n : null;\r\n var bind = el.attrsMap['v-bind'];\r\n if ((attrs || bind) && !children) {\r\n res += \",null\";\r\n }\r\n if (attrs) {\r\n res += \",\".concat(attrs);\r\n }\r\n if (bind) {\r\n res += \"\".concat(attrs ? '' : ',null', \",\").concat(bind);\r\n }\r\n return res + ')';\r\n}\r\n// componentName is el.component, take it as argument to shun flow's pessimistic refinement\r\nfunction genComponent(componentName, el, state) {\r\n var children = el.inlineTemplate ? null : genChildren(el, state, true);\r\n return \"_c(\".concat(componentName, \",\").concat(genData(el, state)).concat(children ? \",\".concat(children) : '', \")\");\r\n}\r\nfunction genProps(props) {\r\n var staticProps = \"\";\r\n var dynamicProps = \"\";\r\n for (var i = 0; i < props.length; i++) {\r\n var prop = props[i];\r\n var value = transformSpecialNewlines(prop.value);\r\n if (prop.dynamic) {\r\n dynamicProps += \"\".concat(prop.name, \",\").concat(value, \",\");\r\n }\r\n else {\r\n staticProps += \"\\\"\".concat(prop.name, \"\\\":\").concat(value, \",\");\r\n }\r\n }\r\n staticProps = \"{\".concat(staticProps.slice(0, -1), \"}\");\r\n if (dynamicProps) {\r\n return \"_d(\".concat(staticProps, \",[\").concat(dynamicProps.slice(0, -1), \"])\");\r\n }\r\n else {\r\n return staticProps;\r\n }\r\n}\r\n// #3895, #4268\r\nfunction transformSpecialNewlines(text) {\r\n return text.replace(/\\u2028/g, '\\\\u2028').replace(/\\u2029/g, '\\\\u2029');\r\n}\n\n// these keywords should not appear inside expressions, but operators like\r\n// typeof, instanceof and in are allowed\r\nvar prohibitedKeywordRE = new RegExp('\\\\b' +\r\n ('do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' +\r\n 'super,throw,while,yield,delete,export,import,return,switch,default,' +\r\n 'extends,finally,continue,debugger,function,arguments')\r\n .split(',')\r\n .join('\\\\b|\\\\b') +\r\n '\\\\b');\r\n// these unary operators should not be used as property/method names\r\nvar unaryOperatorsRE = new RegExp('\\\\b' +\r\n 'delete,typeof,void'.split(',').join('\\\\s*\\\\([^\\\\)]*\\\\)|\\\\b') +\r\n '\\\\s*\\\\([^\\\\)]*\\\\)');\r\n// strip strings in expressions\r\nvar stripStringRE = /'(?:[^'\\\\]|\\\\.)*'|\"(?:[^\"\\\\]|\\\\.)*\"|`(?:[^`\\\\]|\\\\.)*\\$\\{|\\}(?:[^`\\\\]|\\\\.)*`|`(?:[^`\\\\]|\\\\.)*`/g;\r\n// detect problematic expressions in a template\r\nfunction detectErrors(ast, warn) {\r\n if (ast) {\r\n checkNode(ast, warn);\r\n }\r\n}\r\nfunction checkNode(node, warn) {\r\n if (node.type === 1) {\r\n for (var name_1 in node.attrsMap) {\r\n if (dirRE.test(name_1)) {\r\n var value = node.attrsMap[name_1];\r\n if (value) {\r\n var range = node.rawAttrsMap[name_1];\r\n if (name_1 === 'v-for') {\r\n checkFor(node, \"v-for=\\\"\".concat(value, \"\\\"\"), warn, range);\r\n }\r\n else if (name_1 === 'v-slot' || name_1[0] === '#') {\r\n checkFunctionParameterExpression(value, \"\".concat(name_1, \"=\\\"\").concat(value, \"\\\"\"), warn, range);\r\n }\r\n else if (onRE.test(name_1)) {\r\n checkEvent(value, \"\".concat(name_1, \"=\\\"\").concat(value, \"\\\"\"), warn, range);\r\n }\r\n else {\r\n checkExpression(value, \"\".concat(name_1, \"=\\\"\").concat(value, \"\\\"\"), warn, range);\r\n }\r\n }\r\n }\r\n }\r\n if (node.children) {\r\n for (var i = 0; i < node.children.length; i++) {\r\n checkNode(node.children[i], warn);\r\n }\r\n }\r\n }\r\n else if (node.type === 2) {\r\n checkExpression(node.expression, node.text, warn, node);\r\n }\r\n}\r\nfunction checkEvent(exp, text, warn, range) {\r\n var stripped = exp.replace(stripStringRE, '');\r\n var keywordMatch = stripped.match(unaryOperatorsRE);\r\n if (keywordMatch && stripped.charAt(keywordMatch.index - 1) !== '$') {\r\n warn(\"avoid using JavaScript unary operator as property name: \" +\r\n \"\\\"\".concat(keywordMatch[0], \"\\\" in expression \").concat(text.trim()), range);\r\n }\r\n checkExpression(exp, text, warn, range);\r\n}\r\nfunction checkFor(node, text, warn, range) {\r\n checkExpression(node.for || '', text, warn, range);\r\n checkIdentifier(node.alias, 'v-for alias', text, warn, range);\r\n checkIdentifier(node.iterator1, 'v-for iterator', text, warn, range);\r\n checkIdentifier(node.iterator2, 'v-for iterator', text, warn, range);\r\n}\r\nfunction checkIdentifier(ident, type, text, warn, range) {\r\n if (typeof ident === 'string') {\r\n try {\r\n new Function(\"var \".concat(ident, \"=_\"));\r\n }\r\n catch (e) {\r\n warn(\"invalid \".concat(type, \" \\\"\").concat(ident, \"\\\" in expression: \").concat(text.trim()), range);\r\n }\r\n }\r\n}\r\nfunction checkExpression(exp, text, warn, range) {\r\n try {\r\n new Function(\"return \".concat(exp));\r\n }\r\n catch (e) {\r\n var keywordMatch = exp\r\n .replace(stripStringRE, '')\r\n .match(prohibitedKeywordRE);\r\n if (keywordMatch) {\r\n warn(\"avoid using JavaScript keyword as property name: \" +\r\n \"\\\"\".concat(keywordMatch[0], \"\\\"\\n Raw expression: \").concat(text.trim()), range);\r\n }\r\n else {\r\n warn(\"invalid expression: \".concat(e.message, \" in\\n\\n\") +\r\n \" \".concat(exp, \"\\n\\n\") +\r\n \" Raw expression: \".concat(text.trim(), \"\\n\"), range);\r\n }\r\n }\r\n}\r\nfunction checkFunctionParameterExpression(exp, text, warn, range) {\r\n try {\r\n new Function(exp, '');\r\n }\r\n catch (e) {\r\n warn(\"invalid function parameter expression: \".concat(e.message, \" in\\n\\n\") +\r\n \" \".concat(exp, \"\\n\\n\") +\r\n \" Raw expression: \".concat(text.trim(), \"\\n\"), range);\r\n }\r\n}\n\nvar range = 2;\r\nfunction generateCodeFrame(source, start, end) {\r\n if (start === void 0) { start = 0; }\r\n if (end === void 0) { end = source.length; }\r\n var lines = source.split(/\\r?\\n/);\r\n var count = 0;\r\n var res = [];\r\n for (var i = 0; i < lines.length; i++) {\r\n count += lines[i].length + 1;\r\n if (count >= start) {\r\n for (var j = i - range; j <= i + range || end > count; j++) {\r\n if (j < 0 || j >= lines.length)\r\n continue;\r\n res.push(\"\".concat(j + 1).concat(repeat(\" \", 3 - String(j + 1).length), \"| \").concat(lines[j]));\r\n var lineLength = lines[j].length;\r\n if (j === i) {\r\n // push underline\r\n var pad = start - (count - lineLength) + 1;\r\n var length_1 = end > count ? lineLength - pad : end - start;\r\n res.push(\" | \" + repeat(\" \", pad) + repeat(\"^\", length_1));\r\n }\r\n else if (j > i) {\r\n if (end > count) {\r\n var length_2 = Math.min(end - count, lineLength);\r\n res.push(\" | \" + repeat(\"^\", length_2));\r\n }\r\n count += lineLength + 1;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n return res.join('\\n');\r\n}\r\nfunction repeat(str, n) {\r\n var result = '';\r\n if (n > 0) {\r\n // eslint-disable-next-line no-constant-condition\r\n while (true) {\r\n // eslint-disable-line\r\n if (n & 1)\r\n result += str;\r\n n >>>= 1;\r\n if (n <= 0)\r\n break;\r\n str += str;\r\n }\r\n }\r\n return result;\r\n}\n\nfunction createFunction(code, errors) {\r\n try {\r\n return new Function(code);\r\n }\r\n catch (err) {\r\n errors.push({ err: err, code: code });\r\n return noop;\r\n }\r\n}\r\nfunction createCompileToFunctionFn(compile) {\r\n var cache = Object.create(null);\r\n return function compileToFunctions(template, options, vm) {\r\n options = extend({}, options);\r\n var warn = options.warn || warn$2;\r\n delete options.warn;\r\n /* istanbul ignore if */\r\n if (process.env.NODE_ENV !== 'production') {\r\n // detect possible CSP restriction\r\n try {\r\n new Function('return 1');\r\n }\r\n catch (e) {\r\n if (e.toString().match(/unsafe-eval|CSP/)) {\r\n warn('It seems you are using the standalone build of Vue.js in an ' +\r\n 'environment with Content Security Policy that prohibits unsafe-eval. ' +\r\n 'The template compiler cannot work in this environment. Consider ' +\r\n 'relaxing the policy to allow unsafe-eval or pre-compiling your ' +\r\n 'templates into render functions.');\r\n }\r\n }\r\n }\r\n // check cache\r\n var key = options.delimiters\r\n ? String(options.delimiters) + template\r\n : template;\r\n if (cache[key]) {\r\n return cache[key];\r\n }\r\n // compile\r\n var compiled = compile(template, options);\r\n // check compilation errors/tips\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (compiled.errors && compiled.errors.length) {\r\n if (options.outputSourceRange) {\r\n compiled.errors.forEach(function (e) {\r\n warn(\"Error compiling template:\\n\\n\".concat(e.msg, \"\\n\\n\") +\r\n generateCodeFrame(template, e.start, e.end), vm);\r\n });\r\n }\r\n else {\r\n warn(\"Error compiling template:\\n\\n\".concat(template, \"\\n\\n\") +\r\n compiled.errors.map(function (e) { return \"- \".concat(e); }).join('\\n') +\r\n '\\n', vm);\r\n }\r\n }\r\n if (compiled.tips && compiled.tips.length) {\r\n if (options.outputSourceRange) {\r\n compiled.tips.forEach(function (e) { return tip(e.msg, vm); });\r\n }\r\n else {\r\n compiled.tips.forEach(function (msg) { return tip(msg, vm); });\r\n }\r\n }\r\n }\r\n // turn code into functions\r\n var res = {};\r\n var fnGenErrors = [];\r\n res.render = createFunction(compiled.render, fnGenErrors);\r\n res.staticRenderFns = compiled.staticRenderFns.map(function (code) {\r\n return createFunction(code, fnGenErrors);\r\n });\r\n // check function generation errors.\r\n // this should only happen if there is a bug in the compiler itself.\r\n // mostly for codegen development use\r\n /* istanbul ignore if */\r\n if (process.env.NODE_ENV !== 'production') {\r\n if ((!compiled.errors || !compiled.errors.length) && fnGenErrors.length) {\r\n warn(\"Failed to generate render function:\\n\\n\" +\r\n fnGenErrors\r\n .map(function (_a) {\r\n var err = _a.err, code = _a.code;\r\n return \"\".concat(err.toString(), \" in\\n\\n\").concat(code, \"\\n\");\r\n })\r\n .join('\\n'), vm);\r\n }\r\n }\r\n return (cache[key] = res);\r\n };\r\n}\n\nfunction createCompilerCreator(baseCompile) {\r\n return function createCompiler(baseOptions) {\r\n function compile(template, options) {\r\n var finalOptions = Object.create(baseOptions);\r\n var errors = [];\r\n var tips = [];\r\n var warn = function (msg, range, tip) {\r\n (tip ? tips : errors).push(msg);\r\n };\r\n if (options) {\r\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\r\n // $flow-disable-line\r\n var leadingSpaceLength_1 = template.match(/^\\s*/)[0].length;\r\n warn = function (msg, range, tip) {\r\n var data = typeof msg === 'string' ? { msg: msg } : msg;\r\n if (range) {\r\n if (range.start != null) {\r\n data.start = range.start + leadingSpaceLength_1;\r\n }\r\n if (range.end != null) {\r\n data.end = range.end + leadingSpaceLength_1;\r\n }\r\n }\r\n (tip ? tips : errors).push(data);\r\n };\r\n }\r\n // merge custom modules\r\n if (options.modules) {\r\n finalOptions.modules = (baseOptions.modules || []).concat(options.modules);\r\n }\r\n // merge custom directives\r\n if (options.directives) {\r\n finalOptions.directives = extend(Object.create(baseOptions.directives || null), options.directives);\r\n }\r\n // copy other options\r\n for (var key in options) {\r\n if (key !== 'modules' && key !== 'directives') {\r\n finalOptions[key] = options[key];\r\n }\r\n }\r\n }\r\n finalOptions.warn = warn;\r\n var compiled = baseCompile(template.trim(), finalOptions);\r\n if (process.env.NODE_ENV !== 'production') {\r\n detectErrors(compiled.ast, warn);\r\n }\r\n compiled.errors = errors;\r\n compiled.tips = tips;\r\n return compiled;\r\n }\r\n return {\r\n compile: compile,\r\n compileToFunctions: createCompileToFunctionFn(compile)\r\n };\r\n };\r\n}\n\n// `createCompilerCreator` allows creating compilers that use alternative\r\n// parser/optimizer/codegen, e.g the SSR optimizing compiler.\r\n// Here we just export a default compiler using the default parts.\r\nvar createCompiler = createCompilerCreator(function baseCompile(template, options) {\r\n var ast = parse(template.trim(), options);\r\n if (options.optimize !== false) {\r\n optimize(ast, options);\r\n }\r\n var code = generate(ast, options);\r\n return {\r\n ast: ast,\r\n render: code.render,\r\n staticRenderFns: code.staticRenderFns\r\n };\r\n});\n\nvar _a = createCompiler(baseOptions), compileToFunctions = _a.compileToFunctions;\n\n// check whether current browser encodes a char inside attribute values\r\nvar div;\r\nfunction getShouldDecode(href) {\r\n div = div || document.createElement('div');\r\n div.innerHTML = href ? \"<a href=\\\"\\n\\\"/>\" : \"<div a=\\\"\\n\\\"/>\";\r\n return div.innerHTML.indexOf(' ') > 0;\r\n}\r\n// #3663: IE encodes newlines inside attribute values while other browsers don't\r\nvar shouldDecodeNewlines = inBrowser ? getShouldDecode(false) : false;\r\n// #6828: chrome encodes content in a[href]\r\nvar shouldDecodeNewlinesForHref = inBrowser\r\n ? getShouldDecode(true)\r\n : false;\n\nvar idToTemplate = cached(function (id) {\r\n var el = query(id);\r\n return el && el.innerHTML;\r\n});\r\nvar mount = Vue.prototype.$mount;\r\nVue.prototype.$mount = function (el, hydrating) {\r\n el = el && query(el);\r\n /* istanbul ignore if */\r\n if (el === document.body || el === document.documentElement) {\r\n process.env.NODE_ENV !== 'production' &&\r\n warn$2(\"Do not mount Vue to <html> or <body> - mount to normal elements instead.\");\r\n return this;\r\n }\r\n var options = this.$options;\r\n // resolve template/el and convert to render function\r\n if (!options.render) {\r\n var template = options.template;\r\n if (template) {\r\n if (typeof template === 'string') {\r\n if (template.charAt(0) === '#') {\r\n template = idToTemplate(template);\r\n /* istanbul ignore if */\r\n if (process.env.NODE_ENV !== 'production' && !template) {\r\n warn$2(\"Template element not found or is empty: \".concat(options.template), this);\r\n }\r\n }\r\n }\r\n else if (template.nodeType) {\r\n template = template.innerHTML;\r\n }\r\n else {\r\n if (process.env.NODE_ENV !== 'production') {\r\n warn$2('invalid template option:' + template, this);\r\n }\r\n return this;\r\n }\r\n }\r\n else if (el) {\r\n // @ts-expect-error\r\n template = getOuterHTML(el);\r\n }\r\n if (template) {\r\n /* istanbul ignore if */\r\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\r\n mark('compile');\r\n }\r\n var _a = compileToFunctions(template, {\r\n outputSourceRange: process.env.NODE_ENV !== 'production',\r\n shouldDecodeNewlines: shouldDecodeNewlines,\r\n shouldDecodeNewlinesForHref: shouldDecodeNewlinesForHref,\r\n delimiters: options.delimiters,\r\n comments: options.comments\r\n }, this), render = _a.render, staticRenderFns = _a.staticRenderFns;\r\n options.render = render;\r\n options.staticRenderFns = staticRenderFns;\r\n /* istanbul ignore if */\r\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\r\n mark('compile end');\r\n measure(\"vue \".concat(this._name, \" compile\"), 'compile', 'compile end');\r\n }\r\n }\r\n }\r\n return mount.call(this, el, hydrating);\r\n};\r\n/**\r\n * Get outerHTML of elements, taking care\r\n * of SVG elements in IE as well.\r\n */\r\nfunction getOuterHTML(el) {\r\n if (el.outerHTML) {\r\n return el.outerHTML;\r\n }\r\n else {\r\n var container = document.createElement('div');\r\n container.appendChild(el.cloneNode(true));\r\n return container.innerHTML;\r\n }\r\n}\r\nVue.compile = compileToFunctions;\n\nexport { EffectScope, computed, customRef, Vue as default, defineComponent, del, effectScope, getCurrentInstance, getCurrentScope, h, inject, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, mergeDefaults, nextTick, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onScopeDispose, onServerPrefetch, onUnmounted, onUpdated, provide, proxyRefs, reactive, readonly, ref$1 as ref, set, shallowReactive, shallowReadonly, shallowRef, toRaw, toRef, toRefs, triggerRef, unref, useAttrs, useCssModule, useCssVars, useSlots, version, watch, watchEffect, watchPostEffect, watchSyncEffect };\n","var r=function(r){return function(r){return!!r&&\"object\"==typeof r}(r)&&!function(r){var t=Object.prototype.toString.call(r);return\"[object RegExp]\"===t||\"[object Date]\"===t||function(r){return r.$$typeof===e}(r)}(r)},e=\"function\"==typeof Symbol&&Symbol.for?Symbol.for(\"react.element\"):60103;function t(r,e){return!1!==e.clone&&e.isMergeableObject(r)?c(Array.isArray(r)?[]:{},r,e):r}function n(r,e,n){return r.concat(e).map(function(r){return t(r,n)})}function o(r){return Object.keys(r).concat(function(r){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(r).filter(function(e){return r.propertyIsEnumerable(e)}):[]}(r))}function u(r,e){try{return e in r}catch(r){return!1}}function c(e,i,a){(a=a||{}).arrayMerge=a.arrayMerge||n,a.isMergeableObject=a.isMergeableObject||r,a.cloneUnlessOtherwiseSpecified=t;var f=Array.isArray(i);return f===Array.isArray(e)?f?a.arrayMerge(e,i,a):function(r,e,n){var i={};return n.isMergeableObject(r)&&o(r).forEach(function(e){i[e]=t(r[e],n)}),o(e).forEach(function(o){(function(r,e){return u(r,e)&&!(Object.hasOwnProperty.call(r,e)&&Object.propertyIsEnumerable.call(r,e))})(r,o)||(i[o]=u(r,o)&&n.isMergeableObject(e[o])?function(r,e){if(!e.customMerge)return c;var t=e.customMerge(r);return\"function\"==typeof t?t:c}(o,n)(r[o],e[o],n):t(e[o],n))}),i}(e,i,a):t(i,a)}c.all=function(r,e){if(!Array.isArray(r))throw new Error(\"first argument should be an array\");return r.reduce(function(r,t){return c(r,t,e)},{})};var i=c;export default function(r){var e=(r=r||{}).storage||window&&window.localStorage,t=r.key||\"vuex\";(r.assertStorage||function(){e.setItem(\"@@\",1),e.removeItem(\"@@\")})(e);var n,o=function(){return(r.getState||function(r,e){var t;try{return(t=e.getItem(r))&&void 0!==t?JSON.parse(t):void 0}catch(r){}})(t,e)};return r.fetchBeforeUse&&(n=o()),function(u){r.fetchBeforeUse||(n=o()),\"object\"==typeof n&&null!==n&&(u.replaceState(r.overwrite?n:i(u.state,n,{arrayMerge:r.arrayMerger||function(r,e){return e},clone:!1})),(r.rehydrated||function(){})(u)),(r.subscriber||function(r){return function(e){return r.subscribe(e)}})(u)(function(n,o){(r.filter||function(){return!0})(n)&&(r.setState||function(r,e,t){return t.setItem(r,JSON.stringify(e))})(t,(r.reducer||function(r,e){return Array.isArray(e)?e.reduce(function(e,t){return function(r,e,t,n){return(e=e.split?e.split(\".\"):e).slice(0,-1).reduce(function(r,e){return r[e]=r[e]||{}},r)[e.pop()]=t,r}(e,t,function(r,e,t){return void 0===(r=(e.split?e.split(\".\"):e).reduce(function(r,e){return r&&r[e]},r))?void 0:r}(r,t))},{}):r})(o,r.paths),e)})}}\n//# sourceMappingURL=vuex-persistedstate.es.js.map\n","/*!\n * vuex v3.5.1\n * (c) 2020 Evan You\n * @license MIT\n */\nfunction applyMixin (Vue) {\n var version = Number(Vue.version.split('.')[0]);\n\n if (version >= 2) {\n Vue.mixin({ beforeCreate: vuexInit });\n } else {\n // override init and inject vuex init procedure\n // for 1.x backwards compatibility.\n var _init = Vue.prototype._init;\n Vue.prototype._init = function (options) {\n if ( options === void 0 ) options = {};\n\n options.init = options.init\n ? [vuexInit].concat(options.init)\n : vuexInit;\n _init.call(this, options);\n };\n }\n\n /**\n * Vuex init hook, injected into each instances init hooks list.\n */\n\n function vuexInit () {\n var options = this.$options;\n // store injection\n if (options.store) {\n this.$store = typeof options.store === 'function'\n ? options.store()\n : options.store;\n } else if (options.parent && options.parent.$store) {\n this.$store = options.parent.$store;\n }\n }\n}\n\nvar target = typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\nvar devtoolHook = target.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\nfunction devtoolPlugin (store) {\n if (!devtoolHook) { return }\n\n store._devtoolHook = devtoolHook;\n\n devtoolHook.emit('vuex:init', store);\n\n devtoolHook.on('vuex:travel-to-state', function (targetState) {\n store.replaceState(targetState);\n });\n\n store.subscribe(function (mutation, state) {\n devtoolHook.emit('vuex:mutation', mutation, state);\n }, { prepend: true });\n\n store.subscribeAction(function (action, state) {\n devtoolHook.emit('vuex:action', action, state);\n }, { prepend: true });\n}\n\n/**\n * Get the first item that pass the test\n * by second argument function\n *\n * @param {Array} list\n * @param {Function} f\n * @return {*}\n */\nfunction find (list, f) {\n return list.filter(f)[0]\n}\n\n/**\n * Deep copy the given object considering circular structure.\n * This function caches all nested objects and its copies.\n * If it detects circular structure, use cached copy to avoid infinite loop.\n *\n * @param {*} obj\n * @param {Array<Object>} cache\n * @return {*}\n */\nfunction deepCopy (obj, cache) {\n if ( cache === void 0 ) cache = [];\n\n // just return if obj is immutable value\n if (obj === null || typeof obj !== 'object') {\n return obj\n }\n\n // if obj is hit, it is in circular structure\n var hit = find(cache, function (c) { return c.original === obj; });\n if (hit) {\n return hit.copy\n }\n\n var copy = Array.isArray(obj) ? [] : {};\n // put the copy into cache at first\n // because we want to refer it in recursive deepCopy\n cache.push({\n original: obj,\n copy: copy\n });\n\n Object.keys(obj).forEach(function (key) {\n copy[key] = deepCopy(obj[key], cache);\n });\n\n return copy\n}\n\n/**\n * forEach for object\n */\nfunction forEachValue (obj, fn) {\n Object.keys(obj).forEach(function (key) { return fn(obj[key], key); });\n}\n\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\nfunction isPromise (val) {\n return val && typeof val.then === 'function'\n}\n\nfunction assert (condition, msg) {\n if (!condition) { throw new Error((\"[vuex] \" + msg)) }\n}\n\nfunction partial (fn, arg) {\n return function () {\n return fn(arg)\n }\n}\n\n// Base data struct for store's module, package with some attribute and method\nvar Module = function Module (rawModule, runtime) {\n this.runtime = runtime;\n // Store some children item\n this._children = Object.create(null);\n // Store the origin module object which passed by programmer\n this._rawModule = rawModule;\n var rawState = rawModule.state;\n\n // Store the origin module's state\n this.state = (typeof rawState === 'function' ? rawState() : rawState) || {};\n};\n\nvar prototypeAccessors = { namespaced: { configurable: true } };\n\nprototypeAccessors.namespaced.get = function () {\n return !!this._rawModule.namespaced\n};\n\nModule.prototype.addChild = function addChild (key, module) {\n this._children[key] = module;\n};\n\nModule.prototype.removeChild = function removeChild (key) {\n delete this._children[key];\n};\n\nModule.prototype.getChild = function getChild (key) {\n return this._children[key]\n};\n\nModule.prototype.hasChild = function hasChild (key) {\n return key in this._children\n};\n\nModule.prototype.update = function update (rawModule) {\n this._rawModule.namespaced = rawModule.namespaced;\n if (rawModule.actions) {\n this._rawModule.actions = rawModule.actions;\n }\n if (rawModule.mutations) {\n this._rawModule.mutations = rawModule.mutations;\n }\n if (rawModule.getters) {\n this._rawModule.getters = rawModule.getters;\n }\n};\n\nModule.prototype.forEachChild = function forEachChild (fn) {\n forEachValue(this._children, fn);\n};\n\nModule.prototype.forEachGetter = function forEachGetter (fn) {\n if (this._rawModule.getters) {\n forEachValue(this._rawModule.getters, fn);\n }\n};\n\nModule.prototype.forEachAction = function forEachAction (fn) {\n if (this._rawModule.actions) {\n forEachValue(this._rawModule.actions, fn);\n }\n};\n\nModule.prototype.forEachMutation = function forEachMutation (fn) {\n if (this._rawModule.mutations) {\n forEachValue(this._rawModule.mutations, fn);\n }\n};\n\nObject.defineProperties( Module.prototype, prototypeAccessors );\n\nvar ModuleCollection = function ModuleCollection (rawRootModule) {\n // register root module (Vuex.Store options)\n this.register([], rawRootModule, false);\n};\n\nModuleCollection.prototype.get = function get (path) {\n return path.reduce(function (module, key) {\n return module.getChild(key)\n }, this.root)\n};\n\nModuleCollection.prototype.getNamespace = function getNamespace (path) {\n var module = this.root;\n return path.reduce(function (namespace, key) {\n module = module.getChild(key);\n return namespace + (module.namespaced ? key + '/' : '')\n }, '')\n};\n\nModuleCollection.prototype.update = function update$1 (rawRootModule) {\n update([], this.root, rawRootModule);\n};\n\nModuleCollection.prototype.register = function register (path, rawModule, runtime) {\n var this$1 = this;\n if ( runtime === void 0 ) runtime = true;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, rawModule);\n }\n\n var newModule = new Module(rawModule, runtime);\n if (path.length === 0) {\n this.root = newModule;\n } else {\n var parent = this.get(path.slice(0, -1));\n parent.addChild(path[path.length - 1], newModule);\n }\n\n // register nested modules\n if (rawModule.modules) {\n forEachValue(rawModule.modules, function (rawChildModule, key) {\n this$1.register(path.concat(key), rawChildModule, runtime);\n });\n }\n};\n\nModuleCollection.prototype.unregister = function unregister (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n var child = parent.getChild(key);\n\n if (!child) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to unregister module '\" + key + \"', which is \" +\n \"not registered\"\n );\n }\n return\n }\n\n if (!child.runtime) {\n return\n }\n\n parent.removeChild(key);\n};\n\nModuleCollection.prototype.isRegistered = function isRegistered (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n\n return parent.hasChild(key)\n};\n\nfunction update (path, targetModule, newModule) {\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, newModule);\n }\n\n // update target module\n targetModule.update(newModule);\n\n // update nested modules\n if (newModule.modules) {\n for (var key in newModule.modules) {\n if (!targetModule.getChild(key)) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to add a new module '\" + key + \"' on hot reloading, \" +\n 'manual reload is needed'\n );\n }\n return\n }\n update(\n path.concat(key),\n targetModule.getChild(key),\n newModule.modules[key]\n );\n }\n }\n}\n\nvar functionAssert = {\n assert: function (value) { return typeof value === 'function'; },\n expected: 'function'\n};\n\nvar objectAssert = {\n assert: function (value) { return typeof value === 'function' ||\n (typeof value === 'object' && typeof value.handler === 'function'); },\n expected: 'function or object with \"handler\" function'\n};\n\nvar assertTypes = {\n getters: functionAssert,\n mutations: functionAssert,\n actions: objectAssert\n};\n\nfunction assertRawModule (path, rawModule) {\n Object.keys(assertTypes).forEach(function (key) {\n if (!rawModule[key]) { return }\n\n var assertOptions = assertTypes[key];\n\n forEachValue(rawModule[key], function (value, type) {\n assert(\n assertOptions.assert(value),\n makeAssertionMessage(path, key, type, value, assertOptions.expected)\n );\n });\n });\n}\n\nfunction makeAssertionMessage (path, key, type, value, expected) {\n var buf = key + \" should be \" + expected + \" but \\\"\" + key + \".\" + type + \"\\\"\";\n if (path.length > 0) {\n buf += \" in module \\\"\" + (path.join('.')) + \"\\\"\";\n }\n buf += \" is \" + (JSON.stringify(value)) + \".\";\n return buf\n}\n\nvar Vue; // bind on install\n\nvar Store = function Store (options) {\n var this$1 = this;\n if ( options === void 0 ) options = {};\n\n // Auto install if it is not done yet and `window` has `Vue`.\n // To allow users to avoid auto-installation in some cases,\n // this code should be placed here. See #731\n if (!Vue && typeof window !== 'undefined' && window.Vue) {\n install(window.Vue);\n }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Vue, \"must call Vue.use(Vuex) before creating a store instance.\");\n assert(typeof Promise !== 'undefined', \"vuex requires a Promise polyfill in this browser.\");\n assert(this instanceof Store, \"store must be called with the new operator.\");\n }\n\n var plugins = options.plugins; if ( plugins === void 0 ) plugins = [];\n var strict = options.strict; if ( strict === void 0 ) strict = false;\n\n // store internal state\n this._committing = false;\n this._actions = Object.create(null);\n this._actionSubscribers = [];\n this._mutations = Object.create(null);\n this._wrappedGetters = Object.create(null);\n this._modules = new ModuleCollection(options);\n this._modulesNamespaceMap = Object.create(null);\n this._subscribers = [];\n this._watcherVM = new Vue();\n this._makeLocalGettersCache = Object.create(null);\n\n // bind commit and dispatch to self\n var store = this;\n var ref = this;\n var dispatch = ref.dispatch;\n var commit = ref.commit;\n this.dispatch = function boundDispatch (type, payload) {\n return dispatch.call(store, type, payload)\n };\n this.commit = function boundCommit (type, payload, options) {\n return commit.call(store, type, payload, options)\n };\n\n // strict mode\n this.strict = strict;\n\n var state = this._modules.root.state;\n\n // init root module.\n // this also recursively registers all sub-modules\n // and collects all module getters inside this._wrappedGetters\n installModule(this, state, [], this._modules.root);\n\n // initialize the store vm, which is responsible for the reactivity\n // (also registers _wrappedGetters as computed properties)\n resetStoreVM(this, state);\n\n // apply plugins\n plugins.forEach(function (plugin) { return plugin(this$1); });\n\n var useDevtools = options.devtools !== undefined ? options.devtools : Vue.config.devtools;\n if (useDevtools) {\n devtoolPlugin(this);\n }\n};\n\nvar prototypeAccessors$1 = { state: { configurable: true } };\n\nprototypeAccessors$1.state.get = function () {\n return this._vm._data.$$state\n};\n\nprototypeAccessors$1.state.set = function (v) {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(false, \"use store.replaceState() to explicit replace store state.\");\n }\n};\n\nStore.prototype.commit = function commit (_type, _payload, _options) {\n var this$1 = this;\n\n // check object-style commit\n var ref = unifyObjectStyle(_type, _payload, _options);\n var type = ref.type;\n var payload = ref.payload;\n var options = ref.options;\n\n var mutation = { type: type, payload: payload };\n var entry = this._mutations[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown mutation type: \" + type));\n }\n return\n }\n this._withCommit(function () {\n entry.forEach(function commitIterator (handler) {\n handler(payload);\n });\n });\n\n this._subscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .forEach(function (sub) { return sub(mutation, this$1.state); });\n\n if (\n (process.env.NODE_ENV !== 'production') &&\n options && options.silent\n ) {\n console.warn(\n \"[vuex] mutation type: \" + type + \". Silent option has been removed. \" +\n 'Use the filter functionality in the vue-devtools'\n );\n }\n};\n\nStore.prototype.dispatch = function dispatch (_type, _payload) {\n var this$1 = this;\n\n // check object-style dispatch\n var ref = unifyObjectStyle(_type, _payload);\n var type = ref.type;\n var payload = ref.payload;\n\n var action = { type: type, payload: payload };\n var entry = this._actions[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown action type: \" + type));\n }\n return\n }\n\n try {\n this._actionSubscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .filter(function (sub) { return sub.before; })\n .forEach(function (sub) { return sub.before(action, this$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in before action subscribers: \");\n console.error(e);\n }\n }\n\n var result = entry.length > 1\n ? Promise.all(entry.map(function (handler) { return handler(payload); }))\n : entry[0](payload);\n\n return new Promise(function (resolve, reject) {\n result.then(function (res) {\n try {\n this$1._actionSubscribers\n .filter(function (sub) { return sub.after; })\n .forEach(function (sub) { return sub.after(action, this$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in after action subscribers: \");\n console.error(e);\n }\n }\n resolve(res);\n }, function (error) {\n try {\n this$1._actionSubscribers\n .filter(function (sub) { return sub.error; })\n .forEach(function (sub) { return sub.error(action, this$1.state, error); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in error action subscribers: \");\n console.error(e);\n }\n }\n reject(error);\n });\n })\n};\n\nStore.prototype.subscribe = function subscribe (fn, options) {\n return genericSubscribe(fn, this._subscribers, options)\n};\n\nStore.prototype.subscribeAction = function subscribeAction (fn, options) {\n var subs = typeof fn === 'function' ? { before: fn } : fn;\n return genericSubscribe(subs, this._actionSubscribers, options)\n};\n\nStore.prototype.watch = function watch (getter, cb, options) {\n var this$1 = this;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof getter === 'function', \"store.watch only accepts a function.\");\n }\n return this._watcherVM.$watch(function () { return getter(this$1.state, this$1.getters); }, cb, options)\n};\n\nStore.prototype.replaceState = function replaceState (state) {\n var this$1 = this;\n\n this._withCommit(function () {\n this$1._vm._data.$$state = state;\n });\n};\n\nStore.prototype.registerModule = function registerModule (path, rawModule, options) {\n if ( options === void 0 ) options = {};\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n assert(path.length > 0, 'cannot register the root module by using registerModule.');\n }\n\n this._modules.register(path, rawModule);\n installModule(this, this.state, path, this._modules.get(path), options.preserveState);\n // reset store to update getters...\n resetStoreVM(this, this.state);\n};\n\nStore.prototype.unregisterModule = function unregisterModule (path) {\n var this$1 = this;\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n this._modules.unregister(path);\n this._withCommit(function () {\n var parentState = getNestedState(this$1.state, path.slice(0, -1));\n Vue.delete(parentState, path[path.length - 1]);\n });\n resetStore(this);\n};\n\nStore.prototype.hasModule = function hasModule (path) {\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n return this._modules.isRegistered(path)\n};\n\nStore.prototype.hotUpdate = function hotUpdate (newOptions) {\n this._modules.update(newOptions);\n resetStore(this, true);\n};\n\nStore.prototype._withCommit = function _withCommit (fn) {\n var committing = this._committing;\n this._committing = true;\n fn();\n this._committing = committing;\n};\n\nObject.defineProperties( Store.prototype, prototypeAccessors$1 );\n\nfunction genericSubscribe (fn, subs, options) {\n if (subs.indexOf(fn) < 0) {\n options && options.prepend\n ? subs.unshift(fn)\n : subs.push(fn);\n }\n return function () {\n var i = subs.indexOf(fn);\n if (i > -1) {\n subs.splice(i, 1);\n }\n }\n}\n\nfunction resetStore (store, hot) {\n store._actions = Object.create(null);\n store._mutations = Object.create(null);\n store._wrappedGetters = Object.create(null);\n store._modulesNamespaceMap = Object.create(null);\n var state = store.state;\n // init all modules\n installModule(store, state, [], store._modules.root, true);\n // reset vm\n resetStoreVM(store, state, hot);\n}\n\nfunction resetStoreVM (store, state, hot) {\n var oldVm = store._vm;\n\n // bind store public getters\n store.getters = {};\n // reset local getters cache\n store._makeLocalGettersCache = Object.create(null);\n var wrappedGetters = store._wrappedGetters;\n var computed = {};\n forEachValue(wrappedGetters, function (fn, key) {\n // use computed to leverage its lazy-caching mechanism\n // direct inline function use will lead to closure preserving oldVm.\n // using partial to return function with only arguments preserved in closure environment.\n computed[key] = partial(fn, store);\n Object.defineProperty(store.getters, key, {\n get: function () { return store._vm[key]; },\n enumerable: true // for local getters\n });\n });\n\n // use a Vue instance to store the state tree\n // suppress warnings just in case the user has added\n // some funky global mixins\n var silent = Vue.config.silent;\n Vue.config.silent = true;\n store._vm = new Vue({\n data: {\n $$state: state\n },\n computed: computed\n });\n Vue.config.silent = silent;\n\n // enable strict mode for new vm\n if (store.strict) {\n enableStrictMode(store);\n }\n\n if (oldVm) {\n if (hot) {\n // dispatch changes in all subscribed watchers\n // to force getter re-evaluation for hot reloading.\n store._withCommit(function () {\n oldVm._data.$$state = null;\n });\n }\n Vue.nextTick(function () { return oldVm.$destroy(); });\n }\n}\n\nfunction installModule (store, rootState, path, module, hot) {\n var isRoot = !path.length;\n var namespace = store._modules.getNamespace(path);\n\n // register in namespace map\n if (module.namespaced) {\n if (store._modulesNamespaceMap[namespace] && (process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate namespace \" + namespace + \" for the namespaced module \" + (path.join('/'))));\n }\n store._modulesNamespaceMap[namespace] = module;\n }\n\n // set state\n if (!isRoot && !hot) {\n var parentState = getNestedState(rootState, path.slice(0, -1));\n var moduleName = path[path.length - 1];\n store._withCommit(function () {\n if ((process.env.NODE_ENV !== 'production')) {\n if (moduleName in parentState) {\n console.warn(\n (\"[vuex] state field \\\"\" + moduleName + \"\\\" was overridden by a module with the same name at \\\"\" + (path.join('.')) + \"\\\"\")\n );\n }\n }\n Vue.set(parentState, moduleName, module.state);\n });\n }\n\n var local = module.context = makeLocalContext(store, namespace, path);\n\n module.forEachMutation(function (mutation, key) {\n var namespacedType = namespace + key;\n registerMutation(store, namespacedType, mutation, local);\n });\n\n module.forEachAction(function (action, key) {\n var type = action.root ? key : namespace + key;\n var handler = action.handler || action;\n registerAction(store, type, handler, local);\n });\n\n module.forEachGetter(function (getter, key) {\n var namespacedType = namespace + key;\n registerGetter(store, namespacedType, getter, local);\n });\n\n module.forEachChild(function (child, key) {\n installModule(store, rootState, path.concat(key), child, hot);\n });\n}\n\n/**\n * make localized dispatch, commit, getters and state\n * if there is no namespace, just use root ones\n */\nfunction makeLocalContext (store, namespace, path) {\n var noNamespace = namespace === '';\n\n var local = {\n dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._actions[type]) {\n console.error((\"[vuex] unknown local action type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n return store.dispatch(type, payload)\n },\n\n commit: noNamespace ? store.commit : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._mutations[type]) {\n console.error((\"[vuex] unknown local mutation type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n store.commit(type, payload, options);\n }\n };\n\n // getters and state object must be gotten lazily\n // because they will be changed by vm update\n Object.defineProperties(local, {\n getters: {\n get: noNamespace\n ? function () { return store.getters; }\n : function () { return makeLocalGetters(store, namespace); }\n },\n state: {\n get: function () { return getNestedState(store.state, path); }\n }\n });\n\n return local\n}\n\nfunction makeLocalGetters (store, namespace) {\n if (!store._makeLocalGettersCache[namespace]) {\n var gettersProxy = {};\n var splitPos = namespace.length;\n Object.keys(store.getters).forEach(function (type) {\n // skip if the target getter is not match this namespace\n if (type.slice(0, splitPos) !== namespace) { return }\n\n // extract local getter type\n var localType = type.slice(splitPos);\n\n // Add a port to the getters proxy.\n // Define as getter property because\n // we do not want to evaluate the getters in this time.\n Object.defineProperty(gettersProxy, localType, {\n get: function () { return store.getters[type]; },\n enumerable: true\n });\n });\n store._makeLocalGettersCache[namespace] = gettersProxy;\n }\n\n return store._makeLocalGettersCache[namespace]\n}\n\nfunction registerMutation (store, type, handler, local) {\n var entry = store._mutations[type] || (store._mutations[type] = []);\n entry.push(function wrappedMutationHandler (payload) {\n handler.call(store, local.state, payload);\n });\n}\n\nfunction registerAction (store, type, handler, local) {\n var entry = store._actions[type] || (store._actions[type] = []);\n entry.push(function wrappedActionHandler (payload) {\n var res = handler.call(store, {\n dispatch: local.dispatch,\n commit: local.commit,\n getters: local.getters,\n state: local.state,\n rootGetters: store.getters,\n rootState: store.state\n }, payload);\n if (!isPromise(res)) {\n res = Promise.resolve(res);\n }\n if (store._devtoolHook) {\n return res.catch(function (err) {\n store._devtoolHook.emit('vuex:error', err);\n throw err\n })\n } else {\n return res\n }\n });\n}\n\nfunction registerGetter (store, type, rawGetter, local) {\n if (store._wrappedGetters[type]) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate getter key: \" + type));\n }\n return\n }\n store._wrappedGetters[type] = function wrappedGetter (store) {\n return rawGetter(\n local.state, // local state\n local.getters, // local getters\n store.state, // root state\n store.getters // root getters\n )\n };\n}\n\nfunction enableStrictMode (store) {\n store._vm.$watch(function () { return this._data.$$state }, function () {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(store._committing, \"do not mutate vuex store state outside mutation handlers.\");\n }\n }, { deep: true, sync: true });\n}\n\nfunction getNestedState (state, path) {\n return path.reduce(function (state, key) { return state[key]; }, state)\n}\n\nfunction unifyObjectStyle (type, payload, options) {\n if (isObject(type) && type.type) {\n options = payload;\n payload = type;\n type = type.type;\n }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof type === 'string', (\"expects string as the type, but found \" + (typeof type) + \".\"));\n }\n\n return { type: type, payload: payload, options: options }\n}\n\nfunction install (_Vue) {\n if (Vue && _Vue === Vue) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error(\n '[vuex] already installed. Vue.use(Vuex) should be called only once.'\n );\n }\n return\n }\n Vue = _Vue;\n applyMixin(Vue);\n}\n\n/**\n * Reduce the code which written in Vue.js for getting the state.\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} states # Object's item can be a function which accept state and getters for param, you can do something for state and getters in it.\n * @param {Object}\n */\nvar mapState = normalizeNamespace(function (namespace, states) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(states)) {\n console.error('[vuex] mapState: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(states).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedState () {\n var state = this.$store.state;\n var getters = this.$store.getters;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapState', namespace);\n if (!module) {\n return\n }\n state = module.context.state;\n getters = module.context.getters;\n }\n return typeof val === 'function'\n ? val.call(this, state, getters)\n : state[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for committing the mutation\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} mutations # Object's item can be a function which accept `commit` function as the first param, it can accept anthor params. You can commit mutation and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapMutations = normalizeNamespace(function (namespace, mutations) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(mutations)) {\n console.error('[vuex] mapMutations: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(mutations).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedMutation () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // Get the commit method from store\n var commit = this.$store.commit;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapMutations', namespace);\n if (!module) {\n return\n }\n commit = module.context.commit;\n }\n return typeof val === 'function'\n ? val.apply(this, [commit].concat(args))\n : commit.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for getting the getters\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} getters\n * @return {Object}\n */\nvar mapGetters = normalizeNamespace(function (namespace, getters) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(getters)) {\n console.error('[vuex] mapGetters: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(getters).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n // The namespace has been mutated by normalizeNamespace\n val = namespace + val;\n res[key] = function mappedGetter () {\n if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) {\n return\n }\n if ((process.env.NODE_ENV !== 'production') && !(val in this.$store.getters)) {\n console.error((\"[vuex] unknown getter: \" + val));\n return\n }\n return this.$store.getters[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for dispatch the action\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} actions # Object's item can be a function which accept `dispatch` function as the first param, it can accept anthor params. You can dispatch action and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapActions = normalizeNamespace(function (namespace, actions) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(actions)) {\n console.error('[vuex] mapActions: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(actions).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedAction () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // get dispatch function from store\n var dispatch = this.$store.dispatch;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapActions', namespace);\n if (!module) {\n return\n }\n dispatch = module.context.dispatch;\n }\n return typeof val === 'function'\n ? val.apply(this, [dispatch].concat(args))\n : dispatch.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Rebinding namespace param for mapXXX function in special scoped, and return them by simple object\n * @param {String} namespace\n * @return {Object}\n */\nvar createNamespacedHelpers = function (namespace) { return ({\n mapState: mapState.bind(null, namespace),\n mapGetters: mapGetters.bind(null, namespace),\n mapMutations: mapMutations.bind(null, namespace),\n mapActions: mapActions.bind(null, namespace)\n}); };\n\n/**\n * Normalize the map\n * normalizeMap([1, 2, 3]) => [ { key: 1, val: 1 }, { key: 2, val: 2 }, { key: 3, val: 3 } ]\n * normalizeMap({a: 1, b: 2, c: 3}) => [ { key: 'a', val: 1 }, { key: 'b', val: 2 }, { key: 'c', val: 3 } ]\n * @param {Array|Object} map\n * @return {Object}\n */\nfunction normalizeMap (map) {\n if (!isValidMap(map)) {\n return []\n }\n return Array.isArray(map)\n ? map.map(function (key) { return ({ key: key, val: key }); })\n : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); })\n}\n\n/**\n * Validate whether given map is valid or not\n * @param {*} map\n * @return {Boolean}\n */\nfunction isValidMap (map) {\n return Array.isArray(map) || isObject(map)\n}\n\n/**\n * Return a function expect two param contains namespace and map. it will normalize the namespace and then the param's function will handle the new namespace and the map.\n * @param {Function} fn\n * @return {Function}\n */\nfunction normalizeNamespace (fn) {\n return function (namespace, map) {\n if (typeof namespace !== 'string') {\n map = namespace;\n namespace = '';\n } else if (namespace.charAt(namespace.length - 1) !== '/') {\n namespace += '/';\n }\n return fn(namespace, map)\n }\n}\n\n/**\n * Search a special module from store by namespace. if module not exist, print error message.\n * @param {Object} store\n * @param {String} helper\n * @param {String} namespace\n * @return {Object}\n */\nfunction getModuleByNamespace (store, helper, namespace) {\n var module = store._modulesNamespaceMap[namespace];\n if ((process.env.NODE_ENV !== 'production') && !module) {\n console.error((\"[vuex] module namespace not found in \" + helper + \"(): \" + namespace));\n }\n return module\n}\n\n// Credits: borrowed code from fcomb/redux-logger\n\nfunction createLogger (ref) {\n if ( ref === void 0 ) ref = {};\n var collapsed = ref.collapsed; if ( collapsed === void 0 ) collapsed = true;\n var filter = ref.filter; if ( filter === void 0 ) filter = function (mutation, stateBefore, stateAfter) { return true; };\n var transformer = ref.transformer; if ( transformer === void 0 ) transformer = function (state) { return state; };\n var mutationTransformer = ref.mutationTransformer; if ( mutationTransformer === void 0 ) mutationTransformer = function (mut) { return mut; };\n var actionFilter = ref.actionFilter; if ( actionFilter === void 0 ) actionFilter = function (action, state) { return true; };\n var actionTransformer = ref.actionTransformer; if ( actionTransformer === void 0 ) actionTransformer = function (act) { return act; };\n var logMutations = ref.logMutations; if ( logMutations === void 0 ) logMutations = true;\n var logActions = ref.logActions; if ( logActions === void 0 ) logActions = true;\n var logger = ref.logger; if ( logger === void 0 ) logger = console;\n\n return function (store) {\n var prevState = deepCopy(store.state);\n\n if (typeof logger === 'undefined') {\n return\n }\n\n if (logMutations) {\n store.subscribe(function (mutation, state) {\n var nextState = deepCopy(state);\n\n if (filter(mutation, prevState, nextState)) {\n var formattedTime = getFormattedTime();\n var formattedMutation = mutationTransformer(mutation);\n var message = \"mutation \" + (mutation.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c prev state', 'color: #9E9E9E; font-weight: bold', transformer(prevState));\n logger.log('%c mutation', 'color: #03A9F4; font-weight: bold', formattedMutation);\n logger.log('%c next state', 'color: #4CAF50; font-weight: bold', transformer(nextState));\n endMessage(logger);\n }\n\n prevState = nextState;\n });\n }\n\n if (logActions) {\n store.subscribeAction(function (action, state) {\n if (actionFilter(action, state)) {\n var formattedTime = getFormattedTime();\n var formattedAction = actionTransformer(action);\n var message = \"action \" + (action.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c action', 'color: #03A9F4; font-weight: bold', formattedAction);\n endMessage(logger);\n }\n });\n }\n }\n}\n\nfunction startMessage (logger, message, collapsed) {\n var startMessage = collapsed\n ? logger.groupCollapsed\n : logger.group;\n\n // render\n try {\n startMessage.call(logger, message);\n } catch (e) {\n logger.log(message);\n }\n}\n\nfunction endMessage (logger) {\n try {\n logger.groupEnd();\n } catch (e) {\n logger.log('—— log end ——');\n }\n}\n\nfunction getFormattedTime () {\n var time = new Date();\n return (\" @ \" + (pad(time.getHours(), 2)) + \":\" + (pad(time.getMinutes(), 2)) + \":\" + (pad(time.getSeconds(), 2)) + \".\" + (pad(time.getMilliseconds(), 3)))\n}\n\nfunction repeat (str, times) {\n return (new Array(times + 1)).join(str)\n}\n\nfunction pad (num, maxLength) {\n return repeat('0', maxLength - num.toString().length) + num\n}\n\nvar index = {\n Store: Store,\n install: install,\n version: '3.5.1',\n mapState: mapState,\n mapMutations: mapMutations,\n mapGetters: mapGetters,\n mapActions: mapActions,\n createNamespacedHelpers: createNamespacedHelpers,\n createLogger: createLogger\n};\n\nexport default index;\nexport { Store, createLogger, createNamespacedHelpers, install, mapActions, mapGetters, mapMutations, mapState };\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}"],"names":["BaseObject","this","_disposed","_disposers","className","prototype","debug","Object","defineProperty","get","_uid","enumerable","configurable","_id","set","value","_map","_delayedMap","addDelayedMap","property","id","map","delayedMap","hasKey","setKey","list","getKey","push","target","processDelayedMap","_this","each","target_1","item","removeKey","applyTheme","themes","getCurrentThemes","theme","index","_themes","isDisposed","dispose","a","length","disposer","shift","clearCache","clonedFrom","clones","removeValue","uid","addDisposer","removeDispose","splice","clone","cloneId","newObject","constructor","copyFrom","_clones","object","_className","setCache","key","ttl","getCache","undefined","setTimeout","fn","delay","clearTimeout","setInterval","config","processConfig","e","raiseCriticalError","configKey","item_1","configValue","call","hasProperty","asIs","createClassInstance","processAdapters","processEvents","window","parent_1","asFunction","Error","processListTemplate","processOrderedTemplate","template","templateValue","entryKey","entryValue","listItem","processDictionaryTemplate","processList","maybeColorOrPercent","values","processDictionary","isReserved","configOrder","processingErrors","errors","join","_processingErrors","match","entry","add","callback","priority","has","on","type","create","getConfigEntryType","hasIndex","getIndex","setIndex","indexOf","pop","insert","parent","itemCount","extraCount","createEntryInstance","b","field","res","prop","BaseObjectEvents","_super","_eventDispatcher","dispatch","eventType","data","events","isEnabled","dispatchImmediately","source","Component","dataFields","_dataSources","_parseDataFrom","_dataDisposers","_currentDataSetId","_start","_end","skipRangeEvent","rangeChangeDuration","rangeChangeEasing","parsingStepDuration","dataInvalid","rawDataInvalid","dataRangeInvalid","dataItemsInvalid","interpolationDuration","interpolationEasing","sequencedInterpolation","sequencedInterpolationDelay","dataValidationProgress","_addAllDataItems","_usesData","minZoomCount","maxZoomCount","_dataItems","createDataItem","handleDataItemAdded","handleDataItemRemoved","invalidateData","dataUsers","handleDataUserAdded","maxZoomDeclination","event","dataUser","newValue","dataProvider","handleDataItemValueChange","dataItem","name","invalidateDataItems","handleDataItemWorkingValueChange","handleDataItemWorkingLocationChange","handleDataItemCalculatedValueChange","handleDataItemPropertyChange","processDataItem","dataContext","hasSomeValues_1","fieldValue","fieldName","_adapterO","apply","hasChildren","mainDataSet","children","count","i","rawDataItem","childDataItem","anyDataItem","propertyFields","f","setProperty","remove","updateDataItem","dataContext_1","child","validateDataElements","endIndex","startIndex","dataItems","validateDataElement","validate","addData","removeCount","skipRaw","inited","Array","removeData","dataItem_1","disabled","isTemplate","iterator","x","invalidateDataUsers","invalidate","invalidateDataRange","validateDataRange","_prevStartIndex","_prevEndIndex","rangeChangeUpdate","appendDataItems","sliceData","_workingStartIndex","_workingEndIndex","__disabled","invalidateRawData","validateRawData","clear","disposeData","_startIndex","_endIndex","_dataSets","getDataItem","validateData","_data","preloader","counter","startTime","Date","now","n","_loop_1","this_1","dataUserDataItem","elapsed","visible","progress","state_1","hidden","hide","_internalDefaultsApplied","applyInternalDefaults","validateDataItems","setData","getDataSource","component","setDataSourceEvents","adapter","val","dataSourceDateFields","dataSourceNumberFields","loadData","load","populateDataSourceFields","targetList","ds","ev","openModal","message","incremental","keepCount","updateCurrentData","_responsive","zoom","range","instantly","declination","start","end","maxZoomFactor","_finalStart","_finalEnd","minZoomFactor","rangeChangeAnimation","options","animationOptions","to","stop","kill","animate","isFinished","zoomToIndexes","getPropertyValue","setPropertyValue","Math","round","indexToPosition","max","floor","min","ceil","removeFromInvalids","dataSets","setDataSet","dataSet","_updateDataItemIndexes","_index","bindDataField","invalidateProcessedData","resetProcessedRange","_dataUsers","reinit","_inited","deepInvalidate","getExporting","_export","_exportData","handleDataUpdated","arg","setDisabled","changed","setShowOnInit","_showOnInitDisposer2","once","hideInitially","setBaseId","_baseId","_systemCheckIfValidate","Container","_childrenByLayout","_childrenDisposers","hasFocused","setStateOnSprites","layoutInvalid","_absoluteWidth","_absoluteHeight","_shouldBeReady","_tapToActivate","tapTimeout","_element","paper","addGroup","group","element","_positionPrecision","handleChildAdded","handleChildRemoved","processChild","insertKey","handleChildTransform","sortAndAdd","err","sortChildren","addChildren","oldValue","removeElement","isMeasured","invalidateLayout","layout","_children","fixed_1","relative_1","percentWidth","percentHeight","concat","calculateRelativeSize","totalRelativeWidth","totalRelativeHeight","relativeWidth","relativeHeight","zindexed","sortArray","idx","sort","ai","zIndex","bi","group_1","isCorrect","node","childNodes","len","_background","addToBack","createChild","classType","sprite","removeChildren","disposeChildren","createBackground","processBackground","background","handleGlobalScale","fill","getFor","validateLayout","_availableWidth","innerWidth","_availableHeight","innerHeight","measuredWidth","measuredHeight","allValid","maxWidth","maxHeight","pixelMarginRight","pixelMarginLeft","invalid","pixelMarginTop","pixelMarginBottom","childMeasuredWidth","childMeasuredHeight","align","valign","arrange","left","right","top","bottom","maxCellWidth","minCellWidth","columnCount","contentLeft","contentRight","contentTop","contentBottom","paddingLeft","pixelPaddingLeft","paddingRight","pixelPaddingRight","paddingTop","pixelPaddingTop","paddingBottom","pixelPaddingBottom","nextX","nextY","row","column","columnWidth","rowHeight","minWidth","minHeight","childrenCopy","reverseOrder","reverse","fixedWidthGrid","maxColumns","getColumnWidth","validatePosition","y","childMarginLeft","childMarginRight","childMarginTop","childMarginBottom","childWidth","childHeight","childLeft","childRight","childTop","childBottom","maxLeft","maxRight","pixelX","maxTop","maxBottom","pixelY","nextColumnWidth","moveTo","noneBBox","bbox","width","height","_pixelWidth","_pixelHeight","measuredContentWidth","measuredContentHeight","contentAlign","contentValign","dx_1","dy_1","mwa","mha","ddx","ddy","oldBBox","contentWidth","contentHeight","_bbox","prevLeft","prevTop","prevBotttom","prevRight","measure","event_1","dummyData","updateCenter","updateBackground","fitsToBounds","point","deviation","pixelWidth","pixelHeight","setStateOnChildren","shouldClone","clonedChild","_preloader","tooltipContainer","setPaper","topParent","setDataItem","_dataItem","measureElement","setSVGAttribute","invalidateLabels","handleValidate","setState","transitionDuration","easing","stateName","isActive","setActive","dispatchReady","isReady","allReady_1","_systemUpdate","skippedSprites","_systemValidatePositions","positionInvalid","_systemValidateLayouts","setTapToActivate","interactions","isTouchProtected","setEventDisposer","handleTapToActivate","initTapTimeout","body","isLocalElement","pointer","svg","handleTapToActivateDeactivation","_tapToActivateTimeout","tapToActivate","moveHtmlContainer","htmlElement","newContainer","htmlContainer","svgDiv","svgContainer","appendChild","SVGContainer","initSensor","hasLicense","DataItem","_disabled","hasProperties","categories","dates","locations","workingLocations","properties","sprites","_visible","_hidden","_ignoreMinMax","isHiding","_valueAnimations","_locationAnimations","_animations","setVisibility","noChangeValues","defaultState","hiddenState","show","duration","fields","animation_1","_hideDisposer","setWorkingValue","animation","toValue","animation_2","anim","getDuration","getValue","calculated","getWorkingValue","realName","workingValue","getActualWorkingValue","setValue","currentValue","newDuration","event_2","setCalculatedValue","event_3","childObject","from","handleInterpolationProgress","valueAnimation","event_4","setLocation","currentLocation","event_5","setWorkingLocation","workingLocation","locationAnimation","event_6","setDate","date","dateFormatter","parse","currentDate","getTime","getDate","event_7","setCategory","opacity","event_8","event_9","hasValue","depth","_dataContext","addSprite","verbose","commercialLicense","classNamePrefix","autoSetClassName","minPolylineStep","onlyShowOnViewport","queue","autoDispose","licenses","suppressErrors","suppressWarnings","animationsEnabled","nonce","deferredDelay","disableHoverOnTransform","pixelPerfectPrecision","Registry","loadedThemes","_uidCount","registeredClasses","_placeholders","invalidSprites","invalidDatas","invalidRawDatas","invalidDataItems","invalidDataRange","invalidPositions","invalidLayouts","baseSprites","baseSpritesByUid","deferred","getUniqueId","noBase","addEventListener","setAttribute","clientWidth","clientHeight","removeAttribute","getPlaceholder","addToInvalidComponents","baseId","removeFromInvalidComponents","addToInvalidSprites","removeFromInvalidSprites","addToInvalidPositions","removeFromInvalidPositions","addToInvalidLayouts","removeFromInvalidLayouts","registry","is","visualProperties","Sprite","_bindings","_isTemplate","_isPath","_ready","_isHidden","isShowing","isStandaloneInstance","_isActive","_mask","_language","_exporting","_exportable","applyOnClones","_measuredWidthSelf","_measuredHeightSelf","maxLeftSelf","maxRightSelf","maxTopSelf","maxBottomSelf","_isDragged","_isResized","_internalDisabled","_updateDisabled","rollOutDelay","isBaseSprite","appeared","ex","ey","dragWhileResize","measureFailed","preventShow","cloneTooltip","_prevMeasuredWidth","_prevMeasuredHeight","_measuredWidth","_measuredHeight","_isMeasured","setClassName","_parent","beforeDraw","draw","afterDraw","invalidatePosition","dx","dy","attr","removeSVGAttribute","sizeChanged","prevGroupTransform","transformString","rotation","nonScaling","scale","globalScale","showTooltipOn","updateTooltipPosition","maskRectangle","_maskRectangle","_clipElement","e_1","_a","horizontalCenter","verticalCenter","_b","keys","_c","next","done","e_1_1","error","return","applyFilters","interactionsEnabled","showOnInit","applyMask","hideTooltip","showTooltip","nonScalingStroke","strokeWidth","updateFilterScale","filters","filter","states","plugins","configField","virtualParent","exportable","_tooltip","tooltip","_showSystemTooltip","showSystemTooltip","fillModifier","strokeModifier","removeChild","firstChild","_svgContainer","_interactionDisposer","_urlDisposer","_numberFormatter","_focusFilter","stroke","_filters","_alwaysShowDisposers","applyAccessibility","_topParent","oldParent","_tooltipContainer","handleAlwaysShowTooltip","handleAlwaysShow","oldDisposers","oldDisposer","_virtualParent","appendDefs","filterElement","appendDef","fill_1","modify","stroke_1","_clipPath","_paper","parent_2","oldPaper","_htmlContainer","parent_3","_titleElement","_descriptionElement","onAll","setSVGAttributes","fillOpacity","strokeOpacity","shapeRendering","strokeDasharray","strokeDashoffset","strokeLinecap","strokeLinejoin","focusable","tabindex","role","attribute","removeAttr","addClass","userClassName","uidAttr","updateClipPath","mask","createClipPath","width_1","height_1","removeChildNodes","filterUnits","appendPrimitives","w","h","removeClipPath","setElement","SVGPathElement","definedBBox","svgBBox","getBBox","prevElementTransform","elementX","elementY","elementWidth","elementHeigth","top_1","pixelPerfect","positionPrecision","matrix","createSVGMatrix","c","d","p1","createSVGPoint","p2","p3","p4","pt1","matrixTransform","pt2","pt3","pt4","isHover","tooltipText","tooltipHTML","insertBefore","moveValue","insertAfter","getRelativeX","getRelativeY","getPixelX","pixel","relative","getPixelY","isDragged","reset","rect","hitTest","ax1","ay1","ax2","ay2","bx1","by1","bx2","by2","_states","state","processState","hoverable","clickable","length_1","getSvgPoint","getBoundingClientRect","isHidden","transitionEasing","transitTo","applyCurrentState","isDown","downPointers","isFocused","transition","propValues","allValues","propertyName","finalValue","option","newFilters_1","stateFilter","newFilter","currentFilter","pushAll","isInTransition","animations","isInteractive","handleOver","isRealHover","handleOut","handleDown","handleUp","handleFocus","handleBlur","current","hasChild","numberFormatter","language","_dateFormatter","_durationFormatter","durationFormatter","exporting","populateString","string","escape","tags","tag","replace","getTagValue","split","unescape","tagName","format","matches","parts","reg","exec","params","reg2","matches2","method","getTagValueFromObject","populateStringFrom","formatApplied","part","numberValue","dateValue","durationValue","encodeURIComponent","formatParts","formatterType","dataContext_2","dataContext2_1","anyThis","propValue","setColorProperty","toString","setPercentProperty","transform","precision","length_2","bind","bindToProperty","modifier","observe","listener","context","title","readerTitle","description","readerDescription","readerHidden","checked","readerChecked","controls","readerControls","live","readerLive","orientation","readerOrientation","valueNow","readerValueNow","valueText","readerValueText","labelledByIds","describedByIds","labelledBy","readerLabelledBy","describedBy","readerDescribedBy","titleElement","titleId","textContent","descriptionElement","descriptionId","keyboardOptions","mouseOptions","_interaction","interaction","getInteraction","dom","trackable","draggable","swipeable","resizable","wheelable","contextMenuDisabled","inert","_tabindex","focusedElement","focusFilter","hoverOnFocus","inertiaOptions","applyCursorStyle","handleDragStart","handleDragMove","handleDragStop","touch","originalPosition","dragStart","dragStop","cancelled","cssScale","hoverOptions","_outTimeout","targetSprite","keepTargetHover","handleOutReal","hitOptions","originalAngle","originalScale","handleToggle","urlHandler","cursorOverStyle","baseSprite","url","urlTarget","location","href","open","swipeOptions","handleResize","svgPoint1","point1","svgPoint2","point2","svgMidPoint","parentPoint1","startPoint1","parentPoint2","startPoint2","spritePoint1","spritePoint2","spriteMidPoint","parentPoint","cursorOptions","style","overStyle","defaultStyle","applyCursorOverStyle","downStyle","pointerEvents","exp","nonExportableSprites","modalPrefix","modal","text","closeModal","popups","openPopup","closeAllPopups","minX","maxX","minY","maxY","parentWidth","setMaxWidth","prevWidth","prevHeight","previousWidth","previousHeight","parentHeight","setMaxHeight","percent","Number","_relativeHeight","_relativeWidth","margin","marginTop","marginRight","marginBottom","marginLeft","padding","setPath","setFill","realFill","setStroke","realStroke","hex","_rtl","rtl","showReal","_hideAnimation","_showHideDisposer","hideReal","currentSprite","hiddenState_1","getVisibility","toFront","toBack","removeClass","tooltipDataItem","_tooltipDataItem","_tooltipColorSource","tooltipPosition","lastPointer","colorSource_1","tooltipColorSource_1","tooltipColorSource","getStrokeFromObject","getFillFromObject","animationDuration","label","rgb","autoTextColor","alternative","html","currentText","globalPoint","getTooltipX","getTooltipY","pointTooltipTo","showInViewport","pointTo","closable","content","console","log","getCursorStyle","cursorDowntyle","_showOnInitDisposer","appear","_plugins","init","SpriteEventDispatcher","arguments","_interactionEvents","_dispatchSpriteEvent","imev","_dispatchSpritePointEvent","spritePoint","svgPoint","_addInteractionObjectEvent","insertKeyIfEmpty","increment","_on","info","disposers","togglable","SpriteState","spriteValue","_x","System","_isPaused","dummyCounter","_frameRequested","updateStepDuration","time","reportTime","msg","update","skippedComponents","invalidData","validateLayouts","validatePositions","hasSkipped","checkIfValidate2","requestFrame","all0_1","softInvalidate","container","hardInvalidate","VERSION","system","separators","CSVParser","contentType","delimiter","skipRows","skipEmpty","useColumnNames","isCSV","getDelimiterFromData","separator","lines","sep","columns","lineColums","csv","col","CSVToArray","empty","emptyAs","numbers","parsableNumbers","parsableDates","cols","dataPoint","maybeToEmpty","maybeToNumber","maybeToDate","objPattern","RegExp","arrData","arrMatches","strMatchedDelimiter","strMatchedValue","DataLoader","sources","isArray","promises","requestOptions","Promise","all","then","result","code","xhr","status","translate","processData","response","catch","getParserByType","parser","getParserByData","dataLoader","DataParser","numberFields","dateFields","dateFormat","inputDateFormat","DataSource","_requestOptions","_incremental","_incrementalParams","_keepCount","_updateCurrentData","showPreloader","lastLoad","disableCache","timestampUrl","_url","addUrlParams","incrementalParams","_parser","_reloadFrequency","_reloadDisposer","_reloadTimeout","reloadFrequency","tstamp","JSONParser","isJSON","JSON","SVGDefaults","Cone","angle","radius","topRadius","bodyFillModifier","lightnesses","radiusBase","gradient","path","radiusY","Rectangle3D","sideBack","sideBottom","sideLeft","sideRight","sideTop","sideFront","sin","cos","ah","bh","ch","dh","colorStr","stops","color","lightness","filter2","filter3","filter4","filter5","lighten","Slice3D","edge","sideA","sideB","edgeFill","cornerRadius","innerCornerRadius","arc","startAngle","innerRadius","pixelInnerRadius","endAngle","innerRadiusY","a0","b0","c0","d0","edgePath","step","mangle","prevPoint","pp","slice","Button","tooltipY","iconPosition","interfaceColors","hoverState","downState","_icon","icon","currentIcon","position","_label","Circle","pixelRadius","Ellipse","C","Label","isOversized","wrap","truncate","fullWords","ellipsis","textAlign","textValign","baseLineRatio","handleMaxSize","availableWidth","availableHeight","alignSVGText","updateCurrentText","output","supportsForeignObject","_currentFormat","_prevStatus","getLineBBox","lineInfo","parentNode","oldW","oldH","display","getAttr","textPathElement","resetBBox","currentHeight","currentFormat","line","chunks","chunk","ignoreFormatting","currentLineHeight","firstChunk","skipTextChunks","getLineInfo","getSVGLineElement","complex","translateStyleShortcuts","getSvgElement","lineText","avgCharWidth","excessChars","addEllipsis","node_1","node_2","elementText","maxChars","node_3","lastNode","lastChild","splitLines","lineText_1","cleanUp","restOfLine","addLineInfo","tempElement","offset","lineInfo_1","maybeHideOversized","hideUnused","fo","foreignObject","lineElement","getHTMLLineElement","overflow","setStyles","pathElement","hideOversized","getAttribute","div","document","createElement","innerHTML","wordWrap","whiteSpace","direction","selectable","addStyle","removeStyle","initLineCache","attrNS","_sourceDataItemEvents","classid","btoa","defs","createElementNS","relevant","stateId","Line","x1","y1","x2","y2","delta","positionToPoint","Modal","showCurtain","PointedRectangle","cr","pointerX","pointerY","bwh","pointerBaseWidth","maxcr","crtl","crtr","crbr","crbl","xtl","ytl","xtr","ytr","xbr","ybr","xbl","ybl","lineT","lineR","lineB","lineL","d1","d2","stemX","Infinity","stemY","arcTR","arcBR","arcBL","arcTL","PointedShape","pointerLength","Polyline","_distance","makePath","segments","points","p","_realSegments","deltaAngle","abs","totalDistance","distance","currentDistance","distanceAB","positionA","positionB","pointA","pointB","s","positionAB","midPoint","Polyspline","tensionX","tensionY","allPoints","realPoints","first","last","closed_1","p0","controlPointA","controlPointB","stepCount","i_1","k","getClosestPointIndex","closest","extend","f0","f1","point_1","rules","Dictionary","prefix","cs","InterfaceColorSet","fg","bg","alpha","abg","rgba","Popup","Adapter","_elements","_IOs","_content","_title","_classPrefix","_defaultStyles","_showCurtain","_draggable","_align","_dynamicResize","_verticalAlign","_shift","_tempShift","_readerTitle","_closable","_cssLoaded","_fitTo","_sized","wrapper","curtain","positionElement","close","parentElement","releasePointers","forceResize","dynamicResize","images","getElementsByTagName","image","complete","toStyle","verticalAlign","setupDragging","header","unprepElement","off","createContentElement","getClassNames","wrapperClass","classPrefix","headerClass","titleClass","contentClass","insideClass","curtainClass","closeClass","classNames","disablePointers","visibility","defaultStyles","loadDefaultCSS","createCurtainElement","applyEvents","applyReaderSettings","_left","_right","_top","_bottom","el","_spriteInteractionsEnabled","elements","classPrefixRaw","Base","Rectangle","ResizeButton","RoundedRectangle","minSide","cornerRadiusTopLeft","cornerRadiusTopRight","cornerRadiusBottomRight","cornerRadiusBottomLeft","tl","tr","bl","br","Scrollbar","_previousStart","_previousEnd","_prevStart","_prevEnd","_isBusy","_skipRangeEvents","updateWhileMoving","animationEasing","startGrip","endGrip","updateThumb","thumb","dispatchRangeChange","hideGrips","updateSize","updateExtremes","handleBgHit","makeBusy","thumbX","_thumbAnimation","thumbY","makeUnbusy","_thumb","_unbusyTimeout","stopAnimations","_zoomAnimation","makeUnbusyReal","_usingGrip","innerWidth_1","innerHeight_1","getPosition","__start","__end","skipRangeEvents","fixRange","updateByOrientation","_startGrip","button","processGrip","_endGrip","handleGripDrag","cursorDownStyle","handleThumbPosition","handleDoubleClick","preventDefault","newStart","newEnd","zoomAnimation","innerWidth_2","innerHeight_2","_hideGrips","_overDisposer","_outDisposer","Slice","shiftRadius","updateGradient","cx","cy","innerRect","outerRect","ix","iy","middleAngle","TextLink","brighten","Tooltip","_boundingRect","_pointTo","fitPointerToBounds","_verticalOrientation","fixDoc","dropShadow","drawBackground","pointerOrientation","handleVisibility","textX","textY","boundingRect","textW","textH","ignoreBounds","documentWidth","offsetWidth","offsetHeight","textWidth","textHeight","bgWidth","bgX","bgHeight","bgY","boundX1","boundX2","boundY1","boundY2","delayedPointTo","_pointToDisposer","_animation","setBounds","rectangle","oldRect","_boundingContainer","updateBounds","boundingContainer","Trapezoid","topSide","bottomSide","leftSide","rightSide","ts","bs","ls","rs","x0","y0","x3","y3","mt","mr","mb","ml","horizontalNeck","hn","verticalNeck","vn","Triangle","WavedCircle","waveLength","waveHeight","tension","getPoints","smooth","circleLength","PI","halfWaveHeight","halfWaveLength","angle1","angle2","WavedLine","WavedRectangle","waveLengthH","waveHeightH","waveLengthV","waveHeightV","td","rd","bd","ld","wavedTop","wavedRight","wavedBottom","wavedLeft","setWavedSides","ZoomOutButton","pdfmakePromise","_pdfmake","pdfmake","vfs_fonts","global","sent","pdfMake","vfs","default","fontFamilySrcRegexp","supportsBlobUri","navigator","msSaveOrOpenBlob","blobToDataUri","blob","resolve","reject","FileReader","onload","onerror","readAsDataURL","getCssRules","sheet","trys","cssRules","success","loadStylesheet","doc","e_2","head","eachStylesheet","topUrl","rule","CSSRule","IMPORT_RULE","eachStylesheets","iframe","doc_1","src","contentDocument","styleSheets","Export","_formatOptions","_extraSprites","_validateSprites","dataFieldsOrder","_dynamicDataFields","_removedObjects","_hiddenObjects","_objectsAlreadyHidden","_filePrefix","useWebFonts","useRetina","useSimplifiedExport","timeoutDelay","_exportRunning","_prevHasData","_container","quality","fontSize","imageFormat","addURL","addColumnNames","indent","useLocale","addBOM","printMethod","formatOptions","_menu","menu","branch","unsupported","typeSupported","export","_disablePointers","_releasePointers","obj","supported","getFormatOptions","_hasData","print","_getFunction","getImage","getSVG","getPDF","getExcel","getCSV","getJSON","getHTML","getPrint","func","handleCustom","hideTimeout","_timeoutTimeout","showTimeout","hideNonExportableSprites","restoreNonExportableSprites","hidePreloader","download","filePrefix","callbackTarget","getFontFamilies","DOMURL","blobs","getDOMURL","FONT_FACE_RULE","cssText_1","cssText","urls","after","fullUrl","url_1","e_3","webFontFilter","responseType","createObjectURL","includeExtras","prehidden","canvas","uri","e_4","awaitValidSprites","simplifiedImageExport","getCanvas","addExtras","toDataURL","getContentType","disposeCanvas","stack","getImageAdvanced","advanced","middleLeft_1","middleTop_1","middleWidth_1","middleHeight_1","extraRight_1","extraBottom_1","extras","newCanvas","ctx_1","left_1","right_1","bottom_1","extraSprites","extraSprite","extra","extraCanvas","extraWidth","extraHeight","getCanvasAdvanced","crop","getDisposableCanvas","getContext","backgroundColor","findBackgroundColor","fillStyle","fillRect","drawImage","font","pixelRatio","ctx","img","getPixelRatio","getAdjustedScale","fonts","imagesToDataURI","prepForeignObjects","normalizeSVG","serializeElement","Blob","loadNewImage","revokeObjectURL","restoreRemovedObjects","canvg","useCORS","ignoreDimensions","scaleWidth","scaleHeight","fromString","render","widthScale","heightScale","adjWidth","adjHeight","querySelectorAll","getAttributeNS","XLINK","svgToDataURI","imageToDataURI","objects","temporarilyRemoveObject","keepTainted","charset","setAttributeNS","placeholder","cache","crossOrigin","currentHref","Image","onabort","self","URL","webkitURL","encodeURI","dimParams","styleParams","fos","ms","XMLSerializer","serializeToString","addFont","paths","normal","bytes","bold","italics","bolditalics","defaultMargins","extraMargin","_d","pageSize","pageOrientation","pageMargins","alignment","fit","getPageSizeFit","getPDFData","table","extraFonts","createPdf","getDataUrl","dataFieldsOrder_1","pivot","dataRow","dataValue","convertToSpecialFormat","getPDFDataRow","headerRows","items","convertEmptyValue","margins","newMargins","sizes","A0","A1","A2","A3","A4","A5","A6","A7","A8","A9","A10","B0","B1","B2","B3","B4","B5","B6","B7","B8","B9","B10","C0","C1","C2","C3","C4","C5","C6","C7","C8","C9","C10","RA0","RA1","RA2","RA3","RA4","SRA0","SRA1","SRA2","SRA3","SRA4","EXECUTIVE","FOLIO","LEGAL","LETTER","TABLOID","fitSize","XLSX","wbOptions","sheetName","wb","dataFieldsOrder_2","xlsx","bookType","bookSST","normalizeExcelSheetName","SheetNames","Sheets","getExcelRow","utils","aoa_to_sheet","workbook","write","dataFieldsOrder_3","getCSVRow","forceQuotes","search","dataFieldsOrder_4","tableClass","getHTMLRow","headerRow","rowClass","charCodeAt","useTag","cellClass","sourceData","json","newValue_1","stringify","keepOriginal","isDateField","isDurationField","durationFormat","isNumberField","numberFormat","useTimestamps","toLocaleString","fileName","blob_1","link_1","decoded","blob_2","url_2","chars","charCode","url_3","link","idoc","msBlobDownloadSupport","decodeURIComponent","msSaveBlob","atob","Uint8Array","blobDownloadSupport","click","linkDownloadSupport","legacyIE","showModal","execCommand","downloadSupport","printViaCSS","printViaIframe","scroll","originalTitle","isIOS","documentElement","scrollTop","clipPath","test","userAgent","MSStream","contentWindow","currentColor","_sprite","validateSprites","_dataFields","generateDataFields","hasData","_dateFormat","_dateFields","_numberFormat","_numberFields","_durationFormat","_durationFields","durationFields","contains","_backgroundColor","hideModal","_modal","_canvg","_xlsx","setFormatOptions","newPrefix","colorSet","ExportMenu","closeDelay","closeOnClick","_menuTag","_itemTag","_labelTag","_iconTag","_ignoreNextClose","_items","getMenuItemClass","createMenuElement","drawBranch","menuElement","_currentSelection","moveSelection","level","ascendants","List","createItemElement","createIconElement","createSvgElement","createLabelElement","readerLabel","getReaderLabel","typeClickable","submenu_1","getSubMenu","selectBranch","setFocus","delayUnselectBranch","local_level","submenu","submenuElement","hideBranch","menuTag","itemTag","labelTag","iconTag","DOMParser","parseFromString","hasSubMenu","Language","setBlur","getElementsByClassName","closeTimeout","ascendant","unselectBranch","simple","newSelection","getPrevSibling","getNextSibling","getParentItem","getSiblings","siblings","prev","focus","blur","showBranch","Validatable","DateFormatter","_inputDateFormat","_utc","timezoneMinutes","_firstDayOfWeek","months","monthsShort","weekdays","weekdaysShort","_outputFormat","capitalize","applyTimezone","formatted","intlLocales","Intl","DateTimeFormat","parseFormat","timezoneOffset","setMinutes","getMinutes","getTimezoneOffset","timezone","applyFormat","substr","toUpperCase","cached","fullYear","month","weekday","day","hours","minutes","seconds","milliseconds","timestamp","utc","getUTCFullYear","getUTCMonth","getUTCDay","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","getFullYear","getMonth","getDay","getHours","getSeconds","getMilliseconds","week","year","translateFunc","firstDayOfWeek","pow","tz","tzh","tzm","toISOString","toUTCString","parsedIndexes","resValues","indexAdjust","year3","year2","year1","getStringList","monthLong","monthShort","yearDay","weekdayLong","weekdayShort","am","hour12Base1","hourBase0","hour12Base0","hourBase1","minute","second","millisecond","millisecondDigits","zone","iso","regex","parseInt","resolveMonth","resolveShortMonth","hour","isAm","resolveTimezoneOffset","UTC","dir","originalOffset","diff","isDefault","translateAll","invalidateSprite","_intlLocales","_timezoneOffset","_timezone","toLowerCase","DurationFormatter","_negativeBase","_baseUnit","_unitValues","_unitAliases","base","baseUnit","getFormat","details","positive","negative","zero","parsed","partFormat","dirs","absolute","toTimeStamp","unit","toTimeUnit","digits","ints","outputFormat","maxValue","maxUnit","getValueUnit","durationFormats","currentUnit","num","_durationFormats","NumberFormatter","_smallNumberThreshold","NumberFormat","mod","decimals","active","translateEmpty","mods","modSpacing","thousands","passive","interval","suffix","a_1","applyPrefix","bytePrefixes","a_2","smallNumberThreshold","smallNumberPrefixes","bigNumberPrefixes","ol","parseFloat","toPrecision","toExponential","ip","intsr","unshift","decs","prefixes","force","newvalue","applied","number","_bigNumberPrefixes","_smallNumberPrefixes","_bytePrefixes","formatter","TextFormatter","styles","texts","t","wrapHtml","wrapSvg","styleSvgToHtml","getHtmlElement","q","quotedBlocks","noFormatting","chunks2","i2","chunk2","isImage","getTextFormatter","Inertia","startPoint","handleMove","inertias","processDragStop","Interaction","_globalEventsAdded","_pointerEvents","_usePointerEventsOnly","_useTouchEventsOnly","_addHoverEvents","_passiveSupported","_delayedEvents","out","overObjects","downObjects","trackedObjects","transformedObjects","pointers","hasOwnProperty","pointerdown","pointerup","pointermove","pointercancel","pointerover","pointerout","matchMedia","fullFF","wheel","onmousewheel","passiveSupported","addGlobalEvents","handleGlobalPointerDown","handleGlobalPointerMove","handleGlobalPointerUp","relatedTarget","buttons","which","handleDocumentLeave","handleGlobalTouchStart","handleGlobalTouchMove","handleGlobalTouchEnd","handleGlobalKeyDown","handleGlobalKeyUp","processClickable","io","processTouchable","processContextMenu","eventDisposers","processHoverable","handlePointerOut","handlePointerOver","processMovable","isGlobalElement","prepElement","processTrackable","processDraggable","processSwipeable","processResizable","processWheelable","handleMouseWheel","unlockWheel","lockWheel","processFocusable","handleFocusBlur","handleTouchDown","handlePointerDown","getHitOption","disableType","enableType","focusedObject","disposerKey","ko","directionY","directionX","getPointer","getPointerPoint","addBreadCrumb","handleGlobalMove","processDelayed","preventTouchAction","defaultPrevented","handleGlobalUp","changedTouches","resetPointer","deltaX","deltaY","deltaMode","getMouseOption","WheelEvent","wheelDeltaX","wheelDeltaY","handleWheel","maybePreventDefault","handleHit","lastHit","lastHitPointer","soft","hoversPaused","shouldCancelHovers","areTransformed","moved","cancelAllHovers","overPointers","handleTrack","hasDelayedOut","old","behavior","getHoverOption","keepUntil","timeout","delayedEvent","stopInertia","applyCursorDownStyle","processDragStart","processResizeStart","sorted","pos","compareDocumentPosition","Node","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_CONTAINS","backwards","restoreCursorDownStyle","swiped","handleSwipe","handleInertia","processResizeStop","cancelable","lastEvent","swiping","handleTransform","skipCheck","handleMoveInertia","handleResizeInertia","inertia","ref","getTrailPoint","getInertiaOption","factor","lastUpEvent","pointer2","pointer1","singlePoint","nextPointer","pointer1Moved","dragStartEvents","handleTransformMove","pointer2Moved","handleTransformResize","ctrlKey","pointerMoved","dragTarget","getDragPointer","lastDownEvent","getPointerId","identifier","pointerId","clientX","clientY","isPointerTouch","Touch","PointerEvent","pointerType","MouseEvent","track","swipeCanceled","lockDocument","unlockDocument","restoreAllStyles","lockElement","unlockElement","wheelLockEvent","removeEventListener","elementFromPoint","local","props","setTemporaryStyle","restoreStyle","getSwipeOption","getKeyboardOption","setGlobalStyle","restoreGlobalStyle","tolerance","minTime","getShift","pointerExists","exists","replacedStyles","logTouch","TouchEvent","except","options_1","InteractionKeyboardObject","keyboardEvent","_startedOn","speed","accelleration","accellerationDelay","shiftKey","accelleratedMs","accellerationFactor","InteractionObject","_clickable","_contextMenuDisabled","_hoverable","_trackable","_swipeable","_resizable","_wheelable","_inert","_isHover","_isHoverByTouch","_isDown","_isFocused","_isTouchProtected","_inertiaOptions","_hitOptions","_hoverOptions","_swipeOptions","_keyboardOptions","_mouseOptions","_cursorOptions","isHoverByTouch","_overPointers","_downPointers","_focusable","_originalPosition","_originalScale","_originalAngle","InteractionObjectEventDispatcher","_domEvents","_addDOMEvent","callback_1","_dispatchKeyboardEvent","MouseCursorStyle","grab","grabbing","horizontalResize","verticalResize","notAllowed","AMElement","_isDisposed","_y","_rotationY","_rotationX","_rotation","_scale","removeNode","_transformString","transfromString","rotateString","svgbbox","attributes","attributeName","attributeValue","ns","getAttrNS","getStyle","setClass","Group","elementName","childNode","Paper","groupName","append","implementation","hasFeature","ghostPaper","getGhostPaper","ghostDiv","ghostSvgContainer","polyline","lineTo","minStep","quadraticCurveTo","controlPoint","cubicCurveTo","closePath","arcTo","l","pax","pay","ax","ay","temp","crSin","cornerRadiusY","innerCornerRadiusY","crAngle","asin","crAngleY","crInnerAngle","crInnerAngleY","mPoint","b1","arcToPoint","sweepFlag","largeArcFlag","xAxisRotation","Boolean","sweepFlagValue","largeArcFlagValue","rectToPath","ccw","L","Native","_targets","_observer","ResizeObserver","entries","addTarget","box","removeTarget","unobserve","Raf","lastTime_1","loop_1","currentTime","newSize","size","_timer","requestAnimationFrame","cancelAnimationFrame","observer","makeSensor","ResizeSensor","_sensor","svgContainers","ghost","autoResize","_printing","resizeSensor","checkTransform","_popups","popupTemplate","popup","_readerAlertElement","readerAlert","readerAlertElement","getComputedStyle","sqrt","isNaN","HTMLElement","Tension","_tensionX","_tensionY","closed","wavedLine","adjustWaveLength","atan2","waveLengthX","waveLengthY","halfWaveCount","sign_1","Monotone","reversed","_reversed","_closed","_curve","t0","t1","NaN","slope2","slope3","sign","h0","h1","s0","s1","MonotoneX","MonotoneY","Basis","x4","y4","pushCurve","pushPoint","ColorModifier","GradientModifier","brightnesses","opacities","offsets","_lightnesses","_brightnesses","_opacities","_offsets","brightness","addColor","LinearGradient","_stops","gradientElement","gradientStop","gradientUnits","LinearGradientModifier","Pattern","patternUnits","backgroundFill","backgroundOpacity","patternElement","rotationX","rotationY","addElement","RadialGradient","fx","fy","_cx","_cy","_fx","_fy","DesaturateFilter","feColorMatrix","filterPrimitives","saturation","DropShadowFilter","feGaussianBlur","feOffset","feFlood","feComposite","operator","feMerge","updateScale","Filter","_nonScaling","filterPrimitive","setSprite","LightenFilter","v","GlobalAdapter","_callbackId","_callbacks","addAll","scope","applyAll","callbacks","globalAdapter","enableKey","disableKey","amount","_hasListenersByType","_shouldDispatch","getProgressNumber","getProgressPercent","getProgressColor","getHybridProperty","charAt","AnimationDisposer","array","_disposer","Animation","_loop","_pause","_delayTimeout","_time","_isFinished","pause","id_1","stopSameAnimations","_startTime","staticOptions","updateMethod","convertedFrom","applyStaticOptions","loop","resume","setProgress","skipEvent","timeProgress","delayed","killed_1","newOptions","oldOptions","any","eachReverse","eachContinue","shiftLeft","input","found","move","toIndex","removeIndex","insertIndex","ind","toArray","copy","getSortedIndex","ordering","order","findIndex","keepIf","keep","pendingFrame","nextQueue","readQueue","writeQueue","idleQueue","fps","raf","frameLoop","pendFrame","readFrame","writeFrame","whenIdle","triggerIdle","isSafari","vendor","isInternetExplorer","Cache","_storage","owner","ownerStorage","cacheItem","touched","expired","Color","_value","_lightColor","r","g","_darkColor","saturate","darkColor","lightColor","cacheId","isColor","castColor","toColor","ColorSet","_list","_currentStep","_currentPass","baseColor","stepOptions","passOptions","minColors","minLightness","maxLightness","shuffle","reuse","generate","getReusableColor","tmpstep","curColor","hsl","hueStep","hue","hues","random","applyStepOptions","pass","namedColors","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgrey","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","hexToRgb","rgbaToRgb","shorthandRegex","m","hexToRgbWithAlpha","rgbToHex","pad2","rgbToRGBA","interpolate","rgb1","rgb2","getLightnessStep","rgbToHsl","hslToRgb","hue2rgb","isLight","rootStylesheet","SVGNS","XMLNS","getElement","getElementById","classList","classes","currentClassName","setStyle","currentStyle","defaultView","activeElement","cursor","host","getShadowRoot","getRoot","ownerDocument","eventTarget","composedPath","fixPixelPerfect","getStylesheet","appendStylesheet","root","selector","insertRule","StyleRule","_rule","deleteRule","selectorText","_setVendorPrefixName","styleId","StyleClass","ready","readyState","listener_1","findFont","findFontSize","isElementInViewport","viewportTarget","targets","viewportRect","DictionaryDisposer","dict","_dictionary","updateKey","ifEmpty","Symbol","_i","sortedIterator","DictionaryTemplate","_template","Disposer","_dispose","MultiDisposer","MutableValueDisposer","CounterDisposer","_counter","linear","quadIn","quadOut","quadInOut","polyIn","polyOut","polyInOut","polyIn3","polyOut3","polyInOut3","expIn","expOut","expInOut","sinIn","sinOut","sinInOut","cubicIn","cubicOut","cubicInOut","circleIn","circleOut","circleInOut","b2","b3","b4","b5","b6","b7","b8","b9","bounceIn","bounceOut","bounceInOut","tau","amplitude","period","elasticIn","elasticOut","elasticInOut","EventDispatcher","_listeners","_killed","_iterating","_enabled","hasListeners","hasListenersByType","killed","enable","disable","_removeListener","_removeExistingListener","_eachListener","TargetedEventDispatcher","_purposes","primaryButton","primaryButtonHover","primaryButtonDown","primaryButtonActive","primaryButtonText","primaryButtonStroke","secondaryButton","secondaryButtonHover","secondaryButtonDown","secondaryButtonActive","secondaryButtonText","secondaryButtonStroke","grid","alternativeBackground","alternativeText","disabledBackground","purpose","setFor","fromArray","iter","sum","_","args","go","push2","flatten","indexed","find","ListIterator","createNewItems","_create","_listCopy","getFirst","returnItem","getLast","removeItem","Keyboard","getEventKey","keyCode","isKey","eventKey","altKey","metaKey","keyboard","_locale","en","_defaultLocale","locale","getLocale","prompt","rest","translation","translations","getTranslations","translateAny","setTranslationAny","localeTarget","IndexedIterable","_array","ListDisposer","ListGrouper","_getKey","_insert","_remove","_keys","_groups","_sort","index_1","disposeOnRemove","disposer_1","checkBounds","initial","_values","_sortQuicksort","low","high","_sortPartition","j","swap","value_a","value_b","setAll","newArray","oldArray","ListTemplate","make","messages","warn","HALFPI","RADIANS","DEGREES","toNumberRange","fitToRange","rounded","minValue","referenceValue","reduce","curr","intersect","range1","range2","start1","start2","end1","end2","invertRange","intersection","startMax","endMin","getDistance","getHorizontalDistance","getVerticalDistance","getCubicCurveDistance","getPointOnCubicCurve","getScale","initialDistance","getMidPoint","getAngle","diffX","diffY","normalizeAngle","getCommonRectangle","rectangles","getPointOnQuadraticCurve","mt1","mt2","mt3","getCubicControlPointA","adjustTension","getCubicControlPointB","fitAngleToRange","maxEnd","maxStart","getArcRect","MAX_VALUE","bpoints","getArcPoint","fromAngle","toAngle","pt","isInRectangle","isBlob","XMLHttpRequest","readBlob","getResponseHeader","responseText","withCredentials","requestHeaders","setRequestHeader","send","reader","readAsText","keysOrdered","eachOrdered","ord","merge","object1","object2","assign","copyProperties","forceCopyProperties","copyAllProperties","or","Percent","isPercent","Responsive","_rules","_appliedRules","_appliedTargets","_useDefault","_responsiveDisposers","_noStates","checkRules","_component","disposeResponsiveHandlers","enabled","applyRules","defaultRules","useDefault","isApplied","ruleId","allRules","rulesChanged","newTarget","defaultStateApplied","isApplied_1","getState","getDefaultState","setTargetState","tmpId","ResponsiveBreakpoints","widthXXS","XXS","widthXS","XS","widthS","S","widthM","M","widthL","widthXL","XL","widthXXL","XXL","heightXXS","heightXS","heightS","heightM","heightL","heightXL","heightXXL","isXXS","isXS","isS","isM","isL","isXL","isXXL","maybeXXS","maybeXS","maybeS","maybeM","maybeL","maybeXL","maybeXXL","OrderedList","findClosestIndex","closestValue","closestDifference","closestIndex","difference","SortedList","_ordering","OrderedListTemplate","SortedListTemplate","repeat","choice","STRING","NUMBER","DATE","DURATION","PLACEHOLDER","PLACEHOLDER2","timeUnitDurations","getNextUnit","checkChange","dateOne","dateTwo","timeZoneOffset1","timeZoneOffset2","setUTCMinutes","nextUnit","timeZoneOffset","setUTCDate","setUTCSeconds","setUTCMilliseconds","setUTCHours","setUTCFullYear","setUTCMonth","wday","newTimeZoneOffset","firstDateOfWeek","firstDate","roundMinutes","setTimezone","unitCount","setTime","weekDay","timeZone","getTimezoneMinutes","setHours","getType","castString","toBoolean","toNumber","isNumber","converted","isString","toText","isObject","toNumberOrPercent","getValueDefault","defaultValue","isDate","used","stripHash","getBaseURI","baseURI","loc","isNotEmpty","relativeToValue","full","relativeRadiusToValue","subtractIfNegative","ratio","devicePixelRatio","str","arr","escapeForRgex","splitTextByCharCount","fullWordFallback","currentIndex","tmpText","words","word","wordLength","reverseString","truncateWithEllipsis","trim","rtrim","ltrim","padString","char","hints","cleanFormat","stripTags","plainText","numberToString","exponent","zeros","anyToDate","setMilliseconds","anyToNumber","getYearDay","oneDay","getWeek","getMonthWeek","firstWeek","currentWeek","getDayFromWeek","get12Hours","getTimeZone","long","savings","wotz","wtz","timeZoneName","fitNumber","fitNumberRelative","gap","svgPointToSprite","sprite_1","relativeX","relativeY","spritePointToSvg","spritePointToSprite","toSprite","spriteRectToSvg","documentPointToSvg","svgPointToDocument","documentPointToSprite","spritePointToDocument","paddingX","borderX","borderLeftWidth","borderRightWidth","paddingY","borderY","borderTopWidth","borderBottomWidth","decimalPlaces","urlRegexp","parseUrl","protocol","authority","domain","port","query","hash","serializeUrl","isRelativeUrl","joinUrl","parsedLeft","parsedRight","leftPath","rightPath","isIE","MSInputMethodContext","documentMode","_validateDisposer","Grip","autoHideDelay","_autoHideTimeout","ChartDataItem","Chart","_legend","titles","chartAndLegendContainer","chartContainer","processTitle","updateReaderTitleReferences","fixLayout","legend","feedLegend","titleIds_1","setLegend","_dragGrip","grip_1","Bullet","tooltipX","copyToLegendMarker","LegendDataItem","childrenCreated","label_1","labels","itemContainer","_valueLabel","valueLabel_1","valueLabels","_itemContainer","component_1","itemContainer_1","itemContainers","toggleDataItem","focusedItem","visibilitychanged","_marker","marker_1","markers","LegendSettings","createMarker","Legend","Mouse","marker","disabledColor","activeState","valueLabel","handleScrollbar","scrollbar","legendDataItem","tempMaxWidth","legendSettings","createLegendMarker","useDefaultMarker","updateLegendValue","itemValueText","maxLabelWidth","maxValueLabelWidth","maxMarkerWidth","maxAdjustedLabelWidth","trueMaxWidth","scrollable","updateMasks","_mouseWheelDisposer","colorOrig","SeriesDataItem","_bullets","bullets","Series","_showBullets","_tmin","_tmax","_smin","_smax","dataItemsByAxis","skipFocusThreshold","_itemReaderTextChanged","calculatePercent","usePercentHack","simplifiedProcessing","axisRanges","processAxisRange","minBulletDistance","mainContainer","bulletsContainer","_chart","positionBullet","bullet","processBullet","itemsFocusable","removeBullet","eachBullet","processValues","getFirstValue","getAbsoluteFirstValue","working","count_1","sum_1","absoluteSum_1","low_1","high_1","open_1","close_1","previous_1","first_1","absoluteFirst_1","startIndex_1","dataItem_2","prevValue","_loop_2","dataItem_3","ksum","zeroItem_1","dataItem_4","axisRange","updateTooltipBounds","shouldCreateBullet","bulletTemplate","disabledField","currentDataItem","readerText_1","itemReaderText","xField","yField","isDynamic","itemWidth","itemHeight","createMask","rangesContainer","contents","isRange","getAxisField","axis","showTooltipAtPosition","xPosition","yPosition","chart","readerText","_itemReaderText","_legendDataItem","notRange","itemLabelText","labelText","_heatRules","heatRule","dataField_1","dataField","seriesDataItem_1","property_1","foundSprite","anySprite","anyChild","foundSprite_1","ruleTarget","propertyField","fieldValues","logarithmic","LOG10E","heatRules","listitem","maybeIndex","SerialChartDataItem","SerialChart","colors","seriesContainer","patterns","_series","createSeries","handleSeriesAdded","handleSeriesRemoved","series","di","handleSeriesAdded2","handleLegendSeriesAdded","hiddenInLegend","legendData_1","AxisBreak","_axis","breakSize","fillShape","_fillShape","startLine","_startLine","endLine","_endLine","addBreakSprite","renderer","gridContainer","createBreakSprites","breakTemplate","axisBreaks","invalidateSeries","startPosition","endPosition","updateBreakElement","AxisItemLocation","AxisDataItem","_grid","grid_1","_tick","component_2","tick_1","tick","ticks","component_3","_axisFill","component_4","axisFill_1","axisFill","axisFills","_text","_contents","createFill","_axisBreak","axisBreak","appendChildren","appendDataItem","minPosition","maxPosition","_bullet","Axis","_gridCount","_axisItemCount","hideTooltipWhileZooming","toggleZoomOutButton","zoomable","_dataItemsIterator","fillRule","ghostLabel","updateLabelElement","updateGridCount","gridCount","axisLength","minGridDistance","axisFullLength","updateAxisLine","updateTooltip","updateBaseGridElement","_prevLength","initRenderer","above","updateGridContainer","validateAxisRanges","validateBreaks","_axisBreaks","processBreak","breakContainer","registerSeries","_renderer","ghostLabel_1","positionToAngle","pointToPosition","positionToCoordinate","getAnyRangePath","getPositionRangePath","anyToPosition","anyToPoint","_tooltipPosition","toAxisPosition","tooltipLocation","getCellStartPosition","getCellEndPosition","tooltipLocation2","endPoint","currentItemStartPoint","currentItemEndPoint","fullWidthTooltip","getTooltipText","cursorTooltipEnabled","inversed","toGlobalPosition","boundingRectangle","roundPosition","axisLocation","_axisRanges","createAxisBreak","adjustedStartValue","processSeriesDataItems","processSeriesDataItem","axisLetter","postProcessSeriesDataItems","postProcessSeriesDataItem","updateAxisBySeries","hideUnusedDataItems","dataItemsIterator","getSeriesDataItem","findNearest","stackKey","getX","getPositionX","getY","getPositionY","dataChangeUpdate","seriesDataChangeUpdate","adjustDifference","startValue","endValue","adjustedEndValue","isInBreak","fixAxisBreaks","firstAxisBreak","previousEndValue_1","getPositionLabel","createSeriesRange","resetIterators","AxisLine","AxisFill","fillPath","Grid","AxisLabel","Tick","AxisTick","AxisRenderer","inside","cellStartLocation","cellEndLocation","minLabelPosition","maxLabelPosition","invalidateAxisItems","baseGrid","setAxis","processRenderer","positionItem","position2","coordinate","getHeight","getWidth","coordinateToPosition","coordinate2","updateGridElement","updateTickElement","updateBullet","updateFillElement","toggleVisibility","updatedStart","updatedEnd","_axisFills","createGrid","_ticks","createTick","_labels","createLabel","AxisBullet","AxisRendererY","opposite","inversedPosition","relativePositionSprite","bigNum","bbx","bby","bbw","bbh","tickLength","basePoint","wavedRectangle","ValueAxisBreak","valueToPosition","ValueAxisDataItem","ValueAxis","_stepDecimalPlaces","_prevStepDecimalPlaces","_adjustLabelPrecision","_baseValue","_adjustedStart","_adjustedEnd","_extremesChanged","_deltaMinMax","_dsc","calculateTotals","axisFieldName","keepSelection","includeRangesInMinMax","_maxZoomed","_maxDefined","_minZoomed","_minDefined","_maxAdjusted","_minAdjusted","total","excludeFromTotal","getMinMax","calculateZoom","validateAxisElements","positionToValue","differece","minMaxStep","adjustMinMax","stepDecimalPlaces","syncWithAxis","_step","fixSmallStep","value_1","minZoomed","differencePower","maxZoomed","dataItemsIterator_1","precisionChanged","formatLabel","stepPower","decCount","renderer_1","breakValue_1","adjustedMin","adjustedMax","adjustedStep","itemIndex","fillEndPosition","adjustLabelPrecision","baseValue","valueToPoint","min_1","max_1","_difference","treatZeroAs","difference_1","value_2","breakStartPosition","breakEndPosition","breakStartValue","breakEndValue","breakPosition","E","xToValue","yToValue","animateMinMax","POSITIVE_INFINITY","NEGATIVE_INFINITY","ignoreMinMax","seriesMin","seriesMax","_minReal","_maxReal","dif","fixMin","fixMax","power","extraMin","extraMax","strict","strictMinMax","_minMaxAnimation","_finalMax","_finalMin","handleSelectionExtremesChange","strictMode","initialMin","initialMax","stepDivisor","maxPrecision","minCount","maxCount","handleExtremesChange","selectionMin","selectionMax","allHidden","outOfRange","seriesSelectionMin","seriesSelectionMax","minMaxStep2","syncAxes","mw_1","extraTooltipPrecision","valueStr","zoomToValues","axisBreakDif","axisBreakGridCount","breakMinMaxStep","showTooltipAt","currentCount","synced","omin","omax","ostep","checkSync","xAxis","DateAxisBreak","DateAxisDataItem","endDate","DateAxis","_gapBreaks","gridIntervals","groupIntervals","dateFormats","periodChangeDateFormats","_baseIntervalReal","timeUnit","_prevSeriesTime","_minDifference","_firstWeekDay","groupMin","groupMax","snapTooltip","groupCount","getDFFormatter","gridInterval","_gridInterval","gridDuration","baseDuration","periodCount","getFirstWeekDay","mainBaseDuration","mainBaseInterval","newPeriodCount","dataSetChanged","groupData","modifiedDifference","startLocation","endLocation","groupInterval","chooseInterval","_groupInterval","newId","baseAxis","baseInterval","_nextGridUnit","_intervalDuration","_gridDate","_df","field_1","minZoomedStr","startDataItem","currentDataSetId","findFirst","maxZoomedStr","endDataItem","previousDataItem","previousDate","minDifference","seriesGroupUpdate","addEmptyUnitsBreaks","_baseInterval","groupSeriesData","dataGrouped","intervals_1","mainIntervalDuration_1","intervalDuration","dataSetId","newDataItem","roundedDate","previousTime","dfkey","df","dfk","vkey","dateX","openDateX","dateY","openDateY","dvalues","average","groupDataItems","groupFieldName","groupFields","intervalID","startDate","skipEmptyPeriods","startTimeStr","breakGridCount","gridDate","getGridDate","intervalCount","realIntervalCount","prevTimestamp","newDate","durationBreaksRemoved","countBreaksRemoved","getBreaklessDate","prevGridDate","this_2","markUnitChange","timeUnit_1","intervalCount_1","prevGridDate_1","timestamp_1","_loop_3","text_1","endTimestamp","location_1","endTime","intervals","lastIndex","dateToPosition","dateToPoint","positionToDate","getTimeByLocation","openTime","openDate","prevSeriesTime","_mainBaseInterval","timeInterval","tooltipDate","tooltipDateFormat","deltaValue","nextDate","key_1","getCurrentLabelFormat","zoomToDates","adjust","isEnd","isStart","groupInterval_1","mindi","maxdi","yAxis","closestDate_1","actualDate","actualTime_1","closestTime_1","snapToSeries","showTooltipAtDataItem","_seriesPoints","makeGap","previous","connect","autoGapCount","prevDate","prevTime","AxisRendererX","CategoryAxisBreak","category","categoryToIndex","CategoryAxisDataItem","seriesDataItems","endCategory","deltaPosition","oldCategory","deltaCoordinate","CategoryAxis","dataItemsByCategory","_lastDataItem","categoryAxisDataItem","seriesId","positionToIndex","minIndex","maxIndex","axisDataItem","seriesDataItem","dataCount","MAX_SAFE_INTEGER","frequency","_frequency","frequency_1","itemIndex_1","fillEndIndex","fillPosition","breakStartIndex","breakEndIndex","categoryToPosition","categoryToPoint","zoomToCategories","startCategory","startPos","endPos","getFirstSeriesDataItem","categoryX","categoryY","getLastSeriesDataItem","getSeriesDataItemByCategory","sdi_1","category_1","positionToCategory","sortBySeries","XYSeriesDataItem","customValue","valueX","valueY","openValueX","openValueY","openCategoryX","openCategoryY","getMin","stackValue","getMax","XYSeries","_xAxis","_yAxis","_xValueFields","_yValueFields","usesShowFields","_dataSetChanged","_maxxX","_maxxY","_propertiesChanged","cursorHoverEnabled","stacked","stackToNegative","returnBulletDefaultState","resetExtremes","valueYShow","openValueXShow","openValueYShow","defineFields","updateItemReaderText","_xField","_yField","setInitialWorkingValues","dataItemsX","clearCatAxis","dataItemsY","xAxisFieldName","xOpenField","yAxisFieldName","yOpenField","_xOpenField","_yOpenField","addValueField","setCategoryAxisField","setDateAxisField","path_1","getMaskPath","plotContainer","maskBullets","leftAxesContainer","rightAxesContainer","topAxesContainer","bottomAxesContainer","xAxes","setXAxis","oldAxis","yAxes","setYAxis","XYChart","handleYAxisSet","_baseAxis","scrollbarSeries","workingStartIndex","workingEndIndex","getStackValue","stackX","stackY","xAxisId","yAxisId","stackedSeries","tmin","tmax","_prevTooltipDataItem","getAdjustedXLocation","bulletLocationX","getAdjustedYLocation","bulletLocationY","hideSeriesTooltipsOnSelection","selection","downPoint","tooltipXField","tooltipYField","tooltipPoint","getPoint","fireEvent","e_2_1","getBulletLocationX","getBulletLocationY","positionX","positionY","openValue","closeValue","middleValue","rightLocation","locationX","leftLocation","openPositionX","topLocation","locationY","bottomLocation","openPositionY","positionBulletReal","bulletLocation","updateStacking","realDuration","axisSeries","field_2","prevSeries","prevDataItem","prevRealValue","_tooltipXField","_tooltipYField","xKey","yKey","stackKeyX","stackKeyY","axisBulletsContainer","XYChartScrollbar","scrollbarChart","_scrollbarChart","unselectedOverlay","_unselectedOverlay","thumbBackground","sourceSeries","zoomOutButton","addXAxis","addYAxis","labelsTemplate","vAxis_1","sourceAxis","minDefined","maxDefined","vAxis_2","vAxis_3","vAxis_4","zoomOutAxes","handleDataChanged","XYChartDataItem","_axisRendererX","_axisRendererY","arrangeTooltips","topAxesCont","yAxesAndPlotCont","yAxesAndPlotContainer","bottomAxesCont","leftAxesCont","updateXAxesMargins","plotCont","mouseWheelBehavior","_cursorContainer","rightAxesCont","_bulletMask","updateSeriesLegend","updatePlotElements","leftAxesWidth","rightAxesWidth","handleXAxisChange","updateXAxis","handleYAxisChange","updateYAxis","processXAxis","handleXAxisRangeChange","processAxis","processYAxis","handleYAxisRangeChange","getCommonAxisRange","scrollbarX","zoomAxes","updateScrollbar","show_1","seriesAppeared","scrollbarY","axes","axisStart","axisEnd","updateSeriesMasks","_xAxes","handleAxisRemoval","_yAxes","_cursor","handleCursorPositionChange","handleCursorZoomStart","handleCursorZoomEnd","handleCursorPanStart","handleCursorPanning","handleCursorPanEnd","handleCursorCanceled","handleHideCursor","xPosition_1","yPosition_1","showSeriesTooltip","exceptAxes_1","dataItems_1","snpSeries","closestDataItem_1","getClosest","closestSeries","handleSnap","_cursorXPosition","showAxisTooltip","_cursorYPosition","sortSeriesTooltips","closestDataItem","minDistance","xPos","yPos","dxPosition","dyPosition","hideObjectTooltip","seriesPoints","cursor_1","maxTooltipDistance","nearestSeries_1","nearestPoint_1","cursorPoint_1","smallestDistance_1","seriesPoint","fixedPoint","newSeriesPoints_1","np","topLeft_1","bottomRight_1","filteredSeriesPoints_1","firstSeries","averageY","dropped","nextHeight","pointY","getUpdatedRange","xRange","yRange","_panStartXRange","_panStartYRange","_panEndXRange","panEndRange","panStartRange","snapOnPan","_panEndYRange","maxPanOut","newRange","_scrollbarX","handleXScrollbarChange","_scrollbarY","handleYScrollbarChange","realRange","originalRange","cellWidth","plotPoint","handleWheelReal","handleHorizontalWheel","horizontalMouseWheelBehavior","rangeX","rangeY","shiftStep","differenceX","newStartX","newEndX","differenceY","newStartY","newEndY","location2X","location2Y","_mouseWheelDisposer2","len_1","len_2","_zoomOutButton","addScrollbarData","removeScrollbarData","sbstate","LineSeriesSegment","fillSprite","strokeSprite","drawSegment","closePoints","smoothnessX","smoothnessY","smoothing","fillElement","DurationAxisDataItem","DurationAxis","axisDurationFormat","divisors","realDivisor","divisors_1","divisors_1_1","divisor","reducedCount","_tooltipDurationFormat","tooltipDurationFormat","LineSeriesDataItem","LineSeries","createSegment","_segmentsIterator","segmentsContainer","initialY","initialX","segment","openSegmentWrapper","_adjustedStartIndex","findAdjustedIndex","adjustedIndex","openIndex","openSegment","getSegment","addToClose","closeIndex","propertiesChanged","valuesFound","updateSegmentProperties","addPoints","closeSegment","itemProperties","checkOnly","currentValueStr","hasLabels","RadarSeriesDataItem","RadarSeries","connectEnds","updateRendererRefs","rendererX","rendererY","axisRendererY","AxisFillCircular","GridCircular","AxisLabelCircular","fdx","fdy","locationOnPath","axisRadius","pixelRadiusY","axisRadiusY","fixPosition","isNegative","realRadius","relativeRotation","labelRadius","bent","dH","dW","AxisRendererCircular","pixelRadiusReal","useChartAngles","innerRadiusModifyer","angleToPosition","gridInnerRadius","AxisRendererRadial","gridType","axisAngle","gridLocation","tooltipOrientation","RadarChartDataItem","RadarChart","radarContainer","wr","hr","maxRadius","diameter","_pixelInnerRadius","ClockHand","pin","startWidth","endWidth","hand","_pin","_hand","showValue","newAngle","currentAngle","rotationDirection","updateValue","GaugeChartDataItem","GaugeChart","hands","processHand","PercentSeriesDataItem","ticksContainer","labelsContainer","_slice","slice_1","slices","slicesContainer","PercentSeries","alignLabels","createSlice","_slices","initSlice","initTick","initLabel","currentStep","arrangeLabels","lh","nextLabel","getNextLabel","arrangeLabels2","previousTop","nextDataItem","handleSliceScale","handleSliceMove","setAlignLabels","labelState","tickState","PercentChartDataItem","PercentChart","percentSeriesDataItem","PieTick","PieSeriesDataItem","radiusValue","PieSeries","_leftItems","_rightItems","_currentStartAngle","_arcRect","_maxRadiusPercent","radiusValuePercent","aAngle","bAngle","ignoreZeroValues","normalizedMiddleAngle","arcRect","_pixelRadius","_startAngleInternal","_endAngleInternal","PieChartDataItem","PieChart","updateRadius","_chartPixelRadius","updateSeriesAngles","chartCont","chartRadius","chartPixelInnerRadius","seriesRadius","_chartPixelInnerRadius","PieSeries3DDataItem","depthValue","PieSeries3D","depthPercent","PieChart3DDataItem","PieChart3D","SlicedChartDataItem","SlicedChart","FlowDiagramNode","invalidateLinks","outgoingDataItems","toNode","incomingDataItems","fromNode","colorMode","stop_1","stop_2","_incomingDataItems","sortBy","_incomingSorted","fromName","_outgoingDataItems","_outgoingSorted","FlowDiagramLink","positionBullets","_bulletsContainer","_bulletsMask","bulletsMask","middleLine","rotationField","_gradient","FlowDiagramDataItem","toName","_link","links","FlowDiagram","nodePadding","minNodeSize","linksContainer","nodesContainer","nodes","sortNodes","strNode","getNodeValue","_sorted","incomingTotal","outgoingTotal","totalIncoming","totalOutgoing","changeSorting","_nodes","createNode","_links","createLink","LabelBullet","SankeyNode","nextInCoord","nextOutCoord","nameLabel","orientation_1","endX","endY","linkWidth","valueHeight","startX","startY","SankeyLink","controlPointDistance","makeBackwards","xt0","yt0","xt1","yt1","xb0","xb1","yb0","yb1","xm0","xm1","ym0","ym1","cpd","kxt0","kyt0","kxt1","kyt1","kxm0","kym0","kxm1","kym1","kxb0","kyb0","kxb1","kyb1","SankeyDiagramDataItem","SankeyDiagram","nodeAlign","_valueHeight","_levelCount","getNodeLevel","levels","checkLoop","calculateValueHeight","_levelSum","_levelNodesCount","maxSum","maxSumLevel","realValue","levelNodeCount","_maxSumLevel","maxSumLevelNodeCount","finalHeight","_heightAnimation","nextCoordinate","levelCoordinate","nodeCount","container_1","nodeHeight","ChordNode","updateRotation","arc_1","sliceStartAngle_1","childAngle","childRadius","labelAngle","adjustedTotal","nextAngle","nonRibbon","valueAngle","mAngle","trueStartAngle","tx","ty","QuadraticCurve","cpx","cpy","cp","ChordLink","fromX","fromY","toX","toY","mAngle1","mAngle2","ChordDiagramDataItem","ChordDiagram","chordContainer","newTotal","Column","createAssets","handleKidAdded","ColumnSeriesDataItem","_column","setColumn","_rangesColumns","ColumnSeries","_startLocation","_endLocation","clustered","columnsContainer","_columnsContainer","prevAxisIndex_1","baseAxisSeries","clusterCount_1","sortedByAxis_1","index_2","sortedItem","sortCategoryAxis","disableUnusedColumns","currentPosition","deltaAnimation","validateDataElementReal","getStartLocation","getEndLocation","outOfBounds","diw","dih","fixHorizontalCoordinate","fixVerticalCoordinate","axisLenght","column_1","realX","realY","realWidth","realHeight","setColumnStates","rangeColumn","rangesColumns","_dropFromOpenState","_dropFromPreviousState","_riseFromOpenState","_riseFromPreviousState","change","droppedFromOpen","droppedFromPrevious","_columns","createColumnTemplate","fromOpenState_1","fromPreviousState_1","TreeMapSeriesDataItem","treeMapDataItem","TreeMapSeries","TreeMapDataItem","rows","childValue","TreeMap","layoutAlgorithm","squarify","maxLevels","currentLevel","hideParentColumns","sorting","xRenderer","yRenderer","seriesTemplates","zoomToChartDataItem","_homeDataItem","_navigationBar","navigationBar","createTreeSeries","_tempSeries","homeDataItem","_homeText","layoutItems","navigationData","parentDataItem","initSeries","createTreeSeriesReal","currentlyZoomed","zoomToSeriesDataItem","toggleBullets","binaryTree","dice","sliceDice","sums","partition","valueOffset","valueTarget","hi","mid","valueLeft","valueRight","xk","yk","nodeValue","sumValue","newRatio","minRatio","beta","i0","i1","getLegendLevel","legendParent","AxisRendererX3D","dx3D","dy3D","handle3DChanged","AxisRendererY3D","Column3D","column3D","ColumnSeries3DDataItem","ColumnSeries3D","XYChart3DDataItem","XYChart3D","fixColumns","depthIndex","inversed_1","maskColumns","HeatLegend","markerContainer","markerCount","getMinFromRules","minValue_1","getMaxFromRules","maxValue_1","valueAxis","minColor","maxColor","seriesFill","minOpacity","maxOpacity","minStrokeOpacity","maxStrokeOpacity","minStroke","maxStroke","strokeGradient","color_1","opacity_1","_valueAxis","dataFieldDefined","updateMinMax","seriesId_1","Candlestick","lowLine","highLine","CandlestickSeriesDataItem","lowValueX","lowValueY","highValueX","highValueY","CandlestickSeries","positiveColor","negativeColor","dropFromOpenState","riseFromOpenState","validateCandlestick","lowLine_1","highLine_1","yOpen","yClose","yLow","yLowField","yHigh","yHighField","open_2","close_2","xOpen","xClose","xLow","xLowField","xHigh","xHighField","rangeLowLine","rangehighLine","_xLowField","_yLowField","_xHighField","_yHighField","cw","OHLC","openLine","highLowLine","closeLine","OHLCSeriesDataItem","OHLCSeries","openLine_1","highLowLine_1","closeLine_1","rangeOpenLine","rangeCloseLine","rangeHighLowLine","StepLineSeriesSegment","noRisers","vertical","StepLineSeriesDataItem","StepLineSeries","startLocationX","endLocationX","startLocationY","endLocationY","point0","RadarColumn","radarColumn","RadarColumnSeriesDataItem","RadarColumnSeries","lAngle","rAngle","tRadius","bRadius","cellAngle","FunnelSlice","bottomWidth","topWidth","expandDistance","pb","pr","pl","ed","tw","bw","cpr","cpl","qp1","qp2","tickPoint","tt","tb","bt","bb","mlx","mrx","mty","mby","FunnelTick","labelsOpposite","FunnelSeriesDataItem","_sliceLink","sliceLink_1","sliceLinks","FunnelSeries","_nextY","bottomRatio","labelTemplate","dItem","_total","_count","getNextValue","nextValue","nextItem","formDataElement","sliceLink","decorateSlice","linkHeight","getLastLabel","lastLabel","lastY","lastX","_sliceLinks","labelAlign","labelValign","PyramidSeriesDataItem","PyramidSeries","pyramidHeight","valueIs","_nextWidth","relValue","_pyramidHeight","_pyramidWidth","absoluteSum","pyramidWidth","sliceTopWidth","sliceHeight","sliceBottomWidth","totalSquare","square","sliceWidth","PictorialStackedSeriesDataItem","PictorialStackedSeries","_maskSprite","maskSprite","pictureWidth","pictureHeight","newWidth","newHeight","hs","ConeColumn","coneColumn","ConeSeriesDataItem","ConeSeries","CurvedColumn","curvedColumn","CurvedColumnSeriesDataItem","CurvedColumnSeries","CircleBullet","circle","ErrorBullet","errorLine","NavigationBarDataItem","NavigationBar","textLink","_linksIterator","triangle","activeLink","fontWeight","Cursor","_stick","handleCursorDown","handleCursorUp","handleCursorMove","_generalBehavior","_stickPoint","triggerMove","stick","triggerMoveReal","getPositions","triggerDown","triggerDownReal","triggerUp","triggerUpReal","updatePoint","upPoint","_upPointOrig","_downPointOrig","updateSelection","shouldPreventGestures","XYCursor","_lineX","_lineY","_snapToDisposers","lineX","lineY","_usesSelection","fixPoint","updateLinePositions","allHidden_1","getPanningRanges","selectionX","selectionY","hasMoved","getRanges","currentX","currentY","handleXTooltipPosition","handleYTooltipPosition","fullWidthLineX","fullWidthLineY","_selection","snapTo_1","snapError_1","snap","xx","yy","RadarCursor","truePixelRadius","updateLineX","updateLineY","fillStartAngle","fillEndAngle","downAngle","downRadius","currentRadius","_prevAngle","downSin","downCos","upAngle","upRadius","widthRatio","heightRatio","Polyarc","controlPointPosition","cpDistance","controlPoint1","cpx2","cpy2","controlPoint2","Morpher","morphable","_bboxes","morphDuration","morphEasing","morphToSingle","scaleRatio","morphToPolygon","toPoints","currentPoints","sortPoints","_morphFromPointsReal","_morphToPointsReal","normalizePoints","pointsA","pointsB","surfaceA","holeA","bboxA","middleX","middleY","splitAt","newDistance","partA","partB","bbox1","bbox2","bboxes","surface","morphToCircle","commonBBox","hole","fromPoints","realAngle","pointOnCircle","hlen","mustHaveCount","addToSegmentCount","newPoints","extraPoint","lastPoint","morphToRectangle","i_2","i_3","_morphProgress","currentArea","surfaceFrom","holeFrom","surfaceTo","holeTo","currentSurface","i_4","slen","currentPoint","currentHole","i_5","morphBack","Polygon","_currentPoints","areaHole","areaArr","holeArr","pointsArr","area","areaAndHole","coords","pointsArr_1","_morpher","Preloader","sliceContainer","backgroundSlice","progressSlice","_started","CloseButton","bgc","downColor","bhs","bds","SwitchButton","leftLabel","llas","p100","as","switchButton","rightLabel","rlas","_leftLabel","_rightLabel","_switchButton","Slider","PlayButton","playIcon","stopIcon","RadialGradientModifier","LinePattern","_line","CirclePattern","_circle","RectPattern","rectHeight","rectWidth","_rect","ColorizeFilter","intensity","applyFilter","ii","BlurFilter","FocusFilter","feMorphology","feBlend","PatternSet","getLinePattern","getRectPattern","getCirclePattern","thickness","strokeDashArray","pattern","outline","generatePatterns","Plugin","AmChartsLogo","aColor","aGradient","aStroke","desaturateFilter","desaturateFilterHover","tmpContainer","svgDiv_1","loopTimer_1","tooltipContainer_1","preloader_1","logo_1","logo","addToQueue","viewPortHandler","vpDisposer","queueHandler","removeFromQueue","nextSprite","classError","useTheme","addLicense","license","extendStatics","setPrototypeOf","__proto__","__extends","TypeError","String","__","__assign","__awaiter","thisArg","_arguments","P","generator","adopt","fulfilled","rejected","__generator","ops","verb","op","__values","o","__read","ar","__spread","module","exports","moment","Pikaday","globalThis","Function","u","toStringTag","nodeType","process","require","types","binding","O","inheritAttrs","validator","Event","isValid","required","autoDefault","elAttrs","defaultOptions","computed","elementAttributes","$attrs","mergedOptions","attrs","$listeners","inputValue","$slots","mounted","$watch","pikaday","beforeDestroy","destroy","watch","handler","reload","deep","methods","$el","bindListener","onSelect","onOpen","onClose","toDate","bound","$emit","T","D","$","A","V","N","valueOf","Y","leading","maxWait","trailing","cancel","flush","I","W","inserted","componentInstance","expression","B","install","directive","Vue","use","normalizeComponent","scriptExports","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","functional","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","existing","beforeCreate","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","requestData","headers","isFormData","request","auth","username","password","Authorization","fullPath","baseURL","onloadend","responseHeaders","getAllResponseHeaders","responseData","statusText","paramsSerializer","onreadystatechange","responseURL","ontimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","isStandardBrowserEnv","xsrfValue","xsrfCookieName","read","xsrfHeaderName","forEach","isUndefined","onDownloadProgress","onUploadProgress","upload","cancelToken","promise","abort","Axios","mergeConfig","defaults","createInstance","defaultConfig","instance","axios","instanceConfig","Cancel","CancelToken","isCancel","spread","isAxiosError","__CANCEL__","executor","resolvePromise","token","reason","throwIfRequested","InterceptorManager","dispatchRequest","validators","interceptors","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","responseInterceptorChain","chain","newConfig","onFulfilled","onRejected","getUri","handlers","eject","isAbsoluteURL","combineURLs","requestedURL","enhanceError","transformData","throwIfCancellationRequested","transformRequest","common","transformResponse","toJSON","lineNumber","columnNumber","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","isPlainObject","mergeDeepProperties","axiosKeys","otherKeys","validateStatus","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","getDefaultAdapter","stringifySafely","rawValue","encoder","isArrayBuffer","isBuffer","isStream","isFile","isArrayBufferView","buffer","isURLSearchParams","strictJSONParsing","maxContentLength","maxBodyLength","encode","serializedParams","hashmarkIndex","relativeURL","expires","secure","cookie","toGMTString","payload","originURL","msie","urlParsingNode","resolveURL","hostname","pathname","requestURL","normalizedName","ignoreDuplicateOf","pkg","thing","deprecatedWarnings","currentVerArr","version","isOlderVersion","thanVersion","pkgVersionArr","destVer","schema","allowUnknown","opt","isDeprecated","formatMessage","desc","opts","FormData","ArrayBuffer","isView","getPrototypeOf","isFunction","pipe","URLSearchParams","product","assignValue","stripBOM","hasWindowSupport","hasDocumentSupport","hasNavigatorSupport","hasPromiseSupport","hasMutationObserverSupport","MutationObserver","WebKitMutationObserver","MozMutationObserver","isBrowser","isJSDOM","hasPassiveEventSupport","passiveEventSupported","hasTouchSupport","maxTouchPoints","hasPointerEventSupport","MSPointerEvent","hasIntersectionObserverSupport","IntersectionObserverEntry","getEnv","fallback","env","getNoWarn","warnNotClient","warnNoPromiseSupport","warnNoMutationObserverSupport","_len","_key","_objectSpread","ownKeys","getOwnPropertySymbols","sym","getOwnPropertyDescriptor","_defineProperty","writable","_typeof","getOwnPropertyNames","defineProperties","freeze","isFrozen","omit","readonlyDescriptor","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","arr2","cloneDeep","steps","every","memoize","argsKey","toType","toRawType","isNull","isBoolean","isRegExp","DEFAULTS","breakpoints","BAlert","dismissLabel","variant","BBadge","BButton","BButtonClose","textVariant","ariaLabel","BCardSubTitle","subTitleTextVariant","BCarousel","labelPrev","labelNext","labelGotoSlide","labelIndicators","BDropdown","toggleText","splitVariant","BFormFile","browseText","dropPlaceholder","BFormText","BImg","blankColor","BImgLazy","BJumbotron","bgVariant","borderVariant","BListGroupItem","BModal","titleTag","headerBgVariant","headerBorderVariant","headerTextVariant","headerCloseVariant","bodyBgVariant","bodyTextVariant","footerBgVariant","footerBorderVariant","footerTextVariant","cancelTitle","cancelVariant","okTitle","okVariant","headerCloseLabel","BNavbar","BNavbarToggle","BProgress","BProgressBar","BSpinner","BTable","selectedVariant","headVariant","footVariant","BToast","toaster","toastClass","bodyClass","solid","BToaster","ariaLive","ariaAtomic","BTooltip","boundary","boundaryPadding","BPopover","CONFIG","getDefaults","setConfig","cmpName","cmpConfig","some","getConfigValue","getComponentConfig","getBreakpoints","getBreakpointsCached","getBreakpointsUpCached","checkMultipleVue","checkMultipleVueWarned","MULTIPLE_VUE_WARNING","installFactory","_ref","components","directives","installed","registerComponents","registerDirectives","registerPlugins","plugin","registerComponent","def","registerDirective","vueUse","VuePlugin","elProto","Element","matchesEl","msMatchesSelector","webkitMatchesSelector","closestEl","sel","ELEMENT_NODE","requestAF","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","cb","MutationObs","parseEventOptions","useCapture","eventOn","evtName","eventOff","isElement","isVisible","bcr","getBCR","isDisabled","hasClass","reflow","selectAll","querySelector","getById","setAttr","hasAttr","hasAttribute","getCS","_offset","getClientRects","win","pageYOffset","pageXOffset","parentOffset","elStyles","offsetParent","offsetParentStyles","DEFAULT_ZINDEX","Selector","FIXED_CONTENT","STICKY_CONTENT","NAVBAR_TOGGLER","ModalManager","modals","baseZIndex","scrollbarWidth","isBodyOverflowing","modalCount","modalsAreOpen","newCount","oldCount","getScrollbarWidth","checkScrollbar","setScrollbar","resetScrollbar","newVal","oldVal","updateModals","registerModal","_this2","$once","unregisterModal","_isBeingDestroyed","_isDestroyed","resetModal","getBaseZIndex","_this3","isTop","_getBCR","_paddingChangedForModal","_marginChangedForModal","actualPadding","calculatedPadding","actualMargin","calculatedMargin","_classCallCheck","Constructor","_defineProperties","descriptor","_createClass","protoProps","staticProps","BvEvent","eventInit","Defaults","nativeEvent","vueTarget","componentId","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","_get","receiver","Reflect","_superPropBase","_getPrototypeOf","_inherits","subClass","superClass","_setPrototypeOf","BvModalEvent","_BvEvent","trigger","mergeData","identity","pluckProps","keysToPluck","objToPluck","transformFn","memo","spaces","ANCHOR_TAG","commaRE","encodeReserveRE","encodeReserveReplacer","decode","stringifyQueryObj","results","val2","parseQuery","param","isRouterLink","computeTag","thisOrParent","$router","$nuxt","computeRel","_ref2","rel","computeHref","_ref3","toFallback","propsFactory","activeClass","exact","exactActiveClass","routerTag","noPrefetch","clickHandlerFactory","suppliedHandler","evt","stopPropagation","stopImmediatePropagation","__vue__","componentData","class","NAME","btnProps","block","pill","pressed","linkProps","linkPropKeys","isLink","isToggle","isButton","isNonStandardTag","computeClass","computeLinkProps","computeAttrs","toggle","nonStdTag","autocomplete","listeners","focusin","focusout","staticClass","$scopedSlots","slot","slots","scopedSlots","domProps","localId_","safeId","$nextTick","listenOnRoot","$on","$off","listenOnRootOnce","emitOnRoot","_this$$root","hasNormalizedSlot","normalizeSlot","vNodes","NO_FADE_PROPS","enterClass","enterActiveClass","enterToClass","leaveClass","leaveActiveClass","leaveToClass","FADE_PROPS","BVTransition","noFade","mode","transProps","css","KEY_CODES","SPACE","ENTER","ESC","LEFT","UP","RIGHT","DOWN","PAGEUP","PAGEDOWN","HOME","END","TAB","SHIFT","CTRL","BACKSPACE","ALT","PAUSE","BREAK","INSERT","INS","DELETE","observeDom","obs","mutations","mutation","TEXT_NODE","addedNodes","removedNodes","childList","subtree","BTransporterTargetSingle","abstract","vm","updatedNodes","destroyed","BTransporterSingle","mixins","immediate","unmountTarget","mountTarget","created","_bv_defaultFn","_bv_target","beforeMount","updated","updateTarget","getContainer","propsData","defaultFn","$destroy","stripTagsRegex","htmlOrText","OBSERVER_CONFIG","characterData","attributeFilter","EVT_OPTIONS","capture","titleHtml","centered","buttonSize","noStacking","noCloseOnBackdrop","noCloseOnEsc","noEnforceFocus","modalClass","dialogClass","footerClass","hideHeader","hideFooter","hideHeaderClose","hideBackdrop","okOnly","okDisabled","cancelDisabled","returnFocus","cancelTitleHtml","okTitleHtml","lazy","busy","static","model","isTransitioning","isShow","isBlock","isOpening","isClosing","ignoreBackdropClick","isModalOverflowing","return_focus","modalClasses","fade","modalStyles","sbWidth","dialogClasses","headerClasses","bodyClasses","footerClasses","_ref4","modalOuterStyle","slotScope","ok","onOk","onCancel","showHandler","hideHandler","toggleHandler","modalListener","disconnect","setEnforceFocus","setResizeEvent","updateModel","getActiveElement","showEvt","$refs","emitEvent","doShow","hideEvt","triggerEl","checkModalOverflow","onBeforeEnter","onEnter","onAfterEnter","shownEvt","focusFirst","onBeforeLeave","onLeave","onAfterLeave","returnFocusTo","hiddenEvt","bvModalEvt","onDialogMousedown","_this4","onceModalMouseup","onClickOut","onEsc","focusHandler","preventScroll","bvEvt","scrollHeight","makeModal","modalHeader","closeButton","footer","modalFooter","cancelButton","okButton","modalContent","modalDialog","mousedown","rawName","keydown","beforeEnter","enter","afterEnter","beforeLeave","leave","afterLeave","backdrop","tabTrap","PROP_NAME","PROP_NAME_PRIV","BASE_PROPS","defaultResolver","propsToSlots","msgBoxContent","filterOptions","BMsgBox","extends","handleDestroy","$parent","$route","unwatch","asyncMsgBox","resolver","msgBox","resolved","$mount","BvModal","_vm","_root","_this$_root","_this$_root2","_len2","_key2","mixin","DefaultTransition","doRender","dead","staticName","$toaster","$target","multiple","slim","MIN_DURATION","EVENT_OPTIONS","isStatus","appendToast","noAutoHide","noCloseButton","noHoverPause","isMounted","localShow","timer","dismissStarted","resumeDismiss","bToastClasses","computedDuration","computedToaster","transitionHandlers","ensureToaster","clearDismissTimer","buildEvent","setHoverHandler","startDismissTimer","btoast","onPause","onUnPause","passed","onLinkClick","_this5","makeToast","_this6","$headerContent","$title","$header","$body","$toast","toastContent","BToastPop","toast","$createElement","BvToast","parseCountDown","parseShow","isNumericLike","dismissible","countDownTimerId","countDown","clearTimer","dismiss","clearInterval","$alert","$dismissBtn","ariaCurrent","suppliedProps","activeDefined","BBreadcrumb","BBreadcrumbItem","BBreadcrumbLink","BBtn","BBtnClose","ariaRole","BButtonGroup","BBtnGroup","ITEM_SELECTOR","justify","keyNav","getItems","onFocusin","onKeydown","focusPrev","focusLast","focusNext","setItemFocus","tabIndex","BButtonToolbar","BBtnToolbar","commonProps","isText","prepend","prependHTML","appendHTML","BInputGroup","BInputGroupAddon","BInputGroupPrepend","BInputGroupAppend","BInputGroupText","upperFirst","prefixPropName","lowerFirst","unprefixPropName","copyProps","copied","subTitle","subTitleTag","overlay","cardTitle","cardSubTitle","cardContent","bodyTag","bodyBorderVariant","headerHtml","headerTag","footerHtml","footerTag","alt","baseClass","cardImgProps","imgSrc","noBody","_class","imgFirst","imgLast","imgBottom","imgLeft","imgStart","imgRight","imgEnd","BLANK_TEMPLATE","fluid","fluidGrow","thumbnail","center","blank","makeBlankImgSrc","THROTTLE","blankSrc","blankWidth","blankHeight","throttle","isShown","scrollTimeout","computedSrc","computedBlank","computedWidth","computedHeight","setListeners","activated","deactivated","winEvts","onScroll","checkView","IntersectionObserver","rootMargin","threshold","isIntersecting","intersectionRatio","docElement","view","lazyProps","textTag","deck","BCard","BCardHeader","BCardBody","BCardTitle","BCardFooter","BCardImg","BCardImgLazy","BCardText","BCardGroup","noop","DIRECTION","dirClass","overlayClass","TRANS_DURATION","TOUCH_EVENT_COMPAT_WAIT","SWIPE_THRESHOLD","PointerType","TOUCH","PEN","TransitionEndEvents","WebkitTransition","MozTransition","OTransition","EventOptions","getTransitionEndEvent","provide","bvCarousel","indicators","noAnimation","noTouch","imgWidth","imgHeight","isSliding","transitionEndEvent","slides","isPaused","touchStartX","touchDeltaX","setSlide","doSlide","_intervalId","_animationTimeout","_touchTimeout","updateSlides","inner","slide","visibilityState","restart","isCycling","calcDirection","currentSlide","nextSlide","called","onceTransEnd","numSlides","curIndex","nextIndex","handleClick","absDeltaX","touchStart","touches","touchMove","touchEnd","mouseenter","mouseleave","imgAlt","imgBlank","imgBlankColor","contentVisibleUp","contentTag","caption","captionHtml","captionTag","textHtml","inject","contentClasses","noDrag","dragstart","BCarouselSlide","COMMON_ALIGNMENT","noGutters","alignV","alignH","alignContent","suffixPropName","boolStrNum","strNum","computeBkPtClass","breakpoint","breakpointPropMap","generateProps","breakpointCol","propMap","breakpointOffset","breakpointOrder","alignSelf","_classList$push","hasColClasses","BContainer","BRow","BCol","BFormRow","EVENT_STATE","EVENT_ACCORDION","EVENT_STATE_SYNC","EVENT_TOGGLE","EVENT_STATE_REQUEST","isNav","accordion","transitioning","classObject","collapse","emitState","handleToggleEvt","handleAccordionEvt","setWindowEvents","emitSync","checkDisplayBlock","restore","clickHandler","openedId","compareArrays","equal","looseEqual","aValidType","bValidType","aKeysCount","bKeysCount","aHasKey","bHasKey","allListenTypes","hover","BVBoundListeners","getTargets","modifiers","bindTargets","vnode","listenTypes","elm","boundListeners","unbindTargets","BV_TOGGLE","BV_TOGGLE_STATE","BV_TOGGLE_CONTROLS","BV_TOGGLE_TARGETS","resetProp","handleTargets","handleUpdate","componentUpdated","unbind","BCollapse","VBToggle","timeoutDuration","longerTimeoutBrowsers","microtaskDebounce","taskDebounce","scheduled","supportsMicroTasks","debounce","functionToCheck","getStyleComputedProperty","getParentNode","nodeName","getScrollParent","_getStyleComputedProp","overflowX","overflowY","getReferenceNode","reference","referenceNode","isIE11","isIE10","getOffsetParent","noOffsetParent","nextElementSibling","isOffsetContainer","firstElementChild","findCommonOffsetParent","element1","element2","DOCUMENT_POSITION_FOLLOWING","createRange","setStart","setEnd","commonAncestorContainer","element1root","getScroll","side","upperSide","scrollingElement","includeScroll","subtract","scrollLeft","getBordersSize","getSize","computedStyle","getWindowSizes","classCallCheck","createClass","_extends","getClientRect","horizScrollbar","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","isFixed","getFixedPositionOffsetParent","getBoundaries","popper","boundariesElement","boundaries","boundariesNode","_getWindowSizes","isPaddingNumber","getArea","computeAutoPlacement","placement","refRect","rects","sortedAreas","filteredAreas","computedPlacement","variation","getReferenceOffsets","commonOffsetParent","getOuterSizes","getOppositePlacement","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","check","cur","runModifiers","ends","modifiersToRun","isDestroyed","arrowStyles","flipped","positionFixed","flip","originalPlacement","isCreated","onUpdate","onCreate","isModifierEnabled","modifierName","getSupportedPropertyName","upperProp","toCheck","willChange","disableEventListeners","removeOnDestroy","getWindow","attachToScrollParents","scrollParents","isBody","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","scheduleUpdate","removeEventListeners","isNumeric","isFinite","setAttributes","applyStyle","arrowElement","applyStyleOnLoad","modifierOptions","getRoundedOffsets","shouldRound","_data$offsets","noRound","referenceWidth","popperWidth","isVertical","isVariation","sameWidthParity","bothOddWidth","horizontalToInteger","verticalToInteger","isFirefox","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","prefixedProperty","invertTop","invertLeft","arrow","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","_data$offsets$arrow","sideCapitalized","altSide","opSide","arrowElementSize","popperMarginSide","popperBorderSide","sideValue","getOppositeVariation","placements","validPlacements","clockwise","BEHAVIORS","FLIP","CLOCKWISE","COUNTERCLOCKWISE","placementOpposite","flipOrder","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","keepTogether","parseOffset","basePlacement","useHeight","fragments","frag","divider","splitRegex","mergeWithPrevious","index2","preventOverflow","transformProp","popperStyles","primary","escapeWithReference","secondary","shiftvariation","shiftOffsets","subtractLength","onLoad","Popper","jquery","Utils","PopperUtils","listenForClickOut","clickOutElement","clickOutEventName","_clickOutHandler","isClickOut","clickOutHandler","listenForFocusIn","focusInElement","_focusInHandler","focusInHandler","filterVisibles","els","FORM_CHILD","AttachmentMap","TOP","TOPEND","BOTTOM","BOTTOMEND","RIGHTEND","LEFTEND","bvDropdown","dropup","dropright","dropleft","noFlip","popperOpts","inNavbar","visibleChangePrevented","toggler","directionClass","focusToggler","showMenu","hideMenu","_popper","whileOpenListen","removePopper","createPopper","focusMenu","getPopperConfig","popperConfig","rootCloseListener","refocus","up","focusItem","menuClass","toggleTag","toggleClass","noCaret","splitHref","splitTo","dropdown","dropdownClasses","menuClasses","toggleClasses","buttonContent","closeDropdown","onClick","$props","inline","novalidate","validated","headerVariant","ariaDescribedby","headerId","adb","ariaDescribedBy","BDd","BDropdownItem","BDdItem","BDropdownItemButton","BDropdownItemBtn","BDdItemButton","BDdItemBtn","BDropdownHeader","BDdHeader","BDropdownDivider","BDdDivider","BDropdownForm","BDdForm","BDropdownText","BDdText","BDropdownGroup","BDdGroup","aspect","BEmbed","valueField","textField","htmlField","formOptions","forceShow","BForm","BFormDatalist","BDatalist","BFormInvalidFeedback","BFormFeedback","BFormValidFeedback","computedState","stateClass","SELECTOR","DEPRECATED_MSG","renderInvalidFeedback","invalidFeedback","invalidFeedbackId","feedbackAriaLive","renderValidFeedback","validFeedback","validFeedbackId","renderHelpText","renderLabel","labelFor","isLegend","isHorizontal","labelSrOnly","labelId","for","labelColProps","legendClick","labelSize","labelAlignClasses","labelClass","makePropName","BREAKPOINTS","bpLabelColProps","bpLabelAlignProps","horizontal","deprecated","bp","labelCols","propVal","bColPropName","hasInvalidFeedback","hasValidFeedback","setInputDescribedBy","inputs","ids","isFieldset","BFormGroup","BFormFieldset","looseIndexOf","form","autofocus","handleAutofocus","plain","buttonVariant","ariaLabelledby","localChecked","isGroup","bvGroup","hasFocus","computedLocalChecked","isBtnMode","isPlain","isCustom","isSwitch","isRadio","switches","switch","isInline","getName","getForm","getButtonVariant","buttonClasses","isChecked","defaultSlot","handleChange","isCheck","sizeFormClass","sizeBtnClass","uncheckedValue","indeterminate","setIndeterminate","_ref$target","isArr","ariaInvalid","groupClasses","computedAriaInvalid","isRadioGroup","bvCheckGroup","BFormCheckbox","BCheckbox","BCheck","BFormCheckboxGroup","BCheckboxGroup","BCheckGroup","bvRadioGroup","BFormRadio","BRadio","BFormRadioGroup","BRadioGroup","readonly","plaintext","lazyFormatter","localValue","stringifyValue","computedClass","getFormatted","onInput","composing","onChange","onBlur","selectionStart","selectionEnd","selectionDirection","select","_this$$refs$input","setSelectionRange","_this$$refs$input2","setRangeText","_this$$refs$input3","validity","validationMessage","willValidate","setCustomValidity","checkValidity","reportValidity","TYPES","noWheel","localType","setWheelStopper","onWheelFocus","onWheelBlur","stopWheel","BFormInput","BInput","maxRows","noResize","noAutoShrink","dontResize","heightInPx","resize","computedRows","computedMinRows","computedMaxRows","oldval","setHeight","computeHeight","$isServer","lineHeight","border","oldHeight","contentRows","BFormTextarea","BTextarea","custom","accept","directory","noTraverse","noDrop","fileNameFormatter","selectedFile","dragging","selectLabel","files","names","file","onFileChange","dataTransfer","setFiles","webkitGetAsEntry","traverseFileTree","filesArr","filesArray","onReset","onDragover","dropEffect","onDragleave","onDrop","$path","isDirectory","createReader","readEntries","webkitdirectory","dragover","dragleave","drop","BFile","selectSize","computedSelectSize","inputClass","selectedVal","selected","BFormSelect","BSelect","containerFluid","headerLevel","lead","leadHtml","leadTag","_class2","BLink","actionTags","action","isAction","itemProps","BListGroup","rightAlign","$aside","$default","BMedia","BMediaAside","BMediaBody","EVENT_SHOW","setRole","VBModal","BVModalPlugin","justified","tabs","pills","small","isNavBar","computeJustifyContent","nav","linkAttrs","linkClasses","extraMenuClasses","extraToggleClasses","BNav","BNavItem","BNavText","BNavForm","BNavItemDropdown","BNavItemDd","BNavDropdown","BNavDd","DropdownPlugin","toggleable","fixed","sticky","xs","toggleState","handleStateEvt","BNavbarNav","BNavbarBrand","BNavToggle","NavPlugin","CollapsePlugin","ELLIPSIS_THRESHOLD","DEFAULT_LIMIT","makePageArray","startNum","numPages","sanitizeLimit","limit","sanitizeCurPage","page","onSpaceKey","currentTarget","hideGotoEndButtons","labelFirstPage","firstText","labelPrevPage","prevText","labelNextPage","nextText","labelLastPage","lastText","labelPage","hideEllipsis","ellipsisText","currentPage","localNumPages","localLimit","btnSize","computedCurrentPage","paginationParams","curPage","showFirstDots","showLastDots","numLinks","pageList","_this$paginationParam","currPage","pages","_i2","_i3","getButtons","btn","setBtnFocus","focusCurrent","cnt","_this7","numberOfPages","_this$paginationParam2","isActivePage","pageNum","noCurrPage","makeEndBtn","linkTo","btnSlot","btnText","pageTest","btnContent","ariaControls","makeEllipsis","isLast","makePage","pagination","DEFAULT_PER_PAGE","DEFAULT_TOTAL_ROWS","sanitizePerPage","perPage","sanitizeTotalRows","totalRows","BPagination","baseUrl","useRouter","linkGen","pageGen","noPageDetect","sanitizeNumPages","computedValue","setNumPages","guessCurrentPage","getPageInfo","makeLink","resolveLink","_link2","resolveRoute","route","guess","currRoute","currLink","BPaginationNav","CLASS_PREFIX","BS_CLASS_PREFIX_REGEX","TRANSITION_DURATION","MODAL_CLOSE_EVENT","MODAL_CLASS","AUTO","TOPLEFT","TOPRIGHT","RIGHTTOP","RIGHTBOTTOM","BOTTOMLEFT","BOTTOMRIGHT","LEFTTOP","LEFTBOTTOM","OffsetMap","HoverState","SHOW","OUT","ClassName","FADE","TOOLTIP","TOOLTIP_INNER","ARROW","arrowPadding","fallbackPlacement","EvtOpts","NEXTID","generateId","ToolTip","$isEnabled","$fadeTimeout","$hoverTimeout","$visibleInterval","$hoverState","$activeTrigger","$popper","$element","$tip","$id","$routeWatcher","$forceHide","forceHide","$doHide","doHide","$doShow","$doDisable","doDisable","$doEnable","doEnable","_noop","updateConfig","updatedConfig","Default","fixTitle","$config","unListen","listen","setWhileOpenListeners","enabledEvt","disabledEvt","isWithActiveTrigger","getTipElement","tip","setContent","isWithContent","addAriaDescribedby","getPlacement","attachment","getAttachment","addAttachmentClass","fixTransition","prevHoverState","transitionOnce","setModalListener","visibleCheck","setRouteWatcher","setOnTouchStartListener","removeAriaDescribedby","transEvents","getTransitionEndEvents","fnOnce","compileTemplate","setElementContent","getTitle","allowHtml","innerText","triggers","setRootListener","_this8","_this9","_this10","_this11","_this12","getOffset","handlePopperPlacementChange","arrowOffset","tabClass","cls","cleanTipClass","initConfigAnimation","TITLE","CONTENT","PopOver","_ToolTip","hasTitle","hasContent","getContent","PLACEMENTS","topleft","topright","righttop","rightbottom","bottomleft","bottomright","lefttop","leftbottom","auto","baseConfig","cont","onShow","shown","onShown","onHide","onHidden","onEnabled","onDisabled","_show","onDisable","onEnable","_toolpop","_obs_title","_obs_content","createToolpop","setObservers","getConfig","bringItBack","cfg","updatePosition","getTarget","toolpop","BV_POPOVER","validTriggers","parseBindings","bindings","selectedTriggers","applyPopover","removePopover","VBPopover","bvProgress","labelHtml","striped","animated","showProgress","progressBarClasses","computedVariant","computedStriped","computedAnimated","progressBarStyles","computedMax","computedProgress","computedPrecision","computedShowProgress","computedShowValue","toFixed","progressHeight","startCase","$1","$2","IGNORED_FIELD_KEYS","_rowVariant","_cellVariants","_showDetails","EVENT_FILTER","processField","normalizeFields","origFields","sample","primaryKey","localItems","computedFields","computedFieldsObj","newItems","sanitizeRow","stringifyObjectValues","stringifyRecordValues","DEPRECATION_MSG","deprecation","filterFunction","isFiltered","localFiltering","hasProvider","noProviderFiltering","filteredCheck","filteredItems","localFilter","localFilterFn","filterFn","criteria","filterFnFactory","defaultFilterFnFactory","regexp","stableSort","compareFn","defaultSortCompare","localeCompare","numeric","sortDesc","sortDirection","sortCompare","noSortReset","labelSortAsc","labelSortDesc","labelSortClear","noLocalSorting","noFooterSorting","localSortBy","localSortDesc","localSorting","noProviderSorting","isSortable","sortable","sortedItems","handleSort","isFoot","sortChanged","toggleLocalSortDesc","sortTheadThClasses","sortTheadThAttrs","headerTitle","ariaLabelSorting","ariaSort","localPaging","noProviderPaging","paginatedItems","captionTop","captionClasses","captionId","isStacked","renderCaption","$captionSlot","$caption","renderColgroup","$colgroup","filterEvent","control","textSelectionActive","getSelection","containsNode","theadClass","theadTrClass","headClasses","fieldClasses","thClass","headClicked","stopIfBusy","renderThead","makeCell","colIndex","hasHeadClickListener","thStyle","abbr","headerAbbr","fieldScope","$cells","th","$trs","tfootTrClass","footClasses","footClone","tfootClass","renderTfoot","tbodyTrClass","tdClasses","cellVariant","dark","getTdValues","tdClass","tdAttrs","isRowHeader","tdAttr","rowClasses","tdValue","defValue","getFormattedValue","tbodyRowKeydown","rowIndex","trs","itemRows","rowClicked","middleMouseRowClicked","rowDblClicked","rowHovered","rowUnhovered","rowContextmenu","renderTbodyRowCell","$scoped","detailsSlot","rowSelected","selectedRows","toggleDetailsFn","$set","unformatted","toggleDetails","detailsShowing","$childNodes","renderTbodyRow","tableStriped","hasRowClickHandler","$detailsSlot","rowShowDetails","$rows","detailsId","$tds","ariaRowIndex","rowKey","rowId","refInFor","selectableRowClasses","selectableRowAttrs","auxclick","contextmenu","dblclick","colspan","trAttrs","$details","showEmpty","emptyText","emptyHtml","emptyFilteredText","emptyFilteredHtml","renderEmpty","$empty","computedItems","computedBusy","renderTopRow","renderBottomRow","tbodyClass","tbodyTransitionProps","tbodyTransitionHandlers","renderTbody","$busy","renderBusy","isTransGroup","tbodyProps","tbodyOn","$tbody","localBusy","selectMode","selectedLastRow","selectableTableClasses","isSelecting","selectableTableAttrs","selectableIsMultiSelect","clearSelected","setSelectionHandlers","_selectedRows","isRowSelected","hasSelection","selectedLastClicked","selectionHandler","apiUrl","providerTriggerContext","_providerUpdate","refresh","_providerSetLocal","bordered","borderless","outlined","responsive","isResponsive","responsiveClass","tableClasses","tableAttrs","$thead","$tfoot","$table","navProps","notDisabled","tab","BTabButtonHelper","bvTabs","posInSet","setSize","noKeyNav","handleEvt","localActive","titleLinkClass","activeNavItemClass","titleItemClass","card","noNavStyle","navClass","navWrapperClass","activeTabClass","tabIdx","currentTab","navStyle","localNavClass","previousTab","nextTab","updateTabs","_bvObserver","setObserver","tabsContainer","getTabs","_isTab","getButtonForTab","updateButton","$forceUpdate","activateTab","deactivateTab","focusButton","emitTabClick","clickTab","firstTab","lastTab","activeTab","fallbackTab","controlledBy","buttonId","headHtml","tabClasses","computedNoFade","computedLazy","activate","deactivate","BTabs","BTab","BVToastPlugin","BV_TOOLTIP","applyTooltip","removeTooltip","VBTooltip","ACTIVATE_EVENT","DefaultType","DROPDOWN_ITEM","ACTIVE","NAV_LIST_GROUP","NAV_LINKS","NAV_ITEMS","LIST_ITEMS","DROPDOWN","DROPDOWN_ITEMS","DROPDOWN_TOGGLE","OffsetMethod","OFFSET","POSITION","HREF_REGEX","typeCheckConfig","componentName","configTypes","expectedTypes","valueType","_isVue","ScrollSpy","$scroller","$selector","$offsets","$targets","$activeTarget","$scrollHeight","$resizeTimeout","$obs_scroller","$obs_targets","unlisten","Name","scroller","getScroller","handleEvent","resizeThrottle","autoMethod","methodFn","offsetBase","getScrollTop","getScrollHeight","maxScroll","getOffsetHeight","isActiveTarget","setActiveState","sibling","previousElementSibling","BV_SCROLLSPY","applyScrollspy","removeScrollspy","VBScrollspy","BootstrapVue","componentsPlugin","directivesPlugin","it","toIObject","toLength","toAbsoluteIndex","IS_INCLUDES","$this","fromIndex","cof","TAG","ARG","tryGet","callee","core","__e","$defineProperty","createDesc","aFunction","that","PROTOTYPE","$export","own","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","IS_PROTO","IS_BIND","IS_WRAP","expProto","virtual","R","U","__g","dP","propertyIsEnumerable","Iterators","ITERATOR","ArrayProto","anObject","ret","setToStringTag","IteratorPrototype","LIBRARY","redefine","$iterCreate","BUGGY","FF_ITERATOR","KEYS","VALUES","returnThis","DEFAULT","IS_SET","FORCED","getMethod","kind","proto","DEF_VALUES","VALUES_BUG","$native","$entries","$anyNative","SAFE_CLOSING","riter","skipClosing","safe","DESCRIPTORS","getKeys","gOPS","pIE","toObject","IObject","$assign","K","aLen","getSymbols","isEnum","dPs","enumBugKeys","IE_PROTO","Empty","createDict","iframeDocument","lt","gt","Properties","IE8_DOM_DEFINE","toPrimitive","Attributes","ObjectProto","arrayIndexOf","$keys","bitmap","stat","shared","SHARED","store","copyright","toInteger","defined","TO_STRING","px","USE_SYMBOL","$exports","classof","isArrayIter","createProperty","getIterFn","arrayLike","mapfn","mapping","iterFn","$at","iterated","_t","isCallable","tryToString","$TypeError","argument","wellKnownSymbol","UNSCOPABLES","ArrayPrototype","$String","toIndexedObject","lengthOfArrayLike","createMethod","includes","uncurryThis","stringSlice","hasOwn","getOwnPropertyDescriptorModule","definePropertyModule","exceptions","createPropertyDescriptor","makeBuiltIn","defineGlobalProperty","unsafe","nonConfigurable","nonWritable","fails","EXISTS","getBuiltIn","Deno","versions","v8","createNonEnumerableProperty","defineBuiltIn","copyConstructorProperties","isForced","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","dontCallGetSet","forced","sham","NATIVE_BIND","FunctionPrototype","getDescriptor","PROPER","CONFIGURABLE","namespace","aCallable","$Object","functionToString","inspectSource","NATIVE_WEAK_MAP","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","WeakMap","enforce","getterFor","TYPE","wmget","wmhas","wmset","metadata","facade","STATE","replacement","feature","detection","normalize","POLYFILL","NATIVE","isPrototypeOf","USE_SYMBOL_AS_UID","$Symbol","CONFIGURABLE_FUNCTION_NAME","InternalStateModule","enforceInternalState","getInternalState","CONFIGURABLE_LENGTH","TEMPLATE","getter","setter","arity","trunc","V8_VERSION","symbol","activeXDocument","definePropertiesModule","documentCreateElement","GT","LT","SCRIPT","EmptyConstructor","scriptTag","NullProtoObjectViaActiveX","parentWindow","NullProtoObjectViaIFrame","JS","NullProtoObject","ActiveXObject","V8_PROTOTYPE_DEFINE_BUG","objectKeys","toPropertyKey","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","propertyIsEnumerableModule","internalObjectKeys","$propertyIsEnumerable","NASHORN_BUG","pref","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","IS_PURE","toIntegerOrInfinity","integer","IndexedObject","requireObjectCoercible","isSymbol","ordinaryToPrimitive","TO_PRIMITIVE","exoticToPrim","postfix","NATIVE_SYMBOL","WellKnownSymbolsStore","symbolFor","createWellKnownSymbol","withoutSetter","$includes","addToUnscopables","BROKEN_ON_SPARSE","deepFreeze","Map","delete","Set","deepFreezeEs6","_default","Response","isMatchIgnored","ignoreMatch","escapeHTML","inherit","original","SPAN_CLOSE","emitsWrappingTags","HTMLRenderer","parseTree","walk","addText","openNode","sublanguage","span","closeNode","TokenTree","rootNode","closeAllNodes","builder","_walk","_collapse","TokenTreeEmitter","super","addKeyword","addSublanguage","emitter","toHTML","finalize","re","joined","either","countMatchGroups","startsWith","lexeme","BACKREF_RE","regexps","numCaptures","substring","MATCH_NOTHING_RE","IDENT_RE","UNDERSCORE_IDENT_RE","NUMBER_RE","C_NUMBER_RE","BINARY_NUMBER_RE","RE_STARTERS_RE","SHEBANG","beginShebang","binary","begin","relevance","resp","BACKSLASH_ESCAPE","APOS_STRING_MODE","illegal","QUOTE_STRING_MODE","PHRASAL_WORDS_MODE","COMMENT","modeOptions","C_LINE_COMMENT_MODE","C_BLOCK_COMMENT_MODE","HASH_COMMENT_MODE","NUMBER_MODE","C_NUMBER_MODE","BINARY_NUMBER_MODE","CSS_NUMBER_MODE","REGEXP_MODE","TITLE_MODE","UNDERSCORE_TITLE_MODE","METHOD_GUARD","END_SAME_AS_BEGIN","_beginMatch","MODES","skipIfhasPrecedingDot","before","beginKeywords","__beforeBegin","keywords","compileIllegal","compileMatch","compileRelevance","COMMON_KEYWORDS","DEFAULT_KEYWORD_CLASSNAME","compileKeywords","rawKeywords","caseInsensitive","compiledKeywords","compileList","keywordList","keyword","pair","scoreForKeyword","providedScore","commonKeyword","compileLanguage","langRe","case_insensitive","MultiRegex","matchIndexes","regexes","matchAt","addRule","compile","terminators","matcherRe","matchData","ResumableMultiRegex","multiRegexes","regexIndex","getMatcher","matcher","resumingScanAtSamePosition","considerAll","m2","buildModeRegex","mm","term","terminatorEnd","compileMode","cmode","isCompiled","ext","compilerExtensions","keywordPattern","$pattern","lexemes","keywordPatternRe","beginRe","endSameAsBegin","endsWithParent","endRe","illegalRe","expandOrCloneMode","starts","classNameAliases","dependencyOnParent","variants","cachedVariants","hasValueOrEmptyAttribute","BuildVuePlugin","hljs","detectedLanguage","unknownLanguage","highlighted","autoDetect","getLanguage","highlightAuto","highlight","ignoreIllegals","autodetect","mergeHTMLPlugin","originalStream","nodeStream","resultNode","mergeStreams","_nodeStream","nextSibling","processed","nodeStack","selectStream","attributeString","stream","seenDeprecations","escape$1","inherit$1","NO_MATCH","HLJS","languages","aliases","SAFE_MODE","fixMarkupRe","LANGUAGE_NOT_FOUND","PLAINTEXT_LANGUAGE","disableAutodetect","noHighlightRe","languageDetectRe","tabReplace","useBR","__emitter","shouldNotHighlight","languageName","blockLanguage","codeOrlanguageName","optionsOrCode","continuation","fire","_highlight","codeToHighlight","keywordData","matchText","processKeywords","modeBuffer","buf","keywordRelevance","cssClass","processSubLanguage","subLanguage","continuations","processBuffer","startNewMode","endOfMode","matchPlusRemainder","endsParent","doIgnore","resumeScanAtSamePosition","doBeginMatch","newMode","beforeCallbacks","skip","excludeBegin","returnBegin","doEndMatch","endMode","origin","returnEnd","excludeEnd","processContinuations","lastMatch","processLexeme","textBeforeMatch","badRule","iterations","md","beforeMatch","processedCount","illegalBy","sofar","errorRaised","justTextHighlightResult","languageSubset","autoDetection","supersetOf","best","secondBest","second_best","fixMarkup","updateClassName","currentLang","resultLang","brPlugin","TAB_REPLACE_RE","tabReplacePlugin","highlightElement","relavance","configure","userOptions","initHighlighting","blocks","initHighlightingOnLoad","wantsHighlight","highlightAll","boot","registerLanguage","languageDefinition","lang","error$1","rawDefinition","registerAliases","unregisterLanguage","alias","listLanguages","requireLanguage","aliasList","upgradePluginAPI","addPlugin","deprecateFixMarkup","deprecateHighlightBlock","highlightBlock","vuePlugin","debugMode","safeMode","versionString","_1c","v7_keywords","v8_keywords","KEYWORD","v7_meta_keywords","v8_meta_keywords","METAKEYWORD","v7_system_constants","v7_global_context_methods","v8_global_context_methods","v8_global_context_property","BUILTIN","v8_system_sets_of_values","v8_system_enums_interface","v8_system_enums_objects_properties","v8_system_enums_exchange_plans","v8_system_enums_tabular_document","v8_system_enums_sheduler","v8_system_enums_formatted_document","v8_system_enums_query","v8_system_enums_report_builder","v8_system_enums_files","v8_system_enums_query_builder","v8_system_enums_data_analysis","v8_system_enums_xml_json_xs_dom_xdto_ws","v8_system_enums_data_composition_system","v8_system_enums_email","v8_system_enums_logbook","v8_system_enums_cryptography","v8_system_enums_zip","v8_system_enums_other","v8_system_enums_request_schema","v8_system_enums_properties_of_metadata_objects","v8_system_enums_differents","CLASS","v8_shared_object","v8_universal_collection","LITERAL","NUMBERS","STRINGS","COMMENTS","META","SYMBOL","FUNCTION","literal","built_in","abnf","ruleDeclaration","unexpectedChars","commentMode","terminalBinaryMode","terminalDecimalMode","terminalHexadecimalMode","caseSensitivityIndicatorMode","ruleDeclarationMode","accesslog","_hljs","HTTP_VERBS","actionscript","IDENT_FUNC_RETURN_TYPE_RE","AS3_REST_ARG_MODE","ada","INTEGER_RE","EXPONENT_RE","DECIMAL_LITERAL_RE","BASED_INTEGER_RE","BASED_LITERAL_RE","ID_REGEX","BAD_CHARS","VAR_DECLS","angelscript","builtInTypeMode","objectHandleMode","genericMode","apache","NUMBER_REF","IP_ADDRESS","PORT_NUMBER","nomarkup","applescript","PARAMS","COMMENT_MODE_1","COMMENT_MODE_2","KEYWORD_PATTERNS","BUILT_IN_PATTERNS","arcade","KEYWORDS","SUBST","TEMPLATE_STRING","PARAMS_CONTAINS","lookahead","optional","cPlusPlus","DECLTYPE_AUTO_RE","NAMESPACE_RE","TEMPLATE_ARGUMENT_RE","FUNCTION_TYPE_RE","CPP_PRIMITIVE_TYPES","CHARACTER_ESCAPES","PREPROCESSOR","FUNCTION_TITLE","COMMON_CPP_HINTS","CPP_KEYWORDS","_relevance_hints","FUNCTION_DISPATCH","EXPRESSION_CONTAINS","EXPRESSION_CONTEXT","FUNCTION_DECLARATION","preprocessor","strings","arduino","ARDUINO_KW","ARDUINO","kws","armasm","meta","asciidoc","HORIZONTAL_RULE","ESCAPED_FORMATTING","STRONG","EMPHASIS","ADMONITION","BULLET_LIST","aspectj","SHORTKEYS","autohotkey","BACKTICK_ESCAPE","autoit","DIRECTIVES","BUILT_IN","VARIABLE","CONSTANT","avrasm","awk","axapta","BUILT_IN_KEYWORDS","LITERAL_KEYWORDS","NORMAL_KEYWORDS","bash","VAR","BRACED_VAR","HERE_DOC","QUOTE_STRING","ESCAPED_QUOTE","APOS_STRING","ARITHMETIC","SH_LIKE_SHELLS","KNOWN_SHEBANG","basic","bnf","brainfuck","cLike","C_ALIASES","CPP_ALIASES","cal","LITERALS","COMMENT_MODES","CHAR_STRING","DBL_QUOTED_VARIABLE","PROCEDURE","OBJECT","capnproto","ceylon","DECLARATION_MODIFIERS","DOCUMENTATION","EXPRESSIONS","clean","clojureRepl","clojure","SYMBOLSTART","SYMBOL_RE","globals","SIMPLE_NUMBER_RE","COLLECTION","HINT","HINT_COL","KEY","LIST","BODY","DEFAULT_CONTAINS","cmake","ERROR_TYPES","BUILT_IN_GLOBALS","BUILT_IN_VARIABLES","BUILT_INS","coffeescript","COFFEE_BUILT_INS","COFFEE_LITERALS","COFFEE_KEYWORDS","NOT_VALID_KEYWORDS","excluding","kw","KEYWORDS$1","JS_IDENT_RE","POSSIBLE_PARAMS_RE","coq","COS_KEYWORDS","cpp","crmsh","RESOURCES","COMMANDS","PROPERTY_SETS","OPERATORS","crystal","INT_SUFFIX","FLOAT_SUFFIX","CRYSTAL_IDENT_RE","CRYSTAL_METHOD_RE","CRYSTAL_PATH_RE","CRYSTAL_KEYWORDS","EXPANSION","recursiveParen","Q_STRING","REGEXP","REGEXP2","ATTRIBUTE","CRYSTAL_DEFAULT_CONTAINS","csharp","FUNCTION_MODIFIERS","CONTEXTUAL_KEYWORDS","VERBATIM_STRING","VERBATIM_STRING_NO_LF","SUBST_NO_LF","INTERPOLATED_STRING","INTERPOLATED_VERBATIM_STRING","INTERPOLATED_VERBATIM_STRING_NO_LF","GENERIC_MODIFIER","TYPE_IDENT_RE","AT_IDENTIFIER","csp","IMPORTANT","HEXCOLOR","ATTRIBUTE_SELECTOR_MODE","TAGS","MEDIA_FEATURES","PSEUDO_CLASSES","PSEUDO_ELEMENTS","ATTRIBUTES","modes","VENDOR_PREFIX","AT_MODIFIERS","AT_PROPERTY_RE","keyframePosition","D_KEYWORDS","decimal_integer_re","decimal_integer_nosus_re","binary_integer_re","hexadecimal_digits_re","hexadecimal_integer_re","decimal_exponent_re","decimal_float_re","hexadecimal_float_re","integer_re","float_re","escape_sequence_re","D_INTEGER_MODE","D_FLOAT_MODE","D_CHARACTER_MODE","D_ESCAPE_SEQUENCE","D_STRING_MODE","D_WYSIWYG_DELIMITED_STRING_MODE","D_ALTERNATE_WYSIWYG_STRING_MODE","D_HEX_STRING_MODE","D_TOKEN_STRING_MODE","D_HASHBANG_MODE","D_SPECIAL_TOKEN_SEQUENCE_MODE","D_ATTRIBUTE_MODE","D_NESTING_COMMENT_MODE","dart","BRACED_SUBST","BUILT_IN_TYPES","NULLABLE_BUILT_IN_TYPES","delphi","DIRECTIVE","django","FILTER","dns","dockerfile","dos","LABEL","dsconfig","QUOTED_PROPERTY","APOS_PROPERTY","UNQUOTED_PROPERTY","VALUELESS_PROPERTY","dts","DTS_REFERENCE","DTS_KEYWORD","DTS_LABEL","DTS_CELL_PROPERTY","DTS_NODE","DTS_ROOT_NODE","dust","EXPRESSION_KEYWORDS","ebnf","nonTerminalMode","specialSequenceMode","ruleBodyMode","elixir","ELIXIR_IDENT_RE","ELIXIR_METHOD_RE","ELIXIR_KEYWORDS","SIGIL_DELIMITERS","LOWERCASE_SIGIL","UPCASE_SIGIL","ELIXIR_DEFAULT_CONTAINS","CONSTRUCTOR","RECORD","CHARACTER","erb","erlangRepl","erlang","BASIC_ATOM_RE","FUNCTION_NAME_RE","ERLANG_RESERVED","NAMED_FUN","FUNCTION_CALL","TUPLE","VAR1","VAR2","RECORD_ACCESS","BLOCK_STATEMENTS","BASIC_MODES","excel","fix","flix","CHAR","METHOD","fortran","OPTIONAL_NUMBER_SUFFIX","OPTIONAL_NUMBER_EXP","FUNCTION_DEF","fsharp","TYPEPARAM","anyNumberOfTimes","gams","SYMBOLS","QSTR","ASSIGNMENT","COMMENT_WORD","DESCTEXT","gauss","AT_COMMENT_MODE","STRUCT_TYPE","PARSE_PARAMS","DEFINITION","inherits","BUILT_IN_REF","STRING_REF","FUNCTION_REF","FUNCTION_REF_PARAMS","gcode","GCODE_IDENT_RE","GCODE_CLOSE_RE","GCODE_KEYWORDS","GCODE_START","GCODE_CODE","gherkin","glsl","gml","GML_KEYWORDS","GO_KEYWORDS","golo","gradle","groovy","haml","handlebars","DOUBLE_QUOTED_ID_REGEX","SINGLE_QUOTED_ID_REGEX","BRACKET_QUOTED_ID_REGEX","PLAIN_ID_REGEX","PATH_DELIMITER_REGEX","ANY_ID","IDENTIFIER_REGEX","HASH_PARAM_REGEX","HELPER_NAME_OR_PATH_EXPRESSION","HELPER_PARAMETER","SUB_EXPRESSION","HASH","BLOCK_PARAMS","HELPER_PARAMETERS","SUB_EXPRESSION_CONTENTS","OPENING_BLOCK_MUSTACHE_CONTENTS","CLOSING_BLOCK_MUSTACHE_CONTENTS","BASIC_MUSTACHE_CONTENTS","ESCAPE_MUSTACHE_WITH_PRECEEDING_BACKSLASH","PREVENT_ESCAPE_WITH_ANOTHER_PRECEEDING_BACKSLASH","haskell","PRAGMA","haxe","HAXE_BASIC_TYPES","hsp","htmlbars","definition","http","HEADER_NAME","HEADER","HEADERS_AND_BODY","hy","inform7","START_BRACKET","END_BRACKET","ini","VARIABLES","ARRAY","BARE_KEY","QUOTED_KEY_DOUBLE_QUOTE","QUOTED_KEY_SINGLE_QUOTE","ANY_KEY","DOTTED_KEY","irpf90","F_KEYWORDS","isbl","FUNCTION_NAME_IDENT_RE","sysres_constants","base_constants","base_group_name_constants","decision_block_properties_constants","file_extension_constants","job_block_properties_constants","language_code_constants","launching_external_applications_constants","link_kind_constants","lock_type_constants","monitor_block_properties_constants","notice_block_properties_constants","object_events_constants","object_params_constants","other_constants","privileges_constants","pseudoreference_code_constants","requisite_ISBCertificateType_values_constants","requisite_ISBEDocStorageType_values_constants","requisite_compType2_values_constants","requisite_name_constants","result_constants","rule_identification_constants","script_block_properties_constants","subtask_block_properties_constants","system_component_constants","system_dialogs_constants","system_reference_names_constants","table_name_constants","test_constants","using_the_dialog_windows_constants","using_the_document_constants","using_the_EA_and_encryption_constants","using_the_ISBL_editor_constants","wait_block_properties_constants","sysres_common_constants","CONSTANTS","TAccountType","TActionEnabledMode","TAddPosition","TAlignment","TAreaShowMode","TCertificateInvalidationReason","TCertificateType","TCheckListBoxItemState","TCloseOnEsc","TCompType","TConditionFormat","TConnectionIntent","TContentKind","TControlType","TCriterionContentType","TCultureType","TDataSetEventType","TDataSetState","TDateFormatType","TDateOffsetType","TDateTimeKind","TDeaAccessRights","TDocumentDefaultAction","TEditMode","TEditorCloseObservType","TEdmsApplicationAction","TEDocumentLockType","TEDocumentStepShowMode","TEDocumentStepVersionType","TEDocumentStorageFunction","TEDocumentStorageType","TEDocumentVersionSourceType","TEDocumentVersionState","TEncodeType","TExceptionCategory","TExportedSignaturesType","TExportedVersionType","TFieldDataType","TFolderType","TGridRowHeight","THyperlinkType","TImageFileFormat","TImageMode","TImageType","TInplaceHintKind","TISBLContext","TItemShow","TJobKind","TJoinType","TLabelPos","TLicensingType","TLifeCycleStageFontColor","TLifeCycleStageFontStyle","TLockableDevelopmentComponentType","TMaxRecordCountRestrictionType","TRangeValueType","TRelativeDate","TReportDestination","TReqDataType","TRequisiteEventType","TSBTimeType","TSearchShowMode","TSelectMode","TSignatureType","TSignerContentType","TStringsSortType","TStringValueType","TStructuredObjectAttributeType","TTaskAbortReason","TTextValueType","TUserObjectStatus","TUserType","TValuesBuildType","TViewMode","TViewSelectionMode","TWizardActionType","TWizardFormElementProperty","TWizardFormElementType","TWizardParamType","TWizardStepResult","TWizardStepType","TWorkAccessType","TWorkflowBlockType","TWorkflowDataType","TWorkImportance","TWorkRouteType","TWorkState","TWorkTextBuildingMode","ENUMS","system_functions","predefined_variables","interfaces","DOCTAGS","ISBL_LINE_COMMENT_MODE","ISBL_BLOCK_COMMENT_MODE","METHODS","FUNCTIONS","decimalDigits","frac","hexDigits","NUMERIC","java","JAVA_IDENT_RE","GENERIC_IDENT_RE","ANNOTATION","javascript","hasClosingTag","IDENT_RE$1","FRAGMENT","XML_TAG","isTrulyOpeningTag","afterMatchIndex","nextChar","decimalInteger","HTML_TEMPLATE","CSS_TEMPLATE","JSDOC_COMMENT","SUBST_INTERNALS","SUBST_AND_COMMENTS","jbossCli","PARAM","PARAMSBLOCK","OPERATION","PATH","COMMAND_PARAMS","ALLOWED_COMMENTS","VALUE_CONTAINER","juliaRepl","julia","VARIABLE_NAME_RE","KEYWORD_LIST","LITERAL_LIST","BUILT_IN_LIST","INTERPOLATION","INTERPOLATED_VARIABLE","COMMAND","MACROCALL","kotlin","KEYWORDS_WITH_LABEL","ANNOTATION_USE_SITE","KOTLIN_NUMBER_MODE","KOTLIN_NESTED_COMMENT","KOTLIN_PAREN_TYPE","KOTLIN_PAREN_TYPE2","lasso","LASSO_IDENT_RE","LASSO_ANGLE_RE","LASSO_CLOSE_RE","LASSO_KEYWORDS","HTML_COMMENT","LASSO_NOPROCESS","LASSO_START","LASSO_DATAMEMBER","LASSO_CODE","latex","KNOWN_CONTROL_WORDS","L3_REGEX","L2_VARIANTS","DOUBLE_CARET_VARIANTS","CONTROL_SEQUENCE","MACRO_PARAM","DOUBLE_CARET_CHAR","SPECIAL_CATCODE","MAGIC_COMMENT","EVERYTHING_BUT_VERBATIM","BRACE_GROUP_NO_VERBATIM","ARGUMENT_BRACES","ARGUMENT_BRACKETS","SPACE_GOBBLER","ARGUMENT_M","ARGUMENT_O","ARGUMENT_AND_THEN","starts_mode","CSNAME","csname","BEGIN_ENV","envname","VERBATIM_DELIMITED_EQUAL","innerName","VERBATIM_DELIMITED_ENV","VERBATIM_DELIMITED_BRACES","VERBATIM","ldif","leaf","PSEUDO_SELECTORS","less","PSEUDO_SELECTORS$1","INTERP_IDENT_RE","RULES","VALUE_MODES","STRING_MODE","IDENT_MODE","AT_KEYWORDS","PARENS_MODE","VALUE_WITH_RULESETS","MIXIN_GUARD_MODE","RULE_MODE","AT_RULE_MODE","VAR_RULE_MODE","SELECTOR_MODE","PSEUDO_SELECTOR_MODE","lisp","LISP_IDENT_RE","MEC_RE","LISP_SIMPLE_NUMBER_RE","IDENT","MEC","QUOTED_LIST","QUOTED","QUOTED_ATOM","livecodeserver","TITLE1","TITLE2","livescript","LIVESCRIPT_BUILT_INS","LIVESCRIPT_LITERALS","LIVESCRIPT_KEYWORDS","SUBST_SIMPLE","llvm","OPERATOR","PUNCTUATION","lsl","LSL_STRING_ESCAPE_CHARS","LSL_STRINGS","LSL_NUMBERS","LSL_CONSTANTS","LSL_FUNCTIONS","lua","OPENING_LONG_BRACKET","CLOSING_LONG_BRACKET","LONG_BRACKETS","makefile","FUNC","markdown","INLINE_HTML","CODE","LINK_REFERENCE","URL_SCHEME","LINK","BOLD","ITALIC","CONTAINABLE","BLOCKQUOTE","SYSTEM_SYMBOLS","mathematica","BASE_RE","BASE_DIGITS_RE","BASE_NUMBER_RE","ACCURACY_RE","PRECISION_RE","APPROXIMATE_NUMBER_RE","SCIENTIFIC_NOTATION_RE","MATHEMATICA_NUMBER_RE","SYSTEM_SYMBOLS_SET","NAMED_CHARACTER","PATTERNS","SLOTS","BRACES","MESSAGES","brace","matlab","TRANSPOSE_RE","TRANSPOSE","maxima","BUILTIN_FUNCTIONS","mel","mercury","NUMCODE","ATOM","STRING_FMT","IMPLICATION","HEAD_BODY_CONJUNCTION","mipsasm","mizar","mojolicious","monkey","moonscript","n1ql","nginx","nim","nix","NIX_KEYWORDS","ANTIQUOTE","ATTRS","nodeRepl","nsis","DEFINES","LANGUAGES","PARAMETERS","COMPILER","METACHARS","PLUGINS","objectivec","API_CLASS","IDENTIFIER_RE","OBJC_KEYWORDS","CLASS_KEYWORDS","ocaml","openscad","SPECIAL_VARS","PREPRO","MODIFIERS","oxygene","OXYGENE_KEYWORDS","CURLY_COMMENT","PAREN_COMMENT","parser3","CURLY_SUBCOMMENT","perl","REGEX_MODIFIERS","PERL_KEYWORDS","STRING_CONTAINS","REGEX_DELIMS","PAIRED_DOUBLE_RE","middle","PAIRED_RE","PERL_DEFAULT_CONTAINS","pf","MACRO","TABLE","pgsql","COMMENT_MODE","UNQUOTED_IDENT","DOLLAR_STRING","SQL_KW","ROLE_ATTRS","PLPGSQL_KW","TYPES_RE","SQL_BI","PLPGSQL_BI","PLPGSQL_EXCEPTIONS","FUNCTIONS_RE","phpTemplate","php","SINGLE_QUOTED","DOUBLE_QUOTED","HEREDOC","pony","TRIPLE_QUOTE_STRING_MODE","SINGLE_QUOTE_CHAR_MODE","TYPE_NAME","PRIMED_NAME","powershell","VALID_VERBS","COMPARISON_OPERATORS","TITLE_NAME_RE","PS_HELPTAGS","PS_COMMENT","CMDLETS","PS_CLASS","PS_FUNCTION","PS_USING","PS_ARGUMENTS","HASH_SIGNS","PS_METHODS","GENTLEMANS_SET","PS_TYPE","processing","profile","prolog","PARENTED","LINE_COMMENT","BACKTICK_STRING","CHAR_CODE","SPACE_CODE","PRED_OP","WS0","WS1","EQUAL_DELIM","WS_DELIM","DELIM","KEY_ALPHANUM","KEY_OTHER","DELIM_AND_VALUE","protobuf","puppet","PUPPET_KEYWORDS","purebasic","pythonRepl","python","RESERVED_WORDS","PROMPT","LITERAL_BRACKET","digitpart","pointfloat","COMMENT_TYPE","qml","QML_IDENT_RE","PROPERTY","SIGNAL","ID_ID","QML_ATTRIBUTE","QML_OBJECT","SIMPLE_IDENT","originalMode","reasonml","orReValues","RE_IDENT","RE_MODULE_IDENT","RE_PARAM_TYPEPARAM","RE_PARAM_TYPE","RE_PARAM","RE_OPERATOR","RE_OPERATOR_SPACED","RE_NUMBER","OPERATOR_MODE","LIST_CONTENTS_MODES","MODULE_ACCESS_CONTENTS","PARAMS_CONTENTS","PARAMS_MODE","FUNCTION_BLOCK_MODE","CONSTRUCTOR_MODE","PATTERN_MATCH_BLOCK_MODE","MODULE_ACCESS_MODE","rib","roboconf","IDENTIFIER","routeros","STATEMENTS","GLOBAL_COMMANDS","COMMON_COMMANDS","OBJECTS","rsl","ruby","RUBY_METHOD_RE","RUBY_KEYWORDS","YARDOCTAG","IRB_OBJECT","decimal","RUBY_DEFAULT_CONTAINS","SIMPLE_PROMPT","DEFAULT_PROMPT","RVM_PROMPT","IRB_DEFAULT","ruleslanguage","rust","NUM_SUFFIX","BUILTINS","sas","SAS_KEYWORDS","SAS_FUN","SAS_MACRO_FUN","scala","scheme","SCHEME_IDENT_RE","SCHEME_SIMPLE_NUMBER_RE","SCHEME_COMPLEX_NUMBER_RE","QUOTED_IDENT","LAMBDA","scilab","COMMON_CONTAINS","scss","PSEUDO_ELEMENTS$1","PSEUDO_CLASSES$1","shell","smali","smali_instr_low_prio","smali_instr_high_prio","smali_keywords","smalltalk","VAR_IDENT_RE","sml","sqf","sql","QUOTED_IDENTIFIER","MULTI_WORD_TYPES","NON_RESERVED_WORDS","RESERVED_FUNCTIONS","POSSIBLE_WITHOUT_PARENS","COMBOS","reduceRelevancy","when","qualifyFn","sql_more","stan","BLOCKS","SPECIAL_FUNCTIONS","VAR_TYPES","DISTRIBUTIONS","stata","step21","STEP21_IDENT_RE","STEP21_KEYWORDS","STEP21_START","STEP21_CLOSE","stylus","LOOKAHEAD_TAG_END","ILLEGAL","subunit","DETAILS","TIME","PROGRESSVALUE","keywordWrapper","dotKeywords","optionalDotKeywords","keywordTypes","literals","precedencegroupKeywords","numberSignKeywords","builtIns","operatorHead","operatorCharacter","identifierHead","identifierCharacter","typeIdentifier","keywordAttributes","availabilityKeywords","swift","WHITESPACE","BLOCK_COMMENT","DOT_KEYWORD","KEYWORD_GUARD","PLAIN_KEYWORDS","REGEX_KEYWORDS","KEYWORD_MODES","BUILT_IN_GUARD","OPERATOR_GUARD","ESCAPED_CHARACTER","rawDelimiter","ESCAPED_NEWLINE","MULTILINE_STRING","SINGLE_LINE_STRING","IMPLICIT_PARAMETER","PROPERTY_WRAPPER_PROJECTION","IDENTIFIERS","AVAILABLE_ATTRIBUTE","KEYWORD_ATTRIBUTE","USER_DEFINED_ATTRIBUTE","GENERIC_ARGUMENTS","TUPLE_ELEMENT_NAME","FUNC_PLUS_TITLE","GENERIC_PARAMETERS","FUNCTION_PARAMETER_NAME","FUNCTION_PARAMETERS","INIT_SUBSCRIPT","OPERATOR_DECLARATION","PRECEDENCEGROUP","interpolation","submodes","taggerscript","ESCAPE_SEQUENCE","tap","tcl","TCL_IDENT","thrift","tp","TPID","TPLABEL","TPDATA","TPIO","twig","FUNCTION_NAMES","typescript","NAMESPACE","INTERFACE","USE_STRICT","TS_SPECIFIC_KEYWORDS","DECORATOR","swapMode","indx","tsLanguage","functionDeclaration","vala","vbnet","MM_DD_YYYY","YYYY_MM_DD","TIME_12H","TIME_24H","DOC_COMMENT","vbscriptHtml","vbscript","BUILT_IN_FUNCTIONS","BUILT_IN_OBJECTS","BUILT_IN_CALL","verilog","SV_KEYWORDS","vhdl","vim","x86asm","xl","BUILTIN_MODULES","XL_KEYWORDS","DOUBLE_QUOTE_TEXT","SINGLE_QUOTE_TEXT","LONG_TEXT","BASED_NUMBER","IMPORT","FUNCTION_DEFINITION","xml","TAG_NAME_RE","XML_IDENT_RE","XML_ENTITIES","XML_META_KEYWORDS","XML_META_PAR_KEYWORDS","APOS_META_STRING_MODE","QUOTE_META_STRING_MODE","TAG_INTERNALS","xquery","COMPUTED","DIRECT","CONTAINS","yaml","URI_CHARACTERS","TEMPLATE_VARIABLES","CONTAINER_STRING","DATE_RE","TIME_RE","FRACTION_RE","ZONE_RE","TIMESTAMP","zephir","camel2hyphen","isDimension","obj2mq","mq","features","json2mq","modules","installedModules","moduleId","__esModule","__webpack_require__","DEVICE_TYPES","MOBILE","TABLET","SMART_TV","CONSOLE","WEARABLE","BROWSER","BROWSER_TYPES","CHROME","FIREFOX","OPERA","YANDEX","SAFARI","INTERNET_EXPLORER","EDGE","CHROMIUM","IE","MOBILE_SAFARI","EDGE_CHROMIUM","OS_TYPES","IOS","ANDROID","WINDOWS_PHONE","WINDOWS","MAC_OS","defaultData","isMobile","isTablet","isSmartTV","isConsole","isWearable","UAParser","_require","_require2","checkType","broPayload","mobilePayload","wearPayload","consolePayload","stvPayload","getNavigatorInstance","isIOS13Check","UA","browser","getBrowser","device","getDevice","engine","getEngine","os","getOS","ua","getUA","isMobileType","isTabletType","isMobileAndTabletType","isEdgeChromiumType","isSmartTVType","isBrowserType","isWearableType","isConsoleType","isAndroidType","isWindowsType","isMacOsType","isWinPhoneType","isIOSType","isChromeType","isFirefoxType","isChromiumType","isEdgeType","isYandexType","isSafariType","isMobileSafariType","isOperaType","isIEType","isElectronType","getIOS13","platform","getIPad13","getIphone13","getIPod13","getBrowserFullVersion","major","getBrowserVersion","getOsVersion","getOsName","getBrowserName","getMobileVendor","getMobileModel","getEngineName","getEngineVersion","getUseragent","getDeviceType","isMobileSafari","isChromium","isMobileOnly","isAndroid","isWinPhone","isChrome","isOpera","osVersion","osName","fullBrowserVersion","browserVersion","browserName","mobileVendor","mobileModel","engineName","engineVersion","isEdge","isYandex","deviceType","isIOS13","isIPad13","isIPhone13","isIPod13","isElectron","isEdgeChromium","isLegacyEdge","isWindows","isMacOs","deviceDetect","__WEBPACK_AMD_DEFINE_RESULT__","LIBVERSION","EMPTY","UNKNOWN","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MAJOR","MODEL","VENDOR","ARCHITECTURE","SMARTTV","EMBEDDED","util","extensions","margedRegexes","str1","str2","lowerize","mapper","rgx","arrays","maps","oldsafari","amazon","sprint","HTC","Sprint","windows","ME","XP","Vista","RT","cpu","uastring","getResult","rgxmap","getCPU","architecture","setUA","CPU","DEVICE","ENGINE","OS","jQuery","Zepto","__webpack_amd_options__","browserMajorVersion","browserFullVersion","factory","af","defineLocale","weekdaysMin","meridiemParse","isPM","meridiem","isLower","longDateFormat","LTS","LL","LLL","LLLL","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","ss","hh","dd","MM","dayOfMonthOrdinalParse","ordinal","dow","doy","pluralForm","plurals","pluralize","withoutSuffix","isFuture","arDz","weekdaysParseExact","postformat","arKw","symbolMap","arLy","preparse","arMa","numberMap","arSa","arTn","suffixes","az","plural","forms","relativeTimeWithPlural","be","standalone","isFormat","ww","lastDigit","last2Digits","bm","bnBd","meridiemHour","bn","bo","monthsShortRegex","monthsParseExact","relativeTimeWithMutation","specialMutationForYears","lastNumber","softMutation","mutationTable","monthsParse","monthsRegex","monthsStrictRegex","monthsShortStrictRegex","fullWeekdaysParse","shortWeekdaysParse","minWeekdaysParse","weekdaysParse","longMonthsParse","shortMonthsParse","ca","ll","lll","llll","cv","affix","lookup","da","processRelativeTime","deAt","deCh","de","dv","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","mom","_calendarEl","enAu","enCa","enGb","enIe","enIl","enIn","enNz","enSg","eo","monthsShortDot","esDo","esMx","invalidDate","esUs","es","et","eu","fa","numbersPast","numbersFuture","verbalNumber","fi","fil","frCa","frCh","fr","monthsShortWithDots","monthsShortWithoutDots","ga","gd","gl","gomDeva","gomLatn","gu","he","weekEndings","hu","hyAm","itCh","ja","eras","since","narrow","until","eraYearOrdinalRegex","eraYearOrdinalParse","jv","ka","$0","kk","km","kn","isUpper","ku","ky","processFutureTime","eifelerRegelAppliesToNumber","processPastTime","firstDigit","lb","lo","units","translateSeconds","translateSingular","special","relativeTimeWithSingular","relativeSeconds","lv","translator","correctGrammaticalCase","wordKey","me","lastWeekDays","mi","mk","mn","relativeTimeMr","msMy","my","nb","ne","nlBe","nl","nn","ocLnc","paIn","monthsNominative","monthsSubjective","ptBr","ro","ru","days","sd","se","si","sk","sl","sq","srCyrl","sr","sv","sw","ta","te","tet","tg","tk","tlPh","numbersNouns","translateFuture","translatePast","numberNoun","numberAsNoun","hundred","ten","one","tlh","tzl","tzmLatn","ugCn","hm","weekdaysCaseReplace","nounCase","nominative","accusative","genitive","processHoursFunction","uk","ur","uzLatn","uz","vi","xPseudo","yo","zhCn","zhHk","zhMo","zhTw","hookCallback","hooks","setHookCallback","hasOwnProp","isObjectEmpty","arrLen","createUTC","createLocalOrUTC","defaultParsingFlags","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","parsedDateParts","era","rfc2822","weekdayMismatch","getParsingFlags","_pf","_isValid","flags","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","createInvalid","fun","momentProperties","updateInProgress","copyConfig","momentPropertiesLen","_isAMomentObject","_f","_l","_tzm","_isUTC","Moment","updateOffset","isMoment","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","argLen","deprecations","deprecateSimple","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","_calendar","zeroFill","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","localeData","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","replaceLongDateFormatTokens","defaultLongDateFormat","_longDateFormat","formatUpper","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","_relativeTime","pastFuture","addUnitAlias","shorthand","lowerCase","normalizeUnits","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","getPrioritizedUnits","unitsObj","isLeapYear","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","daysInMonth","stringGet","stringSet","prioritized","prioritizedLen","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","YEAR","MONTH","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","modMonth","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","localeMonthsShort","_monthsShort","handleStrictParse","monthName","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","getSetYear","getIsLeapYear","createDate","setFullYear","createUTCDate","firstWeekOffset","fwd","fwdlw","dayOfYearFromWeeks","resYear","resDayOfYear","localWeekday","weekOffset","dayOfYear","weekOfYear","resWeek","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","parseIsoWeekday","shiftWeekdays","ws","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","kInput","_isPm","_meridiem","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","globalLocale","locales","localeFamilies","commonPrefix","arr1","minl","normalizeLocale","chooseLocale","loadLocale","isLocaleNameSane","oldLocale","_abbr","getSetGlobalLocale","parentLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","weekdayProvided","weekdayActual","calculateOffset","obsOffset","militaryOffset","numOffset","configFromRFC2822","parsedArray","configFromString","createFromInputFallback","currentDateArray","nowValue","_useUTC","configFromArray","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","weekdayOverflow","curWeek","GG","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","createFromConfig","prepareConfig","configFromInput","isUTC","prototypeMin","other","prototypeMax","pickBy","moments","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid$1","createDuration","Duration","years","quarters","quarter","weeks","isoWeek","_milliseconds","_days","_bubble","isDuration","absRound","array1","array2","dontConvert","lengthDiff","diffs","utcOffset","offsetFromString","chunkOffset","cloneWithOffset","getDateOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","isAfter","isBefore","createAdder","dur","tmp","isAdding","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","propertyLen","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","zoneDelta","monthDiff","anchor2","wholeMonthDiff","anchor","keepOffset","inspect","datetime","inputString","defaultFormatUtc","defaultFormat","humanize","fromNow","toNow","newLocaleData","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","localStartOfDate","utcStartOfDate","startOfDate","isoWeekday","unix","isValid$2","parsingFlags","invalidAt","creationData","localeEras","_eras","localeErasParse","eraName","localeErasConvertYear","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","createUnix","createInZone","parseZone","preParsePostFormat","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","isDSTShifted","proto$1","get$1","listMonthsImpl","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","valueOf$1","makeAs","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","argWithSuffix","argThresholds","withSuffix","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","proto$2","toIsoString","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME_SECONDS","TIME_MS","hasMoment","hasEventListeners","sto","addEvent","attachEvent","removeEvent","detachEvent","cn","isWeekend","setToStartOfDay","compareDates","overwrite","hasProp","eventName","createEvent","initEvent","dispatchEvent","createEventObject","adjustCalendar","reposition","defaultDate","setDefaultDate","firstDay","firstWeekOfYearMinDays","formatStrict","minDate","maxDate","yearRange","showWeekNumber","pickWholeWeek","minYear","maxYear","minMonth","maxMonth","startRange","endRange","isRTL","yearSuffix","showMonthAfterYear","showDaysInNextAndPreviousMonths","enableSelectionDaysInNextAndPreviousMonths","numberOfMonths","mainCalendar","blurFieldOnSelect","i18n","previousMonth","nextMonth","onDraw","keyboardInput","renderDayName","renderDay","ariaSelected","isEmpty","isToday","isSelected","hasEvent","isInRange","isStartRange","isEndRange","dayInFirstWeek","dayShift","daysPerWeek","prevWeekDay","jan4th","msPerDay","daysBetween","weekNum","renderWeek","renderRow","renderBody","renderHead","renderTitle","refYear","randId","monthHtml","yearHtml","_o","isMinYear","isMaxYear","renderTable","_onMouseDown","_v","srcElement","prevMonth","returnValue","_onChange","gotoMonth","gotoYear","_onKeyChange","adjustDate","_parseFieldValue","_onInputChange","firedBy","_onInputFocus","_onInputClick","_onInputBlur","pEl","_onClick","onchange","defDate","gotoDate","disableWeekends","disableDayFn","nom","setMinDate","setMaxDate","toDateString","getMoment","setMoment","preventOnSelect","newCalendar","calendars","firstVisibleDate","lastVisibleDate","visibleDate","adjustCalendars","newDay","gotoToday","setStartRange","setEndRange","_m","adjustPosition","viewportWidth","viewportHeight","clientRect","leftAligned","bottomAligned","offsetLeft","offsetTop","yearOfPreviousMonth","yearOfNextMonth","daysInPreviousMonth","cells","isWeekSelected","dayNumber","monthNumber","yearNumber","dayConfig","_interopDefault","inBrowser","combinePassengers","transports","slotProps","passengers","transport","newPassengers","pick","acc","Wormhole","trackInstances","_transport$order","newTransport","$_getTransportIndex","newTransports","registerTarget","unregisterTarget","$delete","registerSource","unregisterSource","hasTarget","hasSource","hasContentFor","wormhole","Portal","sendUpdate","closer","normalizeSlots","normalizeOwnChildren","slotContent","Tag","PortalTarget","firstRender","ownTransports","noWrapper","_id$1","portalProps","targetProps","MountingPortal","bail","mountTo","targetSlim","targetSlotProps","targetTag","portalTarget","mountEl","_props","manual","Vue$$1","portalName","portalTargetName","MountingPortalName","_self","overlay_classes","_onOverlayClick","modal_classes","hideCloseButton","_e","has_title","has_tabs","_getClassesForTab","$event","_changeTab","_s","overlayTheme","modalTheme","blocking","pulseOnBlock","enableMobileFullscreen","$children","_onDocumentKeyup","is_open","is_bouncing","backups","has_content","current_tab","bounce","modal_style","tabId","openingTabs","openingTab","_lockBody","_animateIcon","_unlockBody","_applyClasses","icon_success","icon_warning","icon_error","$ref","classMap","cl","alpha_dash","alpha_num","alpha_spaces","between","confirmed","credit_card","date_between","date_format","dimensions","email","excluded","included","max_value","mimes","min_value","VeeValidate","Validator","localize","isTextInput","isCheckboxOrRadioInput","isDateInput","getDataAttribute","isNaN$1","isNullOrUndefined","createFlags","untouched","dirty","pristine","valid","pending","isEqual","lhs","rhs","getScope","getPath","hasPath","previousPath","isValidPath","reducer","parseRule","wait","later","appendRule","normalizeRules","parsedRule","ensureArray","isEmptyArray","others","idTemplate","uniqId","predicate","isBuiltInComponent","componentOptions","makeDelayObject","delayConfig","deepParseInt","obj$1","fillRulesFromElement","maxLength","minLength","parseSelector","collection","defineNonReactive","LOCALE","dictionary","prototypeAccessors","hasLocale","setDateFormat","getDateFormat","getMessage","hasMessage","_getDefaultMessage","getFieldMessage","setMessage","drivers","currentDriver","DictionaryResolver","_checkDriverName","driver","setDriver","getDriver","ErrorBag","errorBag","vmId","this$1","_normalizeError","regenerate","matchesScope","matchesVM","collect","isSingleField","groupErrors","_makeCandidateFilters","isPrimary","isAlt","collected","firstById","_match","firstRule","firstByRule","firstNot","removeById","condition","shouldRemove","matchesRule","matchesName","DEFAULT_CONFIG","errorBagName","fieldsBagName","fastExit","aria","useConstraintAttrs","i18nRootKey","currentConfig","resolveConfig","selfConfig","newConf","findModel","extractChildren","extractVNodes","candidates","findModelConfig","Ctor","mergeVNodeListeners","prevHandler","addNativeNodeListener","addComponentNodeListener","addVNodeListener","getInputEventName","createRenderless","Resolver","resolveModel","resolveName","bails","continues","resolveScope","resolveGetter","resolveEvents","resolveDelay","resolveRules","persist","initialValue","resolveInitialValue","getCtorConfig","normalized","globalDelay","watchable","boundGetter","checkbox","RuleContainer","staticAccessors","paramNames","isImmediate","isRequireRule","computesRequired","isTargetRule","ruleName","getParamNames","getOptions","getValidatorMethod","isEvent","normalizeEvents","evts","supportsPassive","detectPassiveSupport","DEFAULT_OPTIONS","targetOf","Field","forceRequired","_cacheId","_delay","ctorConfig","prototypeAccessors$1","rejectsFalse","$validator","_alias","_bails","matchesComponentId","_veeValidateId","waitFor","pendingPromise","_waitingFor","isWaitingFor","updateDependencies","addActionListeners","resetFlag","addValueListeners","updateClasses","updateAriaAttrs","_cancellationToken","flag","updateCustomValidity","setFlags","negated","dependencies","ref$1","watchers","isReset","applyClasses","inputEvent","blurEvent","checkValueChanged","_determineInputEvent","_determineEventList","defaultInputEvent","_resolveField","watchCtxVm","debouncedFn","_addComponentEventListener","_addHTMLEventListener","addListener","applyAriaAttrs","FieldBag","itemsById","prototypeAccessors$2","findById","ScopedValidator","_base","_paused","prototypeAccessors$3","attach","attachOpts","detach","verify","validateAll","validateScopes","VALIDATOR","getValidator","setValidator","requestsValidator","injections","$__veeInject","$_veeValidate","defineReactive","findField","fieldOptions","validations","pluginContainer","_createFields","paused","$vee","prototypeAccessors$4","staticAccessors$1","hasChanged","_guardExtend","mergedOpts","_merge","fieldOpts","oldFieldMatcher","oldField","_validate","fieldDescriptor","silent","_handleFieldNotFound","validationPromise","_handleValidationResults","providedValues","targetRules","targetKey","ruleMap","failedRules","_getDateFormat","_formatErrorMessage","targetName","_getFieldDisplayName","_getLocalizedParams","_convertParamObjectToArray","paramName","localizedName","_convertParamArrayToObj","hasKeys","_test","_createFieldError","fullName","matchers","allErrors","_shouldSkip","_shouldBail","requireRules","ruleOptions","isExitEarly","normalizeValue","normalizeFormat","I18nDictionary","rootKey","prototypeAccessors$5","getDateTimeFormat","setDateTimeFormat","dataOptions","fallbackLocale","localeKey","mergeLocaleMessage","pendingPlugins","pluginInstance","aggressive","eager","VeeValidate$1","_Vue","_validator","_initVM","_initI18n","prototypeAccessors$6","i18nDriver","staticAccessors$2","setI18nDriver","setMode","Rules","onLocaleChanged","formatFileSize","isDefinedGlobally","inclusion","ip_or_fqdn","required_if","dirtyNumber","MILLISECONDS_IN_MINUTE","getTimezoneOffsetInMilliseconds","dirtyDate","baseTimezoneOffset","setSeconds","millisecondsPartOfTimezoneOffset","MILLISECONDS_IN_HOUR","MILLISECONDS_IN_MINUTE$1","DEFAULT_ADDITIONAL_DIGITS","dateTimeDelimeter","plainTime","timeZoneDelimeter","YY","YYY","YYYY","YYYYY","DDD","MMDD","Www","WwwD","HH","HHMM","HHMMSS","timezoneZ","timezoneHH","timezoneHHMM","dirtyOptions","additionalDigits","RangeError","dateStrings","splitDateString","parseYearResult","parseYear","restDateString","parseDate","parseTime","parseTimezone","dateString","timeString","patternYYY","patternYYYYY","yearString","centuryString","validateDate","validateDayOfYearDate","validateWeekDate","dayOfISOWeekYear","dayOfWeek","validateTime","timezoneString","absoluteOffset","validateTimezone","fourthOfJanuaryDay","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","isLeapYearIndex","addMilliseconds","dirtyAmount","formatDistanceLocale","lessThanXSeconds","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","formatDistance","addSuffix","comparison","buildFormatLongFn","defaultWidth","medium","short","timeFormats","dateTimeFormats","formatLong","dateTime","formatRelativeLocale","yesterday","today","tomorrow","formatRelative","baseDate","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","argumentCallback","eraValues","abbreviated","wide","quarterValues","monthValues","dayValues","dayPeriodValues","pm","midnight","noon","morning","afternoon","evening","night","formattingDayPeriodValues","ordinalNumber","rem100","dayPeriod","defaulFormattingWidth","buildMatchPatternFn","dirtyString","matchResult","matchPattern","matchedString","parseResult","parsePattern","valueCallback","buildMatchFn","matchPatterns","defaultMatchWidth","parsePatterns","defaultParseWidth","findKey","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","locale$1","weekStartsOn","firstWeekContainsDate","MILLISECONDS_IN_DAY","getUTCDayOfYear","startOfYearTimestamp","startOfUTCISOWeek","getUTCISOWeekYear","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCISOWeekYear","fourthOfJanuary","MILLISECONDS_IN_WEEK","getUTCISOWeek","startOfUTCWeek","localeWeekStartsOn","defaultWeekStartsOn","getUTCWeekYear","localeFirstWeekContainsDate","defaultFirstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfUTCWeekYear","MILLISECONDS_IN_WEEK$1","getUTCWeek","dayPeriodEnum","formatters","signedYear","twoDigitYear","addLeadingZeros","signedWeekYear","Q","localDayOfWeek","isoDayOfWeek","dayPeriodEnumValue","H","numberOfDigits","fractionalSeconds","X","originalDate","_originalDate","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","z","dirtyDelimeter","delimeter","absOffset","dateLongFormatter","timeLongFormatter","dateTimeLongFormatter","dateTimeFormat","datePattern","timePattern","longFormatters","subMilliseconds","protectedTokens","isProtectedToken","throwProtectedError","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","dirtyFormatStr","formatStr","utcDate","formatterOptions","firstCharacter","longFormatter","cleanEscapedString","awareOfUnicodeTokens","dirtyDateToCompare","dateToCompare","isEqual$1","dirtyLeftDate","dirtyRightDate","dateLeft","dateRight","setUTCDay","dirtyDay","currentDay","remainder","dayIndex","setUTCWeek","dirtyWeek","setUTCISODay","setUTCISOWeek","dirtyISOWeek","MILLISECONDS_IN_HOUR$1","MILLISECONDS_IN_MINUTE$2","MILLISECONDS_IN_SECOND","numericPatterns","hour23h","hour24h","hour11h","hour12h","singleDigit","twoDigits","threeDigits","fourDigits","anyDigitsSigned","singleDigitSigned","twoDigitsSigned","threeDigitsSigned","fourDigitsSigned","timezonePatterns","basicOptionalMinutes","basicOptionalSeconds","extended","extendedOptionalSeconds","parseNumericPattern","parseTimezonePattern","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","enumValue","normalizeTwoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","rangeEndCentury","isPreviousCentury","DAYS_IN_MONTH$1","DAYS_IN_MONTH_LEAP_YEAR$1","isLeapYearIndex$1","parsers","isTwoDigitYear","normalizedTwoDigitYear","firstWeekOfYear","wholeWeekDays","TIMEZONE_UNIT_PRIORITY","formattingTokensRegExp$1","escapedStringRegExp$1","doubleQuoteRegExp$1","notWhitespaceRegExp","dirtyDateString","dirtyFormatString","dirtyBaseDate","formatString","subFnOptions","setters","dateToSystemTimezone","cleanEscapedString$1","uniquePrioritySetters","setterArray","convertedDate","parseDate$1","format$1","afterValidator","targetValue","alphaSpaces","alphanumeric","alphaDash","paramNames$1","alpha$1","validate$1","paramNames$2","validate$2","paramNames$3","validate$3","paramNames$4","validate$4","options$1","paramNames$5","validate$5","paramNames$6","validate$6","options$2","paramNames$7","unwrapExports","createCommonjsModule","assertString_1","assertString","invalidType","isCreditCard_1","isCreditCard","_assertString","_interopRequireDefault","creditCard","sanitized","digit","tmpNum","shouldDouble","validate$7","validate$8","dateVal","options$3","paramNames$8","validate$9","options$4","paramNames$9","validate$a","regexPart","parsedValue","paramNames$a","validate$b","strVal","imageRegex","validateImage","validate$c","merge_1","isByteLength_1","isByteLength","isFQDN_1","isFQDN","default_fqdn_options","require_tld","allow_underscores","allow_trailing_dot","tld","isIP_1","isIP","ipv4Maybe","ipv6Block","foundOmissionBlock","foundIPv4TransitionBlock","expectedNumberOfBlocks","isEmail_1","isEmail","_isByteLength","_isFQDN","_isIP","default_email_options","allow_display_name","require_display_name","allow_utf8_local_part","displayName","emailUserPart","gmailUserPart","quotedEmailUser","emailUserUtf8Part","quotedEmailUserUtf8","display_email","user","lower_domain","domain_specific_validation","_user_parts","allow_ip_domain","endsWith","noBracketdomain","user_parts","objectWithoutProperties","exclude","validate$d","emailStr","validatorOptions","validate$e","validate$f","validate$g","validate$h","validate$i","validate$j","paramNames$b","validate$k","validate$l","validate$m","is_not","compare","validate$n","validate$o","validate$p","validate$q","validate$r","validate$s","validate$t","testValue","strValue","validate$u","paramNames$c","validate$v","invalidateFalse","validate$w","otherFieldVal","possibleVals","options$5","validate$x","nSize","isURL_1","isURL","default_url_options","protocols","require_protocol","require_host","require_valid_protocol","allow_protocol_relative_urls","wrapped_ipv6","checkHost","port_str","ipv6","disallow_auth","ipv6_match","host_whitelist","host_blacklist","validate$y","combine","mapScope","isScope","mapFields","PROVIDER_COUNTER","ValidationProvider","$_veeObserver","createObserver","vid","_needsValidation","initialized","isDeactivated","fieldDeps","depName","watchCrossFieldDep","normalizedEvents","computeModeSetting","_inputEventName","registerField","createValidationCtx","addListeners","unsubscribe","subscribe","syncValue","normalizeValue$1","_pendingValidation","validateSilent","applyResult","createValuesLookup","updateRenderingContextRefs","shouldValidate","_ignoreImmediate","compute","onRenderUpdate","validateNow","createCommonHandlers","onValidate","$veeHandler","$veeDebounce","providers","refs","withHooks","_veeWatchers","flagMergingStrategy","mergeFlags","strategy","stratName","OBSERVER_COUNTER","ValidationObserver","observers","persistedStore","thenable","provider","errs","obsErrors","subscriber","restoreProviderState","removeProvider","withValidation","ctxToProps","hoc","vctx","vueHighlightJS","filterAttrs","InlineSvgComponent","svgElSource","getSvgAttrs","getSvgContent","transformSource","keepDuringLoading","getSource","svgEl","svgAttrs","cloneNode","setTitle","isPending","makePromiseState","titleTags","titleEl","InlineSvgPlugin","enforceFocus","focusIn","isFullPage","viewBox","xmlns","repeatCount","calcMode","attributeType","programmatic","lockScroll","canCancel","loader","Spinner","Dots","Bars","keyPress","disableScroll","enableScroll","bgStyle","backdropFilter","$loading","convertBreakpointsToMediaQueries","breakpointValues","mediaQueries","mediaQuery","transformValuesFromBreakpoints","currentBreakpoint","findClosestValue","newBreakpoint","selectBreakpoints","subscribeToMediaQuery","mql","plusModifier","activeBreakpoints","$mqAvailableBreakpoints","shouldRenderChildren","$mq","DEFAULT_BREAKPOINT","sm","lg","_ref$breakpoints","_ref$defaultBreakpoin","defaultBreakpoint","hasSetupListeners","reactorComponent","$isLabel","$groupLabel","isOpen","preferredOpenDirection","optimizedHeight","internalSearch","trackBy","searchable","clearOnSelect","hideSelected","allowEmpty","resetAfter","closeOnSelect","customLabel","taggable","tagPlaceholder","tagPosition","optionsLimit","groupValues","groupLabel","groupSelect","blockKeys","preserveSearch","preselectFirst","internalValue","filteredOptions","filterAndFlat","isExistingOption","isTag","valueKeys","optionKeys","flatAndStrip","currentOptionLabel","getOptionLabel","updateSearch","isOptionDisabled","$isDisabled","selectGroup","pointerDirty","wholeGroupSelected","wholeGroupDisabled","removeLastElement","openDirection","showPointer","optionHeight","pointerPosition","visibleElements","pointerAdjust","optionHighlight","groupHighlight","addPointerElement","pointerReset","pointerForward","pointerBackward","pointerSet","_k","Arguments","selectGroupLabel","selectedLabel","deselectLabel","deselectGroupLabel","showLabels","limitText","loading","showNoOptions","showNoResults","isSingleLabelVisible","singleValue","visibleValues","isPlaceholderVisible","deselectLabelText","deselectGroupLabelText","selectLabelText","selectGroupLabelText","selectedLabelText","inputStyle","contentStyle","isAbove","showSearchInput","hasSingleSelectedSlot","visibleSingleValue","ignoreCase","multiline","unicode","setImmediate","clearImmediate","MessageChannel","Dispatch","nextTick","port2","port1","onmessage","postMessage","importScripts","PromiseRejectionEvent","_n","fail","_h","exit","emit","onunhandledrejection","onrejectionhandled","race","finally","RETURN","createTextNode","getIteratorMethod","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","esModule","keypress","keyup","__WEBPACK_EXTERNAL_MODULE_20__","rawScriptExports","compiledTemplate","cssModules","__webpack_exports__","__WEBPACK_IMPORTED_MODULE_0_vue__","__WEBPACK_IMPORTED_MODULE_0_vue___default","__WEBPACK_IMPORTED_MODULE_0__Notifications_vue__","__WEBPACK_IMPORTED_MODULE_0__Notifications_vue___default","__WEBPACK_IMPORTED_MODULE_1__events__","Notify","notify","__WEBPACK_IMPORTED_MODULE_0__index__","__WEBPACK_IMPORTED_MODULE_2__util__","__WEBPACK_IMPORTED_MODULE_3__defaults__","__WEBPACK_IMPORTED_MODULE_4__VelocityGroup_vue__","__WEBPACK_IMPORTED_MODULE_4__VelocityGroup_vue___default","__WEBPACK_IMPORTED_MODULE_5__CssGroup_vue__","__WEBPACK_IMPORTED_MODULE_5__CssGroup_vue___default","__WEBPACK_IMPORTED_MODULE_6__parser__","IDLE","DESTROYED","VelocityGroup","CssGroup","animationType","velocityAnimation","animationName","cssAnimation","cooldown","ignoreDuplicates","velocity","addItem","closeItem","actualWidth","isVA","_listToDirection","botToTop","destroyIfNecessary","destroyAll","indexToDestroy","isDuplicate","canAdd","destroyById","notifyClass","notifyWrapperStyle","getAnimation","floatRegexp","Id","listToDirection","directions","alreadyImportedModules","locals","hasDocument","DEBUG","listToStyles","stylesInDom","singletonElement","singletonCounter","isProduction","isOldIE","addStylesToDom","domStyle","createStyleElement","styleElement","styleIndex","applyToSingletonTag","applyToTag","newObj","media","sourceMap","parentId","_isProduction","newList","mayRemove","replaceText","textStore","styleSheet","cssNode","newStyles","isError","View","routerView","_routerViewCache","inactive","_routerRoot","vnodeData","keepAlive","_inactive","routerViewDepth","registerRouteInstance","instances","prepatch","propsToPass","resolveProps","resolveQuery","extraQuery","_parseQuery","parsedQuery","stringifyQuery","trailingSlashRE","createRoute","record","redirectedFrom","router","stringifyQuery$$1","getFullPath","formatMatch","START","_stringifyQuery","isSameRoute","isObjectEqual","aKeys","bKeys","aVal","bVal","isIncludedRoute","queryIncludes","toTypes","eventTypes","Link","globalActiveClass","linkActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","guardEvent","findAnchor","isStatic","aData","aAttrs","isDef","registerInstance","callVal","_parentVnode","_router","history","_route","strats","optionMergeStrategies","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","resolvePath","firstChar","parsePath","hashIndex","queryIndex","cleanPath","isarray","pathToRegexp_1","pathToRegexp","parse_1","compile_1","tokensToFunction_1","tokensToFunction","tokensToRegExp_1","tokensToRegExp","PATH_REGEXP","defaultDelimiter","escaped","asterisk","partial","escapeGroup","escapeString","encodeURIComponentPretty","encodeAsterisk","pretty","attachKeys","sensitive","regexpToRegexp","groups","arrayToRegexp","stringToRegexp","endsWithDelimiter","regexpCompileCache","fillParams","routeMsg","filler","pathMatch","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","pathList","pathMap","nameMap","addRouteRecord","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","caseSensitive","compileRouteRegex","redirect","childMatchAs","aliasRoute","normalizeLocation","raw","_normalized","rawPath","parsedPath","basePath","createMatcher","addRoutes","currentRoute","_createRoute","record$1","matchRoute","originalRedirect","resolveRecordPath","resolvedPath","aliasedPath","aliasedMatch","aliasedRecord","positionStore","setupScroll","protocolAndPath","absolutePath","replaceState","getStateKey","saveScrollPosition","setStateKey","handleScroll","isPop","app","scrollBehavior","getScrollPosition","shouldScroll","scrollToPosition","getElementPosition","docEl","docRect","elRect","isValidPosition","normalizePosition","normalizeOffset","scrollTo","supportsPushState","Time","performance","genKey","pushState","runQueue","resolveAsyncComponents","hasAsync","flatMapComponents","cid","resolvedDef","isESModule","comp","hasSymbol","History","normalizeBase","readyCbs","readyErrorCbs","errorCbs","baseEl","resolveQueue","extractGuards","records","guards","guard","extractGuard","extractLeaveGuards","bindGuard","extractUpdateHooks","extractEnterGuards","cbs","bindEnterGuard","poll","onReady","errorCb","onError","transitionTo","onComplete","onAbort","confirmTransition","updateRoute","ensureURL","beforeHooks","postEnterCbs","enterGuards","resolveHooks","afterHooks","HTML5History","History$$1","expectScroll","supportsScroll","initLocation","getLocation","fromRoute","getCurrentLocation","decodeURI","HashHistory","checkFallback","ensureSlash","setupListeners","getHash","replaceHash","pushHash","searchIndex","getUrl","AbstractHistory","targetIndex","VueRouter","apps","registerHook","createHref","setupHashListener","beforeEach","beforeResolve","afterEach","back","forward","getMatchedComponents","normalizedTo","emptyObject","isUndef","isTrue","isFalse","isPrimitive","_toString","isValidArrayIndex","isPromise","makeMap","expectsLowerCase","isBuiltInTag","isReservedAttribute","remove$2","hit","camelizeRE","camelize","hyphenateRE","hyphenate","polyfillBind","boundFn","_length","nativeBind","bind$1","_from","no","genStaticKeys$1","staticKeys","isObjectA","isObjectB","isArrayA","isArrayB","keysA","keysB","SSR_ATTR","ASSET_TYPES","LIFECYCLE_HOOKS","productionTip","devtools","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","async","_lifecycleHooks","unicodeRegExp","bailRE","hasProto","isIE9","_isServer","isFF","nativeWatch","isServerRendering","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","isNative","_Set","currentInstance","getCurrentInstance","proxy","setCurrentInstance","_scope","warn$2","uid$2","Dep","subs","addSub","sub","removeSub","depend","addDep","targetStack","pushTarget","popTarget","VNode","asyncFactory","fnContext","fnOptions","fnScopeId","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","createEmptyVNode","createTextVNode","cloneVNode","cloned","arrayProto","arrayMethods","methodsToPatch","reactive","makeReactive","shallowReactive","shallow","isReadonly","isReactive","__ob__","isShallow","__v_isShallow","__v_isReadonly","isProxy","toRaw","observed","markRaw","ob","observeArray","dep","RefFlag","isRef","__v_isRef","createRef","shallowRef","triggerRef","unref","proxyRefs","objectWithRefs","proxyWithRefUnwrap","customRef","toRefs","toRef","rawToReadonlyFlag","rawToShallowReadonlyFlag","createReadonly","existingFlag","existingProxy","defineReadonlyProperty","shallowReadonly","seenObjects","traverse","_traverse","seen","isA","depId","normalizeEvent","createFnInvoker","invoker","invokeWithErrorHandling","updateListeners","oldOn","createOnceHandler","mergeVNodeHook","hookKey","oldHook","wrappedHook","merged","extractPropsFromVNodeData","propOptions","checkProp","preserve","simpleNormalizeChildren","normalizeChildren","normalizeArrayChildren","isTextNode","nestedIndex","_isVList","initSetup","setup","_setupContext","createSetupContext","setupResult","_setupState","__sfc","_setupProxy","initAttrsProxy","initSlotsProxy","expose","exposed","_attrsProxy","syncSetupAttrs","defineProxyAttr","_slotsProxy","syncSetupSlots","useSlots","useAttrs","mergeDefaults","sharedPropertyDefinition","sourceKey","initState","initProps$1","initMethods","initData","vmCount","initComputed$1","initWatch","propsOptions","_propKeys","isRoot","toggleObserving","validateProp","getData","handleError","activeEffectScope","computedWatcherOptions","_computedWatchers","isSSR","userDef","Watcher","defineComputed","shouldCache","createComputedGetter","createGetterInvoker","watcher","evaluate","createWatcher","expOrFn","stateMixin","dataDef","propsDef","del","teardown","provides","_provided","parentProvides","treatDefaultAsFactory","initProvide","provideOption","provided","initInjections","resolveInject","provideKey","provideDefault","EffectScope","detached","effects","cleanups","scopes","run","currentEffectScope","fromParent","effectScope","recordEffectScope","effect","getCurrentScope","onScopeDispose","uid$1","initMixin$1","_init","__v_skip","_isComponent","initInternalComponent","mergeOptions","resolveConstructorOptions","_renderProxy","initLifecycle","initEvents","initRender","callHook$1","parentVnode","vnodeComponentOptions","_parentListeners","_renderChildren","_componentTag","superOptions","cachedSuperOptions","modifiedOptions","resolveModifiedOptions","extendOptions","modified","latest","sealed","sealedOptions","resolveSlots","name_1","name_2","isWhitespace","normalizeScopedSlots","ownerVm","normalSlots","prevScopedSlots","hasNormalSlots","isStable","$stable","$key","$hasNormal","normalizeScopedSlot","key_2","proxyNormalSlot","isExtensible","renderList","renderSlot","fallbackRender","bindObject","scopedSlotFn","resolveFilter","resolveAsset","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","camelizedKey","hyphenatedKey","renderStatic","isInFor","_staticTrees","tree","markStatic$1","markOnce","markStaticNode","bindObjectListeners","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","bindDynamicKeys","baseObj","prependModifier","installRenderHelpers","_q","_u","_g","_p","FunctionalRenderContext","contextVm","_original","needNormalization","createElement$1","createFunctionalComponent","mergeProps","renderContext","cloneAndMarkFunctionalResult","vnodes","componentVNodeHooks","hydrating","mountedNode","createComponentInstanceForVnode","activeInstance","oldVnode","updateChildComponent","_isMounted","queueActivatedComponent","activateChildComponent","deactivateChildComponent","hooksToMerge","createComponent","baseCtor","resolveAsyncComponent","createAsyncPlaceholder","transformModel","nativeOn","installComponentHooks","inlineTemplate","toMerge","_merged","mergeHook","f2","SIMPLE_NORMALIZE","ALWAYS_NORMALIZE","normalizationType","alwaysNormalize","_createElement","pre","applyNS","registerDeepBindings","_vnode","parentData","target$1","currentRenderingInstance","renderMixin","_render","ensureCtor","errorComp","owners","loadingComp","owners_1","sync_1","timerLoading_1","timerTimeout_1","forceRender_1","renderCompleted","reject_1","res_1","getFirstComponentChild","_events","_hasHookEvent","updateComponentListeners","remove$1","createOnceHandler$1","_target","onceHandler","oldListeners","eventsMixin","hookRE","setActiveInstance","prevActiveInstance","_watcher","_directInactive","lifecycleMixin","_update","prevEl","prevVnode","restoreActiveInstance","__patch__","mountComponent","updateComponent","watcherOptions","preWatchers","_preWatchers","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","prevVNode","propKeys","isInInactiveTree","direct","activatedChildren","waiting","flushing","index$1","resetSchedulerState","currentFlushTimestamp","getNow","performance_1","timeStamp","flushSchedulerQueue","activatedQueue","updatedQueue","callActivatedHooks","callUpdatedHooks","queueWatcher","noRecurse","isRenderWatcher","sync","deps","newDeps","depIds","newDepIds","cleanupDeps","onStop","getterOrOptions","debugOptions","onlyGetter","WATCHER","WATCHER_CB","WATCHER_GETTER","WATCHER_CLEANUP","watchEffect","doWatch","watchPostEffect","watchSyncEffect","INITIAL_WATCHER_VALUE","onTrack","onTrigger","cleanup","forceTrigger","isMultiSource","onCleanup","baseGetter_1","errorCaptured","globalHandleError","_handled","logError","timerFunc","isUsingMicroTask","flushCallbacks","copies","p_1","counter_1","textNode_1","_resolve","useCssModule","useCssVars","vars","createLifeCycle","hookName","injectHook","mergeLifecycleHook","onBeforeMount","onMounted","onBeforeUpdate","onUpdated","onBeforeUnmount","onUnmounted","onErrorCaptured","onActivated","onDeactivated","onServerPrefetch","onRenderTracked","onRenderTriggered","defineComponent","arrayKeys","NO_INIITIAL_VALUE","shouldObserve","Observer","protoAugment","copyAugment","customSetter","childOb","dependArray","toVal","fromVal","mergeDataOrFn","parentVal","childVal","instanceData","dedupeHooks","mergeAssets","defaultStrat","normalizeProps","normalizeInject","normalizeDirectives$1","mergeField","strat","warnMissing","assets","camelizedId","PascalCaseId","absent","booleanIndex","getTypeIndex","stringIndex","getPropDefaultValue","prevShouldObserve","functionTypeCheckRE","isSameType","initUse","installedPlugins","_installedPlugins","initMixin","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","initProps","initComputed","Comp","initAssetRegisters","getComponentName","pruneCache","keepAliveInstance","pruneCacheEntry","patternTypes","KeepAlive","include","cacheVNode","vnodeToCache","keyToCache","builtInComponents","initGlobalAPI","configDef","observable","acceptValue","isEnumeratedAttr","isValidContentEditableValue","convertEnumeratedValue","isFalsyAttrValue","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","genClassForVnode","mergeClassData","renderClass","dynamicClass","stringifyClass","stringifyArray","stringifyObject","stringified","namespaceMap","math","isHTMLTag","isSVG","isPreTag","unknownElementCache","HTMLUnknownElement","isTextInputType","createComment","newNode","setTextContent","setStyleScope","nodeOps","registerRef","isRemoval","refValue","$refsValue","isFor","_isString","_isRef","setSetupRef","emptyNode","sameVnode","sameInputType","typeA","typeB","createKeyToOldIdx","beginIdx","endIdx","createPatchFunction","backend","emptyNodeAt","createRmCb","childElm","createElm","insertedVnodeQueue","parentElm","refElm","nested","ownerArray","setScope","createChildren","invokeCreateHooks","isReactivated","initComponent","reactivateComponent","pendingInsert","isPatchable","innerNode","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","removeAndInvokeRemoveHook","rm","updateChildren","oldCh","newCh","removeOnly","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","patchVnode","findIdxInOld","hydrate","postpatch","invokeInsertHook","i_6","isRenderedModule","inVPre","hasChildNodes","childrenMatch","i_7","fullInvoke","isInitialPatch","isRealElement","oldElm","_leaveCb","patchable","i_8","i_9","insert_1","i_10","directives$1","updateDirectives","oldDir","isCreate","isDestroy","oldDirs","normalizeDirectives","newDirs","dirsWithInsert","dirsWithPostpatch","oldArg","callHook","callInsert","emptyModifiers","getRawDirName","baseModules","updateAttrs","oldAttrs","_v_attr_proxy","removeAttributeNS","isInPre","baseSetAttr","__ieph","blocker_1","updateClass","oldData","transitionClass","_transitionClasses","_prevClass","chr","expressionPos","expressionEndPos","klass$1","validDivisionCharRE","parseFilters","inSingle","inDouble","inTemplateString","inRegex","curly","paren","lastFilterIndex","pushFilter","wrapFilter","baseWarn","pluckModuleFunction","addProp","dynamic","rangeSetItem","addAttr","dynamicAttrs","addRawAttr","attrsMap","attrsList","addDirective","isDynamicArg","prependModifierMarker","addHandler","important","native","nativeEvents","newHandler","getRawBindingAttr","rawAttrsMap","getBindingAttr","getStatic","dynamicValue","getAndRemoveAttr","staticValue","removeFromMap","getAndRemoveAttrByRegex","genComponentModel","baseValueExpression","valueExpression","assignment","genAssignmentCode","parseModel","lastIndexOf","eof","isStringStart","parseString","parseBracket","inBracket","stringQuote","RANGE_TOKEN","CHECKBOX_RADIO_TOKEN","model$1","_warn","genSelect","genCheckboxModel","genRadioModel","genDefaultModel","valueBinding","trueValueBinding","falseValueBinding","needCompositionGuard","useMicrotaskFix","attachedTimestamp_1","original_1","_wrapper","updateDOMListeners","updateDOMProps","oldProps","strCur","shouldUpdateValue","checkVal","isNotInFocusAndDirty","isDirtyWithModifiers","notInFocus","_vModifiers","parseStyleText","listDelimiter","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","staticStyle","bindingStyle","checkChild","styleData","emptyStyle","cssVarRE","importantRE","setProp","vendorNames","capName","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","style$1","whitespaceRE$1","tar","resolveTransition","autoCssTransition","hasTransition","TRANSITION","ANIMATION","transitionProp","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","nextFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","ended","onEnd","transformRE","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","toggleDisplay","_enterCb","appearClass","appearToClass","appearActiveClass","enterCancelled","beforeAppear","afterAppear","appearCancelled","transitionNode","isAppear","startClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","pendingNode","_pending","isValidDuration","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","platformModules","modules$1","patch","vmodel","_vOptions","setSelected","onCompositionStart","onCompositionEnd","prevOptions_1","curOptions_1","needReset","hasNoMatchingOption","actuallySetSelected","isMultiple","selectedIndex","locateNode","originalDisplay","__vOriginalDisplay","platformDirectives","transitionProps","getRealChild","compOptions","extractTransitionData","rawChild","hasParentTransition","isSameChild","oldChild","isNotTextNode","isVShowDirective","Transition","_leaving","oldRawChild","delayedLeave_1","moveClass","TransitionGroup","kept","prevChildren","rawChildren","transitionData","removed","hasMove","callPendingCbs","recordPosition","applyTranslation","_reflow","el_1","WebkitTransform","_moveCb","_hasMove","newPos","oldPos","platformComponents","defaultTagRE","regexEscapeRE","buildRegex","delimiters","parseText","tagRE","tokenValue","rawTokens","transformNode$1","classBinding","genData$2","klass","transformNode","genData","styleBinding","genData$1","decoder","isUnaryTag","canBeLeftOpenTag","isNonPhrasingTag","dynamicArgAttribute","ncname","qnameCapture","startTagOpen","startTagClose","endTag","doctype","comment","conditionalComment","isPlainTextElement","reCache","decodingMap","encodedAttr","encodedAttrWithNewLines","isIgnoreNewlineTag","shouldIgnoreFirstNewline","decodeAttr","shouldDecodeNewlines","parseHTML","lastTag","expectHTML","endTagLength_1","stackedTag_1","reStackedTag","parseEndTag","textEnd","commentEnd","shouldKeepComment","advance","conditionalEnd","doctypeMatch","endTagMatch","startTagMatch","parseStartTag","handleStartTag","unarySlash","unary","shouldDecodeNewlinesForHref","lowerCasedTag","lowerCasedTagName","transforms","preTransforms","postTransforms","platformIsPreTag","platformMustUseProp","platformGetTagNamespace","onRE","dirRE","forAliasRE","forIteratorRE","stripParensRE","dynamicArgRE","argRE","bindRE","modifierRE","slotRE","lineBreakRE","whitespaceRE","decodeHTMLCached","emptySlotScopeToken","createASTElement","makeAttrsMap","currentParent","preserveWhitespace","whitespaceOption","whitespace","inPre","closeElement","trimEndingWhitespace","processElement","if","elseif","else","addIfCondition","forbidden","processIfConditions","slotTarget","comments","outputSourceRange","guardIESVGBug","isForbiddenTag","processPre","processRawAttrs","processFor","processIf","processOnce","isTextTag","processKey","processRef","processSlotContent","processSlotOutlet","processComponent","processAttrs","checkInFor","parseFor","inMatch","iteratorMatch","iterator1","iterator2","findPrevElement","ifConditions","slotTargetDynamic","slotBinding","getSlotName","name_3","slotContainer_1","slotName","syncGen","hasBindings","parseModifiers","camel","argMatch","ret_1","ieNSBug","ieNSPrefix","preTransformNode","typeBinding","ifCondition","ifConditionExtra","hasElse","elseIfCondition","branch0","cloneASTElement","branch1","branch2","isStaticKey","isPlatformReservedTag","baseOptions","genStaticKeysCached","genStaticKeys","optimize","markStatic","markStaticRoots","staticInFor","staticRoot","isDirectChildOfTemplateFor","fnExpRE","fnInvokeRE","simplePathRE","esc","space","down","keyNames","genGuard","modifierCode","prevent","ctrl","genHandlers","staticHandlers","dynamicHandlers","handlerCode","genHandler","isMethodPath","isFunctionExpression","isFunctionInvocation","genModifierCode","modifiers_1","keyModifier","genKeyFilter","genFilterCode","keyVal","keyName","wrapListeners","wrapData","baseDirectives","cloak","CodegenState","dataGenFns","maybeComponent","onceId","ast","genElement","staticProcessed","genStatic","onceProcessed","genOnce","forProcessed","genFor","ifProcessed","genIf","genSlot","genComponent","__isScriptSetup","checkBindingType","genChildren","originalPreState","altGen","altEmpty","genIfConditions","conditions","genTernaryExp","altHelper","genDirectives","genProps","genScopedSlots","genInlineTemplate","needRuntime","hasRuntime","gen","inlineRenderFns","containsSlotChild","needsKey","generatedSlots","genScopedSlot","isLegacySyntax","reverseProxy","checkSkip","altGenElement","altGenNode","normalizationType_1","getNormalizationType","gen_1","genNode","needsNormalization","genComment","genText","transformSpecialNewlines","dynamicProps","createFunction","createCompileToFunctionFn","compiled","fnGenErrors","createCompilerCreator","baseCompile","finalOptions","tips","compileToFunctions","createCompiler","getShouldDecode","idToTemplate","mount","getOuterHTML","outerHTML","$$typeof","isMergeableObject","arrayMerge","cloneUnlessOtherwiseSpecified","customMerge","storage","localStorage","assertStorage","setItem","getItem","fetchBeforeUse","arrayMerger","rehydrated","applyMixin","vuexInit","$store","devtoolHook","devtoolPlugin","_devtoolHook","targetState","subscribeAction","deepCopy","forEachValue","Module","rawModule","runtime","_rawModule","rawState","namespaced","addChild","getChild","actions","getters","forEachChild","forEachGetter","forEachAction","forEachMutation","ModuleCollection","rawRootModule","register","targetModule","newModule","getNamespace","rawChildModule","unregister","isRegistered","Store","_committing","_actions","_actionSubscribers","_mutations","_wrappedGetters","_modules","_modulesNamespaceMap","_subscribers","_watcherVM","_makeLocalGettersCache","commit","installModule","resetStoreVM","useDevtools","genericSubscribe","resetStore","hot","oldVm","wrappedGetters","$$state","enableStrictMode","_withCommit","rootState","parentState","getNestedState","moduleName","makeLocalContext","namespacedType","registerMutation","registerAction","registerGetter","noNamespace","_type","_payload","_options","unifyObjectStyle","makeLocalGetters","gettersProxy","splitPos","rootGetters","rawGetter","registerModule","preserveState","unregisterModule","hasModule","hotUpdate","committing","mapState","normalizeNamespace","normalizeMap","getModuleByNamespace","vuex","mapMutations","mapGetters","mapActions","createNamespacedHelpers","isValidMap","helper","createLogger","collapsed","stateBefore","stateAfter","transformer","mutationTransformer","mut","actionFilter","actionTransformer","act","logMutations","logActions","logger","prevState","nextState","formattedTime","getFormattedTime","formattedMutation","startMessage","endMessage","formattedAction","groupCollapsed","groupEnd","pad","times"],"sourceRoot":""}